Extract names and transforms from USD objects and apply it to point attributes in SOPs. This allows for rebuilding the same layout in SOPs. This could be useful for converting manual layout to point instances or efficiently importing layout from external application trough USD format.
ewogICAgIk9VVCI6IHsKICAgICAgICAiZmxhZ3MiOiB7CiAgICAgICAgICAgICJkaXNwbGF5IjogdHJ1ZSwKICAgICAgICAgICAgInJlbmRlciI6IHRydWUKICAgICAgICB9LAogICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogImNvcHl0b3BvaW50czEiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDMuMDIsCiAgICAgICAgICAgIC01LjQ2CiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJudWxsIgogICAgfSwKICAgICJfX2Nvb2tib29rTWV0YSI6IHsKICAgICAgICAiY29udGV4dCI6ICJzb3AiLAogICAgICAgICJ2ZXJzaW9uIjogIjIwLjUuNTg0IgogICAgfSwKICAgICJib3gxIjogewogICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgImRpdnJhdGUiOiBbCiAgICAgICAgICAgICAgICAyLAogICAgICAgICAgICAgICAgMiwKICAgICAgICAgICAgICAgIDIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInNjYWxlIjogMiwKICAgICAgICAgICAgInR5cGUiOiAicG9seW1lc2giCiAgICAgICAgfSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgIDAKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogImJveCIKICAgIH0sCiAgICAiY29weXRvcG9pbnRzMSI6IHsKICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJtZXJnZXBhY2tlZDEiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJzdHJpcF90cmFpbGluZ19kaWdpdHMyIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDEKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBhcm1zIjogewogICAgICAgICAgICAidGFyZ2V0YXR0cmlicyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiYXBwbHlhdHRyaWJzIyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIjogIiosXnYsXkFscGhhLF5OLF51cCxecHNjYWxlLF5zY2FsZSxeb3JpZW50LF5yb3QsXnBpdm90LF50cmFucyxedHJhbnNmb3JtIiwKICAgICAgICAgICAgICAgICAgICAgICAgInZpc2libGUiOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgImFwcGx5bWV0aG9kIyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInZpc2libGUiOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgImFwcGx5dG8jIjogewogICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAidXNlYXBwbHkjIjogewogICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiYXBwbHlhdHRyaWJzIyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIjogIkFscGhhIiwKICAgICAgICAgICAgICAgICAgICAgICAgInZpc2libGUiOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgImFwcGx5bWV0aG9kIyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIjogIm11bHQiLAogICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAiYXBwbHl0byMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2aXNpYmxlIjogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJ1c2VhcHBseSMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2aXNpYmxlIjogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJhcHBseWF0dHJpYnMjIjogewogICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiOiAidiIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ2aXNpYmxlIjogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJhcHBseW1ldGhvZCMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6ICJhZGQiLAogICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAiYXBwbHl0byMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2aXNpYmxlIjogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJ1c2VhcHBseSMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2aXNpYmxlIjogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ1c2VpZGF0dHJpYiI6IHRydWUKICAgICAgICB9LAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgMy4wNCwKICAgICAgICAgICAgLTMuNzIKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogImNvcHl0b3BvaW50czo6Mi4wIgogICAgfSwKICAgICJleHRyYWN0Y2VudHJvaWQyIjogewogICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogImxvcGltcG9ydDEiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicGFybXMiOiB7CiAgICAgICAgICAgICJwYXJ0aXRpb250eXBlIjogInByaW1pdGl2ZXMiLAogICAgICAgICAgICAidHJhbnNmZXJhdHRyaWJ1dGVzIjogInBhdGggbmFtZSIKICAgICAgICB9LAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgNC43NCwKICAgICAgICAgICAgLTAuNTYKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogImV4dHJhY3RjZW50cm9pZCIKICAgIH0sCiAgICAiZ2V0X3RyYW5zZm9ybV9mcm9tX3VzZCI6IHsKICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJleHRyYWN0Y2VudHJvaWQyIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDAKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBhcm1zIjogewogICAgICAgICAgICAibG9wX2xheW91dCI6ICIuLi9sb3BuZXQxL09VVCIsCiAgICAgICAgICAgICJzbmlwcGV0IjogIjNAdHJhbnNmb3JtID0gdXNkX3dvcmxkdHJhbnNmb3JtKFwib3A6XCIrY2hzKFwibG9wX2xheW91dFwiKSwgc0BwYXRoKTsiCiAgICAgICAgfSwKICAgICAgICAicGFybXRlbXBsYXRlcyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImluc2VydF9hZnRlciI6ICJ2ZXhfdGhyZWFkam9ic2l6ZSIsCiAgICAgICAgICAgICAgICAicGFybXRlbXBsYXRlcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZm9sZGVyX2dlbmVyYXRlZHBhcm1zX3NuaXBwZXQiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJsYWJlbCI6ICJHZW5lcmF0ZWQgQ2hhbm5lbCBQYXJhbWV0ZXJzIiwKICAgICAgICAgICAgICAgICAgICAgICAgInBhcm10ZW1wbGF0ZXMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAibG9wX2xheW91dCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGFiZWwiOiAiTG9wIExheW91dCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1lbnVfdHlwZSI6ICJub3JtYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY3JpcHRfY2FsbGJhY2tfbGFuZ3VhZ2UiOiAiaHNjcmlwdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAic2NyaXB0X2NhbGxiYWNrX2xhbmd1YWdlIjogImhzY3JpcHQiLAogICAgICAgICAgICAgICAgICAgICAgICAidGFncyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJncm91cF90eXBlIjogInNpbXBsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2lkZWZ4Ojpsb29rIjogImJsYW5rIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJmb2xkZXJfc2ltcGxlIgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICA0Ljc0LAogICAgICAgICAgICAtMS43MgogICAgICAgIF0sCiAgICAgICAgInR5cGUiOiAiYXR0cmlid3JhbmdsZSIKICAgIH0sCiAgICAibG9waW1wb3J0MSI6IHsKICAgICAgICAicGFybXMiOiB7CiAgICAgICAgICAgICJsb3BwYXRoIjogIi4uL2xvcG5ldDEvT1VUIiwKICAgICAgICAgICAgInByaW1wYXR0ZXJuIjogIioiCiAgICAgICAgfSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDQuNzQsCiAgICAgICAgICAgIDAuNQogICAgICAgIF0sCiAgICAgICAgInR5cGUiOiAibG9waW1wb3J0OjoyLjAiCiAgICB9LAogICAgImxvcG5ldDEiOiB7CiAgICAgICAgImNoaWxkcmVuIjogewogICAgICAgICAgICAiT1VUIjogewogICAgICAgICAgICAgICAgImZsYWdzIjogewogICAgICAgICAgICAgICAgICAgICJkaXNwbGF5IjogdHJ1ZQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAiZnJvbSI6ICJ0b3J1czEiLAogICAgICAgICAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDAKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAgICAgICAgIC0wLjk5LAogICAgICAgICAgICAgICAgICAgIC0wLjI2CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgInR5cGUiOiAibnVsbCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImJveDEiOiB7CiAgICAgICAgICAgICAgICAiZmxhZ3MiOiB7CiAgICAgICAgICAgICAgICAgICAgInJlbmRlciI6IHRydWUKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAicGFybXMiOiB7CiAgICAgICAgICAgICAgICAgICAgInIiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgIDQ1LjM5Njc1Nzc5MTUxNTczLAogICAgICAgICAgICAgICAgICAgICAgICA5LjQ3MzEyNzY2MzY4Mjg1LAogICAgICAgICAgICAgICAgICAgICAgICAtMjYuMDQ1Mjc3MjMyNDA2ODA0CiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgICAgICAgICAtMC45NiwKICAgICAgICAgICAgICAgICAgICAzLjA4CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgInR5cGUiOiAiY3ViZSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInRvcnVzMSI6IHsKICAgICAgICAgICAgICAgICJlZGl0YWJsZXMiOiB7CiAgICAgICAgICAgICAgICAgICAgInNvcG5ldC9jcmVhdGUiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJjaGlsZHJlbiI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0b3J1czEiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZsYWdzIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlzcGxheSI6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZW5kZXIiOiB0cnVlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFybXMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyYWQiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjI1CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAidG9ydXMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN1Ym5ldCIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICJmcm9tIjogImJveDEiLAogICAgICAgICAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDAKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgInBhcm1zIjogewogICAgICAgICAgICAgICAgICAgICJyIjogWwogICAgICAgICAgICAgICAgICAgICAgICA0Ni42NDEyODQwNjMzMzAwMjYsCiAgICAgICAgICAgICAgICAgICAgICAgIDIxLjE5MDA4MjQ2MjIxMjc4MiwKICAgICAgICAgICAgICAgICAgICAgICAgLTE3LjY4NzY5NDY5OTcwNzE2NgogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgInQiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgIDAuNTA5NjU4OTE0NTgzOTU3OCwKICAgICAgICAgICAgICAgICAgICAgICAgMC42OTMzNjQxNDg5ODczMjksCiAgICAgICAgICAgICAgICAgICAgICAgIDAuODAwMTQ5MTMwMjI5NjY5OQogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgICAgICAgICAgLTAuOTksCiAgICAgICAgICAgICAgICAgICAgMS4zMQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJ0eXBlIjogInNvcGNyZWF0ZSIKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICA0Ljc0LAogICAgICAgICAgICAxLjkKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogImxvcG5ldCIKICAgIH0sCiAgICAibWVyZ2VwYWNrZWQxIjogewogICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogImJveDEiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJ0b3J1czEiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMQogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicGFybXMiOiB7CiAgICAgICAgICAgICJuYW1lcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6ICJib3giLAogICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAidHJlYXRhc2ZvbGRlciMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2aXNpYmxlIjogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJ1c2VpbnB1dCMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2aXNpYmxlIjogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIjogInRvcnVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgInZpc2libGUiOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgInRyZWF0YXNmb2xkZXIjIjogewogICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAidXNlaW5wdXQjIjogewogICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdCiAgICAgICAgfSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDEuMzMsCiAgICAgICAgICAgIC0xLjYyCiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJtZXJnZXBhY2tlZCIKICAgIH0sCiAgICAic3RyaXBfdHJhaWxpbmdfZGlnaXRzMiI6IHsKICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJnZXRfdHJhbnNmb3JtX2Zyb21fdXNkIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDAKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBhcm1zIjogewogICAgICAgICAgICAic25pcHBldCI6ICIvLyBTdHJpcCB0cmFpbGluZyBudW1iZXJzIGFuZCB1bmRlcnNjb3JlK251bWJlcnMgZnJvbSBuYW1lIGF0dHJpYnV0ZVxuLy8gZS5nLiBcImFwcGxlMlwiIC1cdTAwM2UgXCJhcHBsZVwiLCBcImFuZW1vbmUyXzAwMVwiIC1cdTAwM2UgXCJhbmVtb25lXCIsIFwiYXBwbGUzXzAwNFwiIC1cdTAwM2UgXCJhcHBsZVwiXG5zdHJpbmcgb3JpZ2luYWxfbmFtZSA9IHNAbmFtZTtcbnN0cmluZyBjbGVhbmVkX25hbWUgPSBvcmlnaW5hbF9uYW1lO1xuXG4vLyBGaXJzdCwgc3RyaXAgdW5kZXJzY29yZSBmb2xsb3dlZCBieSBkaWdpdHMgKGUuZy4gXCJfMDAxXCIsIFwiXzAwNFwiKVxuaW50IHVuZGVyc2NvcmVfcG9zID0gLTE7XG5pbnQgbGVuID0gbGVuKGNsZWFuZWRfbmFtZSk7XG5cbi8vIEZpbmQgdGhlIGxhc3QgdW5kZXJzY29yZSBmb2xsb3dlZCBvbmx5IGJ5IGRpZ2l0c1xuZm9yIChpbnQgaSA9IGxlbiAtIDE7IGkgXHUwMDNlPSAwOyBpLS0pIHtcbiAgICBpZiAoY2xlYW5lZF9uYW1lW2ldID09IFwiX1wiKSB7XG4gICAgICAgIC8vIENoZWNrIGlmIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhpcyB1bmRlcnNjb3JlIGlzIGRpZ2l0c1xuICAgICAgICBpbnQgYWxsX2RpZ2l0cyA9IDE7XG4gICAgICAgIGZvciAoaW50IGogPSBpICsgMTsgaiBcdTAwM2MgbGVuOyBqKyspIHtcbiAgICAgICAgICAgIGlmICghaXNkaWdpdChjbGVhbmVkX25hbWVbal0pKSB7XG4gICAgICAgICAgICAgICAgYWxsX2RpZ2l0cyA9IDA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFsbF9kaWdpdHMgXHUwMDI2XHUwMDI2IGkgKyAxIFx1MDAzYyBsZW4pIHsgLy8gTWFrZSBzdXJlIHRoZXJlJ3MgYXQgbGVhc3Qgb25lIGRpZ2l0IGFmdGVyIHVuZGVyc2NvcmVcbiAgICAgICAgICAgIHVuZGVyc2NvcmVfcG9zID0gaTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBTdHJpcCB0aGUgdW5kZXJzY29yZSBhbmQgdHJhaWxpbmcgZGlnaXRzIGlmIGZvdW5kXG5pZiAodW5kZXJzY29yZV9wb3MgXHUwMDNlPSAwKSB7XG4gICAgY2xlYW5lZF9uYW1lID0gY2xlYW5lZF9uYW1lWzA6dW5kZXJzY29yZV9wb3NdO1xufVxuXG4vLyBOb3cgc3RyaXAgYW55IHJlbWFpbmluZyB0cmFpbGluZyBkaWdpdHMgZnJvbSB0aGUgYmFzZSBuYW1lXG5sZW4gPSBsZW4oY2xlYW5lZF9uYW1lKTtcbmludCBsYXN0X2FscGhhID0gbGVuIC0gMTtcblxuZm9yIChpbnQgaSA9IGxlbiAtIDE7IGkgXHUwMDNlPSAwOyBpLS0pIHtcbiAgICBzdHJpbmcgY2hhciA9IGNsZWFuZWRfbmFtZVtpXTtcbiAgICBpZiAoIWlzZGlnaXQoY2hhcikpIHtcbiAgICAgICAgbGFzdF9hbHBoYSA9IGk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbn1cblxuLy8gRXh0cmFjdCBzdWJzdHJpbmcgdXAgdG8gdGhlIGxhc3Qgbm9uLWRpZ2l0IGNoYXJhY3RlclxuaWYgKGxhc3RfYWxwaGEgXHUwMDNlPSAwKSB7XG4gICAgY2xlYW5lZF9uYW1lID0gY2xlYW5lZF9uYW1lWzA6bGFzdF9hbHBoYSArIDFdO1xufSBlbHNlIHtcbiAgICAvLyBJZiB0aGUgZW50aXJlIHN0cmluZyBpcyBkaWdpdHMsIGtlZXAgaXQgYXMgaXNcbiAgICBjbGVhbmVkX25hbWUgPSBvcmlnaW5hbF9uYW1lO1xufVxuXG4vLyBTZXQgdGhlIGNsZWFuZWQgbmFtZSBiYWNrIHRvIHRoZSBuYW1lIGF0dHJpYnV0ZVxuc0BuYW1lID0gY2xlYW5lZF9uYW1lOyIKICAgICAgICB9LAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgNC43NCwKICAgICAgICAgICAgLTIuOAogICAgICAgIF0sCiAgICAgICAgInR5cGUiOiAiYXR0cmlid3JhbmdsZSIKICAgIH0sCiAgICAidG9ydXMxIjogewogICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgInJhZCI6IFsKICAgICAgICAgICAgICAgIDAuNSwKICAgICAgICAgICAgICAgIDAuMjUKICAgICAgICAgICAgXQogICAgICAgIH0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAyLjI2LAogICAgICAgICAgICAwLjAzCiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJ0b3J1cyIKICAgIH0KfQ==