{"remainingRequest":"/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/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:aW1wb3J0IF9UYWJzMiBmcm9tICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay90YWJzLmNzcyI7CmltcG9ydCAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvYmFzZS5jc3MiOwppbXBvcnQgX1RhYnMgZnJvbSAiZWxlbWVudC11aS9saWIvdGFicyI7CmltcG9ydCBfVGFiUGFuZTIgZnJvbSAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvdGFiLXBhbmUuY3NzIjsKaW1wb3J0ICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9iYXNlLmNzcyI7CmltcG9ydCBfVGFiUGFuZSBmcm9tICJlbGVtZW50LXVpL2xpYi90YWItcGFuZSI7CmltcG9ydCBfU2xpZGVyMiBmcm9tICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9zbGlkZXIuY3NzIjsKaW1wb3J0ICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9iYXNlLmNzcyI7CmltcG9ydCBfU2xpZGVyIGZyb20gImVsZW1lbnQtdWkvbGliL3NsaWRlciI7CmltcG9ydCBfU2VsZWN0MiBmcm9tICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9zZWxlY3QuY3NzIjsKaW1wb3J0ICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9iYXNlLmNzcyI7CmltcG9ydCBfU2VsZWN0IGZyb20gImVsZW1lbnQtdWkvbGliL3NlbGVjdCI7CmltcG9ydCBfUm93MiBmcm9tICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9yb3cuY3NzIjsKaW1wb3J0ICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9iYXNlLmNzcyI7CmltcG9ydCBfUm93IGZyb20gImVsZW1lbnQtdWkvbGliL3JvdyI7CmltcG9ydCBfUG9wb3ZlcjIgZnJvbSAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvcG9wb3Zlci5jc3MiOwppbXBvcnQgImVsZW1lbnQtdWkvbGliL3RoZW1lLWNoYWxrL2Jhc2UuY3NzIjsKaW1wb3J0IF9Qb3BvdmVyIGZyb20gImVsZW1lbnQtdWkvbGliL3BvcG92ZXIiOwppbXBvcnQgX09wdGlvbjIgZnJvbSAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvb3B0aW9uLmNzcyI7CmltcG9ydCAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvYmFzZS5jc3MiOwppbXBvcnQgX09wdGlvbiBmcm9tICJlbGVtZW50LXVpL2xpYi9vcHRpb24iOwppbXBvcnQgX0xvYWRpbmcyIGZyb20gImVsZW1lbnQtdWkvbGliL3RoZW1lLWNoYWxrL2xvYWRpbmcuY3NzIjsKaW1wb3J0ICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9iYXNlLmNzcyI7CmltcG9ydCBfTG9hZGluZyBmcm9tICJlbGVtZW50LXVpL2xpYi9sb2FkaW5nIjsKaW1wb3J0IF9Db2wyIGZyb20gImVsZW1lbnQtdWkvbGliL3RoZW1lLWNoYWxrL2NvbC5jc3MiOwppbXBvcnQgImVsZW1lbnQtdWkvbGliL3RoZW1lLWNoYWxrL2Jhc2UuY3NzIjsKaW1wb3J0IF9Db2wgZnJvbSAiZWxlbWVudC11aS9saWIvY29sIjsKaW1wb3J0IF9CdXR0b24yIGZyb20gImVsZW1lbnQtdWkvbGliL3RoZW1lLWNoYWxrL2J1dHRvbi5jc3MiOwppbXBvcnQgImVsZW1lbnQtdWkvbGliL3RoZW1lLWNoYWxrL2Jhc2UuY3NzIjsKaW1wb3J0IF9CdXR0b24gZnJvbSAiZWxlbWVudC11aS9saWIvYnV0dG9uIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMubnVtYmVyLnRvLWZpeGVkLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5pdGVyYXRvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuaXRlcmF0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIudXJsLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvd2ViLnVybC1zZWFyY2gtcGFyYW1zLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5mb3ItZWFjaC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnB1c2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuZXhlYy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5zZWFyY2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Qua2V5cy5qcyI7Ci8qIGVzbGludC1kaXNhYmxlIG5vLWFsZXJ0LCBuby1jb25zb2xlICovCmltcG9ydCBWdWUgZnJvbSAidnVlIjsKaW1wb3J0IE9wYWNpdHlDb250cm9scyBmcm9tICIuL09wYWNpdHlDb250cm9scyI7CmltcG9ydCBTY2FmZm9sZFRvb2x0aXAgZnJvbSAiLi9TY2FmZm9sZFRvb2x0aXAiOwppbXBvcnQgVHJlZUNvbnRyb2xzIGZyb20gIi4vVHJlZUNvbnRyb2xzIjsKaW1wb3J0IHsgTWFwU3ZnSWNvbiwgTWFwU3ZnU3ByaXRlQ29sb3IgfSBmcm9tICJAYWJpLXNvZnR3YXJlL3N2Zy1zcHJpdGUiOwppbXBvcnQgeyBmaW5kT2JqZWN0c1dpdGhOYW1lcywgZ2V0QWxsT2JqZWN0cyB9IGZyb20gIi4uL3NjcmlwdHMvdXRpbGl0aWVzLmpzIjsKaW1wb3J0IHsgU2VhcmNoSW5kZXggfSBmcm9tICIuLi9zY3JpcHRzL3NlYXJjaC5qcyI7CmltcG9ydCBsYW5nIGZyb20gImVsZW1lbnQtdWkvbGliL2xvY2FsZS9sYW5nL2VuIjsKaW1wb3J0IGxvY2FsZSBmcm9tICJlbGVtZW50LXVpL2xpYi9sb2NhbGUiOwpsb2NhbGUudXNlKGxhbmcpOwpWdWUudXNlKF9CdXR0b24pOwpWdWUudXNlKF9Db2wpOwpWdWUudXNlKF9Mb2FkaW5nLmRpcmVjdGl2ZSk7ClZ1ZS51c2UoX09wdGlvbik7ClZ1ZS51c2UoX1BvcG92ZXIpOwpWdWUudXNlKF9Sb3cpOwpWdWUudXNlKF9TZWxlY3QpOwpWdWUudXNlKF9TbGlkZXIpOwpWdWUudXNlKF9UYWJQYW5lKTsKVnVlLnVzZShfVGFicyk7CnZhciBPcmdhbnNWaWV3ZXIgPSByZXF1aXJlKCIuLi9zY3JpcHRzL29yZ2Fuc1JlbmRlcmVyIikuT3JnYW5zVmlld2VyOwp2YXIgRXZlbnROb3RpZmllciA9IHJlcXVpcmUoIi4uL3NjcmlwdHMvZXZlbnROb3RpZmllciIpLkV2ZW50Tm90aWZpZXI7CgovKioKICogQSB2dWUgY29tcG9uZW50IG9mIHRoZSBzY2FmZm9sZCB2aWV3ZXIuCiAqCiAqIEByZXF1aXJlcyAuL09wYWNpdHlDb250cm9scy52dWUKICogQHJlcXVpcmVzIC4vVHJlZUNvbnRyb2xzLnZ1ZQogKi8KZXhwb3J0IGRlZmF1bHQgewogIG5hbWU6ICJTY2FmZm9sZFZ1ZXIiLAogIGNvbXBvbmVudHM6IHsKICAgIE1hcFN2Z0ljb246IE1hcFN2Z0ljb24sCiAgICBNYXBTdmdTcHJpdGVDb2xvcjogTWFwU3ZnU3ByaXRlQ29sb3IsCiAgICBPcGFjaXR5Q29udHJvbHM6IE9wYWNpdHlDb250cm9scywKICAgIFNjYWZmb2xkVG9vbHRpcDogU2NhZmZvbGRUb29sdGlwLAogICAgVHJlZUNvbnRyb2xzOiBUcmVlQ29udHJvbHMKICB9LAogIHByb3BzOiB7CiAgICAvKioKICAgICAqIFVSTCBvZiB0aGUgemluY2pzIG1ldGFkYXRhLiBUaGlzIHZhbHVlIHdpbGwgYmUgaWdub3JlZCBpZiBhIHZhbGlkCiAgICAgKiBzdGF0ZSBwcm9wIGlzIGFsc28gcHJvdmlkZWQuCiAgICAgKiBJZiB0aGUgdXJsIG5lZWRzIHRvIGJlIHVwZGF0ZWQgd2l0aCBzdGF0ZSBwcmVzZW50LCBwbGVhc2UgdXNlCiAgICAgKiB0aGUgc2V0VVJMIG1ldGhvZC4KICAgICAqLwogICAgdXJsOiB7CiAgICAgIHR5cGU6IFN0cmluZywKICAgICAgZGVmYXVsdDogIiIKICAgIH0sCiAgICAvKioKICAgICAqIFNob3cgdGhlIGNvbG91ciBjb250cm9sIG9mIHNldCB0byB0cnVlLgogICAgICovCiAgICBzaG93Q29sb3VyUGlja2VyOiB7CiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IGZhbHNlCiAgICB9LAogICAgLyoqCiAgICAgKiBGbGFnIHRvIHNob3cvaGlkZSB0aGUgVUkuCiAgICAgKi8KICAgIGRpc3BsYXlVSTogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiB0cnVlCiAgICB9LAogICAgLyoqCiAgICAgKiBEaXNwbGF5IGFsbCBncmFwaGljcyBhdCBzdGFydC4KICAgICAqCiAgICAgKiBUaGlzIHNldHRpbmcgb25seSB3b3JrcyB3aGVuIHRyYWRpdGlvbmFsIGlzIHNldCB0byBmYWxzZS4KICAgICAqLwogICAgZGlzcGxheUF0U3RhcnRVcDogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiB0cnVlCiAgICB9LAogICAgLyoqCiAgICAgKiBVc2UgZm9yIHRvZ2dsaW5nIHRoZSBoZWxwIHRvb2x0aXBzLgogICAgICovCiAgICBoZWxwTW9kZTogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiBmYWxzZQogICAgfSwKICAgIC8qKgogICAgICogVXNlIGZvciBzaG93L2Rpc3BsYXkgYmV0YSB3YXJuaW5nIGljb24uCiAgICAgKi8KICAgIGRpc3BsYXlXYXJuaW5nOiB7CiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IHRydWUKICAgIH0sCiAgICAvKioKICAgICAqIFdhcm5pbmcgbWVzc2FnZSBmb3IgdGhlIGhvdmVyZWQgb3ZlciB0ZXh0CiAgICAgKiBvbiB0aGUgd2FybmluZyBpY29uLgogICAgICovCiAgICB3YXJuaW5nTWVzc2FnZTogewogICAgICB0eXBlOiBTdHJpbmcsCiAgICAgIGRlZmF1bHQ6ICJCZXRhIGZlYXR1cmUgLSB1bmRlciBhY3RpdmUgZGV2ZWxvcG1lbnQiCiAgICB9LAogICAgZGlzcGxheUxhdGVzdENoYW5nZXM6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogZmFsc2UKICAgIH0sCiAgICBsYXRlc3RDaGFuZ2VzTWVzc2FnZTogewogICAgICB0eXBlOiBTdHJpbmcsCiAgICAgIGRlZmF1bHQ6ICJOZXcgZmVhdHVyZSAtIExvY2FsIHNlYXJjaCBpcyBub3cgYXZhaWxhYmxlIgogICAgfSwKICAgIC8qKgogICAgICogU2hvdy9oaWRlIHBpY2thYmxlIG1hcmtlcnMgZm9yIHJlZ2lvbnMuCiAgICAgKi8KICAgIGRpc3BsYXlNYXJrZXJzOiB7CiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IGZhbHNlCiAgICB9LAogICAgLyoqCiAgICAgKiBTaG93L2hpZGUgbWluaW1hcC4KICAgICAqLwogICAgZGlzcGxheU1pbmltYXA6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogZmFsc2UKICAgIH0sCiAgICAvKioKICAgICAqIEZvcm1hdCBvZiB0aGUgaW5wdXQgVVJMCiAgICAgKi8KICAgIGZvcm1hdDogewogICAgICB0eXBlOiBTdHJpbmcsCiAgICAgIGRlZmF1bHQ6ICJtZXRhZGF0YSIKICAgIH0sCiAgICAvKioKICAgICAqIFNldHRpbmdzIGZvciBtaW5pbWFwIHBvc2l0aW9uLCBzaXplIGFuZCBhbGlnbm1lbnQuCiAgICAgKi8KICAgIG1pbmltYXBTZXR0aW5nczogewogICAgICB0eXBlOiBPYmplY3QsCiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICB4X29mZnNldDogMTYsCiAgICAgICAgICB5X29mZnNldDogMTYsCiAgICAgICAgICB3aWR0aDogMTI4LAogICAgICAgICAgaGVpZ2h0OiAxMjgsCiAgICAgICAgICBhbGlnbjogInRvcC1yaWdodCIKICAgICAgICB9OwogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBGbGFnIHRvIGRldGVybWluZSByYXRoZXIgb3BlbiBtYXAgVUkgc2hvdWxkIGJlCiAgICAgKiBwcmVzZW50ZWQgb3Igbm90LgogICAgICovCiAgICBlbmFibGVPcGVuTWFwVUk6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogZmFsc2UKICAgIH0sCiAgICBvcGVuTWFwT3B0aW9uczogewogICAgICB0eXBlOiBBcnJheSwKICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7CiAgICAgICAgcmV0dXJuIFt7CiAgICAgICAgICBkaXNwbGF5OiAiT3BlbiBBQyBNYXAiLAogICAgICAgICAga2V5OiAiQUMiCiAgICAgICAgfSwgewogICAgICAgICAgZGlzcGxheTogIk9wZW4gRkMgTWFwIiwKICAgICAgICAgIGtleTogIkZDIgogICAgICAgIH0sIHsKICAgICAgICAgIGRpc3BsYXk6ICJPcGVuIDNEIEh1bWFuIE1hcCIsCiAgICAgICAgICBrZXk6ICIzRCIKICAgICAgICB9XTsKICAgICAgfQogICAgfSwKICAgIC8qKgogICAgICogU3RhdGUgY29udGFpbmluZyBzdGF0ZSBvZiB0aGUgc2NhZmZvbGQuCiAgICAgKi8KICAgIHN0YXRlOiB7CiAgICAgIHR5cGU6IE9iamVjdCwKICAgICAgZGVmYXVsdDogdW5kZWZpbmVkCiAgICB9LAogICAgLyoqCiAgICAgKiBPcHRpb25hbCBwcm9wIGZvciB0aGUgbmFtZSBvZiB0aGUgcmVnaW9uIHRvIGZvY3VzIG9uLAogICAgICogdGhpcyBvcHRpb24gaXMgaWdub3JlZCBpZiBzdGF0ZSBvciB2aWV3VVJMIGlzIGFsc28gcHJvdmlkZWQuCiAgICAgKi8KICAgIHJlZ2lvbjogewogICAgICB0eXBlOiBTdHJpbmcsCiAgICAgIGRlZmF1bHQ6ICIiCiAgICB9LAogICAgLyoqCiAgICAgKiBPcHRpb25hbCBwcm9wIGZvciBhbiBVUkwgb2YgY29udGFpbmluZyBpbmZvcm1hdGlvbiBvZiBhIHZpZXdwb3J0LgogICAgICogVGhpcyBvcHRpb24gaXMgaWdub3JlZCBpZiBzdGF0ZSBpcyBhbHNvIHByb3ZpZGVkLgogICAgICogSXQgd2lsbCB1c2UgdGhlIHByb3ZpZGVkIFVSTCBhcyBiYXNlIGlmIGEgcmVsYXRpdmUgcGFydGggaXMgcHJvdmlkZWQuCiAgICAgKi8KICAgIHZpZXdVUkw6IHsKICAgICAgdHlwZTogU3RyaW5nLAogICAgICBkZWZhdWx0OiAiIgogICAgfSwKICAgIC8qKgogICAgICogU2V0dGluZ3MgZm9yIHR1cm5pbmcgb24vb2ZmIHJlbmRlcmluZwogICAgICovCiAgICByZW5kZXI6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogdHJ1ZQogICAgfQogIH0sCiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHsKICAgIHJldHVybiB7CiAgICAgIHNjZW5lRGF0YTogdGhpcy4kbW9kdWxlLnNjZW5lRGF0YSwKICAgICAgaXNQbGF5aW5nOiBmYWxzZSwKICAgICAgaXNSZWFkeTogZmFsc2UsCiAgICAgIC8qKgogICAgICAgKiBUaGlzIGlzIHNldCB3aGVuIHNjZW5lIGlzIHRyYW5zaXRpb25pbmcuCiAgICAgICAqLwogICAgICBpc1RyYW5zaXRpb25pbmc6IGZhbHNlLAogICAgICB0b29sdGlwQXBwZW5kVG9Cb2R5OiBmYWxzZSwKICAgICAgaG92ZXJWaXNpYmlsaXRpZXM6IFt7CiAgICAgICAgdmFsdWU6IGZhbHNlCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogZmFsc2UKICAgICAgfSwgewogICAgICAgIHZhbHVlOiBmYWxzZQogICAgICB9LCB7CiAgICAgICAgdmFsdWU6IGZhbHNlCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogZmFsc2UKICAgICAgfSwgewogICAgICAgIHZhbHVlOiBmYWxzZQogICAgICB9LCB7CiAgICAgICAgdmFsdWU6IGZhbHNlCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogZmFsc2UKICAgICAgfSwgewogICAgICAgIHZhbHVlOiBmYWxzZQogICAgICB9XSwKICAgICAgaW5IZWxwOiBmYWxzZSwKICAgICAgbG9hZGluZzogZmFsc2UsCiAgICAgIGR1cmF0aW9uOiAzMDAwLAogICAgICBkcmF3ZXJPcGVuOiB0cnVlLAogICAgICBjdXJyZW50QmFja2dyb3VuZDogIndoaXRlIiwKICAgICAgYXZhaWxhYmxlQmFja2dyb3VuZDogWyJ3aGl0ZSIsICJsaWdodHNreWJsdWUiLCAiYmxhY2siXSwKICAgICAgbWluaW1pc2VkU2xpZGVyOiBmYWxzZSwKICAgICAgc2xpZGVyUG9zaXRpb246ICIiLAogICAgICB0aW1lTWF4OiAxMDAsCiAgICAgIG9yZ2luYWxEdXJhdGlvbjogIiIsCiAgICAgIGFuaW1hdGVEdXJhdGlvbjogIjZzZWNzIiwKICAgICAgcGxheVNwZWVkOiBbewogICAgICAgIHZhbHVlOiAwLjEsCiAgICAgICAgbGFiZWw6ICIwLjF4IgogICAgICB9LCB7CiAgICAgICAgdmFsdWU6IDAuNSwKICAgICAgICBsYWJlbDogIjAuNXgiCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogMSwKICAgICAgICBsYWJlbDogIjF4IgogICAgICB9LCB7CiAgICAgICAgdmFsdWU6IDIsCiAgICAgICAgbGFiZWw6ICIyeCIKICAgICAgfSwgewogICAgICAgIHZhbHVlOiA1LAogICAgICAgIGxhYmVsOiAiNXgiCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogMTAsCiAgICAgICAgbGFiZWw6ICIxMHgiCiAgICAgIH1dLAogICAgICBjdXJyZW50U3BlZWQ6IDEsCiAgICAgIHRpbWVTdGFtcHM6IHt9LAogICAgICBkZWZhdWx0Q2hlY2tlZEtleXM6IFtdLAogICAgICB0RGF0YTogewogICAgICAgIGxhYmVsOiAiIiwKICAgICAgICByZWdpb246ICIiLAogICAgICAgIHZpc2libGU6IGZhbHNlLAogICAgICAgIHg6IDIwMCwKICAgICAgICB5OiAyMDAKICAgICAgfSwKICAgICAgZmlsZUZvcm1hdDogIm1ldGFkYXRhIgogICAgfTsKICB9LAogIHdhdGNoOiB7CiAgICBmb3JtYXQ6IHsKICAgICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcih2YWx1ZSkgewogICAgICAgIHRoaXMuZmlsZUZvcm1hdCA9IHZhbHVlOwogICAgICB9LAogICAgICBpbW1lZGlhdGU6IHRydWUKICAgIH0sCiAgICB1cmw6IHsKICAgICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihuZXdWYWx1ZSkgewogICAgICAgIGlmICh0aGlzLnN0YXRlID09PSB1bmRlZmluZWQgfHwgdGhpcy5zdGF0ZS51cmwgPT09IHVuZGVmaW5lZCkgdGhpcy5zZXRVUkwobmV3VmFsdWUpOwogICAgICB9LAogICAgICBpbW1lZGlhdGU6IHRydWUKICAgIH0sCiAgICByZWdpb246IHsKICAgICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihyZWdpb24pIHsKICAgICAgICBpZiAoISh0aGlzLnN0YXRlIHx8IHRoaXMudmlld1VSTCkpIHRoaXMuc2V0Rm9jdXNlZFJlZ2lvbihyZWdpb24pOwogICAgICB9LAogICAgICBpbW1lZGlhdGU6IHRydWUKICAgIH0sCiAgICBzdGF0ZTogewogICAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKHN0YXRlKSB7CiAgICAgICAgdGhpcy5zZXRTdGF0ZShzdGF0ZSk7CiAgICAgIH0sCiAgICAgIGltbWVkaWF0ZTogdHJ1ZSwKICAgICAgZGVlcDogdHJ1ZQogICAgfSwKICAgIHZpZXdVUkw6IHsKICAgICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcih2aWV3VVJMKSB7CiAgICAgICAgdGhpcy51cGRhdGVWaWV3VVJMKHZpZXdVUkwpOwogICAgICB9LAogICAgICBpbW1lZGlhdGU6IHRydWUKICAgIH0sCiAgICBoZWxwTW9kZTogZnVuY3Rpb24gaGVscE1vZGUodmFsKSB7CiAgICAgIHRoaXMuc2V0SGVscE1vZGUodmFsKTsKICAgIH0sCiAgICBkaXNwbGF5TWFya2VyczogZnVuY3Rpb24gZGlzcGxheU1hcmtlcnModmFsKSB7CiAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5kaXNwbGF5TWFya2VycyA9IHZhbDsKICAgICAgLy9VcGRhdGUgcGlja2FibGUgb2JqZWN0cwogICAgICB0aGlzLiRtb2R1bGUuc2NlbmUuZm9yY2VQaWNrYWJsZU9iamVjdHNVcGRhdGUgPSB0cnVlOwogICAgfSwKICAgIGRpc3BsYXlNaW5pbWFwOiBmdW5jdGlvbiBkaXNwbGF5TWluaW1hcCh2YWwpIHsKICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLmRpc3BsYXlNaW5pbWFwID0gdmFsOwogICAgfSwKICAgICJzY2VuZURhdGEuY3VycmVudFRpbWUiOiBmdW5jdGlvbiBzY2VuZURhdGFDdXJyZW50VGltZSgpIHsKICAgICAgLyoqCiAgICAgICAqIFRyaWdnZXJzIHdoZW4gc2NlbmUgdGltZSBjaGFuZ2VzLgogICAgICAgKgogICAgICAgKiBAcHJvcGVydHkge251bWJlcn0gdGltZSBDdXJyZW50IGJ1aWxkLWluIHRpbWUgb2Ygc2NlbmUuCiAgICAgICAqIG9mIHNlbGVjdGVkIG9iamVjdC4KICAgICAgICovCiAgICAgIHRoaXMuJGVtaXQoInRpbWVDaGFuZ2VkIiwgdGhpcy5zY2VuZURhdGEuY3VycmVudFRpbWUpOwogICAgfSwKICAgIGR1cmF0aW9uOiBmdW5jdGlvbiBkdXJhdGlvbigpIHsKICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLnNldER1cmF0aW9uKHRoaXMuZHVyYXRpb24pOwogICAgfSwKICAgIG1pbmltYXBTZXR0aW5nczogewogICAgICBkZWVwOiB0cnVlLAogICAgICBoYW5kbGVyOiAidXBkYXRlTWluaW1hcFNjaXNzb3IiCiAgICB9LAogICAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIodmFsKSB7CiAgICAgIHRoaXMudG9nZ2xlUmVuZGVyaW5nKHZhbCk7CiAgICB9CiAgfSwKICBiZWZvcmVDcmVhdGU6IGZ1bmN0aW9uIGJlZm9yZUNyZWF0ZSgpIHsKICAgIHRoaXMuJG1vZHVsZSA9IG5ldyBPcmdhbnNWaWV3ZXIoKTsKICAgIHRoaXMuc2VsZWN0ZWRPYmplY3RzID0gW107CiAgICB0aGlzLmhvdmVyZWRPYmplY3RzID0gW107CiAgICB0aGlzLmN1cnJlbnRCYWNrZ3JvdW5kID0gIndoaXRlIjsKICAgIHRoaXMuX2N1cnJlbnRVUkwgPSB1bmRlZmluZWQ7CiAgICB0aGlzLmF2YWlsYWJsZUJhY2tncm91bmQgPSBbIndoaXRlIiwgImJsYWNrIiwgImxpZ2h0c2t5Ymx1ZSJdOwogICAgdGhpcy4kX3NlYXJjaEluZGV4ID0gbmV3IFNlYXJjaEluZGV4KCk7CiAgICB0aGlzLiRfdGVtcElkID0gMTsKICB9LAogIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7CiAgICB0aGlzLiRyZWZzLnRyZWVDb250cm9scy5zZXRNb2R1bGUodGhpcy4kbW9kdWxlKTsKICAgIHZhciBldmVudE5vdGlmaWVyID0gbmV3IEV2ZW50Tm90aWZpZXIoKTsKICAgIGV2ZW50Tm90aWZpZXIuc3Vic2NyaWJlKHRoaXMsIHRoaXMuZXZlbnROb3RpZmllckNhbGxiYWNrKTsKICAgIHRoaXMuJG1vZHVsZS5hZGROb3RpZmllcihldmVudE5vdGlmaWVyKTsKICAgIHRoaXMuJG1vZHVsZS5hZGRPcmdhblBhcnRBZGRlZENhbGxiYWNrKHRoaXMuemluY09iamVjdEFkZGVkKTsKICAgIHRoaXMuJG1vZHVsZS5pbml0aWFsaXNlUmVuZGVyZXIodGhpcy4kcmVmcy5kaXNwbGF5KTsKICAgIHRoaXMudG9nZ2xlUmVuZGVyaW5nKHRoaXMucmVuZGVyKTsKICAgIHRoaXMucm8gPSBuZXcgUmVzaXplT2JzZXJ2ZXIodGhpcy5hZGp1c3RMYXlvdXQpLm9ic2VydmUodGhpcy4kcmVmcy5zY2FmZm9sZENvbnRhaW5lcik7CiAgICB0aGlzLmRlZmF1bHRSYXRlID0gdGhpcy4kbW9kdWxlLmdldFBsYXlSYXRlKCk7CiAgfSwKICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkgewogICAgaWYgKHRoaXMucm8pIHRoaXMucm8uZGlzY29ubmVjdCgpOwogICAgdGhpcy4kbW9kdWxlLmRlc3Ryb3koKTsKICAgIHRoaXMuJG1vZHVsZSA9IHVuZGVmaW5lZDsKICB9LAogIG1ldGhvZHM6IHsKICAgIC8qKgogICAgICogVGhpcyBpcyBjYWxsZWQgd2hlbiBhIG5ldyB6aW5jIG9iamVjdCBpcyByZWFkIGludG8gdGhlIHNjZW5lLgogICAgICovCiAgICB6aW5jT2JqZWN0QWRkZWQ6IGZ1bmN0aW9uIHppbmNPYmplY3RBZGRlZCh6aW5jT2JqZWN0KSB7CiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlOwogICAgICB6aW5jT2JqZWN0LnNlYXJjaEluZGV4SWQgPSArK3RoaXMuJF90ZW1wSWQ7CiAgICAgIHRoaXMuJF9zZWFyY2hJbmRleC5hZGRaaW5jT2JqZWN0KHppbmNPYmplY3QsIHppbmNPYmplY3Quc2VhcmNoSW5kZXhJZCk7CiAgICAgIHRoaXMuJGVtaXQoInppbmMtb2JqZWN0LWFkZGVkIiwgemluY09iamVjdCk7CiAgICB9LAogICAgLyoqCiAgICAgKiBUaGlzIGlzIGNhbGxlZCB3aGVuIENoYW5nZSBiYWNrZ3NwZWVkcm91bmQgY29sb3VyIGJ1dHRvbgogICAgICogaXMgcHJlc3NlZCBhbiBjYXVzZXMgdGhlIGJhY2tncm91Q29sb3JuZCBjb2xvdXIgdG8gYmUgY2hhbmdlZAogICAgICogdG8gb25lIG9mIHRoZSB0aHJlZSBwcmVzZXQgY29sb3VyOiB3aGl0ZSwgYmxhY2sgYW5kCiAgICAgKiBsaWdodHNreWJsdWUuCiAgICAgKi8KICAgIGJhY2tncm91bmRDaGFuZ2VDYWxsYmFjazogZnVuY3Rpb24gYmFja2dyb3VuZENoYW5nZUNhbGxiYWNrKGNvbG91cikgewogICAgICB0aGlzLmN1cnJlbnRCYWNrZ3JvdW5kID0gY29sb3VyOwogICAgICB0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyLmdldFRocmVlSlNSZW5kZXJlcigpLnNldENsZWFyQ29sb3IodGhpcy5jdXJyZW50QmFja2dyb3VuZCwgMSk7CiAgICB9LAogICAgLyoqCiAgICAgKiBUaGlzIGlzIGNhbGxlZCBieSBjYXB0dWVlU2NyZWVuc2hvdCBhbmQgYWZ0ZXIgdGhlIGxhc3QgcmVuZGVyCiAgICAgKiBsb29wLCBpdCBkb3dubG9hZCBhIHNjcmVlbnNob3Qgb2YgdGhlIGN1cnJlbnQgc2NlbmUgd2l0aCBubyBVSS4KICAgICAqLwogICAgY2FwdHVyZVNjcmVlbnNob3RDYWxsYmFjazogZnVuY3Rpb24gY2FwdHVyZVNjcmVlbnNob3RDYWxsYmFjaygpIHsKICAgICAgLy9SZW1vdmUgdGhlIGNhbGxiYWNrLCBvbmx5IG5lZWRzIHRvIGhhcHBlbiBvbmNlCiAgICAgIHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIucmVtb3ZlUG9zdFJlbmRlckNhbGxiYWNrRnVuY3Rpb24odGhpcy5jYXB0dXJlSUQpOwogICAgICB2YXIgc2NyZWVuc2hvdCA9IHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIuZ2V0VGhyZWVKU1JlbmRlcmVyKCkuZG9tRWxlbWVudC50b0RhdGFVUkwoImltYWdlL3BuZyIpOwogICAgICB2YXIgaHJlZkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7CiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kKGhyZWZFbGVtZW50KTsKICAgICAgaWYgKCF0aGlzLmNhcHR1cmVGaWxlbmFtZSkgaHJlZkVsZW1lbnQuZG93bmxvYWQgPSAic2NyZWVuc2hvdC5wbmciO2Vsc2UgaHJlZkVsZW1lbnQuZG93bmxvYWQgPSB0aGlzLmNhcHR1cmVGaWxlbmFtZTsKICAgICAgaHJlZkVsZW1lbnQuaHJlZiA9IHNjcmVlbnNob3Q7CiAgICAgIGhyZWZFbGVtZW50LmNsaWNrKCk7CiAgICAgIGhyZWZFbGVtZW50LnJlbW92ZSgpOwogICAgfSwKICAgIC8qKgogICAgICogRnVuY3Rpb24gZm9yIGNhcHR1cmluZyBhIHNjcmVlbnNob3Qgb2YgdGhlIGN1cnJlbnQgcmVuZGVyaW5nLgogICAgICoKICAgICAqIEBwYXJhbSB7U3RyaW5nfSBmaWxlbmFtZSBmaWxlbmFtZSBnaXZlbiB0byB0aGUgc2NyZWVuc2hvdC4KICAgICAqCiAgICAgKiBAcHVibGljCiAgICAgKi8KICAgIGNhcHR1cmVTY3JlZW5zaG90OiBmdW5jdGlvbiBjYXB0dXJlU2NyZWVuc2hvdChmaWxlbmFtZSkgewogICAgICB0aGlzLmNhcHR1cmVGaWxlbmFtZSA9IGZpbGVuYW1lOwogICAgICB0aGlzLmNhcHR1cmVJRCA9IHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIuYWRkUG9zdFJlbmRlckNhbGxiYWNrRnVuY3Rpb24odGhpcy5jYXB0dXJlU2NyZWVuc2hvdENhbGxiYWNrKTsKICAgIH0sCiAgICBmb3JtYXRUb29sdGlwOiBmdW5jdGlvbiBmb3JtYXRUb29sdGlwKHZhbCkgewogICAgICBpZiAodGhpcy50aW1lTWF4ID49IDEwMDApIHsKICAgICAgICBpZiAodmFsKSB7CiAgICAgICAgICB2YXIgc2VjID0gKHZhbCAlIDYwMDAwIC8gMTAwMCkudG9GaXhlZCgyKSArICJzIjsKICAgICAgICAgIHZhciBtaW4gPSB2YWwgPiA2MDAwMCA/ICh2YWwgLyA2MDAwMCkudG9GaXhlZCgwKSArICJtICIgOiAiIjsKICAgICAgICAgIHJldHVybiBtaW4gKyBzZWM7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiB2YWwgPyB2YWwudG9GaXhlZCgyKSArICIgbXMiIDogIjAgbXMiOwogICAgfSwKICAgIC8qKgogICAgICogRnVuY3Rpb24gdG8gcmVzZXQgdGhlIHZpZXcgdG8gZGVmYXVsdC4KICAgICAqIEFsc28gY2FsbGVkIHdoZW4gdGhlIGFzc29jaWF0ZWQgYnV0dG9uIGlzIHByZXNzZWQuCiAgICAgKgogICAgICogQHB1YmxpYwogICAgICovCiAgICBmaXRXaW5kb3c6IGZ1bmN0aW9uIGZpdFdpbmRvdygpIHsKICAgICAgaWYgKHRoaXMuJG1vZHVsZS5zY2VuZSkgewogICAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS52aWV3QWxsKCk7CiAgICAgIH0KICAgIH0sCiAgICAvKioKICAgICAqIEZ1bmN0aW9uIHRvIHpvb20gaW4uCiAgICAgKiBBbHNvIGNhbGxlZCB3aGVuIHRoZSBhc3NvY2lhdGVkIGJ1dHRvbiBpcyBwcmVzc2VkLgogICAgICoKICAgICAqIEBwdWJsaWMKICAgICAqLwogICAgem9vbUluOiBmdW5jdGlvbiB6b29tSW4oKSB7CiAgICAgIGlmICh0aGlzLiRtb2R1bGUuc2NlbmUpIHsKICAgICAgICB0aGlzLiRtb2R1bGUuc2NlbmUuY2hhbmdlWm9vbUJ5U2Nyb2xsUmF0ZVVuaXQoLTEpOwogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBGdW5jdGlvbiB0byB6b29tIG91dC4KICAgICAqIEFsc28gY2FsbGVkIHdoZW4gdGhlIGFzc29jaWF0ZWQgYnV0dG9uIGlzIHByZXNzZWQuCiAgICAgKgogICAgICogQHB1YmxpYwogICAgICovCiAgICB6b29tT3V0OiBmdW5jdGlvbiB6b29tT3V0KCkgewogICAgICBpZiAodGhpcy4kbW9kdWxlLnNjZW5lKSB7CiAgICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLmNoYW5nZVpvb21CeVNjcm9sbFJhdGVVbml0KDEpOwogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBGdW5jdGlvbiB0byBjaGFuZ2UgdGhlIGN1cnJlbnQgcGxheSBzcGVlZC4KICAgICAqCiAgICAgKiBAcHVibGljCiAgICAgKi8KICAgIHNwZWVkQ2hhbmdlZDogZnVuY3Rpb24gc3BlZWRDaGFuZ2VkKHNwZWVkKSB7CiAgICAgIHRoaXMuY3VycmVudFNwZWVkID0gc3BlZWQ7CiAgICAgIHRoaXMuJG1vZHVsZS5zZXRQbGF5UmF0ZSh0aGlzLmRlZmF1bHRSYXRlICogdGhpcy5jdXJyZW50U3BlZWQpOwogICAgfSwKICAgIC8qKgogICAgICogRnVuY3Rpb24gdXNlZCB0byBzdG9wIHRoZSBmcmVlIHNwaW4KICAgICAqCiAgICAgKiBAcHVibGljCiAgICAgKi8KICAgIHN0b3BGcmVlU3BpbjogZnVuY3Rpb24gc3RvcEZyZWVTcGluKCkgewogICAgICB2YXIgY2FtZXJhY29udHJvbCA9IHRoaXMuJG1vZHVsZS5zY2VuZS5nZXRaaW5jQ2FtZXJhQ29udHJvbHMoKTsKICAgICAgY2FtZXJhY29udHJvbC5zdG9wQXV0b1R1bWJsZSgpOwogICAgICB0aGlzLmlzVHJhbnNpdGlvbmluZyA9IGZhbHNlOwogICAgfSwKICAgIGZpbmRPYmplY3RzV2l0aEdyb3VwTmFtZTogZnVuY3Rpb24gZmluZE9iamVjdHNXaXRoR3JvdXBOYW1lKG5hbWUpIHsKICAgICAgdmFyIG9iamVjdHMgPSBbXTsKICAgICAgaWYgKG5hbWUgJiYgbmFtZSAhPSAiIiAmJiB0aGlzLiRtb2R1bGUuc2NlbmUpIHsKICAgICAgICBvYmplY3RzID0gdGhpcy4kbW9kdWxlLnNjZW5lLmZpbmRPYmplY3RzV2l0aEdyb3VwTmFtZShuYW1lKTsKICAgICAgfQogICAgICByZXR1cm4gb2JqZWN0czsKICAgIH0sCiAgICAvKioKICAgICAqIEZvY3VzIG9uIG5hbWVkIHJlZ2lvbgogICAgICovCiAgICB2aWV3UmVnaW9uOiBmdW5jdGlvbiB2aWV3UmVnaW9uKG5hbWVzKSB7CiAgICAgIHZhciByb290UmVnaW9uID0gdGhpcy4kbW9kdWxlLnNjZW5lLmdldFJvb3RSZWdpb24oKTsKICAgICAgdmFyIGdyb3VwcyA9IEFycmF5LmlzQXJyYXkobmFtZXMpID8gbmFtZXMgOiBbbmFtZXNdOwogICAgICB2YXIgb2JqZWN0cyA9IGZpbmRPYmplY3RzV2l0aE5hbWVzKHJvb3RSZWdpb24sIGdyb3VwcywgIiIsIHRydWUpOwogICAgICB2YXIgYm94ID0gdGhpcy4kbW9kdWxlLnNjZW5lLmdldEJvdW5kaW5nQm94T2ZaaW5jT2JqZWN0cyhvYmplY3RzKTsKICAgICAgaWYgKGJveCkgewogICAgICAgIGlmICh0aGlzLiRtb2R1bGUuaXNTeW5jQ29udHJvbCgpKSB7CiAgICAgICAgICB0aGlzLiRtb2R1bGUuc2V0U3luY0NvbnRyb2xab29tVG9Cb3goYm94KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdmFyIGRpc3QgPSB0aGlzLiRtb2R1bGUuc2NlbmUuY2FtZXJhLmZhciAtIHRoaXMuJG1vZHVsZS5zY2VuZS5jYW1lcmEubmVhcjsKICAgICAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS52aWV3QWxsV2l0aEJvdW5kaW5nQm94KGJveCk7CiAgICAgICAgICB0aGlzLiRtb2R1bGUuc2NlbmUuY2FtZXJhLmZhciA9IHRoaXMuJG1vZHVsZS5zY2VuZS5jYW1lcmEubmVhciArIGRpc3Q7CiAgICAgICAgICB0aGlzLiRtb2R1bGUuc2NlbmUuY2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0KICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSwKICAgIHNldEZvY3VzZWRSZWdpb246IGZ1bmN0aW9uIHNldEZvY3VzZWRSZWdpb24obmFtZSkgewogICAgICBpZiAobmFtZSkgewogICAgICAgIGlmICh0aGlzLmlzUmVhZHkpIHsKICAgICAgICAgIHRoaXMudmlld1JlZ2lvbihuYW1lKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhpcy4kbW9kdWxlLnNldEZpbmlzaERvd25sb2FkQ2FsbGJhY2sodGhpcy5zZXRVUkxGaW5pc2hDYWxsYmFjayh7CiAgICAgICAgICAgIHJlZ2lvbjogbmFtZQogICAgICAgICAgfSkpOwogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgIHVwZGF0ZVZpZXdVUkw6IGZ1bmN0aW9uIHVwZGF0ZVZpZXdVUkwodmlld1VSTCkgewogICAgICBpZiAodmlld1VSTCkgewogICAgICAgIGlmICh0aGlzLmlzUmVhZHkpIHsKICAgICAgICAgIHZhciB1cmwgPSBuZXcgVVJMKHZpZXdVUkwsIHRoaXMudXJsKTsKICAgICAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5sb2FkVmlld1VSTCh1cmwpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0aGlzLiRtb2R1bGUuc2V0RmluaXNoRG93bmxvYWRDYWxsYmFjayh0aGlzLnNldFVSTEZpbmlzaENhbGxiYWNrKHsKICAgICAgICAgICAgdmlld1VSTDogdmlld1VSTAogICAgICAgICAgfSkpOwogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgIGdldFJlbmRlcmVySW5mbzogZnVuY3Rpb24gZ2V0UmVuZGVyZXJJbmZvKCkgewogICAgICBpZiAodGhpcy4kbW9kdWxlLnppbmNSZW5kZXJlcikgewogICAgICAgIHJldHVybiB0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyLmdldFRocmVlSlNSZW5kZXJlcigpLmluZm87CiAgICAgIH0KICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgIH0sCiAgICAvKioKICAgICAqIEZ1bmN0aW9uIHVzZWQgdG8gcm90YXRlIHRoZSBzY2VuZS4KICAgICAqIEFsc28gY2FsbGVkIHdoZW4gdGhlIGFzc29jaWF0ZWQgYnV0dG9uIGlzIHByZXNzZWQuCiAgICAgKgogICAgICogQHB1YmxpYwogICAgICovCiAgICBmcmVlU3BpbjogZnVuY3Rpb24gZnJlZVNwaW4oKSB7CiAgICAgIGlmICh0aGlzLiRtb2R1bGUuc2NlbmUpIHsKICAgICAgICB2YXIgY2FtZXJhY29udHJvbCA9IHRoaXMuJG1vZHVsZS5zY2VuZS5nZXRaaW5jQ2FtZXJhQ29udHJvbHMoKTsKICAgICAgICB0aGlzLmlzVHJhbnNpdGlvbmluZyA9IHRydWU7CiAgICAgICAgY2FtZXJhY29udHJvbC5lbmFibGVBdXRvVHVtYmxlKCk7CiAgICAgICAgY2FtZXJhY29udHJvbC5hdXRvVHVtYmxlKFsxLjAsIDAuMF0sIE1hdGguUEksIHRydWUpOwogICAgICAgIHNldFRpbWVvdXQodGhpcy5zdG9wRnJlZVNwaW4sIDQwMDApOwogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBDYWxsYmFjayB3aGVuIGEgcmVnaW9uIGlzIHNlbGVjdGVkL2hpZ2hsaWdodGVkLgogICAgICogSXQgd2lsbCBhbHNvIHVwZGF0ZSBvdGhlciBjb250cm9scy4KICAgICAqCiAgICAgKi8KICAgIGV2ZW50Tm90aWZpZXJDYWxsYmFjazogZnVuY3Rpb24gZXZlbnROb3RpZmllckNhbGxiYWNrKGV2ZW50KSB7CiAgICAgIHZhciBuYW1lcyA9IFtdOwogICAgICB2YXIgemluY09iamVjdHMgPSBbXTsKICAgICAgdmFyIHJlZ2lvbiA9IHVuZGVmaW5lZDsKICAgICAgaWYgKGV2ZW50LmV2ZW50VHlwZSA9PSAxIHx8IGV2ZW50LmV2ZW50VHlwZSA9PSAyKSB7CiAgICAgICAgZXZlbnQuaWRlbnRpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAoaWRlbnRpZmllcikgewogICAgICAgICAgaWYgKGlkZW50aWZpZXIpIHsKICAgICAgICAgICAgdmFyIGlkID0gaWRlbnRpZmllci5kYXRhLmlkID8gaWRlbnRpZmllci5kYXRhLmlkIDogaWRlbnRpZmllci5kYXRhLmdyb3VwOwogICAgICAgICAgICBuYW1lcy5wdXNoKGlkKTsKICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICB6aW5jT2JqZWN0cyA9IGV2ZW50LnppbmNPYmplY3RzOwogICAgICB9CiAgICAgIC8qCiAgICAgICAqIEV2ZW50IFR5cGUgMTogU2VsZWN0ZWQKICAgICAgICogRXZlbnQgVHlwZSAyOiBIaWdobGlnaHRlZAogICAgICAgKiBFdmVudCBUeXBlIDE6IE1vdmUKICAgICAgICovCiAgICAgIGlmIChldmVudC5ldmVudFR5cGUgPT0gMSkgewogICAgICAgIGlmICh0aGlzLiRyZWZzLnRyZWVDb250cm9scykgewogICAgICAgICAgaWYgKG5hbWVzLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgLy90aGlzLiRyZWZzLnRyZWVDb250cm9scy5jaGFuZ2VBY3RpdmVCeU5hbWVzKG5hbWVzLCByZWdpb24sIGZhbHNlKTsKICAgICAgICAgICAgdGhpcy4kcmVmcy50cmVlQ29udHJvbHMudXBkYXRlQWN0aXZlVUkoemluY09iamVjdHMpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhpcy5oaWRlUmVnaW9uVG9vbHRpcCgpOwogICAgICAgICAgICB0aGlzLiRyZWZzLnRyZWVDb250cm9scy5yZW1vdmVBY3RpdmUodHJ1ZSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIC8vIFRyaWdnZXJzIHdoZW4gYW4gb2JqZWN0IGhhcyBiZWVuIHNlbGVjdGVkCiAgICAgICAgdGhpcy4kZW1pdCgic2NhZmZvbGQtc2VsZWN0ZWQiLCBldmVudC5pZGVudGlmaWVycyk7CiAgICAgIH0gZWxzZSBpZiAoZXZlbnQuZXZlbnRUeXBlID09IDIpIHsKICAgICAgICBpZiAodGhpcy5zZWxlY3RlZE9iamVjdHMubGVuZ3RoID09PSAwKSB7CiAgICAgICAgICB0aGlzLmhpZGVSZWdpb25Ub29sdGlwKCk7CiAgICAgICAgICAvLyBjb25zdCBvZmZzZXRzID0gdGhpcy4kcmVmcy5zY2FmZm9sZENvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICAgIGlmICh0aGlzLiRyZWZzLnRyZWVDb250cm9scykgewogICAgICAgICAgICBpZiAobmFtZXMubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgIC8vdGhpcy4kcmVmcy50cmVlQ29udHJvbHMuY2hhbmdlSG92ZXJCeU5hbWVzKG5hbWVzLCByZWdpb24sIGZhbHNlKTsKICAgICAgICAgICAgICB0aGlzLiRyZWZzLnRyZWVDb250cm9scy51cGRhdGVIb3ZlclVJKHppbmNPYmplY3RzKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICB0aGlzLiRyZWZzLnRyZWVDb250cm9scy5yZW1vdmVIb3Zlcih0cnVlKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgaWYgKGV2ZW50LmlkZW50aWZpZXJzLmxlbmd0aCA+IDAgJiYgZXZlbnQuaWRlbnRpZmllcnNbMF0pIHsKICAgICAgICAgICAgdmFyIGlkID0gZXZlbnQuaWRlbnRpZmllcnNbMF0uZGF0YS5pZCA/IGV2ZW50LmlkZW50aWZpZXJzWzBdLmRhdGEuaWQgOiBldmVudC5pZGVudGlmaWVyc1swXS5kYXRhLmdyb3VwOwogICAgICAgICAgICBpZiAoZXZlbnQuaWRlbnRpZmllcnNbMF0uY29vcmRzKSB7CiAgICAgICAgICAgICAgdGhpcy50RGF0YS52aXNpYmxlID0gdHJ1ZTsKICAgICAgICAgICAgICB0aGlzLnREYXRhLmxhYmVsID0gaWQ7CiAgICAgICAgICAgICAgaWYgKGV2ZW50LmlkZW50aWZpZXJzWzBdLmRhdGEucmVnaW9uKSB0aGlzLnREYXRhLnJlZ2lvbiA9IGV2ZW50LmlkZW50aWZpZXJzWzBdLmRhdGEucmVnaW9uO2Vsc2UgdGhpcy50RGF0YS5yZWdpb24gPSAiUm9vdCI7CiAgICAgICAgICAgICAgdGhpcy50RGF0YS54ID0gZXZlbnQuaWRlbnRpZmllcnNbMF0uY29vcmRzLng7CiAgICAgICAgICAgICAgdGhpcy50RGF0YS55ID0gZXZlbnQuaWRlbnRpZmllcnNbMF0uY29vcmRzLnk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIC8vIFRyaWdnZXJzIHdoZW4gYW4gb2JqZWN0IGhhcyBiZWVuIGhpZ2hsaWdodGVkCiAgICAgICAgICB0aGlzLiRlbWl0KCJzY2FmZm9sZC1oaWdobGlnaHRlZCIsIGV2ZW50LmlkZW50aWZpZXJzKTsKICAgICAgICB9CiAgICAgIH0gZWxzZSBpZiAoZXZlbnQuZXZlbnRUeXBlID09IDMpIHsKICAgICAgICAvL01PVkUKICAgICAgICBpZiAoZXZlbnQuaWRlbnRpZmllcnMubGVuZ3RoID4gMCAmJiBldmVudC5pZGVudGlmaWVyc1swXSkgewogICAgICAgICAgaWYgKGV2ZW50LmlkZW50aWZpZXJzWzBdLmNvb3JkcykgewogICAgICAgICAgICB2YXIgb2Zmc2V0cyA9IHRoaXMuJHJlZnMuc2NhZmZvbGRDb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgICAgIHRoaXMudERhdGEueCA9IGV2ZW50LmlkZW50aWZpZXJzWzBdLmNvb3Jkcy54IC0gb2Zmc2V0cy5sZWZ0OwogICAgICAgICAgICB0aGlzLnREYXRhLnkgPSBldmVudC5pZGVudGlmaWVyc1swXS5jb29yZHMueSAtIG9mZnNldHMudG9wOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgIC8qKgogICAgICogR2V0IHRoZSBjb29yZGluYXRlcyBvZiB0aGUgY3VycmVudCBzZWxlY3RlZCByZWdpb24uCiAgICAgKgogICAgICogQHB1YmxpYwogICAgICovCiAgICBnZXRDb29yZGluYXRlc09mU2VsZWN0ZWQ6IGZ1bmN0aW9uIGdldENvb3JkaW5hdGVzT2ZTZWxlY3RlZCgpIHsKICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRPYmplY3RzICYmIHRoaXMuc2VsZWN0ZWRPYmplY3RzLmxlbmd0aCA+IDApIHsKICAgICAgICByZXR1cm4gdGhpcy4kbW9kdWxlLnNjZW5lLmdldE9iamVjdHNTY3JlZW5YWSh0aGlzLnNlbGVjdGVkT2JqZWN0cyk7CiAgICAgIH0KICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgIH0sCiAgICAvKioKICAgICAqIFJldHVybiBhbiBvYmplY3QgY29udGFpbmluZyB0aGUgd2luZG93IGNvb3JkaW5hdGVzIG9mIHRoZQogICAgICogY3VycmVudCBzZWxlY3RlZCByZWdpb24gd2hpY2ggd2lsbCBiZSB1cGRhdGVkIGFmdGVyIGVhY2ggcmVuZGVyCiAgICAgKiBsb29wLgogICAgICoKICAgICAqIEBwdWJsaWMKICAgICAqLwogICAgZ2V0RHluYW1pY1NlbGVjdGVkQ29vcmRpbmF0ZXM6IGZ1bmN0aW9uIGdldER5bmFtaWNTZWxlY3RlZENvb3JkaW5hdGVzKCkgewogICAgICByZXR1cm4gdGhpcy4kbW9kdWxlLnNlbGVjdGVkU2NyZWVuQ29vcmRpbmF0ZXM7CiAgICB9LAogICAgLyoqCiAgICAgKiBDYWxsYmFjayB3aGVuIHRpbWUgaXMgY2hhbmdlZCB0aHJvdWdoIHRoZSBVSS4KICAgICAqLwogICAgdGltZUNoYW5nZTogZnVuY3Rpb24gdGltZUNoYW5nZShldmVudCkgewogICAgICB2YXIgbm9ybWFsaXplZFRpbWUgPSBldmVudCAvIHRoaXMudGltZU1heCAqIDEwMDsKICAgICAgaWYgKG5vcm1hbGl6ZWRUaW1lICE9IHRoaXMuc2NlbmVEYXRhLmN1cnJlbnRUaW1lKSB0aGlzLiRtb2R1bGUudXBkYXRlVGltZShub3JtYWxpemVkVGltZSk7CiAgICB9LAogICAgLyoqCiAgICAgKiBBIGNhbGxiYWNrIHVzZWQgYnkgY2hpbGRyZW4gY29tcG9uZW50cy4gU2V0IHRoZSBzZWxlY3RlZCB6aW5jIG9iamVjdAogICAgICoKICAgICAqIEBwYXJhbSB7b2JqZWN0fSBvYmplY3QgWmluYyBvYmplY3QKICAgICAqLwogICAgb2JqZWN0U2VsZWN0ZWQ6IGZ1bmN0aW9uIG9iamVjdFNlbGVjdGVkKG9iamVjdHMsIHByb3BhZ2F0ZSkgewogICAgICB0aGlzLnNlbGVjdGVkT2JqZWN0cyA9IG9iamVjdHM7CiAgICAgIGlmICh0aGlzLnNlbGVjdGVkT2JqZWN0cyAmJiB0aGlzLnNlbGVjdGVkT2JqZWN0cy5sZW5ndGggPiAwKSB0aGlzLiRyZWZzLm9wYWNpdHlDb250cm9sLnNldE9iamVjdCh0aGlzLnNlbGVjdGVkT2JqZWN0c1swXSk7CiAgICAgIHRoaXMuJG1vZHVsZS5zZXRTZWxlY3RlZEJ5WmluY09iamVjdHMob2JqZWN0cywgdW5kZWZpbmVkLCBwcm9wYWdhdGUpOwogICAgfSwKICAgIC8qKgogICAgICogQSBjYWxsYmFjayB1c2VkIGJ5IGNoaWxkcmVuIGNvbXBvbmVudHMuIFNldCB0aGUgaGlnaGxpZ2h0ZWQgemluYyBvYmplY3QKICAgICAqCiAgICAgKiBAcGFyYW0ge29iamVjdH0gb2JqZWN0IFppbmMgb2JqZWN0CiAgICAgKi8KICAgIG9iamVjdEhvdmVyZWQ6IGZ1bmN0aW9uIG9iamVjdEhvdmVyZWQob2JqZWN0cywgcHJvcGFnYXRlKSB7CiAgICAgIHRoaXMuaG92ZXJlZE9iamVjdHMgPSBvYmplY3RzOwogICAgICB0aGlzLiRtb2R1bGUuc2V0SGlnaGxpZ2h0ZWRCeVppbmNPYmplY3RzKG9iamVjdHMsIHVuZGVmaW5lZCwgcHJvcGFnYXRlKTsKICAgIH0sCiAgICAvKioKICAgICAqIFNldCB0aGUgc2VsZWN0ZWQgYnkgbmFtZS4KICAgICAqCiAgICAgKiBAcGFyYW0ge30gbmFtZSBOYW1lIG9mIHRoZSBncm91cAogICAgICovCiAgICBjaGFuZ2VBY3RpdmVCeU5hbWU6IGZ1bmN0aW9uIGNoYW5nZUFjdGl2ZUJ5TmFtZShuYW1lcywgcmVnaW9uLCBwcm9wYWdhdGUpIHsKICAgICAgdmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5KG5hbWVzKTsKICAgICAgaWYgKG5hbWVzID09PSB1bmRlZmluZWQgfHwgaXNBcnJheSAmJiBuYW1lcy5sZW5ndGggPT09IDApIHsKICAgICAgICB0aGlzLiRyZWZzLnRyZWVDb250cm9scy5yZW1vdmVBY3RpdmUocHJvcGFnYXRlKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB2YXIgYXJyYXkgPSBuYW1lczsKICAgICAgICBpZiAoIWlzQXJyYXkpIGFycmF5ID0gW2FycmF5XTsKICAgICAgICB0aGlzLiRyZWZzLnRyZWVDb250cm9scy5jaGFuZ2VBY3RpdmVCeU5hbWVzKGFycmF5LCByZWdpb24sIHByb3BhZ2F0ZSk7CiAgICAgIH0KICAgIH0sCiAgICAvKioKICAgICAqIFNldCB0aGUgaGlnaGxpZ2h0ZWQgYnkgbmFtZS4KICAgICAqCiAgICAgKiBAcGFyYW0ge25hbWV9IG5hbWUgTmFtZSBvZiB0aGUgZ3JvdXAKICAgICAqLwogICAgY2hhbmdlSGlnaGxpZ2h0ZWRCeU5hbWU6IGZ1bmN0aW9uIGNoYW5nZUhpZ2hsaWdodGVkQnlOYW1lKG5hbWVzLCByZWdpb24sIHByb3BhZ2F0ZSkgewogICAgICB2YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkobmFtZXMpOwogICAgICBpZiAobmFtZXMgPT09IHVuZGVmaW5lZCB8fCBpc0FycmF5ICYmIG5hbWVzLmxlbmd0aCA9PT0gMCkgewogICAgICAgIHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzLnJlbW92ZUhvdmVyKHByb3BhZ2F0ZSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdmFyIGFycmF5ID0gbmFtZXM7CiAgICAgICAgaWYgKCFpc0FycmF5KSBhcnJheSA9IFthcnJheV07CiAgICAgICAgdGhpcy4kcmVmcy50cmVlQ29udHJvbHMuY2hhbmdlSG92ZXJCeU5hbWVzKGFycmF5LCByZWdpb24sIHByb3BhZ2F0ZSk7CiAgICAgIH0KICAgIH0sCiAgICAvKioKICAgICAqIFN0YXJ0IHRoZSBhbmltYXRpb24uCiAgICAgKgogICAgICogQHBhcmFtIHtvYmplY3R9IG9iamVjdCBaaW5jIG9iamVjdAogICAgICovCiAgICBwbGF5OiBmdW5jdGlvbiBwbGF5KGZsYWcpIHsKICAgICAgdGhpcy4kbW9kdWxlLnBsYXlBbmltYXRpb24oZmxhZyk7CiAgICAgIHRoaXMuaXNQbGF5aW5nID0gZmxhZzsKICAgICAgLy9IaWRlIHRvb2x0aXAgYXMgbG9jYXRpb24gbWF5CiAgICAgIC8vdGhpcy5oaWRlUmVnaW9uVG9vbHRpcCgpOwogICAgfSwKCiAgICAvKioKICAgICAqIEZ1bmN0aW9uIHRvIHRvZ2dsZSBvbi9vZmYgb3ZlcmxheSBoZWxwLgogICAgICovCiAgICBzZXRIZWxwTW9kZTogZnVuY3Rpb24gc2V0SGVscE1vZGUoaGVscE1vZGUpIHsKICAgICAgaWYgKGhlbHBNb2RlKSB7CiAgICAgICAgdGhpcy5pbkhlbHAgPSB0cnVlOwogICAgICAgIHRoaXMuaG92ZXJWaXNpYmlsaXRpZXMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgaXRlbS52YWx1ZSA9IHRydWU7CiAgICAgICAgfSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5pbkhlbHAgPSBmYWxzZTsKICAgICAgICB0aGlzLmhvdmVyVmlzaWJpbGl0aWVzLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgIGl0ZW0udmFsdWUgPSBmYWxzZTsKICAgICAgICB9KTsKICAgICAgfQogICAgfSwKICAgIC8qKgogICAgICogQ2FsbGJhY2sgZnVuY3Rpb24gdXNlZCBieSBzaG93UmVnaW9uVG9vbHRpcCBpbiB0aGUgY2FzZSB3aGVuIHRoZSB0b29sdGlwCiAgICAgKiBpcyBvdXQgb2Ygdmlldy4KICAgICAqLwogICAgZGlzcGxheVRvb2x0aXBPZk9iamVjdHNDYWxsYmFjazogZnVuY3Rpb24gZGlzcGxheVRvb2x0aXBPZk9iamVjdHNDYWxsYmFjayhuYW1lLCBvYmplY3RzLCByZXNldFZpZXcsIGxpdmVVcGRhdGVzKSB7CiAgICAgIHZhciBpbnN0YW5jZSA9IHRoaXM7CiAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CiAgICAgICAgaW5zdGFuY2UuJG1vZHVsZS56aW5jUmVuZGVyZXIucmVtb3ZlUG9zdFJlbmRlckNhbGxiYWNrRnVuY3Rpb24oaW5zdGFuY2UuJF9yZWdpb25Ub29sdGlwQ2FsbGJhY2spOwogICAgICAgIGluc3RhbmNlLiRfcmVnaW9uVG9vbHRpcENhbGxiYWNrID0gdW5kZWZpbmVkOwogICAgICAgIGluc3RhbmNlLmRpc3BsYXlUb29sdGlwT2ZPYmplY3RzKG5hbWUsIG9iamVjdHMsIHJlc2V0VmlldywgbGl2ZVVwZGF0ZXMpOwogICAgICB9OwogICAgfSwKICAgIGxpdmVVcGRhdGVUb29sdGlwUG9zaXRpb246IGZ1bmN0aW9uIGxpdmVVcGRhdGVUb29sdGlwUG9zaXRpb24oKSB7CiAgICAgIGlmICh0aGlzLiRtb2R1bGUuc2VsZWN0ZWRDZW50ZXIpIHsKICAgICAgICB0aGlzLnREYXRhLnggPSB0aGlzLiRtb2R1bGUuc2VsZWN0ZWRTY3JlZW5Db29yZGluYXRlcy54OwogICAgICAgIHRoaXMudERhdGEueSA9IHRoaXMuJG1vZHVsZS5zZWxlY3RlZFNjcmVlbkNvb3JkaW5hdGVzLnk7CiAgICAgIH0KICAgIH0sCiAgICBkaXNwbGF5VG9vbHRpcE9mT2JqZWN0czogZnVuY3Rpb24gZGlzcGxheVRvb2x0aXBPZk9iamVjdHMobmFtZSwgb2JqZWN0cywgcmVzZXRWaWV3LCBsaXZlVXBkYXRlcykgewogICAgICBpZiAob2JqZWN0cy5sZW5ndGggPiAwKSB7CiAgICAgICAgdmFyIGNvb3JkcyA9IG9iamVjdHNbMF0uZ2V0Q2xvc2VzdFZlcnRleERPTUVsZW1lbnRDb29yZHModGhpcy4kbW9kdWxlLnNjZW5lKTsKICAgICAgICBpZiAoY29vcmRzKSB7CiAgICAgICAgICAvL1RoZSBjb29yZHMgaXMgbm90IGluIHZpZXcsIHZpZXcgYWxsIGlmIHJlc2V0VmlldyBmbGFnIGlzIHRydWUKICAgICAgICAgIGlmICghY29vcmRzLmluVmlldykgewogICAgICAgICAgICB0aGlzLmhpZGVSZWdpb25Ub29sdGlwKCk7CiAgICAgICAgICAgIGlmIChyZXNldFZpZXcpIHsKICAgICAgICAgICAgICB0aGlzLiRtb2R1bGUuc2NlbmUudmlld0FsbCgpOwogICAgICAgICAgICAgIC8vVXNlIHRoZSBwb3N0IHJlbmRlciBjYWxsYmFjayB0byBtYWtlIHN1cmUgdGhlIHNjZW5lIGhhcyBiZWVuIHVwZGF0ZWQKICAgICAgICAgICAgICAvL2JlZm9yZSBnZXR0aW5nIHRoZSBwb3NpdGlvbiBvZiB0aGUgdG9vbHRpcC4KICAgICAgICAgICAgICBpZiAodGhpcy4kX3JlZ2lvblRvb2x0aXBDYWxsYmFjaykgewogICAgICAgICAgICAgICAgdGhpcy4kbW9kdWxlLnppbmNSZW5kZXJlci5yZW1vdmVQb3N0UmVuZGVyQ2FsbGJhY2tGdW5jdGlvbih0aGlzLiRfcmVnaW9uVG9vbHRpcENhbGxiYWNrKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgdGhpcy4kX3JlZ2lvblRvb2x0aXBDYWxsYmFjayA9IHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIuYWRkUG9zdFJlbmRlckNhbGxiYWNrRnVuY3Rpb24odGhpcy5kaXNwbGF5VG9vbHRpcE9mT2JqZWN0c0NhbGxiYWNrKG5hbWUsIG9iamVjdHMsIHJlc2V0VmlldywgbGl2ZVVwZGF0ZXMpKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhpcy50RGF0YS52aXNpYmxlID0gdHJ1ZTsKICAgICAgICAgICAgdGhpcy50RGF0YS5sYWJlbCA9IG5hbWU7CiAgICAgICAgICAgIHRoaXMudERhdGEueCA9IGNvb3Jkcy5wb3NpdGlvbi54OwogICAgICAgICAgICB0aGlzLnREYXRhLnkgPSBjb29yZHMucG9zaXRpb24ueTsKICAgICAgICAgICAgdmFyIHJlZ2lvblBhdGggPSBvYmplY3RzWzBdLmdldFJlZ2lvbigpLmdldEZ1bGxQYXRoKCk7CiAgICAgICAgICAgIGlmIChyZWdpb25QYXRoKSB0aGlzLnREYXRhLnJlZ2lvbiA9IHJlZ2lvblBhdGg7ZWxzZSB0aGlzLnREYXRhLnJlZ2lvbiA9ICJSb290IjsKICAgICAgICAgICAgaWYgKGxpdmVVcGRhdGVzKSB7CiAgICAgICAgICAgICAgdGhpcy4kbW9kdWxlLnNldHVwTGl2ZUNvb3JkaW5hdGVzKG9iamVjdHMpOwogICAgICAgICAgICAgIGlmICh0aGlzLiRfbGl2ZUNvb3JkaW5hdGVzVXBkYXRlZCkgewogICAgICAgICAgICAgICAgdGhpcy4kbW9kdWxlLnppbmNSZW5kZXJlci5yZW1vdmVQb3N0UmVuZGVyQ2FsbGJhY2tGdW5jdGlvbih0aGlzLiRfbGl2ZUNvb3JkaW5hdGVzVXBkYXRlZCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHRoaXMuJF9saXZlQ29vcmRpbmF0ZXNVcGRhdGVkID0gdGhpcy4kbW9kdWxlLnppbmNSZW5kZXJlci5hZGRQb3N0UmVuZGVyQ2FsbGJhY2tGdW5jdGlvbih0aGlzLmxpdmVVcGRhdGVUb29sdGlwUG9zaXRpb24pOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgIH0KICAgICAgdGhpcy5oaWRlUmVnaW9uVG9vbHRpcCgpOwogICAgICByZXR1cm4gZmFsc2U7CiAgICB9LAogICAgLyoqCiAgICAgKiBEaXNwbGF5IHRoZSB0b29sdGlwLiBXaGVuIHJlc2V0VmlldyBpcyBzZXQgdG8gdHJ1ZSwgaXQgd2lsbAogICAgICogcmVzZXQgdmlldyBpZiB0aGUgdG9vbHRpcCBpcyBub3QgaW4gdmlldy4KICAgICAqIFNldHRpbmcgbGl2ZVVwZGF0ZXMgdG8gdHJ1ZSB3aWxsIHVwZGF0ZSB0aGUgdG9vbHRpcCBsb2NhdGlvbgogICAgICogYXQgZXZlcnkgcmVuZGVyaW5nIGxvb3AuCiAgICAgKi8KICAgIHNob3dSZWdpb25Ub29sdGlwOiBmdW5jdGlvbiBzaG93UmVnaW9uVG9vbHRpcChuYW1lLCByZXNldFZpZXcsIGxpdmVVcGRhdGVzKSB7CiAgICAgIGlmIChuYW1lICYmIHRoaXMuJG1vZHVsZS5zY2VuZSkgewogICAgICAgIHZhciByb290UmVnaW9uID0gdGhpcy4kbW9kdWxlLnNjZW5lLmdldFJvb3RSZWdpb24oKTsKICAgICAgICB2YXIgZ3JvdXBzID0gW25hbWVdOwogICAgICAgIHZhciBvYmplY3RzID0gZmluZE9iamVjdHNXaXRoTmFtZXMocm9vdFJlZ2lvbiwgZ3JvdXBzLCAiIiwgdHJ1ZSk7CiAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGxheVRvb2x0aXBPZk9iamVjdHMobmFtZSwgb2JqZWN0cywgcmVzZXRWaWV3LCBsaXZlVXBkYXRlcyk7CiAgICAgIH0KICAgICAgdGhpcy5oaWRlUmVnaW9uVG9vbHRpcCgpOwogICAgICByZXR1cm4gZmFsc2U7CiAgICB9LAogICAgaGlkZVJlZ2lvblRvb2x0aXA6IGZ1bmN0aW9uIGhpZGVSZWdpb25Ub29sdGlwKCkgewogICAgICBpZiAodGhpcy4kX2xpdmVDb29yZGluYXRlc1VwZGF0ZWQpIHsKICAgICAgICB0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyLnJlbW92ZVBvc3RSZW5kZXJDYWxsYmFja0Z1bmN0aW9uKHRoaXMuJF9saXZlQ29vcmRpbmF0ZXNVcGRhdGVkKTsKICAgICAgICAvL1Vuc2V0IHRoZSB0cmFja2luZwogICAgICAgIHRoaXMuJG1vZHVsZS5zZXR1cExpdmVDb29yZGluYXRlcyh1bmRlZmluZWQpOwogICAgICB9CiAgICAgIHRoaXMudERhdGEudmlzaWJsZSA9IGZhbHNlOwogICAgICB0aGlzLnREYXRhLnJlZ2lvbiA9ICJSb290IjsKICAgIH0sCiAgICAvKioKICAgICAqIFRoaXMgaXMgY2FsbGVkIHdoZW4gbW91c2UgY3Vyc29yIGVudGVycyBzdXBwb3J0ZWQgZWxlbWVudHMKICAgICAqIHdpdGggaGVscCB0b290bHRpcHMuCiAgICAgKi8KICAgIHNob3dIZWxwVGV4dDogZnVuY3Rpb24gc2hvd0hlbHBUZXh0KGhlbHBUZXh0TnVtYmVyKSB7CiAgICAgIHZhciBfdGhpcyA9IHRoaXM7CiAgICAgIGlmICghdGhpcy5pbkhlbHApIHsKICAgICAgICB0aGlzLmhlbHBUZXh0V2FpdCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgX3RoaXMuaG92ZXJWaXNpYmlsaXRpZXNbaGVscFRleHROdW1iZXJdLnZhbHVlID0gdHJ1ZTsKICAgICAgICB9LCA1MDApOwogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBUaGlzIGlzIGNhbGxlZCB3aGVuIG1vdXNlIGN1cnNvciBleGl0cyBzdXBwb3J0ZWQgZWxlbWVudC4uCiAgICAgKi8KICAgIGhpZGVIZWxwVGV4dDogZnVuY3Rpb24gaGlkZUhlbHBUZXh0KGhlbHBUZXh0TnVtYmVyKSB7CiAgICAgIGlmICghdGhpcy5pbkhlbHApIHsKICAgICAgICB0aGlzLmhvdmVyVmlzaWJpbGl0aWVzW2hlbHBUZXh0TnVtYmVyXS52YWx1ZSA9IGZhbHNlOwogICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmhlbHBUZXh0V2FpdCk7CiAgICAgIH0KICAgIH0sCiAgICBzZWFyY2g6IGZ1bmN0aW9uIHNlYXJjaCh0ZXh0LCBkaXNwbGF5TGFiZWwpIHsKICAgICAgaWYgKHRoaXMuJF9zZWFyY2hJbmRleCkgewogICAgICAgIGlmICh0ZXh0ID09PSB1bmRlZmluZWQgfHwgdGV4dCA9PT0gIiIgfHwgQXJyYXkuaXNBcnJheSh0ZXh0KSAmJiB0ZXh0Lmxlbmd0aCA9PT0gMCkgewogICAgICAgICAgdGhpcy5vYmplY3RTZWxlY3RlZChbXSwgdHJ1ZSk7CiAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHZhciB6aW5jT2JqZWN0UmVzdWx0cyA9IFtdOwogICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGV4dCkpIHsKICAgICAgICAgICAgLy96aW5jT2JqZWN0UmVzdWx0cyA9IHRoaXMuJF9zZWFyY2hJbmRleC5zZWFyY2goIkhlYXJ0Iik7CiAgICAgICAgICAgIHppbmNPYmplY3RSZXN1bHRzID0gdGhpcy4kX3NlYXJjaEluZGV4LnNlYXJjaFRlcm1zKHRleHQpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgemluY09iamVjdFJlc3VsdHMgPSB0aGlzLiRfc2VhcmNoSW5kZXguc2VhcmNoKHRleHQpOwogICAgICAgICAgfQogICAgICAgICAgaWYgKHppbmNPYmplY3RSZXN1bHRzLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgdGhpcy5vYmplY3RTZWxlY3RlZCh6aW5jT2JqZWN0UmVzdWx0cywgdHJ1ZSk7CiAgICAgICAgICAgIGlmIChkaXNwbGF5TGFiZWwpIHsKICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHppbmNPYmplY3RSZXN1bHRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBpZiAoemluY09iamVjdFJlc3VsdHNbaV0gJiYgemluY09iamVjdFJlc3VsdHNbaV0uZ3JvdXBOYW1lKSB7CiAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd1JlZ2lvblRvb2x0aXAoemluY09iamVjdFJlc3VsdHNbaV0uZ3JvdXBOYW1lLCB0cnVlLCB0cnVlKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aGlzLm9iamVjdFNlbGVjdGVkKFtdLCB0cnVlKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSwKICAgIC8qKgogICAgICogR2V0IHRoZSBsaXN0IG9mIHN1Z2dlc3RlZCB0ZXJtcwogICAgICovCiAgICBmZXRjaFN1Z2dlc3Rpb25zOiBmdW5jdGlvbiBmZXRjaFN1Z2dlc3Rpb25zKHRlcm0pIHsKICAgICAgaWYgKHRoaXMuJF9zZWFyY2hJbmRleCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gW107CiAgICAgIHJldHVybiB0aGlzLiRfc2VhcmNoSW5kZXguYXV0b19zdWdnZXN0KHRlcm0pOwogICAgfSwKICAgIC8qKgogICAgICogQ2FsbGVkIHdoZW4gbWluaW1hcCBzZXR0aW5ncyBoYXMgY2hhbmdlZC4gUGFzcyB0aGUKICAgICAqIHBhcmFtZXRlcnMgdG8gWmluY0pTIGFuZCBtYXJrZWQgaXQgZm9yIHVwZGF0ZS4KICAgICAqLwogICAgdXBkYXRlTWluaW1hcFNjaXNzb3I6IGZ1bmN0aW9uIHVwZGF0ZU1pbmltYXBTY2lzc29yKCkgewogICAgICB2YXIgX3RoaXMyID0gdGhpczsKICAgICAgT2JqZWN0LmtleXModGhpcy5taW5pbWFwU2V0dGluZ3MpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgewogICAgICAgIF90aGlzMi4kbW9kdWxlLnNjZW5lLm1pbmltYXBTY2lzc29yW2tleV0gPSBfdGhpczIubWluaW1hcFNldHRpbmdzW2tleV07CiAgICAgIH0pOwogICAgICB0aGlzLiRtb2R1bGUuc2NlbmUubWluaW1hcFNjaXNzb3IudXBkYXRlUmVxdWlyZWQgPSB0cnVlOwogICAgfSwKICAgIHVwZGF0ZVNldHRpbmdzZnJvbVNjZW5lOiBmdW5jdGlvbiB1cGRhdGVTZXR0aW5nc2Zyb21TY2VuZSgpIHsKICAgICAgdGhpcy5jdXJyZW50U3BlZWQgPSAxOwogICAgICB0aGlzLiRtb2R1bGUuc2V0UGxheVJhdGUodGhpcy5kZWZhdWx0UmF0ZSk7CiAgICAgIHRoaXMub3JnaW5hbER1cmF0aW9uID0gdGhpcy4kbW9kdWxlLnNjZW5lLmdldE1ldGFkYXRhVGFnKCJPcmlnaW5hbER1cmF0aW9uIik7CiAgICAgIHRoaXMuYW5pbWF0ZUR1cmF0aW9uID0gdGhpcy4kbW9kdWxlLnNjZW5lLmdldE1ldGFkYXRhVGFnKCJEdXJhdGlvbiIpOwogICAgICB2YXIgdGltZVN0YW1wcyA9IHRoaXMuJG1vZHVsZS5zY2VuZS5nZXRNZXRhZGF0YVRhZygiVGltZVN0YW1wcyIpOwogICAgICB0aGlzLnRpbWVTdGFtcHMgPSB7fTsKICAgICAgZm9yICh2YXIga2V5IGluIHRpbWVTdGFtcHMpIHsKICAgICAgICB0aGlzLnRpbWVTdGFtcHNbdGltZVN0YW1wc1trZXldXSA9IGtleTsKICAgICAgfQogICAgICB0aGlzLnRpbWVNYXggPSB0aGlzLiRtb2R1bGUuc2NlbmUuZ2V0RHVyYXRpb24oKTsKICAgIH0sCiAgICBzZXRVUkxGaW5pc2hDYWxsYmFjazogZnVuY3Rpb24gc2V0VVJMRmluaXNoQ2FsbGJhY2sob3B0aW9ucykgewogICAgICB2YXIgX3RoaXMzID0gdGhpczsKICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKICAgICAgICBpZiAob3B0aW9ucykgewogICAgICAgICAgaWYgKG9wdGlvbnMudmlld3BvcnQpIHsKICAgICAgICAgICAgX3RoaXMzLiRtb2R1bGUuc2NlbmUuZ2V0WmluY0NhbWVyYUNvbnRyb2xzKCkuc2V0Q3VycmVudENhbWVyYVNldHRpbmdzKG9wdGlvbnMudmlld3BvcnQpOwogICAgICAgICAgfSBlbHNlIGlmIChvcHRpb25zLnZpZXdVUkwgJiYgb3B0aW9ucy52aWV3VVJMICE9PSAiIikgewogICAgICAgICAgICB2YXIgdXJsID0gbmV3IFVSTChvcHRpb25zLnZpZXdVUkwsIF90aGlzMy51cmwpOwogICAgICAgICAgICBfdGhpczMuJG1vZHVsZS5zY2VuZS5sb2FkVmlld1VSTCh1cmwpOwogICAgICAgICAgfSBlbHNlIGlmIChvcHRpb25zLnJlZ2lvbiAmJiBvcHRpb25zLnJlZ2lvbiAhPT0gIiIpIHsKICAgICAgICAgICAgX3RoaXMzLnZpZXdSZWdpb24ob3B0aW9ucy5yZWdpb24pOwogICAgICAgICAgfQogICAgICAgICAgaWYgKG9wdGlvbnMudmlzaWJpbGl0eSkgewogICAgICAgICAgICAvLyBTb21lIFVJcyBtYXkgbm90IGJlIHJlYWR5IGF0IHRoaXMgdGltZS4KICAgICAgICAgICAgX3RoaXMzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgX3RoaXMzLiRyZWZzLnRyZWVDb250cm9scy5zZXRTdGF0ZShvcHRpb25zLnZpc2liaWxpdHkpOwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgX3RoaXMzLnVwZGF0ZVNldHRpbmdzZnJvbVNjZW5lKCk7CiAgICAgICAgX3RoaXMzLiRtb2R1bGUudXBkYXRlVGltZSgwLjAxKTsKICAgICAgICBfdGhpczMuJG1vZHVsZS51cGRhdGVUaW1lKDApOwogICAgICAgIF90aGlzMy4kbW9kdWxlLnVuc2V0RmluaXNoRG93bmxvYWRDYWxsYmFjaygpOwogICAgICAgIF90aGlzMy4kZW1pdCgib24tcmVhZHkiKTsKICAgICAgICBfdGhpczMuaXNSZWFkeSA9IHRydWU7CiAgICAgIH07CiAgICB9LAogICAgLyoqCiAgICAgKiBGdW5jdGlvbiB1c2VkIGZvciBnZXR0aW5nIHRoZSBjdXJyZW50IHN0YXRlcyBvZiB0aGUgc2NlbmUuIFRoaXMgZXhwb3J0ZWQgc3RhdGVzCiAgICAgKiBjYW4gYmUgaW1wb3J0ZWQgdXNpbmcgdGhlIGltcG9ydFN0YXRlcyBtZXRob2QuCiAgICAgKgogICAgICogQHB1YmxpYwogICAgICovCiAgICBnZXRTdGF0ZTogZnVuY3Rpb24gZ2V0U3RhdGUoKSB7CiAgICAgIHZhciBzdGF0ZSA9IHsKICAgICAgICBmb3JtYXQ6IHRoaXMuZmlsZUZvcm1hdCwKICAgICAgICB1cmw6IHRoaXMuX2N1cnJlbnRVUkwsCiAgICAgICAgdmlld3BvcnQ6IHVuZGVmaW5lZCwKICAgICAgICB2aXNpYmlsaXR5OiB1bmRlZmluZWQKICAgICAgfTsKICAgICAgaWYgKHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzKSBzdGF0ZS52aXNpYmlsaXR5ID0gdGhpcy4kcmVmcy50cmVlQ29udHJvbHMuZ2V0U3RhdGUoKTsKICAgICAgaWYgKHRoaXMuJG1vZHVsZS5zY2VuZSkgewogICAgICAgIHZhciB6aW5jQ2FtZXJhQ29udHJvbHMgPSB0aGlzLiRtb2R1bGUuc2NlbmUuZ2V0WmluY0NhbWVyYUNvbnRyb2xzKCk7CiAgICAgICAgc3RhdGUudmlld3BvcnQgPSB6aW5jQ2FtZXJhQ29udHJvbHMuZ2V0Q3VycmVudFZpZXdwb3J0KCk7CiAgICAgIH0KICAgICAgcmV0dXJuIHN0YXRlOwogICAgfSwKICAgIC8qKgogICAgICogRnVuY3Rpb24gdXNlZCBmb3IgaW1wb3J0aW5nIHRoZSBzdGF0ZXMgb2YgdGhlIHNjZW5lLiBUaGlzIGV4cG9ydGVkIHN0YXRlcwogICAgICogY2FuIGJlIGltcG9ydGVkIHVzaW5nIHRoZSByZWFkIHN0YXRlcyBtZXRob2QuCiAgICAgKgogICAgICogQHB1YmxpYwogICAgICovCiAgICBzZXRTdGF0ZTogZnVuY3Rpb24gc2V0U3RhdGUoc3RhdGUpIHsKICAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgaWYgKHN0YXRlLnVybCAmJiBzdGF0ZS51cmwgIT09IHRoaXMuX2N1cnJlbnRVUkwpIHsKICAgICAgICAgIHRoaXMuc2V0VVJMQW5kU3RhdGUoc3RhdGUudXJsLCB7CiAgICAgICAgICAgIGZpbGVGb3JtYXQ6IHN0YXRlLmZpbGVGb3JtYXQsCiAgICAgICAgICAgIHZpZXdwb3J0OiBzdGF0ZS52aWV3cG9ydCwKICAgICAgICAgICAgdmlzaWJpbGl0eTogc3RhdGUudmlzaWJpbGl0eQogICAgICAgICAgfSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGlmIChzdGF0ZS52aWV3cG9ydCB8fCBzdGF0ZS52aXNpYmlsaXR5KSB7CiAgICAgICAgICAgIGlmICh0aGlzLmlzUmVhZHkgJiYgdGhpcy4kbW9kdWxlLnNjZW5lKSB7CiAgICAgICAgICAgICAgaWYgKHN0YXRlLnZpZXdwb3J0KSB0aGlzLiRtb2R1bGUuc2NlbmUuZ2V0WmluY0NhbWVyYUNvbnRyb2xzKCkuc2V0Q3VycmVudENhbWVyYVNldHRpbmdzKHN0YXRlLnZpZXdwb3J0KTsKICAgICAgICAgICAgICBpZiAoc3RhdGUudmlzaWJpbGl0eSkgdGhpcy4kcmVmcy50cmVlQ29udHJvbHMuc2V0U3RhdGUoc3RhdGUudmlzaWJpbGl0eSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgdGhpcy4kbW9kdWxlLnNldEZpbmlzaERvd25sb2FkQ2FsbGJhY2sodGhpcy5zZXRVUkxGaW5pc2hDYWxsYmFjayh7CiAgICAgICAgICAgICAgICB2aWV3cG9ydDogc3RhdGUudmlld3BvcnQsCiAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiBzdGF0ZS52aXNpYmlsaXR5CiAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgZXhwb3J0R0xURjogZnVuY3Rpb24gZXhwb3J0R0xURihiaW5hcnkpIHsKICAgICAgcmV0dXJuIHRoaXMuJG1vZHVsZS5zY2VuZS5leHBvcnRHTFRGKGJpbmFyeSk7CiAgICB9LAogICAgLyoqCiAgICAgKiBGdW5jdGlvbiB1c2VkIGZvciByZWFkaW5nIGluIG5ldyBzY2FmZm9sZCBtZXRhZGF0YSBhbmQgYSBjdXN0b20KICAgICAqIHZpZXdwb3J0LiBUaGlzIGZ1bmN0aW9uIHdpbGwgaWdub3JlIHRoZSBzdGF0ZSBwcm9wIGFuZAogICAgICogcmVhZCBpbiB0aGUgbmV3IHVybC4KICAgICAqCiAgICAgKiBAcHVibGljCiAgICAgKi8KICAgIHNldFVSTEFuZFN0YXRlOiBmdW5jdGlvbiBzZXRVUkxBbmRTdGF0ZShuZXdWYWx1ZSwgc3RhdGUpIHsKICAgICAgaWYgKG5ld1ZhbHVlICE9IHRoaXMuX2N1cnJlbnRVUkwpIHsKICAgICAgICBpZiAoc3RhdGUgJiYgc3RhdGUuZm9ybWF0KSB0aGlzLmZpbGVGb3JtYXQgPSBzdGF0ZS5mb3JtYXQ7CiAgICAgICAgdmFyIHZpZXdwb3J0ID0gc3RhdGUgJiYgc3RhdGUudmlld3BvcnQgPyBzdGF0ZS52aWV3cG9ydCA6IHVuZGVmaW5lZDsKICAgICAgICB2YXIgdmlzaWJpbGl0eSA9IHN0YXRlICYmIHN0YXRlLnZpc2liaWxpdHkgPyBzdGF0ZS52aXNpYmlsaXR5IDogdW5kZWZpbmVkOwogICAgICAgIHRoaXMuX2N1cnJlbnRVUkwgPSBuZXdWYWx1ZTsKICAgICAgICBpZiAodGhpcy4kcmVmcy50cmVlQ29udHJvbHMpIHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzLmNsZWFyKCk7CiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTsKICAgICAgICB0aGlzLmlzUmVhZHkgPSBmYWxzZTsKICAgICAgICB0aGlzLiRtb2R1bGUuc2V0RmluaXNoRG93bmxvYWRDYWxsYmFjayh0aGlzLnNldFVSTEZpbmlzaENhbGxiYWNrKHsKICAgICAgICAgIHZpZXdwb3J0OiB2aWV3cG9ydCwKICAgICAgICAgIHJlZ2lvbjogdGhpcy5yZWdpb24sCiAgICAgICAgICB2aWV3VVJMOiB0aGlzLnZpZXdVUkwsCiAgICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmlsaXR5CiAgICAgICAgfSkpOwogICAgICAgIGlmICh0aGlzLmZpbGVGb3JtYXQgPT09ICJnbHRmIikgewogICAgICAgICAgdGhpcy4kbW9kdWxlLmxvYWRHTFRGRnJvbVVSTChuZXdWYWx1ZSwgInNjZW5lIiwgdHJ1ZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuJG1vZHVsZS5sb2FkT3JnYW5zRnJvbVVSTChuZXdWYWx1ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsICJzY2VuZSIsIHVuZGVmaW5lZCwgdHJ1ZSk7CiAgICAgICAgfQogICAgICAgIHRoaXMuJF9zZWFyY2hJbmRleC5yZW1vdmVBbGwoKTsKICAgICAgICB0aGlzLiRfdGVtcElkID0gMTsKICAgICAgICB0aGlzLmhpZGVSZWdpb25Ub29sdGlwKCk7CiAgICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLmRpc3BsYXlNYXJrZXJzID0gdGhpcy5kaXNwbGF5TWFya2VyczsKICAgICAgICB0aGlzLiRtb2R1bGUuc2NlbmUuZm9yY2VQaWNrYWJsZU9iamVjdHNVcGRhdGUgPSB0cnVlOwogICAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5kaXNwbGF5TWluaW1hcCA9IHRoaXMuZGlzcGxheU1pbmltYXA7CiAgICAgICAgdGhpcy51cGRhdGVNaW5pbWFwU2Npc3NvcigpOwogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBGdW5jdGlvbiB1c2VkIGZvciByZWFkaW5nIGluIG5ldyBzY2FmZm9sZCBtZXRhZGF0YS4gVGhpcyBmdW5jdGlvbiB3aWxsIGlnbm9yZQogICAgICogdGhlIHN0YXRlIHByb3AgYW5kIHJlYWQgaW4gdGhlIG5ldyB1cmwuCiAgICAgKgogICAgICogQHB1YmxpYwogICAgICovCiAgICBzZXRVUkw6IGZ1bmN0aW9uIHNldFVSTChuZXdWYWx1ZSkgewogICAgICB0aGlzLnNldFVSTEFuZFN0YXRlKG5ld1ZhbHVlLCB1bmRlZmluZWQpOwogICAgfSwKICAgIC8qKgogICAgICogQ2FsbGJhY2sgd2hlbiBkcmF3ZXIgaXMgdG9nZ2xlZC4KICAgICAqLwogICAgZHJhd2VyVG9nZ2xlZDogZnVuY3Rpb24gZHJhd2VyVG9nZ2xlZChmbGFnKSB7CiAgICAgIHRoaXMuZHJhd2VyT3BlbiA9IGZsYWc7CiAgICAgIHRoaXMuYWRqdXN0TGF5b3V0KCk7CiAgICB9LAogICAgLyoqCiAgICAgKiBDYWxsYmFjayB1c2luZyBSZXNpemVPYnNlcnZlci4KICAgICAqLwogICAgYWRqdXN0TGF5b3V0OiBmdW5jdGlvbiBhZGp1c3RMYXlvdXQoKSB7CiAgICAgIHZhciB3aWR0aCA9IHRoaXMuJHJlZnMuc2NhZmZvbGRDb250YWluZXIuY2xpZW50V2lkdGg7CiAgICAgIHRoaXMubWluaW1pc2VkU2xpZGVyID0gd2lkdGggPCA4MTI7CiAgICAgIGlmICh0aGlzLm1pbmltaXNlZFNsaWRlcikgewogICAgICAgIHRoaXMuc2xpZGVyUG9zaXRpb24gPSB0aGlzLmRyYXdlck9wZW4gPyAicmlnaHQiIDogImxlZnQiOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuc2xpZGVyUG9zaXRpb24gPSAiIjsKICAgICAgfQogICAgfSwKICAgIHRvZ2dsZVJlbmRlcmluZzogZnVuY3Rpb24gdG9nZ2xlUmVuZGVyaW5nKGZsYWcpIHsKICAgICAgaWYgKHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIpIHsKICAgICAgICBpZiAoZmxhZykgewogICAgICAgICAgdGhpcy4kbW9kdWxlLnppbmNSZW5kZXJlci5hbmltYXRlKCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIuc3RvcEFuaW1hdGUoKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICBmb3JjZVJlc2l6ZTogZnVuY3Rpb24gZm9yY2VSZXNpemUoKSB7CiAgICAgIGlmICh0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyKSB7CiAgICAgICAgdGhpcy4kbW9kdWxlLnppbmNSZW5kZXJlci5vbldpbmRvd1Jlc2l6ZSgpOwogICAgICB9CiAgICB9LAogICAgc3luY0NvbnRyb2xDYWxsYmFjazogZnVuY3Rpb24gc3luY0NvbnRyb2xDYWxsYmFjaygpIHsKICAgICAgdmFyIHBheWxvYWQgPSB0aGlzLiRtb2R1bGUuTkRDQ2FtZXJhQ29udHJvbC5nZXRQYW5ab29tKCk7CiAgICAgIGlmICh0aGlzLnREYXRhLnZpc2libGUpIHsKICAgICAgICB0aGlzLnNob3dSZWdpb25Ub29sdGlwKHRoaXMudERhdGEubGFiZWwpOwogICAgICB9CiAgICAgIHRoaXMuJGVtaXQoInNjYWZmb2xkLW5hdmlnYXRlZCIsIHBheWxvYWQpOwogICAgfSwKICAgIC8qKgogICAgICogUm90YXRlIG1vZGUgLSAibm9uZSIsICJob3Jpem9udGFsIiwgInZlcnRpY2FsIiwgImZyZWUiIGJ1dAogICAgICogaXQgd2lsbCBiZSBpZ25vcmVkIGlmIGZsYWcgaXMgc2V0IHRvIGZhbHNlLgogICAgICovCiAgICB0b2dnbGVTeW5jQ29udHJvbDogZnVuY3Rpb24gdG9nZ2xlU3luY0NvbnRyb2woZmxhZywgcm90YXRlTW9kZSkgewogICAgICB0aGlzLiRtb2R1bGUudG9nZ2xlU3luY0NvbnRyb2woZmxhZywgcm90YXRlTW9kZSk7CiAgICAgIHRoaXMuJG1vZHVsZS5zZXRTeW5jQ29udHJvbENhbGxiYWNrKHRoaXMuc3luY0NvbnRyb2xDYWxsYmFjayk7CiAgICB9CiAgfQp9Ow=="},{"version":3,"names":["Vue","OpacityControls","ScaffoldTooltip","TreeControls","MapSvgIcon","MapSvgSpriteColor","findObjectsWithNames","getAllObjects","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","displayMinimap","format","minimapSettings","Object","_default","x_offset","y_offset","width","height","align","enableOpenMapUI","openMapOptions","Array","display","key","state","undefined","region","viewURL","render","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","fileFormat","watch","handler","immediate","newValue","setURL","setFocusedRegion","setState","deep","updateViewURL","val","setHelpMode","scene","forcePickableObjectsUpdate","sceneDataCurrentTime","$emit","currentTime","setDuration","toggleRendering","beforeCreate","selectedObjects","hoveredObjects","_currentURL","$_searchIndex","$_tempId","mounted","$refs","treeControls","setModule","eventNotifier","subscribe","eventNotifierCallback","addNotifier","addOrganPartAddedCallback","zincObjectAdded","initialiseRenderer","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","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","searchTerms","i","groupName","fetchSuggestions","term","auto_suggest","updateMinimapScissor","_this2","keys","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 \n {{item.display}}\n \n \n \n \n Change background \n \n \n \n \n \n \n \n 0\"\n slot=\"reference\"\n v-popover:open-map-popover\n icon=\"openMap\"\n class=\"icon-button\"\n @mouseover.native=\"showHelpText(8)\"\n @mouseout.native=\"hideHelpText(8)\"\n />\n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuTA;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;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,eAAA,EAAAA,eAAA;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;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;AACA;IACAC,eAAA;MACAvB,IAAA,EAAAI,OAAA;MACAF,OAAA;IACA;IACAsB,cAAA;MACAxB,IAAA,EAAAyB,KAAA;MACAvB,OAAA,WAAAe,SAAA;QACA,QACA;UACAS,OAAA;UACAC,GAAA;QACA,GACA;UACAD,OAAA;UACAC,GAAA;QACA,GACA;UACAD,OAAA;UACAC,GAAA;QACA,EACA;MACA;IACA;IACA;AACA;AACA;IACAC,KAAA;MACA5B,IAAA,EAAAgB,MAAA;MACAd,OAAA,EAAA2B;IACA;IACA;AACA;AACA;AACA;IACAC,MAAA;MACA9B,IAAA,EAAAC,MAAA;MACAC,OAAA;IACA;IACA;AACA;AACA;AACA;AACA;IACA6B,OAAA;MACA/B,IAAA,EAAAC,MAAA;MACAC,OAAA;IACA;IACA;AACA;AACA;IACA8B,MAAA;MACAhC,IAAA,EAAAI,OAAA;MACAF,OAAA;IACA;EACA;EACA+B,IAAA,WAAAA,KAAA;IACA;MACAC,SAAA,OAAAC,OAAA,CAAAD,SAAA;MACAE,SAAA;MACAC,OAAA;MACA;AAC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"}]}