{"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:aW1wb3J0IF9UYWJzMiBmcm9tICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay90YWJzLmNzcyI7CmltcG9ydCAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvYmFzZS5jc3MiOwppbXBvcnQgX1RhYnMgZnJvbSAiZWxlbWVudC11aS9saWIvdGFicyI7CmltcG9ydCBfVGFiUGFuZTIgZnJvbSAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvdGFiLXBhbmUuY3NzIjsKaW1wb3J0ICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9iYXNlLmNzcyI7CmltcG9ydCBfVGFiUGFuZSBmcm9tICJlbGVtZW50LXVpL2xpYi90YWItcGFuZSI7CmltcG9ydCBfU2xpZGVyMiBmcm9tICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9zbGlkZXIuY3NzIjsKaW1wb3J0ICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9iYXNlLmNzcyI7CmltcG9ydCBfU2xpZGVyIGZyb20gImVsZW1lbnQtdWkvbGliL3NsaWRlciI7CmltcG9ydCBfU2VsZWN0MiBmcm9tICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9zZWxlY3QuY3NzIjsKaW1wb3J0ICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9iYXNlLmNzcyI7CmltcG9ydCBfU2VsZWN0IGZyb20gImVsZW1lbnQtdWkvbGliL3NlbGVjdCI7CmltcG9ydCBfUm93MiBmcm9tICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9yb3cuY3NzIjsKaW1wb3J0ICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9iYXNlLmNzcyI7CmltcG9ydCBfUm93IGZyb20gImVsZW1lbnQtdWkvbGliL3JvdyI7CmltcG9ydCBfUG9wb3ZlcjIgZnJvbSAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvcG9wb3Zlci5jc3MiOwppbXBvcnQgImVsZW1lbnQtdWkvbGliL3RoZW1lLWNoYWxrL2Jhc2UuY3NzIjsKaW1wb3J0IF9Qb3BvdmVyIGZyb20gImVsZW1lbnQtdWkvbGliL3BvcG92ZXIiOwppbXBvcnQgX09wdGlvbjIgZnJvbSAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvb3B0aW9uLmNzcyI7CmltcG9ydCAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvYmFzZS5jc3MiOwppbXBvcnQgX09wdGlvbiBmcm9tICJlbGVtZW50LXVpL2xpYi9vcHRpb24iOwppbXBvcnQgX0xvYWRpbmcyIGZyb20gImVsZW1lbnQtdWkvbGliL3RoZW1lLWNoYWxrL2xvYWRpbmcuY3NzIjsKaW1wb3J0ICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9iYXNlLmNzcyI7CmltcG9ydCBfTG9hZGluZyBmcm9tICJlbGVtZW50LXVpL2xpYi9sb2FkaW5nIjsKaW1wb3J0IF9Db2wyIGZyb20gImVsZW1lbnQtdWkvbGliL3RoZW1lLWNoYWxrL2NvbC5jc3MiOwppbXBvcnQgImVsZW1lbnQtdWkvbGliL3RoZW1lLWNoYWxrL2Jhc2UuY3NzIjsKaW1wb3J0IF9Db2wgZnJvbSAiZWxlbWVudC11aS9saWIvY29sIjsKaW1wb3J0IF9CdXR0b24yIGZyb20gImVsZW1lbnQtdWkvbGliL3RoZW1lLWNoYWxrL2J1dHRvbi5jc3MiOwppbXBvcnQgImVsZW1lbnQtdWkvbGliL3RoZW1lLWNoYWxrL2Jhc2UuY3NzIjsKaW1wb3J0IF9CdXR0b24gZnJvbSAiZWxlbWVudC11aS9saWIvYnV0dG9uIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuZm9yLWVhY2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5udW1iZXIudG8tZml4ZWQuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5pdGVyYXRvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5pdGVyYXRvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuaXRlcmF0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIudXJsLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvd2ViLnVybC1zZWFyY2gtcGFyYW1zLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkucHVzaC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmluY2x1ZGVzLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLmluY2x1ZGVzLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmtleXMuanMiOwovKiBlc2xpbnQtZGlzYWJsZSBuby1hbGVydCwgbm8tY29uc29sZSAqLwppbXBvcnQgVnVlIGZyb20gInZ1ZSI7CmltcG9ydCBQcmltaXRpdmVDb250cm9scyBmcm9tICIuL1ByaW1pdGl2ZUNvbnRyb2xzIjsKaW1wb3J0IFNjYWZmb2xkVG9vbHRpcCBmcm9tICIuL1NjYWZmb2xkVG9vbHRpcCI7CmltcG9ydCBUcmVlQ29udHJvbHMgZnJvbSAiLi9UcmVlQ29udHJvbHMiOwppbXBvcnQgeyBNYXBTdmdJY29uLCBNYXBTdmdTcHJpdGVDb2xvciB9IGZyb20gIkBhYmktc29mdHdhcmUvc3ZnLXNwcml0ZSI7CmltcG9ydCB7IGZpbmRPYmplY3RzV2l0aE5hbWVzLCBnZXRPYmplY3RzRnJvbUFubm90YXRpb25zIH0gZnJvbSAiLi4vc2NyaXB0cy91dGlsaXRpZXMuanMiOwppbXBvcnQgeyBTZWFyY2hJbmRleCB9IGZyb20gIi4uL3NjcmlwdHMvc2VhcmNoLmpzIjsKaW1wb3J0IGxhbmcgZnJvbSAiZWxlbWVudC11aS9saWIvbG9jYWxlL2xhbmcvZW4iOwppbXBvcnQgbG9jYWxlIGZyb20gImVsZW1lbnQtdWkvbGliL2xvY2FsZSI7CmxvY2FsZS51c2UobGFuZyk7ClZ1ZS51c2UoX0J1dHRvbik7ClZ1ZS51c2UoX0NvbCk7ClZ1ZS51c2UoX0xvYWRpbmcuZGlyZWN0aXZlKTsKVnVlLnVzZShfT3B0aW9uKTsKVnVlLnVzZShfUG9wb3Zlcik7ClZ1ZS51c2UoX1Jvdyk7ClZ1ZS51c2UoX1NlbGVjdCk7ClZ1ZS51c2UoX1NsaWRlcik7ClZ1ZS51c2UoX1RhYlBhbmUpOwpWdWUudXNlKF9UYWJzKTsKdmFyIE9yZ2Fuc1ZpZXdlciA9IHJlcXVpcmUoIi4uL3NjcmlwdHMvb3JnYW5zUmVuZGVyZXIiKS5PcmdhbnNWaWV3ZXI7CnZhciBFdmVudE5vdGlmaWVyID0gcmVxdWlyZSgiLi4vc2NyaXB0cy9ldmVudE5vdGlmaWVyIikuRXZlbnROb3RpZmllcjsKCi8qKgogKiBBIHZ1ZSBjb21wb25lbnQgb2YgdGhlIHNjYWZmb2xkIHZpZXdlci4KICoKICogQHJlcXVpcmVzIC4vUHJpbWl0dmVDb250cm9scy52dWUKICogQHJlcXVpcmVzIC4vVHJlZUNvbnRyb2xzLnZ1ZQogKi8KZXhwb3J0IGRlZmF1bHQgewogIG5hbWU6ICJTY2FmZm9sZFZ1ZXIiLAogIGNvbXBvbmVudHM6IHsKICAgIE1hcFN2Z0ljb246IE1hcFN2Z0ljb24sCiAgICBNYXBTdmdTcHJpdGVDb2xvcjogTWFwU3ZnU3ByaXRlQ29sb3IsCiAgICBQcmltaXRpdmVDb250cm9sczogUHJpbWl0aXZlQ29udHJvbHMsCiAgICBTY2FmZm9sZFRvb2x0aXA6IFNjYWZmb2xkVG9vbHRpcCwKICAgIFRyZWVDb250cm9sczogVHJlZUNvbnRyb2xzCiAgfSwKICBwcm9wczogewogICAgLyoqCiAgICAgKiBVUkwgb2YgdGhlIHppbmNqcyBtZXRhZGF0YS4gVGhpcyB2YWx1ZSB3aWxsIGJlIGlnbm9yZWQgaWYgYSB2YWxpZAogICAgICogc3RhdGUgcHJvcCBpcyBhbHNvIHByb3ZpZGVkLgogICAgICogSWYgdGhlIHVybCBuZWVkcyB0byBiZSB1cGRhdGVkIHdpdGggc3RhdGUgcHJlc2VudCwgcGxlYXNlIHVzZQogICAgICogdGhlIHNldFVSTCBtZXRob2QuCiAgICAgKi8KICAgIHVybDogewogICAgICB0eXBlOiBTdHJpbmcsCiAgICAgIGRlZmF1bHQ6ICIiCiAgICB9LAogICAgLyoqCiAgICAgKiBTaG93IHRoZSBjb2xvdXIgY29udHJvbCBvZiBzZXQgdG8gdHJ1ZS4KICAgICAqLwogICAgc2hvd0NvbG91clBpY2tlcjogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiBmYWxzZQogICAgfSwKICAgIC8qKgogICAgICogRmxhZyB0byBzaG93L2hpZGUgdGhlIFVJLgogICAgICovCiAgICBkaXNwbGF5VUk6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogdHJ1ZQogICAgfSwKICAgIC8qKgogICAgICogRGlzcGxheSBhbGwgZ3JhcGhpY3MgYXQgc3RhcnQuCiAgICAgKgogICAgICogVGhpcyBzZXR0aW5nIG9ubHkgd29ya3Mgd2hlbiB0cmFkaXRpb25hbCBpcyBzZXQgdG8gZmFsc2UuCiAgICAgKi8KICAgIGRpc3BsYXlBdFN0YXJ0VXA6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogdHJ1ZQogICAgfSwKICAgIC8qKgogICAgICogVXNlIGZvciB0b2dnbGluZyB0aGUgaGVscCB0b29sdGlwcy4KICAgICAqLwogICAgaGVscE1vZGU6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogZmFsc2UKICAgIH0sCiAgICAvKioKICAgICAqIFVzZSBmb3Igc2hvdy9kaXNwbGF5IGJldGEgd2FybmluZyBpY29uLgogICAgICovCiAgICBkaXNwbGF5V2FybmluZzogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiB0cnVlCiAgICB9LAogICAgLyoqCiAgICAgKiBXYXJuaW5nIG1lc3NhZ2UgZm9yIHRoZSBob3ZlcmVkIG92ZXIgdGV4dAogICAgICogb24gdGhlIHdhcm5pbmcgaWNvbi4KICAgICAqLwogICAgd2FybmluZ01lc3NhZ2U6IHsKICAgICAgdHlwZTogU3RyaW5nLAogICAgICBkZWZhdWx0OiAiQmV0YSBmZWF0dXJlIC0gdW5kZXIgYWN0aXZlIGRldmVsb3BtZW50IgogICAgfSwKICAgIGRpc3BsYXlMYXRlc3RDaGFuZ2VzOiB7CiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IGZhbHNlCiAgICB9LAogICAgbGF0ZXN0Q2hhbmdlc01lc3NhZ2U6IHsKICAgICAgdHlwZTogU3RyaW5nLAogICAgICBkZWZhdWx0OiAiTmV3IGZlYXR1cmUgLSBMb2NhbCBzZWFyY2ggaXMgbm93IGF2YWlsYWJsZSIKICAgIH0sCiAgICAvKioKICAgICAqIFNob3cvaGlkZSBwaWNrYWJsZSBtYXJrZXJzIGZvciByZWdpb25zLgogICAgICovCiAgICBkaXNwbGF5TWFya2VyczogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiBmYWxzZQogICAgfSwKICAgIG1hcmtlckxhYmVsczogewogICAgICB0eXBlOiBBcnJheSwKICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7CiAgICAgICAgcmV0dXJuIFtdOwogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBTaG93L2hpZGUgbWluaW1hcC4KICAgICAqLwogICAgZGlzcGxheU1pbmltYXA6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogZmFsc2UKICAgIH0sCiAgICAvKioKICAgICAqIEZvcm1hdCBvZiB0aGUgaW5wdXQgVVJMCiAgICAgKi8KICAgIGZvcm1hdDogewogICAgICB0eXBlOiBTdHJpbmcsCiAgICAgIGRlZmF1bHQ6ICJtZXRhZGF0YSIKICAgIH0sCiAgICAvKioKICAgICAqIFNldHRpbmdzIGZvciBtaW5pbWFwIHBvc2l0aW9uLCBzaXplIGFuZCBhbGlnbm1lbnQuCiAgICAgKi8KICAgIG1pbmltYXBTZXR0aW5nczogewogICAgICB0eXBlOiBPYmplY3QsCiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICB4X29mZnNldDogMTYsCiAgICAgICAgICB5X29mZnNldDogMTYsCiAgICAgICAgICB3aWR0aDogMTI4LAogICAgICAgICAgaGVpZ2h0OiAxMjgsCiAgICAgICAgICBhbGlnbjogInRvcC1yaWdodCIKICAgICAgICB9OwogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBGbGFnIHRvIGRldGVybWluZSByYXRoZXIgb3BlbiBtYXAgVUkgc2hvdWxkIGJlCiAgICAgKiBwcmVzZW50ZWQgb3Igbm90LgogICAgICovCiAgICBlbmFibGVPcGVuTWFwVUk6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogZmFsc2UKICAgIH0sCiAgICBvcGVuTWFwT3B0aW9uczogewogICAgICB0eXBlOiBBcnJheSwKICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7CiAgICAgICAgcmV0dXJuIFt7CiAgICAgICAgICBkaXNwbGF5OiAiT3BlbiBBQyBNYXAiLAogICAgICAgICAga2V5OiAiQUMiCiAgICAgICAgfSwgewogICAgICAgICAgZGlzcGxheTogIk9wZW4gRkMgTWFwIiwKICAgICAgICAgIGtleTogIkZDIgogICAgICAgIH0sIHsKICAgICAgICAgIGRpc3BsYXk6ICJPcGVuIDNEIEh1bWFuIE1hcCIsCiAgICAgICAgICBrZXk6ICIzRCIKICAgICAgICB9XTsKICAgICAgfQogICAgfSwKICAgIC8qKgogICAgICogU3RhdGUgY29udGFpbmluZyBzdGF0ZSBvZiB0aGUgc2NhZmZvbGQuCiAgICAgKi8KICAgIHN0YXRlOiB7CiAgICAgIHR5cGU6IE9iamVjdCwKICAgICAgZGVmYXVsdDogdW5kZWZpbmVkCiAgICB9LAogICAgLyoqCiAgICAgKiBPcHRpb25hbCBwcm9wIGZvciB0aGUgbmFtZSBvZiB0aGUgcmVnaW9uIHRvIGZvY3VzIG9uLAogICAgICogdGhpcyBvcHRpb24gaXMgaWdub3JlZCBpZiBzdGF0ZSBvciB2aWV3VVJMIGlzIGFsc28gcHJvdmlkZWQuCiAgICAgKi8KICAgIHJlZ2lvbjogewogICAgICB0eXBlOiBTdHJpbmcsCiAgICAgIGRlZmF1bHQ6ICIiCiAgICB9LAogICAgLyoqCiAgICAgKiBPcHRpb25hbCBwcm9wIGZvciBhbiBVUkwgb2YgY29udGFpbmluZyBpbmZvcm1hdGlvbiBvZiBhIHZpZXdwb3J0LgogICAgICogVGhpcyBvcHRpb24gaXMgaWdub3JlZCBpZiBzdGF0ZSBpcyBhbHNvIHByb3ZpZGVkLgogICAgICogSXQgd2lsbCB1c2UgdGhlIHByb3ZpZGVkIFVSTCBhcyBiYXNlIGlmIGEgcmVsYXRpdmUgcGFydGggaXMgcHJvdmlkZWQuCiAgICAgKi8KICAgIHZpZXdVUkw6IHsKICAgICAgdHlwZTogU3RyaW5nLAogICAgICBkZWZhdWx0OiAiIgogICAgfSwKICAgIC8qKgogICAgICogU2V0dGluZ3MgZm9yIHR1cm5pbmcgb24vb2ZmIHJlbmRlcmluZwogICAgICovCiAgICByZW5kZXI6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogdHJ1ZQogICAgfSwKICAgIC8qKgogICAgICogU3BlY2lmeSB0aGUgZW5kcG9pbnQgb2YgdGhlIGZsYXRtYXAgc2VydmVyLgogICAgICogVGhpcyBpcyB1c2VkIGJ5IGFubm90YXRpb24gc2VydmljZSBpbmNsdWRlZCBpbgogICAgICogdGhpcmQgcGFydHkgZmxhdG1hcHZ1ZXIgbGlicmFyeS4KICAgICAqLwogICAgZmxhdG1hcEFQSTogewogICAgICB0eXBlOiBTdHJpbmcsCiAgICAgIGRlZmF1bHQ6ICJodHRwczovL21hcGNvcmUtZGVtby5vcmcvY3VycmVudC9mbGF0bWFwL3YzLyIKICAgIH0KICB9LAogIHByb3ZpZGU6IGZ1bmN0aW9uIHByb3ZpZGUoKSB7CiAgICByZXR1cm4gewogICAgICBmbGF0bWFwQVBJOiB0aGlzLmZsYXRtYXBBUEksCiAgICAgIHNjYWZmb2xkVXJsOiB0aGlzLnVybAogICAgfTsKICB9LAogIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7CiAgICByZXR1cm4gewogICAgICBzY2VuZURhdGE6IHRoaXMuJG1vZHVsZS5zY2VuZURhdGEsCiAgICAgIGlzUGxheWluZzogZmFsc2UsCiAgICAgIGlzUmVhZHk6IGZhbHNlLAogICAgICAvKioKICAgICAgICogVGhpcyBpcyBzZXQgd2hlbiBzY2VuZSBpcyB0cmFuc2l0aW9uaW5nLgogICAgICAgKi8KICAgICAgaXNUcmFuc2l0aW9uaW5nOiBmYWxzZSwKICAgICAgdG9vbHRpcEFwcGVuZFRvQm9keTogZmFsc2UsCiAgICAgIGhvdmVyVmlzaWJpbGl0aWVzOiBbewogICAgICAgIHZhbHVlOiBmYWxzZQogICAgICB9LCB7CiAgICAgICAgdmFsdWU6IGZhbHNlCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogZmFsc2UKICAgICAgfSwgewogICAgICAgIHZhbHVlOiBmYWxzZQogICAgICB9LCB7CiAgICAgICAgdmFsdWU6IGZhbHNlCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogZmFsc2UKICAgICAgfSwgewogICAgICAgIHZhbHVlOiBmYWxzZQogICAgICB9LCB7CiAgICAgICAgdmFsdWU6IGZhbHNlCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogZmFsc2UKICAgICAgfV0sCiAgICAgIGluSGVscDogZmFsc2UsCiAgICAgIGxvYWRpbmc6IGZhbHNlLAogICAgICBkdXJhdGlvbjogMzAwMCwKICAgICAgZHJhd2VyT3BlbjogdHJ1ZSwKICAgICAgY3VycmVudEJhY2tncm91bmQ6ICJ3aGl0ZSIsCiAgICAgIGF2YWlsYWJsZUJhY2tncm91bmQ6IFsid2hpdGUiLCAibGlnaHRza3libHVlIiwgImJsYWNrIl0sCiAgICAgIG1pbmltaXNlZFNsaWRlcjogZmFsc2UsCiAgICAgIHNsaWRlclBvc2l0aW9uOiAiIiwKICAgICAgdGltZU1heDogMTAwLAogICAgICBvcmdpbmFsRHVyYXRpb246ICIiLAogICAgICBhbmltYXRlRHVyYXRpb246ICI2c2VjcyIsCiAgICAgIHBsYXlTcGVlZDogW3sKICAgICAgICB2YWx1ZTogMC4xLAogICAgICAgIGxhYmVsOiAiMC4xeCIKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAwLjUsCiAgICAgICAgbGFiZWw6ICIwLjV4IgogICAgICB9LCB7CiAgICAgICAgdmFsdWU6IDEsCiAgICAgICAgbGFiZWw6ICIxeCIKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAyLAogICAgICAgIGxhYmVsOiAiMngiCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogNSwKICAgICAgICBsYWJlbDogIjV4IgogICAgICB9LCB7CiAgICAgICAgdmFsdWU6IDEwLAogICAgICAgIGxhYmVsOiAiMTB4IgogICAgICB9XSwKICAgICAgY3VycmVudFNwZWVkOiAxLAogICAgICB0aW1lU3RhbXBzOiB7fSwKICAgICAgZGVmYXVsdENoZWNrZWRLZXlzOiBbXSwKICAgICAgdERhdGE6IHsKICAgICAgICBsYWJlbDogIiIsCiAgICAgICAgcmVnaW9uOiAiIiwKICAgICAgICB2aXNpYmxlOiBmYWxzZSwKICAgICAgICB4OiAyMDAsCiAgICAgICAgeTogMjAwLAogICAgICAgIGFjdGl2ZTogZmFsc2UKICAgICAgfSwKICAgICAgZmlsZUZvcm1hdDogIm1ldGFkYXRhIiwKICAgICAgcHJldmlvdXNNYXJrZXJMYWJlbHM6IFtdLAogICAgICB2aWV3aW5nTW9kZTogIkV4cGxvcmF0aW9uIiwKICAgICAgdmlld2luZ01vZGVzOiBbIkFubm90YXRpb24iLCAiRXhwbG9yYXRpb24iXQogICAgfTsKICB9LAogIHdhdGNoOiB7CiAgICBmb3JtYXQ6IHsKICAgICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcih2YWx1ZSkgewogICAgICAgIHRoaXMuZmlsZUZvcm1hdCA9IHZhbHVlOwogICAgICB9LAogICAgICBpbW1lZGlhdGU6IHRydWUKICAgIH0sCiAgICB1cmw6IHsKICAgICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihuZXdWYWx1ZSkgewogICAgICAgIGlmICh0aGlzLnN0YXRlID09PSB1bmRlZmluZWQgfHwgdGhpcy5zdGF0ZS51cmwgPT09IHVuZGVmaW5lZCkgdGhpcy5zZXRVUkwobmV3VmFsdWUpOwogICAgICB9LAogICAgICBpbW1lZGlhdGU6IHRydWUKICAgIH0sCiAgICByZWdpb246IHsKICAgICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihyZWdpb24pIHsKICAgICAgICBpZiAoISh0aGlzLnN0YXRlIHx8IHRoaXMudmlld1VSTCkpIHRoaXMuc2V0Rm9jdXNlZFJlZ2lvbihyZWdpb24pOwogICAgICB9LAogICAgICBpbW1lZGlhdGU6IHRydWUKICAgIH0sCiAgICBzdGF0ZTogewogICAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKHN0YXRlKSB7CiAgICAgICAgdGhpcy5zZXRTdGF0ZShzdGF0ZSk7CiAgICAgIH0sCiAgICAgIGltbWVkaWF0ZTogdHJ1ZSwKICAgICAgZGVlcDogdHJ1ZQogICAgfSwKICAgIHZpZXdVUkw6IHsKICAgICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcih2aWV3VVJMKSB7CiAgICAgICAgdGhpcy51cGRhdGVWaWV3VVJMKHZpZXdVUkwpOwogICAgICB9LAogICAgICBpbW1lZGlhdGU6IHRydWUKICAgIH0sCiAgICBoZWxwTW9kZTogZnVuY3Rpb24gaGVscE1vZGUodmFsKSB7CiAgICAgIHRoaXMuc2V0SGVscE1vZGUodmFsKTsKICAgIH0sCiAgICBkaXNwbGF5TWFya2VyczogZnVuY3Rpb24gZGlzcGxheU1hcmtlcnModmFsKSB7CiAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5kaXNwbGF5TWFya2VycyA9IHZhbDsKICAgICAgLy9VcGRhdGUgcGlja2FibGUgb2JqZWN0cwogICAgICB0aGlzLiRtb2R1bGUuc2NlbmUuZm9yY2VQaWNrYWJsZU9iamVjdHNVcGRhdGUgPSB0cnVlOwogICAgfSwKICAgIGRpc3BsYXlNaW5pbWFwOiBmdW5jdGlvbiBkaXNwbGF5TWluaW1hcCh2YWwpIHsKICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLmRpc3BsYXlNaW5pbWFwID0gdmFsOwogICAgfSwKICAgICJzY2VuZURhdGEuY3VycmVudFRpbWUiOiBmdW5jdGlvbiBzY2VuZURhdGFDdXJyZW50VGltZSgpIHsKICAgICAgLyoqCiAgICAgICAqIFRyaWdnZXJzIHdoZW4gc2NlbmUgdGltZSBjaGFuZ2VzLgogICAgICAgKgogICAgICAgKiBAcHJvcGVydHkge251bWJlcn0gdGltZSBDdXJyZW50IGJ1aWxkLWluIHRpbWUgb2Ygc2NlbmUuCiAgICAgICAqIG9mIHNlbGVjdGVkIG9iamVjdC4KICAgICAgICovCiAgICAgIHRoaXMuJGVtaXQoInRpbWVDaGFuZ2VkIiwgdGhpcy5zY2VuZURhdGEuY3VycmVudFRpbWUpOwogICAgfSwKICAgIGR1cmF0aW9uOiBmdW5jdGlvbiBkdXJhdGlvbigpIHsKICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLnNldER1cmF0aW9uKHRoaXMuZHVyYXRpb24pOwogICAgfSwKICAgIG1pbmltYXBTZXR0aW5nczogewogICAgICBkZWVwOiB0cnVlLAogICAgICBoYW5kbGVyOiAidXBkYXRlTWluaW1hcFNjaXNzb3IiCiAgICB9LAogICAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIodmFsKSB7CiAgICAgIHRoaXMudG9nZ2xlUmVuZGVyaW5nKHZhbCk7CiAgICB9LAogICAgbWFya2VyTGFiZWxzOiBmdW5jdGlvbiBtYXJrZXJMYWJlbHMobGFiZWxzKSB7CiAgICAgIHZhciBfdGhpcyA9IHRoaXM7CiAgICAgIHRoaXMucHJldmlvdXNNYXJrZXJMYWJlbHMuZm9yRWFjaChmdW5jdGlvbiAocG1sKSB7CiAgICAgICAgX3RoaXMuc2V0TWFya2VyTW9kZUZvck9iamVjdHNXaXRoTmFtZShwbWwsICJvZmYiKTsKICAgICAgfSk7CiAgICAgIGxhYmVscy5mb3JFYWNoKGZ1bmN0aW9uIChsKSB7CiAgICAgICAgX3RoaXMuc2V0TWFya2VyTW9kZUZvck9iamVjdHNXaXRoTmFtZShsLCAib24iKTsKICAgICAgfSk7CiAgICAgIHRoaXMucHJldmlvdXNNYXJrZXJMYWJlbHMgPSBsYWJlbHM7CiAgICB9CiAgfSwKICBiZWZvcmVDcmVhdGU6IGZ1bmN0aW9uIGJlZm9yZUNyZWF0ZSgpIHsKICAgIHRoaXMuJG1vZHVsZSA9IG5ldyBPcmdhbnNWaWV3ZXIoKTsKICAgIHRoaXMuc2VsZWN0ZWRPYmplY3RzID0gW107CiAgICB0aGlzLmhvdmVyZWRPYmplY3RzID0gW107CiAgICB0aGlzLmN1cnJlbnRCYWNrZ3JvdW5kID0gIndoaXRlIjsKICAgIHRoaXMuX2N1cnJlbnRVUkwgPSB1bmRlZmluZWQ7CiAgICB0aGlzLmF2YWlsYWJsZUJhY2tncm91bmQgPSBbIndoaXRlIiwgImJsYWNrIiwgImxpZ2h0c2t5Ymx1ZSJdOwogICAgdGhpcy4kX3NlYXJjaEluZGV4ID0gbmV3IFNlYXJjaEluZGV4KCk7CiAgfSwKICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkgewogICAgdGhpcy4kcmVmcy50cmVlQ29udHJvbHMuc2V0TW9kdWxlKHRoaXMuJG1vZHVsZSk7CiAgICB2YXIgZXZlbnROb3RpZmllciA9IG5ldyBFdmVudE5vdGlmaWVyKCk7CiAgICBldmVudE5vdGlmaWVyLnN1YnNjcmliZSh0aGlzLCB0aGlzLmV2ZW50Tm90aWZpZXJDYWxsYmFjayk7CiAgICB0aGlzLiRtb2R1bGUuYWRkTm90aWZpZXIoZXZlbnROb3RpZmllcik7CiAgICB0aGlzLiRtb2R1bGUuYWRkT3JnYW5QYXJ0QWRkZWRDYWxsYmFjayh0aGlzLnppbmNPYmplY3RBZGRlZCk7CiAgICB0aGlzLiRtb2R1bGUuaW5pdGlhbGlzZVJlbmRlcmVyKHRoaXMuJHJlZnMuZGlzcGxheSk7CiAgICB0aGlzLnRvZ2dsZVJlbmRlcmluZyh0aGlzLnJlbmRlcik7CiAgICB0aGlzLnJvID0gbmV3IFJlc2l6ZU9ic2VydmVyKHRoaXMuYWRqdXN0TGF5b3V0KS5vYnNlcnZlKHRoaXMuJHJlZnMuc2NhZmZvbGRDb250YWluZXIpOwogICAgdGhpcy5kZWZhdWx0UmF0ZSA9IHRoaXMuJG1vZHVsZS5nZXRQbGF5UmF0ZSgpOwogIH0sCiAgYmVmb3JlRGVzdHJveTogZnVuY3Rpb24gYmVmb3JlRGVzdHJveSgpIHsKICAgIGlmICh0aGlzLnJvKSB0aGlzLnJvLmRpc2Nvbm5lY3QoKTsKICAgIHRoaXMuJG1vZHVsZS5kZXN0cm95KCk7CiAgICB0aGlzLiRtb2R1bGUgPSB1bmRlZmluZWQ7CiAgfSwKICBtZXRob2RzOiB7CiAgICBhZGRaaW5jT2JqZWN0OiBmdW5jdGlvbiBhZGRaaW5jT2JqZWN0KHppbmNPYmplY3QpIHsKICAgICAgaWYgKHRoaXMuJG1vZHVsZS5zY2VuZSkgewogICAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5hZGRaaW5jT2JqZWN0KHppbmNPYmplY3QpOwogICAgICAgIHRoaXMuemluY09iamVjdEFkZGVkKHppbmNPYmplY3QpOwogICAgICAgIGlmICh0aGlzLiRyZWZzLnRyZWVDb250cm9scykgdGhpcy4kcmVmcy50cmVlQ29udHJvbHMuemluY09iamVjdEFkZGVkKHppbmNPYmplY3QpOwogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBUaGlzIGlzIGNhbGxlZCB3aGVuIGEgbmV3IHppbmMgb2JqZWN0IGlzIHJlYWQgaW50byB0aGUgc2NlbmUuCiAgICAgKi8KICAgIHppbmNPYmplY3RBZGRlZDogZnVuY3Rpb24gemluY09iamVjdEFkZGVkKHppbmNPYmplY3QpIHsKICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7CiAgICAgIHRoaXMuJF9zZWFyY2hJbmRleC5hZGRaaW5jT2JqZWN0KHppbmNPYmplY3QsIHppbmNPYmplY3QudXVpZCk7CiAgICAgIHRoaXMuJGVtaXQoInppbmMtb2JqZWN0LWFkZGVkIiwgemluY09iamVjdCk7CiAgICB9LAogICAgLyoqCiAgICAgKiAKICAgICAqLwogICAgYWRkUmVnaW9uc1RvU2VhcmNoSW5kZXg6IGZ1bmN0aW9uIGFkZFJlZ2lvbnNUb1NlYXJjaEluZGV4KCkgewogICAgICB2YXIgX3RoaXMyID0gdGhpczsKICAgICAgdmFyIHJvb3RSZWdpb24gPSB0aGlzLiRtb2R1bGUuc2NlbmUuZ2V0Um9vdFJlZ2lvbigpOwogICAgICB2YXIgcmVnaW9ucyA9IHJvb3RSZWdpb24uZ2V0Q2hpbGRSZWdpb25zKHRydWUpOwogICAgICByZWdpb25zLmZvckVhY2goZnVuY3Rpb24gKHJlZ2lvbikgewogICAgICAgIF90aGlzMi4kX3NlYXJjaEluZGV4LmFkZFJlZ2lvbihyZWdpb24sIHJlZ2lvbi51dWlkKTsKICAgICAgfSk7CiAgICB9LAogICAgLyoqCiAgICAgKiBUaGlzIGlzIGNhbGxlZCB3aGVuIENoYW5nZSBiYWNrZ3NwZWVkcm91bmQgY29sb3VyIGJ1dHRvbgogICAgICogaXMgcHJlc3NlZCBhbiBjYXVzZXMgdGhlIGJhY2tncm91Q29sb3JuZCBjb2xvdXIgdG8gYmUgY2hhbmdlZAogICAgICogdG8gb25lIG9mIHRoZSB0aHJlZSBwcmVzZXQgY29sb3VyOiB3aGl0ZSwgYmxhY2sgYW5kCiAgICAgKiBsaWdodHNreWJsdWUuCiAgICAgKi8KICAgIGJhY2tncm91bmRDaGFuZ2VDYWxsYmFjazogZnVuY3Rpb24gYmFja2dyb3VuZENoYW5nZUNhbGxiYWNrKGNvbG91cikgewogICAgICB0aGlzLmN1cnJlbnRCYWNrZ3JvdW5kID0gY29sb3VyOwogICAgICB0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyLmdldFRocmVlSlNSZW5kZXJlcigpLnNldENsZWFyQ29sb3IodGhpcy5jdXJyZW50QmFja2dyb3VuZCwgMSk7CiAgICB9LAogICAgLyoqCiAgICAgKiBUaGlzIGlzIGNhbGxlZCBieSBjYXB0dWVlU2NyZWVuc2hvdCBhbmQgYWZ0ZXIgdGhlIGxhc3QgcmVuZGVyCiAgICAgKiBsb29wLCBpdCBkb3dubG9hZCBhIHNjcmVlbnNob3Qgb2YgdGhlIGN1cnJlbnQgc2NlbmUgd2l0aCBubyBVSS4KICAgICAqLwogICAgY2FwdHVyZVNjcmVlbnNob3RDYWxsYmFjazogZnVuY3Rpb24gY2FwdHVyZVNjcmVlbnNob3RDYWxsYmFjaygpIHsKICAgICAgLy9SZW1vdmUgdGhlIGNhbGxiYWNrLCBvbmx5IG5lZWRzIHRvIGhhcHBlbiBvbmNlCiAgICAgIHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIucmVtb3ZlUG9zdFJlbmRlckNhbGxiYWNrRnVuY3Rpb24odGhpcy5jYXB0dXJlSUQpOwogICAgICB2YXIgc2NyZWVuc2hvdCA9IHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIuZ2V0VGhyZWVKU1JlbmRlcmVyKCkuZG9tRWxlbWVudC50b0RhdGFVUkwoImltYWdlL3BuZyIpOwogICAgICB2YXIgaHJlZkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7CiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kKGhyZWZFbGVtZW50KTsKICAgICAgaWYgKCF0aGlzLmNhcHR1cmVGaWxlbmFtZSkgaHJlZkVsZW1lbnQuZG93bmxvYWQgPSAic2NyZWVuc2hvdC5wbmciO2Vsc2UgaHJlZkVsZW1lbnQuZG93bmxvYWQgPSB0aGlzLmNhcHR1cmVGaWxlbmFtZTsKICAgICAgaHJlZkVsZW1lbnQuaHJlZiA9IHNjcmVlbnNob3Q7CiAgICAgIGhyZWZFbGVtZW50LmNsaWNrKCk7CiAgICAgIGhyZWZFbGVtZW50LnJlbW92ZSgpOwogICAgfSwKICAgIC8qKgogICAgICogRnVuY3Rpb24gZm9yIGNhcHR1cmluZyBhIHNjcmVlbnNob3Qgb2YgdGhlIGN1cnJlbnQgcmVuZGVyaW5nLgogICAgICoKICAgICAqIEBwYXJhbSB7U3RyaW5nfSBmaWxlbmFtZSBmaWxlbmFtZSBnaXZlbiB0byB0aGUgc2NyZWVuc2hvdC4KICAgICAqCiAgICAgKiBAcHVibGljCiAgICAgKi8KICAgIGNhcHR1cmVTY3JlZW5zaG90OiBmdW5jdGlvbiBjYXB0dXJlU2NyZWVuc2hvdChmaWxlbmFtZSkgewogICAgICB0aGlzLmNhcHR1cmVGaWxlbmFtZSA9IGZpbGVuYW1lOwogICAgICB0aGlzLmNhcHR1cmVJRCA9IHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIuYWRkUG9zdFJlbmRlckNhbGxiYWNrRnVuY3Rpb24odGhpcy5jYXB0dXJlU2NyZWVuc2hvdENhbGxiYWNrKTsKICAgIH0sCiAgICAvKioKICAgICAqIEZ1bmN0aW9uIHRvIGNsZWFyIGN1cnJlbnQgc2NlbmUsIHRoZSB0cmVlIGNvbnRyb2xzIGFuZCB0aGUgc2VhcmNoIGluZGV4LgogICAgICoKICAgICAqIEBwdWJsaWMKICAgICAqLwogICAgY2xlYXJTY2VuZTogZnVuY3Rpb24gY2xlYXJTY2VuZSgpIHsKICAgICAgaWYgKHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzKSB0aGlzLiRyZWZzLnRyZWVDb250cm9scy5jbGVhcigpOwogICAgICBpZiAodGhpcy4kX3NlYXJjaEluZGV4KSB0aGlzLiRfc2VhcmNoSW5kZXgucmVtb3ZlQWxsKCk7CiAgICAgIGlmICh0aGlzLiRtb2R1bGUuc2NlbmUpIHRoaXMuJG1vZHVsZS5zY2VuZS5jbGVhckFsbCgpOwogICAgfSwKICAgIGZvcm1hdFRvb2x0aXA6IGZ1bmN0aW9uIGZvcm1hdFRvb2x0aXAodmFsKSB7CiAgICAgIGlmICh0aGlzLnRpbWVNYXggPj0gMTAwMCkgewogICAgICAgIGlmICh2YWwpIHsKICAgICAgICAgIHZhciBzZWMgPSAodmFsICUgNjAwMDAgLyAxMDAwKS50b0ZpeGVkKDIpICsgInMiOwogICAgICAgICAgdmFyIG1pbiA9IHZhbCA+IDYwMDAwID8gKHZhbCAvIDYwMDAwKS50b0ZpeGVkKDApICsgIm0gIiA6ICIiOwogICAgICAgICAgcmV0dXJuIG1pbiArIHNlYzsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIHZhbCA/IHZhbC50b0ZpeGVkKDIpICsgIiBtcyIgOiAiMCBtcyI7CiAgICB9LAogICAgLyoqCiAgICAgKiBGdW5jdGlvbiB0byByZXNldCB0aGUgdmlldyB0byBkZWZhdWx0LgogICAgICogQWxzbyBjYWxsZWQgd2hlbiB0aGUgYXNzb2NpYXRlZCBidXR0b24gaXMgcHJlc3NlZC4KICAgICAqCiAgICAgKiBAcHVibGljCiAgICAgKi8KICAgIGZpdFdpbmRvdzogZnVuY3Rpb24gZml0V2luZG93KCkgewogICAgICBpZiAodGhpcy4kbW9kdWxlLnNjZW5lKSB7CiAgICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLnZpZXdBbGwoKTsKICAgICAgfQogICAgfSwKICAgIC8qKgogICAgICogRnVuY3Rpb24gdG8gem9vbSBpbi4KICAgICAqIEFsc28gY2FsbGVkIHdoZW4gdGhlIGFzc29jaWF0ZWQgYnV0dG9uIGlzIHByZXNzZWQuCiAgICAgKgogICAgICogQHB1YmxpYwogICAgICovCiAgICB6b29tSW46IGZ1bmN0aW9uIHpvb21JbigpIHsKICAgICAgaWYgKHRoaXMuJG1vZHVsZS5zY2VuZSkgewogICAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5jaGFuZ2Vab29tQnlTY3JvbGxSYXRlVW5pdCgtMSk7CiAgICAgIH0KICAgIH0sCiAgICAvKioKICAgICAqIEZ1bmN0aW9uIHRvIHpvb20gb3V0LgogICAgICogQWxzbyBjYWxsZWQgd2hlbiB0aGUgYXNzb2NpYXRlZCBidXR0b24gaXMgcHJlc3NlZC4KICAgICAqCiAgICAgKiBAcHVibGljCiAgICAgKi8KICAgIHpvb21PdXQ6IGZ1bmN0aW9uIHpvb21PdXQoKSB7CiAgICAgIGlmICh0aGlzLiRtb2R1bGUuc2NlbmUpIHsKICAgICAgICB0aGlzLiRtb2R1bGUuc2NlbmUuY2hhbmdlWm9vbUJ5U2Nyb2xsUmF0ZVVuaXQoMSk7CiAgICAgIH0KICAgIH0sCiAgICAvKioKICAgICAqIEZ1bmN0aW9uIHRvIGNoYW5nZSB0aGUgY3VycmVudCBwbGF5IHNwZWVkLgogICAgICoKICAgICAqIEBwdWJsaWMKICAgICAqLwogICAgc3BlZWRDaGFuZ2VkOiBmdW5jdGlvbiBzcGVlZENoYW5nZWQoc3BlZWQpIHsKICAgICAgdGhpcy5jdXJyZW50U3BlZWQgPSBzcGVlZDsKICAgICAgdGhpcy4kbW9kdWxlLnNldFBsYXlSYXRlKHRoaXMuZGVmYXVsdFJhdGUgKiB0aGlzLmN1cnJlbnRTcGVlZCk7CiAgICB9LAogICAgLyoqCiAgICAgKiBGdW5jdGlvbiB1c2VkIHRvIHN0b3AgdGhlIGZyZWUgc3BpbgogICAgICoKICAgICAqIEBwdWJsaWMKICAgICAqLwogICAgc3RvcEZyZWVTcGluOiBmdW5jdGlvbiBzdG9wRnJlZVNwaW4oKSB7CiAgICAgIHZhciBjYW1lcmFjb250cm9sID0gdGhpcy4kbW9kdWxlLnNjZW5lLmdldFppbmNDYW1lcmFDb250cm9scygpOwogICAgICBjYW1lcmFjb250cm9sLnN0b3BBdXRvVHVtYmxlKCk7CiAgICAgIHRoaXMuaXNUcmFuc2l0aW9uaW5nID0gZmFsc2U7CiAgICB9LAogICAgZmluZE9iamVjdHNXaXRoR3JvdXBOYW1lOiBmdW5jdGlvbiBmaW5kT2JqZWN0c1dpdGhHcm91cE5hbWUobmFtZSkgewogICAgICB2YXIgb2JqZWN0cyA9IFtdOwogICAgICBpZiAobmFtZSAmJiBuYW1lICE9ICIiICYmIHRoaXMuJG1vZHVsZS5zY2VuZSkgewogICAgICAgIG9iamVjdHMgPSB0aGlzLiRtb2R1bGUuc2NlbmUuZmluZE9iamVjdHNXaXRoR3JvdXBOYW1lKG5hbWUpOwogICAgICB9CiAgICAgIHJldHVybiBvYmplY3RzOwogICAgfSwKICAgIC8qKgogICAgICogRm9jdXMgb24gbmFtZWQgcmVnaW9uCiAgICAgKi8KICAgIHZpZXdSZWdpb246IGZ1bmN0aW9uIHZpZXdSZWdpb24obmFtZXMpIHsKICAgICAgdmFyIHJvb3RSZWdpb24gPSB0aGlzLiRtb2R1bGUuc2NlbmUuZ2V0Um9vdFJlZ2lvbigpOwogICAgICB2YXIgZ3JvdXBzID0gQXJyYXkuaXNBcnJheShuYW1lcykgPyBuYW1lcyA6IFtuYW1lc107CiAgICAgIHZhciBvYmplY3RzID0gZmluZE9iamVjdHNXaXRoTmFtZXMocm9vdFJlZ2lvbiwgZ3JvdXBzLCAiIiwgdHJ1ZSk7CiAgICAgIHZhciBib3ggPSB0aGlzLiRtb2R1bGUuc2NlbmUuZ2V0Qm91bmRpbmdCb3hPZlppbmNPYmplY3RzKG9iamVjdHMpOwogICAgICBpZiAoYm94KSB7CiAgICAgICAgaWYgKHRoaXMuJG1vZHVsZS5pc1N5bmNDb250cm9sKCkpIHsKICAgICAgICAgIHRoaXMuJG1vZHVsZS5zZXRTeW5jQ29udHJvbFpvb21Ub0JveChib3gpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB2YXIgZGlzdCA9IHRoaXMuJG1vZHVsZS5zY2VuZS5jYW1lcmEuZmFyIC0gdGhpcy4kbW9kdWxlLnNjZW5lLmNhbWVyYS5uZWFyOwogICAgICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLnZpZXdBbGxXaXRoQm91bmRpbmdCb3goYm94KTsKICAgICAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5jYW1lcmEuZmFyID0gdGhpcy4kbW9kdWxlLnNjZW5lLmNhbWVyYS5uZWFyICsgZGlzdDsKICAgICAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5jYW1lcmEudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgfQogICAgICByZXR1cm4gZmFsc2U7CiAgICB9LAogICAgc2V0Rm9jdXNlZFJlZ2lvbjogZnVuY3Rpb24gc2V0Rm9jdXNlZFJlZ2lvbihuYW1lKSB7CiAgICAgIGlmIChuYW1lKSB7CiAgICAgICAgaWYgKHRoaXMuaXNSZWFkeSkgewogICAgICAgICAgdGhpcy52aWV3UmVnaW9uKG5hbWUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0aGlzLiRtb2R1bGUuc2V0RmluaXNoRG93bmxvYWRDYWxsYmFjayh0aGlzLnNldFVSTEZpbmlzaENhbGxiYWNrKHsKICAgICAgICAgICAgcmVnaW9uOiBuYW1lCiAgICAgICAgICB9KSk7CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgdXBkYXRlVmlld1VSTDogZnVuY3Rpb24gdXBkYXRlVmlld1VSTCh2aWV3VVJMKSB7CiAgICAgIGlmICh2aWV3VVJMKSB7CiAgICAgICAgaWYgKHRoaXMuaXNSZWFkeSkgewogICAgICAgICAgdmFyIHVybCA9IG5ldyBVUkwodmlld1VSTCwgdGhpcy51cmwpOwogICAgICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLmxvYWRWaWV3VVJMKHVybCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuJG1vZHVsZS5zZXRGaW5pc2hEb3dubG9hZENhbGxiYWNrKHRoaXMuc2V0VVJMRmluaXNoQ2FsbGJhY2soewogICAgICAgICAgICB2aWV3VVJMOiB2aWV3VVJMCiAgICAgICAgICB9KSk7CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgZ2V0UmVuZGVyZXJJbmZvOiBmdW5jdGlvbiBnZXRSZW5kZXJlckluZm8oKSB7CiAgICAgIGlmICh0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIuZ2V0VGhyZWVKU1JlbmRlcmVyKCkuaW5mbzsKICAgICAgfQogICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgfSwKICAgIC8qKgogICAgICogRnVuY3Rpb24gdXNlZCB0byByb3RhdGUgdGhlIHNjZW5lLgogICAgICogQWxzbyBjYWxsZWQgd2hlbiB0aGUgYXNzb2NpYXRlZCBidXR0b24gaXMgcHJlc3NlZC4KICAgICAqCiAgICAgKiBAcHVibGljCiAgICAgKi8KICAgIGZyZWVTcGluOiBmdW5jdGlvbiBmcmVlU3BpbigpIHsKICAgICAgaWYgKHRoaXMuJG1vZHVsZS5zY2VuZSkgewogICAgICAgIHZhciBjYW1lcmFjb250cm9sID0gdGhpcy4kbW9kdWxlLnNjZW5lLmdldFppbmNDYW1lcmFDb250cm9scygpOwogICAgICAgIHRoaXMuaXNUcmFuc2l0aW9uaW5nID0gdHJ1ZTsKICAgICAgICBjYW1lcmFjb250cm9sLmVuYWJsZUF1dG9UdW1ibGUoKTsKICAgICAgICBjYW1lcmFjb250cm9sLmF1dG9UdW1ibGUoWzEuMCwgMC4wXSwgTWF0aC5QSSwgdHJ1ZSk7CiAgICAgICAgc2V0VGltZW91dCh0aGlzLnN0b3BGcmVlU3BpbiwgNDAwMCk7CiAgICAgIH0KICAgIH0sCiAgICAvKioKICAgICAqIENhbGxiYWNrIHdoZW4gYSByZWdpb24gaXMgc2VsZWN0ZWQvaGlnaGxpZ2h0ZWQuCiAgICAgKiBJdCB3aWxsIGFsc28gdXBkYXRlIG90aGVyIGNvbnRyb2xzLgogICAgICoKICAgICAqLwogICAgZXZlbnROb3RpZmllckNhbGxiYWNrOiBmdW5jdGlvbiBldmVudE5vdGlmaWVyQ2FsbGJhY2soZXZlbnQpIHsKICAgICAgdmFyIG5hbWVzID0gW107CiAgICAgIHZhciB6aW5jT2JqZWN0cyA9IFtdOwogICAgICB2YXIgcmVnaW9uID0gdW5kZWZpbmVkOwogICAgICBpZiAoZXZlbnQuZXZlbnRUeXBlID09IDEgfHwgZXZlbnQuZXZlbnRUeXBlID09IDIpIHsKICAgICAgICBldmVudC5pZGVudGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChpZGVudGlmaWVyKSB7CiAgICAgICAgICBpZiAoaWRlbnRpZmllcikgewogICAgICAgICAgICB2YXIgaWQgPSBpZGVudGlmaWVyLmRhdGEuaWQgPyBpZGVudGlmaWVyLmRhdGEuaWQgOiBpZGVudGlmaWVyLmRhdGEuZ3JvdXA7CiAgICAgICAgICAgIG5hbWVzLnB1c2goaWQpOwogICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIHppbmNPYmplY3RzID0gZXZlbnQuemluY09iamVjdHM7CiAgICAgIH0KICAgICAgLyoKICAgICAgICogRXZlbnQgVHlwZSAxOiBTZWxlY3RlZAogICAgICAgKiBFdmVudCBUeXBlIDI6IEhpZ2hsaWdodGVkCiAgICAgICAqIEV2ZW50IFR5cGUgMTogTW92ZQogICAgICAgKi8KICAgICAgaWYgKGV2ZW50LmV2ZW50VHlwZSA9PSAxKSB7CiAgICAgICAgaWYgKHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzKSB7CiAgICAgICAgICBpZiAobmFtZXMubGVuZ3RoID4gMCkgewogICAgICAgICAgICAvL3RoaXMuJHJlZnMudHJlZUNvbnRyb2xzLmNoYW5nZUFjdGl2ZUJ5TmFtZXMobmFtZXMsIHJlZ2lvbiwgZmFsc2UpOwogICAgICAgICAgICB0aGlzLiRyZWZzLnRyZWVDb250cm9scy51cGRhdGVBY3RpdmVVSSh6aW5jT2JqZWN0cyk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aGlzLmhpZGVSZWdpb25Ub29sdGlwKCk7CiAgICAgICAgICAgIHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzLnJlbW92ZUFjdGl2ZSh0cnVlKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLy8gVHJpZ2dlcnMgd2hlbiBhbiBvYmplY3QgaGFzIGJlZW4gc2VsZWN0ZWQKICAgICAgICBpZiAodGhpcy52aWV3aW5nTW9kZSA9PT0gJ0Fubm90YXRpb24nKSB7CiAgICAgICAgICAvL01ha2Ugc3VyZSB0aGUgdG9vbHRpcCBpcyBkaXNwbGF5ZWQgd2l0aCBhbm5vdGF0aW9uIG1vZGUKICAgICAgICAgIHRoaXMuc2hvd1JlZ2lvblRvb2x0aXBXaXRoQW5ub3RhdGlvbnMoZXZlbnQuaWRlbnRpZmllcnMsIHRydWUsIHRydWUpOwogICAgICAgIH0KICAgICAgICB0aGlzLiRlbWl0KCJzY2FmZm9sZC1zZWxlY3RlZCIsIGV2ZW50LmlkZW50aWZpZXJzKTsKICAgICAgfSBlbHNlIGlmIChldmVudC5ldmVudFR5cGUgPT0gMikgewogICAgICAgIGlmICh0aGlzLnNlbGVjdGVkT2JqZWN0cy5sZW5ndGggPT09IDApIHsKICAgICAgICAgIHRoaXMuaGlkZVJlZ2lvblRvb2x0aXAoKTsKICAgICAgICAgIC8vIGNvbnN0IG9mZnNldHMgPSB0aGlzLiRyZWZzLnNjYWZmb2xkQ29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgICAgaWYgKHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzKSB7CiAgICAgICAgICAgIGlmIChuYW1lcy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgLy90aGlzLiRyZWZzLnRyZWVDb250cm9scy5jaGFuZ2VIb3ZlckJ5TmFtZXMobmFtZXMsIHJlZ2lvbiwgZmFsc2UpOwogICAgICAgICAgICAgIHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzLnVwZGF0ZUhvdmVyVUkoemluY09iamVjdHMpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzLnJlbW92ZUhvdmVyKHRydWUpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoZXZlbnQuaWRlbnRpZmllcnMubGVuZ3RoID4gMCAmJiBldmVudC5pZGVudGlmaWVyc1swXSkgewogICAgICAgICAgICB2YXIgaWQgPSBldmVudC5pZGVudGlmaWVyc1swXS5kYXRhLmlkID8gZXZlbnQuaWRlbnRpZmllcnNbMF0uZGF0YS5pZCA6IGV2ZW50LmlkZW50aWZpZXJzWzBdLmRhdGEuZ3JvdXA7CiAgICAgICAgICAgIGlmIChldmVudC5pZGVudGlmaWVyc1swXS5jb29yZHMpIHsKICAgICAgICAgICAgICB0aGlzLnREYXRhLmFjdGl2ZSA9IGZhbHNlOwogICAgICAgICAgICAgIHRoaXMudERhdGEudmlzaWJsZSA9IHRydWU7CiAgICAgICAgICAgICAgdGhpcy50RGF0YS5sYWJlbCA9IGlkOwogICAgICAgICAgICAgIGlmIChldmVudC5pZGVudGlmaWVyc1swXS5kYXRhLnJlZ2lvbikgdGhpcy50RGF0YS5yZWdpb24gPSBldmVudC5pZGVudGlmaWVyc1swXS5kYXRhLnJlZ2lvbjtlbHNlIHRoaXMudERhdGEucmVnaW9uID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgIHRoaXMudERhdGEueCA9IGV2ZW50LmlkZW50aWZpZXJzWzBdLmNvb3Jkcy54OwogICAgICAgICAgICAgIHRoaXMudERhdGEueSA9IGV2ZW50LmlkZW50aWZpZXJzWzBdLmNvb3Jkcy55OwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICAvLyBUcmlnZ2VycyB3aGVuIGFuIG9iamVjdCBoYXMgYmVlbiBoaWdobGlnaHRlZAogICAgICAgICAgdGhpcy4kZW1pdCgic2NhZmZvbGQtaGlnaGxpZ2h0ZWQiLCBldmVudC5pZGVudGlmaWVycyk7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKGV2ZW50LmV2ZW50VHlwZSA9PSAzKSB7CiAgICAgICAgLy9NT1ZFCiAgICAgICAgaWYgKGV2ZW50LmlkZW50aWZpZXJzLmxlbmd0aCA+IDAgJiYgZXZlbnQuaWRlbnRpZmllcnNbMF0pIHsKICAgICAgICAgIGlmIChldmVudC5pZGVudGlmaWVyc1swXS5jb29yZHMpIHsKICAgICAgICAgICAgdmFyIG9mZnNldHMgPSB0aGlzLiRyZWZzLnNjYWZmb2xkQ29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgICAgICB0aGlzLnREYXRhLnggPSBldmVudC5pZGVudGlmaWVyc1swXS5jb29yZHMueCAtIG9mZnNldHMubGVmdDsKICAgICAgICAgICAgdGhpcy50RGF0YS55ID0gZXZlbnQuaWRlbnRpZmllcnNbMF0uY29vcmRzLnkgLSBvZmZzZXRzLnRvcDsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAvKioKICAgICAqIEdldCB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIGN1cnJlbnQgc2VsZWN0ZWQgcmVnaW9uLgogICAgICoKICAgICAqIEBwdWJsaWMKICAgICAqLwogICAgZ2V0Q29vcmRpbmF0ZXNPZlNlbGVjdGVkOiBmdW5jdGlvbiBnZXRDb29yZGluYXRlc09mU2VsZWN0ZWQoKSB7CiAgICAgIGlmICh0aGlzLnNlbGVjdGVkT2JqZWN0cyAmJiB0aGlzLnNlbGVjdGVkT2JqZWN0cy5sZW5ndGggPiAwKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuJG1vZHVsZS5zY2VuZS5nZXRPYmplY3RzU2NyZWVuWFkodGhpcy5zZWxlY3RlZE9iamVjdHMpOwogICAgICB9CiAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICB9LAogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHdpbmRvdyBjb29yZGluYXRlcyBvZiB0aGUKICAgICAqIGN1cnJlbnQgc2VsZWN0ZWQgcmVnaW9uIHdoaWNoIHdpbGwgYmUgdXBkYXRlZCBhZnRlciBlYWNoIHJlbmRlcgogICAgICogbG9vcC4KICAgICAqCiAgICAgKiBAcHVibGljCiAgICAgKi8KICAgIGdldER5bmFtaWNTZWxlY3RlZENvb3JkaW5hdGVzOiBmdW5jdGlvbiBnZXREeW5hbWljU2VsZWN0ZWRDb29yZGluYXRlcygpIHsKICAgICAgcmV0dXJuIHRoaXMuJG1vZHVsZS5zZWxlY3RlZFNjcmVlbkNvb3JkaW5hdGVzOwogICAgfSwKICAgIC8qKgogICAgICogQ2FsbGJhY2sgd2hlbiB0aW1lIGlzIGNoYW5nZWQgdGhyb3VnaCB0aGUgVUkuCiAgICAgKi8KICAgIHRpbWVDaGFuZ2U6IGZ1bmN0aW9uIHRpbWVDaGFuZ2UoZXZlbnQpIHsKICAgICAgdmFyIG5vcm1hbGl6ZWRUaW1lID0gZXZlbnQgLyB0aGlzLnRpbWVNYXggKiAxMDA7CiAgICAgIGlmIChub3JtYWxpemVkVGltZSAhPSB0aGlzLnNjZW5lRGF0YS5jdXJyZW50VGltZSkgdGhpcy4kbW9kdWxlLnVwZGF0ZVRpbWUobm9ybWFsaXplZFRpbWUpOwogICAgfSwKICAgIC8qKgogICAgICogQSBjYWxsYmFjayB1c2VkIGJ5IGNoaWxkcmVuIGNvbXBvbmVudHMuIFNldCB0aGUgc2VsZWN0ZWQgemluYyBvYmplY3QKICAgICAqCiAgICAgKiBAcGFyYW0ge29iamVjdH0gb2JqZWN0IFppbmMgb2JqZWN0CiAgICAgKi8KICAgIG9iamVjdFNlbGVjdGVkOiBmdW5jdGlvbiBvYmplY3RTZWxlY3RlZChvYmplY3RzLCBwcm9wYWdhdGUpIHsKICAgICAgdGhpcy5zZWxlY3RlZE9iamVjdHMgPSBvYmplY3RzOwogICAgICBpZiAodGhpcy5zZWxlY3RlZE9iamVjdHMgJiYgdGhpcy5zZWxlY3RlZE9iamVjdHMubGVuZ3RoID4gMCkgewogICAgICAgIHRoaXMuJHJlZnMucHJpbWl0aXZlQ29udHJvbHMuc2V0T2JqZWN0KHRoaXMuc2VsZWN0ZWRPYmplY3RzWzBdKTsKICAgICAgfQogICAgICB0aGlzLiRtb2R1bGUuc2V0U2VsZWN0ZWRCeVppbmNPYmplY3RzKG9iamVjdHMsIHVuZGVmaW5lZCwgcHJvcGFnYXRlKTsKICAgIH0sCiAgICAvKioKICAgICAqIEEgY2FsbGJhY2sgdXNlZCBieSBjaGlsZHJlbiBjb21wb25lbnRzLiBTZXQgdGhlIGhpZ2hsaWdodGVkIHppbmMgb2JqZWN0CiAgICAgKgogICAgICogQHBhcmFtIHtvYmplY3R9IG9iamVjdCBaaW5jIG9iamVjdAogICAgICovCiAgICBvYmplY3RIb3ZlcmVkOiBmdW5jdGlvbiBvYmplY3RIb3ZlcmVkKG9iamVjdHMsIHByb3BhZ2F0ZSkgewogICAgICB0aGlzLmhvdmVyZWRPYmplY3RzID0gb2JqZWN0czsKICAgICAgdGhpcy4kbW9kdWxlLnNldEhpZ2hsaWdodGVkQnlaaW5jT2JqZWN0cyhvYmplY3RzLCB1bmRlZmluZWQsIHByb3BhZ2F0ZSk7CiAgICB9LAogICAgLyoqCiAgICAgKiBTZXQgdGhlIHNlbGVjdGVkIGJ5IG5hbWUuCiAgICAgKgogICAgICogQHBhcmFtIHt9IG5hbWUgTmFtZSBvZiB0aGUgZ3JvdXAKICAgICAqLwogICAgY2hhbmdlQWN0aXZlQnlOYW1lOiBmdW5jdGlvbiBjaGFuZ2VBY3RpdmVCeU5hbWUobmFtZXMsIHJlZ2lvbiwgcHJvcGFnYXRlKSB7CiAgICAgIHZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheShuYW1lcyk7CiAgICAgIGlmIChuYW1lcyA9PT0gdW5kZWZpbmVkIHx8IGlzQXJyYXkgJiYgbmFtZXMubGVuZ3RoID09PSAwKSB7CiAgICAgICAgdGhpcy4kcmVmcy50cmVlQ29udHJvbHMucmVtb3ZlQWN0aXZlKHByb3BhZ2F0ZSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdmFyIGFycmF5ID0gbmFtZXM7CiAgICAgICAgaWYgKCFpc0FycmF5KSBhcnJheSA9IFthcnJheV07CiAgICAgICAgdGhpcy4kcmVmcy50cmVlQ29udHJvbHMuY2hhbmdlQWN0aXZlQnlOYW1lcyhhcnJheSwgcmVnaW9uLCBwcm9wYWdhdGUpOwogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBTZXQgdGhlIGhpZ2hsaWdodGVkIGJ5IG5hbWUuCiAgICAgKgogICAgICogQHBhcmFtIHtuYW1lfSBuYW1lIE5hbWUgb2YgdGhlIGdyb3VwCiAgICAgKi8KICAgIGNoYW5nZUhpZ2hsaWdodGVkQnlOYW1lOiBmdW5jdGlvbiBjaGFuZ2VIaWdobGlnaHRlZEJ5TmFtZShuYW1lcywgcmVnaW9uLCBwcm9wYWdhdGUpIHsKICAgICAgdmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5KG5hbWVzKTsKICAgICAgaWYgKG5hbWVzID09PSB1bmRlZmluZWQgfHwgaXNBcnJheSAmJiBuYW1lcy5sZW5ndGggPT09IDApIHsKICAgICAgICB0aGlzLiRyZWZzLnRyZWVDb250cm9scy5yZW1vdmVIb3Zlcihwcm9wYWdhdGUpOwogICAgICB9IGVsc2UgewogICAgICAgIHZhciBhcnJheSA9IG5hbWVzOwogICAgICAgIGlmICghaXNBcnJheSkgYXJyYXkgPSBbYXJyYXldOwogICAgICAgIHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzLmNoYW5nZUhvdmVyQnlOYW1lcyhhcnJheSwgcmVnaW9uLCBwcm9wYWdhdGUpOwogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBTdGFydCB0aGUgYW5pbWF0aW9uLgogICAgICoKICAgICAqIEBwYXJhbSB7b2JqZWN0fSBvYmplY3QgWmluYyBvYmplY3QKICAgICAqLwogICAgcGxheTogZnVuY3Rpb24gcGxheShmbGFnKSB7CiAgICAgIHRoaXMuJG1vZHVsZS5wbGF5QW5pbWF0aW9uKGZsYWcpOwogICAgICB0aGlzLmlzUGxheWluZyA9IGZsYWc7CiAgICAgIC8vSGlkZSB0b29sdGlwIGFzIGxvY2F0aW9uIG1heQogICAgICAvL3RoaXMuaGlkZVJlZ2lvblRvb2x0aXAoKTsKICAgIH0sCgogICAgLyoqCiAgICAgKiBGdW5jdGlvbiB0byB0b2dnbGUgb24vb2ZmIG92ZXJsYXkgaGVscC4KICAgICAqLwogICAgc2V0SGVscE1vZGU6IGZ1bmN0aW9uIHNldEhlbHBNb2RlKGhlbHBNb2RlKSB7CiAgICAgIGlmIChoZWxwTW9kZSkgewogICAgICAgIHRoaXMuaW5IZWxwID0gdHJ1ZTsKICAgICAgICB0aGlzLmhvdmVyVmlzaWJpbGl0aWVzLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgIGl0ZW0udmFsdWUgPSB0cnVlOwogICAgICAgIH0pOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuaW5IZWxwID0gZmFsc2U7CiAgICAgICAgdGhpcy5ob3ZlclZpc2liaWxpdGllcy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICBpdGVtLnZhbHVlID0gZmFsc2U7CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0sCiAgICAvKioKICAgICAqIENhbGxiYWNrIGZ1bmN0aW9uIHVzZWQgYnkgc2hvd1JlZ2lvblRvb2x0aXAgaW4gdGhlIGNhc2Ugd2hlbiB0aGUgdG9vbHRpcAogICAgICogaXMgb3V0IG9mIHZpZXcuCiAgICAgKi8KICAgIGRpc3BsYXlUb29sdGlwT2ZPYmplY3RzQ2FsbGJhY2s6IGZ1bmN0aW9uIGRpc3BsYXlUb29sdGlwT2ZPYmplY3RzQ2FsbGJhY2sobmFtZSwgb2JqZWN0cywgcmVnaW9uUGF0aCwgcmVzZXRWaWV3LCBsaXZlVXBkYXRlcykgewogICAgICB2YXIgaW5zdGFuY2UgPSB0aGlzOwogICAgICByZXR1cm4gZnVuY3Rpb24gKCkgewogICAgICAgIGluc3RhbmNlLiRtb2R1bGUuemluY1JlbmRlcmVyLnJlbW92ZVBvc3RSZW5kZXJDYWxsYmFja0Z1bmN0aW9uKGluc3RhbmNlLiRfcmVnaW9uVG9vbHRpcENhbGxiYWNrKTsKICAgICAgICBpbnN0YW5jZS4kX3JlZ2lvblRvb2x0aXBDYWxsYmFjayA9IHVuZGVmaW5lZDsKICAgICAgICBpbnN0YW5jZS5kaXNwbGF5VG9vbHRpcE9mT2JqZWN0cyhuYW1lLCBvYmplY3RzLCByZWdpb25QYXRoLCByZXNldFZpZXcsIGxpdmVVcGRhdGVzKTsKICAgICAgfTsKICAgIH0sCiAgICBsaXZlVXBkYXRlVG9vbHRpcFBvc2l0aW9uOiBmdW5jdGlvbiBsaXZlVXBkYXRlVG9vbHRpcFBvc2l0aW9uKCkgewogICAgICBpZiAodGhpcy4kbW9kdWxlLnNlbGVjdGVkQ2VudGVyKSB7CiAgICAgICAgdGhpcy50RGF0YS54ID0gdGhpcy4kbW9kdWxlLnNlbGVjdGVkU2NyZWVuQ29vcmRpbmF0ZXMueDsKICAgICAgICB0aGlzLnREYXRhLnkgPSB0aGlzLiRtb2R1bGUuc2VsZWN0ZWRTY3JlZW5Db29yZGluYXRlcy55OwogICAgICB9CiAgICB9LAogICAgZGlzcGxheVRvb2x0aXBPZk9iamVjdHM6IGZ1bmN0aW9uIGRpc3BsYXlUb29sdGlwT2ZPYmplY3RzKG5hbWUsIG9iamVjdHMsIHJlZ2lvblBhdGgsIHJlc2V0VmlldywgbGl2ZVVwZGF0ZXMpIHsKICAgICAgaWYgKG9iamVjdHMubGVuZ3RoID4gMCkgewogICAgICAgIHZhciBjb29yZHMgPSBvYmplY3RzWzBdLmdldENsb3Nlc3RWZXJ0ZXhET01FbGVtZW50Q29vcmRzKHRoaXMuJG1vZHVsZS5zY2VuZSk7CiAgICAgICAgaWYgKGNvb3JkcykgewogICAgICAgICAgLy9UaGUgY29vcmRzIGlzIG5vdCBpbiB2aWV3LCB2aWV3IGFsbCBpZiByZXNldFZpZXcgZmxhZyBpcyB0cnVlCiAgICAgICAgICBpZiAoIWNvb3Jkcy5pblZpZXcpIHsKICAgICAgICAgICAgdGhpcy5oaWRlUmVnaW9uVG9vbHRpcCgpOwogICAgICAgICAgICBpZiAocmVzZXRWaWV3KSB7CiAgICAgICAgICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLnZpZXdBbGwoKTsKICAgICAgICAgICAgICAvL1VzZSB0aGUgcG9zdCByZW5kZXIgY2FsbGJhY2sgdG8gbWFrZSBzdXJlIHRoZSBzY2VuZSBoYXMgYmVlbiB1cGRhdGVkCiAgICAgICAgICAgICAgLy9iZWZvcmUgZ2V0dGluZyB0aGUgcG9zaXRpb24gb2YgdGhlIHRvb2x0aXAuCiAgICAgICAgICAgICAgaWYgKHRoaXMuJF9yZWdpb25Ub29sdGlwQ2FsbGJhY2spIHsKICAgICAgICAgICAgICAgIHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIucmVtb3ZlUG9zdFJlbmRlckNhbGxiYWNrRnVuY3Rpb24odGhpcy4kX3JlZ2lvblRvb2x0aXBDYWxsYmFjayk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHRoaXMuJF9yZWdpb25Ub29sdGlwQ2FsbGJhY2sgPSB0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyLmFkZFBvc3RSZW5kZXJDYWxsYmFja0Z1bmN0aW9uKHRoaXMuZGlzcGxheVRvb2x0aXBPZk9iamVjdHNDYWxsYmFjayhuYW1lLCBvYmplY3RzLCByZWdpb25QYXRoLCByZXNldFZpZXcsIGxpdmVVcGRhdGVzKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmICghbmFtZS5pbmNsdWRlcygiU2VhcmNoIFJlc3VsdHMgZm9yIikpIHsKICAgICAgICAgICAgICB0aGlzLnREYXRhLmFjdGl2ZSA9IHRydWU7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgdGhpcy50RGF0YS5hY3RpdmUgPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0aGlzLnREYXRhLnZpc2libGUgPSB0cnVlOwogICAgICAgICAgICB0aGlzLnREYXRhLmxhYmVsID0gbmFtZTsKICAgICAgICAgICAgdGhpcy50RGF0YS54ID0gY29vcmRzLnBvc2l0aW9uLng7CiAgICAgICAgICAgIHRoaXMudERhdGEueSA9IGNvb3Jkcy5wb3NpdGlvbi55OwogICAgICAgICAgICB0aGlzLnREYXRhLnJlZ2lvbiA9IHJlZ2lvblBhdGg7CiAgICAgICAgICAgIGlmICh0aGlzLiRfbGl2ZUNvb3JkaW5hdGVzVXBkYXRlZCkgewogICAgICAgICAgICAgIHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIucmVtb3ZlUG9zdFJlbmRlckNhbGxiYWNrRnVuY3Rpb24odGhpcy4kX2xpdmVDb29yZGluYXRlc1VwZGF0ZWQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChsaXZlVXBkYXRlcykgewogICAgICAgICAgICAgIHRoaXMuJG1vZHVsZS5zZXR1cExpdmVDb29yZGluYXRlcyhvYmplY3RzKTsKICAgICAgICAgICAgICB0aGlzLiRfbGl2ZUNvb3JkaW5hdGVzVXBkYXRlZCA9IHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIuYWRkUG9zdFJlbmRlckNhbGxiYWNrRnVuY3Rpb24odGhpcy5saXZlVXBkYXRlVG9vbHRpcFBvc2l0aW9uKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICB9CiAgICAgIHRoaXMuaGlkZVJlZ2lvblRvb2x0aXAoKTsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSwKICAgIC8qKgogICAgICogRGlzcGxheSB0aGUgdG9vbHRpcCB1c2VkIGZvciBkaXNwbGF5aW5nIHNlYXJjaCByZXN1bHQuCiAgICAgKiBXaGVuIHJlc2V0VmlldyBpcyBzZXQgdG8gdHJ1ZSwgaXQgd2lsbAogICAgICogcmVzZXQgdmlldyBpZiB0aGUgdG9vbHRpcCBpcyBub3QgaW4gdmlldy4KICAgICAqIFNldHRpbmcgbGl2ZVVwZGF0ZXMgdG8gdHJ1ZSB3aWxsIHVwZGF0ZSB0aGUgdG9vbHRpcCBsb2NhdGlvbgogICAgICogYXQgZXZlcnkgcmVuZGVyaW5nIGxvb3AuCiAgICAgKi8KICAgIHNob3dSZWdpb25Ub29sdGlwV2l0aE9iamVjdHM6IGZ1bmN0aW9uIHNob3dSZWdpb25Ub29sdGlwV2l0aE9iamVjdHMobGFiZWwsIHppbmNPYmplY3RzLCByZWdpb25QYXRoLCByZXNldFZpZXcsIGxpdmVVcGRhdGVzKSB7CiAgICAgIGlmIChsYWJlbCAmJiB6aW5jT2JqZWN0cyAmJiB6aW5jT2JqZWN0cy5sZW5ndGggPiAwICYmIHRoaXMuJG1vZHVsZS5zY2VuZSkgewogICAgICAgIHJldHVybiB0aGlzLmRpc3BsYXlUb29sdGlwT2ZPYmplY3RzKGxhYmVsLCB6aW5jT2JqZWN0cywgcmVnaW9uUGF0aCwgcmVzZXRWaWV3LCBsaXZlVXBkYXRlcyk7CiAgICAgIH0KICAgICAgdGhpcy5oaWRlUmVnaW9uVG9vbHRpcCgpOwogICAgICByZXR1cm4gZmFsc2U7CiAgICB9LAogICAgLyoqCiAgICAgKiBEaXNwbGF5IHRoZSB0b29sdGlwLiBXaGVuIHJlc2V0VmlldyBpcyBzZXQgdG8gdHJ1ZSwgaXQgd2lsbAogICAgICogcmVzZXQgdmlldyBpZiB0aGUgdG9vbHRpcCBpcyBub3QgaW4gdmlldy4KICAgICAqIFNldHRpbmcgbGl2ZVVwZGF0ZXMgdG8gdHJ1ZSB3aWxsIHVwZGF0ZSB0aGUgdG9vbHRpcCBsb2NhdGlvbgogICAgICogYXQgZXZlcnkgcmVuZGVyaW5nIGxvb3AuCiAgICAgKi8KICAgIHNob3dSZWdpb25Ub29sdGlwOiBmdW5jdGlvbiBzaG93UmVnaW9uVG9vbHRpcChuYW1lLCByZXNldFZpZXcsIGxpdmVVcGRhdGVzKSB7CiAgICAgIGlmIChuYW1lICYmIHRoaXMuJG1vZHVsZS5zY2VuZSkgewogICAgICAgIHZhciByb290UmVnaW9uID0gdGhpcy4kbW9kdWxlLnNjZW5lLmdldFJvb3RSZWdpb24oKTsKICAgICAgICB2YXIgZ3JvdXBzID0gW25hbWVdOwogICAgICAgIHZhciBvYmplY3RzID0gZmluZE9iamVjdHNXaXRoTmFtZXMocm9vdFJlZ2lvbiwgZ3JvdXBzLCAiIiwgdHJ1ZSk7CiAgICAgICAgdmFyIHJlZ2lvblBhdGggPSB1bmRlZmluZWQ7CiAgICAgICAgaWYgKG9iamVjdHMgJiYgb2JqZWN0cy5sZW5ndGggPiAwKSB7CiAgICAgICAgICByZWdpb25QYXRoID0gb2JqZWN0c1swXS5nZXRSZWdpb24oKS5nZXRGdWxsUGF0aCgpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdGhpcy5zaG93UmVnaW9uVG9vbHRpcFdpdGhPYmplY3RzKG5hbWUsIG9iamVjdHMsIHJlZ2lvblBhdGgsIHJlc2V0VmlldywgbGl2ZVVwZGF0ZXMpOwogICAgICB9CiAgICAgIHRoaXMuaGlkZVJlZ2lvblRvb2x0aXAoKTsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSwKICAgIC8qKgogICAgICogRGlzcGxheSB0aGUgdG9vbHRpcCB1c2luZyB0aGUgbGlzdCBvZiBhbm5vdGF0aW9ucy4KICAgICAqIFdoZW4gcmVzZXRWaWV3IGlzIHNldCB0byB0cnVlLCBpdCB3aWxsCiAgICAgKiByZXNldCB2aWV3IGlmIHRoZSB0b29sdGlwIGlzIG5vdCBpbiB2aWV3LgogICAgICogU2V0dGluZyBsaXZlVXBkYXRlcyB0byB0cnVlIHdpbGwgdXBkYXRlIHRoZSB0b29sdGlwIGxvY2F0aW9uCiAgICAgKiBhdCBldmVyeSByZW5kZXJpbmcgbG9vcC4KICAgICAqLwogICAgc2hvd1JlZ2lvblRvb2x0aXBXaXRoQW5ub3RhdGlvbnM6IGZ1bmN0aW9uIHNob3dSZWdpb25Ub29sdGlwV2l0aEFubm90YXRpb25zKGFubm90YXRpb25zLCByZXNldFZpZXcsIGxpdmVVcGRhdGVzKSB7CiAgICAgIGlmICh0aGlzLiRtb2R1bGUuc2NlbmUpIHsKICAgICAgICB2YXIgcmVzdWx0ID0gZ2V0T2JqZWN0c0Zyb21Bbm5vdGF0aW9ucyh0aGlzLiRtb2R1bGUuc2NlbmUsIGFubm90YXRpb25zKTsKICAgICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC5vYmplY3RzLmxlbmd0aCA+IDApIHsKICAgICAgICAgIHJldHVybiB0aGlzLnNob3dSZWdpb25Ub29sdGlwV2l0aE9iamVjdHMocmVzdWx0LmxhYmVsLCByZXN1bHQub2JqZWN0cywgcmVzdWx0LnJlZ2lvblBhdGgsIHJlc2V0VmlldywgbGl2ZVVwZGF0ZXMpOwogICAgICAgIH0KICAgICAgfQogICAgICB0aGlzLmhpZGVSZWdpb25Ub29sdGlwKCk7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0sCiAgICBoaWRlUmVnaW9uVG9vbHRpcDogZnVuY3Rpb24gaGlkZVJlZ2lvblRvb2x0aXAoKSB7CiAgICAgIGlmICh0aGlzLiRfbGl2ZUNvb3JkaW5hdGVzVXBkYXRlZCkgewogICAgICAgIHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIucmVtb3ZlUG9zdFJlbmRlckNhbGxiYWNrRnVuY3Rpb24odGhpcy4kX2xpdmVDb29yZGluYXRlc1VwZGF0ZWQpOwogICAgICAgIC8vVW5zZXQgdGhlIHRyYWNraW5nCiAgICAgICAgdGhpcy4kbW9kdWxlLnNldHVwTGl2ZUNvb3JkaW5hdGVzKHVuZGVmaW5lZCk7CiAgICAgIH0KICAgICAgdGhpcy50RGF0YS5hY3RpdmUgPSBmYWxzZTsKICAgICAgdGhpcy50RGF0YS52aXNpYmxlID0gZmFsc2U7CiAgICAgIHRoaXMudERhdGEucmVnaW9uID0gdW5kZWZpbmVkOwogICAgfSwKICAgIC8qKgogICAgICogU2V0IHRoZSBtYXJrZXIgbW9kZXMgZm9yIG9iamVjdHMgd2l0aCB0aGUgcHJvdmlkZWQgbmFtZSwgbW9kZSBjYW4KICAgICAqIGJlICJvbiIsICJvZmYiIG9yICJpbmhlcml0ZWQiLgogICAgICovCiAgICBzZXRNYXJrZXJNb2RlRm9yT2JqZWN0c1dpdGhOYW1lOiBmdW5jdGlvbiBzZXRNYXJrZXJNb2RlRm9yT2JqZWN0c1dpdGhOYW1lKG5hbWUsIG1vZGUpIHsKICAgICAgaWYgKG5hbWUgJiYgdGhpcy4kbW9kdWxlLnNjZW5lKSB7CiAgICAgICAgdmFyIHJvb3RSZWdpb24gPSB0aGlzLiRtb2R1bGUuc2NlbmUuZ2V0Um9vdFJlZ2lvbigpOwogICAgICAgIHZhciBncm91cHMgPSBbbmFtZV07CiAgICAgICAgdmFyIG9iamVjdHMgPSBmaW5kT2JqZWN0c1dpdGhOYW1lcyhyb290UmVnaW9uLCBncm91cHMsICIiLCB0cnVlKTsKICAgICAgICBvYmplY3RzLmZvckVhY2goZnVuY3Rpb24gKG9iamVjdCkgewogICAgICAgICAgcmV0dXJuIG9iamVjdC5zZXRNYXJrZXJNb2RlKG1vZGUpOwogICAgICAgIH0pOwogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBTZXQgdGhlIG1hcmtlciBtb2RlcyBmb3Igb2JqZWN0cyBzcGVjaWZpZWQgYnkgdGhlIGxpc3Qgb2YgYW5ub3RhdGlvbnMKICAgICAqLwogICAgc2V0TWFya2VyTW9kZVdpdGhBbm5vdGF0aW9uczogZnVuY3Rpb24gc2V0TWFya2VyTW9kZVdpdGhBbm5vdGF0aW9ucyhhbm5vdGF0aW9ucywgbW9kZSkgewogICAgICBpZiAodGhpcy4kbW9kdWxlLnNjZW5lKSB7CiAgICAgICAgdmFyIHJlc3VsdCA9IGdldE9iamVjdHNGcm9tQW5ub3RhdGlvbnModGhpcy4kbW9kdWxlLnNjZW5lLCBhbm5vdGF0aW9ucyk7CiAgICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQub2JqZWN0cy5sZW5ndGggPiAwKSB7CiAgICAgICAgICByZXN1bHQub2JqZWN0cy5mb3JFYWNoKGZ1bmN0aW9uIChvYmplY3QpIHsKICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5zZXRNYXJrZXJNb2RlKG1vZGUpOwogICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBUaGlzIGlzIGNhbGxlZCB3aGVuIG1vdXNlIGN1cnNvciBlbnRlcnMgc3VwcG9ydGVkIGVsZW1lbnRzCiAgICAgKiB3aXRoIGhlbHAgdG9vdGx0aXBzLgogICAgICovCiAgICBzaG93SGVscFRleHQ6IGZ1bmN0aW9uIHNob3dIZWxwVGV4dChoZWxwVGV4dE51bWJlcikgewogICAgICB2YXIgX3RoaXMzID0gdGhpczsKICAgICAgaWYgKCF0aGlzLmluSGVscCkgewogICAgICAgIHRoaXMuaGVscFRleHRXYWl0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICBfdGhpczMuaG92ZXJWaXNpYmlsaXRpZXNbaGVscFRleHROdW1iZXJdLnZhbHVlID0gdHJ1ZTsKICAgICAgICB9LCA1MDApOwogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBUaGlzIGlzIGNhbGxlZCB3aGVuIG1vdXNlIGN1cnNvciBleGl0cyBzdXBwb3J0ZWQgZWxlbWVudC4uCiAgICAgKi8KICAgIGhpZGVIZWxwVGV4dDogZnVuY3Rpb24gaGlkZUhlbHBUZXh0KGhlbHBUZXh0TnVtYmVyKSB7CiAgICAgIGlmICghdGhpcy5pbkhlbHApIHsKICAgICAgICB0aGlzLmhvdmVyVmlzaWJpbGl0aWVzW2hlbHBUZXh0TnVtYmVyXS52YWx1ZSA9IGZhbHNlOwogICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmhlbHBUZXh0V2FpdCk7CiAgICAgIH0KICAgIH0sCiAgICBzZWFyY2g6IGZ1bmN0aW9uIHNlYXJjaCh0ZXh0LCBkaXNwbGF5TGFiZWwpIHsKICAgICAgaWYgKHRoaXMuJF9zZWFyY2hJbmRleCkgewogICAgICAgIGlmICh0ZXh0ID09PSB1bmRlZmluZWQgfHwgdGV4dCA9PT0gIiIgfHwgQXJyYXkuaXNBcnJheSh0ZXh0KSAmJiB0ZXh0Lmxlbmd0aCA9PT0gMCkgewogICAgICAgICAgdGhpcy5vYmplY3RTZWxlY3RlZChbXSwgdHJ1ZSk7CiAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHZhciByZXN1bHQgPSB0aGlzLiRfc2VhcmNoSW5kZXguc2VhcmNoQW5kUHJvY2Vzc1Jlc3VsdCh0ZXh0KTsKICAgICAgICAgIHZhciB6aW5jT2JqZWN0cyA9IHJlc3VsdC56aW5jT2JqZWN0czsKICAgICAgICAgIGlmICh6aW5jT2JqZWN0cy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIHRoaXMub2JqZWN0U2VsZWN0ZWQoemluY09iamVjdHMsIHRydWUpOwogICAgICAgICAgICBpZiAoZGlzcGxheUxhYmVsKSB7CiAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB6aW5jT2JqZWN0cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgaWYgKHppbmNPYmplY3RzW2ldICYmIHppbmNPYmplY3RzW2ldLmdyb3VwTmFtZSkgewogICAgICAgICAgICAgICAgICB0aGlzLnNob3dSZWdpb25Ub29sdGlwV2l0aE9iamVjdHMocmVzdWx0LmxhYmVsLCB6aW5jT2JqZWN0cywgcmVzdWx0LnJlZ2lvblBhdGgsIHRydWUsIHRydWUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRoaXMub2JqZWN0U2VsZWN0ZWQoW10sIHRydWUpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gZmFsc2U7CiAgICB9LAogICAgLyoqCiAgICAgKiBHZXQgdGhlIGxpc3Qgb2Ygc3VnZ2VzdGVkIHRlcm1zCiAgICAgKi8KICAgIGZldGNoU3VnZ2VzdGlvbnM6IGZ1bmN0aW9uIGZldGNoU3VnZ2VzdGlvbnModGVybSkgewogICAgICBpZiAodGhpcy4kX3NlYXJjaEluZGV4ID09PSB1bmRlZmluZWQpIHJldHVybiBbXTsKICAgICAgcmV0dXJuIHRoaXMuJF9zZWFyY2hJbmRleC5hdXRvX3N1Z2dlc3QodGVybSk7CiAgICB9LAogICAgLyoqCiAgICAgKiBDYWxsZWQgd2hlbiBtaW5pbWFwIHNldHRpbmdzIGhhcyBjaGFuZ2VkLiBQYXNzIHRoZQogICAgICogcGFyYW1ldGVycyB0byBaaW5jSlMgYW5kIG1hcmtlZCBpdCBmb3IgdXBkYXRlLgogICAgICovCiAgICB1cGRhdGVNaW5pbWFwU2Npc3NvcjogZnVuY3Rpb24gdXBkYXRlTWluaW1hcFNjaXNzb3IoKSB7CiAgICAgIHZhciBfdGhpczQgPSB0aGlzOwogICAgICBPYmplY3Qua2V5cyh0aGlzLm1pbmltYXBTZXR0aW5ncykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7CiAgICAgICAgX3RoaXM0LiRtb2R1bGUuc2NlbmUubWluaW1hcFNjaXNzb3Jba2V5XSA9IF90aGlzNC5taW5pbWFwU2V0dGluZ3Nba2V5XTsKICAgICAgfSk7CiAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5taW5pbWFwU2Npc3Nvci51cGRhdGVSZXF1aXJlZCA9IHRydWU7CiAgICB9LAogICAgdXBkYXRlU2V0dGluZ3Nmcm9tU2NlbmU6IGZ1bmN0aW9uIHVwZGF0ZVNldHRpbmdzZnJvbVNjZW5lKCkgewogICAgICB0aGlzLmN1cnJlbnRTcGVlZCA9IDE7CiAgICAgIHRoaXMuJG1vZHVsZS5zZXRQbGF5UmF0ZSh0aGlzLmRlZmF1bHRSYXRlKTsKICAgICAgdGhpcy5vcmdpbmFsRHVyYXRpb24gPSB0aGlzLiRtb2R1bGUuc2NlbmUuZ2V0TWV0YWRhdGFUYWcoIk9yaWdpbmFsRHVyYXRpb24iKTsKICAgICAgdGhpcy5hbmltYXRlRHVyYXRpb24gPSB0aGlzLiRtb2R1bGUuc2NlbmUuZ2V0TWV0YWRhdGFUYWcoIkR1cmF0aW9uIik7CiAgICAgIHZhciB0aW1lU3RhbXBzID0gdGhpcy4kbW9kdWxlLnNjZW5lLmdldE1ldGFkYXRhVGFnKCJUaW1lU3RhbXBzIik7CiAgICAgIHRoaXMudGltZVN0YW1wcyA9IHt9OwogICAgICBmb3IgKHZhciBrZXkgaW4gdGltZVN0YW1wcykgewogICAgICAgIHRoaXMudGltZVN0YW1wc1t0aW1lU3RhbXBzW2tleV1dID0ga2V5OwogICAgICB9CiAgICAgIHRoaXMudGltZU1heCA9IHRoaXMuJG1vZHVsZS5zY2VuZS5nZXREdXJhdGlvbigpOwogICAgfSwKICAgIHNldFVSTEZpbmlzaENhbGxiYWNrOiBmdW5jdGlvbiBzZXRVUkxGaW5pc2hDYWxsYmFjayhvcHRpb25zKSB7CiAgICAgIHZhciBfdGhpczUgPSB0aGlzOwogICAgICByZXR1cm4gZnVuY3Rpb24gKCkgewogICAgICAgIGlmIChvcHRpb25zKSB7CiAgICAgICAgICBpZiAob3B0aW9ucy52aWV3cG9ydCkgewogICAgICAgICAgICBfdGhpczUuJG1vZHVsZS5zY2VuZS5nZXRaaW5jQ2FtZXJhQ29udHJvbHMoKS5zZXRDdXJyZW50Q2FtZXJhU2V0dGluZ3Mob3B0aW9ucy52aWV3cG9ydCk7CiAgICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbnMudmlld1VSTCAmJiBvcHRpb25zLnZpZXdVUkwgIT09ICIiKSB7CiAgICAgICAgICAgIHZhciB1cmwgPSBuZXcgVVJMKG9wdGlvbnMudmlld1VSTCwgX3RoaXM1LnVybCk7CiAgICAgICAgICAgIF90aGlzNS4kbW9kdWxlLnNjZW5lLmxvYWRWaWV3VVJMKHVybCk7CiAgICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbnMucmVnaW9uICYmIG9wdGlvbnMucmVnaW9uICE9PSAiIikgewogICAgICAgICAgICBfdGhpczUudmlld1JlZ2lvbihvcHRpb25zLnJlZ2lvbik7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAob3B0aW9ucy52aXNpYmlsaXR5KSB7CiAgICAgICAgICAgIC8vIFNvbWUgVUlzIG1heSBub3QgYmUgcmVhZHkgYXQgdGhpcyB0aW1lLgogICAgICAgICAgICBfdGhpczUuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICBfdGhpczUuJHJlZnMudHJlZUNvbnRyb2xzLnNldFN0YXRlKG9wdGlvbnMudmlzaWJpbGl0eSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBfdGhpczUudXBkYXRlU2V0dGluZ3Nmcm9tU2NlbmUoKTsKICAgICAgICBfdGhpczUuJG1vZHVsZS51cGRhdGVUaW1lKDAuMDEpOwogICAgICAgIF90aGlzNS4kbW9kdWxlLnVwZGF0ZVRpbWUoMCk7CiAgICAgICAgX3RoaXM1LiRtb2R1bGUudW5zZXRGaW5pc2hEb3dubG9hZENhbGxiYWNrKCk7CiAgICAgICAgX3RoaXM1LmFkZFJlZ2lvbnNUb1NlYXJjaEluZGV4KCk7CiAgICAgICAgX3RoaXM1LiRlbWl0KCJvbi1yZWFkeSIpOwogICAgICAgIF90aGlzNS5zZXRNYXJrZXJzKCk7CiAgICAgICAgX3RoaXM1LmlzUmVhZHkgPSB0cnVlOwogICAgICB9OwogICAgfSwKICAgIC8qKgogICAgICogRnVuY3Rpb24gdXNlZCBmb3IgZ2V0dGluZyB0aGUgY3VycmVudCBzdGF0ZXMgb2YgdGhlIHNjZW5lLiBUaGlzIGV4cG9ydGVkIHN0YXRlcwogICAgICogY2FuIGJlIGltcG9ydGVkIHVzaW5nIHRoZSBpbXBvcnRTdGF0ZXMgbWV0aG9kLgogICAgICoKICAgICAqIEBwdWJsaWMKICAgICAqLwogICAgZ2V0U3RhdGU6IGZ1bmN0aW9uIGdldFN0YXRlKCkgewogICAgICB2YXIgc3RhdGUgPSB7CiAgICAgICAgZm9ybWF0OiB0aGlzLmZpbGVGb3JtYXQsCiAgICAgICAgdXJsOiB0aGlzLl9jdXJyZW50VVJMLAogICAgICAgIHZpZXdwb3J0OiB1bmRlZmluZWQsCiAgICAgICAgdmlzaWJpbGl0eTogdW5kZWZpbmVkCiAgICAgIH07CiAgICAgIGlmICh0aGlzLiRyZWZzLnRyZWVDb250cm9scykgc3RhdGUudmlzaWJpbGl0eSA9IHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzLmdldFN0YXRlKCk7CiAgICAgIGlmICh0aGlzLiRtb2R1bGUuc2NlbmUpIHsKICAgICAgICB2YXIgemluY0NhbWVyYUNvbnRyb2xzID0gdGhpcy4kbW9kdWxlLnNjZW5lLmdldFppbmNDYW1lcmFDb250cm9scygpOwogICAgICAgIHN0YXRlLnZpZXdwb3J0ID0gemluY0NhbWVyYUNvbnRyb2xzLmdldEN1cnJlbnRWaWV3cG9ydCgpOwogICAgICB9CiAgICAgIHJldHVybiBzdGF0ZTsKICAgIH0sCiAgICAvKioKICAgICAqIEZ1bmN0aW9uIHVzZWQgZm9yIGltcG9ydGluZyB0aGUgc3RhdGVzIG9mIHRoZSBzY2VuZS4gVGhpcyBleHBvcnRlZCBzdGF0ZXMKICAgICAqIGNhbiBiZSBpbXBvcnRlZCB1c2luZyB0aGUgcmVhZCBzdGF0ZXMgbWV0aG9kLgogICAgICoKICAgICAqIEBwdWJsaWMKICAgICAqLwogICAgc2V0U3RhdGU6IGZ1bmN0aW9uIHNldFN0YXRlKHN0YXRlKSB7CiAgICAgIGlmIChzdGF0ZSkgewogICAgICAgIGlmIChzdGF0ZS51cmwgJiYgc3RhdGUudXJsICE9PSB0aGlzLl9jdXJyZW50VVJMKSB7CiAgICAgICAgICB0aGlzLnNldFVSTEFuZFN0YXRlKHN0YXRlLnVybCwgewogICAgICAgICAgICBmaWxlRm9ybWF0OiBzdGF0ZS5maWxlRm9ybWF0LAogICAgICAgICAgICB2aWV3cG9ydDogc3RhdGUudmlld3BvcnQsCiAgICAgICAgICAgIHZpc2liaWxpdHk6IHN0YXRlLnZpc2liaWxpdHkKICAgICAgICAgIH0pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBpZiAoc3RhdGUudmlld3BvcnQgfHwgc3RhdGUudmlzaWJpbGl0eSkgewogICAgICAgICAgICBpZiAodGhpcy5pc1JlYWR5ICYmIHRoaXMuJG1vZHVsZS5zY2VuZSkgewogICAgICAgICAgICAgIGlmIChzdGF0ZS52aWV3cG9ydCkgdGhpcy4kbW9kdWxlLnNjZW5lLmdldFppbmNDYW1lcmFDb250cm9scygpLnNldEN1cnJlbnRDYW1lcmFTZXR0aW5ncyhzdGF0ZS52aWV3cG9ydCk7CiAgICAgICAgICAgICAgaWYgKHN0YXRlLnZpc2liaWxpdHkpIHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzLnNldFN0YXRlKHN0YXRlLnZpc2liaWxpdHkpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIHRoaXMuJG1vZHVsZS5zZXRGaW5pc2hEb3dubG9hZENhbGxiYWNrKHRoaXMuc2V0VVJMRmluaXNoQ2FsbGJhY2soewogICAgICAgICAgICAgICAgdmlld3BvcnQ6IHN0YXRlLnZpZXdwb3J0LAogICAgICAgICAgICAgICAgdmlzaWJpbGl0eTogc3RhdGUudmlzaWJpbGl0eQogICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgIGV4cG9ydEdMVEY6IGZ1bmN0aW9uIGV4cG9ydEdMVEYoYmluYXJ5KSB7CiAgICAgIHJldHVybiB0aGlzLiRtb2R1bGUuc2NlbmUuZXhwb3J0R0xURihiaW5hcnkpOwogICAgfSwKICAgIC8qKgogICAgICogRnVuY3Rpb24gdXNlZCBmb3IgcmVhZGluZyBpbiBuZXcgc2NhZmZvbGQgbWV0YWRhdGEgYW5kIGEgY3VzdG9tCiAgICAgKiB2aWV3cG9ydC4gVGhpcyBmdW5jdGlvbiB3aWxsIGlnbm9yZSB0aGUgc3RhdGUgcHJvcCBhbmQKICAgICAqIHJlYWQgaW4gdGhlIG5ldyB1cmwuCiAgICAgKgogICAgICogQHB1YmxpYwogICAgICovCiAgICBzZXRVUkxBbmRTdGF0ZTogZnVuY3Rpb24gc2V0VVJMQW5kU3RhdGUobmV3VmFsdWUsIHN0YXRlKSB7CiAgICAgIGlmIChuZXdWYWx1ZSAhPSB0aGlzLl9jdXJyZW50VVJMKSB7CiAgICAgICAgaWYgKHN0YXRlICYmIHN0YXRlLmZvcm1hdCkgdGhpcy5maWxlRm9ybWF0ID0gc3RhdGUuZm9ybWF0OwogICAgICAgIHZhciB2aWV3cG9ydCA9IHN0YXRlICYmIHN0YXRlLnZpZXdwb3J0ID8gc3RhdGUudmlld3BvcnQgOiB1bmRlZmluZWQ7CiAgICAgICAgdmFyIHZpc2liaWxpdHkgPSBzdGF0ZSAmJiBzdGF0ZS52aXNpYmlsaXR5ID8gc3RhdGUudmlzaWJpbGl0eSA6IHVuZGVmaW5lZDsKICAgICAgICB0aGlzLl9jdXJyZW50VVJMID0gbmV3VmFsdWU7CiAgICAgICAgaWYgKHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzKSB0aGlzLiRyZWZzLnRyZWVDb250cm9scy5jbGVhcigpOwogICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7CiAgICAgICAgdGhpcy5pc1JlYWR5ID0gZmFsc2U7CiAgICAgICAgdGhpcy4kX3NlYXJjaEluZGV4LnJlbW92ZUFsbCgpOwogICAgICAgIHRoaXMuaGlkZVJlZ2lvblRvb2x0aXAoKTsKICAgICAgICB0aGlzLiRtb2R1bGUuc2V0RmluaXNoRG93bmxvYWRDYWxsYmFjayh0aGlzLnNldFVSTEZpbmlzaENhbGxiYWNrKHsKICAgICAgICAgIHZpZXdwb3J0OiB2aWV3cG9ydCwKICAgICAgICAgIHJlZ2lvbjogdGhpcy5yZWdpb24sCiAgICAgICAgICB2aWV3VVJMOiB0aGlzLnZpZXdVUkwsCiAgICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmlsaXR5CiAgICAgICAgfSkpOwogICAgICAgIGlmICh0aGlzLmZpbGVGb3JtYXQgPT09ICJnbHRmIikgewogICAgICAgICAgdGhpcy4kbW9kdWxlLmxvYWRHTFRGRnJvbVVSTChuZXdWYWx1ZSwgInNjZW5lIiwgdHJ1ZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuJG1vZHVsZS5sb2FkT3JnYW5zRnJvbVVSTChuZXdWYWx1ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsICJzY2VuZSIsIHVuZGVmaW5lZCwgdHJ1ZSk7CiAgICAgICAgfQogICAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5kaXNwbGF5TWFya2VycyA9IHRoaXMuZGlzcGxheU1hcmtlcnM7CiAgICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLmZvcmNlUGlja2FibGVPYmplY3RzVXBkYXRlID0gdHJ1ZTsKICAgICAgICB0aGlzLiRtb2R1bGUuc2NlbmUuZGlzcGxheU1pbmltYXAgPSB0aGlzLmRpc3BsYXlNaW5pbWFwOwogICAgICAgIHRoaXMudXBkYXRlTWluaW1hcFNjaXNzb3IoKTsKICAgICAgfQogICAgfSwKICAgIC8qKgogICAgICogRnVuY3Rpb24gdXNlZCBmb3IgcmVhZGluZyBpbiBuZXcgc2NhZmZvbGQgbWV0YWRhdGEuIFRoaXMgZnVuY3Rpb24gd2lsbCBpZ25vcmUKICAgICAqIHRoZSBzdGF0ZSBwcm9wIGFuZCByZWFkIGluIHRoZSBuZXcgdXJsLgogICAgICoKICAgICAqIEBwdWJsaWMKICAgICAqLwogICAgc2V0VVJMOiBmdW5jdGlvbiBzZXRVUkwobmV3VmFsdWUpIHsKICAgICAgdGhpcy5zZXRVUkxBbmRTdGF0ZShuZXdWYWx1ZSwgdW5kZWZpbmVkKTsKICAgIH0sCiAgICAvKioKICAgICAqIENhbGxiYWNrIHdoZW4gZHJhd2VyIGlzIHRvZ2dsZWQuCiAgICAgKi8KICAgIGRyYXdlclRvZ2dsZWQ6IGZ1bmN0aW9uIGRyYXdlclRvZ2dsZWQoZmxhZykgewogICAgICB0aGlzLmRyYXdlck9wZW4gPSBmbGFnOwogICAgICB0aGlzLmFkanVzdExheW91dCgpOwogICAgfSwKICAgIC8qKgogICAgICogQ2FsbGJhY2sgdXNpbmcgUmVzaXplT2JzZXJ2ZXIuCiAgICAgKi8KICAgIGFkanVzdExheW91dDogZnVuY3Rpb24gYWRqdXN0TGF5b3V0KCkgewogICAgICB2YXIgd2lkdGggPSB0aGlzLiRyZWZzLnNjYWZmb2xkQ29udGFpbmVyLmNsaWVudFdpZHRoOwogICAgICB0aGlzLm1pbmltaXNlZFNsaWRlciA9IHdpZHRoIDwgODEyOwogICAgICBpZiAodGhpcy5taW5pbWlzZWRTbGlkZXIpIHsKICAgICAgICB0aGlzLnNsaWRlclBvc2l0aW9uID0gdGhpcy5kcmF3ZXJPcGVuID8gInJpZ2h0IiA6ICJsZWZ0IjsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLnNsaWRlclBvc2l0aW9uID0gIiI7CiAgICAgIH0KICAgIH0sCiAgICB0b2dnbGVSZW5kZXJpbmc6IGZ1bmN0aW9uIHRvZ2dsZVJlbmRlcmluZyhmbGFnKSB7CiAgICAgIGlmICh0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyKSB7CiAgICAgICAgaWYgKGZsYWcpIHsKICAgICAgICAgIHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIuYW5pbWF0ZSgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyLnN0b3BBbmltYXRlKCk7CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgZm9yY2VSZXNpemU6IGZ1bmN0aW9uIGZvcmNlUmVzaXplKCkgewogICAgICBpZiAodGhpcy4kbW9kdWxlLnppbmNSZW5kZXJlcikgewogICAgICAgIHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIub25XaW5kb3dSZXNpemUoKTsKICAgICAgfQogICAgfSwKICAgIHN5bmNDb250cm9sQ2FsbGJhY2s6IGZ1bmN0aW9uIHN5bmNDb250cm9sQ2FsbGJhY2soKSB7CiAgICAgIHZhciBwYXlsb2FkID0gdGhpcy4kbW9kdWxlLk5EQ0NhbWVyYUNvbnRyb2wuZ2V0UGFuWm9vbSgpOwogICAgICBpZiAodGhpcy50RGF0YS52aXNpYmxlKSB7CiAgICAgICAgdGhpcy5zaG93UmVnaW9uVG9vbHRpcCh0aGlzLnREYXRhLmxhYmVsLCB0cnVlLCB0cnVlKTsKICAgICAgfQogICAgICB0aGlzLiRlbWl0KCJzY2FmZm9sZC1uYXZpZ2F0ZWQiLCBwYXlsb2FkKTsKICAgIH0sCiAgICAvKioKICAgICAqIFJvdGF0ZSBtb2RlIC0gIm5vbmUiLCAiaG9yaXpvbnRhbCIsICJ2ZXJ0aWNhbCIsICJmcmVlIiBidXQKICAgICAqIGl0IHdpbGwgYmUgaWdub3JlZCBpZiBmbGFnIGlzIHNldCB0byBmYWxzZS4KICAgICAqLwogICAgdG9nZ2xlU3luY0NvbnRyb2w6IGZ1bmN0aW9uIHRvZ2dsZVN5bmNDb250cm9sKGZsYWcsIHJvdGF0ZU1vZGUpIHsKICAgICAgdGhpcy4kbW9kdWxlLnRvZ2dsZVN5bmNDb250cm9sKGZsYWcsIHJvdGF0ZU1vZGUpOwogICAgICB0aGlzLiRtb2R1bGUuc2V0U3luY0NvbnRyb2xDYWxsYmFjayh0aGlzLnN5bmNDb250cm9sQ2FsbGJhY2spOwogICAgfSwKICAgIC8qKgogICAgICogU2V0IHRoZSBtYXJrZXJzIGZvciB0aGUgc2NlbmUuCiAgICAgKi8KICAgIHNldE1hcmtlcnM6IGZ1bmN0aW9uIHNldE1hcmtlcnMoKSB7CiAgICAgIHZhciBfdGhpczYgPSB0aGlzOwogICAgICB0aGlzLm1hcmtlckxhYmVscy5mb3JFYWNoKGZ1bmN0aW9uIChsKSB7CiAgICAgICAgX3RoaXM2LnNldE1hcmtlck1vZGVGb3JPYmplY3RzV2l0aE5hbWUobCwgIm9uIik7CiAgICAgIH0pOwogICAgfQogIH0KfTs="},{"version":3,"names":["Vue","PrimitiveControls","ScaffoldTooltip","TreeControls","MapSvgIcon","MapSvgSpriteColor","findObjectsWithNames","getObjectsFromAnnotations","SearchIndex","lang","locale","use","_Button","_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","markerLabels","Array","_default","displayMinimap","format","minimapSettings","Object","x_offset","y_offset","width","height","align","enableOpenMapUI","openMapOptions","display","key","state","undefined","region","viewURL","render","flatmapAPI","provide","scaffoldUrl","data","sceneData","$module","isPlaying","isReady","isTransitioning","tooltipAppendToBody","hoverVisibilities","value","inHelp","loading","duration","drawerOpen","currentBackground","availableBackground","minimisedSlider","sliderPosition","timeMax","orginalDuration","animateDuration","playSpeed","label","currentSpeed","timeStamps","defaultCheckedKeys","tData","visible","x","y","active","fileFormat","previousMarkerLabels","viewingMode","viewingModes","watch","handler","immediate","newValue","setURL","setFocusedRegion","setState","deep","updateViewURL","val","setHelpMode","scene","forcePickableObjectsUpdate","sceneDataCurrentTime","$emit","currentTime","setDuration","toggleRendering","labels","_this","forEach","pml","setMarkerModeForObjectsWithName","l","beforeCreate","selectedObjects","hoveredObjects","_currentURL","$_searchIndex","mounted","$refs","treeControls","setModule","eventNotifier","subscribe","eventNotifierCallback","addNotifier","addOrganPartAddedCallback","zincObjectAdded","initialiseRenderer","ro","ResizeObserver","adjustLayout","observe","scaffoldContainer","defaultRate","getPlayRate","beforeDestroy","disconnect","destroy","methods","addZincObject","zincObject","uuid","addRegionsToSearchIndex","_this2","rootRegion","getRootRegion","regions","getChildRegions","addRegion","backgroundChangeCallback","colour","zincRenderer","getThreeJSRenderer","setClearColor","captureScreenshotCallback","removePostRenderCallbackFunction","captureID","screenshot","domElement","toDataURL","hrefElement","document","createElement","body","append","captureFilename","download","href","click","remove","captureScreenshot","filename","addPostRenderCallbackFunction","clearScene","clear","removeAll","clearAll","formatTooltip","sec","toFixed","min","fitWindow","viewAll","zoomIn","changeZoomByScrollRateUnit","zoomOut","speedChanged","speed","setPlayRate","stopFreeSpin","cameracontrol","getZincCameraControls","stopAutoTumble","findObjectsWithGroupName","objects","viewRegion","names","groups","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","identifier","id","group","push","length","updateActiveUI","hideRegionTooltip","removeActive","showRegionTooltipWithAnnotations","updateHoverUI","removeHover","coords","offsets","getBoundingClientRect","left","top","getCoordinatesOfSelected","getObjectsScreenXY","getDynamicSelectedCoordinates","selectedScreenCoordinates","timeChange","normalizedTime","updateTime","objectSelected","propagate","primitiveControls","setObject","setSelectedByZincObjects","objectHovered","setHighlightedByZincObjects","changeActiveByName","array","changeActiveByNames","changeHighlightedByName","changeHoverByNames","play","flag","playAnimation","item","displayTooltipOfObjectsCallback","regionPath","resetView","liveUpdates","instance","$_regionTooltipCallback","displayTooltipOfObjects","liveUpdateTooltipPosition","selectedCenter","getClosestVertexDOMElementCoords","inView","includes","position","$_liveCoordinatesUpdated","setupLiveCoordinates","showRegionTooltipWithObjects","showRegionTooltip","getRegion","getFullPath","annotations","result","mode","object","setMarkerMode","setMarkerModeWithAnnotations","showHelpText","helpTextNumber","_this3","helpTextWait","hideHelpText","clearTimeout","search","text","displayLabel","searchAndProcessResult","i","groupName","fetchSuggestions","term","auto_suggest","updateMinimapScissor","_this4","keys","minimapScissor","updateRequired","updateSettingsfromScene","getMetadataTag","getDuration","options","_this5","viewport","setCurrentCameraSettings","visibility","$nextTick","unsetFinishDownloadCallback","setMarkers","getState","zincCameraControls","getCurrentViewport","setURLAndState","exportGLTF","binary","loadGLTFFromURL","loadOrgansFromURL","drawerToggled","clientWidth","animate","stopAnimate","forceResize","onWindowResize","syncControlCallback","payload","NDCCameraControl","getPanZoom","toggleSyncControl","rotateMode","setSyncControlCallback","_this6"],"sources":["node_modules/@abi-software/scaffoldvuer/src/components/ScaffoldVuer.vue"],"sourcesContent":["\n\n\n\n\n\n\n\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyUA;AACA,OAAAA,GAAA;AACA,OAAAC,iBAAA;AACA,OAAAC,eAAA;AACA,OAAAC,YAAA;AACA,SAAAC,UAAA,EAAAC,iBAAA;AACA,SAAAC,oBAAA,EAAAC,yBAAA;AACA,SAAAC,WAAA;AAaA,OAAAC,IAAA;AACA,OAAAC,MAAA;AAEAA,MAAA,CAAAC,GAAA,CAAAF,IAAA;AACAT,GAAA,CAAAW,GAAA,CAAAC,OAAA;AACAZ,GAAA,CAAAW,GAAA,CAAAE,IAAA;AACAb,GAAA,CAAAW,GAAA,CAAAG,QAAA,CAAAC,SAAA;AACAf,GAAA,CAAAW,GAAA,CAAAK,OAAA;AACAhB,GAAA,CAAAW,GAAA,CAAAM,QAAA;AACAjB,GAAA,CAAAW,GAAA,CAAAO,IAAA;AACAlB,GAAA,CAAAW,GAAA,CAAAQ,OAAA;AACAnB,GAAA,CAAAW,GAAA,CAAAS,OAAA;AACApB,GAAA,CAAAW,GAAA,CAAAU,QAAA;AACArB,GAAA,CAAAW,GAAA,CAAAW,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;IACAvB,UAAA,EAAAA,UAAA;IACAC,iBAAA,EAAAA,iBAAA;IACAJ,iBAAA,EAAAA,iBAAA;IACAC,eAAA,EAAAA,eAAA;IACAC,YAAA,EAAAA;EACA;EACAyB,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;IACAW,YAAA;MACAb,IAAA,EAAAc,KAAA;MACAZ,OAAA,WAAAa,SAAA;QACA;MACA;IACA;IACA;AACA;AACA;IACAC,cAAA;MACAhB,IAAA,EAAAI,OAAA;MACAF,OAAA;IACA;IACA;AACA;AACA;IACAe,MAAA;MACAjB,IAAA,EAAAC,MAAA;MACAC,OAAA;IACA;IACA;AACA;AACA;IACAgB,eAAA;MACAlB,IAAA,EAAAmB,MAAA;MACAjB,OAAA,WAAAa,SAAA;QACA;UACAK,QAAA;UACAC,QAAA;UACAC,KAAA;UACAC,MAAA;UACAC,KAAA;QACA;MACA;IACA;IACA;AACA;AACA;AACA;IACAC,eAAA;MACAzB,IAAA,EAAAI,OAAA;MACAF,OAAA;IACA;IACAwB,cAAA;MACA1B,IAAA,EAAAc,KAAA;MACAZ,OAAA,WAAAa,SAAA;QACA,QACA;UACAY,OAAA;UACAC,GAAA;QACA,GACA;UACAD,OAAA;UACAC,GAAA;QACA,GACA;UACAD,OAAA;UACAC,GAAA;QACA,EACA;MACA;IACA;IACA;AACA;AACA;IACAC,KAAA;MACA7B,IAAA,EAAAmB,MAAA;MACAjB,OAAA,EAAA4B;IACA;IACA;AACA;AACA;AACA;IACAC,MAAA;MACA/B,IAAA,EAAAC,MAAA;MACAC,OAAA;IACA;IACA;AACA;AACA;AACA;AACA;IACA8B,OAAA;MACAhC,IAAA,EAAAC,MAAA;MACAC,OAAA;IACA;IACA;AACA;AACA;IACA+B,MAAA;MACAjC,IAAA,EAAAI,OAAA;MACAF,OAAA;IACA;IACA;AACA;AACA;AA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"}]}