{"remainingRequest":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/thread-loader/dist/cjs.js!/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/babel-loader/lib/index.js!/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/cache-loader/dist/cjs.js??ref--1-0!/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/vue-loader/lib/index.js??vue-loader-options!/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/@abi-software/scaffoldvuer/src/components/ScaffoldVuer.vue?vue&type=script&lang=js&","dependencies":[{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/@abi-software/scaffoldvuer/src/components/ScaffoldVuer.vue","mtime":499162500000},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/babel.config.js","mtime":1684261475125},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/cache-loader/dist/cjs.js","mtime":499162500000},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/thread-loader/dist/cjs.js","mtime":499162500000},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/babel-loader/lib/index.js","mtime":456789000000},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/cache-loader/dist/cjs.js","mtime":499162500000},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/vue-loader/lib/index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9UYWJzMiBmcm9tICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay90YWJzLmNzcyI7CmltcG9ydCAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvYmFzZS5jc3MiOwppbXBvcnQgX1RhYnMgZnJvbSAiZWxlbWVudC11aS9saWIvdGFicyI7CmltcG9ydCBfVGFiUGFuZTIgZnJvbSAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvdGFiLXBhbmUuY3NzIjsKaW1wb3J0ICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9iYXNlLmNzcyI7CmltcG9ydCBfVGFiUGFuZSBmcm9tICJlbGVtZW50LXVpL2xpYi90YWItcGFuZSI7CmltcG9ydCBfU2xpZGVyMiBmcm9tICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9zbGlkZXIuY3NzIjsKaW1wb3J0ICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9iYXNlLmNzcyI7CmltcG9ydCBfU2xpZGVyIGZyb20gImVsZW1lbnQtdWkvbGliL3NsaWRlciI7CmltcG9ydCBfU2VsZWN0MiBmcm9tICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9zZWxlY3QuY3NzIjsKaW1wb3J0ICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9iYXNlLmNzcyI7CmltcG9ydCBfU2VsZWN0IGZyb20gImVsZW1lbnQtdWkvbGliL3NlbGVjdCI7CmltcG9ydCBfUm93MiBmcm9tICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9yb3cuY3NzIjsKaW1wb3J0ICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9iYXNlLmNzcyI7CmltcG9ydCBfUm93IGZyb20gImVsZW1lbnQtdWkvbGliL3JvdyI7CmltcG9ydCBfUG9wb3ZlcjIgZnJvbSAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvcG9wb3Zlci5jc3MiOwppbXBvcnQgImVsZW1lbnQtdWkvbGliL3RoZW1lLWNoYWxrL2Jhc2UuY3NzIjsKaW1wb3J0IF9Qb3BvdmVyIGZyb20gImVsZW1lbnQtdWkvbGliL3BvcG92ZXIiOwppbXBvcnQgX09wdGlvbjIgZnJvbSAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvb3B0aW9uLmNzcyI7CmltcG9ydCAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvYmFzZS5jc3MiOwppbXBvcnQgX09wdGlvbiBmcm9tICJlbGVtZW50LXVpL2xpYi9vcHRpb24iOwppbXBvcnQgX0xvYWRpbmcyIGZyb20gImVsZW1lbnQtdWkvbGliL3RoZW1lLWNoYWxrL2xvYWRpbmcuY3NzIjsKaW1wb3J0ICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9iYXNlLmNzcyI7CmltcG9ydCBfTG9hZGluZyBmcm9tICJlbGVtZW50LXVpL2xpYi9sb2FkaW5nIjsKaW1wb3J0IF9Db2wyIGZyb20gImVsZW1lbnQtdWkvbGliL3RoZW1lLWNoYWxrL2NvbC5jc3MiOwppbXBvcnQgImVsZW1lbnQtdWkvbGliL3RoZW1lLWNoYWxrL2Jhc2UuY3NzIjsKaW1wb3J0IF9Db2wgZnJvbSAiZWxlbWVudC11aS9saWIvY29sIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMubnVtYmVyLnRvLWZpeGVkLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuaXRlcmF0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLml0ZXJhdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5pdGVyYXRvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL3dlYi51cmwuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIudXJsLXNlYXJjaC1wYXJhbXMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLmZvci1lYWNoLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkucHVzaC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC5leGVjLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnNlYXJjaC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5rZXlzLmpzIjsKLyogZXNsaW50LWRpc2FibGUgbm8tYWxlcnQsIG5vLWNvbnNvbGUgKi8KaW1wb3J0IFZ1ZSBmcm9tICJ2dWUiOwppbXBvcnQgT3BhY2l0eUNvbnRyb2xzIGZyb20gIi4vT3BhY2l0eUNvbnRyb2xzIjsKaW1wb3J0IFNjYWZmb2xkVG9vbHRpcCBmcm9tICIuL1NjYWZmb2xkVG9vbHRpcCI7CmltcG9ydCBUcmVlQ29udHJvbHMgZnJvbSAiLi9UcmVlQ29udHJvbHMiOwppbXBvcnQgeyBNYXBTdmdJY29uLCBNYXBTdmdTcHJpdGVDb2xvciB9IGZyb20gIkBhYmktc29mdHdhcmUvc3ZnLXNwcml0ZSI7CmltcG9ydCB7IGZpbmRPYmplY3RzV2l0aE5hbWVzLCBnZXRBbGxPYmplY3RzIH0gZnJvbSAiLi4vc2NyaXB0cy91dGlsaXRpZXMuanMiOwppbXBvcnQgeyBTZWFyY2hJbmRleCB9IGZyb20gIi4uL3NjcmlwdHMvc2VhcmNoLmpzIjsKaW1wb3J0IGxhbmcgZnJvbSAiZWxlbWVudC11aS9saWIvbG9jYWxlL2xhbmcvZW4iOwppbXBvcnQgbG9jYWxlIGZyb20gImVsZW1lbnQtdWkvbGliL2xvY2FsZSI7CmxvY2FsZS51c2UobGFuZyk7ClZ1ZS51c2UoX0NvbCk7ClZ1ZS51c2UoX0xvYWRpbmcuZGlyZWN0aXZlKTsKVnVlLnVzZShfT3B0aW9uKTsKVnVlLnVzZShfUG9wb3Zlcik7ClZ1ZS51c2UoX1Jvdyk7ClZ1ZS51c2UoX1NlbGVjdCk7ClZ1ZS51c2UoX1NsaWRlcik7ClZ1ZS51c2UoX1RhYlBhbmUpOwpWdWUudXNlKF9UYWJzKTsKdmFyIE9yZ2Fuc1ZpZXdlciA9IHJlcXVpcmUoIi4uL3NjcmlwdHMvb3JnYW5zUmVuZGVyZXIiKS5PcmdhbnNWaWV3ZXI7CnZhciBFdmVudE5vdGlmaWVyID0gcmVxdWlyZSgiLi4vc2NyaXB0cy9ldmVudE5vdGlmaWVyIikuRXZlbnROb3RpZmllcjsKCi8qKgogKiBBIHZ1ZSBjb21wb25lbnQgb2YgdGhlIHNjYWZmb2xkIHZpZXdlci4KICoKICogQHJlcXVpcmVzIC4vT3BhY2l0eUNvbnRyb2xzLnZ1ZQogKiBAcmVxdWlyZXMgLi9UcmVlQ29udHJvbHMudnVlCiAqLwpleHBvcnQgZGVmYXVsdCB7CiAgbmFtZTogIlNjYWZmb2xkVnVlciIsCiAgY29tcG9uZW50czogewogICAgTWFwU3ZnSWNvbjogTWFwU3ZnSWNvbiwKICAgIE1hcFN2Z1Nwcml0ZUNvbG9yOiBNYXBTdmdTcHJpdGVDb2xvciwKICAgIE9wYWNpdHlDb250cm9sczogT3BhY2l0eUNvbnRyb2xzLAogICAgU2NhZmZvbGRUb29sdGlwOiBTY2FmZm9sZFRvb2x0aXAsCiAgICBUcmVlQ29udHJvbHM6IFRyZWVDb250cm9scwogIH0sCiAgcHJvcHM6IHsKICAgIC8qKgogICAgICogVVJMIG9mIHRoZSB6aW5janMgbWV0YWRhdGEuIFRoaXMgdmFsdWUgd2lsbCBiZSBpZ25vcmVkIGlmIGEgdmFsaWQKICAgICAqIHN0YXRlIHByb3AgaXMgYWxzbyBwcm92aWRlZC4KICAgICAqIElmIHRoZSB1cmwgbmVlZHMgdG8gYmUgdXBkYXRlZCB3aXRoIHN0YXRlIHByZXNlbnQsIHBsZWFzZSB1c2UKICAgICAqIHRoZSBzZXRVUkwgbWV0aG9kLgogICAgICovCiAgICB1cmw6IHsKICAgICAgdHlwZTogU3RyaW5nLAogICAgICBkZWZhdWx0OiAiIgogICAgfSwKICAgIC8qKgogICAgICogU2hvdyB0aGUgY29sb3VyIGNvbnRyb2wgb2Ygc2V0IHRvIHRydWUuCiAgICAgKi8KICAgIHNob3dDb2xvdXJQaWNrZXI6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogZmFsc2UKICAgIH0sCiAgICAvKioKICAgICAqIEZsYWcgdG8gc2hvdy9oaWRlIHRoZSBVSS4KICAgICAqLwogICAgZGlzcGxheVVJOiB7CiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IHRydWUKICAgIH0sCiAgICAvKioKICAgICAqIERpc3BsYXkgYWxsIGdyYXBoaWNzIGF0IHN0YXJ0LgogICAgICoKICAgICAqIFRoaXMgc2V0dGluZyBvbmx5IHdvcmtzIHdoZW4gdHJhZGl0aW9uYWwgaXMgc2V0IHRvIGZhbHNlLgogICAgICovCiAgICBkaXNwbGF5QXRTdGFydFVwOiB7CiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IHRydWUKICAgIH0sCiAgICAvKioKICAgICAqIFVzZSBmb3IgdG9nZ2xpbmcgdGhlIGhlbHAgdG9vbHRpcHMuCiAgICAgKi8KICAgIGhlbHBNb2RlOiB7CiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IGZhbHNlCiAgICB9LAogICAgLyoqCiAgICAgKiBVc2UgZm9yIHNob3cvZGlzcGxheSBiZXRhIHdhcm5pbmcgaWNvbi4KICAgICAqLwogICAgZGlzcGxheVdhcm5pbmc6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogdHJ1ZQogICAgfSwKICAgIC8qKgogICAgICogV2FybmluZyBtZXNzYWdlIGZvciB0aGUgaG92ZXJlZCBvdmVyIHRleHQKICAgICAqIG9uIHRoZSB3YXJuaW5nIGljb24uCiAgICAgKi8KICAgIHdhcm5pbmdNZXNzYWdlOiB7CiAgICAgIHR5cGU6IFN0cmluZywKICAgICAgZGVmYXVsdDogIkJldGEgZmVhdHVyZSAtIHVuZGVyIGFjdGl2ZSBkZXZlbG9wbWVudCIKICAgIH0sCiAgICBkaXNwbGF5TGF0ZXN0Q2hhbmdlczogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiBmYWxzZQogICAgfSwKICAgIGxhdGVzdENoYW5nZXNNZXNzYWdlOiB7CiAgICAgIHR5cGU6IFN0cmluZywKICAgICAgZGVmYXVsdDogIk5ldyBmZWF0dXJlIC0gTG9jYWwgc2VhcmNoIGlzIG5vdyBhdmFpbGFibGUiCiAgICB9LAogICAgLyoqCiAgICAgKiBTaG93L2hpZGUgcGlja2FibGUgbWFya2VycyBmb3IgcmVnaW9ucy4KICAgICAqLwogICAgZGlzcGxheU1hcmtlcnM6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogZmFsc2UKICAgIH0sCiAgICAvKioKICAgICAqIFNob3cvaGlkZSBtaW5pbWFwLgogICAgICovCiAgICBkaXNwbGF5TWluaW1hcDogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiBmYWxzZQogICAgfSwKICAgIC8qKgogICAgICogRm9ybWF0IG9mIHRoZSBpbnB1dCBVUkwKICAgICAqLwogICAgZm9ybWF0OiB7CiAgICAgIHR5cGU6IFN0cmluZywKICAgICAgZGVmYXVsdDogIm1ldGFkYXRhIgogICAgfSwKICAgIC8qKgogICAgICogU2V0dGluZ3MgZm9yIG1pbmltYXAgcG9zaXRpb24sIHNpemUgYW5kIGFsaWdubWVudC4KICAgICAqLwogICAgbWluaW1hcFNldHRpbmdzOiB7CiAgICAgIHR5cGU6IE9iamVjdCwKICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgIHhfb2Zmc2V0OiAxNiwKICAgICAgICAgIHlfb2Zmc2V0OiAxNiwKICAgICAgICAgIHdpZHRoOiAxMjgsCiAgICAgICAgICBoZWlnaHQ6IDEyOCwKICAgICAgICAgIGFsaWduOiAidG9wLXJpZ2h0IgogICAgICAgIH07CiAgICAgIH0KICAgIH0sCiAgICAvKioKICAgICAqIFN0YXRlIGNvbnRhaW5pbmcgc3RhdGUgb2YgdGhlIHNjYWZmb2xkLgogICAgICovCiAgICBzdGF0ZTogewogICAgICB0eXBlOiBPYmplY3QsCiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZAogICAgfSwKICAgIC8qKgogICAgICogT3B0aW9uYWwgcHJvcCBmb3IgdGhlIG5hbWUgb2YgdGhlIHJlZ2lvbiB0byBmb2N1cyBvbiwKICAgICAqIHRoaXMgb3B0aW9uIGlzIGlnbm9yZWQgaWYgc3RhdGUgb3Igdmlld1VSTCBpcyBhbHNvIHByb3ZpZGVkLgogICAgICovCiAgICByZWdpb246IHsKICAgICAgdHlwZTogU3RyaW5nLAogICAgICBkZWZhdWx0OiAiIgogICAgfSwKICAgIC8qKgogICAgICogT3B0aW9uYWwgcHJvcCBmb3IgYW4gVVJMIG9mIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gb2YgYSB2aWV3cG9ydC4KICAgICAqIFRoaXMgb3B0aW9uIGlzIGlnbm9yZWQgaWYgc3RhdGUgaXMgYWxzbyBwcm92aWRlZC4KICAgICAqIEl0IHdpbGwgdXNlIHRoZSBwcm92aWRlZCBVUkwgYXMgYmFzZSBpZiBhIHJlbGF0aXZlIHBhcnRoIGlzIHByb3ZpZGVkLgogICAgICovCiAgICB2aWV3VVJMOiB7CiAgICAgIHR5cGU6IFN0cmluZywKICAgICAgZGVmYXVsdDogIiIKICAgIH0sCiAgICAvKioKICAgICAqIFNldHRpbmdzIGZvciB0dXJuaW5nIG9uL29mZiByZW5kZXJpbmcKICAgICAqLwogICAgcmVuZGVyOiB7CiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IHRydWUKICAgIH0KICB9LAogIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7CiAgICByZXR1cm4gewogICAgICBzY2VuZURhdGE6IHRoaXMuJG1vZHVsZS5zY2VuZURhdGEsCiAgICAgIGlzUGxheWluZzogZmFsc2UsCiAgICAgIC8qKgogICAgICAgKiBUaGlzIGlzIHNldCB3aGVuIHNjZW5lIGlzIHRyYW5zaXRpb25pbmcuCiAgICAgICAqLwogICAgICBpc1RyYW5zaXRpb25pbmc6IGZhbHNlLAogICAgICB0b29sdGlwQXBwZW5kVG9Cb2R5OiBmYWxzZSwKICAgICAgaG92ZXJWaXNpYmlsaXRpZXM6IFt7CiAgICAgICAgdmFsdWU6IGZhbHNlCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogZmFsc2UKICAgICAgfSwgewogICAgICAgIHZhbHVlOiBmYWxzZQogICAgICB9LCB7CiAgICAgICAgdmFsdWU6IGZhbHNlCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogZmFsc2UKICAgICAgfSwgewogICAgICAgIHZhbHVlOiBmYWxzZQogICAgICB9LCB7CiAgICAgICAgdmFsdWU6IGZhbHNlCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogZmFsc2UKICAgICAgfV0sCiAgICAgIGluSGVscDogZmFsc2UsCiAgICAgIGxvYWRpbmc6IGZhbHNlLAogICAgICBkdXJhdGlvbjogMzAwMCwKICAgICAgZHJhd2VyT3BlbjogdHJ1ZSwKICAgICAgY3VycmVudEJhY2tncm91bmQ6ICJ3aGl0ZSIsCiAgICAgIGF2YWlsYWJsZUJhY2tncm91bmQ6IFsid2hpdGUiLCAibGlnaHRza3libHVlIiwgImJsYWNrIl0sCiAgICAgIG1pbmltaXNlZFNsaWRlcjogZmFsc2UsCiAgICAgIHNsaWRlclBvc2l0aW9uOiAiIiwKICAgICAgdGltZU1heDogMTAwLAogICAgICBvcmdpbmFsRHVyYXRpb246ICIiLAogICAgICBhbmltYXRlRHVyYXRpb246ICI2c2VjcyIsCiAgICAgIHBsYXlTcGVlZDogW3sKICAgICAgICB2YWx1ZTogMC4xLAogICAgICAgIGxhYmVsOiAiMC4xeCIKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAwLjUsCiAgICAgICAgbGFiZWw6ICIwLjV4IgogICAgICB9LCB7CiAgICAgICAgdmFsdWU6IDEsCiAgICAgICAgbGFiZWw6ICIxeCIKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAyLAogICAgICAgIGxhYmVsOiAiMngiCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogNSwKICAgICAgICBsYWJlbDogIjV4IgogICAgICB9LCB7CiAgICAgICAgdmFsdWU6IDEwLAogICAgICAgIGxhYmVsOiAiMTB4IgogICAgICB9XSwKICAgICAgY3VycmVudFNwZWVkOiAxLAogICAgICB0aW1lU3RhbXBzOiB7fSwKICAgICAgZGVmYXVsdENoZWNrZWRLZXlzOiBbXSwKICAgICAgdERhdGE6IHsKICAgICAgICBsYWJlbDogIiIsCiAgICAgICAgcmVnaW9uOiAiIiwKICAgICAgICB2aXNpYmxlOiBmYWxzZSwKICAgICAgICB4OiAyMDAsCiAgICAgICAgeTogMjAwCiAgICAgIH0sCiAgICAgIGZpbGVGb3JtYXQ6ICJtZXRhZGF0YSIKICAgIH07CiAgfSwKICB3YXRjaDogewogICAgZm9ybWF0OiB7CiAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIodmFsdWUpIHsKICAgICAgICB0aGlzLmZpbGVGb3JtYXQgPSB2YWx1ZTsKICAgICAgfSwKICAgICAgaW1tZWRpYXRlOiB0cnVlCiAgICB9LAogICAgdXJsOiB7CiAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIobmV3VmFsdWUpIHsKICAgICAgICBpZiAodGhpcy5zdGF0ZSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuc3RhdGUudXJsID09PSB1bmRlZmluZWQpIHRoaXMuc2V0VVJMKG5ld1ZhbHVlKTsKICAgICAgfSwKICAgICAgaW1tZWRpYXRlOiB0cnVlCiAgICB9LAogICAgcmVnaW9uOiB7CiAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIocmVnaW9uKSB7CiAgICAgICAgaWYgKCEodGhpcy5zdGF0ZSB8fCB0aGlzLnZpZXdVUkwpKSB0aGlzLnNldEZvY3VzZWRSZWdpb24ocmVnaW9uKTsKICAgICAgfSwKICAgICAgaW1tZWRpYXRlOiB0cnVlCiAgICB9LAogICAgc3RhdGU6IHsKICAgICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihzdGF0ZSkgewogICAgICAgIHRoaXMuc2V0U3RhdGUoc3RhdGUpOwogICAgICB9LAogICAgICBpbW1lZGlhdGU6IHRydWUsCiAgICAgIGRlZXA6IHRydWUKICAgIH0sCiAgICB2aWV3VVJMOiB7CiAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIodmlld1VSTCkgewogICAgICAgIHRoaXMudXBkYXRlVmlld1VSTCh2aWV3VVJMKTsKICAgICAgfSwKICAgICAgaW1tZWRpYXRlOiB0cnVlCiAgICB9LAogICAgaGVscE1vZGU6IGZ1bmN0aW9uIGhlbHBNb2RlKHZhbCkgewogICAgICB0aGlzLnNldEhlbHBNb2RlKHZhbCk7CiAgICB9LAogICAgZGlzcGxheU1hcmtlcnM6IGZ1bmN0aW9uIGRpc3BsYXlNYXJrZXJzKHZhbCkgewogICAgICB0aGlzLiRtb2R1bGUuc2NlbmUuZGlzcGxheU1hcmtlcnMgPSB2YWw7CiAgICAgIC8vVXBkYXRlIHBpY2thYmxlIG9iamVjdHMKICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLmZvcmNlUGlja2FibGVPYmplY3RzVXBkYXRlID0gdHJ1ZTsKICAgIH0sCiAgICBkaXNwbGF5TWluaW1hcDogZnVuY3Rpb24gZGlzcGxheU1pbmltYXAodmFsKSB7CiAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5kaXNwbGF5TWluaW1hcCA9IHZhbDsKICAgIH0sCiAgICAic2NlbmVEYXRhLmN1cnJlbnRUaW1lIjogZnVuY3Rpb24gc2NlbmVEYXRhQ3VycmVudFRpbWUoKSB7CiAgICAgIC8qKgogICAgICAgKiBUcmlnZ2VycyB3aGVuIHNjZW5lIHRpbWUgY2hhbmdlcy4KICAgICAgICoKICAgICAgICogQHByb3BlcnR5IHtudW1iZXJ9IHRpbWUgQ3VycmVudCBidWlsZC1pbiB0aW1lIG9mIHNjZW5lLgogICAgICAgKiBvZiBzZWxlY3RlZCBvYmplY3QuCiAgICAgICAqLwogICAgICB0aGlzLiRlbWl0KCJ0aW1lQ2hhbmdlZCIsIHRoaXMuc2NlbmVEYXRhLmN1cnJlbnRUaW1lKTsKICAgIH0sCiAgICBkdXJhdGlvbjogZnVuY3Rpb24gZHVyYXRpb24oKSB7CiAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5zZXREdXJhdGlvbih0aGlzLmR1cmF0aW9uKTsKICAgIH0sCiAgICBtaW5pbWFwU2V0dGluZ3M6IHsKICAgICAgZGVlcDogdHJ1ZSwKICAgICAgaGFuZGxlcjogInVwZGF0ZU1pbmltYXBTY2lzc29yIgogICAgfSwKICAgIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKHZhbCkgewogICAgICB0aGlzLnRvZ2dsZVJlbmRlcmluZyh2YWwpOwogICAgfQogIH0sCiAgYmVmb3JlQ3JlYXRlOiBmdW5jdGlvbiBiZWZvcmVDcmVhdGUoKSB7CiAgICB0aGlzLiRtb2R1bGUgPSBuZXcgT3JnYW5zVmlld2VyKCk7CiAgICB0aGlzLmlzUmVhZHkgPSBmYWxzZTsKICAgIHRoaXMuc2VsZWN0ZWRPYmplY3RzID0gW107CiAgICB0aGlzLmhvdmVyZWRPYmplY3RzID0gW107CiAgICB0aGlzLmN1cnJlbnRCYWNrZ3JvdW5kID0gIndoaXRlIjsKICAgIHRoaXMuX2N1cnJlbnRVUkwgPSB1bmRlZmluZWQ7CiAgICB0aGlzLmF2YWlsYWJsZUJhY2tncm91bmQgPSBbIndoaXRlIiwgImJsYWNrIiwgImxpZ2h0c2t5Ymx1ZSJdOwogICAgdGhpcy4kX3NlYXJjaEluZGV4ID0gbmV3IFNlYXJjaEluZGV4KCk7CiAgICA7CiAgICB0aGlzLiRfdGVtcElkID0gMTsKICB9LAogIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7CiAgICB0aGlzLiRyZWZzLnRyZWVDb250cm9scy5zZXRNb2R1bGUodGhpcy4kbW9kdWxlKTsKICAgIHZhciBldmVudE5vdGlmaWVyID0gbmV3IEV2ZW50Tm90aWZpZXIoKTsKICAgIGV2ZW50Tm90aWZpZXIuc3Vic2NyaWJlKHRoaXMsIHRoaXMuZXZlbnROb3RpZmllckNhbGxiYWNrKTsKICAgIHRoaXMuJG1vZHVsZS5hZGROb3RpZmllcihldmVudE5vdGlmaWVyKTsKICAgIHRoaXMuJG1vZHVsZS5hZGRPcmdhblBhcnRBZGRlZENhbGxiYWNrKHRoaXMuemluY09iamVjdEFkZGVkKTsKICAgIHRoaXMuJG1vZHVsZS5pbml0aWFsaXNlUmVuZGVyZXIodGhpcy4kcmVmcy5kaXNwbGF5KTsKICAgIHRoaXMudG9nZ2xlUmVuZGVyaW5nKHRoaXMucmVuZGVyKTsKICAgIHRoaXMucm8gPSBuZXcgUmVzaXplT2JzZXJ2ZXIodGhpcy5hZGp1c3RMYXlvdXQpLm9ic2VydmUodGhpcy4kcmVmcy5zY2FmZm9sZENvbnRhaW5lcik7CiAgICB0aGlzLmRlZmF1bHRSYXRlID0gdGhpcy4kbW9kdWxlLmdldFBsYXlSYXRlKCk7CiAgfSwKICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkgewogICAgaWYgKHRoaXMucm8pIHRoaXMucm8uZGlzY29ubmVjdCgpOwogICAgdGhpcy4kbW9kdWxlLmRlc3Ryb3koKTsKICAgIHRoaXMuJG1vZHVsZSA9IHVuZGVmaW5lZDsKICB9LAogIG1ldGhvZHM6IHsKICAgIC8qKgogICAgICogVGhpcyBpcyBjYWxsZWQgd2hlbiBhIG5ldyB6aW5jIG9iamVjdCBpcyByZWFkIGludG8gdGhlIHNjZW5lLgogICAgICovCiAgICB6aW5jT2JqZWN0QWRkZWQ6IGZ1bmN0aW9uIHppbmNPYmplY3RBZGRlZCh6aW5jT2JqZWN0KSB7CiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlOwogICAgICB6aW5jT2JqZWN0LnNlYXJjaEluZGV4SWQgPSArK3RoaXMuJF90ZW1wSWQ7CiAgICAgIHRoaXMuJF9zZWFyY2hJbmRleC5hZGRaaW5jT2JqZWN0KHppbmNPYmplY3QsIHppbmNPYmplY3Quc2VhcmNoSW5kZXhJZCk7CiAgICAgIHRoaXMuJGVtaXQoInppbmMtb2JqZWN0LWFkZGVkIiwgemluY09iamVjdCk7CiAgICB9LAogICAgLyoqCiAgICAgKiBUaGlzIGlzIGNhbGxlZCB3aGVuIENoYW5nZSBiYWNrZ3NwZWVkcm91bmQgY29sb3VyIGJ1dHRvbgogICAgICogaXMgcHJlc3NlZCBhbiBjYXVzZXMgdGhlIGJhY2tncm91Q29sb3JuZCBjb2xvdXIgdG8gYmUgY2hhbmdlZAogICAgICogdG8gb25lIG9mIHRoZSB0aHJlZSBwcmVzZXQgY29sb3VyOiB3aGl0ZSwgYmxhY2sgYW5kCiAgICAgKiBsaWdodHNreWJsdWUuCiAgICAgKi8KICAgIGJhY2tncm91bmRDaGFuZ2VDYWxsYmFjazogZnVuY3Rpb24gYmFja2dyb3VuZENoYW5nZUNhbGxiYWNrKGNvbG91cikgewogICAgICB0aGlzLmN1cnJlbnRCYWNrZ3JvdW5kID0gY29sb3VyOwogICAgICB0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyLmdldFRocmVlSlNSZW5kZXJlcigpLnNldENsZWFyQ29sb3IodGhpcy5jdXJyZW50QmFja2dyb3VuZCwgMSk7CiAgICB9LAogICAgLyoqCiAgICAgKiBUaGlzIGlzIGNhbGxlZCBieSBjYXB0dWVlU2NyZWVuc2hvdCBhbmQgYWZ0ZXIgdGhlIGxhc3QgcmVuZGVyCiAgICAgKiBsb29wLCBpdCBkb3dubG9hZCBhIHNjcmVlbnNob3Qgb2YgdGhlIGN1cnJlbnQgc2NlbmUgd2l0aCBubyBVSS4KICAgICAqLwogICAgY2FwdHVyZVNjcmVlbnNob3RDYWxsYmFjazogZnVuY3Rpb24gY2FwdHVyZVNjcmVlbnNob3RDYWxsYmFjaygpIHsKICAgICAgLy9SZW1vdmUgdGhlIGNhbGxiYWNrLCBvbmx5IG5lZWRzIHRvIGhhcHBlbiBvbmNlCiAgICAgIHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIucmVtb3ZlUG9zdFJlbmRlckNhbGxiYWNrRnVuY3Rpb24odGhpcy5jYXB0dXJlSUQpOwogICAgICB2YXIgc2NyZWVuc2hvdCA9IHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIuZ2V0VGhyZWVKU1JlbmRlcmVyKCkuZG9tRWxlbWVudC50b0RhdGFVUkwoImltYWdlL3BuZyIpOwogICAgICB2YXIgaHJlZkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7CiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kKGhyZWZFbGVtZW50KTsKICAgICAgaWYgKCF0aGlzLmNhcHR1cmVGaWxlbmFtZSkgaHJlZkVsZW1lbnQuZG93bmxvYWQgPSAic2NyZWVuc2hvdC5wbmciO2Vsc2UgaHJlZkVsZW1lbnQuZG93bmxvYWQgPSB0aGlzLmNhcHR1cmVGaWxlbmFtZTsKICAgICAgaHJlZkVsZW1lbnQuaHJlZiA9IHNjcmVlbnNob3Q7CiAgICAgIGhyZWZFbGVtZW50LmNsaWNrKCk7CiAgICAgIGhyZWZFbGVtZW50LnJlbW92ZSgpOwogICAgfSwKICAgIC8qKgogICAgICogRnVuY3Rpb24gZm9yIGNhcHR1cmluZyBhIHNjcmVlbnNob3Qgb2YgdGhlIGN1cnJlbnQgcmVuZGVyaW5nLgogICAgICoKICAgICAqIEBwYXJhbSB7U3RyaW5nfSBmaWxlbmFtZSBmaWxlbmFtZSBnaXZlbiB0byB0aGUgc2NyZWVuc2hvdC4KICAgICAqCiAgICAgKiBAcHVibGljCiAgICAgKi8KICAgIGNhcHR1cmVTY3JlZW5zaG90OiBmdW5jdGlvbiBjYXB0dXJlU2NyZWVuc2hvdChmaWxlbmFtZSkgewogICAgICB0aGlzLmNhcHR1cmVGaWxlbmFtZSA9IGZpbGVuYW1lOwogICAgICB0aGlzLmNhcHR1cmVJRCA9IHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIuYWRkUG9zdFJlbmRlckNhbGxiYWNrRnVuY3Rpb24odGhpcy5jYXB0dXJlU2NyZWVuc2hvdENhbGxiYWNrKTsKICAgIH0sCiAgICBmb3JtYXRUb29sdGlwOiBmdW5jdGlvbiBmb3JtYXRUb29sdGlwKHZhbCkgewogICAgICBpZiAodGhpcy50aW1lTWF4ID49IDEwMDApIHsKICAgICAgICBpZiAodmFsKSB7CiAgICAgICAgICB2YXIgc2VjID0gKHZhbCAlIDYwMDAwIC8gMTAwMCkudG9GaXhlZCgyKSArICJzIjsKICAgICAgICAgIHZhciBtaW4gPSB2YWwgPiA2MDAwMCA/ICh2YWwgLyA2MDAwMCkudG9GaXhlZCgwKSArICJtICIgOiAiIjsKICAgICAgICAgIHJldHVybiBtaW4gKyBzZWM7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiB2YWwgPyB2YWwudG9GaXhlZCgyKSArICIgbXMiIDogIjAgbXMiOwogICAgfSwKICAgIC8qKgogICAgICogRnVuY3Rpb24gdG8gcmVzZXQgdGhlIHZpZXcgdG8gZGVmYXVsdC4KICAgICAqIEFsc28gY2FsbGVkIHdoZW4gdGhlIGFzc29jaWF0ZWQgYnV0dG9uIGlzIHByZXNzZWQuCiAgICAgKgogICAgICogQHB1YmxpYwogICAgICovCiAgICBmaXRXaW5kb3c6IGZ1bmN0aW9uIGZpdFdpbmRvdygpIHsKICAgICAgaWYgKHRoaXMuJG1vZHVsZS5zY2VuZSkgewogICAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS52aWV3QWxsKCk7CiAgICAgIH0KICAgIH0sCiAgICAvKioKICAgICAqIEZ1bmN0aW9uIHRvIHpvb20gaW4uCiAgICAgKiBBbHNvIGNhbGxlZCB3aGVuIHRoZSBhc3NvY2lhdGVkIGJ1dHRvbiBpcyBwcmVzc2VkLgogICAgICoKICAgICAqIEBwdWJsaWMKICAgICAqLwogICAgem9vbUluOiBmdW5jdGlvbiB6b29tSW4oKSB7CiAgICAgIGlmICh0aGlzLiRtb2R1bGUuc2NlbmUpIHsKICAgICAgICB0aGlzLiRtb2R1bGUuc2NlbmUuY2hhbmdlWm9vbUJ5U2Nyb2xsUmF0ZVVuaXQoLTEpOwogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBGdW5jdGlvbiB0byB6b29tIG91dC4KICAgICAqIEFsc28gY2FsbGVkIHdoZW4gdGhlIGFzc29jaWF0ZWQgYnV0dG9uIGlzIHByZXNzZWQuCiAgICAgKgogICAgICogQHB1YmxpYwogICAgICovCiAgICB6b29tT3V0OiBmdW5jdGlvbiB6b29tT3V0KCkgewogICAgICBpZiAodGhpcy4kbW9kdWxlLnNjZW5lKSB7CiAgICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLmNoYW5nZVpvb21CeVNjcm9sbFJhdGVVbml0KDEpOwogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBGdW5jdGlvbiB0byBjaGFuZ2UgdGhlIGN1cnJlbnQgcGxheSBzcGVlZC4KICAgICAqCiAgICAgKiBAcHVibGljCiAgICAgKi8KICAgIHNwZWVkQ2hhbmdlZDogZnVuY3Rpb24gc3BlZWRDaGFuZ2VkKHNwZWVkKSB7CiAgICAgIHRoaXMuY3VycmVudFNwZWVkID0gc3BlZWQ7CiAgICAgIHRoaXMuJG1vZHVsZS5zZXRQbGF5UmF0ZSh0aGlzLmRlZmF1bHRSYXRlICogdGhpcy5jdXJyZW50U3BlZWQpOwogICAgfSwKICAgIC8qKgogICAgICogRnVuY3Rpb24gdXNlZCB0byBzdG9wIHRoZSBmcmVlIHNwaW4KICAgICAqCiAgICAgKiBAcHVibGljCiAgICAgKi8KICAgIHN0b3BGcmVlU3BpbjogZnVuY3Rpb24gc3RvcEZyZWVTcGluKCkgewogICAgICB2YXIgY2FtZXJhY29udHJvbCA9IHRoaXMuJG1vZHVsZS5zY2VuZS5nZXRaaW5jQ2FtZXJhQ29udHJvbHMoKTsKICAgICAgY2FtZXJhY29udHJvbC5zdG9wQXV0b1R1bWJsZSgpOwogICAgICB0aGlzLmlzVHJhbnNpdGlvbmluZyA9IGZhbHNlOwogICAgfSwKICAgIGZpbmRPYmplY3RzV2l0aEdyb3VwTmFtZTogZnVuY3Rpb24gZmluZE9iamVjdHNXaXRoR3JvdXBOYW1lKG5hbWUpIHsKICAgICAgdmFyIG9iamVjdHMgPSBbXTsKICAgICAgaWYgKG5hbWUgJiYgbmFtZSAhPSAiIiAmJiB0aGlzLiRtb2R1bGUuc2NlbmUpIHsKICAgICAgICBvYmplY3RzID0gdGhpcy4kbW9kdWxlLnNjZW5lLmZpbmRPYmplY3RzV2l0aEdyb3VwTmFtZShuYW1lKTsKICAgICAgfQogICAgICByZXR1cm4gb2JqZWN0czsKICAgIH0sCiAgICAvKioKICAgICAqIEZvY3VzIG9uIG5hbWVkIHJlZ2lvbgogICAgICovCiAgICB2aWV3UmVnaW9uOiBmdW5jdGlvbiB2aWV3UmVnaW9uKG5hbWVzKSB7CiAgICAgIHZhciByb290UmVnaW9uID0gdGhpcy4kbW9kdWxlLnNjZW5lLmdldFJvb3RSZWdpb24oKTsKICAgICAgdmFyIGdyb3VwcyA9IEFycmF5LmlzQXJyYXkobmFtZXMpID8gbmFtZXMgOiBbbmFtZXNdOwogICAgICB2YXIgb2JqZWN0cyA9IGZpbmRPYmplY3RzV2l0aE5hbWVzKHJvb3RSZWdpb24sIGdyb3VwcywgIiIsIHRydWUpOwogICAgICB2YXIgYm94ID0gdGhpcy4kbW9kdWxlLnNjZW5lLmdldEJvdW5kaW5nQm94T2ZaaW5jT2JqZWN0cyhvYmplY3RzKTsKICAgICAgaWYgKGJveCkgewogICAgICAgIGlmICh0aGlzLiRtb2R1bGUuaXNTeW5jQ29udHJvbCgpKSB7CiAgICAgICAgICB0aGlzLiRtb2R1bGUuc2V0U3luY0NvbnRyb2xab29tVG9Cb3goYm94KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdmFyIGRpc3QgPSB0aGlzLiRtb2R1bGUuc2NlbmUuY2FtZXJhLmZhciAtIHRoaXMuJG1vZHVsZS5zY2VuZS5jYW1lcmEubmVhcjsKICAgICAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS52aWV3QWxsV2l0aEJvdW5kaW5nQm94KGJveCk7CiAgICAgICAgICB0aGlzLiRtb2R1bGUuc2NlbmUuY2FtZXJhLmZhciA9IHRoaXMuJG1vZHVsZS5zY2VuZS5jYW1lcmEubmVhciArIGRpc3Q7CiAgICAgICAgICB0aGlzLiRtb2R1bGUuc2NlbmUuY2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0KICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSwKICAgIHNldEZvY3VzZWRSZWdpb246IGZ1bmN0aW9uIHNldEZvY3VzZWRSZWdpb24obmFtZSkgewogICAgICBpZiAobmFtZSkgewogICAgICAgIGlmICh0aGlzLmlzUmVhZHkpIHsKICAgICAgICAgIHRoaXMudmlld1JlZ2lvbihuYW1lKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhpcy4kbW9kdWxlLnNldEZpbmlzaERvd25sb2FkQ2FsbGJhY2sodGhpcy5zZXRVUkxGaW5pc2hDYWxsYmFjayh7CiAgICAgICAgICAgIHJlZ2lvbjogbmFtZQogICAgICAgICAgfSkpOwogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgIHVwZGF0ZVZpZXdVUkw6IGZ1bmN0aW9uIHVwZGF0ZVZpZXdVUkwodmlld1VSTCkgewogICAgICBpZiAodmlld1VSTCkgewogICAgICAgIGlmICh0aGlzLmlzUmVhZHkpIHsKICAgICAgICAgIHZhciB1cmwgPSBuZXcgVVJMKHZpZXdVUkwsIHRoaXMudXJsKTsKICAgICAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5sb2FkVmlld1VSTCh1cmwpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0aGlzLiRtb2R1bGUuc2V0RmluaXNoRG93bmxvYWRDYWxsYmFjayh0aGlzLnNldFVSTEZpbmlzaENhbGxiYWNrKHsKICAgICAgICAgICAgdmlld1VSTDogdmlld1VSTAogICAgICAgICAgfSkpOwogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgIGdldFJlbmRlcmVySW5mbzogZnVuY3Rpb24gZ2V0UmVuZGVyZXJJbmZvKCkgewogICAgICBpZiAodGhpcy4kbW9kdWxlLnppbmNSZW5kZXJlcikgewogICAgICAgIHJldHVybiB0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyLmdldFRocmVlSlNSZW5kZXJlcigpLmluZm87CiAgICAgIH0KICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgIH0sCiAgICAvKioKICAgICAqIEZ1bmN0aW9uIHVzZWQgdG8gcm90YXRlIHRoZSBzY2VuZS4KICAgICAqIEFsc28gY2FsbGVkIHdoZW4gdGhlIGFzc29jaWF0ZWQgYnV0dG9uIGlzIHByZXNzZWQuCiAgICAgKgogICAgICogQHB1YmxpYwogICAgICovCiAgICBmcmVlU3BpbjogZnVuY3Rpb24gZnJlZVNwaW4oKSB7CiAgICAgIGlmICh0aGlzLiRtb2R1bGUuc2NlbmUpIHsKICAgICAgICB2YXIgY2FtZXJhY29udHJvbCA9IHRoaXMuJG1vZHVsZS5zY2VuZS5nZXRaaW5jQ2FtZXJhQ29udHJvbHMoKTsKICAgICAgICB0aGlzLmlzVHJhbnNpdGlvbmluZyA9IHRydWU7CiAgICAgICAgY2FtZXJhY29udHJvbC5lbmFibGVBdXRvVHVtYmxlKCk7CiAgICAgICAgY2FtZXJhY29udHJvbC5hdXRvVHVtYmxlKFsxLjAsIDAuMF0sIE1hdGguUEksIHRydWUpOwogICAgICAgIHNldFRpbWVvdXQodGhpcy5zdG9wRnJlZVNwaW4sIDQwMDApOwogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBDYWxsYmFjayB3aGVuIGEgcmVnaW9uIGlzIHNlbGVjdGVkL2hpZ2hsaWdodGVkLgogICAgICogSXQgd2lsbCBhbHNvIHVwZGF0ZSBvdGhlciBjb250cm9scy4KICAgICAqIAogICAgICovCiAgICBldmVudE5vdGlmaWVyQ2FsbGJhY2s6IGZ1bmN0aW9uIGV2ZW50Tm90aWZpZXJDYWxsYmFjayhldmVudCkgewogICAgICB2YXIgbmFtZXMgPSBbXTsKICAgICAgdmFyIHppbmNPYmplY3RzID0gW107CiAgICAgIHZhciByZWdpb24gPSB1bmRlZmluZWQ7CiAgICAgIGlmIChldmVudC5ldmVudFR5cGUgPT0gMSB8fCBldmVudC5ldmVudFR5cGUgPT0gMikgewogICAgICAgIGV2ZW50LmlkZW50aWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKGlkZW50aWZpZXIpIHsKICAgICAgICAgIGlmIChpZGVudGlmaWVyKSB7CiAgICAgICAgICAgIHZhciBpZCA9IGlkZW50aWZpZXIuZGF0YS5pZCA/IGlkZW50aWZpZXIuZGF0YS5pZCA6IGlkZW50aWZpZXIuZGF0YS5ncm91cDsKICAgICAgICAgICAgbmFtZXMucHVzaChpZCk7CiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgemluY09iamVjdHMgPSBldmVudC56aW5jT2JqZWN0czsKICAgICAgfQogICAgICAvKgogICAgICAgKiBFdmVudCBUeXBlIDE6IFNlbGVjdGVkCiAgICAgICAqIEV2ZW50IFR5cGUgMjogSGlnaGxpZ2h0ZWQKICAgICAgICogRXZlbnQgVHlwZSAxOiBNb3ZlCiAgICAgICAqLwogICAgICBpZiAoZXZlbnQuZXZlbnRUeXBlID09IDEpIHsKICAgICAgICBpZiAodGhpcy4kcmVmcy50cmVlQ29udHJvbHMpIHsKICAgICAgICAgIGlmIChuYW1lcy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIC8vdGhpcy4kcmVmcy50cmVlQ29udHJvbHMuY2hhbmdlQWN0aXZlQnlOYW1lcyhuYW1lcywgcmVnaW9uLCBmYWxzZSk7CiAgICAgICAgICAgIHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzLnVwZGF0ZUFjdGl2ZVVJKHppbmNPYmplY3RzKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRoaXMuaGlkZVJlZ2lvblRvb2x0aXAoKTsKICAgICAgICAgICAgdGhpcy4kcmVmcy50cmVlQ29udHJvbHMucmVtb3ZlQWN0aXZlKHRydWUpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAvLyBUcmlnZ2VycyB3aGVuIGFuIG9iamVjdCBoYXMgYmVlbiBzZWxlY3RlZAogICAgICAgIHRoaXMuJGVtaXQoInNjYWZmb2xkLXNlbGVjdGVkIiwgZXZlbnQuaWRlbnRpZmllcnMpOwogICAgICB9IGVsc2UgaWYgKGV2ZW50LmV2ZW50VHlwZSA9PSAyKSB7CiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRPYmplY3RzLmxlbmd0aCA9PT0gMCkgewogICAgICAgICAgdGhpcy5oaWRlUmVnaW9uVG9vbHRpcCgpOwogICAgICAgICAgLy8gY29uc3Qgb2Zmc2V0cyA9IHRoaXMuJHJlZnMuc2NhZmZvbGRDb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgICBpZiAodGhpcy4kcmVmcy50cmVlQ29udHJvbHMpIHsKICAgICAgICAgICAgaWYgKG5hbWVzLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAvL3RoaXMuJHJlZnMudHJlZUNvbnRyb2xzLmNoYW5nZUhvdmVyQnlOYW1lcyhuYW1lcywgcmVnaW9uLCBmYWxzZSk7CiAgICAgICAgICAgICAgdGhpcy4kcmVmcy50cmVlQ29udHJvbHMudXBkYXRlSG92ZXJVSSh6aW5jT2JqZWN0cyk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgdGhpcy4kcmVmcy50cmVlQ29udHJvbHMucmVtb3ZlSG92ZXIodHJ1ZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGlmIChldmVudC5pZGVudGlmaWVycy5sZW5ndGggPiAwICYmIGV2ZW50LmlkZW50aWZpZXJzWzBdKSB7CiAgICAgICAgICAgIHZhciBpZCA9IGV2ZW50LmlkZW50aWZpZXJzWzBdLmRhdGEuaWQgPyBldmVudC5pZGVudGlmaWVyc1swXS5kYXRhLmlkIDogZXZlbnQuaWRlbnRpZmllcnNbMF0uZGF0YS5ncm91cDsKICAgICAgICAgICAgaWYgKGV2ZW50LmlkZW50aWZpZXJzWzBdLmNvb3JkcykgewogICAgICAgICAgICAgIHRoaXMudERhdGEudmlzaWJsZSA9IHRydWU7CiAgICAgICAgICAgICAgdGhpcy50RGF0YS5sYWJlbCA9IGlkOwogICAgICAgICAgICAgIGlmIChldmVudC5pZGVudGlmaWVyc1swXS5kYXRhLnJlZ2lvbikgdGhpcy50RGF0YS5yZWdpb24gPSBldmVudC5pZGVudGlmaWVyc1swXS5kYXRhLnJlZ2lvbjtlbHNlIHRoaXMudERhdGEucmVnaW9uID0gIlJvb3QiOwogICAgICAgICAgICAgIHRoaXMudERhdGEueCA9IGV2ZW50LmlkZW50aWZpZXJzWzBdLmNvb3Jkcy54OwogICAgICAgICAgICAgIHRoaXMudERhdGEueSA9IGV2ZW50LmlkZW50aWZpZXJzWzBdLmNvb3Jkcy55OwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICAvLyBUcmlnZ2VycyB3aGVuIGFuIG9iamVjdCBoYXMgYmVlbiBoaWdobGlnaHRlZAogICAgICAgICAgdGhpcy4kZW1pdCgic2NhZmZvbGQtaGlnaGxpZ2h0ZWQiLCBldmVudC5pZGVudGlmaWVycyk7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKGV2ZW50LmV2ZW50VHlwZSA9PSAzKSB7CiAgICAgICAgLy9NT1ZFCiAgICAgICAgaWYgKGV2ZW50LmlkZW50aWZpZXJzLmxlbmd0aCA+IDAgJiYgZXZlbnQuaWRlbnRpZmllcnNbMF0pIHsKICAgICAgICAgIGlmIChldmVudC5pZGVudGlmaWVyc1swXS5jb29yZHMpIHsKICAgICAgICAgICAgdmFyIG9mZnNldHMgPSB0aGlzLiRyZWZzLnNjYWZmb2xkQ29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgICAgICB0aGlzLnREYXRhLnggPSBldmVudC5pZGVudGlmaWVyc1swXS5jb29yZHMueCAtIG9mZnNldHMubGVmdDsKICAgICAgICAgICAgdGhpcy50RGF0YS55ID0gZXZlbnQuaWRlbnRpZmllcnNbMF0uY29vcmRzLnkgLSBvZmZzZXRzLnRvcDsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAvKioKICAgICAqIEdldCB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIGN1cnJlbnQgc2VsZWN0ZWQgcmVnaW9uLgogICAgICoKICAgICAqIEBwdWJsaWMKICAgICAqLwogICAgZ2V0Q29vcmRpbmF0ZXNPZlNlbGVjdGVkOiBmdW5jdGlvbiBnZXRDb29yZGluYXRlc09mU2VsZWN0ZWQoKSB7CiAgICAgIGlmICh0aGlzLnNlbGVjdGVkT2JqZWN0cyAmJiB0aGlzLnNlbGVjdGVkT2JqZWN0cy5sZW5ndGggPiAwKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuJG1vZHVsZS5zY2VuZS5nZXRPYmplY3RzU2NyZWVuWFkodGhpcy5zZWxlY3RlZE9iamVjdHMpOwogICAgICB9CiAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICB9LAogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHdpbmRvdyBjb29yZGluYXRlcyBvZiB0aGUKICAgICAqIGN1cnJlbnQgc2VsZWN0ZWQgcmVnaW9uIHdoaWNoIHdpbGwgYmUgdXBkYXRlZCBhZnRlciBlYWNoIHJlbmRlcgogICAgICogbG9vcC4KICAgICAqCiAgICAgKiBAcHVibGljCiAgICAgKi8KICAgIGdldER5bmFtaWNTZWxlY3RlZENvb3JkaW5hdGVzOiBmdW5jdGlvbiBnZXREeW5hbWljU2VsZWN0ZWRDb29yZGluYXRlcygpIHsKICAgICAgcmV0dXJuIHRoaXMuJG1vZHVsZS5zZWxlY3RlZFNjcmVlbkNvb3JkaW5hdGVzOwogICAgfSwKICAgIC8qKgogICAgICogQ2FsbGJhY2sgd2hlbiB0aW1lIGlzIGNoYW5nZWQgdGhyb3VnaCB0aGUgVUkuCiAgICAgKi8KICAgIHRpbWVDaGFuZ2U6IGZ1bmN0aW9uIHRpbWVDaGFuZ2UoZXZlbnQpIHsKICAgICAgdmFyIG5vcm1hbGl6ZWRUaW1lID0gZXZlbnQgLyB0aGlzLnRpbWVNYXggKiAxMDA7CiAgICAgIGlmIChub3JtYWxpemVkVGltZSAhPSB0aGlzLnNjZW5lRGF0YS5jdXJyZW50VGltZSkgdGhpcy4kbW9kdWxlLnVwZGF0ZVRpbWUobm9ybWFsaXplZFRpbWUpOwogICAgfSwKICAgIC8qKgogICAgICogQSBjYWxsYmFjayB1c2VkIGJ5IGNoaWxkcmVuIGNvbXBvbmVudHMuIFNldCB0aGUgc2VsZWN0ZWQgemluYyBvYmplY3QKICAgICAqCiAgICAgKiBAcGFyYW0ge29iamVjdH0gb2JqZWN0IFppbmMgb2JqZWN0CiAgICAgKi8KICAgIG9iamVjdFNlbGVjdGVkOiBmdW5jdGlvbiBvYmplY3RTZWxlY3RlZChvYmplY3RzLCBwcm9wYWdhdGUpIHsKICAgICAgdGhpcy5zZWxlY3RlZE9iamVjdHMgPSBvYmplY3RzOwogICAgICBpZiAodGhpcy5zZWxlY3RlZE9iamVjdHMgJiYgdGhpcy5zZWxlY3RlZE9iamVjdHMubGVuZ3RoID4gMCkgdGhpcy4kcmVmcy5vcGFjaXR5Q29udHJvbC5zZXRPYmplY3QodGhpcy5zZWxlY3RlZE9iamVjdHNbMF0pOwogICAgICB0aGlzLiRtb2R1bGUuc2V0U2VsZWN0ZWRCeVppbmNPYmplY3RzKG9iamVjdHMsIHVuZGVmaW5lZCwgcHJvcGFnYXRlKTsKICAgIH0sCiAgICAvKioKICAgICAqIEEgY2FsbGJhY2sgdXNlZCBieSBjaGlsZHJlbiBjb21wb25lbnRzLiBTZXQgdGhlIGhpZ2hsaWdodGVkIHppbmMgb2JqZWN0CiAgICAgKgogICAgICogQHBhcmFtIHtvYmplY3R9IG9iamVjdCBaaW5jIG9iamVjdAogICAgICovCiAgICBvYmplY3RIb3ZlcmVkOiBmdW5jdGlvbiBvYmplY3RIb3ZlcmVkKG9iamVjdHMsIHByb3BhZ2F0ZSkgewogICAgICB0aGlzLmhvdmVyZWRPYmplY3RzID0gb2JqZWN0czsKICAgICAgdGhpcy4kbW9kdWxlLnNldEhpZ2hsaWdodGVkQnlaaW5jT2JqZWN0cyhvYmplY3RzLCB1bmRlZmluZWQsIHByb3BhZ2F0ZSk7CiAgICB9LAogICAgLyoqCiAgICAgKiBTZXQgdGhlIHNlbGVjdGVkIGJ5IG5hbWUuCiAgICAgKgogICAgICogQHBhcmFtIHt9IG5hbWUgTmFtZSBvZiB0aGUgZ3JvdXAKICAgICAqLwogICAgY2hhbmdlQWN0aXZlQnlOYW1lOiBmdW5jdGlvbiBjaGFuZ2VBY3RpdmVCeU5hbWUobmFtZXMsIHJlZ2lvbiwgcHJvcGFnYXRlKSB7CiAgICAgIHZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheShuYW1lcyk7CiAgICAgIGlmIChuYW1lcyA9PT0gdW5kZWZpbmVkIHx8IGlzQXJyYXkgJiYgbmFtZXMubGVuZ3RoID09PSAwKSB7CiAgICAgICAgdGhpcy4kcmVmcy50cmVlQ29udHJvbHMucmVtb3ZlQWN0aXZlKHByb3BhZ2F0ZSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdmFyIGFycmF5ID0gbmFtZXM7CiAgICAgICAgaWYgKCFpc0FycmF5KSBhcnJheSA9IFthcnJheV07CiAgICAgICAgdGhpcy4kcmVmcy50cmVlQ29udHJvbHMuY2hhbmdlQWN0aXZlQnlOYW1lcyhhcnJheSwgcmVnaW9uLCBwcm9wYWdhdGUpOwogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBTZXQgdGhlIGhpZ2hsaWdodGVkIGJ5IG5hbWUuCiAgICAgKgogICAgICogQHBhcmFtIHtuYW1lfSBuYW1lIE5hbWUgb2YgdGhlIGdyb3VwCiAgICAgKi8KICAgIGNoYW5nZUhpZ2hsaWdodGVkQnlOYW1lOiBmdW5jdGlvbiBjaGFuZ2VIaWdobGlnaHRlZEJ5TmFtZShuYW1lcywgcmVnaW9uLCBwcm9wYWdhdGUpIHsKICAgICAgdmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5KG5hbWVzKTsKICAgICAgaWYgKG5hbWVzID09PSB1bmRlZmluZWQgfHwgaXNBcnJheSAmJiBuYW1lcy5sZW5ndGggPT09IDApIHsKICAgICAgICB0aGlzLiRyZWZzLnRyZWVDb250cm9scy5yZW1vdmVIb3Zlcihwcm9wYWdhdGUpOwogICAgICB9IGVsc2UgewogICAgICAgIHZhciBhcnJheSA9IG5hbWVzOwogICAgICAgIGlmICghaXNBcnJheSkgYXJyYXkgPSBbYXJyYXldOwogICAgICAgIHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzLmNoYW5nZUhvdmVyQnlOYW1lcyhhcnJheSwgcmVnaW9uLCBwcm9wYWdhdGUpOwogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBTdGFydCB0aGUgYW5pbWF0aW9uLgogICAgICoKICAgICAqIEBwYXJhbSB7b2JqZWN0fSBvYmplY3QgWmluYyBvYmplY3QKICAgICAqLwogICAgcGxheTogZnVuY3Rpb24gcGxheShmbGFnKSB7CiAgICAgIHRoaXMuJG1vZHVsZS5wbGF5QW5pbWF0aW9uKGZsYWcpOwogICAgICB0aGlzLmlzUGxheWluZyA9IGZsYWc7CiAgICAgIC8vSGlkZSB0b29sdGlwIGFzIGxvY2F0aW9uIG1heQogICAgICAvL3RoaXMuaGlkZVJlZ2lvblRvb2x0aXAoKTsKICAgIH0sCgogICAgLyoqCiAgICAgKiBGdW5jdGlvbiB0byB0b2dnbGUgb24vb2ZmIG92ZXJsYXkgaGVscC4KICAgICAqLwogICAgc2V0SGVscE1vZGU6IGZ1bmN0aW9uIHNldEhlbHBNb2RlKGhlbHBNb2RlKSB7CiAgICAgIGlmIChoZWxwTW9kZSkgewogICAgICAgIHRoaXMuaW5IZWxwID0gdHJ1ZTsKICAgICAgICB0aGlzLmhvdmVyVmlzaWJpbGl0aWVzLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgIGl0ZW0udmFsdWUgPSB0cnVlOwogICAgICAgIH0pOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuaW5IZWxwID0gZmFsc2U7CiAgICAgICAgdGhpcy5ob3ZlclZpc2liaWxpdGllcy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICBpdGVtLnZhbHVlID0gZmFsc2U7CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0sCiAgICAvKioKICAgICAqIENhbGxiYWNrIGZ1bmN0aW9uIHVzZWQgYnkgc2hvd1JlZ2lvblRvb2x0aXAgaW4gdGhlIGNhc2Ugd2hlbiB0aGUgdG9vbHRpcAogICAgICogaXMgb3V0IG9mIHZpZXcuCiAgICAgKi8KICAgIGRpc3BsYXlUb29sdGlwT2ZPYmplY3RzQ2FsbGJhY2s6IGZ1bmN0aW9uIGRpc3BsYXlUb29sdGlwT2ZPYmplY3RzQ2FsbGJhY2sobmFtZSwgb2JqZWN0cywgcmVzZXRWaWV3LCBsaXZlVXBkYXRlcykgewogICAgICB2YXIgaW5zdGFuY2UgPSB0aGlzOwogICAgICByZXR1cm4gZnVuY3Rpb24gKCkgewogICAgICAgIGluc3RhbmNlLiRtb2R1bGUuemluY1JlbmRlcmVyLnJlbW92ZVBvc3RSZW5kZXJDYWxsYmFja0Z1bmN0aW9uKGluc3RhbmNlLiRfcmVnaW9uVG9vbHRpcENhbGxiYWNrKTsKICAgICAgICBpbnN0YW5jZS4kX3JlZ2lvblRvb2x0aXBDYWxsYmFjayA9IHVuZGVmaW5lZDsKICAgICAgICBpbnN0YW5jZS5kaXNwbGF5VG9vbHRpcE9mT2JqZWN0cyhuYW1lLCBvYmplY3RzLCByZXNldFZpZXcsIGxpdmVVcGRhdGVzKTsKICAgICAgfTsKICAgIH0sCiAgICBsaXZlVXBkYXRlVG9vbHRpcFBvc2l0aW9uOiBmdW5jdGlvbiBsaXZlVXBkYXRlVG9vbHRpcFBvc2l0aW9uKCkgewogICAgICBpZiAodGhpcy4kbW9kdWxlLnNlbGVjdGVkQ2VudGVyKSB7CiAgICAgICAgdGhpcy50RGF0YS54ID0gdGhpcy4kbW9kdWxlLnNlbGVjdGVkU2NyZWVuQ29vcmRpbmF0ZXMueDsKICAgICAgICB0aGlzLnREYXRhLnkgPSB0aGlzLiRtb2R1bGUuc2VsZWN0ZWRTY3JlZW5Db29yZGluYXRlcy55OwogICAgICB9CiAgICB9LAogICAgZGlzcGxheVRvb2x0aXBPZk9iamVjdHM6IGZ1bmN0aW9uIGRpc3BsYXlUb29sdGlwT2ZPYmplY3RzKG5hbWUsIG9iamVjdHMsIHJlc2V0VmlldywgbGl2ZVVwZGF0ZXMpIHsKICAgICAgaWYgKG9iamVjdHMubGVuZ3RoID4gMCkgewogICAgICAgIHZhciBjb29yZHMgPSBvYmplY3RzWzBdLmdldENsb3Nlc3RWZXJ0ZXhET01FbGVtZW50Q29vcmRzKHRoaXMuJG1vZHVsZS5zY2VuZSk7CiAgICAgICAgaWYgKGNvb3JkcykgewogICAgICAgICAgLy9UaGUgY29vcmRzIGlzIG5vdCBpbiB2aWV3LCB2aWV3IGFsbCBpZiByZXNldFZpZXcgZmxhZyBpcyB0cnVlCiAgICAgICAgICBpZiAoIWNvb3Jkcy5pblZpZXcpIHsKICAgICAgICAgICAgdGhpcy5oaWRlUmVnaW9uVG9vbHRpcCgpOwogICAgICAgICAgICBpZiAocmVzZXRWaWV3KSB7CiAgICAgICAgICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLnZpZXdBbGwoKTsKICAgICAgICAgICAgICAvL1VzZSB0aGUgcG9zdCByZW5kZXIgY2FsbGJhY2sgdG8gbWFrZSBzdXJlIHRoZSBzY2VuZSBoYXMgYmVlbiB1cGRhdGVkCiAgICAgICAgICAgICAgLy9iZWZvcmUgZ2V0dGluZyB0aGUgcG9zaXRpb24gb2YgdGhlIHRvb2x0aXAuCiAgICAgICAgICAgICAgaWYgKHRoaXMuJF9yZWdpb25Ub29sdGlwQ2FsbGJhY2spIHsKICAgICAgICAgICAgICAgIHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIucmVtb3ZlUG9zdFJlbmRlckNhbGxiYWNrRnVuY3Rpb24odGhpcy4kX3JlZ2lvblRvb2x0aXBDYWxsYmFjayk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHRoaXMuJF9yZWdpb25Ub29sdGlwQ2FsbGJhY2sgPSB0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyLmFkZFBvc3RSZW5kZXJDYWxsYmFja0Z1bmN0aW9uKHRoaXMuZGlzcGxheVRvb2x0aXBPZk9iamVjdHNDYWxsYmFjayhuYW1lLCBvYmplY3RzLCByZXNldFZpZXcsIGxpdmVVcGRhdGVzKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRoaXMudERhdGEudmlzaWJsZSA9IHRydWU7CiAgICAgICAgICAgIHRoaXMudERhdGEubGFiZWwgPSBuYW1lOwogICAgICAgICAgICB0aGlzLnREYXRhLnggPSBjb29yZHMucG9zaXRpb24ueDsKICAgICAgICAgICAgdGhpcy50RGF0YS55ID0gY29vcmRzLnBvc2l0aW9uLnk7CiAgICAgICAgICAgIHZhciByZWdpb25QYXRoID0gb2JqZWN0c1swXS5nZXRSZWdpb24oKS5nZXRGdWxsUGF0aCgpOwogICAgICAgICAgICBpZiAocmVnaW9uUGF0aCkgdGhpcy50RGF0YS5yZWdpb24gPSByZWdpb25QYXRoO2Vsc2UgdGhpcy50RGF0YS5yZWdpb24gPSAiUm9vdCI7CiAgICAgICAgICAgIGlmIChsaXZlVXBkYXRlcykgewogICAgICAgICAgICAgIHRoaXMuJG1vZHVsZS5zZXR1cExpdmVDb29yZGluYXRlcyhvYmplY3RzKTsKICAgICAgICAgICAgICBpZiAodGhpcy4kX2xpdmVDb29yZGluYXRlc1VwZGF0ZWQpIHsKICAgICAgICAgICAgICAgIHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIucmVtb3ZlUG9zdFJlbmRlckNhbGxiYWNrRnVuY3Rpb24odGhpcy4kX2xpdmVDb29yZGluYXRlc1VwZGF0ZWQpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB0aGlzLiRfbGl2ZUNvb3JkaW5hdGVzVXBkYXRlZCA9IHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIuYWRkUG9zdFJlbmRlckNhbGxiYWNrRnVuY3Rpb24odGhpcy5saXZlVXBkYXRlVG9vbHRpcFBvc2l0aW9uKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICB9CiAgICAgIHRoaXMuaGlkZVJlZ2lvblRvb2x0aXAoKTsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSwKICAgIC8qKgogICAgICogRGlzcGxheSB0aGUgdG9vbHRpcC4gV2hlbiByZXNldFZpZXcgaXMgc2V0IHRvIHRydWUsIGl0IHdpbGwgCiAgICAgKiByZXNldCB2aWV3IGlmIHRoZSB0b29sdGlwIGlzIG5vdCBpbiB2aWV3LgogICAgICogU2V0dGluZyBsaXZlVXBkYXRlcyB0byB0cnVlIHdpbGwgdXBkYXRlIHRoZSB0b29sdGlwIGxvY2F0aW9uIAogICAgICogYXQgZXZlcnkgcmVuZGVyaW5nIGxvb3AuCiAgICAgKi8KICAgIHNob3dSZWdpb25Ub29sdGlwOiBmdW5jdGlvbiBzaG93UmVnaW9uVG9vbHRpcChuYW1lLCByZXNldFZpZXcsIGxpdmVVcGRhdGVzKSB7CiAgICAgIGlmIChuYW1lICYmIHRoaXMuJG1vZHVsZS5zY2VuZSkgewogICAgICAgIHZhciByb290UmVnaW9uID0gdGhpcy4kbW9kdWxlLnNjZW5lLmdldFJvb3RSZWdpb24oKTsKICAgICAgICB2YXIgZ3JvdXBzID0gW25hbWVdOwogICAgICAgIHZhciBvYmplY3RzID0gZmluZE9iamVjdHNXaXRoTmFtZXMocm9vdFJlZ2lvbiwgZ3JvdXBzLCAiIiwgdHJ1ZSk7CiAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGxheVRvb2x0aXBPZk9iamVjdHMobmFtZSwgb2JqZWN0cywgcmVzZXRWaWV3LCBsaXZlVXBkYXRlcyk7CiAgICAgIH0KICAgICAgdGhpcy5oaWRlUmVnaW9uVG9vbHRpcCgpOwogICAgICByZXR1cm4gZmFsc2U7CiAgICB9LAogICAgaGlkZVJlZ2lvblRvb2x0aXA6IGZ1bmN0aW9uIGhpZGVSZWdpb25Ub29sdGlwKCkgewogICAgICBpZiAodGhpcy4kX2xpdmVDb29yZGluYXRlc1VwZGF0ZWQpIHsKICAgICAgICB0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyLnJlbW92ZVBvc3RSZW5kZXJDYWxsYmFja0Z1bmN0aW9uKHRoaXMuJF9saXZlQ29vcmRpbmF0ZXNVcGRhdGVkKTsKICAgICAgICAvL1Vuc2V0IHRoZSB0cmFja2luZwogICAgICAgIHRoaXMuJG1vZHVsZS5zZXR1cExpdmVDb29yZGluYXRlcyh1bmRlZmluZWQpOwogICAgICB9CiAgICAgIHRoaXMudERhdGEudmlzaWJsZSA9IGZhbHNlOwogICAgICB0aGlzLnREYXRhLnJlZ2lvbiA9ICJSb290IjsKICAgIH0sCiAgICAvKioKICAgICAqIFRoaXMgaXMgY2FsbGVkIHdoZW4gbW91c2UgY3Vyc29yIGVudGVycyBzdXBwb3J0ZWQgZWxlbWVudHMKICAgICAqIHdpdGggaGVscCB0b290bHRpcHMuCiAgICAgKi8KICAgIHNob3dIZWxwVGV4dDogZnVuY3Rpb24gc2hvd0hlbHBUZXh0KGhlbHBUZXh0TnVtYmVyKSB7CiAgICAgIHZhciBfdGhpcyA9IHRoaXM7CiAgICAgIGlmICghdGhpcy5pbkhlbHApIHsKICAgICAgICB0aGlzLmhlbHBUZXh0V2FpdCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgX3RoaXMuaG92ZXJWaXNpYmlsaXRpZXNbaGVscFRleHROdW1iZXJdLnZhbHVlID0gdHJ1ZTsKICAgICAgICB9LCA1MDApOwogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBUaGlzIGlzIGNhbGxlZCB3aGVuIG1vdXNlIGN1cnNvciBleGl0cyBzdXBwb3J0ZWQgZWxlbWVudC4uCiAgICAgKi8KICAgIGhpZGVIZWxwVGV4dDogZnVuY3Rpb24gaGlkZUhlbHBUZXh0KGhlbHBUZXh0TnVtYmVyKSB7CiAgICAgIGlmICghdGhpcy5pbkhlbHApIHsKICAgICAgICB0aGlzLmhvdmVyVmlzaWJpbGl0aWVzW2hlbHBUZXh0TnVtYmVyXS52YWx1ZSA9IGZhbHNlOwogICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmhlbHBUZXh0V2FpdCk7CiAgICAgIH0KICAgIH0sCiAgICBzZWFyY2g6IGZ1bmN0aW9uIHNlYXJjaCh0ZXh0LCBkaXNwbGF5TGFiZWwpIHsKICAgICAgaWYgKHRoaXMuJF9zZWFyY2hJbmRleCkgewogICAgICAgIGlmICh0ZXh0ID09PSB1bmRlZmluZWQgfHwgdGV4dCA9PT0gIiIpIHsKICAgICAgICAgIHRoaXMub2JqZWN0U2VsZWN0ZWQoW10sIHRydWUpOwogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB2YXIgemluY09iamVjdFJlc3VsdHMgPSB0aGlzLiRfc2VhcmNoSW5kZXguc2VhcmNoKHRleHQpOwogICAgICAgICAgaWYgKHppbmNPYmplY3RSZXN1bHRzLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgdGhpcy5vYmplY3RTZWxlY3RlZCh6aW5jT2JqZWN0UmVzdWx0cywgdHJ1ZSk7CiAgICAgICAgICAgIGlmIChkaXNwbGF5TGFiZWwpIHsKICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHppbmNPYmplY3RSZXN1bHRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBpZiAoemluY09iamVjdFJlc3VsdHNbaV0gJiYgemluY09iamVjdFJlc3VsdHNbaV0uZ3JvdXBOYW1lKSB7CiAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd1JlZ2lvblRvb2x0aXAoemluY09iamVjdFJlc3VsdHNbaV0uZ3JvdXBOYW1lLCB0cnVlLCB0cnVlKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aGlzLm9iamVjdFNlbGVjdGVkKFtdLCB0cnVlKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSwKICAgIC8qKgogICAgICogR2V0IHRoZSBsaXN0IG9mIHN1Z2dlc3RlZCB0ZXJtcwogICAgICovCiAgICBmZXRjaFN1Z2dlc3Rpb25zOiBmdW5jdGlvbiBmZXRjaFN1Z2dlc3Rpb25zKHRlcm0pIHsKICAgICAgaWYgKHRoaXMuJF9zZWFyY2hJbmRleCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gW107CiAgICAgIHJldHVybiB0aGlzLiRfc2VhcmNoSW5kZXguYXV0b19zdWdnZXN0KHRlcm0pOwogICAgfSwKICAgIC8qKgogICAgICogQ2FsbGVkIHdoZW4gbWluaW1hcCBzZXR0aW5ncyBoYXMgY2hhbmdlZC4gUGFzcyB0aGUKICAgICAqIHBhcmFtZXRlcnMgdG8gWmluY0pTIGFuZCBtYXJrZWQgaXQgZm9yIHVwZGF0ZS4KICAgICAqLwogICAgdXBkYXRlTWluaW1hcFNjaXNzb3I6IGZ1bmN0aW9uIHVwZGF0ZU1pbmltYXBTY2lzc29yKCkgewogICAgICB2YXIgX3RoaXMyID0gdGhpczsKICAgICAgT2JqZWN0LmtleXModGhpcy5taW5pbWFwU2V0dGluZ3MpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgewogICAgICAgIF90aGlzMi4kbW9kdWxlLnNjZW5lLm1pbmltYXBTY2lzc29yW2tleV0gPSBfdGhpczIubWluaW1hcFNldHRpbmdzW2tleV07CiAgICAgIH0pOwogICAgICB0aGlzLiRtb2R1bGUuc2NlbmUubWluaW1hcFNjaXNzb3IudXBkYXRlUmVxdWlyZWQgPSB0cnVlOwogICAgfSwKICAgIHVwZGF0ZVNldHRpbmdzZnJvbVNjZW5lOiBmdW5jdGlvbiB1cGRhdGVTZXR0aW5nc2Zyb21TY2VuZSgpIHsKICAgICAgdGhpcy5jdXJyZW50U3BlZWQgPSAxOwogICAgICB0aGlzLiRtb2R1bGUuc2V0UGxheVJhdGUodGhpcy5kZWZhdWx0UmF0ZSk7CiAgICAgIHRoaXMub3JnaW5hbER1cmF0aW9uID0gdGhpcy4kbW9kdWxlLnNjZW5lLmdldE1ldGFkYXRhVGFnKCJPcmlnaW5hbER1cmF0aW9uIik7CiAgICAgIHRoaXMuYW5pbWF0ZUR1cmF0aW9uID0gdGhpcy4kbW9kdWxlLnNjZW5lLmdldE1ldGFkYXRhVGFnKCJEdXJhdGlvbiIpOwogICAgICB2YXIgdGltZVN0YW1wcyA9IHRoaXMuJG1vZHVsZS5zY2VuZS5nZXRNZXRhZGF0YVRhZygiVGltZVN0YW1wcyIpOwogICAgICB0aGlzLnRpbWVTdGFtcHMgPSB7fTsKICAgICAgZm9yICh2YXIga2V5IGluIHRpbWVTdGFtcHMpIHsKICAgICAgICB0aGlzLnRpbWVTdGFtcHNbdGltZVN0YW1wc1trZXldXSA9IGtleTsKICAgICAgfQogICAgICB0aGlzLnRpbWVNYXggPSB0aGlzLiRtb2R1bGUuc2NlbmUuZ2V0RHVyYXRpb24oKTsKICAgIH0sCiAgICBzZXRVUkxGaW5pc2hDYWxsYmFjazogZnVuY3Rpb24gc2V0VVJMRmluaXNoQ2FsbGJhY2sob3B0aW9ucykgewogICAgICB2YXIgX3RoaXMzID0gdGhpczsKICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKICAgICAgICBpZiAob3B0aW9ucykgewogICAgICAgICAgaWYgKG9wdGlvbnMudmlld3BvcnQpIHsKICAgICAgICAgICAgX3RoaXMzLiRtb2R1bGUuc2NlbmUuZ2V0WmluY0NhbWVyYUNvbnRyb2xzKCkuc2V0Q3VycmVudENhbWVyYVNldHRpbmdzKG9wdGlvbnMudmlld3BvcnQpOwogICAgICAgICAgfSBlbHNlIGlmIChvcHRpb25zLnZpZXdVUkwgJiYgb3B0aW9ucy52aWV3VVJMICE9PSAiIikgewogICAgICAgICAgICB2YXIgdXJsID0gbmV3IFVSTChvcHRpb25zLnZpZXdVUkwsIF90aGlzMy51cmwpOwogICAgICAgICAgICBfdGhpczMuJG1vZHVsZS5zY2VuZS5sb2FkVmlld1VSTCh1cmwpOwogICAgICAgICAgfSBlbHNlIGlmIChvcHRpb25zLnJlZ2lvbiAmJiBvcHRpb25zLnJlZ2lvbiAhPT0gIiIpIHsKICAgICAgICAgICAgX3RoaXMzLnZpZXdSZWdpb24ob3B0aW9ucy5yZWdpb24pOwogICAgICAgICAgfQogICAgICAgICAgaWYgKG9wdGlvbnMudmlzaWJpbGl0eSkgewogICAgICAgICAgICAvLyBTb21lIFVJcyBtYXkgbm90IGJlIHJlYWR5IGF0IHRoaXMgdGltZS4KICAgICAgICAgICAgX3RoaXMzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgX3RoaXMzLiRyZWZzLnRyZWVDb250cm9scy5zZXRTdGF0ZShvcHRpb25zLnZpc2liaWxpdHkpOwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgX3RoaXMzLnVwZGF0ZVNldHRpbmdzZnJvbVNjZW5lKCk7CiAgICAgICAgX3RoaXMzLiRtb2R1bGUudXBkYXRlVGltZSgwLjAxKTsKICAgICAgICBfdGhpczMuJG1vZHVsZS51cGRhdGVUaW1lKDApOwogICAgICAgIF90aGlzMy4kbW9kdWxlLnVuc2V0RmluaXNoRG93bmxvYWRDYWxsYmFjaygpOwogICAgICAgIF90aGlzMy4kZW1pdCgib24tcmVhZHkiKTsKICAgICAgICBfdGhpczMuaXNSZWFkeSA9IHRydWU7CiAgICAgIH07CiAgICB9LAogICAgLyoqCiAgICAgKiBGdW5jdGlvbiB1c2VkIGZvciBnZXR0aW5nIHRoZSBjdXJyZW50IHN0YXRlcyBvZiB0aGUgc2NlbmUuIFRoaXMgZXhwb3J0ZWQgc3RhdGVzCiAgICAgKiBjYW4gYmUgaW1wb3J0ZWQgdXNpbmcgdGhlIGltcG9ydFN0YXRlcyBtZXRob2QuCiAgICAgKgogICAgICogQHB1YmxpYwogICAgICovCiAgICBnZXRTdGF0ZTogZnVuY3Rpb24gZ2V0U3RhdGUoKSB7CiAgICAgIHZhciBzdGF0ZSA9IHsKICAgICAgICBmb3JtYXQ6IHRoaXMuZmlsZUZvcm1hdCwKICAgICAgICB1cmw6IHRoaXMuX2N1cnJlbnRVUkwsCiAgICAgICAgdmlld3BvcnQ6IHVuZGVmaW5lZCwKICAgICAgICB2aXNpYmlsaXR5OiB1bmRlZmluZWQKICAgICAgfTsKICAgICAgaWYgKHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzKSBzdGF0ZS52aXNpYmlsaXR5ID0gdGhpcy4kcmVmcy50cmVlQ29udHJvbHMuZ2V0U3RhdGUoKTsKICAgICAgaWYgKHRoaXMuJG1vZHVsZS5zY2VuZSkgewogICAgICAgIHZhciB6aW5jQ2FtZXJhQ29udHJvbHMgPSB0aGlzLiRtb2R1bGUuc2NlbmUuZ2V0WmluY0NhbWVyYUNvbnRyb2xzKCk7CiAgICAgICAgc3RhdGUudmlld3BvcnQgPSB6aW5jQ2FtZXJhQ29udHJvbHMuZ2V0Q3VycmVudFZpZXdwb3J0KCk7CiAgICAgIH0KICAgICAgcmV0dXJuIHN0YXRlOwogICAgfSwKICAgIC8qKgogICAgICogRnVuY3Rpb24gdXNlZCBmb3IgaW1wb3J0aW5nIHRoZSBzdGF0ZXMgb2YgdGhlIHNjZW5lLiBUaGlzIGV4cG9ydGVkIHN0YXRlcwogICAgICogY2FuIGJlIGltcG9ydGVkIHVzaW5nIHRoZSByZWFkIHN0YXRlcyBtZXRob2QuCiAgICAgKgogICAgICogQHB1YmxpYwogICAgICovCiAgICBzZXRTdGF0ZTogZnVuY3Rpb24gc2V0U3RhdGUoc3RhdGUpIHsKICAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgaWYgKHN0YXRlLnVybCAmJiBzdGF0ZS51cmwgIT09IHRoaXMuX2N1cnJlbnRVUkwpIHsKICAgICAgICAgIHRoaXMuc2V0VVJMQW5kU3RhdGUoc3RhdGUudXJsLCB7CiAgICAgICAgICAgIGZpbGVGb3JtYXQ6IHN0YXRlLmZpbGVGb3JtYXQsCiAgICAgICAgICAgIHZpZXdwb3J0OiBzdGF0ZS52aWV3cG9ydCwKICAgICAgICAgICAgdmlzaWJpbGl0eTogc3RhdGUudmlzaWJpbGl0eQogICAgICAgICAgfSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGlmIChzdGF0ZS52aWV3cG9ydCB8fCBzdGF0ZS52aXNpYmlsaXR5KSB7CiAgICAgICAgICAgIGlmICh0aGlzLmlzUmVhZHkgJiYgdGhpcy4kbW9kdWxlLnNjZW5lKSB7CiAgICAgICAgICAgICAgaWYgKHN0YXRlLnZpZXdwb3J0KSB0aGlzLiRtb2R1bGUuc2NlbmUuZ2V0WmluY0NhbWVyYUNvbnRyb2xzKCkuc2V0Q3VycmVudENhbWVyYVNldHRpbmdzKHN0YXRlLnZpZXdwb3J0KTsKICAgICAgICAgICAgICBpZiAoc3RhdGUudmlzaWJpbGl0eSkgdGhpcy4kcmVmcy50cmVlQ29udHJvbHMuc2V0U3RhdGUoc3RhdGUudmlzaWJpbGl0eSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgdGhpcy4kbW9kdWxlLnNldEZpbmlzaERvd25sb2FkQ2FsbGJhY2sodGhpcy5zZXRVUkxGaW5pc2hDYWxsYmFjayh7CiAgICAgICAgICAgICAgICB2aWV3cG9ydDogc3RhdGUudmlld3BvcnQsCiAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiBzdGF0ZS52aXNpYmlsaXR5CiAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgZXhwb3J0R0xURjogZnVuY3Rpb24gZXhwb3J0R0xURihiaW5hcnkpIHsKICAgICAgcmV0dXJuIHRoaXMuJG1vZHVsZS5zY2VuZS5leHBvcnRHTFRGKGJpbmFyeSk7CiAgICB9LAogICAgLyoqCiAgICAgKiBGdW5jdGlvbiB1c2VkIGZvciByZWFkaW5nIGluIG5ldyBzY2FmZm9sZCBtZXRhZGF0YSBhbmQgYSBjdXN0b20KICAgICAqIHZpZXdwb3J0LiBUaGlzIGZ1bmN0aW9uIHdpbGwgaWdub3JlIHRoZSBzdGF0ZSBwcm9wIGFuZAogICAgICogcmVhZCBpbiB0aGUgbmV3IHVybC4KICAgICAqCiAgICAgKiBAcHVibGljCiAgICAgKi8KICAgIHNldFVSTEFuZFN0YXRlOiBmdW5jdGlvbiBzZXRVUkxBbmRTdGF0ZShuZXdWYWx1ZSwgc3RhdGUpIHsKICAgICAgaWYgKG5ld1ZhbHVlICE9IHRoaXMuX2N1cnJlbnRVUkwpIHsKICAgICAgICBpZiAoc3RhdGUgJiYgc3RhdGUuZm9ybWF0KSB0aGlzLmZpbGVGb3JtYXQgPSBzdGF0ZS5mb3JtYXQ7CiAgICAgICAgdmFyIHZpZXdwb3J0ID0gc3RhdGUgJiYgc3RhdGUudmlld3BvcnQgPyBzdGF0ZS52aWV3cG9ydCA6IHVuZGVmaW5lZDsKICAgICAgICB2YXIgdmlzaWJpbGl0eSA9IHN0YXRlICYmIHN0YXRlLnZpc2liaWxpdHkgPyBzdGF0ZS52aXNpYmlsaXR5IDogdW5kZWZpbmVkOwogICAgICAgIHRoaXMuX2N1cnJlbnRVUkwgPSBuZXdWYWx1ZTsKICAgICAgICBpZiAodGhpcy4kcmVmcy50cmVlQ29udHJvbHMpIHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzLmNsZWFyKCk7CiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTsKICAgICAgICB0aGlzLmlzUmVhZHkgPSBmYWxzZTsKICAgICAgICB0aGlzLiRtb2R1bGUuc2V0RmluaXNoRG93bmxvYWRDYWxsYmFjayh0aGlzLnNldFVSTEZpbmlzaENhbGxiYWNrKHsKICAgICAgICAgIHZpZXdwb3J0OiB2aWV3cG9ydCwKICAgICAgICAgIHJlZ2lvbjogdGhpcy5yZWdpb24sCiAgICAgICAgICB2aWV3VVJMOiB0aGlzLnZpZXdVUkwsCiAgICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmlsaXR5CiAgICAgICAgfSkpOwogICAgICAgIGlmICh0aGlzLmZpbGVGb3JtYXQgPT09ICJnbHRmIikgewogICAgICAgICAgdGhpcy4kbW9kdWxlLmxvYWRHTFRGRnJvbVVSTChuZXdWYWx1ZSwgInNjZW5lIiwgdHJ1ZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuJG1vZHVsZS5sb2FkT3JnYW5zRnJvbVVSTChuZXdWYWx1ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsICJzY2VuZSIsIHVuZGVmaW5lZCwgdHJ1ZSk7CiAgICAgICAgfQogICAgICAgIHRoaXMuJF9zZWFyY2hJbmRleC5yZW1vdmVBbGwoKTsKICAgICAgICB0aGlzLiRfdGVtcElkID0gMTsKICAgICAgICB0aGlzLmhpZGVSZWdpb25Ub29sdGlwKCk7CiAgICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLmRpc3BsYXlNYXJrZXJzID0gdGhpcy5kaXNwbGF5TWFya2VyczsKICAgICAgICB0aGlzLiRtb2R1bGUuc2NlbmUuZm9yY2VQaWNrYWJsZU9iamVjdHNVcGRhdGUgPSB0cnVlOwogICAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5kaXNwbGF5TWluaW1hcCA9IHRoaXMuZGlzcGxheU1pbmltYXA7CiAgICAgICAgdGhpcy51cGRhdGVNaW5pbWFwU2Npc3NvcigpOwogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBGdW5jdGlvbiB1c2VkIGZvciByZWFkaW5nIGluIG5ldyBzY2FmZm9sZCBtZXRhZGF0YS4gVGhpcyBmdW5jdGlvbiB3aWxsIGlnbm9yZQogICAgICogdGhlIHN0YXRlIHByb3AgYW5kIHJlYWQgaW4gdGhlIG5ldyB1cmwuCiAgICAgKgogICAgICogQHB1YmxpYwogICAgICovCiAgICBzZXRVUkw6IGZ1bmN0aW9uIHNldFVSTChuZXdWYWx1ZSkgewogICAgICB0aGlzLnNldFVSTEFuZFN0YXRlKG5ld1ZhbHVlLCB1bmRlZmluZWQpOwogICAgfSwKICAgIC8qKgogICAgICogQ2FsbGJhY2sgd2hlbiBkcmF3ZXIgaXMgdG9nZ2xlZC4KICAgICAqLwogICAgZHJhd2VyVG9nZ2xlZDogZnVuY3Rpb24gZHJhd2VyVG9nZ2xlZChmbGFnKSB7CiAgICAgIHRoaXMuZHJhd2VyT3BlbiA9IGZsYWc7CiAgICAgIHRoaXMuYWRqdXN0TGF5b3V0KCk7CiAgICB9LAogICAgLyoqCiAgICAgKiBDYWxsYmFjayB1c2luZyBSZXNpemVPYnNlcnZlci4KICAgICAqLwogICAgYWRqdXN0TGF5b3V0OiBmdW5jdGlvbiBhZGp1c3RMYXlvdXQoKSB7CiAgICAgIHZhciB3aWR0aCA9IHRoaXMuJHJlZnMuc2NhZmZvbGRDb250YWluZXIuY2xpZW50V2lkdGg7CiAgICAgIHRoaXMubWluaW1pc2VkU2xpZGVyID0gd2lkdGggPCA4MTI7CiAgICAgIGlmICh0aGlzLm1pbmltaXNlZFNsaWRlcikgewogICAgICAgIHRoaXMuc2xpZGVyUG9zaXRpb24gPSB0aGlzLmRyYXdlck9wZW4gPyAicmlnaHQiIDogImxlZnQiOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuc2xpZGVyUG9zaXRpb24gPSAiIjsKICAgICAgfQogICAgfSwKICAgIHRvZ2dsZVJlbmRlcmluZzogZnVuY3Rpb24gdG9nZ2xlUmVuZGVyaW5nKGZsYWcpIHsKICAgICAgaWYgKHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIpIHsKICAgICAgICBpZiAoZmxhZykgewogICAgICAgICAgdGhpcy4kbW9kdWxlLnppbmNSZW5kZXJlci5hbmltYXRlKCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIuc3RvcEFuaW1hdGUoKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICBmb3JjZVJlc2l6ZTogZnVuY3Rpb24gZm9yY2VSZXNpemUoKSB7CiAgICAgIGlmICh0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyKSB7CiAgICAgICAgdGhpcy4kbW9kdWxlLnppbmNSZW5kZXJlci5vbldpbmRvd1Jlc2l6ZSgpOwogICAgICB9CiAgICB9LAogICAgc3luY0NvbnRyb2xDYWxsYmFjazogZnVuY3Rpb24gc3luY0NvbnRyb2xDYWxsYmFjaygpIHsKICAgICAgdmFyIHBheWxvYWQgPSB0aGlzLiRtb2R1bGUuTkRDQ2FtZXJhQ29udHJvbC5nZXRQYW5ab29tKCk7CiAgICAgIGlmICh0aGlzLnREYXRhLnZpc2libGUpIHsKICAgICAgICB0aGlzLnNob3dSZWdpb25Ub29sdGlwKHRoaXMudERhdGEubGFiZWwpOwogICAgICB9CiAgICAgIHRoaXMuJGVtaXQoInNjYWZmb2xkLW5hdmlnYXRlZCIsIHBheWxvYWQpOwogICAgfSwKICAgIC8qKiAKICAgICAqIFJvdGF0ZSBtb2RlIC0gIm5vbmUiLCAiaG9yaXpvbnRhbCIsICJ2ZXJ0aWNhbCIsICJmcmVlIiBidXQKICAgICAqIGl0IHdpbGwgYmUgaWdub3JlZCBpZiBmbGFnIGlzIHNldCB0byBmYWxzZS4KICAgICAqLwogICAgdG9nZ2xlU3luY0NvbnRyb2w6IGZ1bmN0aW9uIHRvZ2dsZVN5bmNDb250cm9sKGZsYWcsIHJvdGF0ZU1vZGUpIHsKICAgICAgdGhpcy4kbW9kdWxlLnRvZ2dsZVN5bmNDb250cm9sKGZsYWcsIHJvdGF0ZU1vZGUpOwogICAgICB0aGlzLiRtb2R1bGUuc2V0U3luY0NvbnRyb2xDYWxsYmFjayh0aGlzLnN5bmNDb250cm9sQ2FsbGJhY2spOwogICAgfQogIH0KfTs="},{"version":3,"names":["Vue","OpacityControls","ScaffoldTooltip","TreeControls","MapSvgIcon","MapSvgSpriteColor","findObjectsWithNames","getAllObjects","SearchIndex","lang","locale","use","_Col","_Loading","directive","_Option","_Popover","_Row","_Select","_Slider","_TabPane","_Tabs","OrgansViewer","require","EventNotifier","name","components","props","url","type","String","default","showColourPicker","Boolean","displayUI","displayAtStartUp","helpMode","displayWarning","warningMessage","displayLatestChanges","latestChangesMessage","displayMarkers","displayMinimap","format","minimapSettings","Object","_default","x_offset","y_offset","width","height","align","state","undefined","region","viewURL","render","data","sceneData","$module","isPlaying","isTransitioning","tooltipAppendToBody","hoverVisibilities","value","inHelp","loading","duration","drawerOpen","currentBackground","availableBackground","minimisedSlider","sliderPosition","timeMax","orginalDuration","animateDuration","playSpeed","label","currentSpeed","timeStamps","defaultCheckedKeys","tData","visible","x","y","fileFormat","watch","handler","immediate","newValue","setURL","setFocusedRegion","setState","deep","updateViewURL","val","setHelpMode","scene","forcePickableObjectsUpdate","sceneDataCurrentTime","$emit","currentTime","setDuration","toggleRendering","beforeCreate","isReady","selectedObjects","hoveredObjects","_currentURL","$_searchIndex","$_tempId","mounted","$refs","treeControls","setModule","eventNotifier","subscribe","eventNotifierCallback","addNotifier","addOrganPartAddedCallback","zincObjectAdded","initialiseRenderer","display","ro","ResizeObserver","adjustLayout","observe","scaffoldContainer","defaultRate","getPlayRate","beforeDestroy","disconnect","destroy","methods","zincObject","searchIndexId","addZincObject","backgroundChangeCallback","colour","zincRenderer","getThreeJSRenderer","setClearColor","captureScreenshotCallback","removePostRenderCallbackFunction","captureID","screenshot","domElement","toDataURL","hrefElement","document","createElement","body","append","captureFilename","download","href","click","remove","captureScreenshot","filename","addPostRenderCallbackFunction","formatTooltip","sec","toFixed","min","fitWindow","viewAll","zoomIn","changeZoomByScrollRateUnit","zoomOut","speedChanged","speed","setPlayRate","stopFreeSpin","cameracontrol","getZincCameraControls","stopAutoTumble","findObjectsWithGroupName","objects","viewRegion","names","rootRegion","getRootRegion","groups","Array","isArray","box","getBoundingBoxOfZincObjects","isSyncControl","setSyncControlZoomToBox","dist","camera","far","near","viewAllWithBoundingBox","updateProjectionMatrix","setFinishDownloadCallback","setURLFinishCallback","URL","loadViewURL","getRendererInfo","info","freeSpin","enableAutoTumble","autoTumble","Math","PI","setTimeout","event","zincObjects","eventType","identifiers","forEach","identifier","id","group","push","length","updateActiveUI","hideRegionTooltip","removeActive","updateHoverUI","removeHover","coords","offsets","getBoundingClientRect","left","top","getCoordinatesOfSelected","getObjectsScreenXY","getDynamicSelectedCoordinates","selectedScreenCoordinates","timeChange","normalizedTime","updateTime","objectSelected","propagate","opacityControl","setObject","setSelectedByZincObjects","objectHovered","setHighlightedByZincObjects","changeActiveByName","array","changeActiveByNames","changeHighlightedByName","changeHoverByNames","play","flag","playAnimation","item","displayTooltipOfObjectsCallback","resetView","liveUpdates","instance","$_regionTooltipCallback","displayTooltipOfObjects","liveUpdateTooltipPosition","selectedCenter","getClosestVertexDOMElementCoords","inView","position","regionPath","getRegion","getFullPath","setupLiveCoordinates","$_liveCoordinatesUpdated","showRegionTooltip","showHelpText","helpTextNumber","_this","helpTextWait","hideHelpText","clearTimeout","search","text","displayLabel","zincObjectResults","i","groupName","fetchSuggestions","term","auto_suggest","updateMinimapScissor","_this2","keys","key","minimapScissor","updateRequired","updateSettingsfromScene","getMetadataTag","getDuration","options","_this3","viewport","setCurrentCameraSettings","visibility","$nextTick","unsetFinishDownloadCallback","getState","zincCameraControls","getCurrentViewport","setURLAndState","exportGLTF","binary","clear","loadGLTFFromURL","loadOrgansFromURL","removeAll","drawerToggled","clientWidth","animate","stopAnimate","forceResize","onWindowResize","syncControlCallback","payload","NDCCameraControl","getPanZoom","toggleSyncControl","rotateMode","setSyncControlCallback"],"sources":["node_modules/@abi-software/scaffoldvuer/src/components/ScaffoldVuer.vue"],"sourcesContent":["\n \n \n \n \n \n \n \n Beta\n \n \n \n What's new?\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Original duration:\n \n {{ orginalDuration }}\n \n \n \n Animation duration:\n \n {{ animateDuration }}\n \n \n \n Playback speed\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Fit to\n \n window\n \n \n \n \n \n \n Change background\n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwQA;AACA,OAAAA,GAAA;AACA,OAAAC,eAAA;AACA,OAAAC,eAAA;AACA,OAAAC,YAAA;AACA,SAAAC,UAAA,EAAAC,iBAAA;AACA,SAAAC,oBAAA,EAAAC,aAAA;AACA,SAAAC,WAAA;AAYA,OAAAC,IAAA;AACA,OAAAC,MAAA;AAEAA,MAAA,CAAAC,GAAA,CAAAF,IAAA;AACAT,GAAA,CAAAW,GAAA,CAAAC,IAAA;AACAZ,GAAA,CAAAW,GAAA,CAAAE,QAAA,CAAAC,SAAA;AACAd,GAAA,CAAAW,GAAA,CAAAI,OAAA;AACAf,GAAA,CAAAW,GAAA,CAAAK,QAAA;AACAhB,GAAA,CAAAW,GAAA,CAAAM,IAAA;AACAjB,GAAA,CAAAW,GAAA,CAAAO,OAAA;AACAlB,GAAA,CAAAW,GAAA,CAAAQ,OAAA;AACAnB,GAAA,CAAAW,GAAA,CAAAS,QAAA;AACApB,GAAA,CAAAW,GAAA,CAAAU,KAAA;AAEA,IAAAC,YAAA,GAAAC,OAAA,8BAAAD,YAAA;AACA,IAAAE,aAAA,GAAAD,OAAA,6BAAAC,aAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;EACAC,IAAA;EACAC,UAAA;IACAtB,UAAA,EAAAA,UAAA;IACAC,iBAAA,EAAAA,iBAAA;IACAJ,eAAA,EAAAA,eAAA;IACAC,eAAA,EAAAA,eAAA;IACAC,YAAA,EAAAA;EACA;EACAwB,KAAA;IACA;AACA;AACA;AACA;AACA;AACA;IACAC,GAAA;MACAC,IAAA,EAAAC,MAAA;MACAC,OAAA;IACA;IACA;AACA;AACA;IACAC,gBAAA;MACAH,IAAA,EAAAI,OAAA;MACAF,OAAA;IACA;IACA;AACA;AACA;IACAG,SAAA;MACAL,IAAA,EAAAI,OAAA;MACAF,OAAA;IACA;IACA;AACA;AACA;AACA;AACA;IACAI,gBAAA;MACAN,IAAA,EAAAI,OAAA;MACAF,OAAA;IACA;IACA;AACA;AACA;IACAK,QAAA;MACAP,IAAA,EAAAI,OAAA;MACAF,OAAA;IACA;IACA;AACA;AACA;IACAM,cAAA;MACAR,IAAA,EAAAI,OAAA;MACAF,OAAA;IACA;IACA;AACA;AACA;AACA;IACAO,cAAA;MACAT,IAAA,EAAAC,MAAA;MACAC,OAAA;IACA;IACAQ,oBAAA;MACAV,IAAA,EAAAI,OAAA;MACAF,OAAA;IACA;IACAS,oBAAA;MACAX,IAAA,EAAAC,MAAA;MACAC,OAAA;IACA;IACA;AACA;AACA;IACAU,cAAA;MACAZ,IAAA,EAAAI,OAAA;MACAF,OAAA;IACA;IACA;AACA;AACA;IACAW,cAAA;MACAb,IAAA,EAAAI,OAAA;MACAF,OAAA;IACA;IACA;AACA;AACA;IACAY,MAAA;MACAd,IAAA,EAAAC,MAAA;MACAC,OAAA;IACA;IACA;AACA;AACA;IACAa,eAAA;MACAf,IAAA,EAAAgB,MAAA;MACAd,OAAA,WAAAe,SAAA;QACA;UACAC,QAAA;UACAC,QAAA;UACAC,KAAA;UACAC,MAAA;UACAC,KAAA;QACA;MACA;IACA;IACA;AACA;AACA;IACAC,KAAA;MACAvB,IAAA,EAAAgB,MAAA;MACAd,OAAA,EAAAsB;IACA;IACA;AACA;AACA;AACA;IACAC,MAAA;MACAzB,IAAA,EAAAC,MAAA;MACAC,OAAA;IACA;IACA;AACA;AACA;AACA;AACA;IACAwB,OAAA;MACA1B,IAAA,EAAAC,MAAA;MACAC,OAAA;IACA;IACA;AACA;AACA;IACAyB,MAAA;MACA3B,IAAA,EAAAI,OAAA;MACAF,OAAA;IACA;EACA;EACA0B,IAAA,WAAAA,KAAA;IACA;MACAC,SAAA,OAAAC,OAAA,CAAAD,SAAA;MACAE,SAAA;MACA;AACA;AACA;MACAC,eAAA;MACAC,mBAAA;MACAC,iBAAA,GACA;QAAAC,KAAA;MAAA,GACA;QAAAA,KAAA;MAAA,GACA;QAAAA,KAAA;MAAA,GACA;QAAAA,KAAA;MAAA,GACA;QAAAA,KAAA;MAAA,GACA;QAAAA,KAAA;MAAA,GACA;QAAAA,KAAA;MAAA,GACA;QAAAA,KAAA;MAAA,EACA;MACAC,MAAA;MACAC,OAAA;MACAC,QAAA;MACAC,UAAA;MACAC,iBAAA;MACAC,mBAAA;MACAC,eAA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"}]}