@tscircuit/fake-snippets 0.0.46 → 0.0.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/bundle.js +1 -1
  2. package/package.json +3 -2
package/dist/bundle.js CHANGED
@@ -6348,4 +6348,4 @@ var stdin_default = winterSpec;
6348
6348
  export {
6349
6349
  stdin_default as default
6350
6350
  };
6351
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiPHN0ZGluPiIsICJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjLnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9kYi1jbGllbnQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvYXV0b2xvYWQtZGV2LXBhY2thZ2VzLnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zZWVkLnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtZGIudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC1jdHgtZXJyb3IudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC1zZXNzaW9uLWF1dGgudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC1vcHRpb25hbC1zZXNzaW9uLWF1dGgudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC1lcnJvci1oYW5kbGluZy50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXJlcXVlc3QtbG9nZ2luZy50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL19mYWtlL2RiLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvX2Zha2UvbW92ZV9vcmRlcnNfZm9yd2FyZC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS91dGlscy9vcmRlci1zdGVwcy50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL19mYWtlL3JlY2VpdmVkX3F1b3Rlcy50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL19mYWtlL3NlZWQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9hY2NvdW50cy9nZXRfYWNjb3VudF9iYWxhbmNlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWNjb3VudHMvZ2V0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWNjb3VudHMvdXBkYXRlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWkvWy4uLmFueXJvdXRlXS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2FpLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWlzdHJlYW0vWy4uLmFueXJvdXRlXS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2hlYWx0aC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2ludGVybmFsL3Nlc3Npb25zL2NyZWF0ZV93aXRob3V0X2F1dGgudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcl9maWxlcy9nZXQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcl9maWxlcy91cGxvYWQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcl9xdW90ZXMvY3JlYXRlX2FsbF92ZW5kb3JfcXVvdGVzLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3JkZXJfcXVvdGVzL2NyZWF0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZGVyX3F1b3Rlcy9nZXQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcnMvY3JlYXRlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3JkZXJzL2dldC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZGVycy9saXN0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9wYWNrYWdlX3JlbGVhc2UvZmluZC1wYWNrYWdlLXJlbGVhc2UtaWQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2ZpbGVzL2NyZWF0ZV9vcl91cGRhdGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2ZpbGVzL2NyZWF0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfZmlsZXMvZGVsZXRlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9wYWNrYWdlX2ZpbGUvZ2V0LXBhY2thZ2UtZmlsZS1pZC1mcm9tLWZpbGUtZGVzY3JpcHRvci50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS91dGlscy9ub3JtYWxpemVQcm9qZWN0RmlsZVBhdGgudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2ZpbGVzL2Rvd25sb2FkLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9maWxlcy9nZXQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2ZpbGVzL2xpc3QudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3B1YmxpYy1tYXBwaW5nL3B1YmxpYy1tYXAtcGFja2FnZS1yZWxlYXNlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9yZWxlYXNlcy9jcmVhdGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX3JlbGVhc2VzL2dldC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfcmVsZWFzZXMvbGlzdC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfcmVsZWFzZXMvdXBkYXRlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvYWRkX3N0YXIudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3B1YmxpYy1tYXBwaW5nL3B1YmxpYy1tYXAtcGFja2FnZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2NyZWF0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2RlbGV0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2ZvcmsudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9nZXQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9saXN0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvcmVtb3ZlX3N0YXIudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy91cGRhdGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9hZGRfc3Rhci50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2NyZWF0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2RlbGV0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2Rvd25sb2FkLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvZ2VuZXJhdGVfZnJvbV9qbGNwY2IudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9nZXRfaW1hZ2UudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9nZXQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9pbWFnZXMvW2F1dGhvcl0vW3NuaXBwZXRfbmFtZV0vW3R5cGVGb3JtYXRdLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvbGlzdF9sYXRlc3QudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9saXN0X3RyZW5kaW5nLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvbGlzdC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL3JlbW92ZV9zdGFyLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvc2VhcmNoLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvdXBkYXRlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQge2dldFJvdXRlTWF0Y2hlcn0gZnJvbSBcIm5leHQtcm91dGUtbWF0Y2hlclwiXG5pbXBvcnQgeyBtYWtlUmVxdWVzdEFnYWluc3RXaW50ZXJTcGVjIH0gZnJvbSBcIndpbnRlcnNwZWNcIlxuXG5pbXBvcnQgKiBhcyBmd29kam9iZWF3YW13dXJoIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9kYi50c1wiXG5pbXBvcnQgKiBhcyBiZnNzZ25kb3pwaHdreWpsIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9tb3ZlX29yZGVyc19mb3J3YXJkLnRzXCJcbmltcG9ydCAqIGFzIGlvcmFjbnN5c3pxcHRmcnYgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL19mYWtlL3JlY2VpdmVkX3F1b3Rlcy50c1wiXG5pbXBvcnQgKiBhcyB1cXd1b3lrc21mcGdxbXF0IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9zZWVkLnRzXCJcbmltcG9ydCAqIGFzIHRoZ2Fxa2NxbWtucnB2cW4gZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2FjY291bnRzL2dldF9hY2NvdW50X2JhbGFuY2UudHNcIlxuaW1wb3J0ICogYXMgeXV4enBwenJid2NmeWpsYyBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWNjb3VudHMvZ2V0LnRzXCJcbmltcG9ydCAqIGFzIHF0a2F4d2FlZm5vYmdlY2EgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2FjY291bnRzL3VwZGF0ZS50c1wiXG5pbXBvcnQgKiBhcyBhcnp2Z2FvdmJ5a2tkcm9tIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9haS50c1wiXG5pbXBvcnQgKiBhcyBocG55c2Vtb3dwbXl5YWVyIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9haS9bLi4uYW55cm91dGVdLnRzXCJcbmltcG9ydCAqIGFzIG50aWlwaW16ZnZsdm93d2ogZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2Fpc3RyZWFtL1suLi5hbnlyb3V0ZV0udHNcIlxuaW1wb3J0ICogYXMgaHBtYWNxdHhhZmNsbm5tYiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvaGVhbHRoLnRzXCJcbmltcG9ydCAqIGFzIGF4c3ZtZ2pud2ptbWt3YmwgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2ludGVybmFsL3Nlc3Npb25zL2NyZWF0ZV93aXRob3V0X2F1dGgudHNcIlxuaW1wb3J0ICogYXMgdGN5dWpscnhka3ZlcmF0cSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3JkZXJfZmlsZXMvZ2V0LnRzXCJcbmltcG9ydCAqIGFzIGFuYnNhanJpaWF2c2ZyYWQgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZGVyX2ZpbGVzL3VwbG9hZC50c1wiXG5pbXBvcnQgKiBhcyBxeHFkZmZxbG16ZHJmc3l4IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcl9xdW90ZXMvY3JlYXRlX2FsbF92ZW5kb3JfcXVvdGVzLnRzXCJcbmltcG9ydCAqIGFzIHp4YnBsem1hcnR1enVidWkgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZGVyX3F1b3Rlcy9jcmVhdGUudHNcIlxuaW1wb3J0ICogYXMga2NjeW5rcHdibXpoa3hsbCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3JkZXJfcXVvdGVzL2dldC50c1wiXG5pbXBvcnQgKiBhcyBpYXJnbmt2Y2t5cm1ib2p1IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcnMvY3JlYXRlLnRzXCJcbmltcG9ydCAqIGFzIG1zZHVubHN1bGFlZGtsb2UgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZGVycy9nZXQudHNcIlxuaW1wb3J0ICogYXMgcG5iZ2h3aHl1cXNnY2Z6diBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3JkZXJzL2xpc3QudHNcIlxuaW1wb3J0ICogYXMganJlamVpcGNpbmhsaHVvZiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9maWxlcy9jcmVhdGVfb3JfdXBkYXRlLnRzXCJcbmltcG9ydCAqIGFzIHd6YXJveHhyaG9oZ2Z3ZnQgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfZmlsZXMvY3JlYXRlLnRzXCJcbmltcG9ydCAqIGFzIHN5bWJscGVqdGZwaWl4ZGwgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfZmlsZXMvZGVsZXRlLnRzXCJcbmltcG9ydCAqIGFzIG5jY3ptdm1uaHVpdWZ5aWkgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfZmlsZXMvZG93bmxvYWQudHNcIlxuaW1wb3J0ICogYXMgbXlndmN5ZXZ1Z2x2emZsbSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9maWxlcy9nZXQudHNcIlxuaW1wb3J0ICogYXMgYXZtc2V4dHFub2N6cnJnYyBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9maWxlcy9saXN0LnRzXCJcbmltcG9ydCAqIGFzIHVtZmF3am91c252a2FmeWggZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfcmVsZWFzZXMvY3JlYXRlLnRzXCJcbmltcG9ydCAqIGFzIGR5cmh0cGx0b25xaHNmdWkgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfcmVsZWFzZXMvZ2V0LnRzXCJcbmltcG9ydCAqIGFzIG90Y3hvYWxtdWFheWx6Ym8gZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfcmVsZWFzZXMvbGlzdC50c1wiXG5pbXBvcnQgKiBhcyB4YXB4eWVmYnB2dW15am91IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX3JlbGVhc2VzL3VwZGF0ZS50c1wiXG5pbXBvcnQgKiBhcyBtZ2VqZGtoZW1saXhzcHZ2IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9hZGRfc3Rhci50c1wiXG5pbXBvcnQgKiBhcyBydG5yeWd1ZXltcmlmdGV3IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9jcmVhdGUudHNcIlxuaW1wb3J0ICogYXMgdWNtaGZvd21sYmV0dXhjdSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvZGVsZXRlLnRzXCJcbmltcG9ydCAqIGFzIGxlYmFnamtldXZyZXh3b2cgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2ZvcmsudHNcIlxuaW1wb3J0ICogYXMgZ2ttdmF4cHR1dGVja3ZjbSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvZ2V0LnRzXCJcbmltcG9ydCAqIGFzIGJ0cnh1ZWhzYnhiaXJkdmYgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2xpc3QudHNcIlxuaW1wb3J0ICogYXMgZ3B5a2xnaWl5bnZrem9oayBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvcmVtb3ZlX3N0YXIudHNcIlxuaW1wb3J0ICogYXMgbmp1bWN6dXlkZGZwb2dzYyBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvdXBkYXRlLnRzXCJcbmltcG9ydCAqIGFzIGRjb25ha3Vxb3preHR2Y20gZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2FkZF9zdGFyLnRzXCJcbmltcG9ydCAqIGFzIGttcHl1ZWNhZm5uamJpbnIgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2NyZWF0ZS50c1wiXG5pbXBvcnQgKiBhcyBrZmRoZ2N5dGJidmtlcXZwIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9kZWxldGUudHNcIlxuaW1wb3J0ICogYXMgbmNlbnRqamtkeGlkeXJrdCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvZG93bmxvYWQudHNcIlxuaW1wb3J0ICogYXMgY2JxYm1jZ25ub25lZWt0YyBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvZ2VuZXJhdGVfZnJvbV9qbGNwY2IudHNcIlxuaW1wb3J0ICogYXMgenlkcGVnZm5pdXJqc21mcyBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvZ2V0X2ltYWdlLnRzXCJcbmltcG9ydCAqIGFzIHpwbWRuamRtd3l2YnF6Y2EgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2dldC50c1wiXG5pbXBvcnQgKiBhcyBtYm11bG11cGZ2aXhmYWVoIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9pbWFnZXMvW2F1dGhvcl0vW3NuaXBwZXRfbmFtZV0vW3R5cGVGb3JtYXRdLnRzXCJcbmltcG9ydCAqIGFzIGN0YnN2eHd0eGdzc2hxa2EgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2xpc3RfbGF0ZXN0LnRzXCJcbmltcG9ydCAqIGFzIGF3anB3amR2aGh0dGd5eHYgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2xpc3RfdHJlbmRpbmcudHNcIlxuaW1wb3J0ICogYXMgdXh3d29rdWZobGRjbHZzdCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvbGlzdC50c1wiXG5pbXBvcnQgKiBhcyB3b2txY2R1c3RsZm9qcnlvIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9yZW1vdmVfc3Rhci50c1wiXG5pbXBvcnQgKiBhcyBwaXNrdGRhbnJyZ2F4ZGNmIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9zZWFyY2gudHNcIlxuaW1wb3J0ICogYXMgZmt1a3FubHhwbmVrcnRraSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvdXBkYXRlLnRzXCJcblxuY29uc3Qgcm91dGVNYXBXaXRoSGFuZGxlcnMgPSB7XG4gIFwiL2FwaS9fZmFrZS9kYlwiOiBmd29kam9iZWF3YW13dXJoLmRlZmF1bHQsXCIvYXBpL19mYWtlL21vdmVfb3JkZXJzX2ZvcndhcmRcIjogYmZzc2duZG96cGh3a3lqbC5kZWZhdWx0LFwiL2FwaS9fZmFrZS9yZWNlaXZlZF9xdW90ZXNcIjogaW9yYWNuc3lzenFwdGZydi5kZWZhdWx0LFwiL2FwaS9fZmFrZS9zZWVkXCI6IHVxd3VveWtzbWZwZ3FtcXQuZGVmYXVsdCxcIi9hcGkvYWNjb3VudHMvZ2V0X2FjY291bnRfYmFsYW5jZVwiOiB0aGdhcWtjcW1rbnJwdnFuLmRlZmF1bHQsXCIvYXBpL2FjY291bnRzL2dldFwiOiB5dXh6cHB6cmJ3Y2Z5amxjLmRlZmF1bHQsXCIvYXBpL2FjY291bnRzL3VwZGF0ZVwiOiBxdGtheHdhZWZub2JnZWNhLmRlZmF1bHQsXCIvYXBpL2FpXCI6IGFyenZnYW92Ynlra2Ryb20uZGVmYXVsdCxcIi9hcGkvYWkvWy4uLmFueXJvdXRlXVwiOiBocG55c2Vtb3dwbXl5YWVyLmRlZmF1bHQsXCIvYXBpL2Fpc3RyZWFtL1suLi5hbnlyb3V0ZV1cIjogbnRpaXBpbXpmdmx2b3d3ai5kZWZhdWx0LFwiL2FwaS9oZWFsdGhcIjogaHBtYWNxdHhhZmNsbm5tYi5kZWZhdWx0LFwiL2FwaS9pbnRlcm5hbC9zZXNzaW9ucy9jcmVhdGVfd2l0aG91dF9hdXRoXCI6IGF4c3ZtZ2pud2ptbWt3YmwuZGVmYXVsdCxcIi9hcGkvb3JkZXJfZmlsZXMvZ2V0XCI6IHRjeXVqbHJ4ZGt2ZXJhdHEuZGVmYXVsdCxcIi9hcGkvb3JkZXJfZmlsZXMvdXBsb2FkXCI6IGFuYnNhanJpaWF2c2ZyYWQuZGVmYXVsdCxcIi9hcGkvb3JkZXJfcXVvdGVzL2NyZWF0ZV9hbGxfdmVuZG9yX3F1b3Rlc1wiOiBxeHFkZmZxbG16ZHJmc3l4LmRlZmF1bHQsXCIvYXBpL29yZGVyX3F1b3Rlcy9jcmVhdGVcIjogenhicGx6bWFydHV6dWJ1aS5kZWZhdWx0LFwiL2FwaS9vcmRlcl9xdW90ZXMvZ2V0XCI6IGtjY3lua3B3Ym16aGt4bGwuZGVmYXVsdCxcIi9hcGkvb3JkZXJzL2NyZWF0ZVwiOiBpYXJnbmt2Y2t5cm1ib2p1LmRlZmF1bHQsXCIvYXBpL29yZGVycy9nZXRcIjogbXNkdW5sc3VsYWVka2xvZS5kZWZhdWx0LFwiL2FwaS9vcmRlcnMvbGlzdFwiOiBwbmJnaHdoeXVxc2djZnp2LmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VfZmlsZXMvY3JlYXRlX29yX3VwZGF0ZVwiOiBqcmVqZWlwY2luaGxodW9mLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VfZmlsZXMvY3JlYXRlXCI6IHd6YXJveHhyaG9oZ2Z3ZnQuZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9maWxlcy9kZWxldGVcIjogc3ltYmxwZWp0ZnBpaXhkbC5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlX2ZpbGVzL2Rvd25sb2FkXCI6IG5jY3ptdm1uaHVpdWZ5aWkuZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9maWxlcy9nZXRcIjogbXlndmN5ZXZ1Z2x2emZsbS5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlX2ZpbGVzL2xpc3RcIjogYXZtc2V4dHFub2N6cnJnYy5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlX3JlbGVhc2VzL2NyZWF0ZVwiOiB1bWZhd2pvdXNudmthZnloLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VfcmVsZWFzZXMvZ2V0XCI6IGR5cmh0cGx0b25xaHNmdWkuZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9yZWxlYXNlcy9saXN0XCI6IG90Y3hvYWxtdWFheWx6Ym8uZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9yZWxlYXNlcy91cGRhdGVcIjogeGFweHllZmJwdnVteWpvdS5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlcy9hZGRfc3RhclwiOiBtZ2VqZGtoZW1saXhzcHZ2LmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VzL2NyZWF0ZVwiOiBydG5yeWd1ZXltcmlmdGV3LmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VzL2RlbGV0ZVwiOiB1Y21oZm93bWxiZXR1eGN1LmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VzL2ZvcmtcIjogbGViYWdqa2V1dnJleHdvZy5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlcy9nZXRcIjogZ2ttdmF4cHR1dGVja3ZjbS5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlcy9saXN0XCI6IGJ0cnh1ZWhzYnhiaXJkdmYuZGVmYXVsdCxcIi9hcGkvcGFja2FnZXMvcmVtb3ZlX3N0YXJcIjogZ3B5a2xnaWl5bnZrem9oay5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlcy91cGRhdGVcIjogbmp1bWN6dXlkZGZwb2dzYy5kZWZhdWx0LFwiL2FwaS9zbmlwcGV0cy9hZGRfc3RhclwiOiBkY29uYWt1cW96a3h0dmNtLmRlZmF1bHQsXCIvYXBpL3NuaXBwZXRzL2NyZWF0ZVwiOiBrbXB5dWVjYWZubmpiaW5yLmRlZmF1bHQsXCIvYXBpL3NuaXBwZXRzL2RlbGV0ZVwiOiBrZmRoZ2N5dGJidmtlcXZwLmRlZmF1bHQsXCIvYXBpL3NuaXBwZXRzL2Rvd25sb2FkXCI6IG5jZW50amprZHhpZHlya3QuZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvZ2VuZXJhdGVfZnJvbV9qbGNwY2JcIjogY2JxYm1jZ25ub25lZWt0Yy5kZWZhdWx0LFwiL2FwaS9zbmlwcGV0cy9nZXRfaW1hZ2VcIjogenlkcGVnZm5pdXJqc21mcy5kZWZhdWx0LFwiL2FwaS9zbmlwcGV0cy9nZXRcIjogenBtZG5qZG13eXZicXpjYS5kZWZhdWx0LFwiL2FwaS9zbmlwcGV0cy9pbWFnZXMvW2F1dGhvcl0vW3NuaXBwZXRfbmFtZV0vW3R5cGVGb3JtYXRdXCI6IG1ibXVsbXVwZnZpeGZhZWguZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvbGlzdF9sYXRlc3RcIjogY3Ric3Z4d3R4Z3NzaHFrYS5kZWZhdWx0LFwiL2FwaS9zbmlwcGV0cy9saXN0X3RyZW5kaW5nXCI6IGF3anB3amR2aGh0dGd5eHYuZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvbGlzdFwiOiB1eHd3b2t1ZmhsZGNsdnN0LmRlZmF1bHQsXCIvYXBpL3NuaXBwZXRzL3JlbW92ZV9zdGFyXCI6IHdva3FjZHVzdGxmb2pyeW8uZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvc2VhcmNoXCI6IHBpc2t0ZGFucnJnYXhkY2YuZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvdXBkYXRlXCI6IGZrdWtxbmx4cG5la3J0a2kuZGVmYXVsdFxufVxuXG5jb25zdCB3aW50ZXJTcGVjID0ge1xuICByb3V0ZU1hdGNoZXI6IGdldFJvdXRlTWF0Y2hlcihPYmplY3Qua2V5cyhyb3V0ZU1hcFdpdGhIYW5kbGVycykpLFxuICByb3V0ZU1hcFdpdGhIYW5kbGVycyxcbiAgbWFrZVJlcXVlc3Q6IGFzeW5jIChyZXEsIG9wdGlvbnMpID0+IG1ha2VSZXF1ZXN0QWdhaW5zdFdpbnRlclNwZWMod2ludGVyU3BlYywgb3B0aW9ucykocmVxKVxufVxuXG5leHBvcnQgZGVmYXVsdCB3aW50ZXJTcGVjIiwgImltcG9ydCB7IGNyZWF0ZVdpdGhXaW50ZXJTcGVjIH0gZnJvbSBcIndpbnRlcnNwZWNcIlxuaW1wb3J0IHsgd2l0aERiIH0gZnJvbSBcIi4vd2l0aC1kYlwiXG5pbXBvcnQgeyBjcmVhdGVXaXRoRGVmYXVsdEV4Y2VwdGlvbkhhbmRsaW5nIH0gZnJvbSBcIndpbnRlcnNwZWMvbWlkZGxld2FyZVwiXG5pbXBvcnQgeyB3aXRoQ3R4RXJyb3IgfSBmcm9tIFwiLi93aXRoLWN0eC1lcnJvclwiXG5pbXBvcnQgeyB3aXRoU2Vzc2lvbkF1dGggfSBmcm9tIFwiLi93aXRoLXNlc3Npb24tYXV0aFwiXG5pbXBvcnQgeyB3aXRoT3B0aW9uYWxTZXNzaW9uQXV0aCB9IGZyb20gXCIuL3dpdGgtb3B0aW9uYWwtc2Vzc2lvbi1hdXRoXCJcbmltcG9ydCB7IHdpdGhFcnJvckhhbmRsaW5nIH0gZnJvbSBcIi4vd2l0aC1lcnJvci1oYW5kbGluZ1wiXG5pbXBvcnQgeyB3aXRoUmVxdWVzdExvZ2dpbmcgfSBmcm9tIFwiLi93aXRoLXJlcXVlc3QtbG9nZ2luZ1wiXG5cbmV4cG9ydCBjb25zdCB3aXRoUm91dGVTcGVjID0gY3JlYXRlV2l0aFdpbnRlclNwZWMoe1xuICBhcGlOYW1lOiBcInRzY2lyY3VpdCBTbmlwcGV0cyBBUElcIixcbiAgcHJvZHVjdGlvblNlcnZlclVybDogXCJodHRwczovL3NuaXBwZXRzLnRzY2lyY3VpdC5jb20vYXBpXCIsXG4gIGJlZm9yZUF1dGhNaWRkbGV3YXJlOiBbd2l0aFJlcXVlc3RMb2dnaW5nLCB3aXRoRXJyb3JIYW5kbGluZywgd2l0aEN0eEVycm9yXSxcbiAgYXV0aE1pZGRsZXdhcmU6IHtcbiAgICBzZXNzaW9uOiB3aXRoU2Vzc2lvbkF1dGgsXG4gICAgb3B0aW9uYWxfc2Vzc2lvbjogd2l0aE9wdGlvbmFsU2Vzc2lvbkF1dGgsXG4gIH0sXG4gIGFmdGVyQXV0aE1pZGRsZXdhcmU6IFtcbiAgICB3aXRoRGIsXG4gICAgY3JlYXRlV2l0aERlZmF1bHRFeGNlcHRpb25IYW5kbGluZyh7XG4gICAgICBpbmNsdWRlU3RhY2tUcmFjZUluUmVzcG9uc2U6IHRydWUsXG4gICAgfSksXG4gIF0sXG59KVxuIiwgImltcG9ydCB0eXBlIHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgaG9pc3QgfSBmcm9tIFwienVzdGFuZC1ob2lzdFwiXG5pbXBvcnQgeyBjcmVhdGVTdG9yZSB9IGZyb20gXCJ6dXN0YW5kL3ZhbmlsbGFcIlxuXG5pbXBvcnQgeyBjb21iaW5lIH0gZnJvbSBcInp1c3RhbmQvbWlkZGxld2FyZVwiXG5pbXBvcnQge1xuICB0eXBlIEFjY291bnQsXG4gIHR5cGUgQWNjb3VudFBhY2thZ2UsXG4gIHR5cGUgSmxjcGNiT3JkZXJTdGF0ZSxcbiAgdHlwZSBKbGNwY2JPcmRlclN0ZXBSdW4sXG4gIHR5cGUgTG9naW5QYWdlLFxuICB0eXBlIE9yZGVyLFxuICB0eXBlIE9yZGVyRmlsZSxcbiAgT3JkZXJRdW90ZSxcbiAgdHlwZSBQYWNrYWdlLFxuICB0eXBlIFBhY2thZ2VGaWxlLFxuICB0eXBlIFBhY2thZ2VSZWxlYXNlLFxuICB0eXBlIFNlc3Npb24sXG4gIHR5cGUgU25pcHBldCxcbiAgZGF0YWJhc2VTY2hlbWEsXG4gIHR5cGUgcGFja2FnZVNjaGVtYSxcbiAgdHlwZSBzbmlwcGV0U2NoZW1hLFxufSBmcm9tIFwiLi9zY2hlbWEudHNcIlxuaW1wb3J0IHsgc2VlZCBhcyBzZWVkRm4gfSBmcm9tIFwiLi9zZWVkXCJcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZURhdGFiYXNlID0gKHsgc2VlZCB9OiB7IHNlZWQ/OiBib29sZWFuIH0gPSB7fSkgPT4ge1xuICBjb25zdCBkYiA9IGhvaXN0KGNyZWF0ZVN0b3JlKGluaXRpYWxpemVyKSlcbiAgaWYgKHNlZWQpIHtcbiAgICBzZWVkRm4oZGIpXG4gIH1cbiAgcmV0dXJuIGRiXG59XG5cbmV4cG9ydCB0eXBlIERiQ2xpZW50ID0gUmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlRGF0YWJhc2U+XG5cbmNvbnN0IGluaXRpYWxpemVyID0gY29tYmluZShkYXRhYmFzZVNjaGVtYS5wYXJzZSh7fSksIChzZXQsIGdldCkgPT4gKHtcbiAgYWRkT3JkZXI6IChvcmRlcjogT21pdDxPcmRlciwgXCJvcmRlcl9pZFwiPik6IE9yZGVyID0+IHtcbiAgICBjb25zdCBuZXdPcmRlciA9IHsgb3JkZXJfaWQ6IGBvcmRlcl8ke2dldCgpLmlkQ291bnRlciArIDF9YCwgLi4ub3JkZXIgfVxuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG9yZGVyczogWy4uLnN0YXRlLm9yZGVycywgbmV3T3JkZXJdLFxuICAgICAgICBpZENvdW50ZXI6IHN0YXRlLmlkQ291bnRlciArIDEsXG4gICAgICB9XG4gICAgfSlcbiAgICByZXR1cm4gbmV3T3JkZXJcbiAgfSxcbiAgZ2V0T3JkZXJCeUlkOiAob3JkZXJJZDogc3RyaW5nKTogT3JkZXIgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUub3JkZXJzLmZpbmQoKG9yZGVyKSA9PiBvcmRlci5vcmRlcl9pZCA9PT0gb3JkZXJJZClcbiAgfSxcbiAgZ2V0T3JkZXJGaWxlc0J5T3JkZXJJZDogKG9yZGVySWQ6IHN0cmluZyk6IE9yZGVyRmlsZVtdID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLm9yZGVyRmlsZXMuZmlsdGVyKChmaWxlKSA9PiBmaWxlLm9yZGVyX2lkID09PSBvcmRlcklkKVxuICB9LFxuICBhZGRPcmRlclF1b3RlOiAoe1xuICAgIGFjY291bnRfaWQsXG4gICAgcGFja2FnZV9yZWxlYXNlX2lkLFxuICAgIHZlbmRvcl9uYW1lLFxuICB9OiB7XG4gICAgYWNjb3VudF9pZDogc3RyaW5nXG4gICAgcGFja2FnZV9yZWxlYXNlX2lkOiBzdHJpbmdcbiAgICB2ZW5kb3JfbmFtZTogc3RyaW5nXG4gIH0pOiBzdHJpbmcgPT4ge1xuICAgIC8vIERldGFpbHMgZm9yIHRoZSBvcmRlciBxdW90ZSB3aWxsIGJlIHVwZGF0ZWQgYnkgdGhlIGpvYiB3aXRoIHRoZSBjb3N0XG4gICAgY29uc3QgbmV3T3JkZXJRdW90ZSA9IHtcbiAgICAgIG9yZGVyX3F1b3RlX2lkOiBgb3JkZXJfcXVvdGVfJHtnZXQoKS5pZENvdW50ZXIgKyAxfWAsXG4gICAgICBhY2NvdW50X2lkLFxuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgdXBkYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgY29tcGxldGVkX2F0OiBudWxsLFxuICAgICAgZXJyb3I6IG51bGwsXG4gICAgICBoYXNfZXJyb3I6IGZhbHNlLFxuICAgICAgaXNfY29tcGxldGVkOiBmYWxzZSxcbiAgICAgIGlzX3Byb2Nlc3Npbmc6IHRydWUsXG4gICAgICB2ZW5kb3JfbmFtZSxcbiAgICAgIHF1b3RlZF9jb21wb25lbnRzOiBbXSxcbiAgICAgIGJhcmVfcGNiX2Nvc3Q6IDAsXG4gICAgICBzaGlwcGluZ19vcHRpb25zOiBbXSxcbiAgICAgIHRvdGFsX2Nvc3Q6IDAsXG4gICAgfVxuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG9yZGVyUXVvdGVzOiBbLi4uc3RhdGUub3JkZXJRdW90ZXMsIG5ld09yZGVyUXVvdGVdLFxuICAgICAgICBpZENvdW50ZXI6IHN0YXRlLmlkQ291bnRlciArIDEsXG4gICAgICB9XG4gICAgfSlcbiAgICByZXR1cm4gbmV3T3JkZXJRdW90ZS5vcmRlcl9xdW90ZV9pZFxuICB9LFxuICBnZXRPcmRlclF1b3RlQnlJZDogKG9yZGVyUXVvdGVJZDogc3RyaW5nKTogT3JkZXJRdW90ZSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5vcmRlclF1b3Rlcy5maW5kKFxuICAgICAgKHF1b3RlKSA9PiBxdW90ZS5vcmRlcl9xdW90ZV9pZCA9PT0gb3JkZXJRdW90ZUlkLFxuICAgIClcbiAgfSxcbiAgZ2V0SmxjcGNiT3JkZXJTdGF0ZXNCeU9yZGVySWQ6IChcbiAgICBvcmRlcklkOiBzdHJpbmcsXG4gICk6IEpsY3BjYk9yZGVyU3RhdGUgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUuamxjcGNiT3JkZXJTdGF0ZS5maW5kKChzdGF0ZSkgPT4gc3RhdGUub3JkZXJfaWQgPT09IG9yZGVySWQpXG4gIH0sXG4gIGdldEpsY3BjYk9yZGVyU3RlcFJ1bnNCeUpsY3BjYk9yZGVyU3RhdGVJZDogKFxuICAgIGpsY3BjYk9yZGVyU3RhdGVJZDogc3RyaW5nLFxuICApOiBKbGNwY2JPcmRlclN0ZXBSdW5bXSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5qbGNwY2JPcmRlclN0ZXBSdW5zXG4gICAgICAuZmlsdGVyKChzdGVwUnVuKSA9PiB7XG4gICAgICAgIGNvbnN0IG9yZGVyU3RhdGUgPSBzdGF0ZS5qbGNwY2JPcmRlclN0YXRlLmZpbmQoXG4gICAgICAgICAgKHN0YXRlKSA9PlxuICAgICAgICAgICAgc3RhdGUuamxjcGNiX29yZGVyX3N0YXRlX2lkID09PSBzdGVwUnVuLmpsY3BjYl9vcmRlcl9zdGF0ZV9pZCxcbiAgICAgICAgKVxuICAgICAgICByZXR1cm4gb3JkZXJTdGF0ZT8ub3JkZXJfaWQgPT09IGpsY3BjYk9yZGVyU3RhdGVJZFxuICAgICAgfSlcbiAgICAgIC5zb3J0KFxuICAgICAgICAoYSwgYikgPT5cbiAgICAgICAgICBuZXcgRGF0ZShhLmNyZWF0ZWRfYXQpLmdldFRpbWUoKSAtIG5ldyBEYXRlKGIuY3JlYXRlZF9hdCkuZ2V0VGltZSgpLFxuICAgICAgKVxuICB9LFxuICB1cGRhdGVPcmRlcjogKG9yZGVySWQ6IHN0cmluZywgdXBkYXRlczogUGFydGlhbDxPcmRlcj4pID0+IHtcbiAgICBzZXQoKHN0YXRlKSA9PiAoe1xuICAgICAgb3JkZXJzOiBzdGF0ZS5vcmRlcnMubWFwKChvcmRlcikgPT5cbiAgICAgICAgb3JkZXIub3JkZXJfaWQgPT09IG9yZGVySWQgPyB7IC4uLm9yZGVyLCAuLi51cGRhdGVzIH0gOiBvcmRlcixcbiAgICAgICksXG4gICAgfSkpXG4gIH0sXG4gIGFkZEpsY3BjYk9yZGVyU3RhdGU6IChcbiAgICBvcmRlclN0YXRlOiBPbWl0PEpsY3BjYk9yZGVyU3RhdGUsIFwiamxjcGNiX29yZGVyX3N0YXRlX2lkXCI+LFxuICApOiBKbGNwY2JPcmRlclN0YXRlID0+IHtcbiAgICBjb25zdCBuZXdPcmRlclN0YXRlID0ge1xuICAgICAgamxjcGNiX29yZGVyX3N0YXRlX2lkOiBgb3JkZXJfc3RhdGVfJHtnZXQoKS5pZENvdW50ZXIgKyAxfWAsXG4gICAgICAuLi5vcmRlclN0YXRlLFxuICAgIH1cbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBqbGNwY2JPcmRlclN0YXRlOiBbLi4uc3RhdGUuamxjcGNiT3JkZXJTdGF0ZSwgbmV3T3JkZXJTdGF0ZV0sXG4gICAgICAgIGlkQ291bnRlcjogc3RhdGUuaWRDb3VudGVyICsgMSxcbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiBuZXdPcmRlclN0YXRlXG4gIH0sXG4gIHVwZGF0ZUpsY3BjYk9yZGVyU3RhdGU6IChcbiAgICBvcmRlcklkOiBzdHJpbmcsXG4gICAgdXBkYXRlczogUGFydGlhbDxKbGNwY2JPcmRlclN0YXRlPixcbiAgKSA9PiB7XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIGpsY3BjYk9yZGVyU3RhdGU6IHN0YXRlLmpsY3BjYk9yZGVyU3RhdGUubWFwKChvcmRlclN0YXRlKSA9PlxuICAgICAgICBvcmRlclN0YXRlLm9yZGVyX2lkID09PSBvcmRlcklkXG4gICAgICAgICAgPyB7IC4uLm9yZGVyU3RhdGUsIC4uLnVwZGF0ZXMgfVxuICAgICAgICAgIDogb3JkZXJTdGF0ZSxcbiAgICAgICksXG4gICAgfSkpXG4gIH0sXG4gIGFkZE9yZGVyRmlsZTogKG9yZGVyRmlsZTogT21pdDxPcmRlckZpbGUsIFwib3JkZXJfZmlsZV9pZFwiPik6IE9yZGVyRmlsZSA9PiB7XG4gICAgY29uc3QgbmV3T3JkZXJGaWxlID0ge1xuICAgICAgb3JkZXJfZmlsZV9pZDogYG9yZGVyX2ZpbGVfJHtnZXQoKS5pZENvdW50ZXIgKyAxfWAsXG4gICAgICAuLi5vcmRlckZpbGUsXG4gICAgfVxuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG9yZGVyRmlsZXM6IFsuLi5zdGF0ZS5vcmRlckZpbGVzLCBuZXdPcmRlckZpbGVdLFxuICAgICAgICBpZENvdW50ZXI6IHN0YXRlLmlkQ291bnRlciArIDEsXG4gICAgICB9XG4gICAgfSlcbiAgICByZXR1cm4gbmV3T3JkZXJGaWxlXG4gIH0sXG4gIGdldE9yZGVyRmlsZUJ5SWQ6IChvcmRlckZpbGVJZDogc3RyaW5nKTogT3JkZXJGaWxlIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLm9yZGVyRmlsZXMuZmluZCgoZmlsZSkgPT4gZmlsZS5vcmRlcl9maWxlX2lkID09PSBvcmRlckZpbGVJZClcbiAgfSxcbiAgYWRkQWNjb3VudDogKFxuICAgIGFjY291bnQ6IE9taXQ8QWNjb3VudCwgXCJhY2NvdW50X2lkXCI+ICYgUGFydGlhbDxQaWNrPEFjY291bnQsIFwiYWNjb3VudF9pZFwiPj4sXG4gICkgPT4ge1xuICAgIGNvbnN0IG5ld0FjY291bnQgPSB7XG4gICAgICBhY2NvdW50X2lkOiBhY2NvdW50LmFjY291bnRfaWQgfHwgYGFjY291bnRfJHtnZXQoKS5pZENvdW50ZXIgKyAxfWAsXG4gICAgICAuLi5hY2NvdW50LFxuICAgIH1cblxuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFjY291bnRzOiBbLi4uc3RhdGUuYWNjb3VudHMsIG5ld0FjY291bnRdLFxuICAgICAgICBpZENvdW50ZXI6IHN0YXRlLmlkQ291bnRlciArIDEsXG4gICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiBuZXdBY2NvdW50XG4gIH0sXG4gIGFkZEFjY291bnRQYWNrYWdlOiAoXG4gICAgYWNjb3VudFBhY2thZ2U6IE9taXQ8QWNjb3VudFBhY2thZ2UsIFwiYWNjb3VudF9wYWNrYWdlX2lkXCI+LFxuICApOiBBY2NvdW50UGFja2FnZSA9PiB7XG4gICAgY29uc3QgbmV3QWNjb3VudFBhY2thZ2UgPSB7XG4gICAgICBhY2NvdW50X3BhY2thZ2VfaWQ6IGBhcF8ke2dldCgpLmlkQ291bnRlciArIDF9YCxcbiAgICAgIC4uLmFjY291bnRQYWNrYWdlLFxuICAgIH1cbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhY2NvdW50UGFja2FnZXM6IFsuLi5zdGF0ZS5hY2NvdW50UGFja2FnZXMsIG5ld0FjY291bnRQYWNrYWdlXSxcbiAgICAgICAgaWRDb3VudGVyOiBzdGF0ZS5pZENvdW50ZXIgKyAxLFxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIG5ld0FjY291bnRQYWNrYWdlXG4gIH0sXG4gIGdldEFjY291bnRQYWNrYWdlQnlJZDogKFxuICAgIGFjY291bnRQYWNrYWdlSWQ6IHN0cmluZyxcbiAgKTogQWNjb3VudFBhY2thZ2UgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUuYWNjb3VudFBhY2thZ2VzLmZpbmQoXG4gICAgICAoYXApID0+IGFwLmFjY291bnRfcGFja2FnZV9pZCA9PT0gYWNjb3VudFBhY2thZ2VJZCxcbiAgICApXG4gIH0sXG4gIHVwZGF0ZUFjY291bnRQYWNrYWdlOiAoXG4gICAgYWNjb3VudFBhY2thZ2VJZDogc3RyaW5nLFxuICAgIHVwZGF0ZXM6IFBhcnRpYWw8QWNjb3VudFBhY2thZ2U+LFxuICApOiB2b2lkID0+IHtcbiAgICBzZXQoKHN0YXRlKSA9PiAoe1xuICAgICAgYWNjb3VudFBhY2thZ2VzOiBzdGF0ZS5hY2NvdW50UGFja2FnZXMubWFwKChhcCkgPT5cbiAgICAgICAgYXAuYWNjb3VudF9wYWNrYWdlX2lkID09PSBhY2NvdW50UGFja2FnZUlkID8geyAuLi5hcCwgLi4udXBkYXRlcyB9IDogYXAsXG4gICAgICApLFxuICAgIH0pKVxuICB9LFxuICBkZWxldGVBY2NvdW50UGFja2FnZTogKGFjY291bnRQYWNrYWdlSWQ6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICAgIGxldCBkZWxldGVkID0gZmFsc2VcbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IHN0YXRlLmFjY291bnRQYWNrYWdlcy5maW5kSW5kZXgoXG4gICAgICAgIChhcCkgPT4gYXAuYWNjb3VudF9wYWNrYWdlX2lkID09PSBhY2NvdW50UGFja2FnZUlkLFxuICAgICAgKVxuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBzdGF0ZS5hY2NvdW50UGFja2FnZXMuc3BsaWNlKGluZGV4LCAxKVxuICAgICAgICBkZWxldGVkID0gdHJ1ZVxuICAgICAgfVxuICAgICAgcmV0dXJuIHN0YXRlXG4gICAgfSlcbiAgICByZXR1cm4gZGVsZXRlZFxuICB9LFxuICBhZGRTbmlwcGV0OiAoXG4gICAgc25pcHBldDogT21pdDxcbiAgICAgIHouaW5wdXQ8dHlwZW9mIHNuaXBwZXRTY2hlbWE+LFxuICAgICAgXCJzbmlwcGV0X2lkXCIgfCBcInBhY2thZ2VfcmVsZWFzZV9pZFwiXG4gICAgPixcbiAgKTogU25pcHBldCA9PiB7XG4gICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKVxuICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gbmV3IERhdGUodGltZXN0YW1wKS50b0lTT1N0cmluZygpXG5cbiAgICBjb25zdCBuZXdTdGF0ZSA9IGdldCgpXG4gICAgY29uc3QgbmV4dElkID0gbmV3U3RhdGUuaWRDb3VudGVyICsgMVxuXG4gICAgLy8gQ3JlYXRlIHRoZSBwYWNrYWdlIHRoYXQgd2lsbCBzZXJ2ZSBhcyBvdXIgc25pcHBldFxuICAgIGNvbnN0IG5ld1BhY2thZ2UgPSB7XG4gICAgICBwYWNrYWdlX2lkOiBgcGtnXyR7bmV4dElkfWAsXG4gICAgICBjcmVhdG9yX2FjY291bnRfaWQ6IHNuaXBwZXQub3duZXJfbmFtZSwgLy8gVXNpbmcgb3duZXJfbmFtZSBhcyBhY2NvdW50X2lkIHNpbmNlIHdlIGRvbid0IGhhdmUgY29udGV4dFxuICAgICAgb3duZXJfb3JnX2lkOiBcIlwiLCAvLyBFbXB0eSBzdHJpbmcgaW5zdGVhZCBvZiBudWxsIHRvIG1hdGNoIHR5cGVcbiAgICAgIG93bmVyX2dpdGh1Yl91c2VybmFtZTogc25pcHBldC5vd25lcl9uYW1lLFxuICAgICAgaXNfc291cmNlX2Zyb21fZ2l0aHViOiBmYWxzZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBzbmlwcGV0LmRlc2NyaXB0aW9uIHx8IFwiXCIsXG4gICAgICBuYW1lOiBgJHtzbmlwcGV0Lm93bmVyX25hbWV9LyR7c25pcHBldC51bnNjb3BlZF9uYW1lfWAsXG4gICAgICB1bnNjb3BlZF9uYW1lOiBzbmlwcGV0LnVuc2NvcGVkX25hbWUsXG4gICAgICBsYXRlc3RfdmVyc2lvbjogXCIwLjAuMVwiLFxuICAgICAgbGljZW5zZTogbnVsbCxcbiAgICAgIHdlYnNpdGU6IG51bGwsXG4gICAgICBzdGFyX2NvdW50OiAwLFxuICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICB1cGRhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIGFpX2Rlc2NyaXB0aW9uOiBcInBsYWNlaG9sZGVyIGFpIGRlc2NyaXB0aW9uXCIsXG4gICAgICBhaV91c2FnZV9pbnN0cnVjdGlvbnM6IFwicGxhY2Vob2xkZXIgYWkgdXNhZ2UgaW5zdHJ1Y3Rpb25zXCIsXG4gICAgICBpc19zbmlwcGV0OiB0cnVlLFxuICAgICAgaXNfYm9hcmQ6IHNuaXBwZXQuc25pcHBldF90eXBlID09PSBcImJvYXJkXCIsXG4gICAgICBpc19wYWNrYWdlOiBzbmlwcGV0LnNuaXBwZXRfdHlwZSA9PT0gXCJwYWNrYWdlXCIsXG4gICAgICBpc19tb2RlbDogc25pcHBldC5zbmlwcGV0X3R5cGUgPT09IFwibW9kZWxcIixcbiAgICAgIGlzX2Zvb3RwcmludDogc25pcHBldC5zbmlwcGV0X3R5cGUgPT09IFwiZm9vdHByaW50XCIsXG4gICAgICBzbmlwcGV0X3R5cGU6IHNuaXBwZXQuc25pcHBldF90eXBlLFxuICAgICAgaXNfcHJpdmF0ZTogZmFsc2UsXG4gICAgICBpc19wdWJsaWM6IHRydWUsXG4gICAgICBpc191bmxpc3RlZDogZmFsc2UsXG4gICAgICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkOiBgcGFja2FnZV9yZWxlYXNlXyR7bmV4dElkfWAsXG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIHBhY2thZ2UgcmVsZWFzZVxuICAgIGNvbnN0IG5ld1BhY2thZ2VSZWxlYXNlID0ge1xuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBgcGFja2FnZV9yZWxlYXNlXyR7bmV4dElkfWAsXG4gICAgICBwYWNrYWdlX2lkOiBuZXdQYWNrYWdlLnBhY2thZ2VfaWQsXG4gICAgICB2ZXJzaW9uOiBcIjAuMC4xXCIsXG4gICAgICBpc19sYXRlc3Q6IHRydWUsXG4gICAgICBpc19sb2NrZWQ6IGZhbHNlLFxuICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICB1cGRhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICB9XG5cbiAgICAvLyBBZGQgYWxsIHRoZSBmaWxlc1xuICAgIGNvbnN0IHBhY2thZ2VGaWxlczogUGFja2FnZUZpbGVbXSA9IFtdXG4gICAgbGV0IGZpbGVJZENvdW50ZXIgPSBuZXh0SWRcblxuICAgIC8vIEFkZCBtYWluIGNvZGUgZmlsZVxuICAgIHBhY2thZ2VGaWxlcy5wdXNoKHtcbiAgICAgIHBhY2thZ2VfZmlsZV9pZDogYHBhY2thZ2VfZmlsZV8ke2ZpbGVJZENvdW50ZXIrK31gLFxuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBuZXdQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICBmaWxlX3BhdGg6IFwiaW5kZXgudHN4XCIsXG4gICAgICBjb250ZW50X3RleHQ6IHNuaXBwZXQuY29kZSB8fCBcIlwiLFxuICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgfSlcblxuICAgIC8vIEFkZCBEVFMgZmlsZSBpZiBwcm92aWRlZFxuICAgIGlmIChzbmlwcGV0LmR0cykge1xuICAgICAgcGFja2FnZUZpbGVzLnB1c2goe1xuICAgICAgICBwYWNrYWdlX2ZpbGVfaWQ6IGBwYWNrYWdlX2ZpbGVfJHtmaWxlSWRDb3VudGVyKyt9YCxcbiAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBuZXdQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgIGZpbGVfcGF0aDogXCIvZGlzdC9pbmRleC5kLnRzXCIsXG4gICAgICAgIGNvbnRlbnRfdGV4dDogc25pcHBldC5kdHMsXG4gICAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyBBZGQgY29tcGlsZWQgSlMgaWYgcHJvdmlkZWRcbiAgICBpZiAoc25pcHBldC5jb21waWxlZF9qcykge1xuICAgICAgcGFja2FnZUZpbGVzLnB1c2goe1xuICAgICAgICBwYWNrYWdlX2ZpbGVfaWQ6IGBwYWNrYWdlX2ZpbGVfJHtmaWxlSWRDb3VudGVyKyt9YCxcbiAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBuZXdQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgIGZpbGVfcGF0aDogXCIvZGlzdC9pbmRleC5qc1wiLFxuICAgICAgICBjb250ZW50X3RleHQ6IHNuaXBwZXQuY29tcGlsZWRfanMsXG4gICAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyBBZGQgY2lyY3VpdCBKU09OIGlmIHByb3ZpZGVkXG4gICAgaWYgKHNuaXBwZXQuY2lyY3VpdF9qc29uICYmIHNuaXBwZXQuY2lyY3VpdF9qc29uLmxlbmd0aCA+IDApIHtcbiAgICAgIHBhY2thZ2VGaWxlcy5wdXNoKHtcbiAgICAgICAgcGFja2FnZV9maWxlX2lkOiBgcGFja2FnZV9maWxlXyR7ZmlsZUlkQ291bnRlcisrfWAsXG4gICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICBmaWxlX3BhdGg6IFwiL2Rpc3QvY2lyY3VpdC5qc29uXCIsXG4gICAgICAgIGNvbnRlbnRfdGV4dDogSlNPTi5zdHJpbmdpZnkoc25pcHBldC5jaXJjdWl0X2pzb24pLFxuICAgICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHRoZSBkYXRhYmFzZSBzdGF0ZSBhdG9taWNhbGx5XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgcGFja2FnZXM6IFsuLi5zdGF0ZS5wYWNrYWdlcywgbmV3UGFja2FnZV0sXG4gICAgICBwYWNrYWdlUmVsZWFzZXM6IFsuLi5zdGF0ZS5wYWNrYWdlUmVsZWFzZXMsIG5ld1BhY2thZ2VSZWxlYXNlXSxcbiAgICAgIHBhY2thZ2VGaWxlczogWy4uLnN0YXRlLnBhY2thZ2VGaWxlcywgLi4ucGFja2FnZUZpbGVzXSxcbiAgICAgIGlkQ291bnRlcjogZmlsZUlkQ291bnRlcixcbiAgICB9KSlcblxuICAgIC8vIFJldHVybiBpbiB0aGUgc2FtZSBmb3JtYXQgYXMgY3JlYXRlIGVuZHBvaW50XG4gICAgcmV0dXJuIHtcbiAgICAgIHNuaXBwZXRfaWQ6IG5ld1BhY2thZ2UucGFja2FnZV9pZCxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgbmFtZTogbmV3UGFja2FnZS5uYW1lLFxuICAgICAgdW5zY29wZWRfbmFtZTogbmV3UGFja2FnZS51bnNjb3BlZF9uYW1lLFxuICAgICAgb3duZXJfbmFtZTogc25pcHBldC5vd25lcl9uYW1lLFxuICAgICAgY29kZTogc25pcHBldC5jb2RlIHx8IFwiXCIsXG4gICAgICBkdHM6IHNuaXBwZXQuZHRzLFxuICAgICAgY29tcGlsZWRfanM6IHNuaXBwZXQuY29tcGlsZWRfanMsXG4gICAgICBzdGFyX2NvdW50OiAwLFxuICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICB1cGRhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIHNuaXBwZXRfdHlwZTogc25pcHBldC5zbmlwcGV0X3R5cGUsXG4gICAgICBjaXJjdWl0X2pzb246IHNuaXBwZXQuY2lyY3VpdF9qc29uIHx8IFtdLFxuICAgICAgZGVzY3JpcHRpb246IHNuaXBwZXQuZGVzY3JpcHRpb24gfHwgXCJcIixcbiAgICAgIGlzX3N0YXJyZWQ6IGZhbHNlLFxuICAgICAgdmVyc2lvbjogXCIwLjAuMVwiLFxuICAgICAgaXNfcHJpdmF0ZTogZmFsc2UsXG4gICAgICBpc19wdWJsaWM6IHRydWUsXG4gICAgICBpc191bmxpc3RlZDogZmFsc2UsXG4gICAgfVxuICB9LFxuICBnZXRMYXRlc3RTbmlwcGV0czogKGxpbWl0OiBudW1iZXIpOiBTbmlwcGV0W10gPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcblxuICAgIC8vIEdldCBhbGwgcGFja2FnZXMgdGhhdCBhcmUgc25pcHBldHNcbiAgICBjb25zdCBzbmlwcGV0UGFja2FnZXMgPSBzdGF0ZS5wYWNrYWdlc1xuICAgICAgLmZpbHRlcigocGtnKSA9PiBwa2cuaXNfc25pcHBldCA9PT0gdHJ1ZSlcbiAgICAgIC5tYXAoKHBrZykgPT4ge1xuICAgICAgICAvLyBHZXQgdGhlIHBhY2thZ2UgcmVsZWFzZVxuICAgICAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IHN0YXRlLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAgIChwcikgPT5cbiAgICAgICAgICAgIHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGtnLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgJiZcbiAgICAgICAgICAgIHByLmlzX2xhdGVzdCA9PT0gdHJ1ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSByZXR1cm4gbnVsbFxuXG4gICAgICAgIC8vIEdldCB0aGUgcGFja2FnZSBmaWxlc1xuICAgICAgICBjb25zdCBwYWNrYWdlRmlsZXMgPSBzdGF0ZS5wYWNrYWdlRmlsZXMuZmlsdGVyKFxuICAgICAgICAgIChmaWxlKSA9PlxuICAgICAgICAgICAgZmlsZS5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgICAgKVxuXG4gICAgICAgIC8vIEdldCB0aGUgY29kZSBmaWxlXG4gICAgICAgIGNvbnN0IGNvZGVGaWxlID0gcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAgICAgKGZpbGUpID0+XG4gICAgICAgICAgICBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c1wiIHx8IGZpbGUuZmlsZV9wYXRoID09PSBcImluZGV4LnRzeFwiLFxuICAgICAgICApXG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgc3RhcnJlZFxuICAgICAgICBjb25zdCBpc1N0YXJyZWQgPSBzdGF0ZS5hY2NvdW50UGFja2FnZXMuc29tZShcbiAgICAgICAgICAoYXApID0+IGFwLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIGFwLmlzX3N0YXJyZWQsXG4gICAgICAgIClcblxuICAgICAgICAvLyBDb252ZXJ0IHRvIHNuaXBwZXQgZm9ybWF0XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc25pcHBldF9pZDogcGtnLnBhY2thZ2VfaWQsXG4gICAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCB8fCBcIlwiLFxuICAgICAgICAgIHVuc2NvcGVkX25hbWU6IHBrZy51bnNjb3BlZF9uYW1lLFxuICAgICAgICAgIG5hbWU6IHBrZy5uYW1lLFxuICAgICAgICAgIG93bmVyX25hbWU6IHBrZy5vd25lcl9naXRodWJfdXNlcm5hbWUgfHwgXCJcIixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogcGtnLmRlc2NyaXB0aW9uIHx8IFwiXCIsXG4gICAgICAgICAgc25pcHBldF90eXBlOiBwa2cuc25pcHBldF90eXBlIHx8IFwiYm9hcmRcIixcbiAgICAgICAgICBjb2RlOiBjb2RlRmlsZT8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICAgICAgZHRzOlxuICAgICAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmQudHNcIilcbiAgICAgICAgICAgICAgPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgICAgICBjb21waWxlZF9qczpcbiAgICAgICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5qc1wiKVxuICAgICAgICAgICAgICA/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgICAgIGNyZWF0ZWRfYXQ6IHBrZy5jcmVhdGVkX2F0LFxuICAgICAgICAgIHVwZGF0ZWRfYXQ6IHBrZy51cGRhdGVkX2F0LFxuICAgICAgICAgIHN0YXJfY291bnQ6IHBrZy5zdGFyX2NvdW50IHx8IDAsXG4gICAgICAgICAgaXNfc3RhcnJlZDogaXNTdGFycmVkLFxuICAgICAgICAgIHZlcnNpb246IHBrZy5sYXRlc3RfdmVyc2lvbiB8fCBcIjAuMC4xXCIsXG4gICAgICAgICAgY2lyY3VpdF9qc29uOlxuICAgICAgICAgICAgcGFja2FnZUZpbGVzXG4gICAgICAgICAgICAgIC5maWx0ZXIoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2NpcmN1aXQuanNvblwiKVxuICAgICAgICAgICAgICAuZmxhdE1hcCgoZmlsZSkgPT4gSlNPTi5wYXJzZShmaWxlLmNvbnRlbnRfdGV4dCB8fCBcIltdXCIpKSB8fCBbXSxcbiAgICAgICAgICBpc19wcml2YXRlOiBwa2cuaXNfcHJpdmF0ZSB8fCBmYWxzZSxcbiAgICAgICAgICBpc19wdWJsaWM6IHBrZy5pc19wdWJsaWMgfHwgdHJ1ZSxcbiAgICAgICAgICBpc191bmxpc3RlZDogcGtnLmlzX3VubGlzdGVkIHx8IGZhbHNlLFxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmZpbHRlcihcbiAgICAgICAgKHNuaXBwZXQpOiBzbmlwcGV0IGlzIE5vbk51bGxhYmxlPHR5cGVvZiBzbmlwcGV0PiA9PiBzbmlwcGV0ICE9PSBudWxsLFxuICAgICAgKVxuICAgICAgLm1hcCgoc25pcHBldCkgPT4gKHtcbiAgICAgICAgLi4uc25pcHBldCxcbiAgICAgICAgZGVzY3JpcHRpb246IHNuaXBwZXQuZGVzY3JpcHRpb24gfHwgXCJcIixcbiAgICAgIH0pKVxuICAgICAgLnNvcnQoXG4gICAgICAgIChhLCBiKSA9PlxuICAgICAgICAgIG5ldyBEYXRlKGIuY3JlYXRlZF9hdCkuZ2V0VGltZSgpIC0gbmV3IERhdGUoYS5jcmVhdGVkX2F0KS5nZXRUaW1lKCksXG4gICAgICApXG4gICAgICAuc2xpY2UoMCwgbGltaXQpXG5cbiAgICByZXR1cm4gc25pcHBldFBhY2thZ2VzXG4gIH0sXG4gIGdldFRyZW5kaW5nU25pcHBldHM6IChsaW1pdDogbnVtYmVyLCBzaW5jZTogc3RyaW5nKTogU25pcHBldFtdID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgY29uc3Qgc2luY2VEYXRlID0gbmV3IERhdGUoc2luY2UpLmdldFRpbWUoKVxuXG4gICAgLy8gR2V0IHN0YXIgY291bnRzIHdpdGhpbiB0aW1lIHBlcmlvZFxuICAgIGNvbnN0IHJlY2VudFN0YXJzID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKVxuICAgIHN0YXRlLmFjY291bnRQYWNrYWdlcy5mb3JFYWNoKChhcCkgPT4ge1xuICAgICAgaWYgKGFwLmlzX3N0YXJyZWQgJiYgbmV3IERhdGUoYXAuY3JlYXRlZF9hdCkuZ2V0VGltZSgpID49IHNpbmNlRGF0ZSkge1xuICAgICAgICByZWNlbnRTdGFycy5zZXQoXG4gICAgICAgICAgYXAucGFja2FnZV9pZCxcbiAgICAgICAgICAocmVjZW50U3RhcnMuZ2V0KGFwLnBhY2thZ2VfaWQpIHx8IDApICsgMSxcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH0pXG5cbiAgICBjb25zdCBwYWNrYWdlc1dpdGhTdGFyQ291bnQgPSBbLi4uc3RhdGUucGFja2FnZXNdXG4gICAgICAubWFwKChwa2cpID0+ICh7XG4gICAgICAgIC4uLnBrZyxcbiAgICAgICAgc3Rhcl9jb3VudDogcmVjZW50U3RhcnMuZ2V0KHBrZy5wYWNrYWdlX2lkKSB8fCAwLFxuICAgICAgfSkpXG4gICAgICAuc29ydCgoYSwgYikgPT4gYi5zdGFyX2NvdW50IC0gYS5zdGFyX2NvdW50KVxuICAgICAgLnNsaWNlKDAsIGxpbWl0KVxuXG4gICAgY29uc3QgdHJlbmRpbmdTbmlwcGV0cyA9IHBhY2thZ2VzV2l0aFN0YXJDb3VudFxuICAgICAgLm1hcCgocGtnKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gc3RhdGUucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAgICAgKHByKSA9PlxuICAgICAgICAgICAgcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCAmJlxuICAgICAgICAgICAgcHIuaXNfbGF0ZXN0ID09PSB0cnVlLFxuICAgICAgICApXG4gICAgICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHJldHVybiBudWxsXG5cbiAgICAgICAgY29uc3QgcGFja2FnZUZpbGVzID0gc3RhdGUucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAgICAgICAoZmlsZSkgPT5cbiAgICAgICAgICAgIGZpbGUucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgIClcblxuICAgICAgICBjb25zdCBjb2RlRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgICAgIChmaWxlKSA9PlxuICAgICAgICAgICAgZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHNcIiB8fCBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIixcbiAgICAgICAgKVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc25pcHBldF9pZDogcGtnLnBhY2thZ2VfaWQsXG4gICAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCB8fCBcIlwiLFxuICAgICAgICAgIHVuc2NvcGVkX25hbWU6IHBrZy51bnNjb3BlZF9uYW1lLFxuICAgICAgICAgIG5hbWU6IHBrZy5uYW1lLFxuICAgICAgICAgIG93bmVyX25hbWU6IHBrZy5vd25lcl9naXRodWJfdXNlcm5hbWUgfHwgXCJcIixcbiAgICAgICAgICBjb2RlOiBjb2RlRmlsZSA/IGNvZGVGaWxlLmNvbnRlbnRfdGV4dCB8fCBcIlwiIDogXCJcIixcbiAgICAgICAgICBjcmVhdGVkX2F0OiBwa2cuY3JlYXRlZF9hdCxcbiAgICAgICAgICB1cGRhdGVkX2F0OiBwa2cudXBkYXRlZF9hdCxcbiAgICAgICAgICBzbmlwcGV0X3R5cGU6IHBrZy5pc19zbmlwcGV0ID8gXCJib2FyZFwiIDogXCJwYWNrYWdlXCIsXG4gICAgICAgICAgc3Rhcl9jb3VudDogcGtnLnN0YXJfY291bnQsXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKChzbmlwcGV0KSA9PiBzbmlwcGV0ICE9PSBudWxsKVxuXG4gICAgcmV0dXJuIHRyZW5kaW5nU25pcHBldHMgYXMgU25pcHBldFtdXG4gIH0sXG4gIGdldFBhY2thZ2VzQnlBdXRob3I6IChhdXRob3JOYW1lPzogc3RyaW5nKTogUGFja2FnZVtdID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgY29uc3QgcGFja2FnZXMgPSBhdXRob3JOYW1lXG4gICAgICA/IHN0YXRlLnBhY2thZ2VzLmZpbHRlcigocGtnKSA9PiBwa2cub3duZXJfZ2l0aHViX3VzZXJuYW1lID09PSBhdXRob3JOYW1lKVxuICAgICAgOiBzdGF0ZS5wYWNrYWdlc1xuICAgIHJldHVybiBwYWNrYWdlcy5tYXAoKHBrZykgPT4gKHtcbiAgICAgIC4uLnBrZyxcbiAgICAgIHN0YXJfY291bnQ6IHN0YXRlLmFjY291bnRQYWNrYWdlcy5maWx0ZXIoXG4gICAgICAgIChhcCkgPT4gYXAucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQgJiYgYXAuaXNfc3RhcnJlZCxcbiAgICAgICkubGVuZ3RoLFxuICAgIH0pKVxuICB9LFxuICBnZXRTbmlwcGV0QnlBdXRob3JBbmROYW1lOiAoXG4gICAgYXV0aG9yTmFtZTogc3RyaW5nLFxuICAgIHNuaXBwZXROYW1lOiBzdHJpbmcsXG4gICk6IFNuaXBwZXQgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICAvLyBMb29rIGZvciB0aGUgcGFja2FnZSB0aGF0IHJlcHJlc2VudHMgdGhpcyBzbmlwcGV0IHdpdGggY2FzZS1pbnNlbnNpdGl2ZSBtYXRjaGluZ1xuICAgIGNvbnN0IF9wYWNrYWdlID0gc3RhdGUucGFja2FnZXMuZmluZChcbiAgICAgIChwa2cpID0+XG4gICAgICAgIHBrZy5vd25lcl9naXRodWJfdXNlcm5hbWU/LnRvTG93ZXJDYXNlKCkgPT09IGF1dGhvck5hbWUudG9Mb3dlckNhc2UoKSAmJlxuICAgICAgICBwa2cubmFtZS50b0xvd2VyQ2FzZSgpID09PSBzbmlwcGV0TmFtZS50b0xvd2VyQ2FzZSgpICYmXG4gICAgICAgIHBrZy5pc19zbmlwcGV0ID09PSB0cnVlLFxuICAgIClcbiAgICBpZiAoIV9wYWNrYWdlKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICAvLyBHZXQgdGhlIHBhY2thZ2UgcmVsZWFzZVxuICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gc3RhdGUucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAocHIpID0+XG4gICAgICAgIHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gX3BhY2thZ2UubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCAmJlxuICAgICAgICBwci5pc19sYXRlc3QgPT09IHRydWUsXG4gICAgKVxuICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHJldHVybiB1bmRlZmluZWRcblxuICAgIC8vIEdldCB0aGUgcGFja2FnZSBmaWxlc1xuICAgIGNvbnN0IHBhY2thZ2VGaWxlcyA9IHN0YXRlLnBhY2thZ2VGaWxlcy5maWx0ZXIoXG4gICAgICAoZmlsZSkgPT4gZmlsZS5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICApXG5cbiAgICAvLyBHZXQgdGhlIGNvZGUgZmlsZSAoaW5kZXgudHMgb3IgaW5kZXgudHN4KVxuICAgIGNvbnN0IGNvZGVGaWxlID0gcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHNcIiB8fCBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIixcbiAgICApXG5cbiAgICAvLyBNYXAgdGhlIHBhY2thZ2UgZGF0YSB0byBtYXRjaCB0aGUgU25pcHBldCBzdHJ1Y3R1cmVcbiAgICByZXR1cm4ge1xuICAgICAgc25pcHBldF9pZDogX3BhY2thZ2UucGFja2FnZV9pZCxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogX3BhY2thZ2UubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCB8fCBcIlwiLFxuICAgICAgdW5zY29wZWRfbmFtZTogX3BhY2thZ2UudW5zY29wZWRfbmFtZSxcbiAgICAgIG5hbWU6IF9wYWNrYWdlLm5hbWUsXG4gICAgICBvd25lcl9uYW1lOiBfcGFja2FnZS5vd25lcl9naXRodWJfdXNlcm5hbWUgfHwgXCJcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBfcGFja2FnZS5kZXNjcmlwdGlvbiB8fCBcIlwiLFxuICAgICAgc25pcHBldF90eXBlOiBfcGFja2FnZS5zbmlwcGV0X3R5cGUgfHwgXCJib2FyZFwiLFxuICAgICAgY29kZTogY29kZUZpbGU/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgZHRzOlxuICAgICAgICBwYWNrYWdlRmlsZXMuZmluZCgoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvaW5kZXguZC50c1wiKVxuICAgICAgICAgID8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICBjb21waWxlZF9qczpcbiAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmpzXCIpXG4gICAgICAgICAgPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgIGNyZWF0ZWRfYXQ6IF9wYWNrYWdlLmNyZWF0ZWRfYXQsXG4gICAgICB1cGRhdGVkX2F0OiBfcGFja2FnZS51cGRhdGVkX2F0LFxuICAgICAgc3Rhcl9jb3VudDogX3BhY2thZ2Uuc3Rhcl9jb3VudCB8fCAwLFxuICAgICAgaXNfc3RhcnJlZDogZmFsc2UsXG4gICAgICB2ZXJzaW9uOiBfcGFja2FnZS5sYXRlc3RfdmVyc2lvbiB8fCBcIjAuMC4xXCIsXG4gICAgICBjaXJjdWl0X2pzb246IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgICAoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvY2lyY3VpdC5qc29uXCIsXG4gICAgICApPy5jb250ZW50X3RleHRcbiAgICAgICAgPyBKU09OLnBhcnNlKFxuICAgICAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2NpcmN1aXQuanNvblwiKVxuICAgICAgICAgICAgICA/LmNvbnRlbnRfdGV4dCB8fCBcIltdXCIsXG4gICAgICAgICAgKVxuICAgICAgICA6IFtdLFxuICAgICAgaXNfcHJpdmF0ZTogX3BhY2thZ2UuaXNfcHJpdmF0ZSB8fCBmYWxzZSxcbiAgICAgIGlzX3B1YmxpYzogX3BhY2thZ2UuaXNfcHVibGljIHx8IHRydWUsXG4gICAgICBpc191bmxpc3RlZDogX3BhY2thZ2UuaXNfdW5saXN0ZWQgfHwgZmFsc2UsXG4gICAgfVxuICB9LFxuICB1cGRhdGVTbmlwcGV0OiAoXG4gICAgc25pcHBldElkOiBzdHJpbmcsXG4gICAgdXBkYXRlczogUGFydGlhbDxTbmlwcGV0PixcbiAgKTogU25pcHBldCB8IHVuZGVmaW5lZCA9PiB7XG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgcGFja2FnZUluZGV4ID0gc3RhdGUucGFja2FnZXMuZmluZEluZGV4KFxuICAgICAgICAocGtnKSA9PiBwa2cucGFja2FnZV9pZCA9PT0gc25pcHBldElkICYmIHBrZy5pc19zbmlwcGV0ID09PSB0cnVlLFxuICAgICAgKVxuICAgICAgaWYgKHBhY2thZ2VJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIHN0YXRlXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KClcbiAgICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gbmV3IERhdGUodGltZXN0YW1wKS50b0lTT1N0cmluZygpXG5cbiAgICAgIC8vIFVwZGF0ZSB0aGUgcGFja2FnZVxuICAgICAgY29uc3QgdXBkYXRlZFBhY2thZ2VzID0gWy4uLnN0YXRlLnBhY2thZ2VzXVxuICAgICAgY29uc3QgY3VycmVudFBhY2thZ2UgPSB1cGRhdGVkUGFja2FnZXNbcGFja2FnZUluZGV4XVxuICAgICAgdXBkYXRlZFBhY2thZ2VzW3BhY2thZ2VJbmRleF0gPSB7XG4gICAgICAgIC4uLmN1cnJlbnRQYWNrYWdlLFxuICAgICAgICBkZXNjcmlwdGlvbjogdXBkYXRlcy5kZXNjcmlwdGlvbiA/PyBjdXJyZW50UGFja2FnZS5kZXNjcmlwdGlvbixcbiAgICAgICAgaXNfcHJpdmF0ZTogdXBkYXRlcy5pc19wcml2YXRlID8/IGN1cnJlbnRQYWNrYWdlLmlzX3ByaXZhdGUsXG4gICAgICAgIGlzX3B1YmxpYzpcbiAgICAgICAgICB1cGRhdGVzLmlzX3ByaXZhdGUgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyAhdXBkYXRlcy5pc19wcml2YXRlXG4gICAgICAgICAgICA6IGN1cnJlbnRQYWNrYWdlLmlzX3B1YmxpYyxcbiAgICAgICAgaXNfdW5saXN0ZWQ6IHVwZGF0ZXMuaXNfcHJpdmF0ZVxuICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgIDogKHVwZGF0ZXMuaXNfdW5saXN0ZWQgPz8gY3VycmVudFBhY2thZ2UuaXNfdW5saXN0ZWQpLFxuICAgICAgICB1cGRhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIH1cblxuICAgICAgLy8gR2V0IHRoZSBjdXJyZW50IHBhY2thZ2UgcmVsZWFzZVxuICAgICAgY29uc3QgcGFja2FnZVJlbGVhc2UgPSBzdGF0ZS5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgICAgKHByKSA9PlxuICAgICAgICAgIHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gY3VycmVudFBhY2thZ2UubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgIClcbiAgICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHJldHVybiBzdGF0ZVxuXG4gICAgICAvLyBVcGRhdGUgcGFja2FnZSBmaWxlcyBpZiBjb2RlL2R0cy9qcyBjaGFuZ2VkXG4gICAgICBjb25zdCB1cGRhdGVkRmlsZXMgPSBbLi4uc3RhdGUucGFja2FnZUZpbGVzXVxuICAgICAgY29uc3QgcGFja2FnZUZpbGVzID0gdXBkYXRlZEZpbGVzLmZpbHRlcihcbiAgICAgICAgKGZpbGUpID0+IGZpbGUucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICApXG5cbiAgICAgIGlmICh1cGRhdGVzLmNvZGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBjb2RlRmlsZUluZGV4ID0gcGFja2FnZUZpbGVzLmZpbmRJbmRleChcbiAgICAgICAgICAoZmlsZSkgPT5cbiAgICAgICAgICAgIGZpbGUuZmlsZV9wYXRoID09PSBcImluZGV4LnRzeFwiIHx8IGZpbGUuZmlsZV9wYXRoID09PSBcImluZGV4LnRzXCIsXG4gICAgICAgIClcbiAgICAgICAgaWYgKGNvZGVGaWxlSW5kZXggPj0gMCkge1xuICAgICAgICAgIHVwZGF0ZWRGaWxlc1tjb2RlRmlsZUluZGV4XSA9IHtcbiAgICAgICAgICAgIC4uLnBhY2thZ2VGaWxlc1tjb2RlRmlsZUluZGV4XSxcbiAgICAgICAgICAgIGNvbnRlbnRfdGV4dDogdXBkYXRlcy5jb2RlLFxuICAgICAgICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHVwZGF0ZWRGaWxlcy5wdXNoKHtcbiAgICAgICAgICAgIHBhY2thZ2VfZmlsZV9pZDogYHBhY2thZ2VfZmlsZV8ke3RpbWVzdGFtcH1gLFxuICAgICAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgICAgICBmaWxlX3BhdGg6IFwiaW5kZXgudHN4XCIsXG4gICAgICAgICAgICBjb250ZW50X3RleHQ6IHVwZGF0ZXMuY29kZSxcbiAgICAgICAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHVwZGF0ZXMuZHRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgZHRzRmlsZUluZGV4ID0gcGFja2FnZUZpbGVzLmZpbmRJbmRleChcbiAgICAgICAgICAoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvaW5kZXguZC50c1wiLFxuICAgICAgICApXG4gICAgICAgIGlmIChkdHNGaWxlSW5kZXggPj0gMCkge1xuICAgICAgICAgIHVwZGF0ZWRGaWxlc1tkdHNGaWxlSW5kZXhdID0ge1xuICAgICAgICAgICAgLi4ucGFja2FnZUZpbGVzW2R0c0ZpbGVJbmRleF0sXG4gICAgICAgICAgICBjb250ZW50X3RleHQ6IHVwZGF0ZXMuZHRzLFxuICAgICAgICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHVwZGF0ZWRGaWxlcy5wdXNoKHtcbiAgICAgICAgICAgIHBhY2thZ2VfZmlsZV9pZDogYHBhY2thZ2VfZmlsZV8ke3RpbWVzdGFtcH1gLFxuICAgICAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgICAgICBmaWxlX3BhdGg6IFwiL2Rpc3QvaW5kZXguZC50c1wiLFxuICAgICAgICAgICAgY29udGVudF90ZXh0OiB1cGRhdGVzLmR0cyxcbiAgICAgICAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHVwZGF0ZXMuY29tcGlsZWRfanMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBqc0ZpbGVJbmRleCA9IHBhY2thZ2VGaWxlcy5maW5kSW5kZXgoXG4gICAgICAgICAgKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmpzXCIsXG4gICAgICAgIClcbiAgICAgICAgaWYgKGpzRmlsZUluZGV4ID49IDApIHtcbiAgICAgICAgICB1cGRhdGVkRmlsZXNbanNGaWxlSW5kZXhdID0ge1xuICAgICAgICAgICAgLi4ucGFja2FnZUZpbGVzW2pzRmlsZUluZGV4XSxcbiAgICAgICAgICAgIGNvbnRlbnRfdGV4dDogdXBkYXRlcy5jb21waWxlZF9qcyxcbiAgICAgICAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1cGRhdGVkRmlsZXMucHVzaCh7XG4gICAgICAgICAgICBwYWNrYWdlX2ZpbGVfaWQ6IGBwYWNrYWdlX2ZpbGVfJHt0aW1lc3RhbXB9YCxcbiAgICAgICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICAgICAgZmlsZV9wYXRoOiBcIi9kaXN0L2luZGV4LmpzXCIsXG4gICAgICAgICAgICBjb250ZW50X3RleHQ6IHVwZGF0ZXMuY29tcGlsZWRfanMsXG4gICAgICAgICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFVwZGF0ZSBjaXJjdWl0IEpTT04gaWYgcHJvdmlkZWRcbiAgICAgIGlmICh1cGRhdGVzLmNpcmN1aXRfanNvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IGNpcmN1aXRGaWxlSW5kZXggPSBwYWNrYWdlRmlsZXMuZmluZEluZGV4KFxuICAgICAgICAgIChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9jaXJjdWl0Lmpzb25cIixcbiAgICAgICAgKVxuICAgICAgICBpZiAoY2lyY3VpdEZpbGVJbmRleCA+PSAwKSB7XG4gICAgICAgICAgdXBkYXRlZEZpbGVzW2NpcmN1aXRGaWxlSW5kZXhdID0ge1xuICAgICAgICAgICAgLi4ucGFja2FnZUZpbGVzW2NpcmN1aXRGaWxlSW5kZXhdLFxuICAgICAgICAgICAgY29udGVudF90ZXh0OiBKU09OLnN0cmluZ2lmeSh1cGRhdGVzLmNpcmN1aXRfanNvbiksXG4gICAgICAgICAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFJldHVybiB1cGRhdGVkIHN0YXRlXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgcGFja2FnZXM6IHVwZGF0ZWRQYWNrYWdlcyxcbiAgICAgICAgcGFja2FnZUZpbGVzOiB1cGRhdGVkRmlsZXMsXG4gICAgICB9XG4gICAgfSlcblxuICAgIC8vIEdldCB0aGUgdXBkYXRlZCBzbmlwcGV0IHRvIHJldHVyblxuICAgIGNvbnN0IHVwZGF0ZWRQYWNrYWdlID0gZ2V0KCkucGFja2FnZXMuZmluZChcbiAgICAgIChwa2cpID0+IHBrZy5wYWNrYWdlX2lkID09PSBzbmlwcGV0SWQsXG4gICAgKVxuICAgIGlmICghdXBkYXRlZFBhY2thZ2UpIHJldHVybiB1bmRlZmluZWRcblxuICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gZ2V0KCkucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAocHIpID0+XG4gICAgICAgIHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gdXBkYXRlZFBhY2thZ2UubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICApXG4gICAgaWYgKCFwYWNrYWdlUmVsZWFzZSkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgY29uc3QgcGFja2FnZUZpbGVzID0gZ2V0KCkucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAgIChmaWxlKSA9PiBmaWxlLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgIClcblxuICAgIGNvbnN0IGNvZGVGaWxlID0gcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHNcIiB8fCBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIixcbiAgICApXG4gICAgY29uc3QgZHRzRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmQudHNcIixcbiAgICApXG4gICAgY29uc3QganNGaWxlID0gcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvaW5kZXguanNcIixcbiAgICApXG4gICAgY29uc3QgY2lyY3VpdEZpbGUgPSBwYWNrYWdlRmlsZXMuZmluZChcbiAgICAgIChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9jaXJjdWl0Lmpzb25cIixcbiAgICApXG5cbiAgICAvLyBSZXR1cm4gaW4gc25pcHBldCBmb3JtYXRcbiAgICByZXR1cm4ge1xuICAgICAgc25pcHBldF9pZDogdXBkYXRlZFBhY2thZ2UucGFja2FnZV9pZCxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogdXBkYXRlZFBhY2thZ2UubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCB8fCBcIlwiLFxuICAgICAgdW5zY29wZWRfbmFtZTogdXBkYXRlZFBhY2thZ2UudW5zY29wZWRfbmFtZSxcbiAgICAgIG5hbWU6IHVwZGF0ZWRQYWNrYWdlLm5hbWUsXG4gICAgICBvd25lcl9uYW1lOiB1cGRhdGVkUGFja2FnZS5vd25lcl9naXRodWJfdXNlcm5hbWUgfHwgXCJcIixcbiAgICAgIGRlc2NyaXB0aW9uOiB1cGRhdGVkUGFja2FnZS5kZXNjcmlwdGlvbiB8fCBcIlwiLFxuICAgICAgc25pcHBldF90eXBlOiB1cGRhdGVkUGFja2FnZS5zbmlwcGV0X3R5cGUgfHwgXCJib2FyZFwiLFxuICAgICAgY29kZTogY29kZUZpbGU/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgZHRzOiBkdHNGaWxlPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgIGNvbXBpbGVkX2pzOiBqc0ZpbGU/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgY3JlYXRlZF9hdDogdXBkYXRlZFBhY2thZ2UuY3JlYXRlZF9hdCxcbiAgICAgIHVwZGF0ZWRfYXQ6IHVwZGF0ZWRQYWNrYWdlLnVwZGF0ZWRfYXQsXG4gICAgICBzdGFyX2NvdW50OiB1cGRhdGVkUGFja2FnZS5zdGFyX2NvdW50IHx8IDAsXG4gICAgICBpc19zdGFycmVkOiBmYWxzZSxcbiAgICAgIHZlcnNpb246IHVwZGF0ZWRQYWNrYWdlLmxhdGVzdF92ZXJzaW9uIHx8IFwiMC4wLjFcIixcbiAgICAgIGNpcmN1aXRfanNvbjogY2lyY3VpdEZpbGVcbiAgICAgICAgPyBKU09OLnBhcnNlKGNpcmN1aXRGaWxlLmNvbnRlbnRfdGV4dCB8fCBcIltdXCIpXG4gICAgICAgIDogW10sXG4gICAgICBpc19wcml2YXRlOiB1cGRhdGVkUGFja2FnZS5pc19wcml2YXRlID8/IGZhbHNlLFxuICAgICAgaXNfcHVibGljOiB1cGRhdGVkUGFja2FnZS5pc19wdWJsaWMgPz8gdHJ1ZSxcbiAgICAgIGlzX3VubGlzdGVkOiB1cGRhdGVkUGFja2FnZS5pc191bmxpc3RlZCA/PyBmYWxzZSxcbiAgICB9XG4gIH0sXG4gIGdldFNuaXBwZXRCeUlkOiAoXG4gICAgc25pcHBldElkOiBzdHJpbmcsXG4gICAgYXV0aD86IHsgZ2l0aHViX3VzZXJuYW1lOiBzdHJpbmcgfSxcbiAgKTogU25pcHBldCB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIC8vIExvb2sgZm9yIHRoZSBwYWNrYWdlIHRoYXQgcmVwcmVzZW50cyB0aGlzIHNuaXBwZXRcbiAgICBjb25zdCBfcGFja2FnZSA9IHN0YXRlLnBhY2thZ2VzLmZpbmQoXG4gICAgICAocGtnKSA9PiBwa2cucGFja2FnZV9pZCA9PT0gc25pcHBldElkICYmIHBrZy5pc19zbmlwcGV0ID09PSB0cnVlLFxuICAgIClcbiAgICBpZiAoIV9wYWNrYWdlKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICAvLyBIYW5kbGUgdmlzaWJpbGl0eSBiYXNlZCBvbiBhdXRoZW50aWNhdGlvblxuICAgIGlmICghYXV0aCkge1xuICAgICAgLy8gVW5hdXRoZW50aWNhdGVkIHVzZXJzIGNhbiBvbmx5IHNlZSBwdWJsaWMgYW5kIG5vbi11bmxpc3RlZCBwYWNrYWdlc1xuICAgICAgaWYgKCFfcGFja2FnZS5pc19wdWJsaWMgfHwgX3BhY2thZ2UuaXNfdW5saXN0ZWQpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBBdXRoZW50aWNhdGVkIHVzZXJzIGNhbiBzZWU6XG4gICAgICAvLyAxLiBQdWJsaWMgYW5kIG5vbi11bmxpc3RlZCBwYWNrYWdlc1xuICAgICAgLy8gMi4gVGhlaXIgb3duIHVubGlzdGVkIHBhY2thZ2VzXG4gICAgICAvLyAzLiBUaGVpciBvd24gcHJpdmF0ZSBwYWNrYWdlc1xuICAgICAgY29uc3QgaXNPd25QYWNrYWdlID1cbiAgICAgICAgX3BhY2thZ2Uub3duZXJfZ2l0aHViX3VzZXJuYW1lID09PSBhdXRoPy5naXRodWJfdXNlcm5hbWVcbiAgICAgIGNvbnN0IGlzUHVibGljQW5kTm90VW5saXN0ZWQgPSBfcGFja2FnZS5pc19wdWJsaWMgJiYgIV9wYWNrYWdlLmlzX3VubGlzdGVkXG4gICAgICBjb25zdCBpc093blVubGlzdGVkID0gX3BhY2thZ2UuaXNfdW5saXN0ZWQgJiYgaXNPd25QYWNrYWdlXG4gICAgICBjb25zdCBpc093blByaXZhdGUgPSBfcGFja2FnZS5pc19wcml2YXRlICYmIGlzT3duUGFja2FnZVxuXG4gICAgICBpZiAoIWlzUHVibGljQW5kTm90VW5saXN0ZWQgJiYgIWlzT3duVW5saXN0ZWQgJiYgIWlzT3duUHJpdmF0ZSkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gR2V0IHRoZSBwYWNrYWdlIHJlbGVhc2VcbiAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IHN0YXRlLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgKHByKSA9PlxuICAgICAgICBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IF9wYWNrYWdlLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgJiZcbiAgICAgICAgcHIuaXNfbGF0ZXN0ID09PSB0cnVlLFxuICAgIClcbiAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICAvLyBHZXQgdGhlIHBhY2thZ2UgZmlsZXNcbiAgICBjb25zdCBwYWNrYWdlRmlsZXMgPSBzdGF0ZS5wYWNrYWdlRmlsZXMuZmlsdGVyKFxuICAgICAgKGZpbGUpID0+IGZpbGUucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgKVxuXG4gICAgLy8gR2V0IHRoZSBjb2RlIGZpbGUgKGluZGV4LnRzIG9yIGluZGV4LnRzeClcbiAgICBjb25zdCBjb2RlRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcImluZGV4LnRzXCIgfHwgZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHN4XCIsXG4gICAgKVxuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGN1cnJlbnQgdXNlciBoYXMgc3RhcnJlZCB0aGlzIHNuaXBwZXRcbiAgICBjb25zdCBpc1N0YXJyZWQgPSBzdGF0ZS5hY2NvdW50UGFja2FnZXMuc29tZShcbiAgICAgIChhcCkgPT4gYXAucGFja2FnZV9pZCA9PT0gc25pcHBldElkICYmIGFwLmlzX3N0YXJyZWQsXG4gICAgKVxuXG4gICAgLy8gTWFwIHRoZSBwYWNrYWdlIGRhdGEgdG8gbWF0Y2ggdGhlIFNuaXBwZXQgc3RydWN0dXJlXG4gICAgcmV0dXJuIHtcbiAgICAgIHNuaXBwZXRfaWQ6IF9wYWNrYWdlLnBhY2thZ2VfaWQsXG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IF9wYWNrYWdlLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgfHwgXCJcIixcbiAgICAgIHVuc2NvcGVkX25hbWU6IF9wYWNrYWdlLnVuc2NvcGVkX25hbWUsXG4gICAgICBuYW1lOiBfcGFja2FnZS5uYW1lLFxuICAgICAgb3duZXJfbmFtZTogX3BhY2thZ2Uub3duZXJfZ2l0aHViX3VzZXJuYW1lIHx8IFwiXCIsXG4gICAgICBkZXNjcmlwdGlvbjogX3BhY2thZ2UuZGVzY3JpcHRpb24gfHwgXCJcIixcbiAgICAgIHNuaXBwZXRfdHlwZTogX3BhY2thZ2Uuc25pcHBldF90eXBlIHx8IFwiYm9hcmRcIixcbiAgICAgIGNvZGU6IGNvZGVGaWxlPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgIGR0czpcbiAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmQudHNcIilcbiAgICAgICAgICA/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgY29tcGlsZWRfanM6XG4gICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5qc1wiKVxuICAgICAgICAgID8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICBjcmVhdGVkX2F0OiBfcGFja2FnZS5jcmVhdGVkX2F0LFxuICAgICAgdXBkYXRlZF9hdDogX3BhY2thZ2UudXBkYXRlZF9hdCxcbiAgICAgIHN0YXJfY291bnQ6IF9wYWNrYWdlLnN0YXJfY291bnQgfHwgMCxcbiAgICAgIGlzX3N0YXJyZWQ6IGlzU3RhcnJlZCxcbiAgICAgIHZlcnNpb246IF9wYWNrYWdlLmxhdGVzdF92ZXJzaW9uIHx8IFwiMC4wLjFcIixcbiAgICAgIGNpcmN1aXRfanNvbjogcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAgIChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9jaXJjdWl0Lmpzb25cIixcbiAgICAgICk/LmNvbnRlbnRfdGV4dFxuICAgICAgICA/IEpTT04ucGFyc2UoXG4gICAgICAgICAgICBwYWNrYWdlRmlsZXMuZmluZCgoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvY2lyY3VpdC5qc29uXCIpXG4gICAgICAgICAgICAgID8uY29udGVudF90ZXh0IHx8IFwiW11cIixcbiAgICAgICAgICApXG4gICAgICAgIDogW10sXG4gICAgICBpc19wcml2YXRlOiBfcGFja2FnZS5pc19wcml2YXRlIHx8IGZhbHNlLFxuICAgICAgaXNfcHVibGljOiBfcGFja2FnZS5pc19wdWJsaWMgfHwgdHJ1ZSxcbiAgICAgIGlzX3VubGlzdGVkOiBfcGFja2FnZS5pc191bmxpc3RlZCB8fCBmYWxzZSxcbiAgICB9XG4gIH0sXG4gIHNlYXJjaFNuaXBwZXRzOiAocXVlcnk6IHN0cmluZyk6IFNuaXBwZXRbXSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIGNvbnN0IGxvd2VyY2FzZVF1ZXJ5ID0gcXVlcnkudG9Mb3dlckNhc2UoKVxuXG4gICAgLy8gR2V0IGFsbCBwYWNrYWdlcyB0aGF0IGFyZSBzbmlwcGV0c1xuICAgIGNvbnN0IHBhY2thZ2VzID0gc3RhdGUucGFja2FnZXMuZmlsdGVyKChwa2cpID0+IHBrZy5pc19zbmlwcGV0ID09PSB0cnVlKVxuXG4gICAgLy8gRmluZCBwYWNrYWdlcyB0aGF0IG1hdGNoIGJ5IG5hbWUgb3IgZGVzY3JpcHRpb25cbiAgICBjb25zdCBtYXRjaGluZ1BhY2thZ2VzQnlNZXRhZGF0YSA9IHBhY2thZ2VzLmZpbHRlcihcbiAgICAgIChwa2cpID0+XG4gICAgICAgIHBrZy5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobG93ZXJjYXNlUXVlcnkpIHx8XG4gICAgICAgIHBrZy5kZXNjcmlwdGlvbj8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhsb3dlcmNhc2VRdWVyeSksXG4gICAgKVxuXG4gICAgLy8gRmluZCBwYWNrYWdlcyB0aGF0IG1hdGNoIGJ5IGNvZGUgY29udGVudCBpbiBhbnkgZmlsZVxuICAgIGNvbnN0IG1hdGNoaW5nRmlsZXNCeUNvbnRlbnQgPSBzdGF0ZS5wYWNrYWdlRmlsZXMuZmlsdGVyKFxuICAgICAgKGZpbGUpID0+XG4gICAgICAgIGZpbGUuY29udGVudF90ZXh0Py50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyY2FzZVF1ZXJ5KSA/PyBmYWxzZSxcbiAgICApXG5cbiAgICAvLyBHZXQgdGhlIHBhY2thZ2VzIGZvciBtYXRjaGluZyBmaWxlc1xuICAgIGNvbnN0IG1hdGNoaW5nUGFja2FnZXNCeUNvbnRlbnQgPSBtYXRjaGluZ0ZpbGVzQnlDb250ZW50XG4gICAgICAubWFwKChmaWxlKSA9PiB7XG4gICAgICAgIC8vIEZpbmQgdGhlIHBhY2thZ2UgcmVsZWFzZSBmb3IgdGhpcyBmaWxlXG4gICAgICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gc3RhdGUucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAgICAgKHByKSA9PiBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IGZpbGUucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICApXG4gICAgICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHJldHVybiBudWxsXG5cbiAgICAgICAgLy8gRmluZCB0aGUgcGFja2FnZSBmb3IgdGhpcyByZWxlYXNlXG4gICAgICAgIHJldHVybiBwYWNrYWdlcy5maW5kKFxuICAgICAgICAgIChwa2cpID0+XG4gICAgICAgICAgICBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICApXG4gICAgICB9KVxuICAgICAgLmZpbHRlcigocGtnKTogcGtnIGlzIE5vbk51bGxhYmxlPHR5cGVvZiBwa2c+ID0+IHBrZyAhPT0gbnVsbClcblxuICAgIC8vIENvbWJpbmUgYm90aCBzZXRzIG9mIG1hdGNoaW5nIHBhY2thZ2VzIGFuZCByZW1vdmUgZHVwbGljYXRlc1xuICAgIGNvbnN0IG1hdGNoaW5nUGFja2FnZXMgPSBbXG4gICAgICAuLi5uZXcgU2V0KFsuLi5tYXRjaGluZ1BhY2thZ2VzQnlNZXRhZGF0YSwgLi4ubWF0Y2hpbmdQYWNrYWdlc0J5Q29udGVudF0pLFxuICAgIF1cblxuICAgIC8vIENvbnZlcnQgbWF0Y2hpbmcgcGFja2FnZXMgdG8gc25pcHBldCBmb3JtYXRcbiAgICByZXR1cm4gbWF0Y2hpbmdQYWNrYWdlc1xuICAgICAgLm1hcCgocGtnKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gc3RhdGUucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAgICAgKHByKSA9PlxuICAgICAgICAgICAgcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCAmJlxuICAgICAgICAgICAgcHIuaXNfbGF0ZXN0ID09PSB0cnVlLFxuICAgICAgICApXG4gICAgICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHJldHVybiBudWxsXG5cbiAgICAgICAgY29uc3QgcGFja2FnZUZpbGVzID0gc3RhdGUucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAgICAgICAoZmlsZSkgPT5cbiAgICAgICAgICAgIGZpbGUucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgIClcblxuICAgICAgICBjb25zdCBjb2RlRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgICAgIChmaWxlKSA9PlxuICAgICAgICAgICAgZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHNcIiB8fCBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIixcbiAgICAgICAgKVxuXG4gICAgICAgIGNvbnN0IGlzU3RhcnJlZCA9IHN0YXRlLmFjY291bnRQYWNrYWdlcy5zb21lKFxuICAgICAgICAgIChhcCkgPT4gYXAucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQgJiYgYXAuaXNfc3RhcnJlZCxcbiAgICAgICAgKVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc25pcHBldF9pZDogcGtnLnBhY2thZ2VfaWQsXG4gICAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCB8fCBcIlwiLFxuICAgICAgICAgIHVuc2NvcGVkX25hbWU6IHBrZy51bnNjb3BlZF9uYW1lLFxuICAgICAgICAgIG5hbWU6IHBrZy5uYW1lLFxuICAgICAgICAgIG93bmVyX25hbWU6IHBrZy5vd25lcl9naXRodWJfdXNlcm5hbWUgfHwgXCJcIixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogcGtnLmRlc2NyaXB0aW9uIHx8IFwiXCIsXG4gICAgICAgICAgc25pcHBldF90eXBlOiBwa2cuc25pcHBldF90eXBlIHx8IFwiYm9hcmRcIixcbiAgICAgICAgICBjb2RlOiBjb2RlRmlsZT8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICAgICAgZHRzOlxuICAgICAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmQudHNcIilcbiAgICAgICAgICAgICAgPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgICAgICBjb21waWxlZF9qczpcbiAgICAgICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5qc1wiKVxuICAgICAgICAgICAgICA/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgICAgIGNyZWF0ZWRfYXQ6IHBrZy5jcmVhdGVkX2F0LFxuICAgICAgICAgIHVwZGF0ZWRfYXQ6IHBrZy51cGRhdGVkX2F0LFxuICAgICAgICAgIHN0YXJfY291bnQ6IHBrZy5zdGFyX2NvdW50IHx8IDAsXG4gICAgICAgICAgaXNfc3RhcnJlZDogaXNTdGFycmVkLFxuICAgICAgICAgIHZlcnNpb246IHBrZy5sYXRlc3RfdmVyc2lvbiB8fCBcIjAuMC4xXCIsXG4gICAgICAgICAgY2lyY3VpdF9qc29uOlxuICAgICAgICAgICAgcGFja2FnZUZpbGVzXG4gICAgICAgICAgICAgIC5maWx0ZXIoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2NpcmN1aXQuanNvblwiKVxuICAgICAgICAgICAgICAuZmxhdE1hcCgoZmlsZSkgPT4gSlNPTi5wYXJzZShmaWxlLmNvbnRlbnRfdGV4dCB8fCBcIltdXCIpKSB8fCBbXSxcbiAgICAgICAgfSBhcyBTbmlwcGV0XG4gICAgICB9KVxuICAgICAgLmZpbHRlcigoc25pcHBldCk6IHNuaXBwZXQgaXMgU25pcHBldCA9PiBzbmlwcGV0ICE9PSBudWxsKVxuICB9LFxuICBkZWxldGVTbmlwcGV0OiAoc25pcHBldElkOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICBsZXQgZGVsZXRlZCA9IGZhbHNlXG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBzdGF0ZS5zbmlwcGV0cy5maW5kSW5kZXgoKHMpID0+IHMuc25pcHBldF9pZCA9PT0gc25pcHBldElkKVxuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBzdGF0ZS5zbmlwcGV0cy5zcGxpY2UoaW5kZXgsIDEpXG4gICAgICAgIGRlbGV0ZWQgPSB0cnVlXG4gICAgICB9XG4gICAgICByZXR1cm4gc3RhdGVcbiAgICB9KVxuICAgIHJldHVybiBkZWxldGVkXG4gIH0sXG4gIGFkZFNlc3Npb246IChzZXNzaW9uOiBPbWl0PFNlc3Npb24sIFwic2Vzc2lvbl9pZFwiPik6IFNlc3Npb24gPT4ge1xuICAgIGNvbnN0IG5ld1Nlc3Npb24gPSB7IHNlc3Npb25faWQ6IGBzZXNzaW9uXyR7RGF0ZS5ub3coKX1gLCAuLi5zZXNzaW9uIH1cbiAgICBzZXQoKHN0YXRlKSA9PiAoe1xuICAgICAgc2Vzc2lvbnM6IFsuLi5zdGF0ZS5zZXNzaW9ucywgbmV3U2Vzc2lvbl0sXG4gICAgfSkpXG4gICAgcmV0dXJuIG5ld1Nlc3Npb25cbiAgfSxcbiAgZ2V0U2Vzc2lvbnM6ICh7XG4gICAgYWNjb3VudF9pZCxcbiAgICBpc19jbGlfc2Vzc2lvbixcbiAgfTogeyBhY2NvdW50X2lkOiBzdHJpbmc7IGlzX2NsaV9zZXNzaW9uPzogYm9vbGVhbiB9KTogU2Vzc2lvbltdID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLnNlc3Npb25zLmZpbHRlcihcbiAgICAgIChzZXNzaW9uKSA9PlxuICAgICAgICBzZXNzaW9uLmFjY291bnRfaWQgPT09IGFjY291bnRfaWQgJiZcbiAgICAgICAgKGlzX2NsaV9zZXNzaW9uID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICBzZXNzaW9uLmlzX2NsaV9zZXNzaW9uID09PSBpc19jbGlfc2Vzc2lvbiksXG4gICAgKVxuICB9LFxuICBjcmVhdGVMb2dpblBhZ2U6ICgpOiBMb2dpblBhZ2UgPT4ge1xuICAgIGNvbnN0IG5ld0xvZ2luUGFnZTogTG9naW5QYWdlID0ge1xuICAgICAgbG9naW5fcGFnZV9pZDogYGxvZ2luX3BhZ2VfJHtEYXRlLm5vdygpfWAsXG4gICAgICBsb2dpbl9wYWdlX2F1dGhfdG9rZW46IGB0b2tlbl8ke0RhdGUubm93KCl9YCxcbiAgICAgIHdhc19sb2dpbl9zdWNjZXNzZnVsOiBmYWxzZSxcbiAgICAgIGhhc19iZWVuX3VzZWRfdG9fY3JlYXRlX3Nlc3Npb246IGZhbHNlLFxuICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgZXhwaXJlc19hdDogbmV3IERhdGUoRGF0ZS5ub3coKSArIDMwICogNjAgKiAxMDAwKS50b0lTT1N0cmluZygpLCAvLyAzMCBtaW51dGVzIGV4cGlyYXRpb25cbiAgICB9XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIGxvZ2luUGFnZXM6IFsuLi5zdGF0ZS5sb2dpblBhZ2VzLCBuZXdMb2dpblBhZ2VdLFxuICAgIH0pKVxuICAgIHJldHVybiBuZXdMb2dpblBhZ2VcbiAgfSxcbiAgZ2V0TG9naW5QYWdlOiAobG9naW5QYWdlSWQ6IHN0cmluZyk6IExvZ2luUGFnZSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5sb2dpblBhZ2VzLmZpbmQoKGxwKSA9PiBscC5sb2dpbl9wYWdlX2lkID09PSBsb2dpblBhZ2VJZClcbiAgfSxcbiAgdXBkYXRlTG9naW5QYWdlOiAobG9naW5QYWdlSWQ6IHN0cmluZywgdXBkYXRlczogUGFydGlhbDxMb2dpblBhZ2U+KTogdm9pZCA9PiB7XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIGxvZ2luUGFnZXM6IHN0YXRlLmxvZ2luUGFnZXMubWFwKChscCkgPT5cbiAgICAgICAgbHAubG9naW5fcGFnZV9pZCA9PT0gbG9naW5QYWdlSWQgPyB7IC4uLmxwLCAuLi51cGRhdGVzIH0gOiBscCxcbiAgICAgICksXG4gICAgfSkpXG4gIH0sXG4gIGdldEFjY291bnQ6IChhY2NvdW50SWQ6IHN0cmluZyk6IEFjY291bnQgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUuYWNjb3VudHMuZmluZCgoYWNjb3VudCkgPT4gYWNjb3VudC5hY2NvdW50X2lkID09PSBhY2NvdW50SWQpXG4gIH0sXG4gIHVwZGF0ZUFjY291bnQ6IChcbiAgICBhY2NvdW50SWQ6IHN0cmluZyxcbiAgICB1cGRhdGVzOiBQYXJ0aWFsPEFjY291bnQ+LFxuICApOiBBY2NvdW50IHwgdW5kZWZpbmVkID0+IHtcbiAgICBsZXQgdXBkYXRlZEFjY291bnQ6IEFjY291bnQgfCB1bmRlZmluZWRcbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBhY2NvdW50SW5kZXggPSBzdGF0ZS5hY2NvdW50cy5maW5kSW5kZXgoXG4gICAgICAgIChhY2NvdW50KSA9PiBhY2NvdW50LmFjY291bnRfaWQgPT09IGFjY291bnRJZCxcbiAgICAgIClcbiAgICAgIGlmIChhY2NvdW50SW5kZXggIT09IC0xKSB7XG4gICAgICAgIHVwZGF0ZWRBY2NvdW50ID0geyAuLi5zdGF0ZS5hY2NvdW50c1thY2NvdW50SW5kZXhdIH1cbiAgICAgICAgaWYgKHVwZGF0ZXMuc2hpcHBpbmdJbmZvKSB7XG4gICAgICAgICAgdXBkYXRlZEFjY291bnQuc2hpcHBpbmdJbmZvID0ge1xuICAgICAgICAgICAgLi4udXBkYXRlZEFjY291bnQuc2hpcHBpbmdJbmZvLFxuICAgICAgICAgICAgLi4udXBkYXRlcy5zaGlwcGluZ0luZm8sXG4gICAgICAgICAgfVxuICAgICAgICAgIGRlbGV0ZSB1cGRhdGVzLnNoaXBwaW5nSW5mb1xuICAgICAgICB9XG4gICAgICAgIHVwZGF0ZWRBY2NvdW50ID0geyAuLi51cGRhdGVkQWNjb3VudCwgLi4udXBkYXRlcyB9XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRBY2NvdW50cyA9IFsuLi5zdGF0ZS5hY2NvdW50c11cbiAgICAgICAgdXBkYXRlZEFjY291bnRzW2FjY291bnRJbmRleF0gPSB1cGRhdGVkQWNjb3VudFxuICAgICAgICByZXR1cm4geyAuLi5zdGF0ZSwgYWNjb3VudHM6IHVwZGF0ZWRBY2NvdW50cyB9XG4gICAgICB9XG4gICAgICByZXR1cm4gc3RhdGVcbiAgICB9KVxuICAgIHJldHVybiB1cGRhdGVkQWNjb3VudFxuICB9LFxuICBjcmVhdGVTZXNzaW9uOiAoc2Vzc2lvbjogT21pdDxTZXNzaW9uLCBcInNlc3Npb25faWRcIj4pOiBTZXNzaW9uID0+IHtcbiAgICBjb25zdCBuZXdTZXNzaW9uID0geyBzZXNzaW9uX2lkOiBgc2Vzc2lvbl8ke0RhdGUubm93KCl9YCwgLi4uc2Vzc2lvbiB9XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIHNlc3Npb25zOiBbLi4uc3RhdGUuc2Vzc2lvbnMsIG5ld1Nlc3Npb25dLFxuICAgIH0pKVxuICAgIHJldHVybiBuZXdTZXNzaW9uXG4gIH0sXG4gIGFkZFN0YXI6IChhY2NvdW50SWQ6IHN0cmluZywgcGFja2FnZUlkOiBzdHJpbmcpOiBBY2NvdW50UGFja2FnZSA9PiB7XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG4gICAgY29uc3QgYWNjb3VudFBhY2thZ2UgPSB7XG4gICAgICBhY2NvdW50X3BhY2thZ2VfaWQ6IGBhcF8ke0RhdGUubm93KCl9YCxcbiAgICAgIGFjY291bnRfaWQ6IGFjY291bnRJZCxcbiAgICAgIHBhY2thZ2VfaWQ6IHBhY2thZ2VJZCxcbiAgICAgIGlzX3N0YXJyZWQ6IHRydWUsXG4gICAgICBjcmVhdGVkX2F0OiBub3csXG4gICAgICB1cGRhdGVkX2F0OiBub3csXG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHRoZSBwYWNrYWdlJ3Mgc3RhciBjb3VudFxuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIC8vIEZpbmQgdGhlIHBhY2thZ2UgYW5kIGluY3JlbWVudCBpdHMgc3RhciBjb3VudFxuICAgICAgY29uc3QgcGFja2FnZUluZGV4ID0gc3RhdGUucGFja2FnZXMuZmluZEluZGV4KFxuICAgICAgICAocGtnKSA9PiBwa2cucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkLFxuICAgICAgKVxuICAgICAgaWYgKHBhY2thZ2VJbmRleCA+PSAwKSB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRQYWNrYWdlcyA9IFsuLi5zdGF0ZS5wYWNrYWdlc11cbiAgICAgICAgdXBkYXRlZFBhY2thZ2VzW3BhY2thZ2VJbmRleF0gPSB7XG4gICAgICAgICAgLi4udXBkYXRlZFBhY2thZ2VzW3BhY2thZ2VJbmRleF0sXG4gICAgICAgICAgc3Rhcl9jb3VudDogKHVwZGF0ZWRQYWNrYWdlc1twYWNrYWdlSW5kZXhdLnN0YXJfY291bnQgfHwgMCkgKyAxLFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwYWNrYWdlczogdXBkYXRlZFBhY2thZ2VzLFxuICAgICAgICAgIGFjY291bnRQYWNrYWdlczogWy4uLnN0YXRlLmFjY291bnRQYWNrYWdlcywgYWNjb3VudFBhY2thZ2VdLFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFjY291bnRQYWNrYWdlczogWy4uLnN0YXRlLmFjY291bnRQYWNrYWdlcywgYWNjb3VudFBhY2thZ2VdLFxuICAgICAgfVxuICAgIH0pXG5cbiAgICByZXR1cm4gYWNjb3VudFBhY2thZ2VcbiAgfSxcbiAgcmVtb3ZlU3RhcjogKGFjY291bnRJZDogc3RyaW5nLCBwYWNrYWdlSWQ6IHN0cmluZyk6IHZvaWQgPT4ge1xuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIC8vIEZpbmQgdGhlIHBhY2thZ2UgYW5kIGRlY3JlbWVudCBpdHMgc3RhciBjb3VudFxuICAgICAgY29uc3QgcGFja2FnZUluZGV4ID0gc3RhdGUucGFja2FnZXMuZmluZEluZGV4KFxuICAgICAgICAocGtnKSA9PiBwa2cucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkLFxuICAgICAgKVxuXG4gICAgICBpZiAocGFja2FnZUluZGV4ID49IDApIHtcbiAgICAgICAgY29uc3QgdXBkYXRlZFBhY2thZ2VzID0gWy4uLnN0YXRlLnBhY2thZ2VzXVxuICAgICAgICB1cGRhdGVkUGFja2FnZXNbcGFja2FnZUluZGV4XSA9IHtcbiAgICAgICAgICAuLi51cGRhdGVkUGFja2FnZXNbcGFja2FnZUluZGV4XSxcbiAgICAgICAgICBzdGFyX2NvdW50OiBNYXRoLm1heChcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAodXBkYXRlZFBhY2thZ2VzW3BhY2thZ2VJbmRleF0uc3Rhcl9jb3VudCB8fCAwKSAtIDEsXG4gICAgICAgICAgKSxcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGFja2FnZXM6IHVwZGF0ZWRQYWNrYWdlcyxcbiAgICAgICAgICBhY2NvdW50UGFja2FnZXM6IHN0YXRlLmFjY291bnRQYWNrYWdlcy5maWx0ZXIoXG4gICAgICAgICAgICAoYXApID0+XG4gICAgICAgICAgICAgICEoYXAuYWNjb3VudF9pZCA9PT0gYWNjb3VudElkICYmIGFwLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VJZCksXG4gICAgICAgICAgKSxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBhY2NvdW50UGFja2FnZXM6IHN0YXRlLmFjY291bnRQYWNrYWdlcy5maWx0ZXIoXG4gICAgICAgICAgKGFwKSA9PiAhKGFwLmFjY291bnRfaWQgPT09IGFjY291bnRJZCAmJiBhcC5wYWNrYWdlX2lkID09PSBwYWNrYWdlSWQpLFxuICAgICAgICApLFxuICAgICAgfVxuICAgIH0pXG4gIH0sXG4gIGhhc1N0YXJyZWQ6IChhY2NvdW50SWQ6IHN0cmluZywgcGFja2FnZUlkOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLmFjY291bnRQYWNrYWdlcy5zb21lKFxuICAgICAgKGFwKSA9PlxuICAgICAgICBhcC5hY2NvdW50X2lkID09PSBhY2NvdW50SWQgJiZcbiAgICAgICAgYXAucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkICYmXG4gICAgICAgIGFwLmlzX3N0YXJyZWQsXG4gICAgKVxuICB9LFxuICBhZGRQYWNrYWdlOiAoXG4gICAgX3BhY2thZ2U6IE9taXQ8ei5pbnB1dDx0eXBlb2YgcGFja2FnZVNjaGVtYT4sIFwicGFja2FnZV9pZFwiPixcbiAgKTogUGFja2FnZSA9PiB7XG4gICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKVxuICAgIGNvbnN0IG5ld1BhY2thZ2UgPSB7XG4gICAgICBwYWNrYWdlX2lkOiBgcGFja2FnZV8ke3RpbWVzdGFtcH1gLFxuICAgICAgLi4uX3BhY2thZ2UsXG4gICAgfVxuICAgIHNldCgoc3RhdGUpID0+ICh7XG4gICAgICBwYWNrYWdlczogWy4uLnN0YXRlLnBhY2thZ2VzLCBuZXdQYWNrYWdlIGFzIFBhY2thZ2VdLFxuICAgIH0pKVxuICAgIHJldHVybiBuZXdQYWNrYWdlIGFzIFBhY2thZ2VcbiAgfSxcbiAgdXBkYXRlUGFja2FnZTogKFxuICAgIHBhY2thZ2VJZDogc3RyaW5nLFxuICAgIHVwZGF0ZXM6IFBhcnRpYWw8UGFja2FnZT4sXG4gICk6IFBhY2thZ2UgfCB1bmRlZmluZWQgPT4ge1xuICAgIGxldCB1cGRhdGVkUGFja2FnZTogUGFja2FnZSB8IHVuZGVmaW5lZFxuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIGNvbnN0IHBhY2thZ2VJbmRleCA9IHN0YXRlLnBhY2thZ2VzLmZpbmRJbmRleChcbiAgICAgICAgKHBrZykgPT4gcGtnLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VJZCxcbiAgICAgIClcbiAgICAgIGlmIChwYWNrYWdlSW5kZXggPT09IC0xKSByZXR1cm4gc3RhdGVcblxuICAgICAgY29uc3QgdXBkYXRlZFBhY2thZ2VzID0gWy4uLnN0YXRlLnBhY2thZ2VzXVxuICAgICAgdXBkYXRlZFBhY2thZ2VzW3BhY2thZ2VJbmRleF0gPSB7XG4gICAgICAgIC4uLnVwZGF0ZWRQYWNrYWdlc1twYWNrYWdlSW5kZXhdLFxuICAgICAgICAuLi51cGRhdGVzLFxuICAgICAgfVxuICAgICAgdXBkYXRlZFBhY2thZ2UgPSB1cGRhdGVkUGFja2FnZXNbcGFja2FnZUluZGV4XVxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHBhY2thZ2VzOiB1cGRhdGVkUGFja2FnZXMgfVxuICAgIH0pXG4gICAgcmV0dXJuIHVwZGF0ZWRQYWNrYWdlXG4gIH0sXG4gIGdldFBhY2thZ2VCeUlkOiAocGFja2FnZUlkOiBzdHJpbmcpOiBQYWNrYWdlIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgY29uc3QgcGtnID0gc3RhdGUucGFja2FnZXMuZmluZCgocGtnKSA9PiBwa2cucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkKVxuICAgIGlmICghcGtnKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnBrZyxcbiAgICB9XG4gIH0sXG4gIGdldFBhY2thZ2VSZWxlYXNlQnlJZDogKFxuICAgIHBhY2thZ2VSZWxlYXNlSWQ6IHN0cmluZyxcbiAgKTogUGFja2FnZVJlbGVhc2UgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAocHIpID0+IHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2VJZCxcbiAgICApXG4gIH0sXG4gIGFkZFBhY2thZ2VSZWxlYXNlOiAoXG4gICAgcGFja2FnZVJlbGVhc2U6IE9taXQ8UGFja2FnZVJlbGVhc2UsIFwicGFja2FnZV9yZWxlYXNlX2lkXCI+LFxuICApOiBQYWNrYWdlUmVsZWFzZSA9PiB7XG4gICAgY29uc3QgbmV3UGFja2FnZVJlbGVhc2UgPSB7XG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IGBwYWNrYWdlX3JlbGVhc2VfJHtEYXRlLm5vdygpfWAsXG4gICAgICAuLi5wYWNrYWdlUmVsZWFzZSxcbiAgICB9XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIHBhY2thZ2VSZWxlYXNlczogWy4uLnN0YXRlLnBhY2thZ2VSZWxlYXNlcywgbmV3UGFja2FnZVJlbGVhc2VdLFxuICAgIH0pKVxuICAgIHJldHVybiBuZXdQYWNrYWdlUmVsZWFzZVxuICB9LFxuICB1cGRhdGVQYWNrYWdlUmVsZWFzZTogKHBhY2thZ2VSZWxlYXNlOiBQYWNrYWdlUmVsZWFzZSk6IHZvaWQgPT4ge1xuICAgIHNldCgoc3RhdGUpID0+ICh7XG4gICAgICBwYWNrYWdlUmVsZWFzZXM6IHN0YXRlLnBhY2thZ2VSZWxlYXNlcy5tYXAoKHByKSA9PlxuICAgICAgICBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZFxuICAgICAgICAgID8gcGFja2FnZVJlbGVhc2VcbiAgICAgICAgICA6IHByLFxuICAgICAgKSxcbiAgICB9KSlcbiAgfSxcbiAgZGVsZXRlUGFja2FnZUZpbGU6IChwYWNrYWdlRmlsZUlkOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICBsZXQgZGVsZXRlZCA9IGZhbHNlXG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBzdGF0ZS5wYWNrYWdlRmlsZXMuZmluZEluZGV4KFxuICAgICAgICAoZmlsZSkgPT4gZmlsZS5wYWNrYWdlX2ZpbGVfaWQgPT09IHBhY2thZ2VGaWxlSWQsXG4gICAgICApXG4gICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgIHN0YXRlLnBhY2thZ2VGaWxlcy5zcGxpY2UoaW5kZXgsIDEpXG4gICAgICAgIGRlbGV0ZWQgPSB0cnVlXG4gICAgICB9XG4gICAgICByZXR1cm4gc3RhdGVcbiAgICB9KVxuICAgIHJldHVybiBkZWxldGVkXG4gIH0sXG4gIGFkZFBhY2thZ2VGaWxlOiAoXG4gICAgcGFja2FnZUZpbGU6IE9taXQ8UGFja2FnZUZpbGUsIFwicGFja2FnZV9maWxlX2lkXCI+LFxuICApOiBQYWNrYWdlRmlsZSA9PiB7XG4gICAgY29uc3QgbmV3UGFja2FnZUZpbGUgPSB7XG4gICAgICBwYWNrYWdlX2ZpbGVfaWQ6IGBwYWNrYWdlX2ZpbGVfJHtEYXRlLm5vdygpfWAsXG4gICAgICAuLi5wYWNrYWdlRmlsZSxcbiAgICB9XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIHBhY2thZ2VGaWxlczogWy4uLnN0YXRlLnBhY2thZ2VGaWxlcywgbmV3UGFja2FnZUZpbGVdLFxuICAgIH0pKVxuICAgIHJldHVybiBuZXdQYWNrYWdlRmlsZVxuICB9LFxuICB1cGRhdGVQYWNrYWdlRmlsZTogKFxuICAgIHBhY2thZ2VGaWxlSWQ6IHN0cmluZyxcbiAgICB1cGRhdGVzOiBQYXJ0aWFsPE9taXQ8UGFja2FnZUZpbGUsIFwicGFja2FnZV9maWxlX2lkXCI+PixcbiAgKTogUGFja2FnZUZpbGUgPT4ge1xuICAgIHNldCgoc3RhdGUpID0+ICh7XG4gICAgICBwYWNrYWdlRmlsZXM6IHN0YXRlLnBhY2thZ2VGaWxlcy5tYXAoKGZpbGUpID0+XG4gICAgICAgIGZpbGUucGFja2FnZV9maWxlX2lkID09PSBwYWNrYWdlRmlsZUlkID8geyAuLi5maWxlLCAuLi51cGRhdGVzIH0gOiBmaWxlLFxuICAgICAgKSxcbiAgICB9KSlcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLnBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKGZpbGUpID0+IGZpbGUucGFja2FnZV9maWxlX2lkID09PSBwYWNrYWdlRmlsZUlkLFxuICAgICkhXG4gIH0sXG4gIGdldFN0YXJDb3VudDogKHBhY2thZ2VJZDogc3RyaW5nKTogbnVtYmVyID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLmFjY291bnRQYWNrYWdlcy5maWx0ZXIoXG4gICAgICAoYXApID0+IGFwLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VJZCAmJiBhcC5pc19zdGFycmVkLFxuICAgICkubGVuZ3RoXG4gIH0sXG4gIGdldFBhY2thZ2VGaWxlc0J5UmVsZWFzZUlkOiAocGFja2FnZVJlbGVhc2VJZDogc3RyaW5nKTogUGFja2FnZUZpbGVbXSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5wYWNrYWdlRmlsZXMuZmlsdGVyKFxuICAgICAgKHBmKSA9PiBwZi5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlSWQsXG4gICAgKVxuICB9LFxufSkpXG4iLCAiaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgY29uc3QgZXJyb3JTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIGVycm9yX2NvZGU6IHouc3RyaW5nKCksXG4gICAgbWVzc2FnZTogei5zdHJpbmcoKSxcbiAgfSlcbiAgLnBhc3N0aHJvdWdoKClcblxuZXhwb3J0IGNvbnN0IGVycm9yUmVzcG9uc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGVycm9yOiBlcnJvclNjaGVtYSxcbn0pXG5cbmV4cG9ydCBjb25zdCBzbmlwcGV0U2NoZW1hID0gei5vYmplY3Qoe1xuICBzbmlwcGV0X2lkOiB6LnN0cmluZygpLFxuICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCksXG4gIG5hbWU6IHouc3RyaW5nKCksXG4gIHVuc2NvcGVkX25hbWU6IHouc3RyaW5nKCksXG4gIG93bmVyX25hbWU6IHouc3RyaW5nKCksXG4gIGlzX3N0YXJyZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBjb2RlOiB6LnN0cmluZygpLFxuICBkdHM6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgY29tcGlsZWRfanM6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5udWxsYWJsZSgpLFxuICBjaXJjdWl0X2pzb246IHouYXJyYXkoei5yZWNvcmQoei5hbnkoKSkpLm9wdGlvbmFsKCkubnVsbGFibGUoKSxcbiAgbWFudWFsX2VkaXRzX2pzb25fY29udGVudDogei5zdHJpbmcoKS5vcHRpb25hbCgpLm51bGxhYmxlKCksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCksXG4gIHVwZGF0ZWRfYXQ6IHouc3RyaW5nKCksXG4gIHNuaXBwZXRfdHlwZTogei5lbnVtKFtcImJvYXJkXCIsIFwicGFja2FnZVwiLCBcIm1vZGVsXCIsIFwiZm9vdHByaW50XCJdKSxcbiAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgdmVyc2lvbjogei5zdHJpbmcoKS5kZWZhdWx0KFwiMC4wLjFcIiksXG4gIHN0YXJfY291bnQ6IHoubnVtYmVyKCkuZGVmYXVsdCgwKSxcbiAgaXNfcHJpdmF0ZTogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX3B1YmxpYzogei5ib29sZWFuKCkuZGVmYXVsdCh0cnVlKSxcbiAgaXNfdW5saXN0ZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxufSlcbmV4cG9ydCB0eXBlIFNuaXBwZXQgPSB6LmluZmVyPHR5cGVvZiBzbmlwcGV0U2NoZW1hPlxuXG5leHBvcnQgY29uc3Qgc2Vzc2lvblNjaGVtYSA9IHoub2JqZWN0KHtcbiAgc2Vzc2lvbl9pZDogei5zdHJpbmcoKSxcbiAgYWNjb3VudF9pZDogei5zdHJpbmcoKSxcbiAgZXhwaXJlc19hdDogei5zdHJpbmcoKSxcbiAgaXNfY2xpX3Nlc3Npb246IHouYm9vbGVhbigpLFxufSlcbmV4cG9ydCB0eXBlIFNlc3Npb24gPSB6LmluZmVyPHR5cGVvZiBzZXNzaW9uU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgbG9naW5QYWdlU2NoZW1hID0gei5vYmplY3Qoe1xuICBsb2dpbl9wYWdlX2lkOiB6LnN0cmluZygpLFxuICBsb2dpbl9wYWdlX2F1dGhfdG9rZW46IHouc3RyaW5nKCksXG4gIHdhc19sb2dpbl9zdWNjZXNzZnVsOiB6LmJvb2xlYW4oKSxcbiAgaGFzX2JlZW5fdXNlZF90b19jcmVhdGVfc2Vzc2lvbjogei5ib29sZWFuKCksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCksXG4gIGV4cGlyZXNfYXQ6IHouc3RyaW5nKCksXG59KVxuZXhwb3J0IHR5cGUgTG9naW5QYWdlID0gei5pbmZlcjx0eXBlb2YgbG9naW5QYWdlU2NoZW1hPlxuXG5leHBvcnQgY29uc3Qgc2hpcHBpbmdJbmZvU2NoZW1hID0gei5vYmplY3Qoe1xuICBmaXJzdE5hbWU6IHouc3RyaW5nKCksXG4gIGxhc3ROYW1lOiB6LnN0cmluZygpLFxuICBjb21wYW55TmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBhZGRyZXNzOiB6LnN0cmluZygpLFxuICBhcGFydG1lbnQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgY2l0eTogei5zdHJpbmcoKSxcbiAgc3RhdGU6IHouc3RyaW5nKCksXG4gIHppcENvZGU6IHouc3RyaW5nKCksXG4gIGNvdW50cnk6IHouc3RyaW5nKCksXG4gIHBob25lOiB6LnN0cmluZygpLFxufSlcblxuZXhwb3J0IGNvbnN0IGFjY291bnRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGFjY291bnRfaWQ6IHouc3RyaW5nKCksXG4gIGdpdGh1Yl91c2VybmFtZTogei5zdHJpbmcoKSxcbiAgc2hpcHBpbmdJbmZvOiBzaGlwcGluZ0luZm9TY2hlbWEub3B0aW9uYWwoKSxcbn0pXG5leHBvcnQgdHlwZSBBY2NvdW50ID0gei5pbmZlcjx0eXBlb2YgYWNjb3VudFNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IG9yZGVyU2NoZW1hID0gei5vYmplY3Qoe1xuICBvcmRlcl9pZDogei5zdHJpbmcoKSxcbiAgYWNjb3VudF9pZDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBpc19ydW5uaW5nOiB6LmJvb2xlYW4oKSxcbiAgaXNfc3RhcnRlZDogei5ib29sZWFuKCksXG4gIGlzX2ZpbmlzaGVkOiB6LmJvb2xlYW4oKSxcbiAgZXJyb3I6IGVycm9yU2NoZW1hLm51bGxhYmxlKCksXG4gIGhhc19lcnJvcjogei5ib29sZWFuKCksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCksXG4gIHN0YXJ0ZWRfYXQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgY29tcGxldGVkX2F0OiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGNpcmN1aXRfanNvbjogei5hbnkoKSxcbn0pXG5leHBvcnQgdHlwZSBPcmRlciA9IHouaW5mZXI8dHlwZW9mIG9yZGVyU2NoZW1hPlxuXG5leHBvcnQgY29uc3Qgb3JkZXJGaWxlU2NoZW1hID0gei5vYmplY3Qoe1xuICBvcmRlcl9maWxlX2lkOiB6LnN0cmluZygpLFxuICBvcmRlcl9pZDogei5zdHJpbmcoKSxcbiAgaXNfZ2VyYmVyc196aXA6IHouYm9vbGVhbigpLFxuICBjb250ZW50X3R5cGU6IHouc3RyaW5nKCksXG4gIGZvcl9wcm92aWRlcjogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICB1cGxvYWRlZF9hdDogei5zdHJpbmcoKSxcbiAgY29udGVudF90ZXh0OiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGNvbnRlbnRfYnl0ZXM6IHouaW5zdGFuY2VvZihVaW50OEFycmF5KS5udWxsYWJsZSgpLFxufSlcbmV4cG9ydCB0eXBlIE9yZGVyRmlsZSA9IHouaW5mZXI8dHlwZW9mIG9yZGVyRmlsZVNjaGVtYT5cblxuY29uc3Qgc2hpcHBpbmdPcHRpb25TY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGNhcnJpZXI6IHouc3RyaW5nKCksXG4gIHNlcnZpY2U6IHouc3RyaW5nKCksXG4gIGNvc3Q6IHoubnVtYmVyKCksXG59KVxuZXhwb3J0IHR5cGUgU2hpcHBpbmdPcHRpb24gPSB6LmluZmVyPHR5cGVvZiBzaGlwcGluZ09wdGlvblNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IHF1b3RlZENvbXBvbmVudFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgbWFudWZhY3R1cmVyX3BhcnRfbnVtYmVyOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIHN1cHBsaWVyX3BhcnRfbnVtYmVyOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIHF1YW50aXR5OiB6Lm51bWJlcigpLmRlZmF1bHQoMCksXG4gIHVuaXRfcHJpY2U6IHoubnVtYmVyKCkuZGVmYXVsdCgwKSxcbiAgdG90YWxfcHJpY2U6IHoubnVtYmVyKCkuZGVmYXVsdCgwKSxcbiAgYXZhaWxhYmxlOiB6LmJvb2xlYW4oKS5kZWZhdWx0KHRydWUpLFxufSlcbmV4cG9ydCB0eXBlIFF1b3RlZENvbXBvbmVudCA9IHouaW5mZXI8dHlwZW9mIHF1b3RlZENvbXBvbmVudFNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IG9yZGVyUXVvdGVTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIG9yZGVyX3F1b3RlX2lkOiB6LnN0cmluZygpLFxuICBhY2NvdW50X2lkOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIHBhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBpc19jb21wbGV0ZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19wcm9jZXNzaW5nOiB6LmJvb2xlYW4oKS5kZWZhdWx0KHRydWUpLFxuICB2ZW5kb3JfbmFtZTogei5zdHJpbmcoKSxcbiAgZXJyb3I6IGVycm9yU2NoZW1hLm51bGxhYmxlKCksXG4gIGhhc19lcnJvcjogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCksXG4gIHVwZGF0ZWRfYXQ6IHouc3RyaW5nKCksXG4gIGNvbXBsZXRlZF9hdDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBxdW90ZWRfY29tcG9uZW50czogei5hcnJheShxdW90ZWRDb21wb25lbnRTY2hlbWEpLm51bGxhYmxlKCksXG4gIGJhcmVfcGNiX2Nvc3Q6IHoubnVtYmVyKCkuZGVmYXVsdCgwKSxcbiAgc2hpcHBpbmdfb3B0aW9uczogei5hcnJheShzaGlwcGluZ09wdGlvblNjaGVtYSksXG4gIHRvdGFsX2Nvc3Q6IHoubnVtYmVyKCkuZGVmYXVsdCgwKSxcbn0pXG5leHBvcnQgdHlwZSBPcmRlclF1b3RlID0gei5pbmZlcjx0eXBlb2Ygb3JkZXJRdW90ZVNjaGVtYT5cblxuLy8gVE9ETzogUmVtb3ZlIHRoaXMgc2NoZW1hIGFmdGVyIG1pZ3JhdGlvbiB0byBhY2NvdW50UGFja2FnZXMgaXMgY29tcGxldGVcbmV4cG9ydCBjb25zdCBhY2NvdW50U25pcHBldFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgYWNjb3VudF9pZDogei5zdHJpbmcoKSxcbiAgc25pcHBldF9pZDogei5zdHJpbmcoKSxcbiAgaGFzX3N0YXJyZWQ6IHouYm9vbGVhbigpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLFxuICB1cGRhdGVkX2F0OiB6LnN0cmluZygpLFxufSlcbmV4cG9ydCB0eXBlIEFjY291bnRTbmlwcGV0ID0gei5pbmZlcjx0eXBlb2YgYWNjb3VudFNuaXBwZXRTY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBhY2NvdW50UGFja2FnZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgYWNjb3VudF9wYWNrYWdlX2lkOiB6LnN0cmluZygpLFxuICBhY2NvdW50X2lkOiB6LnN0cmluZygpLFxuICBwYWNrYWdlX2lkOiB6LnN0cmluZygpLFxuICBpc19zdGFycmVkOiB6LmJvb2xlYW4oKSxcbiAgY3JlYXRlZF9hdDogei5zdHJpbmcoKSxcbiAgdXBkYXRlZF9hdDogei5zdHJpbmcoKSxcbn0pXG5leHBvcnQgdHlwZSBBY2NvdW50UGFja2FnZSA9IHouaW5mZXI8dHlwZW9mIGFjY291bnRQYWNrYWdlU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgcGFja2FnZVJlbGVhc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHBhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKSxcbiAgcGFja2FnZV9pZDogei5zdHJpbmcoKSxcbiAgdmVyc2lvbjogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBpc19sb2NrZWQ6IHouYm9vbGVhbigpLFxuICBpc19sYXRlc3Q6IHouYm9vbGVhbigpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCksXG4gIGNvbW1pdF9zaGE6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICBsaWNlbnNlOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbn0pXG5leHBvcnQgdHlwZSBQYWNrYWdlUmVsZWFzZSA9IHouaW5mZXI8dHlwZW9mIHBhY2thZ2VSZWxlYXNlU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgcGFja2FnZUZpbGVTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHBhY2thZ2VfZmlsZV9pZDogei5zdHJpbmcoKSxcbiAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLFxuICBmaWxlX3BhdGg6IHouc3RyaW5nKCksXG4gIGNvbnRlbnRfdGV4dDogei5zdHJpbmcoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKSxcbiAgY29udGVudF9taW1ldHlwZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGlzX3JlbGVhc2VfdGFyYmFsbDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgbnBtX3BhY2tfb3V0cHV0OiB6LmFueSgpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbn0pXG5leHBvcnQgdHlwZSBQYWNrYWdlRmlsZSA9IHouaW5mZXI8dHlwZW9mIHBhY2thZ2VGaWxlU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgcGFja2FnZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgcGFja2FnZV9pZDogei5zdHJpbmcoKSxcbiAgY3JlYXRvcl9hY2NvdW50X2lkOiB6LnN0cmluZygpLFxuICBvd25lcl9vcmdfaWQ6IHouc3RyaW5nKCksXG4gIG93bmVyX2dpdGh1Yl91c2VybmFtZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBuYW1lOiB6LnN0cmluZygpLFxuICB1bnNjb3BlZF9uYW1lOiB6LnN0cmluZygpLFxuICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCksXG4gIHVwZGF0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKSxcbiAgaXNfc25pcHBldDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX2JvYXJkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfcGFja2FnZTogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX21vZGVsOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfZm9vdHByaW50OiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfcHJpdmF0ZTogei5ib29sZWFuKCkubnVsbGFibGUoKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfcHVibGljOiB6LmJvb2xlYW4oKS5udWxsYWJsZSgpLmRlZmF1bHQodHJ1ZSksXG4gIGlzX3VubGlzdGVkOiB6LmJvb2xlYW4oKS5udWxsYWJsZSgpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19zb3VyY2VfZnJvbV9naXRodWI6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBzbmlwcGV0X3R5cGU6IHouZW51bShbXCJib2FyZFwiLCBcInBhY2thZ2VcIiwgXCJtb2RlbFwiLCBcImZvb3RwcmludFwiXSkub3B0aW9uYWwoKSxcbiAgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBsYXRlc3RfdmVyc2lvbjogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBsaWNlbnNlOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIHdlYnNpdGU6IHouc3RyaW5nKCkubnVsbGFibGUoKS5kZWZhdWx0KG51bGwpLFxuICBzdGFyX2NvdW50OiB6Lm51bWJlcigpLmRlZmF1bHQoMCksXG4gIGFpX2Rlc2NyaXB0aW9uOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGxhdGVzdF9saWNlbnNlOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgYWlfdXNhZ2VfaW5zdHJ1Y3Rpb25zOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG59KVxuZXhwb3J0IHR5cGUgUGFja2FnZSA9IHouaW5mZXI8dHlwZW9mIHBhY2thZ2VTY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBqbGNwY2JPcmRlclN0YXRlU2NoZW1hID0gei5vYmplY3Qoe1xuICBqbGNwY2Jfb3JkZXJfc3RhdGVfaWQ6IHouc3RyaW5nKCksXG4gIG9yZGVyX2lkOiB6LnN0cmluZygpLFxuICBhcmVfZ2VyYmVyc191cGxvYWRlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX2dlcmJlcl9hbmFseXplZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGFyZV9pbml0aWFsX2Nvc3RzX2NhbGN1bGF0ZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19wY2JfYWRkZWRfdG9fY2FydDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX2JvbV91cGxvYWRlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX3BucF91cGxvYWRlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX2JvbV9wbnBfYW5hbHl6ZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19ib21fcGFyc2luZ19jb21wbGV0ZTogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGFyZV9jb21wb25lbnRzX2F2YWlsYWJsZTogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX3BhdGNoX21hcF9nZW5lcmF0ZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19qc29uX21lcmdlX2ZpbGVfY3JlYXRlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX2RmbV9yZXN1bHRfZ2VuZXJhdGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgYXJlX2ZpbGVzX2Rvd25sb2FkZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBhcmVfcHJvZHVjdF9jYXRlZ29yaWVzX2ZldGNoZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBhcmVfZmluYWxfY29zdHNfY2FsY3VsYXRlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX2pzb25fbWVyZ2VfZmlsZV91cGRhdGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfYWRkZWRfdG9fY2FydDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIHVwbG9hZGVkX2dlcmJlcl9tZXRhZGF0YTogei5hbnkoKS5udWxsYWJsZSgpLmRlZmF1bHQobnVsbCksXG4gIGdlcmJlcl9hbmFseXNpczogei5hbnkoKS5udWxsYWJsZSgpLmRlZmF1bHQobnVsbCksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCksXG4gIGFyZV9nZXJiZXJzX2dlbmVyYXRlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGN1cnJlbnRfc3RlcDogei5zdHJpbmcoKS5udWxsYWJsZSgpLmRlZmF1bHQobnVsbCksXG59KVxuZXhwb3J0IHR5cGUgSmxjcGNiT3JkZXJTdGF0ZSA9IHouaW5mZXI8dHlwZW9mIGpsY3BjYk9yZGVyU3RhdGVTY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBqbGNwY2JPcmRlclN0ZXBSdW5TY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGpsY3BjYl9vcmRlcl9zdGVwX3J1bl9pZDogei5zdHJpbmcoKSxcbiAgaXNfcnVubmluZzogei5ib29sZWFuKCkubnVsbGFibGUoKS5kZWZhdWx0KG51bGwpLFxuICBzdGVwX2Z1bmN0aW9uX25hbWU6IHouc3RyaW5nKCkubnVsbGFibGUoKS5kZWZhdWx0KG51bGwpLFxuICBqbGNwY2Jfb3JkZXJfc3RhdGVfaWQ6IHouc3RyaW5nKCkubnVsbGFibGUoKS5kZWZhdWx0KG51bGwpLFxuICBlcnJvcl9tZXNzYWdlOiB6LnN0cmluZygpLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbiAgY3JlYXRlZF9hdDogei5zdHJpbmcoKSxcbn0pXG5leHBvcnQgdHlwZSBKbGNwY2JPcmRlclN0ZXBSdW4gPSB6LmluZmVyPHR5cGVvZiBqbGNwY2JPcmRlclN0ZXBSdW5TY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBkYXRhYmFzZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgaWRDb3VudGVyOiB6Lm51bWJlcigpLmRlZmF1bHQoMCksXG4gIHNuaXBwZXRzOiB6LmFycmF5KHNuaXBwZXRTY2hlbWEpLmRlZmF1bHQoW10pLFxuICBwYWNrYWdlUmVsZWFzZXM6IHouYXJyYXkocGFja2FnZVJlbGVhc2VTY2hlbWEpLmRlZmF1bHQoW10pLFxuICBwYWNrYWdlRmlsZXM6IHouYXJyYXkocGFja2FnZUZpbGVTY2hlbWEpLmRlZmF1bHQoW10pLFxuICBzZXNzaW9uczogei5hcnJheShzZXNzaW9uU2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgbG9naW5QYWdlczogei5hcnJheShsb2dpblBhZ2VTY2hlbWEpLmRlZmF1bHQoW10pLFxuICBhY2NvdW50czogei5hcnJheShhY2NvdW50U2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgcGFja2FnZXM6IHouYXJyYXkocGFja2FnZVNjaGVtYSkuZGVmYXVsdChbXSksXG4gIG9yZGVyczogei5hcnJheShvcmRlclNjaGVtYSkuZGVmYXVsdChbXSksXG4gIG9yZGVyRmlsZXM6IHouYXJyYXkob3JkZXJGaWxlU2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgYWNjb3VudFNuaXBwZXRzOiB6LmFycmF5KGFjY291bnRTbmlwcGV0U2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgYWNjb3VudFBhY2thZ2VzOiB6LmFycmF5KGFjY291bnRQYWNrYWdlU2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgamxjcGNiT3JkZXJTdGF0ZTogei5hcnJheShqbGNwY2JPcmRlclN0YXRlU2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgamxjcGNiT3JkZXJTdGVwUnVuczogei5hcnJheShqbGNwY2JPcmRlclN0ZXBSdW5TY2hlbWEpLmRlZmF1bHQoW10pLFxuICBvcmRlclF1b3Rlczogei5hcnJheShvcmRlclF1b3RlU2NoZW1hKS5kZWZhdWx0KFtdKSxcbn0pXG5leHBvcnQgdHlwZSBEYXRhYmFzZVNjaGVtYSA9IHouaW5mZXI8dHlwZW9mIGRhdGFiYXNlU2NoZW1hPlxuIiwgImltcG9ydCBmcyBmcm9tIFwiZnNcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuaW1wb3J0IGF4aW9zIGZyb20gXCJyZWRheGlvc1wiXG5pbXBvcnQgdHlwZSB7IERiQ2xpZW50IH0gZnJvbSBcIi4vZGItY2xpZW50XCJcbmltcG9ydCB0eXBlIHsgUGFja2FnZSwgUGFja2FnZUZpbGUsIFBhY2thZ2VSZWxlYXNlIH0gZnJvbSBcIi4vc2NoZW1hXCJcblxuY29uc3QgZXh0cmFjdFRzY2lEZXBlbmRlbmNpZXMgPSAoXG4gIGNvZGU6IHN0cmluZyxcbik6IEFycmF5PHsgb3duZXI6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0+ID0+IHtcbiAgY29uc3QgcmVnZXggPSAvQHRzY2lcXC8oW14uXSspXFwuKFteXCInXFxzXSspL2dcbiAgY29uc3QgbWF0Y2hlcyA9IEFycmF5LmZyb20oY29kZS5tYXRjaEFsbChyZWdleCkpXG4gIHJldHVybiBtYXRjaGVzLm1hcCgobWF0Y2gpID0+ICh7XG4gICAgb3duZXI6IG1hdGNoWzFdLFxuICAgIG5hbWU6IG1hdGNoWzJdLFxuICB9KSlcbn1cblxuY29uc3QgcmVnaXN0cnlBcGkgPSBheGlvcy5jcmVhdGUoe1xuICBiYXNlVVJMOiBcImh0dHBzOi8vcmVnaXN0cnktYXBpLnRzY2lyY3VpdC5jb21cIixcbiAgaGVhZGVyczoge1xuICAgIEFjY2VwdDogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gIH0sXG59KVxuXG5jb25zdCBmZXRjaFBhY2thZ2VGcm9tUmVnaXN0cnkgPSBhc3luYyAob3duZXI6IHN0cmluZywgbmFtZTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGZ1bGxOYW1lID0gYCR7b3duZXJ9LyR7bmFtZX1gXG4gIGNvbnNvbGUubG9nKGBGZXRjaGluZyBwYWNrYWdlICR7ZnVsbE5hbWV9Li4uYClcblxuICBsZXQgcGFja2FnZURhdGFcbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlZ2lzdHJ5QXBpLnBvc3QoXCIvcGFja2FnZXMvZ2V0XCIsIHtcbiAgICAgIG5hbWU6IGZ1bGxOYW1lLFxuICAgIH0pXG4gICAgcGFja2FnZURhdGEgPSByZXNwb25zZS5kYXRhXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggcGFja2FnZSBkYXRhIGZvciAke2Z1bGxOYW1lfTpgLCBlKVxuICAgIHRocm93IGVcbiAgfVxuXG4gIGxldCByZWxlYXNlRGF0YVxuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcmVnaXN0cnlBcGkucG9zdChcIi9wYWNrYWdlX3JlbGVhc2VzL2dldFwiLCB7XG4gICAgICBwYWNrYWdlX2lkOiBwYWNrYWdlRGF0YS5wYWNrYWdlLnBhY2thZ2VfaWQsXG4gICAgICBpc19sYXRlc3Q6IHRydWUsXG4gICAgfSlcbiAgICByZWxlYXNlRGF0YSA9IHJlc3BvbnNlLmRhdGFcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBmZXRjaCByZWxlYXNlIGRhdGEgZm9yICR7ZnVsbE5hbWV9OmAsIGUpXG4gICAgdGhyb3cgZVxuICB9XG5cbiAgbGV0IGZpbGVzRGF0YVxuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcmVnaXN0cnlBcGkucG9zdChcIi9wYWNrYWdlX2ZpbGVzL2xpc3RcIiwge1xuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiByZWxlYXNlRGF0YS5wYWNrYWdlX3JlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgIH0pXG4gICAgZmlsZXNEYXRhID0gcmVzcG9uc2UuZGF0YVxuXG4gICAgLy8gRmV0Y2ggY29udGVudF90ZXh0IGZvciBlYWNoIGZpbGUgaW5kaXZpZHVhbGx5XG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzRGF0YS5wYWNrYWdlX2ZpbGVzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBmaWxlUmVzcG9uc2UgPSBhd2FpdCByZWdpc3RyeUFwaS5wb3N0KFwiL3BhY2thZ2VfZmlsZXMvZ2V0XCIsIHtcbiAgICAgICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHJlbGVhc2VEYXRhLnBhY2thZ2VfcmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgICAgZmlsZV9wYXRoOiBmaWxlLmZpbGVfcGF0aCxcbiAgICAgICAgfSlcbiAgICAgICAgZmlsZS5jb250ZW50X3RleHQgPSBmaWxlUmVzcG9uc2UuZGF0YS5wYWNrYWdlX2ZpbGUuY29udGVudF90ZXh0XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgYEZhaWxlZCB0byBmZXRjaCBjb250ZW50IGZvciBmaWxlICR7ZmlsZS5maWxlX3BhdGh9IGluIHBhY2thZ2UgJHtmdWxsTmFtZX06YCxcbiAgICAgICAgICBlLFxuICAgICAgICApXG4gICAgICAgIHRocm93IGVcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggZmlsZXMgZGF0YSBmb3IgJHtmdWxsTmFtZX06YCwgZSlcbiAgICB0aHJvdyBlXG4gIH1cblxuICByZXR1cm4ge1xuICAgIHBhY2thZ2U6IHBhY2thZ2VEYXRhLnBhY2thZ2UgYXMgUGFja2FnZSxcbiAgICByZWxlYXNlOiByZWxlYXNlRGF0YS5wYWNrYWdlX3JlbGVhc2UgYXMgUGFja2FnZVJlbGVhc2UsXG4gICAgZmlsZXM6IGZpbGVzRGF0YS5wYWNrYWdlX2ZpbGVzIGFzIFBhY2thZ2VGaWxlW10sXG4gIH1cbn1cblxuY29uc3QgbG9hZFBhY2thZ2VXaXRoRGVwZW5kZW5jaWVzID0gYXN5bmMgKFxuICBkYjogRGJDbGllbnQsXG4gIG93bmVyOiBzdHJpbmcsXG4gIG5hbWU6IHN0cmluZyxcbiAgbG9hZGVkUGFja2FnZXMgPSBuZXcgU2V0PHN0cmluZz4oKSxcbikgPT4ge1xuICBjb25zdCBwYWNrYWdlS2V5ID0gYCR7b3duZXJ9LyR7bmFtZX1gXG4gIGlmIChsb2FkZWRQYWNrYWdlcy5oYXMocGFja2FnZUtleSkpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgbGV0IHJlc3VsdFxuICB0cnkge1xuICAgIHJlc3VsdCA9IGF3YWl0IGZldGNoUGFja2FnZUZyb21SZWdpc3RyeShvd25lciwgbmFtZSlcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoYFx1MjcxNyBGYWlsZWQgdG8gbG9hZCAke3BhY2thZ2VLZXl9YClcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGNvbnN0IHsgcGFja2FnZTogcGtnLCByZWxlYXNlLCBmaWxlcyB9ID0gcmVzdWx0XG5cbiAgLy8gQ2hlY2sgaWYgcGFja2FnZSBhbHJlYWR5IGV4aXN0c1xuICBpZiAoZGIuZ2V0UGFja2FnZUJ5SWQocGtnLnBhY2thZ2VfaWQpKSB7XG4gICAgY29uc29sZS5sb2coYFx1MjcxMyBQYWNrYWdlICR7cGFja2FnZUtleX0gYWxyZWFkeSBleGlzdHNgKVxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICAvLyBBZGQgcGFja2FnZSwgcmVsZWFzZSwgYW5kIGZpbGVzIHRvIGRiXG4gIGRiLmFkZFBhY2thZ2Uoe1xuICAgIC4uLnBrZyxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgdXBkYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQ6IHJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICB9KVxuXG4gIGRiLmFkZFBhY2thZ2VSZWxlYXNlKHtcbiAgICAuLi5yZWxlYXNlLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgfSlcblxuICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICBkYi5hZGRQYWNrYWdlRmlsZSh7XG4gICAgICAuLi5maWxlLFxuICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIH0pXG4gIH1cblxuICBsb2FkZWRQYWNrYWdlcy5hZGQocGFja2FnZUtleSlcbiAgY29uc29sZS5sb2coYFx1MjcxMyBMb2FkZWQgJHtwYWNrYWdlS2V5fWApXG5cbiAgLy8gTG9hZCBkZXBlbmRlbmNpZXNcbiAgY29uc3QgbWFpbkZpbGUgPSBmaWxlcy5maW5kKFxuICAgIChmKSA9PiBmLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIiB8fCBmLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c1wiLFxuICApXG4gIGlmICghbWFpbkZpbGU/LmNvbnRlbnRfdGV4dCkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBjb25zdCBkZXBlbmRlbmNpZXMgPSBleHRyYWN0VHNjaURlcGVuZGVuY2llcyhtYWluRmlsZS5jb250ZW50X3RleHQpXG4gIGxldCBhbGxEZXBzTG9hZGVkID0gdHJ1ZVxuXG4gIGZvciAoY29uc3QgZGVwIG9mIGRlcGVuZGVuY2llcykge1xuICAgIGNvbnN0IGRlcExvYWRlZCA9IGF3YWl0IGxvYWRQYWNrYWdlV2l0aERlcGVuZGVuY2llcyhcbiAgICAgIGRiLFxuICAgICAgZGVwLm93bmVyLFxuICAgICAgZGVwLm5hbWUsXG4gICAgICBsb2FkZWRQYWNrYWdlcyxcbiAgICApXG4gICAgaWYgKCFkZXBMb2FkZWQpIHtcbiAgICAgIGFsbERlcHNMb2FkZWQgPSBmYWxzZVxuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgXHUyNkEwXHVGRTBGIEZhaWxlZCB0byBsb2FkIGRlcGVuZGVuY3kgJHtkZXAub3duZXJ9LyR7ZGVwLm5hbWV9IGZvciAke3BhY2thZ2VLZXl9YCxcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWxsRGVwc0xvYWRlZFxufVxuXG5leHBvcnQgY29uc3QgbG9hZEF1dG9sb2FkUGFja2FnZXMgPSBhc3luYyAoZGI6IERiQ2xpZW50KSA9PiB7XG4gIGNvbnN0IGF1dG9sb2FkUGF0aCA9IHBhdGguam9pbihcbiAgICBwYXRoLmRpcm5hbWUoX19kaXJuYW1lKSxcbiAgICBcImRiXCIsXG4gICAgXCJhdXRvbG9hZC1wYWNrYWdlcy5qc29uXCIsXG4gIClcbiAgaWYgKCFmcy5leGlzdHNTeW5jKGF1dG9sb2FkUGF0aCkpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiTm8gYXV0b2xvYWQtcGFja2FnZXMuanNvbiBmb3VuZFwiKVxuICAgIHJldHVyblxuICB9XG5cbiAgY29uc3QgYXV0b2xvYWRDb250ZW50ID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMoYXV0b2xvYWRQYXRoLCBcInV0ZjhcIikpXG4gIGNvbnN0IGxvYWRlZFBhY2thZ2VzID0gbmV3IFNldDxzdHJpbmc+KClcbiAgbGV0IHN1Y2Nlc3NDb3VudCA9IDBcbiAgbGV0IGZhaWx1cmVDb3VudCA9IDBcblxuICBmb3IgKGNvbnN0IHBhY2thZ2VSZWYgb2YgYXV0b2xvYWRDb250ZW50LnBhY2thZ2VzKSB7XG4gICAgY29uc3Qgc3VjY2VzcyA9IGF3YWl0IGxvYWRQYWNrYWdlV2l0aERlcGVuZGVuY2llcyhcbiAgICAgIGRiLFxuICAgICAgcGFja2FnZVJlZi5vd25lcixcbiAgICAgIHBhY2thZ2VSZWYubmFtZSxcbiAgICAgIGxvYWRlZFBhY2thZ2VzLFxuICAgIClcbiAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgc3VjY2Vzc0NvdW50KytcbiAgICB9IGVsc2Uge1xuICAgICAgZmFpbHVyZUNvdW50KytcbiAgICB9XG4gIH1cblxuICBjb25zb2xlLmxvZyhgXFxuUGFja2FnZSBsb2FkaW5nIGNvbXBsZXRlOmApXG4gIGNvbnNvbGUubG9nKGBcdTI3MTMgU3VjY2Vzc2Z1bGx5IGxvYWRlZDogJHtzdWNjZXNzQ291bnR9IHBhY2thZ2VzYClcbiAgaWYgKGZhaWx1cmVDb3VudCA+IDApIHtcbiAgICBjb25zb2xlLmxvZyhgXHUyNzE3IEZhaWxlZCB0byBsb2FkOiAke2ZhaWx1cmVDb3VudH0gcGFja2FnZXNgKVxuICB9XG59XG4iLCAiaW1wb3J0IHsgRGJDbGllbnQgfSBmcm9tIFwiLi9kYi1jbGllbnRcIlxuaW1wb3J0IHsgbG9hZEF1dG9sb2FkUGFja2FnZXMgfSBmcm9tIFwiLi9hdXRvbG9hZC1kZXYtcGFja2FnZXNcIlxuXG5leHBvcnQgY29uc3Qgc2VlZCA9IChkYjogRGJDbGllbnQpID0+IHtcbiAgY29uc3QgeyBhY2NvdW50X2lkIH0gPSBkYi5hZGRBY2NvdW50KHtcbiAgICBhY2NvdW50X2lkOiBcImFjY291bnQtMTIzNFwiLFxuICAgIGdpdGh1Yl91c2VybmFtZTogXCJ0ZXN0dXNlclwiLFxuICAgIHNoaXBwaW5nSW5mbzoge1xuICAgICAgZmlyc3ROYW1lOiBcIlRlc3RcIixcbiAgICAgIGxhc3ROYW1lOiBcIlVzZXJcIixcbiAgICAgIGNvbXBhbnlOYW1lOiBcIlRlc3QgQ29tcGFueVwiLFxuICAgICAgYWRkcmVzczogXCIxMjMgVGVzdCBTdFwiLFxuICAgICAgYXBhcnRtZW50OiBcIkFwdCA0QlwiLFxuICAgICAgY2l0eTogXCJUZXN0dmlsbGVcIixcbiAgICAgIHN0YXRlOiBcIk5ZXCIsXG4gICAgICB6aXBDb2RlOiBcIjEwMDAxXCIsXG4gICAgICBjb3VudHJ5OiBcIlVuaXRlZCBTdGF0ZXMgb2YgQW1lcmljYVwiLFxuICAgICAgcGhvbmU6IFwiNTU1LTEyMy00NTY3XCIsXG4gICAgfSxcbiAgfSlcbiAgZGIuYWRkQWNjb3VudCh7XG4gICAgZ2l0aHViX3VzZXJuYW1lOiBcInNldmVpYmFyXCIsXG4gIH0pXG5cbiAgaWYgKHByb2Nlc3MuZW52LkFVVE9MT0FEX1BBQ0tBR0VTID09PSBcInRydWVcIikge1xuICAgIGxvYWRBdXRvbG9hZFBhY2thZ2VzKGRiKVxuICB9XG5cbiAgZGIuYWRkU25pcHBldCh7XG4gICAgbmFtZTogXCJ0ZXN0dXNlci9teS10ZXN0LWJvYXJkXCIsXG4gICAgdW5zY29wZWRfbmFtZTogXCJteS10ZXN0LWJvYXJkXCIsXG4gICAgb3duZXJfbmFtZTogXCJ0ZXN0dXNlclwiLFxuICAgIGNvZGU6IGBcbmltcG9ydCB7IEE1NTVUaW1lciB9IGZyb20gXCJAdHNjaS9zZXZlaWJhci5hNTU1dGltZXJcIlxuXG5leHBvcnQgZGVmYXVsdCAoKSA9PiAoXG4gIDxib2FyZCB3aWR0aD1cIjEwbW1cIiBoZWlnaHQ9XCIxMG1tXCI+XG4gICAgPEE1NTVUaW1lciBuYW1lPVwiVTFcIiAvPlxuICA8L2JvYXJkPlxuKWAudHJpbSgpLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB1cGRhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgc25pcHBldF90eXBlOiBcImJvYXJkXCIsXG4gICAgZGVzY3JpcHRpb246IFwiQSBzaW1wbGUgYm9hcmQgd2l0aCBhbiBBNTU1IFRpbWVyIGNvbXBvbmVudFwiLFxuICAgIGNpcmN1aXRfanNvbjogW1xuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzBcIixcbiAgICAgICAgbmFtZTogXCJwaW4xXCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDEsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjFcIiwgXCIxXCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8xXCIsXG4gICAgICAgIG5hbWU6IFwicGluMlwiLFxuICAgICAgICBwaW5fbnVtYmVyOiAyLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW4yXCIsIFwiMlwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMlwiLFxuICAgICAgICBuYW1lOiBcInBpbjNcIixcbiAgICAgICAgcGluX251bWJlcjogMyxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluM1wiLCBcIjNcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzNcIixcbiAgICAgICAgbmFtZTogXCJwaW40XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDQsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjRcIiwgXCI0XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF80XCIsXG4gICAgICAgIG5hbWU6IFwicGluNVwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA1LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW41XCIsIFwiNVwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNVwiLFxuICAgICAgICBuYW1lOiBcInBpbjZcIixcbiAgICAgICAgcGluX251bWJlcjogNixcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluNlwiLCBcIjZcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzZcIixcbiAgICAgICAgbmFtZTogXCJwaW43XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDcsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjdcIiwgXCI3XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF83XCIsXG4gICAgICAgIG5hbWU6IFwicGluOFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA4LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW44XCIsIFwiOFwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX2NvbXBvbmVudFwiLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgICBmdHlwZTogXCJzaW1wbGVfY2hpcFwiLFxuICAgICAgICBuYW1lOiBcIlUxXCIsXG4gICAgICAgIHN1cHBsaWVyX3BhcnRfbnVtYmVyczoge30sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19jb21wb25lbnRcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICB9LFxuICAgICAgICByb3RhdGlvbjogMCxcbiAgICAgICAgc2l6ZToge1xuICAgICAgICAgIHdpZHRoOiAxLjEsXG4gICAgICAgICAgaGVpZ2h0OiAxLFxuICAgICAgICB9LFxuICAgICAgICBwaW5fc3BhY2luZzogMC4yLFxuICAgICAgICBwb3J0X2xhYmVsczoge30sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzBcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogLTAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAwLjMwMDAwMDAwMDAwMDAwMDA0LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8wXCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwibGVmdFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcImxlZnRcIixcbiAgICAgICAgcGluX251bWJlcjogMSxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzFcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogLTAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAwLjEwMDAwMDAwMDAwMDAwMDAzLFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8xXCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwibGVmdFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcImxlZnRcIixcbiAgICAgICAgcGluX251bWJlcjogMixcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzJcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogLTAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAtMC4wOTk5OTk5OTk5OTk5OTk5OCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMlwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcImxlZnRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJsZWZ0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDMsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiAyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF8zXCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IC0wLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogLTAuMzAwMDAwMDAwMDAwMDAwMDQsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzNcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJsZWZ0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwibGVmdFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA0LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogMyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfNFwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogLTAuMzAwMDAwMDAwMDAwMDAwMDQsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzRcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJyaWdodFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcInJpZ2h0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDUsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiA0LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF81XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAtMC4xMDAwMDAwMDAwMDAwMDAwMyxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNVwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcInJpZ2h0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwicmlnaHRcIixcbiAgICAgICAgcGluX251bWJlcjogNixcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDUsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzZcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IDAuMDk5OTk5OTk5OTk5OTk5OTgsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzZcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJyaWdodFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcInJpZ2h0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDcsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiA2LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF83XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAwLjMwMDAwMDAwMDAwMDAwMDA0LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF83XCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwicmlnaHRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJyaWdodFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA4LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogNyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX2NvbXBvbmVudFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHdpZHRoOiA4LjgyLFxuICAgICAgICBoZWlnaHQ6IDguODIsXG4gICAgICAgIGxheWVyOiBcInRvcFwiLFxuICAgICAgICByb3RhdGlvbjogMCxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX2JvYXJkXCIsXG4gICAgICAgIHBjYl9ib2FyZF9pZDogXCJwY2JfYm9hcmRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHRoaWNrbmVzczogMS40LFxuICAgICAgICBudW1fbGF5ZXJzOiA0LFxuICAgICAgICB3aWR0aDogMTAsXG4gICAgICAgIGhlaWdodDogMTAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzBcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMFwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiMVwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IDMuODEsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV8xXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzFcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjJcIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAxLjI3LFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfMlwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8yXCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCIzXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogLTEuMjcsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV8zXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzNcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjRcIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAtMy44MSxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzRcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNFwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiNVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogLTMuODEsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV81XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzVcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjZcIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IC0xLjI3LFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfNlwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF82XCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI3XCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAxLjI3LFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfN1wiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF83XCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI4XCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAzLjgxLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3NpbGtzY3JlZW5fcGF0aFwiLFxuICAgICAgICBwY2Jfc2lsa3NjcmVlbl9wYXRoX2lkOiBcInBjYl9zaWxrc2NyZWVuX3BhdGhfMFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcjogXCJ0b3BcIixcbiAgICAgICAgcm91dGU6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMy4wMSxcbiAgICAgICAgICAgIHk6IC00LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTMuMDEsXG4gICAgICAgICAgICB5OiA0LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTEuMDAzMzMzMzMzMzMzMzMzMixcbiAgICAgICAgICAgIHk6IDQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMC45MjY5NTkxMzA5NTI5OTA5LFxuICAgICAgICAgICAgeTogNC4yMjYwNDA5NTYxOTM2OTMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMC43MDk0NjM4MDM3OTA1MDI2LFxuICAgICAgICAgICAgeTogMy45MDA1MzYxOTYyMDk0OTc4LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTAuMzgzOTU5MDQzODA2MzA2NyxcbiAgICAgICAgICAgIHk6IDMuNjgzMDQwODY5MDQ3MDA5NixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDYuMTQzNjQ0Nzc1NzIyNTU2ZS0xNyxcbiAgICAgICAgICAgIHk6IDMuNjA2NjY2NjY2NjY2NjY3NCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDAuMzgzOTU5MDQzODA2MzA2NzQsXG4gICAgICAgICAgICB5OiAzLjY4MzA0MDg2OTA0NzAwOTYsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAwLjcwOTQ2MzgwMzc5MDUwMjcsXG4gICAgICAgICAgICB5OiAzLjkwMDUzNjE5NjIwOTQ5NzgsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAwLjkyNjk1OTEzMDk1Mjk5MDksXG4gICAgICAgICAgICB5OiA0LjIyNjA0MDk1NjE5MzY5MyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDEuMDAzMzMzMzMzMzMzMzMzMixcbiAgICAgICAgICAgIHk6IDQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAzLjAxLFxuICAgICAgICAgICAgeTogNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDMuMDEsXG4gICAgICAgICAgICB5OiAtNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0zLjAxLFxuICAgICAgICAgICAgeTogLTQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgc3Ryb2tlX3dpZHRoOiAwLjEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzBcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAzLjgxLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzFcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAxLjI3LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8xXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzJcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAtMS4yNyxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMlwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8zXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogLTMuODEsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzNcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogLTMuODEsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzRcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNVwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogLTEuMjcsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzVcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNlwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogMS4yNyxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNlwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF83XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAzLjgxLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF83XCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcImNhZF9jb21wb25lbnRcIixcbiAgICAgICAgY2FkX2NvbXBvbmVudF9pZDogXCJjYWRfY29tcG9uZW50XzBcIixcbiAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgejogMC43LFxuICAgICAgICB9LFxuICAgICAgICByb3RhdGlvbjoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgICB6OiAwLFxuICAgICAgICB9LFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgICBmb290cHJpbnRlcl9zdHJpbmc6IFwiZGlwOFwiLFxuICAgICAgfSxcbiAgICBdLFxuICB9KVxuXG4gIC8vIERlZmluZSB0aGUgQHRzY2kvc2V2ZWliYXIuYTU1NXRpbWVyIHBhY2thZ2VcbiAgZGIuYWRkU25pcHBldCh7XG4gICAgbmFtZTogXCJzZXZlaWJhci9hNTU1dGltZXJcIixcbiAgICB1bnNjb3BlZF9uYW1lOiBcImE1NTV0aW1lclwiLFxuICAgIG93bmVyX25hbWU6IFwic2V2ZWliYXJcIixcbiAgICBjb2RlOiBgXG5leHBvcnQgY29uc3QgQTU1NVRpbWVyID0gKHsgbmFtZSB9OiB7IG5hbWU6IHN0cmluZyB9KSA9PiAoXG4gIDxjaGlwIG5hbWU9e25hbWV9IGZvb3RwcmludD1cImRpcDhcIiAvPlxuKVxuYC50cmltKCksXG4gICAgZHRzOiBgXG5kZWNsYXJlIG1vZHVsZSBcIkB0c2NpL3NldmVpYmFyLmE1NTV0aW1lclwiIHtcbiAgZXhwb3J0IGNvbnN0IEE1NTVUaW1lcjogKHsgbmFtZSB9OiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICB9KSA9PiBhbnk7XG59XG5gLnRyaW0oKSxcbiAgICBjb21waWxlZF9qczogYFxuXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLkE1NTVUaW1lciA9IHZvaWQgMDtcbmNvbnN0IEE1NTVUaW1lciA9ICh7XG4gIG5hbWVcbn0pID0+IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiY2hpcFwiLCB7XG4gIG5hbWU6IG5hbWUsXG4gIGZvb3RwcmludDogXCJkaXA4XCJcbn0pO1xuZXhwb3J0cy5BNTU1VGltZXIgPSBBNTU1VGltZXI7XG4gICAgYC50cmltKCksXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBzbmlwcGV0X3R5cGU6IFwicGFja2FnZVwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkEgc2ltcGxlIHBhY2thZ2Ugd2l0aCBhbiBBNTU1IFRpbWVyIGNvbXBvbmVudFwiLFxuICAgIGNpcmN1aXRfanNvbjogW1xuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzBcIixcbiAgICAgICAgbmFtZTogXCJwaW4xXCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDEsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjFcIiwgXCIxXCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8xXCIsXG4gICAgICAgIG5hbWU6IFwicGluMlwiLFxuICAgICAgICBwaW5fbnVtYmVyOiAyLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW4yXCIsIFwiMlwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMlwiLFxuICAgICAgICBuYW1lOiBcInBpbjNcIixcbiAgICAgICAgcGluX251bWJlcjogMyxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluM1wiLCBcIjNcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzNcIixcbiAgICAgICAgbmFtZTogXCJwaW40XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDQsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjRcIiwgXCI0XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF80XCIsXG4gICAgICAgIG5hbWU6IFwicGluNVwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA1LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW41XCIsIFwiNVwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNVwiLFxuICAgICAgICBuYW1lOiBcInBpbjZcIixcbiAgICAgICAgcGluX251bWJlcjogNixcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluNlwiLCBcIjZcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzZcIixcbiAgICAgICAgbmFtZTogXCJwaW43XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDcsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjdcIiwgXCI3XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF83XCIsXG4gICAgICAgIG5hbWU6IFwicGluOFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA4LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW44XCIsIFwiOFwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX2NvbXBvbmVudFwiLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgICBmdHlwZTogXCJzaW1wbGVfY2hpcFwiLFxuICAgICAgICBuYW1lOiBcIlUxXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19jb21wb25lbnRcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICB9LFxuICAgICAgICByb3RhdGlvbjogMCxcbiAgICAgICAgc2l6ZToge1xuICAgICAgICAgIHdpZHRoOiAxLjEsXG4gICAgICAgICAgaGVpZ2h0OiAxLFxuICAgICAgICB9LFxuICAgICAgICBwaW5fc3BhY2luZzogMC4yLFxuICAgICAgICBwb3J0X2xhYmVsczoge30sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzBcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogLTAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAwLjMwMDAwMDAwMDAwMDAwMDA0LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8wXCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwibGVmdFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcImxlZnRcIixcbiAgICAgICAgcGluX251bWJlcjogMSxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzFcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogLTAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAwLjEwMDAwMDAwMDAwMDAwMDAzLFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8xXCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwibGVmdFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcImxlZnRcIixcbiAgICAgICAgcGluX251bWJlcjogMixcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzJcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogLTAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAtMC4wOTk5OTk5OTk5OTk5OTk5OCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMlwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcImxlZnRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJsZWZ0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDMsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiAyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF8zXCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IC0wLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogLTAuMzAwMDAwMDAwMDAwMDAwMDQsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzNcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJsZWZ0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwibGVmdFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA0LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogMyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfNFwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogLTAuMzAwMDAwMDAwMDAwMDAwMDQsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzRcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJyaWdodFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcInJpZ2h0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDUsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiA0LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF81XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAtMC4xMDAwMDAwMDAwMDAwMDAwMyxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNVwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcInJpZ2h0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwicmlnaHRcIixcbiAgICAgICAgcGluX251bWJlcjogNixcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDUsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzZcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IDAuMDk5OTk5OTk5OTk5OTk5OTgsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzZcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJyaWdodFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcInJpZ2h0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDcsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiA2LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF83XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAwLjMwMDAwMDAwMDAwMDAwMDA0LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF83XCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwicmlnaHRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJyaWdodFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA4LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogNyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX2NvbXBvbmVudFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHdpZHRoOiA4LjgyLFxuICAgICAgICBoZWlnaHQ6IDguODIsXG4gICAgICAgIGxheWVyOiBcInRvcFwiLFxuICAgICAgICByb3RhdGlvbjogMCxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX2JvYXJkXCIsXG4gICAgICAgIHBjYl9ib2FyZF9pZDogXCJwY2JfYm9hcmRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHRoaWNrbmVzczogMS40LFxuICAgICAgICBudW1fbGF5ZXJzOiA0LFxuICAgICAgICB3aWR0aDogNTAsXG4gICAgICAgIGhlaWdodDogNTAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzBcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMFwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiMVwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IDMuODEsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV8xXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzFcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjJcIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAxLjI3LFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfMlwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8yXCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCIzXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogLTEuMjcsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV8zXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzNcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjRcIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAtMy44MSxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzRcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNFwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiNVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogLTMuODEsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV81XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzVcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjZcIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IC0xLjI3LFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfNlwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF82XCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI3XCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAxLjI3LFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfN1wiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF83XCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI4XCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAzLjgxLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3NpbGtzY3JlZW5fcGF0aFwiLFxuICAgICAgICBwY2Jfc2lsa3NjcmVlbl9wYXRoX2lkOiBcInBjYl9zaWxrc2NyZWVuX3BhdGhfMFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcjogXCJ0b3BcIixcbiAgICAgICAgcm91dGU6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMy4wMSxcbiAgICAgICAgICAgIHk6IC00LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTMuMDEsXG4gICAgICAgICAgICB5OiA0LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTEuMDAzMzMzMzMzMzMzMzMzMixcbiAgICAgICAgICAgIHk6IDQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMC45MjY5NTkxMzA5NTI5OTA5LFxuICAgICAgICAgICAgeTogNC4yMjYwNDA5NTYxOTM2OTMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMC43MDk0NjM4MDM3OTA1MDI2LFxuICAgICAgICAgICAgeTogMy45MDA1MzYxOTYyMDk0OTc4LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTAuMzgzOTU5MDQzODA2MzA2NyxcbiAgICAgICAgICAgIHk6IDMuNjgzMDQwODY5MDQ3MDA5NixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDYuMTQzNjQ0Nzc1NzIyNTU2ZS0xNyxcbiAgICAgICAgICAgIHk6IDMuNjA2NjY2NjY2NjY2NjY3NCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDAuMzgzOTU5MDQzODA2MzA2NzQsXG4gICAgICAgICAgICB5OiAzLjY4MzA0MDg2OTA0NzAwOTYsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAwLjcwOTQ2MzgwMzc5MDUwMjcsXG4gICAgICAgICAgICB5OiAzLjkwMDUzNjE5NjIwOTQ5NzgsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAwLjkyNjk1OTEzMDk1Mjk5MDksXG4gICAgICAgICAgICB5OiA0LjIyNjA0MDk1NjE5MzY5MyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDEuMDAzMzMzMzMzMzMzMzMzMixcbiAgICAgICAgICAgIHk6IDQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAzLjAxLFxuICAgICAgICAgICAgeTogNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDMuMDEsXG4gICAgICAgICAgICB5OiAtNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0zLjAxLFxuICAgICAgICAgICAgeTogLTQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgc3Ryb2tlX3dpZHRoOiAwLjEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzBcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAzLjgxLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzFcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAxLjI3LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8xXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzJcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAtMS4yNyxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMlwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8zXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogLTMuODEsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzNcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogLTMuODEsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzRcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNVwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogLTEuMjcsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzVcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNlwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogMS4yNyxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNlwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF83XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAzLjgxLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF83XCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcImNhZF9jb21wb25lbnRcIixcbiAgICAgICAgY2FkX2NvbXBvbmVudF9pZDogXCJjYWRfY29tcG9uZW50XzBcIixcbiAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgejogMC43LFxuICAgICAgICB9LFxuICAgICAgICByb3RhdGlvbjoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgICB6OiAwLFxuICAgICAgICB9LFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgICBmb290cHJpbnRlcl9zdHJpbmc6IFwiZGlwOFwiLFxuICAgICAgfSxcbiAgICBdLFxuICB9KVxuXG4gIC8vIEFkZCBhIHNuaXBwZXQgdGhhdCBvdXRwdXRzIGEgc3F1YXJlIHdhdmVmb3JtIHVzaW5nIHRoZSBhNTU1dGltZXJcblxuICBkYi5hZGRTbmlwcGV0KHtcbiAgICBuYW1lOiBcInRlc3R1c2VyL2E1NTV0aW1lci1zcXVhcmUtd2F2ZVwiLFxuICAgIHVuc2NvcGVkX25hbWU6IFwiYTU1NXRpbWVyLXNxdWFyZS13YXZlXCIsXG4gICAgb3duZXJfbmFtZTogXCJ0ZXN0dXNlclwiLFxuICAgIGNvZGU6IGBcbmltcG9ydCB7IEE1NTVUaW1lciB9IGZyb20gXCJAdHNjaS9zZXZlaWJhci5hNTU1dGltZXJcIlxuXG5leHBvcnQgY29uc3QgU3F1YXJlV2F2ZU1vZHVsZSA9ICgpID0+IChcbiAgPEE1NTVUaW1lciBuYW1lPVwiVTFcIiAvPlxuKVxuYC50cmltKCksXG4gICAgZHRzOiAnZXhwb3J0IGRlY2xhcmUgY29uc3QgU3F1YXJlV2F2ZU1vZHVsZTogKCkgPT4gaW1wb3J0KFwicmVhY3QvanN4LXJ1bnRpbWVcIikuSlNYLkVsZW1lbnQ7XFxuJyxcbiAgICBjb21waWxlZF9qczpcbiAgICAgICdcInVzZSBzdHJpY3RcIjtcXG5cXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcXG4gIHZhbHVlOiB0cnVlXFxufSk7XFxuZXhwb3J0cy5TcXVhcmVXYXZlTW9kdWxlID0gdm9pZCAwO1xcbnZhciBfc2V2ZWliYXIgPSByZXF1aXJlKFwiQHRzY2kvc2V2ZWliYXIuYTU1NXRpbWVyXCIpO1xcbmNvbnN0IFNxdWFyZVdhdmVNb2R1bGUgPSAoKSA9PiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfc2V2ZWliYXIuQTU1NVRpbWVyLCB7XFxuICBuYW1lOiBcIlUxXCJcXG59KTtcXG5leHBvcnRzLlNxdWFyZVdhdmVNb2R1bGUgPSBTcXVhcmVXYXZlTW9kdWxlOycsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBzbmlwcGV0X3R5cGU6IFwicGFja2FnZVwiLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJBIHNpbXBsZSBwYWNrYWdlIHRoYXQgb3V0cHV0cyBhIHNxdWFyZSB3YXZlZm9ybSB1c2luZyB0aGUgYTU1NXRpbWVyXCIsXG4gICAgY2lyY3VpdF9qc29uOiBbXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMFwiLFxuICAgICAgICBuYW1lOiBcInBpbjFcIixcbiAgICAgICAgcGluX251bWJlcjogMSxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluMVwiLCBcIjFcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzFcIixcbiAgICAgICAgbmFtZTogXCJwaW4yXCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjJcIiwgXCIyXCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8yXCIsXG4gICAgICAgIG5hbWU6IFwicGluM1wiLFxuICAgICAgICBwaW5fbnVtYmVyOiAzLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW4zXCIsIFwiM1wiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfM1wiLFxuICAgICAgICBuYW1lOiBcInBpbjRcIixcbiAgICAgICAgcGluX251bWJlcjogNCxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluNFwiLCBcIjRcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzRcIixcbiAgICAgICAgbmFtZTogXCJwaW41XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDUsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjVcIiwgXCI1XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF81XCIsXG4gICAgICAgIG5hbWU6IFwicGluNlwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA2LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW42XCIsIFwiNlwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNlwiLFxuICAgICAgICBuYW1lOiBcInBpbjdcIixcbiAgICAgICAgcGluX251bWJlcjogNyxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluN1wiLCBcIjdcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzdcIixcbiAgICAgICAgbmFtZTogXCJwaW44XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDgsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjhcIiwgXCI4XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfY29tcG9uZW50XCIsXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGZ0eXBlOiBcInNpbXBsZV9jaGlwXCIsXG4gICAgICAgIG5hbWU6IFwiVTFcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX2NvbXBvbmVudFwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHJvdGF0aW9uOiAwLFxuICAgICAgICBzaXplOiB7XG4gICAgICAgICAgd2lkdGg6IDEuMSxcbiAgICAgICAgICBoZWlnaHQ6IDEsXG4gICAgICAgIH0sXG4gICAgICAgIHBpbl9zcGFjaW5nOiAwLjIsXG4gICAgICAgIHBvcnRfbGFiZWxzOiB7fSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfMFwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAtMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IDAuMzAwMDAwMDAwMDAwMDAwMDQsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzBcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJsZWZ0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwibGVmdFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiAxLFxuICAgICAgICB0cnVlX2Njd19pbmRleDogMCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfMVwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAtMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IDAuMTAwMDAwMDAwMDAwMDAwMDMsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzFcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJsZWZ0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwibGVmdFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiAyLFxuICAgICAgICB0cnVlX2Njd19pbmRleDogMSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfMlwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAtMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IC0wLjA5OTk5OTk5OTk5OTk5OTk4LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8yXCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwibGVmdFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcImxlZnRcIixcbiAgICAgICAgcGluX251bWJlcjogMyxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzNcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogLTAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAtMC4zMDAwMDAwMDAwMDAwMDAwNCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfM1wiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcImxlZnRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJsZWZ0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDQsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiAzLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF80XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAtMC4zMDAwMDAwMDAwMDAwMDAwNCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNFwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcInJpZ2h0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwicmlnaHRcIixcbiAgICAgICAgcGluX251bWJlcjogNSxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDQsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzVcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IC0wLjEwMDAwMDAwMDAwMDAwMDAzLFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF81XCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwicmlnaHRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJyaWdodFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA2LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogNSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfNlwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogMC4wOTk5OTk5OTk5OTk5OTk5OCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNlwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcInJpZ2h0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwicmlnaHRcIixcbiAgICAgICAgcGluX251bWJlcjogNyxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDYsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzdcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IDAuMzAwMDAwMDAwMDAwMDAwMDQsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzdcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJyaWdodFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcInJpZ2h0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDgsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiA3LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfY29tcG9uZW50XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgfSxcbiAgICAgICAgd2lkdGg6IDguODIsXG4gICAgICAgIGhlaWdodDogOC44MixcbiAgICAgICAgbGF5ZXI6IFwidG9wXCIsXG4gICAgICAgIHJvdGF0aW9uOiAwLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfYm9hcmRcIixcbiAgICAgICAgcGNiX2JvYXJkX2lkOiBcInBjYl9ib2FyZF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgfSxcbiAgICAgICAgdGhpY2tuZXNzOiAxLjQsXG4gICAgICAgIG51bV9sYXllcnM6IDQsXG4gICAgICAgIHdpZHRoOiA1MCxcbiAgICAgICAgaGVpZ2h0OiA1MCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfMFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8wXCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCIxXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogMy44MSxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzFcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMVwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiMlwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IDEuMjcsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV8yXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzJcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjNcIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAtMS4yNyxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzNcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfM1wiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiNFwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IC0zLjgxLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfNFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF80XCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI1XCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAtMy44MSxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzVcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNVwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiNlwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogLTEuMjcsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV82XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzZcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjdcIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IDEuMjcsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV83XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzdcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjhcIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IDMuODEsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2Jfc2lsa3NjcmVlbl9wYXRoXCIsXG4gICAgICAgIHBjYl9zaWxrc2NyZWVuX3BhdGhfaWQ6IFwicGNiX3NpbGtzY3JlZW5fcGF0aF8wXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyOiBcInRvcFwiLFxuICAgICAgICByb3V0ZTogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0zLjAxLFxuICAgICAgICAgICAgeTogLTQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMy4wMSxcbiAgICAgICAgICAgIHk6IDQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMS4wMDMzMzMzMzMzMzMzMzMyLFxuICAgICAgICAgICAgeTogNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0wLjkyNjk1OTEzMDk1Mjk5MDksXG4gICAgICAgICAgICB5OiA0LjIyNjA0MDk1NjE5MzY5MyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0wLjcwOTQ2MzgwMzc5MDUwMjYsXG4gICAgICAgICAgICB5OiAzLjkwMDUzNjE5NjIwOTQ5NzgsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMC4zODM5NTkwNDM4MDYzMDY3LFxuICAgICAgICAgICAgeTogMy42ODMwNDA4NjkwNDcwMDk2LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogNi4xNDM2NDQ3NzU3MjI1NTZlLTE3LFxuICAgICAgICAgICAgeTogMy42MDY2NjY2NjY2NjY2Njc0LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMC4zODM5NTkwNDM4MDYzMDY3NCxcbiAgICAgICAgICAgIHk6IDMuNjgzMDQwODY5MDQ3MDA5NixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDAuNzA5NDYzODAzNzkwNTAyNyxcbiAgICAgICAgICAgIHk6IDMuOTAwNTM2MTk2MjA5NDk3OCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDAuOTI2OTU5MTMwOTUyOTkwOSxcbiAgICAgICAgICAgIHk6IDQuMjI2MDQwOTU2MTkzNjkzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMS4wMDMzMzMzMzMzMzMzMzMyLFxuICAgICAgICAgICAgeTogNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDMuMDEsXG4gICAgICAgICAgICB5OiA0LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMy4wMSxcbiAgICAgICAgICAgIHk6IC00LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTMuMDEsXG4gICAgICAgICAgICB5OiAtNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBzdHJva2Vfd2lkdGg6IDAuMSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IDMuODEsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMVwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IDEuMjcsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzFcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMlwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IC0xLjI3LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8yXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzNcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAtMy44MSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfM1wiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF80XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAtMy44MSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF81XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAtMS4yNyxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNVwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF82XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAxLjI3LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF82XCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzdcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IDMuODEsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzdcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwiY2FkX2NvbXBvbmVudFwiLFxuICAgICAgICBjYWRfY29tcG9uZW50X2lkOiBcImNhZF9jb21wb25lbnRfMFwiLFxuICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgICB6OiAwLjcsXG4gICAgICAgIH0sXG4gICAgICAgIHJvdGF0aW9uOiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIHo6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGZvb3RwcmludGVyX3N0cmluZzogXCJkaXA4XCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0pXG5cbiAgZGIuYWRkT3JkZXIoe1xuICAgIGFjY291bnRfaWQsXG4gICAgaXNfcnVubmluZzogZmFsc2UsXG4gICAgaXNfc3RhcnRlZDogZmFsc2UsXG4gICAgaXNfZmluaXNoZWQ6IGZhbHNlLFxuICAgIGVycm9yOiBudWxsLFxuICAgIGhhc19lcnJvcjogZmFsc2UsXG4gICAgY2lyY3VpdF9qc29uOiBbXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX2NvbXBvbmVudFwiLFxuICAgICAgICBmdHlwZTogXCJzaW1wbGVfcmVzaXN0b3JcIixcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzFcIixcbiAgICAgICAgbmFtZTogXCJSMVwiLFxuICAgICAgICByZXNpc3RhbmU6IFwiMWtcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgc3RhcnRlZF9hdDogbnVsbCxcbiAgICBjb21wbGV0ZWRfYXQ6IG51bGwsXG4gIH0pXG59XG4iLCAiaW1wb3J0IHR5cGUgeyBEYkNsaWVudCB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvZGItY2xpZW50XCJcbmltcG9ydCB7IGNyZWF0ZURhdGFiYXNlIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9kYi1jbGllbnRcIlxuaW1wb3J0IHR5cGUgeyBNaWRkbGV3YXJlIH0gZnJvbSBcIndpbnRlcnNwZWNcIlxuXG5leHBvcnQgY29uc3Qgd2l0aERiOiBNaWRkbGV3YXJlPFxuICB7fSxcbiAge1xuICAgIGRiOiBEYkNsaWVudFxuICB9XG4+ID0gYXN5bmMgKHJlcSwgY3R4LCBuZXh0KSA9PiB7XG4gIGlmICghY3R4LmRiKSB7XG4gICAgY3R4LmRiID0gY3JlYXRlRGF0YWJhc2UoKVxuICB9XG4gIHJldHVybiBuZXh0KHJlcSwgY3R4KVxufVxuIiwgImltcG9ydCB7IE1pZGRsZXdhcmUgfSBmcm9tIFwid2ludGVyc3BlYy9taWRkbGV3YXJlXCJcblxuZXhwb3J0IHR5cGUgQ3R4RXJyb3JGbiA9IChcbiAgc3RhdHVzOiBudW1iZXIsXG4gIGVycm9yX3BheWxvYWQ6IHtcbiAgICBlcnJvcl9jb2RlOiBzdHJpbmdcbiAgICBtZXNzYWdlOiBzdHJpbmdcbiAgfSxcbikgPT4gUmVzcG9uc2VcblxuZXhwb3J0IGNvbnN0IHdpdGhDdHhFcnJvcjogTWlkZGxld2FyZTxcbiAge30sXG4gIHtcbiAgICBlcnJvcjogQ3R4RXJyb3JGblxuICB9XG4+ID0gYXN5bmMgKHJlcSwgY3R4LCBuZXh0KSA9PiB7XG4gIGN0eC5lcnJvciA9IChzdGF0dXMsIGVycm9yX3BheWxvYWQpID0+IHtcbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKEpTT04uc3RyaW5naWZ5KHsgZXJyb3I6IGVycm9yX3BheWxvYWQgfSksIHtcbiAgICAgIHN0YXR1cyxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICB9LFxuICAgIH0pXG4gIH1cbiAgcmV0dXJuIG5leHQocmVxLCBjdHgpXG59XG4iLCAiaW1wb3J0IHR5cGUgeyBNaWRkbGV3YXJlIH0gZnJvbSBcIndpbnRlcnNwZWMvbWlkZGxld2FyZVwiXG5pbXBvcnQgdHlwZSB7IEN0eEVycm9yRm4gfSBmcm9tIFwiLi93aXRoLWN0eC1lcnJvclwiXG5cbmV4cG9ydCBjb25zdCB3aXRoU2Vzc2lvbkF1dGg6IE1pZGRsZXdhcmU8XG4gIHtcbiAgICBlcnJvcjogQ3R4RXJyb3JGblxuICAgIGRiOiBhbnlcbiAgfSxcbiAge1xuICAgIGF1dGg6IHtcbiAgICAgIHR5cGU6IFwic2Vzc2lvblwiXG4gICAgICBhY2NvdW50X2lkOiBzdHJpbmdcbiAgICAgIHBlcnNvbmFsX29yZ19pZDogc3RyaW5nXG4gICAgICBnaXRodWJfdXNlcm5hbWU6IHN0cmluZ1xuICAgICAgc2Vzc2lvbl9pZDogc3RyaW5nXG4gICAgfVxuICB9LFxuICB7fVxuPiA9IGFzeW5jIChyZXEsIGN0eCwgbmV4dCkgPT4ge1xuICBpZiAocmVxLm1ldGhvZCA9PT0gXCJPUFRJT05TXCIpIHJldHVybiBuZXh0KHJlcSwgY3R4KVxuXG4gIGNvbnN0IHRva2VuID0gcmVxLmhlYWRlcnMuZ2V0KFwiYXV0aG9yaXphdGlvblwiKT8uc3BsaXQoXCJCZWFyZXIgXCIpPy5bMV1cblxuICAvLyBPbmx5IGNoZWNrIGRhdGFiYXNlIGFjY291bnRzIHdoZW4gd2UncmUgaW4gYSBCdW4gdGVzdCBlbnZpcm9ubWVudFxuICBpZiAocHJvY2Vzcy5lbnYuQlVOX1RFU1QgPT09IFwidHJ1ZVwiICYmIGN0eC5kYj8uYWNjb3VudHMpIHtcbiAgICBjb25zdCBhY2NvdW50ID0gY3R4LmRiLmFjY291bnRzLmZpbmQoKGFjYzogYW55KSA9PiBhY2MuYWNjb3VudF9pZCA9PT0gdG9rZW4pXG5cbiAgICBpZiAoYWNjb3VudCkge1xuICAgICAgY3R4LmF1dGggPSB7XG4gICAgICAgIHR5cGU6IFwic2Vzc2lvblwiLFxuICAgICAgICBhY2NvdW50X2lkOiBhY2NvdW50LmFjY291bnRfaWQsXG4gICAgICAgIHBlcnNvbmFsX29yZ19pZDogYG9yZy0ke2FjY291bnQuYWNjb3VudF9pZH1gLFxuICAgICAgICBnaXRodWJfdXNlcm5hbWU6IGFjY291bnQuZ2l0aHViX3VzZXJuYW1lLFxuICAgICAgICBzZXNzaW9uX2lkOiBgc2Vzc2lvbi0ke2FjY291bnQuYWNjb3VudF9pZH1gLFxuICAgICAgfVxuICAgICAgcmV0dXJuIG5leHQocmVxLCBjdHgpXG4gICAgfVxuICB9XG5cbiAgLy8gRm9yIGFsbCBvdGhlciBlbnZpcm9ubWVudHMgb3IgaWYgYWNjb3VudCBub3QgZm91bmQgaW4gdGVzdCwgdXNlIGhhcmRjb2RlZCBhdXRoXG4gIGN0eC5hdXRoID0ge1xuICAgIHR5cGU6IFwic2Vzc2lvblwiLFxuICAgIGFjY291bnRfaWQ6IFwiYWNjb3VudC0xMjM0XCIsXG4gICAgcGVyc29uYWxfb3JnX2lkOiBcIm9yZy0xMjM0XCIsXG4gICAgZ2l0aHViX3VzZXJuYW1lOiBcInRlc3R1c2VyXCIsXG4gICAgc2Vzc2lvbl9pZDogXCJzZXNzaW9uLTEyMzRcIixcbiAgfVxuXG4gIHJldHVybiBuZXh0KHJlcSwgY3R4KVxufVxuIiwgImltcG9ydCB0eXBlIHsgTWlkZGxld2FyZSB9IGZyb20gXCJ3aW50ZXJzcGVjL21pZGRsZXdhcmVcIlxuaW1wb3J0IHR5cGUgeyBDdHhFcnJvckZuIH0gZnJvbSBcIi4vd2l0aC1jdHgtZXJyb3JcIlxuXG5leHBvcnQgY29uc3Qgd2l0aE9wdGlvbmFsU2Vzc2lvbkF1dGg6IE1pZGRsZXdhcmU8XG4gIHtcbiAgICBlcnJvcjogQ3R4RXJyb3JGblxuICAgIGRiOiBhbnlcbiAgfSxcbiAge1xuICAgIGF1dGg/OiB7XG4gICAgICB0eXBlOiBcInNlc3Npb25cIlxuICAgICAgYWNjb3VudF9pZDogc3RyaW5nXG4gICAgICBwZXJzb25hbF9vcmdfaWQ6IHN0cmluZ1xuICAgICAgZ2l0aHViX3VzZXJuYW1lOiBzdHJpbmdcbiAgICAgIHNlc3Npb25faWQ6IHN0cmluZ1xuICAgIH1cbiAgfSxcbiAge31cbj4gPSBhc3luYyAocmVxLCBjdHgsIG5leHQpID0+IHtcbiAgaWYgKHJlcS5tZXRob2QgPT09IFwiT1BUSU9OU1wiKSByZXR1cm4gbmV4dChyZXEsIGN0eClcblxuICBjb25zdCB0b2tlbiA9IHJlcS5oZWFkZXJzLmdldChcImF1dGhvcml6YXRpb25cIik/LnNwbGl0KFwiQmVhcmVyIFwiKT8uWzFdXG5cbiAgaWYgKCF0b2tlbikge1xuICAgIHJldHVybiBuZXh0KHJlcSwgY3R4KVxuICB9XG5cbiAgaWYgKHByb2Nlc3MuZW52LkJVTl9URVNUID09PSBcInRydWVcIiAmJiBjdHguZGI/LmFjY291bnRzKSB7XG4gICAgY29uc3QgYWNjb3VudCA9IGN0eC5kYi5hY2NvdW50cy5maW5kKChhY2M6IGFueSkgPT4gYWNjLmFjY291bnRfaWQgPT09IHRva2VuKVxuXG4gICAgaWYgKGFjY291bnQpIHtcbiAgICAgIGN0eC5hdXRoID0ge1xuICAgICAgICB0eXBlOiBcInNlc3Npb25cIixcbiAgICAgICAgYWNjb3VudF9pZDogYWNjb3VudC5hY2NvdW50X2lkLFxuICAgICAgICBwZXJzb25hbF9vcmdfaWQ6IGBvcmctJHthY2NvdW50LmFjY291bnRfaWR9YCxcbiAgICAgICAgZ2l0aHViX3VzZXJuYW1lOiBhY2NvdW50LmdpdGh1Yl91c2VybmFtZSxcbiAgICAgICAgc2Vzc2lvbl9pZDogYHNlc3Npb24tJHthY2NvdW50LmFjY291bnRfaWR9YCxcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV4dChyZXEsIGN0eClcbiAgfVxuXG4gIGN0eC5hdXRoID0ge1xuICAgIHR5cGU6IFwic2Vzc2lvblwiLFxuICAgIGFjY291bnRfaWQ6IFwiYWNjb3VudC0xMjM0XCIsXG4gICAgcGVyc29uYWxfb3JnX2lkOiBcIm9yZy0xMjM0XCIsXG4gICAgZ2l0aHViX3VzZXJuYW1lOiBcInRlc3R1c2VyXCIsXG4gICAgc2Vzc2lvbl9pZDogXCJzZXNzaW9uLTEyMzRcIixcbiAgfVxuXG4gIHJldHVybiBuZXh0KHJlcSwgY3R4KVxufVxuIiwgImltcG9ydCB7IE1pZGRsZXdhcmUgfSBmcm9tIFwid2ludGVyc3BlYy9taWRkbGV3YXJlXCJcbmltcG9ydCBrbGV1ciBmcm9tIFwia2xldXJcIlxuXG5leHBvcnQgY29uc3Qgd2l0aEVycm9ySGFuZGxpbmc6IE1pZGRsZXdhcmU8e30sIHt9PiA9IGFzeW5jIChyZXEsIGN0eCwgbmV4dCkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBuZXh0KHJlcSwgY3R4KVxuICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgY29uc29sZS5lcnJvcihrbGV1ci5yZWQoXCJJbnRlcmNlcHRlZCBlcnJvcjpcIiksIGVycm9yKVxuICAgIC8vIElmIGVycm9yIGlzIGEgUmVzcG9uc2UsIHJldHVybiBpdFxuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gZXJyb3JcbiAgICB9XG4gICAgcmV0dXJuIChjdHggYXMgYW55KS5qc29uKFxuICAgICAge1xuICAgICAgICBvazogZmFsc2UsXG4gICAgICAgIGVycm9yOiB7XG4gICAgICAgICAgbWVzc2FnZTogZXJyb3I/Lm1lc3NhZ2UsXG4gICAgICAgICAgZXJyb3JfY29kZTogZXJyb3I/LmVycm9yX2NvZGUgPz8gXCJpbnRlcm5hbF9zZXJ2ZXJfZXJyb3JcIixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7IHN0YXR1czogZXJyb3I/LnN0YXR1cyB8fCA1MDAgfSxcbiAgICApXG4gIH1cbn1cbiIsICJpbXBvcnQgeyBNaWRkbGV3YXJlIH0gZnJvbSBcIndpbnRlcnNwZWMvbWlkZGxld2FyZVwiXG5pbXBvcnQga2xldXIgZnJvbSBcImtsZXVyXCJcblxuLy8gRU5BQkxFIENPTE9SUyBBTFdBWVNcbmtsZXVyLmVuYWJsZWQgPSB0cnVlXG5cbmNvbnN0IGNvbG9yU3RhdHVzID0gKHN0YXR1czogbnVtYmVyKSA9PiB7XG4gIGlmIChzdGF0dXMgPj0gNTAwKSB7XG4gICAgcmV0dXJuIGtsZXVyLnJlZChzdGF0dXMudG9TdHJpbmcoKSlcbiAgfVxuICBpZiAoc3RhdHVzID49IDQwMCkge1xuICAgIHJldHVybiBrbGV1ci55ZWxsb3coc3RhdHVzLnRvU3RyaW5nKCkpXG4gIH1cbiAgcmV0dXJuIGtsZXVyLmdyZWVuKHN0YXR1cy50b1N0cmluZygpKVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ2dlciB7XG4gIGVycm9yOiAoLi4uYXJnczogYW55W10pID0+IHZvaWRcbiAgaW5mbzogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkXG4gIHdhcm46ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZFxuICBkZWJ1ZzogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkXG59XG5cbmV4cG9ydCBjb25zdCB3aXRoUmVxdWVzdExvZ2dpbmc6IE1pZGRsZXdhcmU8XG4gIHt9LFxuICB7XG4gICAgbG9nZ2VyOiBMb2dnZXJcbiAgfVxuPiA9IGFzeW5jIChyZXEsIGN0eCwgbmV4dCkgPT4ge1xuICBpZiAoIWN0eC5sb2dnZXIpIHtcbiAgICBjdHgubG9nZ2VyID0ge1xuICAgICAgZXJyb3I6ICguLi5hcmdzOiBhbnlbXSkgPT4gY29uc29sZS5lcnJvciguLi5hcmdzKSxcbiAgICAgIGluZm86ICguLi5hcmdzOiBhbnlbXSkgPT4gY29uc29sZS5sb2coLi4uYXJncyksXG4gICAgICB3YXJuOiAoLi4uYXJnczogYW55W10pID0+IGNvbnNvbGUud2FybiguLi5hcmdzKSxcbiAgICAgIGRlYnVnOiAoLi4uYXJnczogYW55W10pID0+IGNvbnNvbGUubG9nKC4uLmFyZ3MpLFxuICAgIH1cbiAgfVxuICB0cnkge1xuICAgIGN0eC5sb2dnZXIuaW5mbyhrbGV1ci5ibHVlKGA+ICR7cmVxLm1ldGhvZH0gJHtyZXEudXJsfWApKVxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgbmV4dChyZXEsIGN0eClcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2VCb2R5ID0gYXdhaXQgcmVzcG9uc2UuY2xvbmUoKS50ZXh0KClcbiAgICAgIGN0eC5sb2dnZXIuaW5mbyhcbiAgICAgICAgYDwgJHtjb2xvclN0YXR1cyhyZXNwb25zZS5zdGF0dXMpfSAke2tsZXVyLmdyYXkocmVzcG9uc2VCb2R5LnNsaWNlKDAsIDQwKS5yZXBsYWNlKC8oXFxyXFxufFxcbnxcXHIpL2dtLCBcIlwiKSl9YCxcbiAgICAgIClcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjdHgubG9nZ2VyLmluZm8oYDwgJHtjb2xvclN0YXR1cyhyZXNwb25zZS5zdGF0dXMpfWApXG4gICAgfVxuICAgIHJldHVybiByZXNwb25zZVxuICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICBjdHgubG9nZ2VyLmluZm8oa2xldXIucmVkKGA8IEVSUk9SICR7ZS50b1N0cmluZygpLnNsaWNlKDAsIDUwKX0uLi5gKSlcbiAgICB0aHJvdyBlXG4gIH1cbn1cbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgc2VlZCB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2VlZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBqc29uUmVzcG9uc2U6IHouYW55KCksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgcmV0dXJuIGN0eC5qc29uKGN0eC5kYi5nZXRTdGF0ZSgpKVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgb3JkZXJTdGVwcyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS91dGlscy9vcmRlci1zdGVwc1wiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBzdWNjZXNzOiB6LmJvb2xlYW4oKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgLy8gR2V0IGFsbCBvcmRlcnMgdGhhdCBhcmVuJ3QgZmluaXNoZWRcbiAgY29uc3Qgb3JkZXJzID0gY3R4LmRiLm9yZGVycy5maWx0ZXIoKG9yZGVyKSA9PiAhb3JkZXIuaXNfZmluaXNoZWQpXG4gIGNvbnN0IHVwZGF0ZWRPcmRlcnMgPSBbXVxuXG4gIGZvciAoY29uc3Qgb3JkZXIgb2Ygb3JkZXJzKSB7XG4gICAgY29uc3Qgb3JkZXJTdGF0ZSA9IGN0eC5kYi5nZXRKbGNwY2JPcmRlclN0YXRlc0J5T3JkZXJJZChvcmRlci5vcmRlcl9pZClcbiAgICBpZiAoIW9yZGVyU3RhdGUpIGNvbnRpbnVlXG5cbiAgICAvLyBGaW5kIHRoZSBuZXh0IHN0ZXAgdG8gY29tcGxldGVcbiAgICBsZXQgbmV4dFN0ZXBJbmRleCA9IC0xXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcmRlclN0ZXBzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBzdGVwID0gb3JkZXJTdGVwc1tpXVxuICAgICAgaWYgKCFvcmRlclN0YXRlW3N0ZXBdKSB7XG4gICAgICAgIG5leHRTdGVwSW5kZXggPSBpXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSWYgYWxsIHN0ZXBzIGFyZSBjb21wbGV0ZWQgb3Igbm8gbmV4dCBzdGVwIGZvdW5kXG4gICAgaWYgKG5leHRTdGVwSW5kZXggPT09IC0xKSB7XG4gICAgICB1cGRhdGVkT3JkZXJzLnB1c2goe1xuICAgICAgICBvcmRlcl9pZDogb3JkZXIub3JkZXJfaWQsXG4gICAgICAgIGN1cnJlbnRfc3RlcDogbnVsbCxcbiAgICAgIH0pXG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIC8vIFVwZGF0ZSB0aGUgbmV4dCBzdGVwIHRvIHRydWVcbiAgICBjb25zdCBuZXh0U3RlcCA9IG9yZGVyU3RlcHNbbmV4dFN0ZXBJbmRleF1cbiAgICBjb25zdCB1cGRhdGVzID0ge1xuICAgICAgW25leHRTdGVwXTogdHJ1ZSxcbiAgICAgIGN1cnJlbnRfc3RlcDogbmV4dFN0ZXAsXG4gICAgfVxuXG4gICAgLy8gSWYgdGhpcyBpcyB0aGUgbGFzdCBzdGVwLCBhbHNvIHVwZGF0ZSB0aGUgb3JkZXIgc3RhdHVzXG4gICAgaWYgKG5leHRTdGVwSW5kZXggPT09IG9yZGVyU3RlcHMubGVuZ3RoIC0gMSkge1xuICAgICAgY3R4LmRiLnVwZGF0ZU9yZGVyKG9yZGVyLm9yZGVyX2lkLCB7XG4gICAgICAgIGlzX2ZpbmlzaGVkOiB0cnVlLFxuICAgICAgICBjb21wbGV0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgY3R4LmRiLnVwZGF0ZUpsY3BjYk9yZGVyU3RhdGUob3JkZXIub3JkZXJfaWQsIHVwZGF0ZXMpXG5cbiAgICB1cGRhdGVkT3JkZXJzLnB1c2goe1xuICAgICAgb3JkZXJfaWQ6IG9yZGVyLm9yZGVyX2lkLFxuICAgICAgY3VycmVudF9zdGVwOiBuZXh0U3RlcCxcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBzdWNjZXNzOiB0cnVlLFxuICB9KVxufSlcbiIsICJleHBvcnQgY29uc3Qgb3JkZXJTdGVwcyA9IFtcbiAgXCJhcmVfZ2VyYmVyc19nZW5lcmF0ZWRcIixcbiAgXCJhcmVfZ2VyYmVyc191cGxvYWRlZFwiLFxuICBcImlzX2dlcmJlcl9hbmFseXplZFwiLFxuICBcImFyZV9pbml0aWFsX2Nvc3RzX2NhbGN1bGF0ZWRcIixcbiAgXCJpc19wY2JfYWRkZWRfdG9fY2FydFwiLFxuICBcImlzX2JvbV91cGxvYWRlZFwiLFxuICBcImlzX3BucF91cGxvYWRlZFwiLFxuICBcImlzX2JvbV9wbnBfYW5hbHl6ZWRcIixcbiAgXCJpc19ib21fcGFyc2luZ19jb21wbGV0ZVwiLFxuICBcImFyZV9jb21wb25lbnRzX2F2YWlsYWJsZVwiLFxuICBcImlzX3BhdGNoX21hcF9nZW5lcmF0ZWRcIixcbiAgXCJpc19qc29uX21lcmdlX2ZpbGVfY3JlYXRlZFwiLFxuICBcImlzX2RmbV9yZXN1bHRfZ2VuZXJhdGVkXCIsXG4gIFwiYXJlX2ZpbGVzX2Rvd25sb2FkZWRcIixcbiAgXCJhcmVfcHJvZHVjdF9jYXRlZ29yaWVzX2ZldGNoZWRcIixcbiAgXCJhcmVfZmluYWxfY29zdHNfY2FsY3VsYXRlZFwiLFxuICBcImlzX2pzb25fbWVyZ2VfZmlsZV91cGRhdGVkXCIsXG4gIFwiaXNfYWRkZWRfdG9fY2FydFwiLFxuXSBhcyBjb25zdFxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBvcmRlclF1b3RlU2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgb3JkZXJfcXVvdGVfaWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvcmRlcl9xdW90ZTogb3JkZXJRdW90ZVNjaGVtYS5vcHRpb25hbCgpLFxuICAgIGVycm9yOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgb3JkZXJfcXVvdGVfaWQgfSA9IHJlcS5qc29uQm9keVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb3JkZXJfcXVvdGU6IHtcbiAgICAgIG9yZGVyX3F1b3RlX2lkLFxuICAgICAgYWNjb3VudF9pZDogXCIxMjNcIixcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogXCIxMjNcIixcbiAgICAgIGlzX2NvbXBsZXRlZDogdHJ1ZSxcbiAgICAgIGlzX3Byb2Nlc3Npbmc6IGZhbHNlLFxuICAgICAgdmVuZG9yX25hbWU6IFwiSkxDUENCXCIsXG4gICAgICBlcnJvcjogbnVsbCxcbiAgICAgIGhhc19lcnJvcjogZmFsc2UsXG4gICAgICBjcmVhdGVkX2F0OiBcIjIwMjUtMDQtMjFcIixcbiAgICAgIHVwZGF0ZWRfYXQ6IFwiMjAyNS0wNC0yMVwiLFxuICAgICAgY29tcGxldGVkX2F0OiBcIjIwMjUtMDQtMjFcIixcbiAgICAgIHF1b3RlZF9jb21wb25lbnRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBtYW51ZmFjdHVyZXJfcGFydF9udW1iZXI6IFwiMTIzXCIsXG4gICAgICAgICAgc3VwcGxpZXJfcGFydF9udW1iZXI6IFwiMTIzXCIsXG4gICAgICAgICAgcXVhbnRpdHk6IDEsXG4gICAgICAgICAgdW5pdF9wcmljZTogMTAwLFxuICAgICAgICAgIHRvdGFsX3ByaWNlOiAxMDAsXG4gICAgICAgICAgYXZhaWxhYmxlOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbWFudWZhY3R1cmVyX3BhcnRfbnVtYmVyOiBcIjEyMzRcIixcbiAgICAgICAgICBzdXBwbGllcl9wYXJ0X251bWJlcjogXCIxMjM0XCIsXG4gICAgICAgICAgcXVhbnRpdHk6IDEsXG4gICAgICAgICAgdW5pdF9wcmljZTogMjAwLFxuICAgICAgICAgIHRvdGFsX3ByaWNlOiAyMDAsXG4gICAgICAgICAgYXZhaWxhYmxlOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGJhcmVfcGNiX2Nvc3Q6IDMwMCxcbiAgICAgIHNoaXBwaW5nX29wdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGNhcnJpZXI6IFwiREhMXCIsXG4gICAgICAgICAgc2VydmljZTogXCJFeHByZXNzXCIsXG4gICAgICAgICAgY29zdDogMTAwLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgY2FycmllcjogXCJGZWRFeFwiLFxuICAgICAgICAgIHNlcnZpY2U6IFwiRXhwcmVzc1wiLFxuICAgICAgICAgIGNvc3Q6IDIwMCxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICAvLyBUT0RPOiBzaGlwcGluZyBjb3N0IGNhbiB2YXJ5IHNvIGRvIHRoZSB0b3RhbCBjb3N0IGNhbGN1bGF0aW9uXG4gICAgICB0b3RhbF9jb3N0OiAxMDAsXG4gICAgfSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IHNlZWQgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NlZWRcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3QoeyBvazogei5ib29sZWFuKCkgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgc2VlZChjdHguZGIpXG5cbiAgcmV0dXJuIGN0eC5qc29uKHsgb2s6IHRydWUgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIGFjY291bnRfYmFsYW5jZTogei5vYmplY3Qoe1xuICAgICAgbW9udGhseV9haV9idWRnZXRfdXNlZF91c2Q6IHoubnVtYmVyKCksXG4gICAgfSksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIC8vIEZvciB0aGlzIGV4YW1wbGUsIHdlJ2xsIHJldHVybiBhIG1vY2sgYmFsYW5jZVxuICAvLyBJbiBhIHJlYWwgaW1wbGVtZW50YXRpb24sIHlvdSB3b3VsZCBmZXRjaCB0aGlzIGZyb20gYSBkYXRhYmFzZSBvciBleHRlcm5hbCBzZXJ2aWNlXG4gIGNvbnN0IG1vY2tCYWxhbmNlID0ge1xuICAgIG1vbnRobHlfYWlfYnVkZ2V0X3VzZWRfdXNkOiAyLjUsXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIGFjY291bnRfYmFsYW5jZTogbW9ja0JhbGFuY2UsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBhY2NvdW50U2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgYWNjb3VudDogYWNjb3VudFNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgYWNjb3VudCA9IGN0eC5kYi5nZXRBY2NvdW50KGN0eC5hdXRoLmFjY291bnRfaWQpXG4gIGlmICghYWNjb3VudCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImFjY291bnRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIkFjY291bnQgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7IGFjY291bnQgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7XG4gIGFjY291bnRTY2hlbWEsXG4gIHNoaXBwaW5nSW5mb1NjaGVtYSxcbn0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgc2hpcHBpbmdJbmZvOiBzaGlwcGluZ0luZm9TY2hlbWEsXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBhY2NvdW50OiBhY2NvdW50U2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IHNoaXBwaW5nSW5mbyB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgY29uc3QgdXBkYXRlZEFjY291bnQgPSBjdHguZGIudXBkYXRlQWNjb3VudChjdHguYXV0aC5hY2NvdW50X2lkLCB7XG4gICAgc2hpcHBpbmdJbmZvLFxuICB9KVxuXG4gIGlmICghdXBkYXRlZEFjY291bnQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJhY2NvdW50X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJBY2NvdW50IG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oeyBhY2NvdW50OiB1cGRhdGVkQWNjb3VudCB9KVxufSlcbiIsICIvKipcbiAqIEZvcndhcmQgcmVxdWVzdCB0byBhbnRocm9waWNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgYXN5bmMgKHJlcTogUmVxdWVzdCkgPT4ge1xuICBjb25zdCB1cmwgPSBuZXcgVVJMKHJlcS51cmwpXG4gIGNvbnN0IGFudGhyb3BpY0FwaUtleSA9IHByb2Nlc3MuZW52LkFOVEhST1BJQ19BUElfS0VZXG5cbiAgaWYgKCFhbnRocm9waWNBcGlLZXkpIHtcbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKFwiQW50aHJvcGljIEFQSSBrZXkgaXMgbm90IHNldFwiLCB7IHN0YXR1czogNTAwIH0pXG4gIH1cblxuICBjb25zdCBhbnRocm9waWNVcmwgPVxuICAgIFwiaHR0cHM6Ly9hcGkuYW50aHJvcGljLmNvbVwiICsgdXJsLnBhdGhuYW1lLnJlcGxhY2UoL15cXC9hcGlcXC9haS8sIFwiXCIpXG5cbiAgY29uc3QgaGVhZGVycyA9IG5ldyBIZWFkZXJzKHJlcS5oZWFkZXJzKVxuICBoZWFkZXJzLnNldChcIngtYXBpLWtleVwiLCBgJHthbnRocm9waWNBcGlLZXl9YClcblxuICBjb25zb2xlLmxvZyhcInNlbmRpbmcgcmVxdWVzdCB0byBhbnRocm9waWNcIilcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChhbnRocm9waWNVcmwsIHtcbiAgICBtZXRob2Q6IHJlcS5tZXRob2QsXG4gICAgaGVhZGVyczogaGVhZGVycyxcbiAgICBib2R5OiByZXEuYm9keSxcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgZHVwbGV4OiBcImhhbGZcIixcbiAgfSkudGhlbigocikgPT4gci5qc29uKCkpXG5cbiAgcmV0dXJuIG5ldyBSZXNwb25zZShKU09OLnN0cmluZ2lmeShyZXNwb25zZSksIHtcbiAgICBzdGF0dXM6IDIwMCxcbiAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gIH0pXG59XG4iLCAiaW1wb3J0IGFpIGZyb20gXCIuL2FpL1suLi5hbnlyb3V0ZV1cIlxuZXhwb3J0IGRlZmF1bHQgYWlcbiIsICJpbXBvcnQgeyBSZWFkYWJsZVN0cmVhbSB9IGZyb20gXCJzdHJlYW0vd2ViXCJcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgKHJlcTogUmVxdWVzdCkgPT4ge1xuICBjb25zdCB1cmwgPSBuZXcgVVJMKHJlcS51cmwpXG4gIGNvbnN0IGFudGhyb3BpY0FwaUtleSA9IHByb2Nlc3MuZW52LkFOVEhST1BJQ19BUElfS0VZXG5cbiAgaWYgKCFhbnRocm9waWNBcGlLZXkpIHtcbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKFwiQW50aHJvcGljIEFQSSBrZXkgaXMgbm90IHNldFwiLCB7IHN0YXR1czogNTAwIH0pXG4gIH1cblxuICBjb25zdCBhbnRocm9waWNVcmwgPVxuICAgIFwiaHR0cHM6Ly9hcGkuYW50aHJvcGljLmNvbVwiICsgdXJsLnBhdGhuYW1lLnJlcGxhY2UoL15cXC9hcGlcXC9haS8sIFwiXCIpXG5cbiAgY29uc3QgaGVhZGVycyA9IG5ldyBIZWFkZXJzKHJlcS5oZWFkZXJzKVxuICBoZWFkZXJzLnNldChcIngtYXBpLWtleVwiLCBgJHthbnRocm9waWNBcGlLZXl9YClcbiAgaGVhZGVycy5zZXQoXCJBY2NlcHRcIiwgXCJ0ZXh0L2V2ZW50LXN0cmVhbVwiKVxuICBoZWFkZXJzLnNldChcIkNhY2hlLUNvbnRyb2xcIiwgXCJuby1jYWNoZVwiKVxuICBoZWFkZXJzLnNldChcIkNvbm5lY3Rpb25cIiwgXCJrZWVwLWFsaXZlXCIpXG5cbiAgY29uc29sZS5sb2coXCJzZW5kaW5nIHJlcXVlc3QgdG8gYW50aHJvcGljXCIpXG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYW50aHJvcGljVXJsLCB7XG4gICAgbWV0aG9kOiByZXEubWV0aG9kLFxuICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgYm9keTogcmVxLmJvZHksXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGR1cGxleDogXCJoYWxmXCIsXG4gIH0pXG5cbiAgLy8gQ2hlY2sgaWYgdGhlIHJlc3BvbnNlIGlzIHN1Y2Nlc3NmdWxcbiAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgIHJldHVybiBuZXcgUmVzcG9uc2UoXG4gICAgICBgQW50aHJvcGljIEFQSSByZXR1cm5lZCBhbiBlcnJvcjogJHtyZXNwb25zZS5zdGF0dXN9ICR7cmVzcG9uc2Uuc3RhdHVzVGV4dH1gLFxuICAgICAge1xuICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cyxcbiAgICAgIH0sXG4gICAgKVxuICB9XG5cbiAgLy8gQ3JlYXRlIGEgUmVhZGFibGVTdHJlYW0gdG8gcHJvY2VzcyB0aGUgcmVzcG9uc2VcbiAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHtcbiAgICBhc3luYyBzdGFydChjb250cm9sbGVyKSB7XG4gICAgICBjb25zdCByZWFkZXIgPSByZXNwb25zZS5ib2R5IS5nZXRSZWFkZXIoKVxuXG4gICAgICB0cnkge1xuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgIGNvbnN0IHsgZG9uZSwgdmFsdWUgfSA9IGF3YWl0IHJlYWRlci5yZWFkKClcbiAgICAgICAgICBpZiAoZG9uZSkgYnJlYWtcbiAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUodmFsdWUpXG4gICAgICAgIH1cbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHJlYWRlci5yZWxlYXNlTG9jaygpXG4gICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKVxuICAgICAgfVxuICAgIH0sXG4gIH0pXG5cbiAgLy8gUmV0dXJuIGEgc3RyZWFtaW5nIHJlc3BvbnNlXG4gIHJldHVybiBuZXcgUmVzcG9uc2Uoc3RyZWFtIGFzIGFueSwge1xuICAgIGhlYWRlcnM6IHtcbiAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwidGV4dC9ldmVudC1zdHJlYW1cIixcbiAgICAgIFwiQ2FjaGUtQ29udHJvbFwiOiBcIm5vLWNhY2hlXCIsXG4gICAgICBDb25uZWN0aW9uOiBcImtlZXAtYWxpdmVcIixcbiAgICB9LFxuICB9KVxufVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGpzb25SZXNwb25zZTogei5vYmplY3QoeyBvazogei5ib29sZWFuKCkgfSksXG59KShhc3luYyAocmVxOiBhbnksIGN0eDogYW55KSA9PiB7XG4gIHJldHVybiBjdHguanNvbih7IG9rOiB0cnVlIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgbXMgZnJvbSBcIm1zXCJcbmltcG9ydCB7IFNpZ25KV1QgfSBmcm9tIFwiam9zZVwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAganNvbkJvZHk6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIGFjY291bnRfaWQ6IHouc3RyaW5nKCksXG4gICAgfSlcbiAgICAub3IoXG4gICAgICB6Lm9iamVjdCh7XG4gICAgICAgIGdpdGh1Yl91c2VybmFtZTogei5zdHJpbmcoKSxcbiAgICAgIH0pLFxuICAgICksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIHNlc3Npb246IHoub2JqZWN0KHtcbiAgICAgIHNlc3Npb25faWQ6IHouc3RyaW5nKCksXG4gICAgICBhY2NvdW50X2lkOiB6LnN0cmluZygpLFxuICAgICAgZXhwaXJlc19hdDogei5zdHJpbmcoKSxcbiAgICAgIGlzX2NsaV9zZXNzaW9uOiB6LmJvb2xlYW4oKSxcbiAgICAgIHRva2VuOiB6LnN0cmluZygpLFxuICAgIH0pLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBsZXQgYWNjb3VudFxuICBpZiAoXCJhY2NvdW50X2lkXCIgaW4gcmVxLmpzb25Cb2R5KSB7XG4gICAgYWNjb3VudCA9IGN0eC5kYi5nZXRBY2NvdW50KHJlcS5qc29uQm9keS5hY2NvdW50X2lkKVxuICB9IGVsc2Uge1xuICAgIGFjY291bnQgPSBjdHguZGIuZ2V0QWNjb3VudChyZXEuanNvbkJvZHkuZ2l0aHViX3VzZXJuYW1lKVxuICB9XG5cbiAgaWYgKCFhY2NvdW50KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiYWNjb3VudF9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiQWNjb3VudCBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgbmV3X3Nlc3Npb24gPSBjdHguZGIuY3JlYXRlU2Vzc2lvbih7XG4gICAgZXhwaXJlc19hdDogbmV3IERhdGUoRGF0ZS5ub3coKSArIG1zKFwiNjAgZGF5XCIpKS50b0lTT1N0cmluZygpLFxuICAgIGFjY291bnRfaWQ6IGFjY291bnQuYWNjb3VudF9pZCxcbiAgICBpc19jbGlfc2Vzc2lvbjogZmFsc2UsXG4gIH0pXG5cbiAgY29uc3QgdG9rZW4gPSBhd2FpdCBuZXcgU2lnbkpXVCh7XG4gICAgYWNjb3VudF9pZDogYWNjb3VudC5hY2NvdW50X2lkLFxuICAgIHNlc3Npb25faWQ6IG5ld19zZXNzaW9uLnNlc3Npb25faWQsXG4gICAgZ2l0aHViX3VzZXJuYW1lOiBhY2NvdW50LmdpdGh1Yl91c2VybmFtZSxcbiAgfSlcbiAgICAuc2V0UHJvdGVjdGVkSGVhZGVyKHsgYWxnOiBcIkhTMjU2XCIgfSlcbiAgICAuc2V0RXhwaXJhdGlvblRpbWUobmV3IERhdGUoRGF0ZS5ub3coKSArIG1zKFwiNjAgZGF5XCIpKS50b0lTT1N0cmluZygpKVxuICAgIC5zaWduKG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShwcm9jZXNzLmVudi5KV1RfU0VDUkVUIHx8IFwiXCIpKVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgc2Vzc2lvbjoge1xuICAgICAgLi4ubmV3X3Nlc3Npb24sXG4gICAgICB0b2tlbixcbiAgICB9LFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgb3JkZXJGaWxlU2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAgcXVlcnlQYXJhbXM6IHoub2JqZWN0KHtcbiAgICBvcmRlcl9maWxlX2lkOiB6LnN0cmluZygpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb3JkZXJfZmlsZTogb3JkZXJGaWxlU2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IG9yZGVyX2ZpbGVfaWQgfSA9IHJlcS5xdWVyeVxuXG4gIGNvbnN0IG9yZGVyRmlsZSA9IGN0eC5kYi5nZXRPcmRlckZpbGVCeUlkKG9yZGVyX2ZpbGVfaWQpXG4gIGlmICghb3JkZXJGaWxlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwib3JkZXJfZmlsZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiT3JkZXIgZmlsZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvcmRlcl9maWxlOiBvcmRlckZpbGUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBvcmRlckZpbGVTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBvcmRlcl9pZDogei5zdHJpbmcoKSxcbiAgICBjb250ZW50X2Jhc2U2NDogei5zdHJpbmcoKSxcbiAgICBpc19nZXJiZXJzX3ppcDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICBmb3JfcHJvdmlkZXI6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9yZGVyX2ZpbGU6IG9yZGVyRmlsZVNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBvcmRlcl9pZCwgY29udGVudF9iYXNlNjQsIGlzX2dlcmJlcnNfemlwLCBmb3JfcHJvdmlkZXIgfSA9XG4gICAgcmVxLmpzb25Cb2R5XG5cbiAgY29uc3Qgb3JkZXIgPSBjdHguZGIuZ2V0T3JkZXJCeUlkKG9yZGVyX2lkKVxuICBpZiAoIW9yZGVyKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwib3JkZXJfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIk9yZGVyIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBuZXdPcmRlckZpbGUgPSB7XG4gICAgb3JkZXJfaWQsXG4gICAgaXNfZ2VyYmVyc196aXA6IGlzX2dlcmJlcnNfemlwIHx8IGZhbHNlLFxuICAgIGNvbnRlbnRfdHlwZTogXCJiYXNlNjRcIixcbiAgICBmb3JfcHJvdmlkZXI6IGZvcl9wcm92aWRlciB8fCBudWxsLFxuICAgIHVwbG9hZGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgY29udGVudF90ZXh0OiBCdWZmZXIuZnJvbShjb250ZW50X2Jhc2U2NCwgXCJiYXNlNjRcIikudG9TdHJpbmcoXCJ1dGYtOFwiKSxcbiAgICBjb250ZW50X2J5dGVzOiBVaW50OEFycmF5LmZyb20oYXRvYihjb250ZW50X2Jhc2U2NCksIChjKSA9PlxuICAgICAgYy5jaGFyQ29kZUF0KDApLFxuICAgICksXG4gIH1cblxuICBjb25zdCBvcmRlckZpbGUgPSBjdHguZGIuYWRkT3JkZXJGaWxlKG5ld09yZGVyRmlsZSlcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9yZGVyX2ZpbGU6IG9yZGVyRmlsZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9yZGVyX3F1b3RlX2lkczogei5hcnJheSh6LnN0cmluZygpKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBwYWNrYWdlX3JlbGVhc2VfaWQgfSA9IHJlcS5qc29uQm9keVxuICBjb25zdCB2ZW5kb3JOYW1lcyA9IFtcIkpMQ1BDQlwiLCBcIk1hY3JvRmFiXCJdXG5cbiAgbGV0IG9yZGVyUXVvdGVJZHMgPSBbXVxuICBmb3IgKGNvbnN0IHZlbmRvck5hbWUgb2YgdmVuZG9yTmFtZXMpIHtcbiAgICBjb25zdCBvcmRlclF1b3RlSWQgPSBjdHguZGIuYWRkT3JkZXJRdW90ZSh7XG4gICAgICBhY2NvdW50X2lkOiBjdHguYXV0aC5hY2NvdW50X2lkLFxuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgdmVuZG9yX25hbWU6IHZlbmRvck5hbWUsXG4gICAgfSlcbiAgICBvcmRlclF1b3RlSWRzLnB1c2gob3JkZXJRdW90ZUlkKVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvcmRlcl9xdW90ZV9pZHM6IG9yZGVyUXVvdGVJZHMsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCksXG4gICAgdmVuZG9yX25hbWU6IHouc3RyaW5nKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvcmRlcl9xdW90ZV9pZDogei5zdHJpbmcoKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBwYWNrYWdlX3JlbGVhc2VfaWQsIHZlbmRvcl9uYW1lIH0gPSByZXEuanNvbkJvZHlcblxuICBjb25zdCBvcmRlclF1b3RlSWQgPSBjdHguZGIuYWRkT3JkZXJRdW90ZSh7XG4gICAgYWNjb3VudF9pZDogY3R4LmF1dGguYWNjb3VudF9pZCxcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgdmVuZG9yX25hbWUsXG4gIH0pXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvcmRlcl9xdW90ZV9pZDogb3JkZXJRdW90ZUlkLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgb3JkZXJRdW90ZVNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIG9yZGVyX3F1b3RlX2lkOiB6LnN0cmluZygpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb3JkZXJfcXVvdGU6IG9yZGVyUXVvdGVTY2hlbWEub3B0aW9uYWwoKSxcbiAgICBlcnJvcjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IG9yZGVyX3F1b3RlX2lkIH0gPSByZXEuanNvbkJvZHlcblxuICBjb25zdCBvcmRlclF1b3RlID0gY3R4LmRiLmdldE9yZGVyUXVvdGVCeUlkKG9yZGVyX3F1b3RlX2lkKVxuXG4gIGlmICghb3JkZXJRdW90ZSkge1xuICAgIHJldHVybiBjdHguanNvbihcbiAgICAgIHtcbiAgICAgICAgZXJyb3I6IFwiT3JkZXIgcXVvdGUgbm90IGZvdW5kXCIsXG4gICAgICB9LFxuICAgICAgeyBzdGF0dXM6IDQwNCB9LFxuICAgIClcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb3JkZXJfcXVvdGU6IG9yZGVyUXVvdGUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7XG4gIEpsY3BjYk9yZGVyU3RhdGUsXG4gIHR5cGUgT3JkZXIsXG4gIG9yZGVyU2NoZW1hLFxufSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCkudXVpZCgpLm9wdGlvbmFsKCksXG4gICAgICBjaXJjdWl0X2pzb246IHouYXJyYXkoei5yZWNvcmQoei5hbnkoKSkpLFxuICAgIH0pXG4gICAgLnJlZmluZSgoZGF0YSkgPT4gZGF0YS5wYWNrYWdlX3JlbGVhc2VfaWQgfHwgZGF0YS5jaXJjdWl0X2pzb24sIHtcbiAgICAgIG1lc3NhZ2U6IFwiRWl0aGVyIHBhY2thZ2VfcmVsZWFzZV9pZCBvciBjaXJjdWl0X2pzb24gbXVzdCBiZSBwcm92aWRlZFwiLFxuICAgIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvcmRlcjogb3JkZXJTY2hlbWEsXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgY2lyY3VpdF9qc29uIH0gPSByZXEuanNvbkJvZHlcblxuICBjb25zdCBuZXdPcmRlciA9IHtcbiAgICBhY2NvdW50X2lkOiBjdHguYXV0aC5hY2NvdW50X2lkLFxuICAgIGlzX3J1bm5pbmc6IGZhbHNlLFxuICAgIGlzX3N0YXJ0ZWQ6IGZhbHNlLFxuICAgIGlzX2ZpbmlzaGVkOiBmYWxzZSxcbiAgICBlcnJvcjogbnVsbCxcbiAgICBoYXNfZXJyb3I6IGZhbHNlLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBzdGFydGVkX2F0OiBudWxsLFxuICAgIGNvbXBsZXRlZF9hdDogbnVsbCxcbiAgICBjaXJjdWl0X2pzb24sXG4gIH1cblxuICBjb25zdCBvcmRlciA9IGN0eC5kYi5hZGRPcmRlcihuZXdPcmRlcilcblxuICBjb25zdCBuZXdKbGNwY2JPcmRlclN0YXRlID0ge1xuICAgIG9yZGVyX2lkOiBvcmRlci5vcmRlcl9pZCxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgYXJlX2dlcmJlcnNfdXBsb2FkZWQ6IGZhbHNlLFxuICAgIGlzX2dlcmJlcl9hbmFseXplZDogZmFsc2UsXG4gICAgYXJlX2luaXRpYWxfY29zdHNfY2FsY3VsYXRlZDogZmFsc2UsXG4gICAgaXNfcGNiX2FkZGVkX3RvX2NhcnQ6IGZhbHNlLFxuICAgIGlzX2JvbV91cGxvYWRlZDogZmFsc2UsXG4gICAgaXNfcG5wX3VwbG9hZGVkOiBmYWxzZSxcbiAgICBpc19ib21fcG5wX2FuYWx5emVkOiBmYWxzZSxcbiAgICBpc19ib21fcGFyc2luZ19jb21wbGV0ZTogZmFsc2UsXG4gICAgYXJlX2NvbXBvbmVudHNfYXZhaWxhYmxlOiBmYWxzZSxcbiAgICBpc19wYXRjaF9tYXBfZ2VuZXJhdGVkOiBmYWxzZSxcbiAgICBpc19qc29uX21lcmdlX2ZpbGVfY3JlYXRlZDogZmFsc2UsXG4gICAgaXNfZGZtX3Jlc3VsdF9nZW5lcmF0ZWQ6IGZhbHNlLFxuICAgIGFyZV9maWxlc19kb3dubG9hZGVkOiBmYWxzZSxcbiAgICBhcmVfcHJvZHVjdF9jYXRlZ29yaWVzX2ZldGNoZWQ6IGZhbHNlLFxuICAgIGFyZV9maW5hbF9jb3N0c19jYWxjdWxhdGVkOiBmYWxzZSxcbiAgICBpc19qc29uX21lcmdlX2ZpbGVfdXBkYXRlZDogZmFsc2UsXG4gICAgaXNfYWRkZWRfdG9fY2FydDogZmFsc2UsXG4gICAgYXJlX2dlcmJlcnNfZ2VuZXJhdGVkOiBmYWxzZSxcbiAgICBjdXJyZW50X3N0ZXA6IG51bGwsXG4gIH1cblxuICBjdHguZGIuYWRkSmxjcGNiT3JkZXJTdGF0ZShuZXdKbGNwY2JPcmRlclN0YXRlKVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb3JkZXIsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7XG4gIGVycm9yU2NoZW1hLFxuICBqbGNwY2JPcmRlclN0YXRlU2NoZW1hLFxuICBvcmRlclNjaGVtYSxcbn0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IG9yZGVyU3RlcHMgYXMgc2ltdWxhdGVTY2VuYXJpb3MgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvdXRpbHMvb3JkZXItc3RlcHNcIlxuXG5jb25zdCBkZWZhdWx0T3JkZXJTdGF0ZSA9IHtcbiAgYXJlX2dlcmJlcnNfdXBsb2FkZWQ6IGZhbHNlLFxuICBpc19nZXJiZXJfYW5hbHl6ZWQ6IGZhbHNlLFxuICBhcmVfaW5pdGlhbF9jb3N0c19jYWxjdWxhdGVkOiBmYWxzZSxcbiAgaXNfcGNiX2FkZGVkX3RvX2NhcnQ6IGZhbHNlLFxuICBpc19ib21fdXBsb2FkZWQ6IGZhbHNlLFxuICBpc19wbnBfdXBsb2FkZWQ6IGZhbHNlLFxuICBpc19ib21fcG5wX2FuYWx5emVkOiBmYWxzZSxcbiAgaXNfYm9tX3BhcnNpbmdfY29tcGxldGU6IGZhbHNlLFxuICBhcmVfY29tcG9uZW50c19hdmFpbGFibGU6IGZhbHNlLFxuICBpc19wYXRjaF9tYXBfZ2VuZXJhdGVkOiBmYWxzZSxcbiAgaXNfanNvbl9tZXJnZV9maWxlX2NyZWF0ZWQ6IGZhbHNlLFxuICBpc19kZm1fcmVzdWx0X2dlbmVyYXRlZDogZmFsc2UsXG4gIGFyZV9maWxlc19kb3dubG9hZGVkOiBmYWxzZSxcbiAgYXJlX3Byb2R1Y3RfY2F0ZWdvcmllc19mZXRjaGVkOiBmYWxzZSxcbiAgYXJlX2ZpbmFsX2Nvc3RzX2NhbGN1bGF0ZWQ6IGZhbHNlLFxuICBpc19qc29uX21lcmdlX2ZpbGVfdXBkYXRlZDogZmFsc2UsXG4gIGlzX2FkZGVkX3RvX2NhcnQ6IGZhbHNlLFxuICB1cGxvYWRlZF9nZXJiZXJfbWV0YWRhdGE6IG51bGwsXG4gIGdlcmJlcl9hbmFseXNpczogbnVsbCxcbiAgYXJlX2dlcmJlcnNfZ2VuZXJhdGVkOiBmYWxzZSxcbiAgY3VycmVudF9zdGVwOiBudWxsIGFzIG51bGwgfCAodHlwZW9mIHNpbXVsYXRlU2NlbmFyaW9zKVtudW1iZXJdLFxufVxuXG5jb25zdCBlcnJvck1hcCA9IHtcbiAgYXJlX2dlcmJlcnNfZ2VuZXJhdGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJHRVJCRVJfR0VORVJBVElPTl9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkdlcmJlciBnZW5lcmF0aW9uIGZhaWxlZFwiLFxuICB9LFxuICBhcmVfZ2VyYmVyc191cGxvYWRlZDoge1xuICAgIGVycm9yX2NvZGU6IFwiR0VSQkVSX1VQTE9BRF9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkdlcmJlciB1cGxvYWQgZmFpbGVkXCIsXG4gIH0sXG4gIGlzX2dlcmJlcl9hbmFseXplZDoge1xuICAgIGVycm9yX2NvZGU6IFwiQU5BTFlaRV9HRVJCRVJfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJBbmFseXplIGdlcmJlciBmYWlsZWRcIixcbiAgfSxcbiAgaXNfYm9tX3VwbG9hZGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJCT01fVVBMT0FEX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiQm9tIHVwbG9hZCBmYWlsZWRcIixcbiAgfSxcbiAgaXNfcG5wX3VwbG9hZGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJQTlBfVVBMT0FEX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiUG5wIHVwbG9hZCBmYWlsZWRcIixcbiAgfSxcbiAgaXNfYm9tX3BucF9hbmFseXplZDoge1xuICAgIGVycm9yX2NvZGU6IFwiQU5BTFlaRV9CT01fQU5EX1BOUF9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkFuYWx5emUgYm9tIGFuZCBwbnAgZmFpbGVkXCIsXG4gIH0sXG4gIGlzX2JvbV9wYXJzaW5nX2NvbXBsZXRlOiB7XG4gICAgZXJyb3JfY29kZTogXCJCT01fUEFSU0lOR19GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkJvbSBwYXJzaW5nIGZhaWxlZFwiLFxuICB9LFxuICBhcmVfY29tcG9uZW50c19hdmFpbGFibGU6IHtcbiAgICBlcnJvcl9jb2RlOiBcIkNPTVBPTkVOVFNfQVZBSUxBQklMSVRZX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiQ29tcG9uZW50cyBhdmFpbGFiaWxpdHkgZmFpbGVkXCIsXG4gIH0sXG4gIGlzX3BhdGNoX21hcF9nZW5lcmF0ZWQ6IHtcbiAgICBlcnJvcl9jb2RlOiBcIkdFTkVSQVRFX1BBVENIX01BUF9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkdlbmVyYXRlIHBhdGNoIG1hcCBmYWlsZWRcIixcbiAgfSxcbiAgaXNfanNvbl9tZXJnZV9maWxlX2NyZWF0ZWQ6IHtcbiAgICBlcnJvcl9jb2RlOiBcIkNSRUFUSU9OX0pTT05fTUVSR0VfRklMRV9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkNyZWF0aW9uIGpzb24gbWVyZ2UgZmlsZSBmYWlsZWRcIixcbiAgfSxcbiAgaXNfZGZtX3Jlc3VsdF9nZW5lcmF0ZWQ6IHtcbiAgICBlcnJvcl9jb2RlOiBcIkdFTkVSQVRFX0RGTV9SRVNVTFRfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJHZW5lcmF0ZSBkZm0gcmVzdWx0IGZhaWxlZFwiLFxuICB9LFxuICBhcmVfZmlsZXNfZG93bmxvYWRlZDoge1xuICAgIGVycm9yX2NvZGU6IFwiRE9XTkxPQURfRklMRVNfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJEb3dubG9hZCBmaWxlcyBmYWlsZWRcIixcbiAgfSxcbiAgYXJlX3Byb2R1Y3RfY2F0ZWdvcmllc19mZXRjaGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJGRVRDSF9QUk9EVUNUX0NBVEVHT1JJRVNfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJGZXRjaCBwcm9kdWN0IGNhdGVnb3JpZXMgZmFpbGVkXCIsXG4gIH0sXG4gIGFyZV9maW5hbF9jb3N0c19jYWxjdWxhdGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJGSU5BTF9DT1NUX0NBTENVTEFUSU9OX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiRmluYWwgY29zdCBjYWxjdWxhdGlvbiBmYWlsZWRcIixcbiAgfSxcbiAgaXNfanNvbl9tZXJnZV9maWxlX3VwZGF0ZWQ6IHtcbiAgICBlcnJvcl9jb2RlOiBcIlVQREFURV9KU09OX01FUkdFX0ZJTEVfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJVcGRhdGUganNvbiBtZXJnZSBmaWxlIGZhaWxlZFwiLFxuICB9LFxuICBpc19wY2JfYWRkZWRfdG9fY2FydDoge1xuICAgIGVycm9yX2NvZGU6IFwiQUREX1BDQl9UT19DQVJUX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiQWRkIHBjYiB0byBjYXJ0IGZhaWxlZFwiLFxuICB9LFxuICBpc19hZGRlZF90b19jYXJ0OiB7XG4gICAgZXJyb3JfY29kZTogXCJBRERfVE9fQ0FSVF9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkFkZCB0byBjYXJ0IGZhaWxlZFwiLFxuICB9LFxuICBhcmVfaW5pdGlhbF9jb3N0c19jYWxjdWxhdGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJJTklUSUFMX0NPU1RfQ0FMQ1VMQVRJT05fRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJJbml0aWFsIGNvc3QgY2FsY3VsYXRpb24gZmFpbGVkXCIsXG4gIH0sXG59XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBxdWVyeVBhcmFtczogei5vYmplY3Qoe1xuICAgIG9yZGVyX2lkOiB6LnN0cmluZygpLFxuICAgIF9zaW11bGF0ZV9zY2VuYXJpbzogei5lbnVtKHNpbXVsYXRlU2NlbmFyaW9zKS5vcHRpb25hbCgpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb3JkZXI6IG9yZGVyU2NoZW1hLFxuICAgIG9yZGVyU3RhdGU6IGpsY3BjYk9yZGVyU3RhdGVTY2hlbWEsXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgb3JkZXJfaWQsIF9zaW11bGF0ZV9zY2VuYXJpbyB9ID0gcmVxLnF1ZXJ5XG5cbiAgY29uc3Qgb3JkZXIgPSBjdHguZGIuZ2V0T3JkZXJCeUlkKG9yZGVyX2lkKVxuICBpZiAoIW9yZGVyKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwib3JkZXJfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIk9yZGVyIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCB1cGRhdGVkT3JkZXJTdGF0ZSA9IHtcbiAgICAuLi5kZWZhdWx0T3JkZXJTdGF0ZSxcbiAgICBvcmRlcl9pZCxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gIH1cblxuICBpZiAoX3NpbXVsYXRlX3NjZW5hcmlvKSB7XG4gICAgY29uc3QgZXJyb3IgPSBlcnJvck1hcFtfc2ltdWxhdGVfc2NlbmFyaW9dXG4gICAgaWYgKGVycm9yKSB7XG4gICAgICBvcmRlci5lcnJvciA9IGVycm9yU2NoZW1hLnBhcnNlKGVycm9yKVxuICAgICAgb3JkZXIuaGFzX2Vycm9yID0gdHJ1ZVxuICAgICAgY3R4LmRiLnVwZGF0ZU9yZGVyKG9yZGVyX2lkLCB7IGVycm9yOiBvcmRlci5lcnJvciwgaGFzX2Vycm9yOiB0cnVlIH0pXG5cbiAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHNpbXVsYXRlU2NlbmFyaW9zLmluZGV4T2YoX3NpbXVsYXRlX3NjZW5hcmlvKVxuICAgICAgc2ltdWxhdGVTY2VuYXJpb3Muc2xpY2UoMCwgY3VycmVudEluZGV4KS5mb3JFYWNoKChzY2VuYXJpbykgPT4ge1xuICAgICAgICB1cGRhdGVkT3JkZXJTdGF0ZVtzY2VuYXJpb10gPSB0cnVlXG4gICAgICB9KVxuICAgICAgdXBkYXRlZE9yZGVyU3RhdGUuY3VycmVudF9zdGVwID0gc2ltdWxhdGVTY2VuYXJpb3NbY3VycmVudEluZGV4XVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBleGlzdGluZ1N0YXRlID0gY3R4LmRiLmdldEpsY3BjYk9yZGVyU3RhdGVzQnlPcmRlcklkKG9yZGVyX2lkKVxuICAgIGlmIChleGlzdGluZ1N0YXRlKSB7XG4gICAgICByZXR1cm4gY3R4Lmpzb24oe1xuICAgICAgICBvcmRlcixcbiAgICAgICAgb3JkZXJTdGF0ZTogZXhpc3RpbmdTdGF0ZSxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgY3R4LmRiLnVwZGF0ZUpsY3BjYk9yZGVyU3RhdGUob3JkZXJfaWQsIHVwZGF0ZWRPcmRlclN0YXRlKVxuXG4gIGNvbnN0IG9yZGVyU3RhdGUgPSBjdHguZGIuZ2V0SmxjcGNiT3JkZXJTdGF0ZXNCeU9yZGVySWQob3JkZXJfaWQpIVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb3JkZXIsXG4gICAgb3JkZXJTdGF0ZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IG9yZGVyU2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb3JkZXJzOiB6LmFycmF5KG9yZGVyU2NoZW1hKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvcmRlcnM6IGN0eC5kYi5vcmRlcnMuZmlsdGVyKChvKSA9PiBvLmFjY291bnRfaWQgPT09IGN0eC5hdXRoLmFjY291bnRfaWQpLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyBQYWNrYWdlLCBQYWNrYWdlUmVsZWFzZSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGNvbnN0IGZpbmRQYWNrYWdlUmVsZWFzZUlkID0gYXN5bmMgKFxuICBwYXJhbXM6XG4gICAgfCBzdHJpbmdcbiAgICB8IHtcbiAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBzdHJpbmdcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgcGFja2FnZV9uYW1lOiBzdHJpbmdcbiAgICAgICAgdXNlX2xhdGVzdF92ZXJzaW9uOiB0cnVlXG4gICAgICB9XG4gICAgfCB7XG4gICAgICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb246IHN0cmluZ1xuICAgICAgfVxuICAgIHwge1xuICAgICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ/OiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICAgICAgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbj86IHN0cmluZyB8IHVuZGVmaW5lZFxuICAgICAgfSxcbiAgY3R4OiB7IGRiOiBhbnkgfSxcbik6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4gPT4ge1xuICBpZiAodHlwZW9mIHBhcmFtcyA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiBmaW5kUGFja2FnZVJlbGVhc2VJZEZyb21QYWNrYWdlTmFtZVdpdGhWZXJzaW9uKHBhcmFtcywgY3R4LmRiKVxuICB9XG5cbiAgaWYgKFxuICAgIFwicGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvblwiIGluIHBhcmFtcyAmJlxuICAgIHBhcmFtcy5wYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uXG4gICkge1xuICAgIGNvbnN0IHsgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbiB9ID0gcGFyYW1zXG5cbiAgICBpZiAocGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbi5lbmRzV2l0aChcIkBsYXRlc3RcIikpIHtcbiAgICAgIGNvbnN0IFtwYWNrYWdlTmFtZV0gPSBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uLnNwbGl0KFwiQFwiKVxuICAgICAgcmV0dXJuIGZpbmRQYWNrYWdlUmVsZWFzZUlkKFxuICAgICAgICB7XG4gICAgICAgICAgcGFja2FnZV9uYW1lOiBwYWNrYWdlTmFtZSEsXG4gICAgICAgICAgdXNlX2xhdGVzdF92ZXJzaW9uOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjdHgsXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiBmaW5kUGFja2FnZVJlbGVhc2VJZEZyb21QYWNrYWdlTmFtZVdpdGhWZXJzaW9uKFxuICAgICAgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbiEsXG4gICAgICBjdHguZGIsXG4gICAgKVxuICB9XG5cbiAgaWYgKFwicGFja2FnZV9yZWxlYXNlX2lkXCIgaW4gcGFyYW1zICYmIHBhcmFtcy5wYWNrYWdlX3JlbGVhc2VfaWQpIHtcbiAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgIChwcjogUGFja2FnZVJlbGVhc2UpID0+XG4gICAgICAgIHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFyYW1zLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICApXG4gICAgaWYgKCFwYWNrYWdlUmVsZWFzZSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgcmV0dXJuIHBhcmFtcy5wYWNrYWdlX3JlbGVhc2VfaWRcbiAgfVxuXG4gIGlmIChcInBhY2thZ2VfbmFtZVwiIGluIHBhcmFtcykge1xuICAgIGNvbnN0IHsgcGFja2FnZV9uYW1lLCB1c2VfbGF0ZXN0X3ZlcnNpb24gfSA9IHBhcmFtc1xuXG4gICAgaWYgKCF1c2VfbGF0ZXN0X3ZlcnNpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcInVzZV9sYXRlc3RfdmVyc2lvbiBtdXN0IGJlIHRydWVcIilcbiAgICB9XG5cbiAgICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXMuZmluZChcbiAgICAgIChwOiBQYWNrYWdlKSA9PiBwLm5hbWUgPT09IHBhY2thZ2VfbmFtZS5yZXBsYWNlKC9eQC8sIFwiXCIpLFxuICAgIClcbiAgICBpZiAoIXBrZykge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgIChwcjogUGFja2FnZVJlbGVhc2UpID0+IHByLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIHByLmlzX2xhdGVzdCxcbiAgICApXG5cbiAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIHJldHVybiBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWRcbiAgfVxuXG4gIHJldHVybiBudWxsXG59XG5cbmV4cG9ydCBjb25zdCBmaW5kUGFja2FnZVJlbGVhc2VJZEZyb21QYWNrYWdlTmFtZVdpdGhWZXJzaW9uID0gKFxuICBwYWNrYWdlTmFtZVdpdGhWZXJzaW9uOiBzdHJpbmcsXG4gIGRiOiBhbnksXG4pOiBzdHJpbmcgfCBudWxsID0+IHtcbiAgaWYgKCFwYWNrYWdlTmFtZVdpdGhWZXJzaW9uKSByZXR1cm4gbnVsbFxuXG4gIGNvbnN0IFtwYWNrYWdlTmFtZSwgdmVyc2lvbl0gPSBwYWNrYWdlTmFtZVdpdGhWZXJzaW9uXG4gICAgLnJlcGxhY2UoL15ALywgXCJcIilcbiAgICAuc3BsaXQoXCJAXCIpXG5cbiAgY29uc3QgcGtnID0gZGIucGFja2FnZXMuZmluZCgocDogUGFja2FnZSkgPT4gcC5uYW1lID09PSBwYWNrYWdlTmFtZSlcbiAgaWYgKCFwa2cpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgbGV0IHBhY2thZ2VSZWxlYXNlXG5cbiAgaWYgKCF2ZXJzaW9uIHx8IHZlcnNpb24gPT09IFwibGF0ZXN0XCIpIHtcbiAgICBwYWNrYWdlUmVsZWFzZSA9IGRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgKHByOiBQYWNrYWdlUmVsZWFzZSkgPT4gcHIucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQgJiYgcHIuaXNfbGF0ZXN0LFxuICAgIClcbiAgfSBlbHNlIHtcbiAgICBwYWNrYWdlUmVsZWFzZSA9IGRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgKHByOiBQYWNrYWdlUmVsZWFzZSkgPT5cbiAgICAgICAgcHIucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQgJiYgcHIudmVyc2lvbiA9PT0gdmVyc2lvbixcbiAgICApXG4gIH1cblxuICBpZiAoIXBhY2thZ2VSZWxlYXNlKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIHJldHVybiBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWRcbn1cbiIsICJpbXBvcnQgKiBhcyB6dCBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyBmaW5kUGFja2FnZVJlbGVhc2VJZCB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcGFja2FnZV9yZWxlYXNlL2ZpbmQtcGFja2FnZS1yZWxlYXNlLWlkXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5jb25zdCByb3V0ZVNwZWMgPSB7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogelxuICAgIC5vYmplY3Qoe1xuICAgICAgZmlsZV9wYXRoOiB6LnN0cmluZygpLFxuICAgICAgaXNfcmVsZWFzZV90YXJiYWxsOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlZmF1bHQoZmFsc2UpLFxuICAgICAgY29udGVudF9taW1ldHlwZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgY29udGVudF90ZXh0OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBjb250ZW50X2Jhc2U2NDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBucG1fcGFja19vdXRwdXQ6IHouYW55KCkub3B0aW9uYWwoKSxcbiAgICB9KVxuICAgIC5yZWZpbmUoKHYpID0+IHtcbiAgICAgIGlmICh2LnBhY2thZ2VfcmVsZWFzZV9pZCkgcmV0dXJuIHRydWVcbiAgICAgIGlmICh2LnBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24pIHJldHVybiB0cnVlXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9LCBcIk11c3Qgc3BlY2lmeSBlaXRoZXIgcGFja2FnZV9yZWxlYXNlX2lkIG9yIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb25cIilcbiAgICAucmVmaW5lKCh2KSA9PiB7XG4gICAgICBpZiAodi5wYWNrYWdlX3JlbGVhc2VfaWQgJiYgdi5wYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uKSByZXR1cm4gZmFsc2VcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSwgXCJDYW5ub3Qgc3BlY2lmeSBib3RoIHBhY2thZ2VfcmVsZWFzZV9pZCBhbmQgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvblwiKVxuICAgIC5yZWZpbmUoKHYpID0+IHtcbiAgICAgIGlmICh2LmNvbnRlbnRfYmFzZTY0ICYmIHYuY29udGVudF90ZXh0KSByZXR1cm4gZmFsc2VcbiAgICAgIGlmICghdi5jb250ZW50X2Jhc2U2NCAmJiAhdi5jb250ZW50X3RleHQpIHJldHVybiBmYWxzZVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9LCBcIkVpdGhlciBjb250ZW50X2Jhc2U2NCBvciBjb250ZW50X3RleHQgaXMgcmVxdWlyZWRcIiksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBwYWNrYWdlX2ZpbGU6IHp0LnBhY2thZ2VGaWxlU2NoZW1hLFxuICB9KSxcbn0gYXMgY29uc3RcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyhyb3V0ZVNwZWMpKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7XG4gICAgZmlsZV9wYXRoLFxuICAgIGNvbnRlbnRfbWltZXR5cGU6IHByb3ZpZGVkQ29udGVudE1pbWV0eXBlLFxuICAgIGNvbnRlbnRfYmFzZTY0LFxuICAgIGNvbnRlbnRfdGV4dCxcbiAgICBpc19yZWxlYXNlX3RhcmJhbGwsXG4gICAgbnBtX3BhY2tfb3V0cHV0LFxuICB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgaWYgKGlzX3JlbGVhc2VfdGFyYmFsbCAmJiAhbnBtX3BhY2tfb3V0cHV0KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwibWlzc2luZ19vcHRpb25zXCIsXG4gICAgICBtZXNzYWdlOiBcIm5wbV9wYWNrX291dHB1dCBpcyByZXF1aXJlZCBmb3IgcmVsZWFzZSB0YXJiYWxsc1wiLFxuICAgIH0pXG4gIH1cblxuICBpZiAoIWlzX3JlbGVhc2VfdGFyYmFsbCAmJiBucG1fcGFja19vdXRwdXQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJpbnZhbGlkX29wdGlvbnNcIixcbiAgICAgIG1lc3NhZ2U6IFwibnBtX3BhY2tfb3V0cHV0IGlzIG9ubHkgdmFsaWQgZm9yIHJlbGVhc2UgdGFyYmFsbHNcIixcbiAgICB9KVxuICB9XG5cbiAgbGV0IHBhY2thZ2VSZWxlYXNlSWQgPSByZXEuanNvbkJvZHkucGFja2FnZV9yZWxlYXNlX2lkXG5cbiAgaWYgKCFwYWNrYWdlUmVsZWFzZUlkICYmIHJlcS5qc29uQm9keS5wYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uKSB7XG4gICAgY29uc3QgZm91bmRQYWNrYWdlUmVsZWFzZUlkID0gYXdhaXQgZmluZFBhY2thZ2VSZWxlYXNlSWQoXG4gICAgICB7IHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb246IHJlcS5qc29uQm9keS5wYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uIH0sXG4gICAgICBjdHgsXG4gICAgKVxuICAgIGlmIChmb3VuZFBhY2thZ2VSZWxlYXNlSWQpIHtcbiAgICAgIHBhY2thZ2VSZWxlYXNlSWQgPSBmb3VuZFBhY2thZ2VSZWxlYXNlSWRcbiAgICB9XG4gIH1cblxuICBpZiAoIXBhY2thZ2VSZWxlYXNlSWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gVmVyaWZ5IHRoZSBwYWNrYWdlIHJlbGVhc2UgZXhpc3RzXG4gIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgIChwcikgPT4gcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZUlkLFxuICApXG5cbiAgaWYgKCFwYWNrYWdlUmVsZWFzZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBHZXQgdGhlIHBhY2thZ2UgdG8gY2hlY2sgcGVybWlzc2lvbnNcbiAgY29uc3QgZXhpc3RpbmdQYWNrYWdlID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoXG4gICAgKHApID0+IHAucGFja2FnZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9pZCxcbiAgKVxuXG4gIGlmICghZXhpc3RpbmdQYWNrYWdlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdXNlciBoYXMgcGVybWlzc2lvbiB0byBjcmVhdGUvdXBkYXRlIHRoZSBmaWxlXG4gIGlmIChleGlzdGluZ1BhY2thZ2UuY3JlYXRvcl9hY2NvdW50X2lkICE9PSBjdHguYXV0aC5hY2NvdW50X2lkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDMsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiZm9yYmlkZGVuXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gbW9kaWZ5IGZpbGVzIGluIHRoaXMgcGFja2FnZVwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiBmaWxlIGV4aXN0c1xuICBjb25zdCBleGlzaXRpbmdGaWxlID0gY3R4LmRiLnBhY2thZ2VGaWxlcy5maW5kKFxuICAgIChwZikgPT5cbiAgICAgIHBmLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2VJZCAmJiBwZi5maWxlX3BhdGggPT09IGZpbGVfcGF0aCxcbiAgKVxuXG4gIC8vIERldGVybWluZSBjb250ZW50IG1pbWV0eXBlXG4gIGNvbnN0IGNvbnRlbnRNaW1ldHlwZSA9XG4gICAgcHJvdmlkZWRDb250ZW50TWltZXR5cGUgfHxcbiAgICAoZmlsZV9wYXRoLmVuZHNXaXRoKFwiLnRzXCIpIHx8IGZpbGVfcGF0aC5lbmRzV2l0aChcIi50c3hcIilcbiAgICAgID8gXCJ0ZXh0L3R5cGVzY3JpcHRcIlxuICAgICAgOiBudWxsKSB8fFxuICAgIChmaWxlX3BhdGguZW5kc1dpdGgoXCIuanNcIikgPyBcImFwcGxpY2F0aW9uL2phdmFzY3JpcHRcIiA6IG51bGwpIHx8XG4gICAgKGZpbGVfcGF0aC5lbmRzV2l0aChcIi5qc29uXCIpID8gXCJhcHBsaWNhdGlvbi9qc29uXCIgOiBudWxsKSB8fFxuICAgIChmaWxlX3BhdGguZW5kc1dpdGgoXCIubWRcIikgPyBcInRleHQvbWFya2Rvd25cIiA6IG51bGwpIHx8XG4gICAgKGZpbGVfcGF0aC5lbmRzV2l0aChcIi5odG1sXCIpID8gXCJ0ZXh0L2h0bWxcIiA6IG51bGwpIHx8XG4gICAgKGZpbGVfcGF0aC5lbmRzV2l0aChcIi5jc3NcIikgPyBcInRleHQvY3NzXCIgOiBudWxsKSB8fFxuICAgIFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCJcblxuICBpZiAoZXhpc2l0aW5nRmlsZSkge1xuICAgIGNvbnN0IHBhY2thZ2VfZmlsZSA9IGN0eC5kYi51cGRhdGVQYWNrYWdlRmlsZShcbiAgICAgIGV4aXNpdGluZ0ZpbGUucGFja2FnZV9maWxlX2lkLFxuICAgICAge1xuICAgICAgICBjb250ZW50X3RleHQ6XG4gICAgICAgICAgY29udGVudF90ZXh0IHx8XG4gICAgICAgICAgKGNvbnRlbnRfYmFzZTY0XG4gICAgICAgICAgICA/IEJ1ZmZlci5mcm9tKGNvbnRlbnRfYmFzZTY0LCBcImJhc2U2NFwiKS50b1N0cmluZygpXG4gICAgICAgICAgICA6IG51bGwpLFxuICAgICAgICBjb250ZW50X21pbWV0eXBlOiBjb250ZW50TWltZXR5cGUsXG4gICAgICAgIGlzX3JlbGVhc2VfdGFyYmFsbDogaXNfcmVsZWFzZV90YXJiYWxsIHx8IGZhbHNlLFxuICAgICAgICBucG1fcGFja19vdXRwdXQ6IG5wbV9wYWNrX291dHB1dCB8fCBudWxsLFxuICAgICAgfSxcbiAgICApXG5cbiAgICByZXR1cm4gY3R4Lmpzb24oe1xuICAgICAgb2s6IHRydWUsXG4gICAgICBwYWNrYWdlX2ZpbGUsXG4gICAgfSlcbiAgfVxuXG4gIGlmIChcbiAgICAhcmVxLmpzb25Cb2R5LnBhY2thZ2VfcmVsZWFzZV9pZCAmJlxuICAgICFyZXEuanNvbkJvZHkucGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvblxuICApXG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwibWlzc2luZ19vcHRpb25zXCIsXG4gICAgICBtZXNzYWdlOlxuICAgICAgICBcIk11c3Qgc3BlY2lmeSBlaXRoZXIgcGFja2FnZV9yZWxlYXNlX2lkIG9yIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb25cIixcbiAgICB9KVxuICAvLyBDcmVhdGUgdGhlIHBhY2thZ2UgZmlsZVxuICBjb25zdCBuZXdQYWNrYWdlRmlsZSA9IHtcbiAgICBwYWNrYWdlX2ZpbGVfaWQ6IGNyeXB0by5yYW5kb21VVUlEKCksXG4gICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwYWNrYWdlUmVsZWFzZUlkLFxuICAgIGZpbGVfcGF0aCxcbiAgICBjb250ZW50X3RleHQ6XG4gICAgICBjb250ZW50X3RleHQgfHxcbiAgICAgIChjb250ZW50X2Jhc2U2NFxuICAgICAgICA/IEJ1ZmZlci5mcm9tKGNvbnRlbnRfYmFzZTY0LCBcImJhc2U2NFwiKS50b1N0cmluZygpXG4gICAgICAgIDogbnVsbCksXG4gICAgY29udGVudF9taW1ldHlwZTogY29udGVudE1pbWV0eXBlLFxuICAgIGlzX2RpcmVjdG9yeTogZmFsc2UsXG4gICAgaXNfcmVsZWFzZV90YXJiYWxsOiBpc19yZWxlYXNlX3RhcmJhbGwgfHwgZmFsc2UsXG4gICAgbnBtX3BhY2tfb3V0cHV0OiBucG1fcGFja19vdXRwdXQgfHwgbnVsbCxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gIH1cblxuICAvLyBBZGQgdG8gdGhlIHRlc3QgZGF0YWJhc2VcbiAgY3R4LmRiLmFkZFBhY2thZ2VGaWxlKG5ld1BhY2thZ2VGaWxlKVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgcGFja2FnZV9maWxlOiBuZXdQYWNrYWdlRmlsZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0ICogYXMgenQgZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgZmluZFBhY2thZ2VSZWxlYXNlSWQgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3BhY2thZ2VfcmVsZWFzZS9maW5kLXBhY2thZ2UtcmVsZWFzZS1pZFwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuY29uc3Qgcm91dGVTcGVjID0ge1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAganNvbkJvZHk6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIGZpbGVfcGF0aDogei5zdHJpbmcoKSxcbiAgICAgIGlzX3JlbGVhc2VfdGFyYmFsbDogei5ib29sZWFuKCkub3B0aW9uYWwoKS5kZWZhdWx0KGZhbHNlKSxcbiAgICAgIGNvbnRlbnRfbWltZXR5cGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIGNvbnRlbnRfdGV4dDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgY29udGVudF9iYXNlNjQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgbnBtX3BhY2tfb3V0cHV0OiB6LmFueSgpLm9wdGlvbmFsKCksXG4gICAgfSlcbiAgICAucmVmaW5lKCh2KSA9PiB7XG4gICAgICBpZiAodi5wYWNrYWdlX3JlbGVhc2VfaWQpIHJldHVybiB0cnVlXG4gICAgICBpZiAodi5wYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uKSByZXR1cm4gdHJ1ZVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSwgXCJNdXN0IHNwZWNpZnkgZWl0aGVyIHBhY2thZ2VfcmVsZWFzZV9pZCBvciBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uXCIpXG4gICAgLnJlZmluZSgodikgPT4ge1xuICAgICAgaWYgKHYucGFja2FnZV9yZWxlYXNlX2lkICYmIHYucGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbikgcmV0dXJuIGZhbHNlXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0sIFwiQ2Fubm90IHNwZWNpZnkgYm90aCBwYWNrYWdlX3JlbGVhc2VfaWQgYW5kIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb25cIilcbiAgICAucmVmaW5lKCh2KSA9PiB7XG4gICAgICBpZiAodi5jb250ZW50X2Jhc2U2NCAmJiB2LmNvbnRlbnRfdGV4dCkgcmV0dXJuIGZhbHNlXG4gICAgICBpZiAoIXYuY29udGVudF9iYXNlNjQgJiYgIXYuY29udGVudF90ZXh0KSByZXR1cm4gZmFsc2VcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSwgXCJFaXRoZXIgY29udGVudF9iYXNlNjQgb3IgY29udGVudF90ZXh0IGlzIHJlcXVpcmVkXCIpLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgcGFja2FnZV9maWxlOiB6dC5wYWNrYWdlRmlsZVNjaGVtYSxcbiAgfSksXG59IGFzIGNvbnN0XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMocm91dGVTcGVjKShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3Qge1xuICAgIGZpbGVfcGF0aCxcbiAgICBjb250ZW50X21pbWV0eXBlOiBwcm92aWRlZENvbnRlbnRNaW1ldHlwZSxcbiAgICBjb250ZW50X2Jhc2U2NCxcbiAgICBjb250ZW50X3RleHQsXG4gICAgaXNfcmVsZWFzZV90YXJiYWxsLFxuICAgIG5wbV9wYWNrX291dHB1dCxcbiAgfSA9IHJlcS5qc29uQm9keVxuXG4gIGlmIChpc19yZWxlYXNlX3RhcmJhbGwgJiYgIW5wbV9wYWNrX291dHB1dCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm1pc3Npbmdfb3B0aW9uc1wiLFxuICAgICAgbWVzc2FnZTogXCJucG1fcGFja19vdXRwdXQgaXMgcmVxdWlyZWQgZm9yIHJlbGVhc2UgdGFyYmFsbHNcIixcbiAgICB9KVxuICB9XG5cbiAgaWYgKCFpc19yZWxlYXNlX3RhcmJhbGwgJiYgbnBtX3BhY2tfb3V0cHV0KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiaW52YWxpZF9vcHRpb25zXCIsXG4gICAgICBtZXNzYWdlOiBcIm5wbV9wYWNrX291dHB1dCBpcyBvbmx5IHZhbGlkIGZvciByZWxlYXNlIHRhcmJhbGxzXCIsXG4gICAgfSlcbiAgfVxuXG4gIGxldCBwYWNrYWdlUmVsZWFzZUlkID0gcmVxLmpzb25Cb2R5LnBhY2thZ2VfcmVsZWFzZV9pZFxuXG4gIGlmICghcGFja2FnZVJlbGVhc2VJZCAmJiByZXEuanNvbkJvZHkucGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbikge1xuICAgIGNvbnN0IGZvdW5kUGFja2FnZVJlbGVhc2VJZCA9IGF3YWl0IGZpbmRQYWNrYWdlUmVsZWFzZUlkKFxuICAgICAgcmVxLmpzb25Cb2R5LnBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24sXG4gICAgICBjdHgsXG4gICAgKVxuICAgIGlmIChmb3VuZFBhY2thZ2VSZWxlYXNlSWQpIHtcbiAgICAgIHBhY2thZ2VSZWxlYXNlSWQgPSBmb3VuZFBhY2thZ2VSZWxlYXNlSWRcbiAgICB9XG4gIH1cblxuICBpZiAoIXBhY2thZ2VSZWxlYXNlSWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gVmVyaWZ5IHRoZSBwYWNrYWdlIHJlbGVhc2UgZXhpc3RzXG4gIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgIChwcikgPT4gcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZUlkLFxuICApXG5cbiAgaWYgKCFwYWNrYWdlUmVsZWFzZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBEZXRlcm1pbmUgY29udGVudCBtaW1ldHlwZVxuICBjb25zdCBjb250ZW50TWltZXR5cGUgPVxuICAgIHByb3ZpZGVkQ29udGVudE1pbWV0eXBlIHx8XG4gICAgKGZpbGVfcGF0aC5lbmRzV2l0aChcIi50c1wiKSB8fCBmaWxlX3BhdGguZW5kc1dpdGgoXCIudHN4XCIpXG4gICAgICA/IFwidGV4dC90eXBlc2NyaXB0XCJcbiAgICAgIDogbnVsbCkgfHxcbiAgICAoZmlsZV9wYXRoLmVuZHNXaXRoKFwiLmpzXCIpID8gXCJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0XCIgOiBudWxsKSB8fFxuICAgIChmaWxlX3BhdGguZW5kc1dpdGgoXCIuanNvblwiKSA/IFwiYXBwbGljYXRpb24vanNvblwiIDogbnVsbCkgfHxcbiAgICAoZmlsZV9wYXRoLmVuZHNXaXRoKFwiLm1kXCIpID8gXCJ0ZXh0L21hcmtkb3duXCIgOiBudWxsKSB8fFxuICAgIChmaWxlX3BhdGguZW5kc1dpdGgoXCIuaHRtbFwiKSA/IFwidGV4dC9odG1sXCIgOiBudWxsKSB8fFxuICAgIChmaWxlX3BhdGguZW5kc1dpdGgoXCIuY3NzXCIpID8gXCJ0ZXh0L2Nzc1wiIDogbnVsbCkgfHxcbiAgICBcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiXG5cbiAgLy8gQ3JlYXRlIHRoZSBwYWNrYWdlIGZpbGVcbiAgY29uc3QgbmV3UGFja2FnZUZpbGUgPSB7XG4gICAgcGFja2FnZV9maWxlX2lkOiBjcnlwdG8ucmFuZG9tVVVJRCgpLFxuICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcGFja2FnZVJlbGVhc2VJZCxcbiAgICBmaWxlX3BhdGgsXG4gICAgY29udGVudF90ZXh0OlxuICAgICAgY29udGVudF90ZXh0IHx8XG4gICAgICAoY29udGVudF9iYXNlNjRcbiAgICAgICAgPyBCdWZmZXIuZnJvbShjb250ZW50X2Jhc2U2NCwgXCJiYXNlNjRcIikudG9TdHJpbmcoKVxuICAgICAgICA6IG51bGwpLFxuICAgIGNvbnRlbnRfbWltZXR5cGU6IGNvbnRlbnRNaW1ldHlwZSxcbiAgICBpc19kaXJlY3Rvcnk6IGZhbHNlLFxuICAgIGlzX3JlbGVhc2VfdGFyYmFsbDogaXNfcmVsZWFzZV90YXJiYWxsIHx8IGZhbHNlLFxuICAgIG5wbV9wYWNrX291dHB1dDogbnBtX3BhY2tfb3V0cHV0IHx8IG51bGwsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICB9XG5cbiAgLy8gQWRkIHRvIHRoZSB0ZXN0IGRhdGFiYXNlXG4gIGN0eC5kYi5hZGRQYWNrYWdlRmlsZShuZXdQYWNrYWdlRmlsZSlcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICAgIHBhY2thZ2VfZmlsZTogbmV3UGFja2FnZUZpbGUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBmaW5kUGFja2FnZVJlbGVhc2VJZCB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcGFja2FnZV9yZWxlYXNlL2ZpbmQtcGFja2FnZS1yZWxlYXNlLWlkXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogelxuICAgIC5vYmplY3Qoe1xuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBmaWxlX3BhdGg6IHouc3RyaW5nKCksXG4gICAgfSlcbiAgICAucmVmaW5lKCh2KSA9PiB7XG4gICAgICBpZiAodi5wYWNrYWdlX3JlbGVhc2VfaWQpIHJldHVybiB0cnVlXG4gICAgICBpZiAodi5wYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uKSByZXR1cm4gdHJ1ZVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSwgXCJNdXN0IHNwZWNpZnkgZWl0aGVyIHBhY2thZ2VfcmVsZWFzZV9pZCBvciBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uXCIpXG4gICAgLnJlZmluZSgodikgPT4ge1xuICAgICAgaWYgKHYucGFja2FnZV9yZWxlYXNlX2lkICYmIHYucGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbikgcmV0dXJuIGZhbHNlXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0sIFwiQ2Fubm90IHNwZWNpZnkgYm90aCBwYWNrYWdlX3JlbGVhc2VfaWQgYW5kIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb25cIiksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBmaWxlX3BhdGggfSA9IHJlcS5qc29uQm9keVxuXG4gIGxldCBwYWNrYWdlUmVsZWFzZUlkID0gcmVxLmpzb25Cb2R5LnBhY2thZ2VfcmVsZWFzZV9pZFxuXG4gIGlmICghcGFja2FnZVJlbGVhc2VJZCAmJiByZXEuanNvbkJvZHkucGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbikge1xuICAgIGNvbnN0IGZvdW5kUGFja2FnZVJlbGVhc2VJZCA9IGF3YWl0IGZpbmRQYWNrYWdlUmVsZWFzZUlkKFxuICAgICAgcmVxLmpzb25Cb2R5LnBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24sXG4gICAgICBjdHgsXG4gICAgKVxuICAgIGlmIChmb3VuZFBhY2thZ2VSZWxlYXNlSWQpIHtcbiAgICAgIHBhY2thZ2VSZWxlYXNlSWQgPSBmb3VuZFBhY2thZ2VSZWxlYXNlSWRcbiAgICB9XG4gIH1cblxuICBpZiAoIXBhY2thZ2VSZWxlYXNlSWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gR2V0IHRoZSBwYWNrYWdlIHJlbGVhc2UgdG8gY2hlY2sgcGVybWlzc2lvbnNcbiAgY29uc3QgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgKHByKSA9PiBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlSWQsXG4gIClcblxuICBpZiAoIXBhY2thZ2VSZWxlYXNlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIEdldCB0aGUgcGFja2FnZSB0byBjaGVjayBwZXJtaXNzaW9uc1xuICBjb25zdCBleGlzdGluZ3BhY2thZ2UgPSBjdHguZGIucGFja2FnZXMuZmluZChcbiAgICAocCkgPT4gcC5wYWNrYWdlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX2lkLFxuICApXG5cbiAgaWYgKCFleGlzdGluZ3BhY2thZ2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiB1c2VyIGhhcyBwZXJtaXNzaW9uIHRvIGRlbGV0ZSB0aGUgZmlsZVxuICBpZiAoZXhpc3RpbmdwYWNrYWdlLmNyZWF0b3JfYWNjb3VudF9pZCAhPT0gY3R4LmF1dGguYWNjb3VudF9pZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAzLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImZvcmJpZGRlblwiLFxuICAgICAgbWVzc2FnZTogXCJZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGRlbGV0ZSBmaWxlcyBpbiB0aGlzIHBhY2thZ2VcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gRmluZCB0aGUgZmlsZVxuICBjb25zdCBwYWNrYWdlRmlsZSA9IGN0eC5kYi5wYWNrYWdlRmlsZXMuZmluZChcbiAgICAoZikgPT5cbiAgICAgIGYuZmlsZV9wYXRoID09PSBmaWxlX3BhdGggJiYgZi5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlSWQsXG4gIClcblxuICBpZiAoIXBhY2thZ2VGaWxlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiZmlsZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBmaWxlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBEZWxldGUgdGhlIGZpbGUgdXNpbmcgZGVsZXRlUGFja2FnZUZpbGUgbWV0aG9kXG4gIGNvbnN0IGRlbGV0ZWQgPSBjdHguZGIuZGVsZXRlUGFja2FnZUZpbGUocGFja2FnZUZpbGUucGFja2FnZV9maWxlX2lkKVxuXG4gIGlmICghZGVsZXRlZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNTAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImZpbGVfZGVsZXRpb25fZmFpbGVkXCIsXG4gICAgICBtZXNzYWdlOiBcIkZhaWxlZCB0byBkZWxldGUgcGFja2FnZSBmaWxlXCIsXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IE5vdEZvdW5kRXJyb3IgfSBmcm9tIFwid2ludGVyc3BlYy9taWRkbGV3YXJlXCJcbmltcG9ydCAqIGFzIFpUIGZyb20gXCIuLi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgbm9ybWFsaXplUHJvamVjdEZpbGVQYXRoIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL3V0aWxzL25vcm1hbGl6ZVByb2plY3RGaWxlUGF0aFwiXG5leHBvcnQgY29uc3QgZ2V0UGFja2FnZUZpbGVJZEZyb21GaWxlRGVzY3JpcHRvciA9IGFzeW5jIChcbiAgZGVzY3JpcHRvcjpcbiAgICB8IHsgcGFja2FnZV9maWxlX2lkOiBzdHJpbmcgfVxuICAgIHwgeyBwYWNrYWdlX3JlbGVhc2VfaWQ6IHN0cmluZzsgZmlsZV9wYXRoOiBzdHJpbmcgfVxuICAgIHwgeyBwYWNrYWdlX2lkOiBzdHJpbmc7IHZlcnNpb24/OiBzdHJpbmc7IGZpbGVfcGF0aDogc3RyaW5nIH1cbiAgICB8IHsgcGFja2FnZV9uYW1lOiBzdHJpbmc7IHZlcnNpb24/OiBzdHJpbmc7IGZpbGVfcGF0aDogc3RyaW5nIH1cbiAgICB8IHsgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbjogc3RyaW5nOyBmaWxlX3BhdGg6IHN0cmluZyB9LFxuICBjdHg6IHsgZGI6IGFueSB9LFxuKTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcbiAgaWYgKFwicGFja2FnZV9maWxlX2lkXCIgaW4gZGVzY3JpcHRvcikge1xuICAgIGNvbnN0IHBhY2thZ2VGaWxlID0gY3R4LmRiLnBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKHBmOiBaVC5QYWNrYWdlRmlsZSkgPT4gcGYucGFja2FnZV9maWxlX2lkID09PSBkZXNjcmlwdG9yLnBhY2thZ2VfZmlsZV9pZCxcbiAgICApXG5cbiAgICBpZiAoIXBhY2thZ2VGaWxlKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihcIlBhY2thZ2UgZmlsZSBub3QgZm91bmRcIilcbiAgICB9XG5cbiAgICByZXR1cm4gZGVzY3JpcHRvci5wYWNrYWdlX2ZpbGVfaWRcbiAgfVxuXG4gIGlmIChcInBhY2thZ2VfcmVsZWFzZV9pZFwiIGluIGRlc2NyaXB0b3IpIHtcbiAgICBjb25zdCB7IHBhY2thZ2VfcmVsZWFzZV9pZCwgZmlsZV9wYXRoIH0gPSBkZXNjcmlwdG9yXG4gICAgY29uc3QgcGFja2FnZUZpbGUgPSBjdHguZGIucGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAocGY6IFpULlBhY2thZ2VGaWxlKSA9PlxuICAgICAgICBwZi5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VfcmVsZWFzZV9pZCAmJlxuICAgICAgICBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGgocGYuZmlsZV9wYXRoKSA9PT1cbiAgICAgICAgICBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGgoZmlsZV9wYXRoKSxcbiAgICApXG5cbiAgICBpZiAoIXBhY2thZ2VGaWxlKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihcIlBhY2thZ2UgZmlsZSBub3QgZm91bmRcIilcbiAgICB9XG5cbiAgICByZXR1cm4gcGFja2FnZUZpbGUucGFja2FnZV9maWxlX2lkXG4gIH1cblxuICBpZiAoXCJwYWNrYWdlX2lkXCIgaW4gZGVzY3JpcHRvcikge1xuICAgIGNvbnN0IHsgcGFja2FnZV9pZCwgdmVyc2lvbiwgZmlsZV9wYXRoIH0gPSBkZXNjcmlwdG9yXG5cbiAgICAvLyBWZXJpZnkgcGFja2FnZSBleGlzdHNcbiAgICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXMuZmluZChcbiAgICAgIChwOiBaVC5QYWNrYWdlKSA9PiBwLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VfaWQsXG4gICAgKVxuICAgIGlmICghcGtnKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihcIlBhY2thZ2Ugbm90IGZvdW5kXCIpXG4gICAgfVxuXG4gICAgLy8gRmluZCB0aGUgcGFja2FnZSByZWxlYXNlXG4gICAgbGV0IHBhY2thZ2VSZWxlYXNlXG4gICAgaWYgKHZlcnNpb24pIHtcbiAgICAgIHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAocHI6IFpULlBhY2thZ2VSZWxlYXNlKSA9PlxuICAgICAgICAgIHByLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VfaWQgJiYgcHIudmVyc2lvbiA9PT0gdmVyc2lvbixcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAgIChwcjogWlQuUGFja2FnZVJlbGVhc2UpID0+IHByLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VfaWQgJiYgcHIuaXNfbGF0ZXN0LFxuICAgICAgKVxuICAgIH1cblxuICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHtcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKFwiUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZFwiKVxuICAgIH1cblxuICAgIC8vIEZpbmQgdGhlIGZpbGVcbiAgICBjb25zdCBwYWNrYWdlRmlsZSA9IGN0eC5kYi5wYWNrYWdlRmlsZXMuZmluZChcbiAgICAgIChwZjogWlQuUGFja2FnZUZpbGUpID0+XG4gICAgICAgIHBmLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkICYmXG4gICAgICAgIG5vcm1hbGl6ZVByb2plY3RGaWxlUGF0aChwZi5maWxlX3BhdGgpID09PVxuICAgICAgICAgIG5vcm1hbGl6ZVByb2plY3RGaWxlUGF0aChmaWxlX3BhdGgpLFxuICAgIClcblxuICAgIGlmICghcGFja2FnZUZpbGUpIHtcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKFwiUGFja2FnZSBmaWxlIG5vdCBmb3VuZFwiKVxuICAgIH1cblxuICAgIHJldHVybiBwYWNrYWdlRmlsZS5wYWNrYWdlX2ZpbGVfaWRcbiAgfVxuXG4gIGlmIChcInBhY2thZ2VfbmFtZVwiIGluIGRlc2NyaXB0b3IpIHtcbiAgICBjb25zdCB7IHBhY2thZ2VfbmFtZSwgdmVyc2lvbiwgZmlsZV9wYXRoIH0gPSBkZXNjcmlwdG9yXG5cbiAgICAvLyBGaW5kIHRoZSBwYWNrYWdlIGZpcnN0XG4gICAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHA6IFpULlBhY2thZ2UpID0+IHAubmFtZSA9PT0gcGFja2FnZV9uYW1lKVxuICAgIGlmICghcGtnKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihgUGFja2FnZSBub3QgZm91bmQ6ICR7cGFja2FnZV9uYW1lfWApXG4gICAgfVxuXG4gICAgLy8gRmluZCB0aGUgcGFja2FnZSByZWxlYXNlXG4gICAgbGV0IHBhY2thZ2VSZWxlYXNlXG4gICAgaWYgKHZlcnNpb24pIHtcbiAgICAgIHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAocHI6IFpULlBhY2thZ2VSZWxlYXNlKSA9PlxuICAgICAgICAgIHByLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIHByLnZlcnNpb24gPT09IHZlcnNpb24sXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAocHI6IFpULlBhY2thZ2VSZWxlYXNlKSA9PlxuICAgICAgICAgIHByLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIHByLmlzX2xhdGVzdCxcbiAgICAgIClcbiAgICB9XG5cbiAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIilcbiAgICB9XG5cbiAgICAvLyBGaW5kIHRoZSBmaWxlXG4gICAgY29uc3QgcGFja2FnZUZpbGUgPSBjdHguZGIucGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAocGY6IFpULlBhY2thZ2VGaWxlKSA9PlxuICAgICAgICBwZi5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCAmJlxuICAgICAgICBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGgocGYuZmlsZV9wYXRoKSA9PT1cbiAgICAgICAgICBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGgoZmlsZV9wYXRoKSxcbiAgICApXG5cbiAgICBpZiAoIXBhY2thZ2VGaWxlKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihcIlBhY2thZ2UgZmlsZSBub3QgZm91bmRcIilcbiAgICB9XG5cbiAgICByZXR1cm4gcGFja2FnZUZpbGUucGFja2FnZV9maWxlX2lkXG4gIH1cblxuICBpZiAoXCJwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uXCIgaW4gZGVzY3JpcHRvcikge1xuICAgIGNvbnN0IHsgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbiwgZmlsZV9wYXRoIH0gPSBkZXNjcmlwdG9yXG4gICAgY29uc3QgcGFja2FnZU5hbWUgPSBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uLnNwbGl0KFwiQFwiKVsxXVxuICAgIGNvbnN0IHZlcnNpb24gPSBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uLnNwbGl0KFwiQFwiKVsyXVxuXG4gICAgLy8gRmluZCB0aGUgcGFja2FnZVxuICAgIGNvbnN0IHBrZyA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKChwOiBaVC5QYWNrYWdlKSA9PiBwLm5hbWUgPT09IHBhY2thZ2VOYW1lKVxuICAgIGlmICghcGtnKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihgUGFja2FnZSBub3QgZm91bmQ6ICR7cGFja2FnZU5hbWV9YClcbiAgICB9XG5cbiAgICAvLyBGaW5kIHRoZSBwYWNrYWdlIHJlbGVhc2VcbiAgICBsZXQgcGFja2FnZVJlbGVhc2VcbiAgICBpZiAoIXZlcnNpb24gfHwgdmVyc2lvbiA9PT0gXCJsYXRlc3RcIikge1xuICAgICAgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAgIChwcjogWlQuUGFja2FnZVJlbGVhc2UpID0+XG4gICAgICAgICAgcHIucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQgJiYgcHIuaXNfbGF0ZXN0LFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBwYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgICAgKHByOiBaVC5QYWNrYWdlUmVsZWFzZSkgPT5cbiAgICAgICAgICBwci5wYWNrYWdlX2lkID09PSBwa2cucGFja2FnZV9pZCAmJiBwci52ZXJzaW9uID09PSB2ZXJzaW9uLFxuICAgICAgKVxuICAgIH1cblxuICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHtcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKFxuICAgICAgICBgUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZCBmb3IgdmVyc2lvbjogJHt2ZXJzaW9uIHx8IFwibGF0ZXN0XCJ9YCxcbiAgICAgIClcbiAgICB9XG5cbiAgICAvLyBGaW5kIHRoZSBmaWxlXG4gICAgY29uc3QgcGFja2FnZUZpbGUgPSBjdHguZGIucGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAocGY6IFpULlBhY2thZ2VGaWxlKSA9PlxuICAgICAgICBwZi5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCAmJlxuICAgICAgICBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGgocGYuZmlsZV9wYXRoKSA9PT1cbiAgICAgICAgICBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGgoZmlsZV9wYXRoKSxcbiAgICApXG5cbiAgICBpZiAoIXBhY2thZ2VGaWxlKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihgUGFja2FnZSBmaWxlIG5vdCBmb3VuZDogJHtmaWxlX3BhdGh9YClcbiAgICB9XG5cbiAgICByZXR1cm4gcGFja2FnZUZpbGUucGFja2FnZV9maWxlX2lkXG4gIH1cblxuICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihcIkludmFsaWQgcGFja2FnZSBmaWxlIGRlc2NyaXB0b3JcIilcbn1cbiIsICJjb25zdCBSRVNUUklDVEVEX0RJUlMgPSBbXCIvbm9kZV9tb2R1bGVzL1wiLCBcIi9kaXN0L1wiLCBcIi8uZ2l0L1wiXVxuXG4vKipcbiAqIEEgbm9ybWFsaXplZCBwcm9qZWN0IHBhdGggYWx3YXlzIHN0YXJ0cyB3aXRoIFwiLi9cIiBhbmQgbmV2ZXIgZW5kcyB3aXRoIGEgc2xhc2guXG4gKiBJdCBoYXMgbm8gYmFja3dhcmRzIHNsYXNoZXMgYW5kIG5vIGRvdWJsZSBzbGFzaGVzLiBJdCBkb2VzIG5vdCBnbyB0byBwYXJlbnRcbiAqIGRpcmVjdG9yaWVzLiBJdCBpcyBub3QgYSBkaXJlY3RvcnkgKG11c3QgaGF2ZSBhIGZpbGUgZXh0ZW5zaW9uKVxuICpcbiAqIEdPT0Q6XG4gKiAgLSBzcmMvaW5kZXgudHNcbiAqICAtIFJFQURNRS5tZFxuICpcbiAqIEJBRDpcbiAqIC0gLi9SRUFETUUubWRcbiAqIC0gLi9zcmMvaW5kZXgudHNcbiAqIC0gc3JjXFxpbmRleC50c1xuICogLSAuLi9SRUFETUUubWRcbiAqIC0gLi9zcmMvXG4gKiAtIC4vc3JjXG4gKlxuICogQWRkaXRpb25hbGx5LCB0aHJvdyBvbiBkaXJlY3RvcmllcyB0aGF0IHNob3VsZCBuZXZlciBiZSBpbmNsdWRlZCwgZS5nLlxuICogLSBub2RlX21vZHVsZXNcbiAqIC0gZGlzdFxuICogLSAuZ2l0XG4gKi9cbmV4cG9ydCBjb25zdCBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGhBbmRWYWxpZGF0ZSA9IChyYXdQYXRoOiBzdHJpbmcpID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGgocmF3UGF0aClcblxuICBpZiAobm9ybWFsaXplZFBhdGguaW5jbHVkZXMoXCIuLi9cIikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBcIkludmFsaWQgcHJvamVjdCBmaWxlIHBhdGguIFBhcmVudCBkaXJlY3RvcmllcyBhcmUgbm90IGFsbG93ZWQuXCIsXG4gICAgKVxuICB9XG5cbiAgaWYgKFJFU1RSSUNURURfRElSUy5zb21lKChkaXIpID0+IG5vcm1hbGl6ZWRQYXRoLmluY2x1ZGVzKGRpcikpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEludmFsaWQgcHJvamVjdCBmaWxlIHBhdGguIFJlc3RyaWN0ZWQgZGlyZWN0b3JpZXMgKCR7UkVTVFJJQ1RFRF9ESVJTLm1hcChcbiAgICAgICAgKHJkKSA9PiByZC5zbGljZSgxLCAtMSksXG4gICAgICApLmpvaW4oXCIsIFwiKX0pIGFyZSBub3QgYWxsb3dlZC5gLFxuICAgIClcbiAgfVxuXG4gIGlmICghbm9ybWFsaXplZFBhdGguaW5jbHVkZXMoXCIuXCIpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEludmFsaWQgcHJvamVjdCBmaWxlIHBhdGguIE11c3QgaGF2ZSBhIGZpbGUgZXh0ZW5zaW9uLiBHaXZlbiBcIiR7cmF3UGF0aH1cImAsXG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIG5vcm1hbGl6ZWRQYXRoXG59XG5cbmV4cG9ydCBjb25zdCBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGggPSAocmF3UGF0aDogc3RyaW5nKSA9PiB7XG4gIGxldCBub3JtYWxpemVkUGF0aCA9IHJhd1BhdGgudHJpbSgpIC8vIFJlbW92ZSBsZWFkaW5nL3RyYWlsaW5nIHdoaXRlc3BhY2VcbiAgbm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVkUGF0aC5yZXBsYWNlKC9cXC8rL2csIFwiL1wiKSAvLyBSZXBsYWNlIG11bHRpcGxlIGNvbnNlY3V0aXZlIHNsYXNoZXMgd2l0aCBhIHNpbmdsZSBzbGFzaFxuICBub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZWRQYXRoLnJlcGxhY2UoL15cXC5cXC8vLCBcIlwiKSAvLyBSZW1vdmUgbGVhZGluZyBcIi4vXCJcbiAgbm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVkUGF0aC5yZXBsYWNlKC9cXC8kLywgXCJcIikgLy8gUmVtb3ZlIHRyYWlsaW5nIHNsYXNoXG4gIG5vcm1hbGl6ZWRQYXRoID0gbm9ybWFsaXplZFBhdGgucmVwbGFjZSgvXFxcXC9nLCBcIi9cIikgLy8gUmVwbGFjZSBiYWNrc2xhc2hlcyB3aXRoIGZvcndhcmQgc2xhc2hlc1xuICBub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZWRQYXRoLnJlcGxhY2UoL15cXC8vLCBcIlwiKSAvLyBSZW1vdmUgbGVhZGluZyBcIi9cIlxuXG4gIHJldHVybiBub3JtYWxpemVkUGF0aFxufVxuIiwgImltcG9ydCB7IGdldFBhY2thZ2VGaWxlSWRGcm9tRmlsZURlc2NyaXB0b3IgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3BhY2thZ2VfZmlsZS9nZXQtcGFja2FnZS1maWxlLWlkLWZyb20tZmlsZS1kZXNjcmlwdG9yXCJcbmltcG9ydCB7IGZpbmRQYWNrYWdlUmVsZWFzZUlkIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9wYWNrYWdlX3JlbGVhc2UvZmluZC1wYWNrYWdlLXJlbGVhc2UtaWRcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmNvbnN0IHJvdXRlU3BlYyA9IHtcbiAgbWV0aG9kczogW1wiR0VUXCIsIFwiUE9TVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIHF1ZXJ5UGFyYW1zOiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBwYWNrYWdlX2ZpbGVfaWQ6IHouc3RyaW5nKCksXG4gICAgfSlcbiAgICAub3IoXG4gICAgICB6Lm9iamVjdCh7XG4gICAgICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb246IHouc3RyaW5nKCksXG4gICAgICAgIGZpbGVfcGF0aDogei5zdHJpbmcoKSxcbiAgICAgIH0pLFxuICAgICksXG4gIGpzb25SZXNwb25zZTogei5hbnkoKSwgLy8gVXNpbmcgYW55IGJlY2F1c2Ugd2UncmUgcmV0dXJuaW5nIGJpbmFyeSBkYXRhXG59IGFzIGNvbnN0XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMocm91dGVTcGVjKShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgbGV0IHBhY2thZ2VGaWxlSWQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBjb25zdCBwYXJhbXMgPSByZXEucXVlcnlcblxuICBpZiAoXCJwYWNrYWdlX2ZpbGVfaWRcIiBpbiBwYXJhbXMpIHtcbiAgICBwYWNrYWdlRmlsZUlkID0gcGFyYW1zLnBhY2thZ2VfZmlsZV9pZFxuICB9IGVsc2UgaWYgKFwicGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvblwiIGluIHBhcmFtcykge1xuICAgIGNvbnN0IHsgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbiwgZmlsZV9wYXRoIH0gPSBwYXJhbXNcblxuICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlSWQgPSBhd2FpdCBmaW5kUGFja2FnZVJlbGVhc2VJZChcbiAgICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24sXG4gICAgICBjdHgsXG4gICAgKVxuXG4gICAgaWYgKCFwYWNrYWdlUmVsZWFzZUlkKSB7XG4gICAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgICBlcnJvcl9jb2RlOiBcIm5vdF9mb3VuZFwiLFxuICAgICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHBhY2thZ2VGaWxlSWQgPSBhd2FpdCBnZXRQYWNrYWdlRmlsZUlkRnJvbUZpbGVEZXNjcmlwdG9yKFxuICAgICAgICB7XG4gICAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwYWNrYWdlUmVsZWFzZUlkLFxuICAgICAgICAgIGZpbGVfcGF0aDogZmlsZV9wYXRoLFxuICAgICAgICB9LFxuICAgICAgICBjdHgsXG4gICAgICApXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwibm90X2ZvdW5kXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBmaWxlIG5vdCBmb3VuZFwiLFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBpZiAoIXBhY2thZ2VGaWxlSWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJiYWRfcmVxdWVzdFwiLFxuICAgICAgbWVzc2FnZTogXCJDb3VsZCBub3QgZGV0ZXJtaW5lIHBhY2thZ2VfZmlsZV9pZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBwYWNrYWdlRmlsZSA9IGN0eC5kYi5wYWNrYWdlRmlsZXMuZmluZChcbiAgICAocGYpID0+IHBmLnBhY2thZ2VfZmlsZV9pZCA9PT0gcGFja2FnZUZpbGVJZCxcbiAgKVxuXG4gIGlmICghcGFja2FnZUZpbGUpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBmaWxlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBjb250ZW50VHlwZSA9IFwidGV4dC9wbGFpblwiXG5cbiAgY29uc3QgaGVhZGVycyA9IHtcbiAgICBcIkNvbnRlbnQtVHlwZVwiOiBjb250ZW50VHlwZSxcbiAgICBcIkNvbnRlbnQtRGlzcG9zaXRpb25cIjogYGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiJHtwYWNrYWdlRmlsZS5maWxlX3BhdGguc3BsaXQoXCIvXCIpLnBvcCgpfVwiYCxcbiAgICBcIkNhY2hlLUNvbnRyb2xcIjogXCJwdWJsaWMsIG1heC1hZ2U9ODY0MDAsIHN0YWxlLXdoaWxlLXJldmFsaWRhdGU9NjA0ODAwXCIsXG4gICAgRXhwaXJlczogbmV3IERhdGUoRGF0ZS5ub3coKSArIDg2NDAwMDAwKS50b1VUQ1N0cmluZygpLFxuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXNwb25zZShwYWNrYWdlRmlsZS5jb250ZW50X3RleHQsIHsgaGVhZGVycyB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCAqIGFzIFpUIGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IGdldFBhY2thZ2VGaWxlSWRGcm9tRmlsZURlc2NyaXB0b3IgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3BhY2thZ2VfZmlsZS9nZXQtcGFja2FnZS1maWxlLWlkLWZyb20tZmlsZS1kZXNjcmlwdG9yXCJcblxuY29uc3Qgcm91dGVTcGVjID0ge1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAganNvbkJvZHk6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIHBhY2thZ2VfZmlsZV9pZDogei5zdHJpbmcoKSxcbiAgICB9KVxuICAgIC5vcihcbiAgICAgIHoub2JqZWN0KHtcbiAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLFxuICAgICAgICBmaWxlX3BhdGg6IHouc3RyaW5nKCksXG4gICAgICB9KSxcbiAgICApXG4gICAgLm9yKFxuICAgICAgei5vYmplY3Qoe1xuICAgICAgICBwYWNrYWdlX2lkOiB6LnN0cmluZygpLFxuICAgICAgICB2ZXJzaW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICAgIGZpbGVfcGF0aDogei5zdHJpbmcoKSxcbiAgICAgIH0pLFxuICAgIClcbiAgICAub3IoXG4gICAgICB6Lm9iamVjdCh7XG4gICAgICAgIHBhY2thZ2VfbmFtZTogei5zdHJpbmcoKSxcbiAgICAgICAgdmVyc2lvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICBmaWxlX3BhdGg6IHouc3RyaW5nKCksXG4gICAgICB9KSxcbiAgICApXG4gICAgLm9yKFxuICAgICAgei5vYmplY3Qoe1xuICAgICAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uOiB6LnN0cmluZygpLFxuICAgICAgICBmaWxlX3BhdGg6IHouc3RyaW5nKCksXG4gICAgICB9KSxcbiAgICApLFxuICBqc29uUmVzcG9uc2U6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICAgIHBhY2thZ2VfZmlsZTogWlQucGFja2FnZUZpbGVTY2hlbWEub3B0aW9uYWwoKSxcbiAgICB9KVxuICAgIC5vcihaVC5lcnJvclJlc3BvbnNlU2NoZW1hKSxcbn0gYXMgY29uc3RcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyhyb3V0ZVNwZWMpKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCBwYWNrYWdlRmlsZUlkID0gYXdhaXQgZ2V0UGFja2FnZUZpbGVJZEZyb21GaWxlRGVzY3JpcHRvcihcbiAgICByZXEuanNvbkJvZHksXG4gICAgY3R4LFxuICApXG5cbiAgY29uc3QgcGFja2FnZUZpbGUgPSBjdHguZGIucGFja2FnZUZpbGVzLmZpbmQoXG4gICAgKHBmOiBaVC5QYWNrYWdlRmlsZSkgPT4gcGYucGFja2FnZV9maWxlX2lkID09PSBwYWNrYWdlRmlsZUlkLFxuICApXG5cbiAgaWYgKCFwYWNrYWdlRmlsZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfZmlsZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBmaWxlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICAgIHBhY2thZ2VfZmlsZToge1xuICAgICAgLi4ucGFja2FnZUZpbGUsXG4gICAgICBjcmVhdGVkX2F0OiBwYWNrYWdlRmlsZS5jcmVhdGVkX2F0LnRvU3RyaW5nKCksXG4gICAgfSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgKiBhcyBaVCBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyBmaW5kUGFja2FnZVJlbGVhc2VJZCB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcGFja2FnZV9yZWxlYXNlL2ZpbmQtcGFja2FnZS1yZWxlYXNlLWlkXCJcblxuY29uc3Qgcm91dGVTcGVjID0ge1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAganNvbkJvZHk6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKSxcbiAgICB9KVxuICAgIC5vcihcbiAgICAgIHoub2JqZWN0KHtcbiAgICAgICAgcGFja2FnZV9uYW1lOiB6LnN0cmluZygpLFxuICAgICAgICB1c2VfbGF0ZXN0X3ZlcnNpb246IHoubGl0ZXJhbCh0cnVlKSxcbiAgICAgIH0pLFxuICAgIClcbiAgICAub3IoXG4gICAgICB6Lm9iamVjdCh7XG4gICAgICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb246IHouc3RyaW5nKCksXG4gICAgICB9KSxcbiAgICApLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgcGFja2FnZV9maWxlczogei5hcnJheShaVC5wYWNrYWdlRmlsZVNjaGVtYSksXG4gIH0pLFxufSBhcyBjb25zdFxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHJvdXRlU3BlYykoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHBhY2thZ2VSZWxlYXNlSWQgPSBhd2FpdCBmaW5kUGFja2FnZVJlbGVhc2VJZChyZXEuanNvbkJvZHksIGN0eClcblxuICBpZiAoIXBhY2thZ2VSZWxlYXNlSWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gT21pdCB0aGUgY29udGVudF90ZXh0IGZpZWxkXG4gIGNvbnN0IHBhY2thZ2VGaWxlcyA9IGN0eC5kYi5wYWNrYWdlRmlsZXNcbiAgICAuZmlsdGVyKChmaWxlKSA9PiBmaWxlLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2VJZClcbiAgICAubWFwKCh7IGNvbnRlbnRfdGV4dCwgLi4uZmlsZSB9KSA9PiAoe1xuICAgICAgLi4uZmlsZSxcbiAgICB9KSlcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICAgIHBhY2thZ2VfZmlsZXM6IHBhY2thZ2VGaWxlcyxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0ICogYXMgWlQgZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgY29uc3QgcHVibGljTWFwUGFja2FnZVJlbGVhc2UgPSAoXG4gIGludGVybmFsX3BhY2thZ2VfcmVsZWFzZTogWlQuUGFja2FnZVJlbGVhc2UsXG4pOiBaVC5QYWNrYWdlUmVsZWFzZSA9PiB7XG4gIHJldHVybiB7XG4gICAgLi4uaW50ZXJuYWxfcGFja2FnZV9yZWxlYXNlLFxuICAgIGNyZWF0ZWRfYXQ6IGludGVybmFsX3BhY2thZ2VfcmVsZWFzZS5jcmVhdGVkX2F0LFxuICB9XG59XG4iLCAiaW1wb3J0IHsgcGFja2FnZVJlbGVhc2VTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgcHVibGljTWFwUGFja2FnZVJlbGVhc2UgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3B1YmxpYy1tYXBwaW5nL3B1YmxpYy1tYXAtcGFja2FnZS1yZWxlYXNlXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICB2ZXJzaW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgaXNfbGF0ZXN0OiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIGNvbW1pdF9zaGE6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgcGFja2FnZV9yZWxlYXNlOiBwYWNrYWdlUmVsZWFzZVNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgbGV0IHtcbiAgICBwYWNrYWdlX2lkLFxuICAgIGlzX2xhdGVzdCA9IHRydWUsXG4gICAgdmVyc2lvbixcbiAgICBjb21taXRfc2hhLFxuICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24sXG4gIH0gPSByZXEuanNvbkJvZHlcblxuICBpZiAocGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbiAmJiAhdmVyc2lvbiAmJiAhcGFja2FnZV9pZCkge1xuICAgIGNvbnN0IFtwYWNrYWdlTmFtZSwgcGFyc2VkVmVyc2lvbl0gPSBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uLnNwbGl0KFwiQFwiKVxuICAgIGNvbnN0IHBrZyA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKChwKSA9PiBwLm5hbWUgPT09IHBhY2thZ2VOYW1lKVxuXG4gICAgaWYgKCFwa2cpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogYFBhY2thZ2Ugbm90IGZvdW5kOiAke3BhY2thZ2VOYW1lfWAsXG4gICAgICB9KVxuICAgIH1cblxuICAgIHBhY2thZ2VfaWQgPSBwa2cucGFja2FnZV9pZFxuICAgIHZlcnNpb24gPSBwYXJzZWRWZXJzaW9uXG4gIH1cblxuICBpZiAoIXBhY2thZ2VfaWQgfHwgIXZlcnNpb24pIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJtaXNzaW5nX29wdGlvbnNcIixcbiAgICAgIG1lc3NhZ2U6IFwicGFja2FnZV9pZCBhbmQgdmVyc2lvbiBhcmUgcmVxdWlyZWRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdmVyc2lvbiBhbHJlYWR5IGV4aXN0c1xuICBjb25zdCBleGlzdGluZ1JlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgKHByKSA9PiBwci5wYWNrYWdlX2lkID09PSBwYWNrYWdlX2lkICYmIHByLnZlcnNpb24gPT09IHZlcnNpb24sXG4gIClcblxuICBpZiAoZXhpc3RpbmdSZWxlYXNlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwidmVyc2lvbl9hbHJlYWR5X2V4aXN0c1wiLFxuICAgICAgbWVzc2FnZTogYFZlcnNpb24gJHt2ZXJzaW9ufSBhbHJlYWR5IGV4aXN0cyBmb3IgdGhpcyBwYWNrYWdlYCxcbiAgICB9KVxuICB9XG5cbiAgLy8gVXBkYXRlIHByZXZpb3VzIGxhdGVzdCBpZiBuZWVkZWRcbiAgaWYgKGlzX2xhdGVzdCkge1xuICAgIGN0eC5kYi5wYWNrYWdlUmVsZWFzZXNcbiAgICAgIC5maWx0ZXIoKHByKSA9PiBwci5wYWNrYWdlX2lkID09PSBwYWNrYWdlX2lkICYmIHByLmlzX2xhdGVzdClcbiAgICAgIC5mb3JFYWNoKChwcikgPT4gKHByLmlzX2xhdGVzdCA9IGZhbHNlKSlcbiAgfVxuXG4gIGNvbnN0IG5ld1BhY2thZ2VSZWxlYXNlID0gY3R4LmRiLmFkZFBhY2thZ2VSZWxlYXNlKHtcbiAgICBwYWNrYWdlX2lkLFxuICAgIGlzX2xhdGVzdCxcbiAgICB2ZXJzaW9uLFxuICAgIGlzX2xvY2tlZDogZmFsc2UsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGNvbW1pdF9zaGE6IGNvbW1pdF9zaGEgPz8gbnVsbCxcbiAgfSlcblxuICAvLyBVcGRhdGUgdGhlIHBhY2thZ2UncyBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkIGlmIHRoaXMgaXMgdGhlIGxhdGVzdCByZWxlYXNlXG4gIGlmIChpc19sYXRlc3QpIHtcbiAgICBjdHguZGIudXBkYXRlUGFja2FnZShwYWNrYWdlX2lkLCB7XG4gICAgICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkOiBuZXdQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICBsYXRlc3RfdmVyc2lvbjogdmVyc2lvbixcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBwYWNrYWdlX3JlbGVhc2U6IHB1YmxpY01hcFBhY2thZ2VSZWxlYXNlKG5ld1BhY2thZ2VSZWxlYXNlKSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0ICogYXMgenQgZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgcHVibGljTWFwUGFja2FnZVJlbGVhc2UgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3B1YmxpYy1tYXBwaW5nL3B1YmxpYy1tYXAtcGFja2FnZS1yZWxlYXNlXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHBhY2thZ2VfbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBpc19sYXRlc3Q6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgcGFja2FnZV9yZWxlYXNlOiB6dC5wYWNrYWdlUmVsZWFzZVNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3Qge1xuICAgIHBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uLFxuICAgIHBhY2thZ2VfbmFtZSxcbiAgICBwYWNrYWdlX2lkLFxuICAgIGlzX2xhdGVzdCxcbiAgfSA9IHJlcS5qc29uQm9keVxuXG4gIC8vIEhhbmRsZSBwYWNrYWdlX25hbWUgd2l0aCBpc19sYXRlc3RcbiAgaWYgKHBhY2thZ2VfbmFtZSAmJiBpc19sYXRlc3QgPT09IHRydWUpIHtcbiAgICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXMuZmluZCgoeCkgPT4geC5uYW1lID09PSBwYWNrYWdlX25hbWUpXG5cbiAgICBpZiAoIXBrZykge1xuICAgICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgICBtZXNzYWdlOiBcIlBhY2thZ2Ugbm90IGZvdW5kXCIsXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIFNvcnQgcmVsZWFzZXMgYnkgdmVyc2lvbiB0byBmaW5kIHRoZSBsYXRlc3Qgb25lXG4gICAgY29uc3QgcGFja2FnZVJlbGVhc2VzID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlc1xuICAgICAgLmZpbHRlcigoeCkgPT4geC5wYWNrYWdlX2lkID09PSBwa2cucGFja2FnZV9pZClcbiAgICAgIC5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgbmV3IERhdGUoYi5jcmVhdGVkX2F0KS5nZXRUaW1lKCkgLSBuZXcgRGF0ZShhLmNyZWF0ZWRfYXQpLmdldFRpbWUoKVxuICAgICAgICApXG4gICAgICB9KVxuXG4gICAgaWYgKHBhY2thZ2VSZWxlYXNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgICBtZXNzYWdlOiBcIk5vIHJlbGVhc2VzIGZvdW5kIGZvciB0aGlzIHBhY2thZ2VcIixcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICAgIG9rOiB0cnVlLFxuICAgICAgcGFja2FnZV9yZWxlYXNlOiBwdWJsaWNNYXBQYWNrYWdlUmVsZWFzZShwYWNrYWdlUmVsZWFzZXNbMF0pLFxuICAgIH0pXG4gIH1cblxuICAvLyBIYW5kbGUgcGFja2FnZV9pZCB3aXRoIGlzX2xhdGVzdFxuICBpZiAocGFja2FnZV9pZCAmJiBpc19sYXRlc3QgPT09IHRydWUpIHtcbiAgICAvLyBTb3J0IHJlbGVhc2VzIGJ5IHZlcnNpb24gdG8gZmluZCB0aGUgbGF0ZXN0IG9uZVxuICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlcyA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXNcbiAgICAgIC5maWx0ZXIoKHgpID0+IHgucGFja2FnZV9pZCA9PT0gcGFja2FnZV9pZClcbiAgICAgIC5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgbmV3IERhdGUoYi5jcmVhdGVkX2F0KS5nZXRUaW1lKCkgLSBuZXcgRGF0ZShhLmNyZWF0ZWRfYXQpLmdldFRpbWUoKVxuICAgICAgICApXG4gICAgICB9KVxuXG4gICAgaWYgKHBhY2thZ2VSZWxlYXNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgICBtZXNzYWdlOiBcIk5vIHJlbGVhc2VzIGZvdW5kIGZvciB0aGlzIHBhY2thZ2VcIixcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICAgIG9rOiB0cnVlLFxuICAgICAgcGFja2FnZV9yZWxlYXNlOiBwdWJsaWNNYXBQYWNrYWdlUmVsZWFzZShwYWNrYWdlUmVsZWFzZXNbMF0pLFxuICAgIH0pXG4gIH1cblxuICBpZiAocGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbiAmJiAhcGFja2FnZV9yZWxlYXNlX2lkKSB7XG4gICAgY29uc3QgW3BhY2thZ2VOYW1lLCBwYXJzZWRWZXJzaW9uXSA9IHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24uc3BsaXQoXCJAXCIpXG4gICAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHgpID0+IHgubmFtZSA9PT0gcGFja2FnZU5hbWUpXG4gICAgY29uc3QgcGtnUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZCgoeCkgPT4ge1xuICAgICAgcmV0dXJuIHgudmVyc2lvbiA9PSBwYXJzZWRWZXJzaW9uICYmIHgucGFja2FnZV9pZCA9PSBwa2c/LnBhY2thZ2VfaWRcbiAgICB9KVxuXG4gICAgaWYgKCFwa2dSZWxlYXNlKSB7XG4gICAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIsXG4gICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiBjdHguanNvbih7XG4gICAgICBvazogdHJ1ZSxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZTogcHVibGljTWFwUGFja2FnZVJlbGVhc2UocGtnUmVsZWFzZSksXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGZvdW5kUmVsZWFzZSA9XG4gICAgcGFja2FnZV9yZWxlYXNlX2lkICYmIGN0eC5kYi5nZXRQYWNrYWdlUmVsZWFzZUJ5SWQocGFja2FnZV9yZWxlYXNlX2lkKVxuXG4gIGlmICghZm91bmRSZWxlYXNlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgcGFja2FnZV9yZWxlYXNlOiBwdWJsaWNNYXBQYWNrYWdlUmVsZWFzZShmb3VuZFJlbGVhc2UpLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyBwYWNrYWdlUmVsZWFzZVNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyBwdWJsaWNNYXBQYWNrYWdlUmVsZWFzZSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcHVibGljLW1hcHBpbmcvcHVibGljLW1hcC1wYWNrYWdlLXJlbGVhc2VcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIGpzb25Cb2R5OiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBwYWNrYWdlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBwYWNrYWdlX25hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIGlzX2xhdGVzdDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICAgIHZlcnNpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIGNvbW1pdF9zaGE6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICB9KVxuICAgIC5yZWZpbmUoKHsgcGFja2FnZV9pZCwgcGFja2FnZV9uYW1lIH0pID0+IHtcbiAgICAgIGlmIChwYWNrYWdlX2lkICYmIHBhY2thZ2VfbmFtZSkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSwgXCJwYWNrYWdlX2lkIGFuZCBwYWNrYWdlX25hbWUgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZVwiKVxuICAgIC5yZWZpbmUoKHsgcGFja2FnZV9pZCwgcGFja2FnZV9uYW1lIH0pID0+IHtcbiAgICAgIGlmICghcGFja2FnZV9pZCAmJiAhcGFja2FnZV9uYW1lKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9LCBcInBhY2thZ2VfaWQgb3IgcGFja2FnZV9uYW1lIGlzIHJlcXVpcmVkXCIpLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgcGFja2FnZV9yZWxlYXNlczogei5hcnJheShwYWNrYWdlUmVsZWFzZVNjaGVtYSksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgcGFja2FnZV9pZCwgcGFja2FnZV9uYW1lLCBpc19sYXRlc3QsIHZlcnNpb24sIGNvbW1pdF9zaGEgfSA9XG4gICAgcmVxLmpzb25Cb2R5XG5cbiAgaWYgKCFwYWNrYWdlX2lkICYmICFwYWNrYWdlX25hbWUgJiYgIWlzX2xhdGVzdCAmJiAhdmVyc2lvbiAmJiAhY29tbWl0X3NoYSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImludmFsaWRfcXVlcnlcIixcbiAgICAgIG1lc3NhZ2U6XG4gICAgICAgIFwiQXQgbGVhc3Qgb25lIG9mIHBhY2thZ2VfaWQsIHBhY2thZ2VfbmFtZSwgaXNfbGF0ZXN0LCB2ZXJzaW9uIG9yIGNvbW1pdF9zaGEgaXMgcmVxdWlyZWRcIixcbiAgICB9KVxuICB9XG5cbiAgbGV0IHJlbGVhc2VzID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlc1xuXG4gIC8vIEFwcGx5IGZpbHRlcnNcbiAgaWYgKHBhY2thZ2VfaWQpIHtcbiAgICByZWxlYXNlcyA9IHJlbGVhc2VzLmZpbHRlcigocHIpID0+IHByLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VfaWQpXG4gIH1cblxuICBpZiAocGFja2FnZV9uYW1lKSB7XG4gICAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHApID0+IHAubmFtZSA9PT0gcGFja2FnZV9uYW1lKVxuICAgIGlmIChwa2cpIHtcbiAgICAgIHJlbGVhc2VzID0gcmVsZWFzZXMuZmlsdGVyKChwcikgPT4gcHIucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJlbGVhc2VzID0gW11cbiAgICB9XG4gIH1cblxuICBpZiAoaXNfbGF0ZXN0ICE9PSB1bmRlZmluZWQpIHtcbiAgICByZWxlYXNlcyA9IHJlbGVhc2VzLmZpbHRlcigocHIpID0+IHByLmlzX2xhdGVzdCA9PT0gaXNfbGF0ZXN0KVxuICB9XG5cbiAgaWYgKHZlcnNpb24pIHtcbiAgICByZWxlYXNlcyA9IHJlbGVhc2VzLmZpbHRlcigocHIpID0+IHByLnZlcnNpb24gPT09IHZlcnNpb24pXG4gIH1cblxuICBpZiAoY29tbWl0X3NoYSkge1xuICAgIHJlbGVhc2VzID0gcmVsZWFzZXMuZmlsdGVyKChwcikgPT4gcHIuY29tbWl0X3NoYSA9PT0gY29tbWl0X3NoYSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgcGFja2FnZV9yZWxlYXNlczogcmVsZWFzZXMubWFwKChwcikgPT4gcHVibGljTWFwUGFja2FnZVJlbGVhc2UocHIpKSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBpc19sb2NrZWQ6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgaXNfbGF0ZXN0OiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIGxpY2Vuc2U6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3Qge1xuICAgIHBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uLFxuICAgIGlzX2xvY2tlZCxcbiAgICBpc19sYXRlc3QsXG4gICAgbGljZW5zZSxcbiAgfSA9IHJlcS5qc29uQm9keVxuICBsZXQgcmVsZWFzZUlkID0gcGFja2FnZV9yZWxlYXNlX2lkXG5cbiAgLy8gSGFuZGxlIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24gbG9va3VwXG4gIGlmICghcmVsZWFzZUlkICYmIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24pIHtcbiAgICBjb25zdCBbcGFja2FnZU5hbWUsIHZlcnNpb25dID0gcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbi5zcGxpdChcIkBcIilcbiAgICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXMuZmluZCgocCkgPT4gcC5uYW1lID09PSBwYWNrYWdlTmFtZSlcbiAgICBpZiAocGtnKSB7XG4gICAgICBjb25zdCByZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAocHIpID0+IHByLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIHByLnZlcnNpb24gPT09IHZlcnNpb24sXG4gICAgICApXG4gICAgICBpZiAocmVsZWFzZSkge1xuICAgICAgICByZWxlYXNlSWQgPSByZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICghcmVsZWFzZUlkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGRlbHRhID0geyBpc19sb2NrZWQsIGlzX2xhdGVzdCwgbGljZW5zZSB9XG4gIGlmIChcbiAgICBPYmplY3Qua2V5cyhkZWx0YSkuZmlsdGVyKFxuICAgICAgKGspID0+IGRlbHRhW2sgYXMga2V5b2YgdHlwZW9mIGRlbHRhXSAhPT0gdW5kZWZpbmVkLFxuICAgICkubGVuZ3RoID09PSAwXG4gICkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm5vX2ZpZWxkc19wcm92aWRlZFwiLFxuICAgICAgbWVzc2FnZTogXCJObyBmaWVsZHMgcHJvdmlkZWQgdG8gdXBkYXRlXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgKHByKSA9PiBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHJlbGVhc2VJZCxcbiAgKVxuICBpZiAoIXJlbGVhc2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ3JlYXRlIHVwZGF0ZWQgcmVsZWFzZSBvYmplY3RcbiAgY29uc3QgdXBkYXRlZFJlbGVhc2UgPSB7XG4gICAgLi4ucmVsZWFzZSxcbiAgICAuLi4oaXNfbG9ja2VkICE9PSB1bmRlZmluZWQgJiYgeyBpc19sb2NrZWQgfSksXG4gICAgLi4uKGlzX2xhdGVzdCAhPT0gdW5kZWZpbmVkICYmIHsgaXNfbGF0ZXN0IH0pLFxuICAgIC4uLihsaWNlbnNlICE9PSB1bmRlZmluZWQgJiYgeyBsaWNlbnNlIH0pLFxuICB9XG5cbiAgLy8gSGFuZGxlIGlzX2xhdGVzdCB1cGRhdGVzIGF0b21pY2FsbHlcbiAgaWYgKGlzX2xhdGVzdCAhPT0gdW5kZWZpbmVkICYmIGlzX2xhdGVzdCkge1xuICAgIC8vIEdldCBhbGwgcmVsZWFzZXMgZm9yIHRoaXMgcGFja2FnZSB0aGF0IGFyZSBjdXJyZW50bHkgbWFya2VkIGFzIGxhdGVzdFxuICAgIGNvbnN0IG90aGVyTGF0ZXN0UmVsZWFzZXMgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbHRlcihcbiAgICAgIChwcikgPT5cbiAgICAgICAgcHIucGFja2FnZV9pZCA9PT0gcmVsZWFzZS5wYWNrYWdlX2lkICYmXG4gICAgICAgIHByLnBhY2thZ2VfcmVsZWFzZV9pZCAhPT0gcmVsZWFzZUlkICYmXG4gICAgICAgIHByLmlzX2xhdGVzdCxcbiAgICApXG5cbiAgICAvLyBVcGRhdGUgYWxsIHJlbGVhc2VzIGluIGEgc2luZ2xlIG9wZXJhdGlvblxuICAgIGZvciAoY29uc3QgbGF0ZXN0UmVsZWFzZSBvZiBvdGhlckxhdGVzdFJlbGVhc2VzKSB7XG4gICAgICBjdHguZGIudXBkYXRlUGFja2FnZVJlbGVhc2Uoe1xuICAgICAgICAuLi5sYXRlc3RSZWxlYXNlLFxuICAgICAgICBpc19sYXRlc3Q6IGZhbHNlLFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICAvLyBVcGRhdGUgdGhlIHRhcmdldCByZWxlYXNlXG4gIGN0eC5kYi51cGRhdGVQYWNrYWdlUmVsZWFzZSh1cGRhdGVkUmVsZWFzZSlcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBwYWNrYWdlX2lkOiB6LnN0cmluZygpLFxuICAgIH0pXG4gICAgLm9yKHoub2JqZWN0KHsgbmFtZTogei5zdHJpbmcoKSB9KSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgbGV0IHBhY2thZ2VJZDogc3RyaW5nXG5cbiAgLy8gR2V0IHBhY2thZ2UgSUQgZWl0aGVyIGRpcmVjdGx5IG9yIGJ5IG5hbWVcbiAgaWYgKFwicGFja2FnZV9pZFwiIGluIHJlcS5qc29uQm9keSkge1xuICAgIGNvbnN0IGJvZHkgPSByZXEuanNvbkJvZHlcbiAgICBwYWNrYWdlSWQgPSBib2R5LnBhY2thZ2VfaWRcbiAgfSBlbHNlIHtcbiAgICAvLyBJZiBuYW1lIGlzIHByb3ZpZGVkLCBsb29rIHVwIHRoZSBwYWNrYWdlX2lkXG4gICAgY29uc3QgYm9keSA9IHJlcS5qc29uQm9keVxuICAgIGNvbnN0IHBhY2thZ2VEYXRhID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHBrZykgPT4gcGtnLm5hbWUgPT09IGJvZHkubmFtZSlcblxuICAgIGlmICghcGFja2FnZURhdGEpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIG5vdCBmb3VuZFwiLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBwYWNrYWdlSWQgPSBwYWNrYWdlRGF0YS5wYWNrYWdlX2lkXG4gIH1cblxuICAvLyBDaGVjayBpZiBwYWNrYWdlIGV4aXN0cyAoZXh0cmEgY2hlY2sgZm9yIElELWJhc2VkIGxvb2t1cClcbiAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHApID0+IHAucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkKVxuXG4gIGlmICghcGtnKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgYWxyZWFkeSBzdGFycmVkXG4gIGNvbnN0IGV4aXN0aW5nID0gY3R4LmRiLmFjY291bnRQYWNrYWdlcy5maW5kKFxuICAgIChhcCkgPT5cbiAgICAgIGFwLmFjY291bnRfaWQgPT09IGN0eC5hdXRoLmFjY291bnRfaWQgJiYgYXAucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkLFxuICApXG5cbiAgaWYgKGV4aXN0aW5nPy5pc19zdGFycmVkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiYWxyZWFkeV9zdGFycmVkXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBoYXZlIGFscmVhZHkgc3RhcnJlZCB0aGlzIHBhY2thZ2VcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gVXBkYXRlIHRoZSBwYWNrYWdlJ3Mgc3RhciBjb3VudFxuICBwa2cuc3Rhcl9jb3VudCA9IChwa2cuc3Rhcl9jb3VudCB8fCAwKSArIDFcblxuICBpZiAoZXhpc3RpbmcpIHtcbiAgICAvLyBJZiByZWNvcmQgZXhpc3RzIGJ1dCBpc19zdGFycmVkIGlzIGZhbHNlLCB1cGRhdGUgdG8gaXNfc3RhcnJlZD10cnVlXG4gICAgZXhpc3RpbmcuaXNfc3RhcnJlZCA9IHRydWVcbiAgICBleGlzdGluZy51cGRhdGVkX2F0ID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG4gIH0gZWxzZSB7XG4gICAgLy8gQWRkIHN0YXIgYnkgY3JlYXRpbmcgYSBuZXcgYWNjb3VudF9wYWNrYWdlIHJlY29yZFxuICAgIGNvbnN0IG5ld0FjY291bnRQYWNrYWdlID0ge1xuICAgICAgYWNjb3VudF9pZDogY3R4LmF1dGguYWNjb3VudF9pZCxcbiAgICAgIHBhY2thZ2VfaWQ6IHBhY2thZ2VJZCxcbiAgICAgIGlzX3N0YXJyZWQ6IHRydWUsXG4gICAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB1cGRhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgfVxuICAgIGN0eC5kYi5hZGRBY2NvdW50UGFja2FnZShuZXdBY2NvdW50UGFja2FnZSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB0eXBlICogYXMgenQgZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgY29uc3QgcHVibGljTWFwUGFja2FnZSA9IChpbnRlcm5hbFBhY2thZ2U6IHtcbiAgcGFja2FnZV9pZDogc3RyaW5nXG4gIGNyZWF0b3JfYWNjb3VudF9pZDogc3RyaW5nXG4gIG93bmVyX29yZ19pZDogc3RyaW5nXG4gIG93bmVyX2dpdGh1Yl91c2VybmFtZTogc3RyaW5nIHwgbnVsbFxuICBpc19zb3VyY2VfZnJvbV9naXRodWI6IGJvb2xlYW5cbiAgZGVzY3JpcHRpb246IHN0cmluZyB8IG51bGxcbiAgbGF0ZXN0X3ZlcnNpb24/OiBzdHJpbmcgfCBudWxsXG4gIGxhdGVzdF9saWNlbnNlPzogc3RyaW5nIHwgbnVsbFxuICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkPzogc3RyaW5nIHwgbnVsbFxuICBzdGFyX2NvdW50PzogbnVtYmVyIHwgbnVsbFxuICBuYW1lOiBzdHJpbmdcbiAgd2Vic2l0ZTogc3RyaW5nIHwgbnVsbFxuICB1bnNjb3BlZF9uYW1lOiBzdHJpbmdcbiAgdXBkYXRlZF9hdDogc3RyaW5nXG4gIGNyZWF0ZWRfYXQ6IHN0cmluZ1xuICBhaV9kZXNjcmlwdGlvbjogc3RyaW5nIHwgbnVsbFxuICBhaV91c2FnZV9pbnN0cnVjdGlvbnM6IHN0cmluZyB8IG51bGxcbiAgaXNfc25pcHBldDogYm9vbGVhblxuICBpc19ib2FyZDogYm9vbGVhblxuICBpc19wYWNrYWdlOiBib29sZWFuXG4gIGlzX21vZGVsOiBib29sZWFuXG4gIGlzX2Zvb3RwcmludDogYm9vbGVhblxuICBpc19wcml2YXRlOiBib29sZWFuIHwgbnVsbFxuICBpc191bmxpc3RlZDogYm9vbGVhbiB8IG51bGxcbn0pOiB6dC5QYWNrYWdlID0+IHtcbiAgcmV0dXJuIHtcbiAgICAuLi5pbnRlcm5hbFBhY2thZ2UsXG4gICAgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZDpcbiAgICAgIGludGVybmFsUGFja2FnZS5sYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkID8/IG51bGwsXG4gICAgbGF0ZXN0X3ZlcnNpb246IGludGVybmFsUGFja2FnZS5sYXRlc3RfdmVyc2lvbiA/PyBudWxsLFxuICAgIGxpY2Vuc2U6IGludGVybmFsUGFja2FnZS5sYXRlc3RfbGljZW5zZSA/PyBudWxsLFxuICAgIHdlYnNpdGU6IGludGVybmFsUGFja2FnZS53ZWJzaXRlID8/IG51bGwsXG4gICAgc3Rhcl9jb3VudDogaW50ZXJuYWxQYWNrYWdlLnN0YXJfY291bnQgPz8gMCxcbiAgICBjcmVhdGVkX2F0OiBpbnRlcm5hbFBhY2thZ2UuY3JlYXRlZF9hdCxcbiAgICB1cGRhdGVkX2F0OiBpbnRlcm5hbFBhY2thZ2UudXBkYXRlZF9hdCxcbiAgICBpc19wcml2YXRlOiBpbnRlcm5hbFBhY2thZ2UuaXNfcHJpdmF0ZSA/PyBmYWxzZSxcbiAgICBpc19wdWJsaWM6IGludGVybmFsUGFja2FnZS5pc19wcml2YXRlID09PSB0cnVlID8gZmFsc2UgOiB0cnVlLFxuICAgIGlzX3VubGlzdGVkOlxuICAgICAgaW50ZXJuYWxQYWNrYWdlLmlzX3ByaXZhdGUgPT09IHRydWVcbiAgICAgICAgPyB0cnVlXG4gICAgICAgIDogKGludGVybmFsUGFja2FnZS5pc191bmxpc3RlZCA/PyBmYWxzZSksXG4gIH1cbn1cbiIsICJpbXBvcnQgeyBwYWNrYWdlU2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHB1YmxpY01hcFBhY2thZ2UgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3B1YmxpYy1tYXBwaW5nL3B1YmxpYy1tYXAtcGFja2FnZVwiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBuYW1lOiB6XG4gICAgICAuc3RyaW5nKClcbiAgICAgIC5yZWdleChcbiAgICAgICAgL15bQGEtekEtWjAtOS1fXFwvXSskLyxcbiAgICAgICAgXCJQYWNrYWdlIG5hbWUgY2FuIG9ubHkgY29udGFpbiBsZXR0ZXJzLCBudW1iZXJzLCBoeXBoZW5zLCB1bmRlcnNjb3JlcywgYW5kIGZvcndhcmQgc2xhc2hlc1wiLFxuICAgICAgKVxuICAgICAgLnRyYW5zZm9ybSgobmFtZSkgPT4gbmFtZS5yZXBsYWNlKC9eQC8sIFwiXCIpKSxcbiAgICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGlzX3ByaXZhdGU6IHouYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVmYXVsdChmYWxzZSksXG4gICAgaXNfdW5saXN0ZWQ6IHouYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVmYXVsdChmYWxzZSksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBwYWNrYWdlOiBwYWNrYWdlU2NoZW1hLm9wdGlvbmFsKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgbmFtZSwgZGVzY3JpcHRpb24sIGlzX3ByaXZhdGUsIGlzX3VubGlzdGVkIH0gPSByZXEuanNvbkJvZHlcblxuICBjb25zdCBleGlzdGluZ1BhY2thZ2UgPSBjdHguZGIucGFja2FnZXMuZmluZCgocGtnKSA9PiBwa2cubmFtZSA9PT0gbmFtZSlcblxuICBpZiAoZXhpc3RpbmdQYWNrYWdlKSB7XG4gICAgdGhyb3cgY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX2FscmVhZHlfZXhpc3RzXCIsXG4gICAgICBtZXNzYWdlOiBcIkEgcGFja2FnZSB3aXRoIHRoaXMgbmFtZSBhbHJlYWR5IGV4aXN0c1wiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCB1bnNjb3BlZF9uYW1lID0gbmFtZS5zcGxpdChcIi9cIilbMV1cblxuICBjb25zdCBuZXdQYWNrYWdlID0gY3R4LmRiLmFkZFBhY2thZ2Uoe1xuICAgIG5hbWUsXG4gICAgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uID8/IG51bGwsXG4gICAgY3JlYXRvcl9hY2NvdW50X2lkOiBjdHguYXV0aC5hY2NvdW50X2lkLFxuICAgIG93bmVyX29yZ19pZDogY3R4LmF1dGgucGVyc29uYWxfb3JnX2lkLFxuICAgIG93bmVyX2dpdGh1Yl91c2VybmFtZTogY3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lLFxuICAgIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQ6IG51bGwsXG4gICAgbGF0ZXN0X3ZlcnNpb246IG51bGwsXG4gICAgbGljZW5zZTogbnVsbCxcbiAgICB3ZWJzaXRlOiBudWxsLFxuICAgIGlzX3NvdXJjZV9mcm9tX2dpdGh1YjogZmFsc2UsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB1bnNjb3BlZF9uYW1lLFxuICAgIHN0YXJfY291bnQ6IDAsXG4gICAgYWlfZGVzY3JpcHRpb246IFwicGxhY2Vob2xkZXIgYWkgZGVzY3JpcHRpb25cIixcbiAgICBpc19wcml2YXRlOiBpc19wcml2YXRlID8/IGZhbHNlLFxuICAgIGlzX3B1YmxpYzogaXNfcHJpdmF0ZSA9PT0gdHJ1ZSA/IGZhbHNlIDogdHJ1ZSxcbiAgICBpc191bmxpc3RlZDogaXNfcHJpdmF0ZSA9PT0gdHJ1ZSA/IHRydWUgOiAoaXNfdW5saXN0ZWQgPz8gZmFsc2UpLFxuICAgIGFpX3VzYWdlX2luc3RydWN0aW9uczogXCJwbGFjZWhvbGRlciBhaSB1c2FnZSBpbnN0cnVjdGlvbnNcIixcbiAgfSlcblxuICBpZiAoIW5ld1BhY2thZ2UpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gY3JlYXRlIHBhY2thZ2VcIilcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgcGFja2FnZTogcHVibGljTWFwUGFja2FnZShuZXdQYWNrYWdlKSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgcGFja2FnZV9pZCB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgY29uc3QgcGFja2FnZUluZGV4ID0gY3R4LmRiLnBhY2thZ2VzLmZpbmRJbmRleChcbiAgICAocCkgPT4gcC5wYWNrYWdlX2lkID09PSBwYWNrYWdlX2lkLFxuICApXG5cbiAgaWYgKHBhY2thZ2VJbmRleCA9PT0gLTEpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXNbcGFja2FnZUluZGV4XVxuXG4gIGlmIChwa2cub3duZXJfZ2l0aHViX3VzZXJuYW1lICE9PSBjdHguYXV0aC5naXRodWJfdXNlcm5hbWUpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMywge1xuICAgICAgZXJyb3JfY29kZTogXCJmb3JiaWRkZW5cIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byBkZWxldGUgdGhpcyBwYWNrYWdlXCIsXG4gICAgfSlcbiAgfVxuXG4gIGN0eC5kYi5wYWNrYWdlcy5zcGxpY2UocGFja2FnZUluZGV4LCAxKVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHBhY2thZ2VTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgcHVibGljTWFwUGFja2FnZSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcHVibGljLW1hcHBpbmcvcHVibGljLW1hcC1wYWNrYWdlXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogelxuICAgIC5vYmplY3Qoe1xuICAgICAgLy8gQWNjZXB0IGVpdGhlciBwYWNrYWdlX2lkIG9yIHBhY2thZ2VfbmFtZSB0byBmaW5kIHRoZSBwYWNrYWdlIHRvIGZvcmtcbiAgICAgIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIHBhY2thZ2VfbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgLy8gT3B0aW9uYWwgcGFyYW1ldGVycyB0byBjdXN0b21pemUgdGhlIGZvcmtlZCBwYWNrYWdlXG4gICAgICBpc19wcml2YXRlOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlZmF1bHQoZmFsc2UpLFxuICAgICAgaXNfdW5saXN0ZWQ6IHouYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVmYXVsdChmYWxzZSksXG4gICAgfSlcbiAgICAucmVmaW5lKFxuICAgICAgKGRhdGEpID0+XG4gICAgICAgIGRhdGEucGFja2FnZV9pZCAhPT0gdW5kZWZpbmVkIHx8IGRhdGEucGFja2FnZV9uYW1lICE9PSB1bmRlZmluZWQsXG4gICAgICB7XG4gICAgICAgIG1lc3NhZ2U6IFwiRWl0aGVyIHBhY2thZ2VfaWQgb3IgcGFja2FnZV9uYW1lIG11c3QgYmUgcHJvdmlkZWRcIixcbiAgICAgIH0sXG4gICAgKVxuICAgIC50cmFuc2Zvcm0oKGRhdGEpID0+ICh7XG4gICAgICAuLi5kYXRhLFxuICAgICAgLy8gSWYgdGhlIHBhY2thZ2UgaXMgcHJpdmF0ZSwgaXQgc2hvdWxkIGJlIHVubGlzdGVkXG4gICAgICBpc191bmxpc3RlZDogZGF0YS5pc19wcml2YXRlID8gdHJ1ZSA6IGRhdGEuaXNfdW5saXN0ZWQsXG4gICAgfSkpLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBwYWNrYWdlOiBwYWNrYWdlU2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IHBhY2thZ2VfaWQsIHBhY2thZ2VfbmFtZSwgaXNfcHJpdmF0ZSwgaXNfdW5saXN0ZWQgfSA9IHJlcS5qc29uQm9keVxuXG4gIC8vIEZpbmQgdGhlIHBhY2thZ2UgdG8gZm9ya1xuICBsZXQgc291cmNlUGFja2FnZSA9IG51bGxcbiAgaWYgKHBhY2thZ2VfaWQpIHtcbiAgICBzb3VyY2VQYWNrYWdlID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHBrZykgPT4gcGtnLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VfaWQpXG4gIH0gZWxzZSBpZiAocGFja2FnZV9uYW1lKSB7XG4gICAgc291cmNlUGFja2FnZSA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKChwa2cpID0+IHBrZy5uYW1lID09PSBwYWNrYWdlX25hbWUpXG4gIH1cblxuICBpZiAoIXNvdXJjZVBhY2thZ2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJUaGUgcGFja2FnZSB0byBmb3JrIHdhcyBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgaWYgKHNvdXJjZVBhY2thZ2UuY3JlYXRvcl9hY2NvdW50X2lkID09PSBjdHguYXV0aC5hY2NvdW50X2lkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiY2Fubm90X2Zvcmtfb3duX3BhY2thZ2VcIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGNhbm5vdCBmb3JrIHlvdXIgb3duIHBhY2thZ2VcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgZm9yayBhbHJlYWR5IGV4aXN0cyAodXNlciBhbHJlYWR5IGhhcyBhIHBhY2thZ2Ugd2l0aCB0aGUgc2FtZSBuYW1lKVxuICBjb25zdCBmb3JrTmFtZSA9IGAke2N0eC5hdXRoLmdpdGh1Yl91c2VybmFtZX0vJHtzb3VyY2VQYWNrYWdlLnVuc2NvcGVkX25hbWV9YFxuICBjb25zdCBleGlzdGluZ0ZvcmsgPSBjdHguZGIucGFja2FnZXMuZmluZChcbiAgICAocGtnKSA9PlxuICAgICAgcGtnLmNyZWF0b3JfYWNjb3VudF9pZCA9PT0gY3R4LmF1dGguYWNjb3VudF9pZCAmJiBwa2cubmFtZSA9PT0gZm9ya05hbWUsXG4gIClcblxuICBpZiAoZXhpc3RpbmdGb3JrKSB7XG4gICAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICAgIHBhY2thZ2U6IHB1YmxpY01hcFBhY2thZ2UoZXhpc3RpbmdGb3JrKSxcbiAgICB9KVxuICB9XG5cbiAgLy8gRmluZCB0aGUgbGF0ZXN0IHJlbGVhc2Ugb2YgdGhlIHNvdXJjZSBwYWNrYWdlXG4gIGNvbnN0IHNvdXJjZVBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgIChyZWxlYXNlKSA9PlxuICAgICAgcmVsZWFzZS5wYWNrYWdlX2lkID09PSBzb3VyY2VQYWNrYWdlLnBhY2thZ2VfaWQgJiZcbiAgICAgIHJlbGVhc2UuaXNfbGF0ZXN0ID09PSB0cnVlLFxuICApXG5cbiAgaWYgKCFzb3VyY2VQYWNrYWdlUmVsZWFzZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInNvdXJjZV9wYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlRoZSBzb3VyY2UgcGFja2FnZSBkb2VzIG5vdCBoYXZlIGFueSByZWxlYXNlcyB0byBmb3JrXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIEdldCB0aGUgZmlsZXMgZnJvbSB0aGUgc291cmNlIHBhY2thZ2UgcmVsZWFzZVxuICBjb25zdCBzb3VyY2VGaWxlcyA9IGN0eC5kYi5wYWNrYWdlRmlsZXMuZmlsdGVyKFxuICAgIChmaWxlKSA9PlxuICAgICAgZmlsZS5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHNvdXJjZVBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgKVxuXG4gIGlmIChzb3VyY2VGaWxlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzb3VyY2VfcGFja2FnZV9maWxlc19ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiVGhlIHNvdXJjZSBwYWNrYWdlIHJlbGVhc2UgZG9lcyBub3QgaGF2ZSBhbnkgZmlsZXMgdG8gZm9ya1wiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDcmVhdGUgdGhlIGZvcmtlZCBwYWNrYWdlXG4gIGNvbnN0IGZvcmtlZFBhY2thZ2UgPSBjdHguZGIuYWRkUGFja2FnZSh7XG4gICAgbmFtZTogZm9ya05hbWUsXG4gICAgZGVzY3JpcHRpb246IHNvdXJjZVBhY2thZ2UuZGVzY3JpcHRpb24sXG4gICAgY3JlYXRvcl9hY2NvdW50X2lkOiBjdHguYXV0aC5hY2NvdW50X2lkLFxuICAgIG93bmVyX29yZ19pZDogY3R4LmF1dGgucGVyc29uYWxfb3JnX2lkLFxuICAgIG93bmVyX2dpdGh1Yl91c2VybmFtZTogY3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lLFxuICAgIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQ6IG51bGwsXG4gICAgbGF0ZXN0X3ZlcnNpb246IG51bGwsXG4gICAgbGljZW5zZTogbnVsbCxcbiAgICB3ZWJzaXRlOiBudWxsLFxuICAgIGlzX3NvdXJjZV9mcm9tX2dpdGh1YjogZmFsc2UsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB1bnNjb3BlZF9uYW1lOiBzb3VyY2VQYWNrYWdlLnVuc2NvcGVkX25hbWUsXG4gICAgc3Rhcl9jb3VudDogMCxcbiAgICBhaV9kZXNjcmlwdGlvbjogc291cmNlUGFja2FnZS5haV9kZXNjcmlwdGlvbiB8fCBcImZvcmtlZCBwYWNrYWdlXCIsXG4gICAgaXNfcHJpdmF0ZTogaXNfcHJpdmF0ZSxcbiAgICBpc19wdWJsaWM6ICFpc19wcml2YXRlLFxuICAgIGlzX3VubGlzdGVkLFxuICAgIGFpX3VzYWdlX2luc3RydWN0aW9uczogXCJmb3JrZWQgcGFja2FnZSB1c2FnZVwiLFxuICAgIGlzX2JvYXJkOiBCb29sZWFuKHNvdXJjZVBhY2thZ2UuaXNfYm9hcmQpLFxuICAgIGlzX3BhY2thZ2U6IHRydWUsXG4gICAgaXNfbW9kZWw6IEJvb2xlYW4oc291cmNlUGFja2FnZS5pc19tb2RlbCksXG4gICAgaXNfZm9vdHByaW50OiBCb29sZWFuKHNvdXJjZVBhY2thZ2UuaXNfZm9vdHByaW50KSxcbiAgICBpc19zbmlwcGV0OiBCb29sZWFuKHNvdXJjZVBhY2thZ2UuaXNfc25pcHBldCksXG4gIH0pXG5cbiAgaWYgKCFmb3JrZWRQYWNrYWdlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig1MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiZmFpbGVkX3RvX2NyZWF0ZV9mb3JrZWRfcGFja2FnZVwiLFxuICAgICAgbWVzc2FnZTogXCJGYWlsZWQgdG8gY3JlYXRlIGZvcmtlZCBwYWNrYWdlXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENyZWF0ZSBhIG5ldyBwYWNrYWdlIHJlbGVhc2UgZm9yIHRoZSBmb3JrZWQgcGFja2FnZVxuICBjb25zdCBmb3JrZWRQYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5hZGRQYWNrYWdlUmVsZWFzZSh7XG4gICAgcGFja2FnZV9pZDogZm9ya2VkUGFja2FnZS5wYWNrYWdlX2lkLFxuICAgIHZlcnNpb246IHNvdXJjZVBhY2thZ2VSZWxlYXNlLnZlcnNpb24sXG4gICAgaXNfbG9ja2VkOiBmYWxzZSxcbiAgICBpc19sYXRlc3Q6IHRydWUsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGNvbW1pdF9zaGE6IG51bGwsXG4gICAgbGljZW5zZTogc291cmNlUGFja2FnZVJlbGVhc2UubGljZW5zZSB8fCBudWxsLFxuICB9KVxuXG4gIC8vIFVwZGF0ZSB0aGUgZm9ya2VkIHBhY2thZ2Ugd2l0aCByZWxlYXNlIGluZm9cbiAgZm9ya2VkUGFja2FnZS5sYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkID1cbiAgICBmb3JrZWRQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWRcbiAgZm9ya2VkUGFja2FnZS5sYXRlc3RfdmVyc2lvbiA9IGZvcmtlZFBhY2thZ2VSZWxlYXNlLnZlcnNpb24gfHwgbnVsbFxuXG4gIC8vIENvcHkgYWxsIGZpbGVzIGZyb20gdGhlIHNvdXJjZSBwYWNrYWdlIHJlbGVhc2UgdG8gdGhlIGZvcmtlZCBwYWNrYWdlIHJlbGVhc2VcbiAgZm9yIChjb25zdCBzb3VyY2VGaWxlIG9mIHNvdXJjZUZpbGVzKSB7XG4gICAgY3R4LmRiLmFkZFBhY2thZ2VGaWxlKHtcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogZm9ya2VkUGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgZmlsZV9wYXRoOiBzb3VyY2VGaWxlLmZpbGVfcGF0aCxcbiAgICAgIGNvbnRlbnRfdGV4dDogc291cmNlRmlsZS5jb250ZW50X3RleHQsXG4gICAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgcGFja2FnZTogcHVibGljTWFwUGFja2FnZShmb3JrZWRQYWNrYWdlKSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgcGFja2FnZVNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyBwdWJsaWNNYXBQYWNrYWdlIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9wdWJsaWMtbWFwcGluZy9wdWJsaWMtbWFwLXBhY2thZ2VcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCIsIFwiUE9TVFwiXSxcbiAgYXV0aDogXCJvcHRpb25hbF9zZXNzaW9uXCIsXG4gIGNvbW1vblBhcmFtczogei5vYmplY3Qoe1xuICAgIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBuYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBqc29uQm9keTogei5hbnkoKS5vcHRpb25hbCgpLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgcGFja2FnZTogcGFja2FnZVNjaGVtYVxuICAgICAgLmV4dGVuZCh7XG4gICAgICAgIGlzX3N0YXJyZWQ6IHouYm9vbGVhbigpLFxuICAgICAgfSlcbiAgICAgIC5vcHRpb25hbCgpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IHBhY2thZ2VfaWQsIG5hbWUgfSA9IHJlcS5jb21tb25QYXJhbXNcbiAgY29uc3QgYXV0aCA9IFwiYXV0aFwiIGluIGN0eCAmJiBjdHguYXV0aCA/IGN0eC5hdXRoIDogbnVsbFxuXG4gIGNvbnN0IGZvdW5kUGFja2FnZSA9XG4gICAgKHBhY2thZ2VfaWQgJiYgY3R4LmRiLmdldFBhY2thZ2VCeUlkKHBhY2thZ2VfaWQpKSB8fFxuICAgIGN0eC5kYi5wYWNrYWdlcy5maW5kKChwKSA9PiBwLm5hbWUgPT09IG5hbWUpXG5cbiAgaWYgKCFmb3VuZFBhY2thZ2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogYFBhY2thZ2Ugbm90IGZvdW5kIChzZWFyY2hlZCB1c2luZyAke0pTT04uc3RyaW5naWZ5KHJlcS5jb21tb25QYXJhbXMpfSlgLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICAgIHBhY2thZ2U6IHtcbiAgICAgIC4uLnB1YmxpY01hcFBhY2thZ2UoZm91bmRQYWNrYWdlKSxcbiAgICAgIGlzX3N0YXJyZWQ6IGF1dGhcbiAgICAgICAgPyBjdHguZGIuaGFzU3RhcnJlZChhdXRoLmFjY291bnRfaWQsIGZvdW5kUGFja2FnZS5wYWNrYWdlX2lkKVxuICAgICAgICA6IGZhbHNlLFxuICAgIH0sXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHBhY2thZ2VTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCIsIFwiUE9TVFwiXSxcbiAgYXV0aDogXCJvcHRpb25hbF9zZXNzaW9uXCIsXG4gIGNvbW1vblBhcmFtczogei5vYmplY3Qoe1xuICAgIGNyZWF0b3JfYWNjb3VudF9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIG93bmVyX2dpdGh1Yl91c2VybmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGlzX3dyaXRhYmxlOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIG5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBwYWNrYWdlczogei5hcnJheShwYWNrYWdlU2NoZW1hKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBjcmVhdG9yX2FjY291bnRfaWQsIG93bmVyX2dpdGh1Yl91c2VybmFtZSwgbmFtZSwgaXNfd3JpdGFibGUgfSA9XG4gICAgcmVxLmNvbW1vblBhcmFtc1xuXG4gIGNvbnN0IGF1dGggPSBcImF1dGhcIiBpbiBjdHggJiYgY3R4LmF1dGggPyBjdHguYXV0aCA6IG51bGxcblxuICBpZiAoIWF1dGggJiYgIWlzX3dyaXRhYmxlICYmICFjcmVhdG9yX2FjY291bnRfaWQgJiYgIW93bmVyX2dpdGh1Yl91c2VybmFtZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImludmFsaWRfcmVxdWVzdFwiLFxuICAgICAgbWVzc2FnZTogXCJZb3UgbXVzdCBwcm92aWRlIHNvbWUgZmlsdGVyaW5nIHBhcmFtZXRlcnMgb3IgYmUgbG9nZ2VkIGluXCIsXG4gICAgfSlcbiAgfVxuXG4gIGxldCBwYWNrYWdlcyA9IGN0eC5kYi5wYWNrYWdlc1xuXG4gIC8vIEFwcGx5IGZpbHRlcnNcbiAgaWYgKGNyZWF0b3JfYWNjb3VudF9pZCkge1xuICAgIHBhY2thZ2VzID0gcGFja2FnZXMuZmlsdGVyKFxuICAgICAgKHApID0+IHAuY3JlYXRvcl9hY2NvdW50X2lkID09PSBjcmVhdG9yX2FjY291bnRfaWQsXG4gICAgKVxuICB9XG4gIGlmIChvd25lcl9naXRodWJfdXNlcm5hbWUpIHtcbiAgICBwYWNrYWdlcyA9IHBhY2thZ2VzLmZpbHRlcihcbiAgICAgIChwKSA9PiBwLm93bmVyX2dpdGh1Yl91c2VybmFtZSA9PT0gb3duZXJfZ2l0aHViX3VzZXJuYW1lLFxuICAgIClcbiAgfVxuICBpZiAobmFtZSkge1xuICAgIHBhY2thZ2VzID0gcGFja2FnZXMuZmlsdGVyKChwKSA9PiBwLm5hbWUgPT09IG5hbWUpXG4gIH1cblxuICBpZiAoaXNfd3JpdGFibGUgJiYgYXV0aCkge1xuICAgIHBhY2thZ2VzID0gcGFja2FnZXMuZmlsdGVyKChwKSA9PiBwLm93bmVyX29yZ19pZCA9PT0gYXV0aC5wZXJzb25hbF9vcmdfaWQpXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICAgIHBhY2thZ2VzOiBwYWNrYWdlcy5tYXAoKHApID0+ICh7XG4gICAgICAuLi5wLFxuICAgICAgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZDogcC5sYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkIHx8IG51bGwsXG4gICAgfSkpLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBwYWNrYWdlX2lkOiB6LnN0cmluZygpLFxuICAgIH0pXG4gICAgLm9yKHoub2JqZWN0KHsgbmFtZTogei5zdHJpbmcoKSB9KSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgbGV0IHBhY2thZ2VJZDogc3RyaW5nXG5cbiAgLy8gR2V0IHBhY2thZ2UgSUQgZWl0aGVyIGRpcmVjdGx5IG9yIGJ5IG5hbWVcbiAgaWYgKFwicGFja2FnZV9pZFwiIGluIHJlcS5qc29uQm9keSkge1xuICAgIGNvbnN0IGJvZHkgPSByZXEuanNvbkJvZHlcbiAgICBwYWNrYWdlSWQgPSBib2R5LnBhY2thZ2VfaWRcbiAgfSBlbHNlIHtcbiAgICAvLyBJZiBuYW1lIGlzIHByb3ZpZGVkLCBsb29rIHVwIHRoZSBwYWNrYWdlX2lkXG4gICAgY29uc3QgYm9keSA9IHJlcS5qc29uQm9keVxuICAgIGNvbnN0IHBhY2thZ2VEYXRhID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHBrZykgPT4gcGtnLm5hbWUgPT09IGJvZHkubmFtZSlcblxuICAgIGlmICghcGFja2FnZURhdGEpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIG5vdCBmb3VuZFwiLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBwYWNrYWdlSWQgPSBwYWNrYWdlRGF0YS5wYWNrYWdlX2lkXG4gIH1cblxuICAvLyBDaGVjayBpZiBwYWNrYWdlIGV4aXN0cyAoZXh0cmEgY2hlY2sgZm9yIElELWJhc2VkIGxvb2t1cClcbiAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHApID0+IHAucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkKVxuXG4gIGlmICghcGtnKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgYWxyZWFkeSBzdGFycmVkXG4gIGNvbnN0IGV4aXN0aW5nID0gY3R4LmRiLmFjY291bnRQYWNrYWdlcy5maW5kKFxuICAgIChhcCkgPT5cbiAgICAgIGFwLmFjY291bnRfaWQgPT09IGN0eC5hdXRoLmFjY291bnRfaWQgJiYgYXAucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkLFxuICApXG5cbiAgaWYgKCFleGlzdGluZz8uaXNfc3RhcnJlZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm5vdF9zdGFycmVkXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBoYXZlIG5vdCBzdGFycmVkIHRoaXMgcGFja2FnZVwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBVcGRhdGUgdGhlIHBhY2thZ2UncyBzdGFyIGNvdW50XG4gIHBrZy5zdGFyX2NvdW50ID0gTWF0aC5tYXgoMCwgKHBrZy5zdGFyX2NvdW50IHx8IDApIC0gMSlcblxuICAvLyBSZW1vdmUgc3RhciBieSB1cGRhdGluZyBpc19zdGFycmVkIHRvIGZhbHNlXG4gIGV4aXN0aW5nLmlzX3N0YXJyZWQgPSBmYWxzZVxuICBleGlzdGluZy51cGRhdGVkX2F0ID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgcGFja2FnZVNjaGVtYSB9IGZyb20gXCIuLi8uLi8uLi9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiLi4vLi4vLi4vbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCksXG4gICAgICBuYW1lOiB6XG4gICAgICAgIC5zdHJpbmcoKVxuICAgICAgICAucmVnZXgoXG4gICAgICAgICAgL15bQGEtekEtWjAtOS1fXFwvXSskLyxcbiAgICAgICAgICBcIlBhY2thZ2UgbmFtZSBjYW4gb25seSBjb250YWluIGxldHRlcnMsIG51bWJlcnMsIGh5cGhlbnMsIHVuZGVyc2NvcmVzLCBhbmQgZm9yd2FyZCBzbGFzaGVzXCIsXG4gICAgICAgIClcbiAgICAgICAgLnRyYW5zZm9ybSgobmFtZSkgPT4gbmFtZS5yZXBsYWNlKC9eQC8sIFwiXCIpKVxuICAgICAgICAub3B0aW9uYWwoKSxcbiAgICAgIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICB3ZWJzaXRlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBpc19wcml2YXRlOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgICAgaXNfdW5saXN0ZWQ6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgfSlcbiAgICAudHJhbnNmb3JtKChkYXRhKSA9PiAoe1xuICAgICAgLi4uZGF0YSxcbiAgICAgIGlzX3VubGlzdGVkOiBkYXRhLmlzX3ByaXZhdGUgPyB0cnVlIDogZGF0YS5pc191bmxpc3RlZCxcbiAgICB9KSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBwYWNrYWdlOiBwYWNrYWdlU2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IHBhY2thZ2VfaWQsIG5hbWUsIGRlc2NyaXB0aW9uLCB3ZWJzaXRlLCBpc19wcml2YXRlLCBpc191bmxpc3RlZCB9ID1cbiAgICByZXEuanNvbkJvZHlcblxuICBjb25zdCBwYWNrYWdlSW5kZXggPSBjdHguZGIucGFja2FnZXMuZmluZEluZGV4KFxuICAgIChwKSA9PiBwLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VfaWQsXG4gIClcblxuICBpZiAocGFja2FnZUluZGV4ID09PSAtMSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGV4aXN0aW5nUGFja2FnZSA9IGN0eC5kYi5wYWNrYWdlc1twYWNrYWdlSW5kZXhdXG5cbiAgLy8gQ2hlY2sgaWYgdXNlciBoYXMgcGVybWlzc2lvbiB0byB1cGRhdGUgdGhlIHBhY2thZ2VcbiAgaWYgKGV4aXN0aW5nUGFja2FnZS5jcmVhdG9yX2FjY291bnRfaWQgIT09IGN0eC5hdXRoLmFjY291bnRfaWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMywge1xuICAgICAgZXJyb3JfY29kZTogXCJmb3JiaWRkZW5cIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byB1cGRhdGUgdGhpcyBwYWNrYWdlXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENoZWNrIGZvciBkdXBsaWNhdGUgcGFja2FnZSBuYW1lIGlmIG5hbWUgaXMgYmVpbmcgdXBkYXRlZFxuICBpZiAobmFtZSkge1xuICAgIGNvbnN0IG5ld0Z1bGxOYW1lID0gYCR7Y3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lfS8ke25hbWV9YFxuICAgIGNvbnN0IGR1cGxpY2F0ZVBhY2thZ2UgPSBjdHguZGIucGFja2FnZXMuZmluZChcbiAgICAgIChwKSA9PiBwLm5hbWUgPT09IG5ld0Z1bGxOYW1lICYmIHAucGFja2FnZV9pZCAhPT0gcGFja2FnZV9pZCxcbiAgICApXG4gICAgaWYgKGR1cGxpY2F0ZVBhY2thZ2UpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9hbHJlYWR5X2V4aXN0c1wiLFxuICAgICAgICBtZXNzYWdlOiBcIkEgcGFja2FnZSB3aXRoIHRoaXMgbmFtZSBhbHJlYWR5IGV4aXN0c1wiLFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBjb25zdCB1cGRhdGVkUGFja2FnZSA9IGN0eC5kYi51cGRhdGVQYWNrYWdlKHBhY2thZ2VfaWQsIHtcbiAgICBuYW1lOiBuYW1lID8gYCR7Y3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lfS8ke25hbWV9YCA6IGV4aXN0aW5nUGFja2FnZS5uYW1lLFxuICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiA/PyBleGlzdGluZ1BhY2thZ2UuZGVzY3JpcHRpb24sXG4gICAgdW5zY29wZWRfbmFtZTogbmFtZSA/PyBleGlzdGluZ1BhY2thZ2UudW5zY29wZWRfbmFtZSxcbiAgICB3ZWJzaXRlOiB3ZWJzaXRlID8/IGV4aXN0aW5nUGFja2FnZS53ZWJzaXRlLFxuICAgIGlzX3ByaXZhdGU6IGlzX3ByaXZhdGUgPz8gZXhpc3RpbmdQYWNrYWdlLmlzX3ByaXZhdGUsXG4gICAgaXNfcHVibGljOlxuICAgICAgaXNfcHJpdmF0ZSAhPT0gdW5kZWZpbmVkID8gIWlzX3ByaXZhdGUgOiBleGlzdGluZ1BhY2thZ2UuaXNfcHVibGljLFxuICAgIGlzX3VubGlzdGVkOiBpc191bmxpc3RlZCA/PyBleGlzdGluZ1BhY2thZ2UuaXNfdW5saXN0ZWQsXG4gICAgdXBkYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICB9KVxuXG4gIGlmICghdXBkYXRlZFBhY2thZ2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDUwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJ1cGRhdGVfZmFpbGVkXCIsXG4gICAgICBtZXNzYWdlOiBcIkZhaWxlZCB0byB1cGRhdGUgcGFja2FnZVwiLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICAgIHBhY2thZ2U6IHVwZGF0ZWRQYWNrYWdlLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgc25pcHBldF9pZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBzbmlwcGV0X2lkIH0gPSByZXEuanNvbkJvZHlcblxuICAvLyBDaGVjayBpZiBzbmlwcGV0IGV4aXN0cyAoYXMgYSBwYWNrYWdlKVxuICBjb25zdCBzbmlwcGV0ID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoXG4gICAgKHBrZykgPT4gcGtnLnBhY2thZ2VfaWQgPT09IHNuaXBwZXRfaWQgJiYgcGtnLmlzX3NuaXBwZXQgPT09IHRydWUsXG4gIClcblxuICBpZiAoIXNuaXBwZXQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzbmlwcGV0X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJTbmlwcGV0IG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiBhbHJlYWR5IHN0YXJyZWRcbiAgY29uc3QgZXhpc3RpbmcgPSBjdHguZGIuYWNjb3VudFBhY2thZ2VzLmZpbmQoXG4gICAgKGFwKSA9PlxuICAgICAgYXAuYWNjb3VudF9pZCA9PT0gY3R4LmF1dGguYWNjb3VudF9pZCAmJiBhcC5wYWNrYWdlX2lkID09PSBzbmlwcGV0X2lkLFxuICApXG5cbiAgaWYgKGV4aXN0aW5nPy5pc19zdGFycmVkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiYWxyZWFkeV9zdGFycmVkXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBoYXZlIGFscmVhZHkgc3RhcnJlZCB0aGlzIHNuaXBwZXRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gVXBkYXRlIHRoZSBwYWNrYWdlJ3Mgc3RhciBjb3VudFxuICBzbmlwcGV0LnN0YXJfY291bnQgPSAoc25pcHBldC5zdGFyX2NvdW50IHx8IDApICsgMVxuXG4gIGlmIChleGlzdGluZykge1xuICAgIC8vIElmIHJlY29yZCBleGlzdHMgYnV0IGlzX3N0YXJyZWQgaXMgZmFsc2UsIHVwZGF0ZSB0byBpc19zdGFycmVkPXRydWVcbiAgICBleGlzdGluZy5pc19zdGFycmVkID0gdHJ1ZVxuICAgIGV4aXN0aW5nLnVwZGF0ZWRfYXQgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKClcbiAgfSBlbHNlIHtcbiAgICAvLyBBZGQgc3RhciBieSBjcmVhdGluZyBhIG5ldyBhY2NvdW50X3BhY2thZ2UgcmVjb3JkXG4gICAgY3R4LmRiLmFkZEFjY291bnRQYWNrYWdlKHtcbiAgICAgIGFjY291bnRfaWQ6IGN0eC5hdXRoLmFjY291bnRfaWQsXG4gICAgICBwYWNrYWdlX2lkOiBzbmlwcGV0X2lkLFxuICAgICAgaXNfc3RhcnJlZDogdHJ1ZSxcbiAgICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgc25pcHBldFNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICB1bnNjb3BlZF9uYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgY29kZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHNuaXBwZXRfdHlwZTogei5lbnVtKFtcImJvYXJkXCIsIFwicGFja2FnZVwiLCBcIm1vZGVsXCIsIFwiZm9vdHByaW50XCJdKSxcbiAgICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGNvbXBpbGVkX2pzOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgY2lyY3VpdF9qc29uOiB6LmFycmF5KHoucmVjb3JkKHouYW55KCkpKS5vcHRpb25hbCgpLm51bGxhYmxlKCksXG4gICAgZHRzOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgaXNfcHJpdmF0ZTogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICBpc19wdWJsaWM6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgaXNfdW5saXN0ZWQ6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgc25pcHBldDogc25pcHBldFNjaGVtYS5vcHRpb25hbCgpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBsZXQge1xuICAgIHVuc2NvcGVkX25hbWUsXG4gICAgY29kZSA9IFwiXCIsXG4gICAgc25pcHBldF90eXBlLFxuICAgIGRlc2NyaXB0aW9uID0gXCJcIixcbiAgICBjb21waWxlZF9qcyxcbiAgICBjaXJjdWl0X2pzb24sXG4gICAgZHRzLFxuICAgIGlzX3ByaXZhdGUsXG4gICAgaXNfcHVibGljLFxuICAgIGlzX3VubGlzdGVkLFxuICB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKVxuICBjb25zdCBjdXJyZW50VGltZSA9IG5ldyBEYXRlKHRpbWVzdGFtcCkudG9JU09TdHJpbmcoKVxuXG4gIGlmICghdW5zY29wZWRfbmFtZSkge1xuICAgIC8vIENvdW50IHNuaXBwZXRzIG9mIHRoaXMgdHlwZSBmb3IgdGhpcyB1c2VyXG4gICAgY29uc3QgdXNlclNuaXBwZXRzID0gY3R4LmRiLnBhY2thZ2VzLmZpbHRlcihcbiAgICAgIChwKSA9PlxuICAgICAgICBwLm93bmVyX2dpdGh1Yl91c2VybmFtZSA9PT0gY3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lICYmXG4gICAgICAgIHAuaXNfc25pcHBldCA9PT0gdHJ1ZSAmJlxuICAgICAgICAoKHAuaXNfYm9hcmQgJiYgc25pcHBldF90eXBlID09PSBcImJvYXJkXCIpIHx8XG4gICAgICAgICAgKHAuaXNfcGFja2FnZSAmJiBzbmlwcGV0X3R5cGUgPT09IFwicGFja2FnZVwiKSB8fFxuICAgICAgICAgIChwLmlzX21vZGVsICYmIHNuaXBwZXRfdHlwZSA9PT0gXCJtb2RlbFwiKSB8fFxuICAgICAgICAgIChwLmlzX2Zvb3RwcmludCAmJiBzbmlwcGV0X3R5cGUgPT09IFwiZm9vdHByaW50XCIpKSxcbiAgICApXG4gICAgdW5zY29wZWRfbmFtZSA9IGB1bnRpdGxlZC0ke3NuaXBwZXRfdHlwZX0tJHt1c2VyU25pcHBldHMubGVuZ3RoICsgMX1gXG4gIH1cblxuICBjb25zdCBleGlzdGluZ1BhY2thZ2UgPSBjdHguZGIucGFja2FnZXMuZmluZChcbiAgICAocGtnKSA9PlxuICAgICAgcGtnLnVuc2NvcGVkX25hbWUgPT09IHVuc2NvcGVkX25hbWUgJiZcbiAgICAgIHBrZy5vd25lcl9naXRodWJfdXNlcm5hbWUgPT09IGN0eC5hdXRoLmdpdGh1Yl91c2VybmFtZSxcbiAgKVxuXG4gIGlmIChleGlzdGluZ1BhY2thZ2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzbmlwcGV0X2FscmVhZHlfZXhpc3RzXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBoYXZlIGFscmVhZHkgZm9ya2VkIHRoaXMgc25pcHBldCBpbiB5b3VyIGFjY291bnQuXCIsXG4gICAgfSlcbiAgfVxuXG4gIHRyeSB7XG4gICAgLy8gQ3JlYXRlIHRoZSBwYWNrYWdlIGRpcmVjdGx5ICh3aGljaCB3aWxsIHNlcnZlIGFzIG91ciBzbmlwcGV0KVxuICAgIGNvbnN0IG5ld1BhY2thZ2UgPSBjdHguZGIuYWRkUGFja2FnZSh7XG4gICAgICBjcmVhdG9yX2FjY291bnRfaWQ6IGN0eC5hdXRoLmFjY291bnRfaWQsXG4gICAgICBvd25lcl9vcmdfaWQ6IGN0eC5hdXRoLnBlcnNvbmFsX29yZ19pZCxcbiAgICAgIG93bmVyX2dpdGh1Yl91c2VybmFtZTogY3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lLFxuICAgICAgaXNfc291cmNlX2Zyb21fZ2l0aHViOiBmYWxzZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbixcbiAgICAgIG5hbWU6IGAke2N0eC5hdXRoLmdpdGh1Yl91c2VybmFtZX0vJHt1bnNjb3BlZF9uYW1lfWAsXG4gICAgICB1bnNjb3BlZF9uYW1lOiB1bnNjb3BlZF9uYW1lLFxuICAgICAgbGF0ZXN0X3ZlcnNpb246IFwiMC4wLjFcIixcbiAgICAgIGxpY2Vuc2U6IG51bGwsXG4gICAgICBzdGFyX2NvdW50OiAwLFxuICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICB1cGRhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIGFpX2Rlc2NyaXB0aW9uOiBudWxsLFxuICAgICAgaXNfc25pcHBldDogdHJ1ZSxcbiAgICAgIGlzX2JvYXJkOiBzbmlwcGV0X3R5cGUgPT09IFwiYm9hcmRcIixcbiAgICAgIGlzX3BhY2thZ2U6IHNuaXBwZXRfdHlwZSA9PT0gXCJwYWNrYWdlXCIsXG4gICAgICBpc19tb2RlbDogc25pcHBldF90eXBlID09PSBcIm1vZGVsXCIsXG4gICAgICBpc19mb290cHJpbnQ6IHNuaXBwZXRfdHlwZSA9PT0gXCJmb290cHJpbnRcIixcbiAgICAgIHNuaXBwZXRfdHlwZTogc25pcHBldF90eXBlLFxuICAgICAgaXNfcHJpdmF0ZTogaXNfcHJpdmF0ZSB8fCBmYWxzZSxcbiAgICAgIGlzX3B1YmxpYzogaXNfcHVibGljIHx8IHRydWUsXG4gICAgICBpc191bmxpc3RlZDogaXNfdW5saXN0ZWQgfHwgZmFsc2UsXG4gICAgICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkOiBudWxsLFxuICAgICAgYWlfdXNhZ2VfaW5zdHJ1Y3Rpb25zOiBcInBsYWNlaG9sZGVyIGFpIHVzYWdlIGluc3RydWN0aW9uc1wiLFxuICAgIH0pXG5cbiAgICBjb25zdCBuZXdQYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5hZGRQYWNrYWdlUmVsZWFzZSh7XG4gICAgICBwYWNrYWdlX2lkOiBuZXdQYWNrYWdlLnBhY2thZ2VfaWQsXG4gICAgICB2ZXJzaW9uOiBcIjAuMC4xXCIsXG4gICAgICBpc19sYXRlc3Q6IHRydWUsXG4gICAgICBpc19sb2NrZWQ6IGZhbHNlLFxuICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgfSlcblxuICAgIGN0eC5kYi51cGRhdGVQYWNrYWdlKG5ld1BhY2thZ2UucGFja2FnZV9pZCwge1xuICAgICAgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZDogbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgIH0pXG5cbiAgICAvLyBBZGQgcGFja2FnZSBmaWxlc1xuICAgIC8vIEFkZCBpbmRleC50c3ggZmlsZSB3aXRoIHRoZSBjb2RlIGNvbnRlbnRcbiAgICBjdHguZGIuYWRkUGFja2FnZUZpbGUoe1xuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBuZXdQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICBmaWxlX3BhdGg6IFwiaW5kZXgudHN4XCIsXG4gICAgICBjb250ZW50X3RleHQ6IGNvZGUsXG4gICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICB9KVxuXG4gICAgLy8gQWRkIERUUyBmaWxlIGlmIHByb3ZpZGVkXG4gICAgaWYgKGR0cykge1xuICAgICAgY3R4LmRiLmFkZFBhY2thZ2VGaWxlKHtcbiAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBuZXdQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgIGZpbGVfcGF0aDogXCIvZGlzdC9pbmRleC5kLnRzXCIsXG4gICAgICAgIGNvbnRlbnRfdGV4dDogZHRzLFxuICAgICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gQWRkIGNvbXBpbGVkIEpTIGlmIHByb3ZpZGVkXG4gICAgaWYgKGNvbXBpbGVkX2pzKSB7XG4gICAgICBjdHguZGIuYWRkUGFja2FnZUZpbGUoe1xuICAgICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IG5ld1BhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgICAgZmlsZV9wYXRoOiBcIi9kaXN0L2luZGV4LmpzXCIsXG4gICAgICAgIGNvbnRlbnRfdGV4dDogY29tcGlsZWRfanMsXG4gICAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyBBZGQgY2lyY3VpdCBKU09OIGlmIHByb3ZpZGVkXG4gICAgaWYgKGNpcmN1aXRfanNvbikge1xuICAgICAgY3R4LmRiLmFkZFBhY2thZ2VGaWxlKHtcbiAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBuZXdQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgIGZpbGVfcGF0aDogXCIvZGlzdC9jaXJjdWl0Lmpzb25cIixcbiAgICAgICAgY29udGVudF90ZXh0OiBKU09OLnN0cmluZ2lmeShjaXJjdWl0X2pzb24pLFxuICAgICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIHRoZSBzbmlwcGV0IHJlc3BvbnNlIG9iamVjdFxuICAgIGNvbnN0IHNuaXBwZXRSZXNwb25zZSA9IHtcbiAgICAgIHNuaXBwZXRfaWQ6IG5ld1BhY2thZ2UucGFja2FnZV9pZCxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgbmFtZTogbmV3UGFja2FnZS5uYW1lLFxuICAgICAgdW5zY29wZWRfbmFtZTogbmV3UGFja2FnZS51bnNjb3BlZF9uYW1lLFxuICAgICAgb3duZXJfbmFtZTogY3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lLFxuICAgICAgY29kZSxcbiAgICAgIGR0cyxcbiAgICAgIGNvbXBpbGVkX2pzLFxuICAgICAgc3Rhcl9jb3VudDogMCxcbiAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgdXBkYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICBzbmlwcGV0X3R5cGU6IHNuaXBwZXRfdHlwZSxcbiAgICAgIGNpcmN1aXRfanNvbjogY2lyY3VpdF9qc29uIHx8IFtdLFxuICAgICAgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uLFxuICAgICAgaXNfc3RhcnJlZDogZmFsc2UsXG4gICAgICB2ZXJzaW9uOiBcIjAuMC4xXCIsXG4gICAgICBpc19wcml2YXRlOiBpc19wcml2YXRlIHx8IGZhbHNlLFxuICAgICAgaXNfcHVibGljOiBpc19wdWJsaWMgfHwgdHJ1ZSxcbiAgICAgIGlzX3VubGlzdGVkOiBpc191bmxpc3RlZCB8fCBmYWxzZSxcbiAgICB9XG5cbiAgICByZXR1cm4gY3R4Lmpzb24oe1xuICAgICAgb2s6IHRydWUsXG4gICAgICBzbmlwcGV0OiBzbmlwcGV0UmVzcG9uc2UsXG4gICAgfSlcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDUwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzbmlwcGV0X2NyZWF0aW9uX2ZhaWxlZFwiLFxuICAgICAgbWVzc2FnZTogYEZhaWxlZCB0byBjcmVhdGUgc25pcHBldDogJHtlcnJvcn1gLFxuICAgIH0pXG4gIH1cbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIHNuaXBwZXRfaWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgc25pcHBldF9pZCB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgY29uc3Qgc25pcHBldEluZGV4ID0gY3R4LmRiLnBhY2thZ2VzLmZpbmRJbmRleChcbiAgICAocykgPT4gcy5wYWNrYWdlX2lkID09PSBzbmlwcGV0X2lkLFxuICApXG5cbiAgaWYgKHNuaXBwZXRJbmRleCA9PT0gLTEpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzbmlwcGV0X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJTbmlwcGV0IG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBzbmlwcGV0ID0gY3R4LmRiLnBhY2thZ2VzW3NuaXBwZXRJbmRleF1cblxuICBpZiAoc25pcHBldC5jcmVhdG9yX2FjY291bnRfaWQgIT09IGN0eC5hdXRoLmdpdGh1Yl91c2VybmFtZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAzLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImZvcmJpZGRlblwiLFxuICAgICAgbWVzc2FnZTogXCJZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGRlbGV0ZSB0aGlzIHNuaXBwZXRcIixcbiAgICB9KVxuICB9XG5cbiAgY3R4LmRiLnBhY2thZ2VzLnNwbGljZShzbmlwcGV0SW5kZXgsIDEpXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIHF1ZXJ5UGFyYW1zOiB6Lm9iamVjdCh7XG4gICAganNkZWxpdnJfcmVzb2x2ZTogelxuICAgICAgLmVudW0oW1widHJ1ZVwiLCBcImZhbHNlXCJdKVxuICAgICAgLm9wdGlvbmFsKClcbiAgICAgIC50cmFuc2Zvcm0oKHYpID0+IHYgPT09IFwidHJ1ZVwiKSxcbiAgICBqc2RlbGl2cl9wYXRoOiB6LnN0cmluZygpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6LmFueSgpLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsganNkZWxpdnJfcGF0aCwganNkZWxpdnJfcmVzb2x2ZSB9ID0gcmVxLnF1ZXJ5XG5cbiAgLy8gUGFyc2UgdGhlIGZpbGUgcGF0aFxuICBjb25zdCBbb3duZXIsIHBhY2thZ2VXaXRoVmVyc2lvbiwgLi4ucmVzdF0gPSBqc2RlbGl2cl9wYXRoLnNwbGl0KFwiL1wiKVxuICBjb25zdCBbcGFja2FnZU5hbWUsIHZlcnNpb25dID0gcGFja2FnZVdpdGhWZXJzaW9uLnNwbGl0KFwiQFwiKVxuICBjb25zdCBmaWxlTmFtZSA9IHJlc3Quam9pbihcIi9cIilcblxuICAvLyBGaW5kIHRoZSBzbmlwcGV0XG4gIGNvbnN0IF9wYWNrYWdlID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoXG4gICAgKHMpID0+IHMub3duZXJfZ2l0aHViX3VzZXJuYW1lID09PSBvd25lciAmJiBzLnVuc2NvcGVkX25hbWUgPT09IHBhY2thZ2VOYW1lLFxuICApXG5cbiAgY29uc3QgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgKHApID0+IHAucGFja2FnZV9pZCA9PT0gX3BhY2thZ2U/LnBhY2thZ2VfaWQsXG4gIClcblxuICBjb25zdCBwYWNrYWdlRmlsZXMgPSBjdHguZGIucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAocCkgPT4gcC5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlPy5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gIClcblxuICBpZiAoIV9wYWNrYWdlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwic25pcHBldF9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiU25pcHBldCBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgaWYgKCFmaWxlTmFtZSAmJiAhanNkZWxpdnJfcmVzb2x2ZSkge1xuICAgIHJldHVybiBuZXcgUmVzcG9uc2UoXG4gICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICBsYXRlc3Q6IFwiMC4wLjFcIixcbiAgICAgICAgfSxcbiAgICAgICAgdmVyc2lvbnM6IFtcIjAuMC4xXCJdLFxuICAgICAgfSksXG4gICAgICB7XG4gICAgICAgIHN0YXR1czogMjAwLFxuICAgICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICB9LFxuICAgIClcbiAgfSBlbHNlIGlmICghZmlsZU5hbWUgJiYganNkZWxpdnJfcmVzb2x2ZSkge1xuICAgIHJldHVybiBuZXcgUmVzcG9uc2UoXG4gICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIHZlcnNpb246IFwiMC4wLjFcIixcbiAgICAgIH0pLFxuICAgICAge1xuICAgICAgICBzdGF0dXM6IDIwMCxcbiAgICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgfSxcbiAgICApXG4gIH1cblxuICAvLyBJZiBubyBmaWxlTmFtZSBpcyBwcm92aWRlZCwgcmV0dXJuIHRoZSBkaXJlY3RvcnkgbGlzdGluZ1xuICBpZiAoIWZpbGVOYW1lIHx8IGZpbGVOYW1lID09PSBcImZsYXRcIikge1xuICAgIGNvbnN0IGZpbGVzID0gW1xuICAgICAge1xuICAgICAgICB0eXBlOiBcImZpbGVcIixcbiAgICAgICAgbmFtZTogXCJpbmRleC50c1wiLFxuICAgICAgICBoYXNoOiBcInBsYWNlaG9sZGVyX2hhc2hcIixcbiAgICAgICAgdGltZTogcGFja2FnZVJlbGVhc2U/LmNyZWF0ZWRfYXQsXG4gICAgICAgIHNpemU6IHBhY2thZ2VGaWxlcy5maW5kKChmKSA9PiBmLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c1wiKT8uY29udGVudF90ZXh0XG4gICAgICAgICAgPy5sZW5ndGgsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcImZpbGVcIixcbiAgICAgICAgbmFtZTogXCJpbmRleC5kLnRzXCIsXG4gICAgICAgIGhhc2g6IFwicGxhY2Vob2xkZXJfaGFzaFwiLFxuICAgICAgICB0aW1lOiBwYWNrYWdlUmVsZWFzZT8uY3JlYXRlZF9hdCxcbiAgICAgICAgc2l6ZTogcGFja2FnZUZpbGVzLmZpbmQoKGYpID0+IGYuZmlsZV9wYXRoID09PSBcImluZGV4LmQudHNcIilcbiAgICAgICAgICA/LmNvbnRlbnRfdGV4dD8ubGVuZ3RoLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJmaWxlXCIsXG4gICAgICAgIG5hbWU6IFwicGFja2FnZS5qc29uXCIsXG4gICAgICAgIGhhc2g6IFwicGxhY2Vob2xkZXJfaGFzaFwiLFxuICAgICAgICB0aW1lOiBwYWNrYWdlUmVsZWFzZT8uY3JlYXRlZF9hdCxcbiAgICAgICAgc2l6ZTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIG5hbWU6IGBAdHNjaS8ke293bmVyfS4ke3BhY2thZ2VOYW1lfWAsXG4gICAgICAgICAgdmVyc2lvbjogdmVyc2lvbiB8fCBcIjAuMC4xXCIsXG4gICAgICAgICAgbWFpbjogXCJpbmRleC50c1wiLFxuICAgICAgICAgIHR5cGVzOiBcImluZGV4LmQudHNcIixcbiAgICAgICAgfSkubGVuZ3RoLFxuICAgICAgfSxcbiAgICBdXG5cbiAgICBjb25zdCByZXNwb25zZSA9IHtcbiAgICAgIGRlZmF1bHQ6IFwiL2luZGV4LnRzXCIsXG4gICAgICBmaWxlczpcbiAgICAgICAgZmlsZU5hbWUgPT09IFwiZmxhdFwiXG4gICAgICAgICAgPyBmaWxlcy5tYXAoKGYpID0+ICh7XG4gICAgICAgICAgICAgIG5hbWU6IGAvJHtmLm5hbWV9YCxcbiAgICAgICAgICAgICAgaGFzaDogZi5oYXNoLFxuICAgICAgICAgICAgICB0aW1lOiBmLnRpbWUsXG4gICAgICAgICAgICAgIHNpemU6IGYuc2l6ZSxcbiAgICAgICAgICAgIH0pKVxuICAgICAgICAgIDogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJkaXJlY3RvcnlcIixcbiAgICAgICAgICAgICAgICBuYW1lOiBcIi5cIixcbiAgICAgICAgICAgICAgICBmaWxlczogZmlsZXMsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgIH1cblxuICAgIHJldHVybiBuZXcgUmVzcG9uc2UoSlNPTi5zdHJpbmdpZnkocmVzcG9uc2UsIG51bGwsIDIpLCB7XG4gICAgICBzdGF0dXM6IDIwMCxcbiAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICB9KVxuICB9XG5cbiAgLy8gSGFuZGxlIGZpbGUgZG93bmxvYWRzXG4gIGxldCBjb250ZW50OiBzdHJpbmdcbiAgc3dpdGNoIChmaWxlTmFtZSkge1xuICAgIGNhc2UgXCJpbmRleC50c1wiOlxuICAgICAgY29udGVudCA9XG4gICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKChmKSA9PiBmLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIik/LmNvbnRlbnRfdGV4dCB8fFxuICAgICAgICBcIlwiXG4gICAgICBicmVha1xuICAgIGNhc2UgXCJpbmRleC5kLnRzXCI6XG4gICAgICBjb250ZW50ID1cbiAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoKGYpID0+IGYuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmQudHNcIilcbiAgICAgICAgICA/LmNvbnRlbnRfdGV4dCB8fCBcIlwiXG4gICAgICBicmVha1xuICAgIGNhc2UgXCJwYWNrYWdlLmpzb25cIjpcbiAgICAgIGNvbnRlbnQgPSBKU09OLnN0cmluZ2lmeShcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IGBAdHNjaS8ke293bmVyfS4ke3BhY2thZ2VOYW1lfWAsXG4gICAgICAgICAgdmVyc2lvbjogdmVyc2lvbiB8fCBcIjAuMC4xXCIsXG4gICAgICAgICAgbWFpbjogXCJpbmRleC50c1wiLFxuICAgICAgICAgIHR5cGVzOiBcImluZGV4LmQudHNcIixcbiAgICAgICAgfSxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgMixcbiAgICAgIClcbiAgICAgIGJyZWFrXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwiZmlsZV9ub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogXCJSZXF1ZXN0ZWQgZmlsZSBub3QgZm91bmRcIixcbiAgICAgIH0pXG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3BvbnNlKGNvbnRlbnQsIHtcbiAgICBzdGF0dXM6IDIwMCxcbiAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwidGV4dC9wbGFpblwiIH0sXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBzbmlwcGV0U2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgZmV0Y2hFYXN5RURBQ29tcG9uZW50LCBjb252ZXJ0UmF3RWFzeUVkYVRvVHMgfSBmcm9tIFwiZWFzeWVkYVwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBqbGNwY2JfcGFydF9udW1iZXI6IHouc3RyaW5nKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBzbmlwcGV0OiBzbmlwcGV0U2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IGpsY3BjYl9wYXJ0X251bWJlciB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgdHJ5IHtcbiAgICAvLyBGZXRjaCB0aGUgRWFzeUVEQSBjb21wb25lbnQgZGF0YVxuICAgIGNvbnN0IHJhd0Vhc3lKc29uID0gYXdhaXQgZmV0Y2hFYXN5RURBQ29tcG9uZW50KGpsY3BjYl9wYXJ0X251bWJlcikuY2F0Y2goXG4gICAgICAoZSkgPT4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGluIGZldGNoRWFzeUVEQUNvbXBvbmVudDogJHtlLnRvU3RyaW5nKCl9YClcbiAgICAgIH0sXG4gICAgKVxuXG4gICAgLy8gQ29udmVydCB0byBUeXBlU2NyaXB0IFJlYWN0IGNvbXBvbmVudFxuICAgIGNvbnN0IHRzeENvbXBvbmVudCA9IGF3YWl0IGNvbnZlcnRSYXdFYXN5RWRhVG9UcyhyYXdFYXN5SnNvbikuY2F0Y2goKGUpID0+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRXJyb3IgaW4gY29udmVydFJhd0Vhc3lFZGFUb1RzICR7ZS50b1N0cmluZygpfWApXG4gICAgfSlcblxuICAgIC8vIENyZWF0ZSBhIG5ldyBzbmlwcGV0XG4gICAgY29uc3QgbmV3U25pcHBldCA9IHtcbiAgICAgIHNuaXBwZXRfaWQ6IGBzbmlwcGV0XyR7Y3R4LmRiLmlkQ291bnRlciArIDF9YCxcbiAgICAgIG5hbWU6IGAke2N0eC5hdXRoLmdpdGh1Yl91c2VybmFtZX0vJHtqbGNwY2JfcGFydF9udW1iZXJ9YCxcbiAgICAgIHVuc2NvcGVkX25hbWU6IGpsY3BjYl9wYXJ0X251bWJlcixcbiAgICAgIG93bmVyX25hbWU6IGN0eC5hdXRoLmdpdGh1Yl91c2VybmFtZSxcbiAgICAgIGNvZGU6IHRzeENvbXBvbmVudCxcbiAgICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIHNuaXBwZXRfdHlwZTogXCJwYWNrYWdlXCIsXG4gICAgICBkZXNjcmlwdGlvbjogYEdlbmVyYXRlZCBmcm9tIEpMQ1BDQiBwYXJ0IG51bWJlciAke2psY3BjYl9wYXJ0X251bWJlcn1gLFxuICAgIH1cblxuICAgIGN0eC5kYi5hZGRTbmlwcGV0KG5ld1NuaXBwZXQgYXMgYW55KVxuXG4gICAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICAgIHNuaXBwZXQ6IG5ld1NuaXBwZXQgYXMgYW55LFxuICAgIH0pXG4gIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDUwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJqbGNwY2JfZ2VuZXJhdGlvbl9mYWlsZWRcIixcbiAgICAgIG1lc3NhZ2U6IGBGYWlsZWQgdG8gZ2VuZXJhdGUgc25pcHBldCBmcm9tIEpMQ1BDQiBwYXJ0OiAke2Vycm9yLm1lc3NhZ2V9XFxuXFxuJHtlcnJvci5zdGFja31gLFxuICAgIH0pXG4gIH1cbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7XG4gIGNvbnZlcnRDaXJjdWl0SnNvblRvU2NoZW1hdGljU3ZnLFxuICBjb252ZXJ0Q2lyY3VpdEpzb25Ub1BjYlN2Zyxcbn0gZnJvbSBcImNpcmN1aXQtdG8tc3ZnXCJcbmltcG9ydCB7IEFueUNpcmN1aXRFbGVtZW50IH0gZnJvbSBcImNpcmN1aXQtanNvblwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBxdWVyeVBhcmFtczogei5vYmplY3Qoe1xuICAgIHNuaXBwZXRJZDogei5zdHJpbmcoKSxcbiAgICBpbWFnZV9vZjogei5lbnVtKFtcInNjaGVtYXRpY1wiLCBcInBjYlwiXSksXG4gICAgZm9ybWF0OiB6LmVudW0oW1wic3ZnXCJdKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBzdmc6IHouc3RyaW5nKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgc25pcHBldElkLCBpbWFnZV9vZiwgZm9ybWF0IH0gPSByZXEucXVlcnlcblxuICBjb25zdCBzbmlwcGV0ID0gY3R4LmRiLmdldFNuaXBwZXRCeUlkKHNuaXBwZXRJZClcblxuICAvLyBjaGVjayBpZiB0aGUgc25pcHBldCBleGlzdHNcbiAgaWYgKCFzbmlwcGV0KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwic25pcHBldF9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiU25pcHBldCBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGhlIGZvcm1hdCBpcyB2YWxpZFxuICBpZiAoZm9ybWF0ICE9PSBcInN2Z1wiKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiaW52YWxpZF9mb3JtYXRcIixcbiAgICAgIG1lc3NhZ2U6IFwiRm9ybWF0IG11c3QgYmUgJ3N2ZydcIixcbiAgICB9KVxuICB9XG5cbiAgaWYgKGltYWdlX29mID09PSBcInNjaGVtYXRpY1wiKSB7XG4gICAgY29uc3QgY2lyY3VpdEpzb24gPSBzbmlwcGV0LmNpcmN1aXRfanNvbiBhcyBBbnlDaXJjdWl0RWxlbWVudFtdXG4gICAgY29uc3Qgc3ZnID0gY29udmVydENpcmN1aXRKc29uVG9TY2hlbWF0aWNTdmcoY2lyY3VpdEpzb24pXG4gICAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICAgIG9rOiB0cnVlLFxuICAgICAgc3ZnLFxuICAgIH0pXG4gIH1cblxuICBpZiAoaW1hZ2Vfb2YgPT09IFwicGNiXCIpIHtcbiAgICBjb25zdCBzdmcgPSBjb252ZXJ0Q2lyY3VpdEpzb25Ub1BjYlN2ZyhcbiAgICAgIHNuaXBwZXQuY2lyY3VpdF9qc29uIGFzIEFueUNpcmN1aXRFbGVtZW50W10sXG4gICAgKVxuICAgIHJldHVybiBjdHguanNvbih7XG4gICAgICBvazogdHJ1ZSxcbiAgICAgIHN2ZyxcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICBlcnJvcl9jb2RlOiBcIklOVkFMSURfUkVRVUVTVF9UWVBFXCIsXG4gICAgbWVzc2FnZTogXCJSZXF1ZXN0IHR5cGUgbXVzdCBiZSBlaXRoZXIgJ3NjaGVtYXRpYycgb3IgJ3BjYidcIixcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgc25pcHBldFNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIiwgXCJQT1NUXCJdLFxuICBhdXRoOiBcIm9wdGlvbmFsX3Nlc3Npb25cIixcbiAgY29tbW9uUGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgc25pcHBldF9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIG5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBvd25lcl9uYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgdW5zY29wZWRfbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB9KSxcbiAganNvbkJvZHk6IHouYW55KCkub3B0aW9uYWwoKSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICAgIHNuaXBwZXQ6IHNuaXBwZXRTY2hlbWEsXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgc25pcHBldF9pZCwgbmFtZSwgb3duZXJfbmFtZSwgdW5zY29wZWRfbmFtZSB9ID0gcmVxLmNvbW1vblBhcmFtc1xuXG4gIC8vIEZpcnN0IHRyeSB0byBmaW5kIGJ5IHNuaXBwZXRfaWRcbiAgaWYgKHNuaXBwZXRfaWQpIHtcbiAgICBjb25zdCBmb3VuZFNuaXBwZXQgPSBjdHguZGIuZ2V0U25pcHBldEJ5SWQoc25pcHBldF9pZCwgY3R4LmF1dGgpXG4gICAgaWYgKGZvdW5kU25pcHBldCkge1xuICAgICAgaWYgKGN0eC5hdXRoKSB7XG4gICAgICAgIGZvdW5kU25pcHBldC5pc19zdGFycmVkID0gY3R4LmRiLmhhc1N0YXJyZWQoXG4gICAgICAgICAgY3R4LmF1dGguYWNjb3VudF9pZCxcbiAgICAgICAgICBmb3VuZFNuaXBwZXQuc25pcHBldF9pZCxcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICAgICAgb2s6IHRydWUsXG4gICAgICAgIHNuaXBwZXQ6IGZvdW5kU25pcHBldCxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgLy8gSWYgbm90IGZvdW5kIGJ5IElELCB0cnkgdG8gZmluZCBieSBvdGhlciBwYXJhbWV0ZXJzXG4gIGNvbnN0IGZvdW5kUGFja2FnZSA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKChwa2cpID0+IHtcbiAgICBpZiAoIXBrZy5pc19zbmlwcGV0KSByZXR1cm4gZmFsc2VcbiAgICBpZiAobmFtZSAmJiBwa2cubmFtZS50b0xvd2VyQ2FzZSgpICE9PSBuYW1lLnRvTG93ZXJDYXNlKCkpIHJldHVybiBmYWxzZVxuICAgIGlmIChcbiAgICAgIG93bmVyX25hbWUgJiZcbiAgICAgIHBrZy5vd25lcl9naXRodWJfdXNlcm5hbWU/LnRvTG93ZXJDYXNlKCkgIT09IG93bmVyX25hbWUudG9Mb3dlckNhc2UoKVxuICAgIClcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIGlmIChcbiAgICAgIHVuc2NvcGVkX25hbWUgJiZcbiAgICAgIHBrZy51bnNjb3BlZF9uYW1lLnRvTG93ZXJDYXNlKCkgIT09IHVuc2NvcGVkX25hbWUudG9Mb3dlckNhc2UoKVxuICAgIClcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIHJldHVybiB0cnVlXG4gIH0pXG5cbiAgaWYgKCFmb3VuZFBhY2thZ2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzbmlwcGV0X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogYFNuaXBwZXQgbm90IGZvdW5kIChzZWFyY2hlZCB1c2luZyAke0pTT04uc3RyaW5naWZ5KHJlcS5jb21tb25QYXJhbXMpfSlgLFxuICAgIH0pXG4gIH1cblxuICAvLyBDb252ZXJ0IHBhY2thZ2UgdG8gc25pcHBldCBmb3JtYXRcbiAgY29uc3Qgc25pcHBldCA9IGN0eC5kYi5nZXRTbmlwcGV0QnlJZChmb3VuZFBhY2thZ2UucGFja2FnZV9pZClcbiAgaWYgKCFzbmlwcGV0KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwic25pcHBldF9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IGBTbmlwcGV0IG5vdCBmb3VuZCAoc2VhcmNoZWQgdXNpbmcgJHtKU09OLnN0cmluZ2lmeShyZXEuY29tbW9uUGFyYW1zKX0pYCxcbiAgICB9KVxuICB9XG5cbiAgaWYgKGN0eC5hdXRoKSB7XG4gICAgc25pcHBldC5pc19zdGFycmVkID0gY3R4LmRiLmhhc1N0YXJyZWQoXG4gICAgICBjdHguYXV0aC5hY2NvdW50X2lkLFxuICAgICAgc25pcHBldC5zbmlwcGV0X2lkLFxuICAgIClcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgc25pcHBldCxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgQW55Q2lyY3VpdEVsZW1lbnQgfSBmcm9tIFwiY2lyY3VpdC1qc29uXCJcbmltcG9ydCB7XG4gIGNvbnZlcnRDaXJjdWl0SnNvblRvQXNzZW1ibHlTdmcsXG4gIGNvbnZlcnRDaXJjdWl0SnNvblRvUGNiU3ZnLFxuICBjb252ZXJ0Q2lyY3VpdEpzb25Ub1NjaGVtYXRpY1N2Zyxcbn0gZnJvbSBcImNpcmN1aXQtdG8tc3ZnXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICByb3V0ZVBhcmFtczogei5vYmplY3Qoe1xuICAgIGF1dGhvcjogei5zdHJpbmcoKSxcbiAgICBzbmlwcGV0X25hbWU6IHouc3RyaW5nKCksXG4gICAgdHlwZUZvcm1hdDogei5zdHJpbmcoKSxcbiAgfSksXG4gIHJhd1Jlc3BvbnNlOiB0cnVlLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgYXV0aG9yLCBzbmlwcGV0X25hbWUsIHR5cGVGb3JtYXQgfSA9IHJlcS5yb3V0ZVBhcmFtc1xuXG4gIC8vIEdldCB0aGUgc25pcHBldFxuICBjb25zdCBuYW1lID0gYXV0aG9yICsgXCIvXCIgKyBzbmlwcGV0X25hbWVcbiAgY29uc3Qgc25pcHBldCA9IGN0eC5kYi5nZXRTbmlwcGV0QnlBdXRob3JBbmROYW1lKGF1dGhvciwgbmFtZSlcblxuICAvLyBJZiBzbmlwcGV0IGlzIG5vdCBmb3VuZCwgcmV0dXJuIDQwNFxuICBpZiAoIXNuaXBwZXQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzbmlwcGV0X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJTbmlwcGV0IG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGUgZm9ybWF0IGlzIHZhbGlkXG4gIGNvbnN0IGZvcm1hdCA9IHR5cGVGb3JtYXQuc3BsaXQoXCIuXCIpWzFdXG4gIGlmIChmb3JtYXQgIT09IFwic3ZnXCIpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJpbnZhbGlkX2Zvcm1hdFwiLFxuICAgICAgbWVzc2FnZTogXCJGb3JtYXQgbXVzdCBiZSAnc3ZnJ1wiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGUgdHlwZSBpcyB2YWxpZFxuICBjb25zdCB0eXBlID0gdHlwZUZvcm1hdC5zcGxpdChcIi5cIilbMF1cbiAgY29uc3QgdHlwZXNWYWxpZCA9IFtcInNjaGVtYXRpY1wiLCBcInBjYlwiLCBcImFzc2VtYmx5XCJdXG4gIGlmICghdHlwZXNWYWxpZC5pbmNsdWRlcyh0eXBlKSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImludmFsaWRfdHlwZVwiLFxuICAgICAgbWVzc2FnZTogYFR5cGUgbXVzdCBiZSAnJHt0eXBlc1ZhbGlkLmpvaW4oXCInIG9yICdcIil9J2AsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENvbnZlcnQgY2lyY3VpdCBqc29uIHRvIHN2Z1xuICBsZXQgc3ZnOiBzdHJpbmdcbiAgaWYgKHR5cGUgPT09IFwic2NoZW1hdGljXCIpIHtcbiAgICBzdmcgPSBjb252ZXJ0Q2lyY3VpdEpzb25Ub1NjaGVtYXRpY1N2ZyhcbiAgICAgIHNuaXBwZXQuY2lyY3VpdF9qc29uIGFzIEFueUNpcmN1aXRFbGVtZW50W10sXG4gICAgKVxuICB9IGVsc2UgaWYgKHR5cGUgPT09IFwicGNiXCIpIHtcbiAgICBzdmcgPSBjb252ZXJ0Q2lyY3VpdEpzb25Ub1BjYlN2ZyhcbiAgICAgIHNuaXBwZXQuY2lyY3VpdF9qc29uIGFzIEFueUNpcmN1aXRFbGVtZW50W10sXG4gICAgKVxuICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiYXNzZW1ibHlcIikge1xuICAgIHN2ZyA9IGNvbnZlcnRDaXJjdWl0SnNvblRvQXNzZW1ibHlTdmcoXG4gICAgICBzbmlwcGV0LmNpcmN1aXRfanNvbiBhcyBBbnlDaXJjdWl0RWxlbWVudFtdLFxuICAgIClcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDUwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJ1bmtub3duX2Vycm9yXCIsXG4gICAgICBtZXNzYWdlOiBcIlVua25vd24gZXJyb3JcIixcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXNwb25zZShzdmcsIHtcbiAgICBoZWFkZXJzOiB7XG4gICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImltYWdlL3N2Zyt4bWxcIixcbiAgICAgIFwiQ2FjaGUtQ29udHJvbFwiOiBcInB1YmxpYywgbWF4LWFnZT0zMTUzNjAwMFwiLFxuICAgIH0sXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBzbmlwcGV0U2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBzbmlwcGV0czogei5hcnJheShzbmlwcGV0U2NoZW1hKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgbGF0ZXN0U25pcHBldHMgPSBjdHguZGIuZ2V0TGF0ZXN0U25pcHBldHMoMjApXG4gIHJldHVybiBjdHguanNvbih7IHNuaXBwZXRzOiBsYXRlc3RTbmlwcGV0cyB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgc25pcHBldFNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIHNuaXBwZXRzOiB6LmFycmF5KHNuaXBwZXRTY2hlbWEpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICAvLyBHZXQgdHJlbmRpbmcgc25pcHBldHMgZnJvbSBsYXN0IDcgZGF5c1xuICBjb25zdCBzZXZlbkRheXNBZ28gPSBuZXcgRGF0ZSgpXG4gIHNldmVuRGF5c0Fnby5zZXREYXRlKHNldmVuRGF5c0Fnby5nZXREYXRlKCkgLSA3KVxuXG4gIGNvbnN0IHRyZW5kaW5nU25pcHBldHMgPSBjdHguZGIuZ2V0VHJlbmRpbmdTbmlwcGV0cyhcbiAgICAyMCxcbiAgICBzZXZlbkRheXNBZ28udG9JU09TdHJpbmcoKSxcbiAgKVxuICByZXR1cm4gY3R4Lmpzb24oeyBzbmlwcGV0czogdHJlbmRpbmdTbmlwcGV0cyB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgc25pcHBldFNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiLCBcIlBPU1RcIl0sXG4gIGF1dGg6IFwib3B0aW9uYWxfc2Vzc2lvblwiLFxuICBjb21tb25QYXJhbXM6IHoub2JqZWN0KHtcbiAgICBvd25lcl9uYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgdW5zY29wZWRfbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHN0YXJyZWRfYnk6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25Cb2R5OiB6LmFueSgpLm9wdGlvbmFsKCksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBzbmlwcGV0czogei5hcnJheShzbmlwcGV0U2NoZW1hKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBvd25lcl9uYW1lLCB1bnNjb3BlZF9uYW1lLCBzdGFycmVkX2J5IH0gPSByZXEuY29tbW9uUGFyYW1zXG5cbiAgLy8gR2V0IGFsbCBwYWNrYWdlcyB0aGF0IGFyZSBzbmlwcGV0c1xuICBsZXQgcGFja2FnZXMgPSBjdHguZGIucGFja2FnZXMuZmlsdGVyKChwa2cpID0+IHBrZy5pc19zbmlwcGV0ID09PSB0cnVlKVxuXG4gIC8vIEZpbHRlciBieSBvd25lcl9uYW1lIGlmIHByb3ZpZGVkXG4gIGlmIChvd25lcl9uYW1lKSB7XG4gICAgcGFja2FnZXMgPSBwYWNrYWdlcy5maWx0ZXIoXG4gICAgICAocGtnKSA9PlxuICAgICAgICBwa2cub3duZXJfZ2l0aHViX3VzZXJuYW1lPy50b0xvd2VyQ2FzZSgpID09PSBvd25lcl9uYW1lLnRvTG93ZXJDYXNlKCksXG4gICAgKVxuICB9XG5cbiAgLy8gRmlsdGVyIGJ5IHVuc2NvcGVkX25hbWUgaWYgcHJvdmlkZWRcbiAgaWYgKHVuc2NvcGVkX25hbWUpIHtcbiAgICBwYWNrYWdlcyA9IHBhY2thZ2VzLmZpbHRlcihcbiAgICAgIChwa2cpID0+IHBrZy51bnNjb3BlZF9uYW1lLnRvTG93ZXJDYXNlKCkgPT09IHVuc2NvcGVkX25hbWUudG9Mb3dlckNhc2UoKSxcbiAgICApXG4gIH1cblxuICAvLyBGaWx0ZXIgYnkgc3RhcnJlZF9ieSBpZiBwcm92aWRlZFxuICBpZiAoc3RhcnJlZF9ieSkge1xuICAgIC8vIEdldCB0aGUgYWNjb3VudCBJRCBmb3IgdGhlIHN0YXJyZWRfYnkgdXNlcm5hbWVcbiAgICBjb25zdCBzdGFycmVkQnlBY2NvdW50ID0gY3R4LmRiLmFjY291bnRzLmZpbmQoXG4gICAgICAoYWNjKSA9PiBhY2MuZ2l0aHViX3VzZXJuYW1lLnRvTG93ZXJDYXNlKCkgPT09IHN0YXJyZWRfYnkudG9Mb3dlckNhc2UoKSxcbiAgICApXG4gICAgaWYgKHN0YXJyZWRCeUFjY291bnQpIHtcbiAgICAgIC8vIEZpbHRlciBwYWNrYWdlcyB0byBvbmx5IGluY2x1ZGUgdGhvc2UgdGhhdCBhcmUgc3RhcnJlZCBieSB0aGlzIGFjY291bnRcbiAgICAgIHBhY2thZ2VzID0gcGFja2FnZXMuZmlsdGVyKChwa2cpID0+XG4gICAgICAgIGN0eC5kYi5oYXNTdGFycmVkKHN0YXJyZWRCeUFjY291bnQuYWNjb3VudF9pZCwgcGtnLnBhY2thZ2VfaWQpLFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJZiB3ZSBjYW4ndCBmaW5kIHRoZSBhY2NvdW50LCByZXR1cm4gbm8gc25pcHBldHNcbiAgICAgIHBhY2thZ2VzID0gW11cbiAgICB9XG4gIH1cblxuICBjb25zdCBzbmlwcGV0cyA9IHBhY2thZ2VzLm1hcCgocGtnKSA9PiB7XG4gICAgY29uc3QgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIuZ2V0UGFja2FnZVJlbGVhc2VCeUlkKFxuICAgICAgcGtnLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgfHwgXCJcIixcbiAgICApXG4gICAgaWYgKCFwYWNrYWdlUmVsZWFzZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc25pcHBldF9pZDogcGtnLnBhY2thZ2VfaWQsXG4gICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcGtnLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgfHwgXCJcIixcbiAgICAgICAgdW5zY29wZWRfbmFtZTogcGtnLnVuc2NvcGVkX25hbWUsXG4gICAgICAgIG5hbWU6IHBrZy5uYW1lLFxuICAgICAgICBvd25lcl9uYW1lOiBwa2cub3duZXJfZ2l0aHViX3VzZXJuYW1lIHx8IFwiXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBwa2cuZGVzY3JpcHRpb24gfHwgXCJcIixcbiAgICAgICAgc25pcHBldF90eXBlOiBwa2cuc25pcHBldF90eXBlIHx8IFwiYm9hcmRcIixcbiAgICAgICAgY29kZTogXCJcIixcbiAgICAgICAgZHRzOiBcIlwiLFxuICAgICAgICBjb21waWxlZF9qczogXCJcIixcbiAgICAgICAgY3JlYXRlZF9hdDogcGtnLmNyZWF0ZWRfYXQsXG4gICAgICAgIHVwZGF0ZWRfYXQ6IHBrZy51cGRhdGVkX2F0LFxuICAgICAgICBzdGFyX2NvdW50OiBjdHguZGIuZ2V0U3RhckNvdW50KHBrZy5wYWNrYWdlX2lkKSxcbiAgICAgICAgaXNfc3RhcnJlZDogY3R4LmF1dGhcbiAgICAgICAgICA/IGN0eC5kYi5oYXNTdGFycmVkKGN0eC5hdXRoLmFjY291bnRfaWQsIHBrZy5wYWNrYWdlX2lkKVxuICAgICAgICAgIDogZmFsc2UsXG4gICAgICAgIHZlcnNpb246IHBrZy5sYXRlc3RfdmVyc2lvbiB8fCBcIjAuMC4xXCIsXG4gICAgICAgIGlzX3ByaXZhdGU6IHBrZy5pc19wcml2YXRlIHx8IGZhbHNlLFxuICAgICAgICBpc19wdWJsaWM6IHBrZy5pc19wdWJsaWMgfHwgdHJ1ZSxcbiAgICAgICAgaXNfdW5saXN0ZWQ6IHBrZy5pc191bmxpc3RlZCB8fCBmYWxzZSxcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgcGFja2FnZUZpbGVzID0gY3R4LmRiLmdldFBhY2thZ2VGaWxlc0J5UmVsZWFzZUlkKFxuICAgICAgcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgIClcbiAgICBjb25zdCBjb2RlRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKGZpbGU6IHsgZmlsZV9wYXRoOiBzdHJpbmcgfSkgPT5cbiAgICAgICAgZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHNcIiB8fCBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIixcbiAgICApXG4gICAgY29uc3Qgc3RhckNvdW50ID0gY3R4LmRiLmdldFN0YXJDb3VudChwa2cucGFja2FnZV9pZClcbiAgICBjb25zdCBpc1N0YXJyZWQgPSBjdHguYXV0aFxuICAgICAgPyBjdHguZGIuaGFzU3RhcnJlZChjdHguYXV0aC5hY2NvdW50X2lkLCBwa2cucGFja2FnZV9pZClcbiAgICAgIDogZmFsc2VcblxuICAgIHJldHVybiB7XG4gICAgICBzbmlwcGV0X2lkOiBwa2cucGFja2FnZV9pZCxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcGtnLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgfHwgXCJcIixcbiAgICAgIHVuc2NvcGVkX25hbWU6IHBrZy51bnNjb3BlZF9uYW1lLFxuICAgICAgbmFtZTogcGtnLm5hbWUsXG4gICAgICBvd25lcl9uYW1lOiBwa2cub3duZXJfZ2l0aHViX3VzZXJuYW1lIHx8IFwiXCIsXG4gICAgICBkZXNjcmlwdGlvbjogcGtnLmRlc2NyaXB0aW9uIHx8IFwiXCIsXG4gICAgICBzbmlwcGV0X3R5cGU6IHBrZy5zbmlwcGV0X3R5cGUgfHwgXCJib2FyZFwiLFxuICAgICAgY29kZTogY29kZUZpbGU/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgZHRzOlxuICAgICAgICBwYWNrYWdlRmlsZXMuZmluZChcbiAgICAgICAgICAoZmlsZTogeyBmaWxlX3BhdGg6IHN0cmluZyB9KSA9PlxuICAgICAgICAgICAgZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvaW5kZXguZC50c1wiLFxuICAgICAgICApPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgIGNvbXBpbGVkX2pzOlxuICAgICAgICBwYWNrYWdlRmlsZXMuZmluZChcbiAgICAgICAgICAoZmlsZTogeyBmaWxlX3BhdGg6IHN0cmluZyB9KSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5qc1wiLFxuICAgICAgICApPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgIGNyZWF0ZWRfYXQ6IHBrZy5jcmVhdGVkX2F0LFxuICAgICAgdXBkYXRlZF9hdDogcGtnLnVwZGF0ZWRfYXQsXG4gICAgICBzdGFyX2NvdW50OiBzdGFyQ291bnQsXG4gICAgICBpc19zdGFycmVkOiBpc1N0YXJyZWQsXG4gICAgICB2ZXJzaW9uOiBwa2cubGF0ZXN0X3ZlcnNpb24gfHwgXCIwLjAuMVwiLFxuICAgICAgaXNfcHJpdmF0ZTogcGtnLmlzX3ByaXZhdGUgfHwgZmFsc2UsXG4gICAgICBpc19wdWJsaWM6IHBrZy5pc19wdWJsaWMgfHwgdHJ1ZSxcbiAgICAgIGlzX3VubGlzdGVkOiBwa2cuaXNfdW5saXN0ZWQgfHwgZmFsc2UsXG4gICAgfVxuICB9KVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgc25pcHBldHMsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IGFjY291bnRTbmlwcGV0U2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIHNuaXBwZXRfaWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgaXNfc3RhcnJlZDogei5ib29sZWFuKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgc25pcHBldF9pZCB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgLy8gQ2hlY2sgaWYgc25pcHBldCBleGlzdHNcbiAgY29uc3Qgc25pcHBldCA9IGN0eC5kYi5nZXRTbmlwcGV0QnlJZChzbmlwcGV0X2lkKVxuICBpZiAoIXNuaXBwZXQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzbmlwcGV0X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJTbmlwcGV0IG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBjaGVjayBpZiBub3QgYWxyZWFkeSBzdGFycmVkXG4gIGlmICghY3R4LmRiLmhhc1N0YXJyZWQoY3R4LmF1dGguYWNjb3VudF9pZCwgc25pcHBldF9pZCkpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJub3Rfc3RhcnJlZFwiLFxuICAgICAgbWVzc2FnZTogXCJZb3UgaGF2ZSBub3Qgc3RhcnJlZCB0aGlzIHNuaXBwZXRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gUmVtb3ZlIHN0YXJcbiAgY3R4LmRiLnJlbW92ZVN0YXIoY3R4LmF1dGguYWNjb3VudF9pZCwgc25pcHBldF9pZClcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICAgIGlzX3N0YXJyZWQ6IGZhbHNlLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgc25pcHBldFNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIHF1ZXJ5UGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgcTogei5zdHJpbmcoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIHNuaXBwZXRzOiB6LmFycmF5KHNuaXBwZXRTY2hlbWEpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IHEgfSA9IHJlcS5xdWVyeVxuICBjb25zdCBzbmlwcGV0cyA9IGN0eC5kYi5zZWFyY2hTbmlwcGV0cyhxKVxuICByZXR1cm4gY3R4Lmpzb24oeyBzbmlwcGV0cyB9KVxufSlcbiIsICJpbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBzbmlwcGV0U2NoZW1hIH0gZnJvbSBcIi4uLy4uLy4uL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCIuLi8uLi8uLi9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIHNuaXBwZXRfaWQ6IHouc3RyaW5nKCksXG4gICAgY29kZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgdW5zY29wZWRfbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGR0czogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGNvbXBpbGVkX2pzOiB6LnN0cmluZygpLm9wdGlvbmFsKCkubnVsbGFibGUoKSxcbiAgICBjaXJjdWl0X2pzb246IHouYXJyYXkoei5yZWNvcmQoei5hbnkoKSkpLm9wdGlvbmFsKCkubnVsbGFibGUoKSxcbiAgICBtYW51YWxfZWRpdHNfanNvbl9jb250ZW50OiB6LnN0cmluZygpLm9wdGlvbmFsKCkubnVsbGFibGUoKSxcbiAgICBzbmlwcGV0X3R5cGU6IHouZW51bShbXCJib2FyZFwiLCBcInBhY2thZ2VcIiwgXCJtb2RlbFwiLCBcImZvb3RwcmludFwiXSkub3B0aW9uYWwoKSxcbiAgICBpc19wcml2YXRlOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIGlzX3VubGlzdGVkOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICAgIHNuaXBwZXQ6IHNuaXBwZXRTY2hlbWEsXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzbmlwcGV0X2lkLFxuICAgIGNvZGUsXG4gICAgZGVzY3JpcHRpb24sXG4gICAgdW5zY29wZWRfbmFtZSxcbiAgICBkdHMsXG4gICAgY29tcGlsZWRfanMsXG4gICAgY2lyY3VpdF9qc29uLFxuICAgIHNuaXBwZXRfdHlwZSxcbiAgICBtYW51YWxfZWRpdHNfanNvbl9jb250ZW50LFxuICAgIGlzX3ByaXZhdGUsXG4gICAgaXNfdW5saXN0ZWQsXG4gIH0gPSByZXEuanNvbkJvZHlcblxuICBjb25zdCBwYWNrYWdlSW5kZXggPSBjdHguZGIucGFja2FnZXMuZmluZEluZGV4KFxuICAgIChzKSA9PiBzLnBhY2thZ2VfaWQgPT09IHNuaXBwZXRfaWQsXG4gIClcblxuICBpZiAocGFja2FnZUluZGV4ID09PSAtMSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInNuaXBwZXRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlNuaXBwZXQgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IF9wYWNrYWdlID0gY3R4LmRiLnBhY2thZ2VzW3BhY2thZ2VJbmRleF1cbiAgY29uc3QgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgKHIpID0+IHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBfcGFja2FnZS5sYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkLFxuICApXG4gIGNvbnN0IHBhY2thZ2VGaWxlcyA9IGN0eC5kYi5wYWNrYWdlRmlsZXMuZmlsdGVyKFxuICAgIChmKSA9PiBmLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2U/LnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgKVxuICBjb25zdCBjb2RlRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgIChmKSA9PiBmLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIiB8fCBmLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c1wiLFxuICApXG4gIGNvbnN0IGR0c0ZpbGUgPSBwYWNrYWdlRmlsZXMuZmluZCgoZikgPT4gZi5maWxlX3BhdGggPT09IFwiL2Rpc3QvaW5kZXguZC50c1wiKVxuICBjb25zdCBjb21waWxlZEpzRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgIChmKSA9PiBmLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5qc1wiLFxuICApXG4gIGNvbnN0IG1hbnVhbEVkaXRzSnNvbkZpbGUgPSBwYWNrYWdlRmlsZXMuZmluZChcbiAgICAoZikgPT4gZi5maWxlX3BhdGggPT09IFwibWFudWFsLWVkaXRzLmpzb25cIixcbiAgKVxuICBjb25zdCBjaXJjdWl0SnNvbkZpbGUgPSBwYWNrYWdlRmlsZXMuZmluZChcbiAgICAoZikgPT4gZi5maWxlX3BhdGggPT09IFwiL2Rpc3QvY2lyY3VpdC5qc29uXCIsXG4gIClcblxuICBpZiAoX3BhY2thZ2Uub3duZXJfZ2l0aHViX3VzZXJuYW1lICE9PSBjdHguYXV0aC5naXRodWJfdXNlcm5hbWUpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMywge1xuICAgICAgZXJyb3JfY29kZTogXCJmb3JiaWRkZW5cIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byB1cGRhdGUgdGhpcyBzbmlwcGV0XCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHVwZGF0ZWRTbmlwcGV0ID0gY3R4LmRiLnVwZGF0ZVNuaXBwZXQoc25pcHBldF9pZCwge1xuICAgIGNvZGU6IGNvZGUgPz8gY29kZUZpbGU/LmNvbnRlbnRfdGV4dCA/PyBcIlwiLFxuICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiA/PyBfcGFja2FnZS5kZXNjcmlwdGlvbiA/PyBcIlwiLFxuICAgIHVuc2NvcGVkX25hbWU6IHVuc2NvcGVkX25hbWUgPz8gX3BhY2thZ2UudW5zY29wZWRfbmFtZSxcbiAgICBuYW1lOiB1bnNjb3BlZF9uYW1lXG4gICAgICA/IGAke2N0eC5hdXRoLmdpdGh1Yl91c2VybmFtZX0vJHt1bnNjb3BlZF9uYW1lfWBcbiAgICAgIDogX3BhY2thZ2UubmFtZSxcbiAgICBkdHM6IGR0cyA/PyBkdHNGaWxlPy5jb250ZW50X3RleHQgPz8gXCJcIixcbiAgICBjb21waWxlZF9qczogY29tcGlsZWRfanMgPz8gY29tcGlsZWRKc0ZpbGU/LmNvbnRlbnRfdGV4dCA/PyBcIlwiLFxuICAgIG1hbnVhbF9lZGl0c19qc29uX2NvbnRlbnQ6XG4gICAgICBtYW51YWxfZWRpdHNfanNvbl9jb250ZW50ICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyBtYW51YWxfZWRpdHNfanNvbl9jb250ZW50XG4gICAgICAgIDogKG1hbnVhbEVkaXRzSnNvbkZpbGU/LmNvbnRlbnRfdGV4dCA/PyBcIlwiKSxcbiAgICBjaXJjdWl0X2pzb246XG4gICAgICBjaXJjdWl0X2pzb24gPz9cbiAgICAgIChjaXJjdWl0SnNvbkZpbGU/LmNvbnRlbnRfdGV4dFxuICAgICAgICA/IEpTT04ucGFyc2UoY2lyY3VpdEpzb25GaWxlLmNvbnRlbnRfdGV4dClcbiAgICAgICAgOiBbXSksXG4gICAgc25pcHBldF90eXBlOiBzbmlwcGV0X3R5cGUgPz8gX3BhY2thZ2Uuc25pcHBldF90eXBlLFxuICAgIGlzX3ByaXZhdGU6IGlzX3ByaXZhdGUgPz8gX3BhY2thZ2UuaXNfcHJpdmF0ZSA/PyBmYWxzZSxcbiAgICBpc191bmxpc3RlZDogaXNfdW5saXN0ZWQgPz8gX3BhY2thZ2UuaXNfdW5saXN0ZWQgPz8gZmFsc2UsXG4gICAgdXBkYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICB9KVxuXG4gIGlmICghdXBkYXRlZFNuaXBwZXQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDUwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJ1cGRhdGVfZmFpbGVkXCIsXG4gICAgICBtZXNzYWdlOiBcIkZhaWxlZCB0byB1cGRhdGUgc25pcHBldFwiLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICAgIHNuaXBwZXQ6IHVwZGF0ZWRTbmlwcGV0LFxuICB9KVxufSlcbiJdLAogICJtYXBwaW5ncyI6ICI7QUFBQSxTQUFRLHVCQUFzQjtBQUM5QixTQUFTLG9DQUFvQzs7O0FDRDdDLFNBQVMsNEJBQTRCOzs7QUNDckMsU0FBUyxhQUFhO0FBQ3RCLFNBQVMsbUJBQW1CO0FBRTVCLFNBQVMsZUFBZTs7O0FDSnhCLFNBQVMsU0FBUztBQUVYLElBQU0sY0FBYyxFQUN4QixPQUFPO0FBQUEsRUFDTixZQUFZLEVBQUUsT0FBTztBQUFBLEVBQ3JCLFNBQVMsRUFBRSxPQUFPO0FBQ3BCLENBQUMsRUFDQSxZQUFZO0FBRVIsSUFBTSxzQkFBc0IsRUFBRSxPQUFPO0FBQUEsRUFDMUMsT0FBTztBQUNULENBQUM7QUFFTSxJQUFNLGdCQUFnQixFQUFFLE9BQU87QUFBQSxFQUNwQyxZQUFZLEVBQUUsT0FBTztBQUFBLEVBQ3JCLG9CQUFvQixFQUFFLE9BQU87QUFBQSxFQUM3QixNQUFNLEVBQUUsT0FBTztBQUFBLEVBQ2YsZUFBZSxFQUFFLE9BQU87QUFBQSxFQUN4QixZQUFZLEVBQUUsT0FBTztBQUFBLEVBQ3JCLFlBQVksRUFBRSxRQUFRLEVBQUUsUUFBUSxLQUFLO0FBQUEsRUFDckMsTUFBTSxFQUFFLE9BQU87QUFBQSxFQUNmLEtBQUssRUFBRSxPQUFPLEVBQUUsU0FBUztBQUFBLEVBQ3pCLGFBQWEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVM7QUFBQSxFQUM1QyxjQUFjLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxTQUFTO0FBQUEsRUFDN0QsMkJBQTJCLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTO0FBQUEsRUFDMUQsWUFBWSxFQUFFLE9BQU87QUFBQSxFQUNyQixZQUFZLEVBQUUsT0FBTztB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LGNBQWM7QUFBQSxJQUNkLGFBQWE7QUFBQSxJQUNiLGNBQWM7QUFBQSxNQUNaO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixnQkFBZ0I7QUFBQSxRQUNoQixNQUFNO0FBQUEsUUFDTixZQUFZO0FBQUEsUUFDWixZQUFZLENBQUMsUUFBUSxHQUFHO0FBQUEsUUFDeEIscUJBQXFCO0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixnQkFBZ0I7QUFBQSxRQUNoQixNQUFNO0FBQUEsUUFDTixZQUFZO0FBQUEsUUFDWixZQUFZLENBQUMsUUFBUSxHQUFHO0FBQUEsUUFDeEIscUJBQXFCO0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixnQkFBZ0I7QUFBQSxRQUNoQixNQUFNO0FBQUEsUUFDTixZQUFZO0FBQUEsUUFDWixZQUFZLENBQUMsUUFBUSxHQUFHO0FBQUEsUUFDeEIscUJBQXFCO0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixnQkFBZ0I7QUFBQSxRQUNoQixNQUFNO0FBQUEsUUFDTixZQUFZO0FBQUEsUUFDWixZQUFZLENBQUMsUUFBUSxHQUFHO0FBQUEsUUFDeEIscUJBQXFCO0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixnQkFBZ0I7QUFBQSxRQUNoQixNQUFNO0FBQUEsUUFDTixZQUFZO0FBQUEsUUFDWixZQUFZLENBQUMsUUFBUSxHQUFHO0FBQUEsUUFDeEIscUJBQXFCO0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixnQkFBZ0I7QUFBQSxRQUNoQixNQUFNO0FBQUEsUUFDTixZQUFZO0FBQUEsUUFDWixZQUFZLENBQUMsUUFBUSxHQUFHO0FBQUEsUUFDeEIscUJBQXFCO0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixnQkFBZ0I7QUFBQSxRQUNoQixNQUFNO0FBQUEsUUFDTixZQUFZ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SUFDZCxhQUFhO0FBQUEsSUFDYixjQUFjO0FBQUEsTUFDWjtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04scUJBQXFCO0FBQUEsUUFDckIsT0FBTztBQUFBLFFBQ1AsTUFBTTtBQUFBLE1BQ1I7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsVUFBVTtBQUFBLFFBQ1YsTUFBTTtBQUFBLFVBQ0osT0FBTztBQUFBLFVBQ1AsUUFBUTtBQUFBLFFBQ1Y7QUFBQSxRQUNBLGFBQWE7QUFBQSxRQUNiLGFBQWEsQ0FBQztBQUFBLFFBQ2QscUJBQXFCO0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtC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QjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04scUJBQXFCO0FBQUEsUUFDckIsT0FBTztBQUFBLFFBQ1AsTUFBTTtBQUFBLE1BQ1I7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsVUFBVTtBQUFBLFFBQ1YsTUFBTTtBQUFBLFVBQ0osT0FBTztBQUFBLFVBQ1AsUUFBUTtBQUFBLFFBQ1Y7QUFBQSxRQUNBLGFBQWE7QUFBQSxRQUNiLGFBQWEsQ0FBQztBQUFBLFFBQ2QscUJBQXFCO0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFB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LEVBQVEsd0JBQXlDSjtBQUFBLEVBQVEsd0JBQXlDRztBQUFBLEVBQVEsMEJBQTJDRTtBQUFBLEVBQVEsc0NBQXVEO0FBQUEsRUFBUSwyQkFBNEM7QUFBQSxFQUFRLHFCQUFzQ047QUFBQSxFQUFRLDZEQUE4RTtBQUFBLEVBQVEsNkJBQThDO0FBQUEsRUFBUSwrQkFBZ0Q7QUFBQSxFQUFRLHNCQUF1Q0U7QUFBQSxFQUFRLDZCQUE4Q0s7QUFBQSxFQUFRLHdCQUF5QztBQUFBLEVBQVEsd0JBQXlDSjtBQUM3cEY7QUFFQSxJQUFNLGFBQWE7QUFBQSxFQUNqQixjQUFjLGdCQUFnQixPQUFPLEtBQUssb0JBQW9CLENBQUM7QUFBQSxFQUMvRDtBQUFBLEVBQ0EsYUFBYSxPQUFPLEtBQUssWUFBWSw2QkFBNkIsWUFBWSxPQUFPLEVBQUUsR0FBRztBQUM1RjtBQUVBLElBQU8sZ0JBQVE7IiwKICAibmFtZXMiOiBbInNlZWQiLCAic3RhdGUiLCAicGFja2FnZVJlbGVhc2UiLCAicGFja2FnZUZpbGVzIiwgInBrZyIsICJrbGV1ciIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJhbnlyb3V0ZV9kZWZhdWx0IiwgInoiLCAieiIsICJ6IiwgImdldF9kZWZhdWx0IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJ6IiwgImdldF9kZWZhdWx0IiwgInoiLCAieiIsICJjcmVhdGVfZGVmYXVsdCIsICJ6IiwgImdldF9kZWZhdWx0IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJyb3V0ZVNwZWMiLCAiY3JlYXRlX2RlZmF1bHQiLCAieiIsICJ6IiwgInoiLCAicm91dGVTcGVjIiwgInoiLCAicm91dGVTcGVjIiwgInoiLCAiZ2V0X2RlZmF1bHQiLCAieiIsICJyb3V0ZVNwZWMiLCAieiIsICJsaXN0X2RlZmF1bHQiLCAieiIsICJjcmVhdGVfZGVmYXVsdCIsICJ6IiwgImdldF9kZWZhdWx0IiwgInoiLCAibGlzdF9kZWZhdWx0IiwgInoiLCAidXBkYXRlX2RlZmF1bHQiLCAicmVsZWFzZSIsICJ6IiwgInBrZyIsICJ6IiwgImNyZWF0ZV9kZWZhdWx0IiwgInoiLCAiZGVsZXRlX2RlZmF1bHQiLCAieiIsICJ6IiwgImdldF9kZWZhdWx0IiwgInoiLCAibGlzdF9kZWZhdWx0IiwgInoiLCAicGtnIiwgInoiLCAidXBkYXRlX2RlZmF1bHQiLCAieiIsICJ6IiwgImFkZF9zdGFyX2RlZmF1bHQiLCAieiIsICJjcmVhdGVfZGVmYXVsdCIsICJ6IiwgImRlbGV0ZV9kZWZhdWx0IiwgInoiLCAiZG93bmxvYWRfZGVmYXVsdCIsICJ6IiwgInoiLCAieiIsICJ6IiwgImdldF9kZWZhdWx0IiwgImNvbnZlcnRDaXJjdWl0SnNvblRvUGNiU3ZnIiwgImNvbnZlcnRDaXJjdWl0SnNvblRvU2NoZW1hdGljU3ZnIiwgInoiLCAiY29udmVydENpcmN1aXRKc29uVG9TY2hlbWF0aWNTdmciLCAiY29udmVydENpcmN1aXRKc29uVG9QY2JTdmciLCAieiIsICJ6IiwgInoiLCAieiIsICJ6IiwgImxpc3RfZGVmYXVsdCIsICJ6IiwgInoiLCAicmVtb3ZlX3N0YXJfZGVmYXVsdCIsICJ6IiwgInoiLCAieiIsICJ1cGRhdGVfZGVmYXVsdCIsICJ6IiwgImFueXJvdXRlX2RlZmF1bHQiLCAiZ2V0X2RlZmF1bHQiLCAiY3JlYXRlX2RlZmF1bHQiLCAibGlzdF9kZWZhdWx0IiwgInVwZGF0ZV9kZWZhdWx0IiwgImRlbGV0ZV9kZWZhdWx0IiwgImFkZF9zdGFyX2RlZmF1bHQiLCAiZG93bmxvYWRfZGVmYXVsdCIsICJyZW1vdmVfc3Rhcl9kZWZhdWx0Il0KfQo=
6351
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiPHN0ZGluPiIsICJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjLnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9kYi1jbGllbnQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvYXV0b2xvYWQtZGV2LXBhY2thZ2VzLnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zZWVkLnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtZGIudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC1jdHgtZXJyb3IudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC1zZXNzaW9uLWF1dGgudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC1vcHRpb25hbC1zZXNzaW9uLWF1dGgudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC1lcnJvci1oYW5kbGluZy50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXJlcXVlc3QtbG9nZ2luZy50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL19mYWtlL2RiLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvX2Zha2UvbW92ZV9vcmRlcnNfZm9yd2FyZC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS91dGlscy9vcmRlci1zdGVwcy50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL19mYWtlL3JlY2VpdmVkX3F1b3Rlcy50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL19mYWtlL3NlZWQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9hY2NvdW50cy9nZXRfYWNjb3VudF9iYWxhbmNlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWNjb3VudHMvZ2V0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWNjb3VudHMvdXBkYXRlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWkvWy4uLmFueXJvdXRlXS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2FpLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWlzdHJlYW0vWy4uLmFueXJvdXRlXS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2hlYWx0aC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2ludGVybmFsL3Nlc3Npb25zL2NyZWF0ZV93aXRob3V0X2F1dGgudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcl9maWxlcy9nZXQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcl9maWxlcy91cGxvYWQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcl9xdW90ZXMvY3JlYXRlX2FsbF92ZW5kb3JfcXVvdGVzLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3JkZXJfcXVvdGVzL2NyZWF0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZGVyX3F1b3Rlcy9nZXQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcnMvY3JlYXRlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3JkZXJzL2dldC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZGVycy9saXN0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9wYWNrYWdlX3JlbGVhc2UvZmluZC1wYWNrYWdlLXJlbGVhc2UtaWQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2ZpbGVzL2NyZWF0ZV9vcl91cGRhdGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2ZpbGVzL2NyZWF0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfZmlsZXMvZGVsZXRlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9wYWNrYWdlX2ZpbGUvZ2V0LXBhY2thZ2UtZmlsZS1pZC1mcm9tLWZpbGUtZGVzY3JpcHRvci50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS91dGlscy9ub3JtYWxpemVQcm9qZWN0RmlsZVBhdGgudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2ZpbGVzL2Rvd25sb2FkLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9maWxlcy9nZXQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2ZpbGVzL2xpc3QudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3B1YmxpYy1tYXBwaW5nL3B1YmxpYy1tYXAtcGFja2FnZS1yZWxlYXNlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9yZWxlYXNlcy9jcmVhdGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX3JlbGVhc2VzL2dldC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfcmVsZWFzZXMvbGlzdC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfcmVsZWFzZXMvdXBkYXRlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvYWRkX3N0YXIudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3B1YmxpYy1tYXBwaW5nL3B1YmxpYy1tYXAtcGFja2FnZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2NyZWF0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2RlbGV0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2ZvcmsudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9nZXQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9saXN0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvcmVtb3ZlX3N0YXIudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy91cGRhdGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9hZGRfc3Rhci50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2NyZWF0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2RlbGV0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2Rvd25sb2FkLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvZ2VuZXJhdGVfZnJvbV9qbGNwY2IudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9nZXRfaW1hZ2UudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9nZXQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9pbWFnZXMvW2F1dGhvcl0vW3NuaXBwZXRfbmFtZV0vW3R5cGVGb3JtYXRdLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvbGlzdF9sYXRlc3QudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9saXN0X3RyZW5kaW5nLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvbGlzdC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL3JlbW92ZV9zdGFyLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvc2VhcmNoLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvdXBkYXRlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQge2dldFJvdXRlTWF0Y2hlcn0gZnJvbSBcIm5leHQtcm91dGUtbWF0Y2hlclwiXG5pbXBvcnQgeyBtYWtlUmVxdWVzdEFnYWluc3RXaW50ZXJTcGVjIH0gZnJvbSBcIndpbnRlcnNwZWNcIlxuXG5pbXBvcnQgKiBhcyBwa2NzeWhvd29ydHl6eHZhIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9kYi50c1wiXG5pbXBvcnQgKiBhcyBxanVha3RwdW16bHRvcmZpIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9tb3ZlX29yZGVyc19mb3J3YXJkLnRzXCJcbmltcG9ydCAqIGFzIGxudWJxa2V1cXdsZmVubmsgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL19mYWtlL3JlY2VpdmVkX3F1b3Rlcy50c1wiXG5pbXBvcnQgKiBhcyB0eGxvbndjZWppbWx3dXVvIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9zZWVkLnRzXCJcbmltcG9ydCAqIGFzIG1od2Z1ZmVmcXdsenlsb3IgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2FjY291bnRzL2dldF9hY2NvdW50X2JhbGFuY2UudHNcIlxuaW1wb3J0ICogYXMganVnbGp6bGV4YnpvdWJvdyBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWNjb3VudHMvZ2V0LnRzXCJcbmltcG9ydCAqIGFzIGtiandoc21va2hoZnFnYWUgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2FjY291bnRzL3VwZGF0ZS50c1wiXG5pbXBvcnQgKiBhcyBhZGZibXR0anpqaGtrZWtiIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9haS50c1wiXG5pbXBvcnQgKiBhcyBqYmZkcHh3dWN5cGFsbGF4IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9haS9bLi4uYW55cm91dGVdLnRzXCJcbmltcG9ydCAqIGFzIHh3c2d4amdweWxyY2loY2kgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2Fpc3RyZWFtL1suLi5hbnlyb3V0ZV0udHNcIlxuaW1wb3J0ICogYXMgZHpxbG10bmx2eGRycGlheSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvaGVhbHRoLnRzXCJcbmltcG9ydCAqIGFzIGNoc29pZW1yeXJpc2NjZmYgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2ludGVybmFsL3Nlc3Npb25zL2NyZWF0ZV93aXRob3V0X2F1dGgudHNcIlxuaW1wb3J0ICogYXMgcGVyaWhhZGp1YWFzbmdjeiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3JkZXJfZmlsZXMvZ2V0LnRzXCJcbmltcG9ydCAqIGFzIGJtb3B4ZGpjcnFsZXd1aG4gZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZGVyX2ZpbGVzL3VwbG9hZC50c1wiXG5pbXBvcnQgKiBhcyB0am52YmttdXNyYWJjendnIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcl9xdW90ZXMvY3JlYXRlX2FsbF92ZW5kb3JfcXVvdGVzLnRzXCJcbmltcG9ydCAqIGFzIHp4bXJhaHphY25haHRiZ3YgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZGVyX3F1b3Rlcy9jcmVhdGUudHNcIlxuaW1wb3J0ICogYXMgcHF2d3RjandzYWZmYmFieSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3JkZXJfcXVvdGVzL2dldC50c1wiXG5pbXBvcnQgKiBhcyBpZGhyc3lxdmxveGxidmVvIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcnMvY3JlYXRlLnRzXCJcbmltcG9ydCAqIGFzIGphbGN4Y2FobG9paWVwZHQgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZGVycy9nZXQudHNcIlxuaW1wb3J0ICogYXMgcmFrenl4ZHpybnJ3ZmVsbSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3JkZXJzL2xpc3QudHNcIlxuaW1wb3J0ICogYXMgd2FpZ2R2dXNqaGxkZXB5dSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9maWxlcy9jcmVhdGVfb3JfdXBkYXRlLnRzXCJcbmltcG9ydCAqIGFzIGJwYWpjdXJqcmFqb2hyZ3cgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfZmlsZXMvY3JlYXRlLnRzXCJcbmltcG9ydCAqIGFzIGRjemRpa3Vod3p3YXR1ZGUgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfZmlsZXMvZGVsZXRlLnRzXCJcbmltcG9ydCAqIGFzIHV6d3Vqc3BlZm1sbmd1ZXggZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfZmlsZXMvZG93bmxvYWQudHNcIlxuaW1wb3J0ICogYXMgZGtoaWp2eHppbnZyb2JvciBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9maWxlcy9nZXQudHNcIlxuaW1wb3J0ICogYXMgZWViZHlneG9ld2xrbmVqdiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9maWxlcy9saXN0LnRzXCJcbmltcG9ydCAqIGFzIGVxcnBtanFxandlb2l6cGEgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfcmVsZWFzZXMvY3JlYXRlLnRzXCJcbmltcG9ydCAqIGFzIGNocnl3ZGpyaWZobnJ3ZmkgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfcmVsZWFzZXMvZ2V0LnRzXCJcbmltcG9ydCAqIGFzIG5ycXhnanh5d2NhYnZxdHogZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfcmVsZWFzZXMvbGlzdC50c1wiXG5pbXBvcnQgKiBhcyBsdnZpYmdwa3Fkc29sdWhoIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX3JlbGVhc2VzL3VwZGF0ZS50c1wiXG5pbXBvcnQgKiBhcyB2bHdlcXJ0eHhwemJhdHdzIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9hZGRfc3Rhci50c1wiXG5pbXBvcnQgKiBhcyBxbGFxc2d2bWVzaGNmeG15IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9jcmVhdGUudHNcIlxuaW1wb3J0ICogYXMgZnV2eW9rd291ZGd0dmxkdSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvZGVsZXRlLnRzXCJcbmltcG9ydCAqIGFzIHZhb21vaXNieHprcWpvcnIgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2ZvcmsudHNcIlxuaW1wb3J0ICogYXMgdGhhb295eXNtcHVxem5oYSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvZ2V0LnRzXCJcbmltcG9ydCAqIGFzIGxkaHZ6Zndic2tiY3BrdHEgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2xpc3QudHNcIlxuaW1wb3J0ICogYXMgcWlyeG5iZHF5dWJ5d3JsZSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvcmVtb3ZlX3N0YXIudHNcIlxuaW1wb3J0ICogYXMgZGtsd2pmcGFldnprZnpkdyBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvdXBkYXRlLnRzXCJcbmltcG9ydCAqIGFzIGR6eGZtemF3cHB6cWxlYW8gZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2FkZF9zdGFyLnRzXCJcbmltcG9ydCAqIGFzIGNhcXVwcmlvam9tdGh3ZGcgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2NyZWF0ZS50c1wiXG5pbXBvcnQgKiBhcyBqd2NpdGhtdGx3b2FwcXVvIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9kZWxldGUudHNcIlxuaW1wb3J0ICogYXMgbnpuY3Zoa3Zyb2p3c2h4cSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvZG93bmxvYWQudHNcIlxuaW1wb3J0ICogYXMgZHRtd3RtbnR6YXhuZWdteSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvZ2VuZXJhdGVfZnJvbV9qbGNwY2IudHNcIlxuaW1wb3J0ICogYXMgb3Jzd2ZzcWRrenF1b3ZkZyBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvZ2V0X2ltYWdlLnRzXCJcbmltcG9ydCAqIGFzIGtqcWx2b2hoZ2NmeGhrZ2wgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2dldC50c1wiXG5pbXBvcnQgKiBhcyBrcndqcXR3ZndheWVwd3RyIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9pbWFnZXMvW2F1dGhvcl0vW3NuaXBwZXRfbmFtZV0vW3R5cGVGb3JtYXRdLnRzXCJcbmltcG9ydCAqIGFzIGN1aXZzcGJiZGNtYnF2eHogZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2xpc3RfbGF0ZXN0LnRzXCJcbmltcG9ydCAqIGFzIGZmZXp0a3RzeXFjZGNqcHMgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2xpc3RfdHJlbmRpbmcudHNcIlxuaW1wb3J0ICogYXMgbnBodmNhb2Vrc3dlbXR0cCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvbGlzdC50c1wiXG5pbXBvcnQgKiBhcyBnb3hveXB0aWNocXhvbGRqIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9yZW1vdmVfc3Rhci50c1wiXG5pbXBvcnQgKiBhcyBpYmVsdnh4Z2l0b3R4dG5iIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9zZWFyY2gudHNcIlxuaW1wb3J0ICogYXMganhxeWd5b3FuZ3JyeWp1YSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvdXBkYXRlLnRzXCJcblxuY29uc3Qgcm91dGVNYXBXaXRoSGFuZGxlcnMgPSB7XG4gIFwiL2FwaS9fZmFrZS9kYlwiOiBwa2NzeWhvd29ydHl6eHZhLmRlZmF1bHQsXCIvYXBpL19mYWtlL21vdmVfb3JkZXJzX2ZvcndhcmRcIjogcWp1YWt0cHVtemx0b3JmaS5kZWZhdWx0LFwiL2FwaS9fZmFrZS9yZWNlaXZlZF9xdW90ZXNcIjogbG51YnFrZXVxd2xmZW5uay5kZWZhdWx0LFwiL2FwaS9fZmFrZS9zZWVkXCI6IHR4bG9ud2NlamltbHd1dW8uZGVmYXVsdCxcIi9hcGkvYWNjb3VudHMvZ2V0X2FjY291bnRfYmFsYW5jZVwiOiBtaHdmdWZlZnF3bHp5bG9yLmRlZmF1bHQsXCIvYXBpL2FjY291bnRzL2dldFwiOiBqdWdsanpsZXhiem91Ym93LmRlZmF1bHQsXCIvYXBpL2FjY291bnRzL3VwZGF0ZVwiOiBrYmp3aHNtb2toaGZxZ2FlLmRlZmF1bHQsXCIvYXBpL2FpXCI6IGFkZmJtdHRqempoa2tla2IuZGVmYXVsdCxcIi9hcGkvYWkvWy4uLmFueXJvdXRlXVwiOiBqYmZkcHh3dWN5cGFsbGF4LmRlZmF1bHQsXCIvYXBpL2Fpc3RyZWFtL1suLi5hbnlyb3V0ZV1cIjogeHdzZ3hqZ3B5bHJjaWhjaS5kZWZhdWx0LFwiL2FwaS9oZWFsdGhcIjogZHpxbG10bmx2eGRycGlheS5kZWZhdWx0LFwiL2FwaS9pbnRlcm5hbC9zZXNzaW9ucy9jcmVhdGVfd2l0aG91dF9hdXRoXCI6IGNoc29pZW1yeXJpc2NjZmYuZGVmYXVsdCxcIi9hcGkvb3JkZXJfZmlsZXMvZ2V0XCI6IHBlcmloYWRqdWFhc25nY3ouZGVmYXVsdCxcIi9hcGkvb3JkZXJfZmlsZXMvdXBsb2FkXCI6IGJtb3B4ZGpjcnFsZXd1aG4uZGVmYXVsdCxcIi9hcGkvb3JkZXJfcXVvdGVzL2NyZWF0ZV9hbGxfdmVuZG9yX3F1b3Rlc1wiOiB0am52YmttdXNyYWJjendnLmRlZmF1bHQsXCIvYXBpL29yZGVyX3F1b3Rlcy9jcmVhdGVcIjogenhtcmFoemFjbmFodGJndi5kZWZhdWx0LFwiL2FwaS9vcmRlcl9xdW90ZXMvZ2V0XCI6IHBxdnd0Y2p3c2FmZmJhYnkuZGVmYXVsdCxcIi9hcGkvb3JkZXJzL2NyZWF0ZVwiOiBpZGhyc3lxdmxveGxidmVvLmRlZmF1bHQsXCIvYXBpL29yZGVycy9nZXRcIjogamFsY3hjYWhsb2lpZXBkdC5kZWZhdWx0LFwiL2FwaS9vcmRlcnMvbGlzdFwiOiByYWt6eXhkenJucndmZWxtLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VfZmlsZXMvY3JlYXRlX29yX3VwZGF0ZVwiOiB3YWlnZHZ1c2pobGRlcHl1LmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VfZmlsZXMvY3JlYXRlXCI6IGJwYWpjdXJqcmFqb2hyZ3cuZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9maWxlcy9kZWxldGVcIjogZGN6ZGlrdWh3endhdHVkZS5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlX2ZpbGVzL2Rvd25sb2FkXCI6IHV6d3Vqc3BlZm1sbmd1ZXguZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9maWxlcy9nZXRcIjogZGtoaWp2eHppbnZyb2Jvci5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlX2ZpbGVzL2xpc3RcIjogZWViZHlneG9ld2xrbmVqdi5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlX3JlbGVhc2VzL2NyZWF0ZVwiOiBlcXJwbWpxcWp3ZW9penBhLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VfcmVsZWFzZXMvZ2V0XCI6IGNocnl3ZGpyaWZobnJ3ZmkuZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9yZWxlYXNlcy9saXN0XCI6IG5ycXhnanh5d2NhYnZxdHouZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9yZWxlYXNlcy91cGRhdGVcIjogbHZ2aWJncGtxZHNvbHVoaC5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlcy9hZGRfc3RhclwiOiB2bHdlcXJ0eHhwemJhdHdzLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VzL2NyZWF0ZVwiOiBxbGFxc2d2bWVzaGNmeG15LmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VzL2RlbGV0ZVwiOiBmdXZ5b2t3b3VkZ3R2bGR1LmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VzL2ZvcmtcIjogdmFvbW9pc2J4emtxam9yci5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlcy9nZXRcIjogdGhhb295eXNtcHVxem5oYS5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlcy9saXN0XCI6IGxkaHZ6Zndic2tiY3BrdHEuZGVmYXVsdCxcIi9hcGkvcGFja2FnZXMvcmVtb3ZlX3N0YXJcIjogcWlyeG5iZHF5dWJ5d3JsZS5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlcy91cGRhdGVcIjogZGtsd2pmcGFldnprZnpkdy5kZWZhdWx0LFwiL2FwaS9zbmlwcGV0cy9hZGRfc3RhclwiOiBkenhmbXphd3BwenFsZWFvLmRlZmF1bHQsXCIvYXBpL3NuaXBwZXRzL2NyZWF0ZVwiOiBjYXF1cHJpb2pvbXRod2RnLmRlZmF1bHQsXCIvYXBpL3NuaXBwZXRzL2RlbGV0ZVwiOiBqd2NpdGhtdGx3b2FwcXVvLmRlZmF1bHQsXCIvYXBpL3NuaXBwZXRzL2Rvd25sb2FkXCI6IG56bmN2aGt2cm9qd3NoeHEuZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvZ2VuZXJhdGVfZnJvbV9qbGNwY2JcIjogZHRtd3RtbnR6YXhuZWdteS5kZWZhdWx0LFwiL2FwaS9zbmlwcGV0cy9nZXRfaW1hZ2VcIjogb3Jzd2ZzcWRrenF1b3ZkZy5kZWZhdWx0LFwiL2FwaS9zbmlwcGV0cy9nZXRcIjoga2pxbHZvaGhnY2Z4aGtnbC5kZWZhdWx0LFwiL2FwaS9zbmlwcGV0cy9pbWFnZXMvW2F1dGhvcl0vW3NuaXBwZXRfbmFtZV0vW3R5cGVGb3JtYXRdXCI6IGtyd2pxdHdmd2F5ZXB3dHIuZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvbGlzdF9sYXRlc3RcIjogY3VpdnNwYmJkY21icXZ4ei5kZWZhdWx0LFwiL2FwaS9zbmlwcGV0cy9saXN0X3RyZW5kaW5nXCI6IGZmZXp0a3RzeXFjZGNqcHMuZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvbGlzdFwiOiBucGh2Y2FvZWtzd2VtdHRwLmRlZmF1bHQsXCIvYXBpL3NuaXBwZXRzL3JlbW92ZV9zdGFyXCI6IGdveG95cHRpY2hxeG9sZGouZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvc2VhcmNoXCI6IGliZWx2eHhnaXRvdHh0bmIuZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvdXBkYXRlXCI6IGp4cXlneW9xbmdycnlqdWEuZGVmYXVsdFxufVxuXG5jb25zdCB3aW50ZXJTcGVjID0ge1xuICByb3V0ZU1hdGNoZXI6IGdldFJvdXRlTWF0Y2hlcihPYmplY3Qua2V5cyhyb3V0ZU1hcFdpdGhIYW5kbGVycykpLFxuICByb3V0ZU1hcFdpdGhIYW5kbGVycyxcbiAgbWFrZVJlcXVlc3Q6IGFzeW5jIChyZXEsIG9wdGlvbnMpID0+IG1ha2VSZXF1ZXN0QWdhaW5zdFdpbnRlclNwZWMod2ludGVyU3BlYywgb3B0aW9ucykocmVxKVxufVxuXG5leHBvcnQgZGVmYXVsdCB3aW50ZXJTcGVjIiwgImltcG9ydCB7IGNyZWF0ZVdpdGhXaW50ZXJTcGVjIH0gZnJvbSBcIndpbnRlcnNwZWNcIlxuaW1wb3J0IHsgd2l0aERiIH0gZnJvbSBcIi4vd2l0aC1kYlwiXG5pbXBvcnQgeyBjcmVhdGVXaXRoRGVmYXVsdEV4Y2VwdGlvbkhhbmRsaW5nIH0gZnJvbSBcIndpbnRlcnNwZWMvbWlkZGxld2FyZVwiXG5pbXBvcnQgeyB3aXRoQ3R4RXJyb3IgfSBmcm9tIFwiLi93aXRoLWN0eC1lcnJvclwiXG5pbXBvcnQgeyB3aXRoU2Vzc2lvbkF1dGggfSBmcm9tIFwiLi93aXRoLXNlc3Npb24tYXV0aFwiXG5pbXBvcnQgeyB3aXRoT3B0aW9uYWxTZXNzaW9uQXV0aCB9IGZyb20gXCIuL3dpdGgtb3B0aW9uYWwtc2Vzc2lvbi1hdXRoXCJcbmltcG9ydCB7IHdpdGhFcnJvckhhbmRsaW5nIH0gZnJvbSBcIi4vd2l0aC1lcnJvci1oYW5kbGluZ1wiXG5pbXBvcnQgeyB3aXRoUmVxdWVzdExvZ2dpbmcgfSBmcm9tIFwiLi93aXRoLXJlcXVlc3QtbG9nZ2luZ1wiXG5cbmV4cG9ydCBjb25zdCB3aXRoUm91dGVTcGVjID0gY3JlYXRlV2l0aFdpbnRlclNwZWMoe1xuICBhcGlOYW1lOiBcInRzY2lyY3VpdCBTbmlwcGV0cyBBUElcIixcbiAgcHJvZHVjdGlvblNlcnZlclVybDogXCJodHRwczovL3NuaXBwZXRzLnRzY2lyY3VpdC5jb20vYXBpXCIsXG4gIGJlZm9yZUF1dGhNaWRkbGV3YXJlOiBbd2l0aFJlcXVlc3RMb2dnaW5nLCB3aXRoRXJyb3JIYW5kbGluZywgd2l0aEN0eEVycm9yXSxcbiAgYXV0aE1pZGRsZXdhcmU6IHtcbiAgICBzZXNzaW9uOiB3aXRoU2Vzc2lvbkF1dGgsXG4gICAgb3B0aW9uYWxfc2Vzc2lvbjogd2l0aE9wdGlvbmFsU2Vzc2lvbkF1dGgsXG4gIH0sXG4gIGFmdGVyQXV0aE1pZGRsZXdhcmU6IFtcbiAgICB3aXRoRGIsXG4gICAgY3JlYXRlV2l0aERlZmF1bHRFeGNlcHRpb25IYW5kbGluZyh7XG4gICAgICBpbmNsdWRlU3RhY2tUcmFjZUluUmVzcG9uc2U6IHRydWUsXG4gICAgfSksXG4gIF0sXG59KVxuIiwgImltcG9ydCB0eXBlIHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgaG9pc3QgfSBmcm9tIFwienVzdGFuZC1ob2lzdFwiXG5pbXBvcnQgeyBjcmVhdGVTdG9yZSB9IGZyb20gXCJ6dXN0YW5kL3ZhbmlsbGFcIlxuXG5pbXBvcnQgeyBjb21iaW5lIH0gZnJvbSBcInp1c3RhbmQvbWlkZGxld2FyZVwiXG5pbXBvcnQge1xuICB0eXBlIEFjY291bnQsXG4gIHR5cGUgQWNjb3VudFBhY2thZ2UsXG4gIHR5cGUgSmxjcGNiT3JkZXJTdGF0ZSxcbiAgdHlwZSBKbGNwY2JPcmRlclN0ZXBSdW4sXG4gIHR5cGUgTG9naW5QYWdlLFxuICB0eXBlIE9yZGVyLFxuICB0eXBlIE9yZGVyRmlsZSxcbiAgT3JkZXJRdW90ZSxcbiAgdHlwZSBQYWNrYWdlLFxuICB0eXBlIFBhY2thZ2VGaWxlLFxuICB0eXBlIFBhY2thZ2VSZWxlYXNlLFxuICB0eXBlIFNlc3Npb24sXG4gIHR5cGUgU25pcHBldCxcbiAgZGF0YWJhc2VTY2hlbWEsXG4gIHR5cGUgcGFja2FnZVNjaGVtYSxcbiAgdHlwZSBzbmlwcGV0U2NoZW1hLFxufSBmcm9tIFwiLi9zY2hlbWEudHNcIlxuaW1wb3J0IHsgc2VlZCBhcyBzZWVkRm4gfSBmcm9tIFwiLi9zZWVkXCJcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZURhdGFiYXNlID0gKHsgc2VlZCB9OiB7IHNlZWQ/OiBib29sZWFuIH0gPSB7fSkgPT4ge1xuICBjb25zdCBkYiA9IGhvaXN0KGNyZWF0ZVN0b3JlKGluaXRpYWxpemVyKSlcbiAgaWYgKHNlZWQpIHtcbiAgICBzZWVkRm4oZGIpXG4gIH1cbiAgcmV0dXJuIGRiXG59XG5cbmV4cG9ydCB0eXBlIERiQ2xpZW50ID0gUmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlRGF0YWJhc2U+XG5cbmNvbnN0IGluaXRpYWxpemVyID0gY29tYmluZShkYXRhYmFzZVNjaGVtYS5wYXJzZSh7fSksIChzZXQsIGdldCkgPT4gKHtcbiAgYWRkT3JkZXI6IChvcmRlcjogT21pdDxPcmRlciwgXCJvcmRlcl9pZFwiPik6IE9yZGVyID0+IHtcbiAgICBjb25zdCBuZXdPcmRlciA9IHsgb3JkZXJfaWQ6IGBvcmRlcl8ke2dldCgpLmlkQ291bnRlciArIDF9YCwgLi4ub3JkZXIgfVxuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG9yZGVyczogWy4uLnN0YXRlLm9yZGVycywgbmV3T3JkZXJdLFxuICAgICAgICBpZENvdW50ZXI6IHN0YXRlLmlkQ291bnRlciArIDEsXG4gICAgICB9XG4gICAgfSlcbiAgICByZXR1cm4gbmV3T3JkZXJcbiAgfSxcbiAgZ2V0T3JkZXJCeUlkOiAob3JkZXJJZDogc3RyaW5nKTogT3JkZXIgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUub3JkZXJzLmZpbmQoKG9yZGVyKSA9PiBvcmRlci5vcmRlcl9pZCA9PT0gb3JkZXJJZClcbiAgfSxcbiAgZ2V0T3JkZXJGaWxlc0J5T3JkZXJJZDogKG9yZGVySWQ6IHN0cmluZyk6IE9yZGVyRmlsZVtdID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLm9yZGVyRmlsZXMuZmlsdGVyKChmaWxlKSA9PiBmaWxlLm9yZGVyX2lkID09PSBvcmRlcklkKVxuICB9LFxuICBhZGRPcmRlclF1b3RlOiAoe1xuICAgIGFjY291bnRfaWQsXG4gICAgcGFja2FnZV9yZWxlYXNlX2lkLFxuICAgIHZlbmRvcl9uYW1lLFxuICB9OiB7XG4gICAgYWNjb3VudF9pZDogc3RyaW5nXG4gICAgcGFja2FnZV9yZWxlYXNlX2lkOiBzdHJpbmdcbiAgICB2ZW5kb3JfbmFtZTogc3RyaW5nXG4gIH0pOiBzdHJpbmcgPT4ge1xuICAgIC8vIERldGFpbHMgZm9yIHRoZSBvcmRlciBxdW90ZSB3aWxsIGJlIHVwZGF0ZWQgYnkgdGhlIGpvYiB3aXRoIHRoZSBjb3N0XG4gICAgY29uc3QgbmV3T3JkZXJRdW90ZSA9IHtcbiAgICAgIG9yZGVyX3F1b3RlX2lkOiBgb3JkZXJfcXVvdGVfJHtnZXQoKS5pZENvdW50ZXIgKyAxfWAsXG4gICAgICBhY2NvdW50X2lkLFxuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgdXBkYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgY29tcGxldGVkX2F0OiBudWxsLFxuICAgICAgZXJyb3I6IG51bGwsXG4gICAgICBoYXNfZXJyb3I6IGZhbHNlLFxuICAgICAgaXNfY29tcGxldGVkOiBmYWxzZSxcbiAgICAgIGlzX3Byb2Nlc3Npbmc6IHRydWUsXG4gICAgICB2ZW5kb3JfbmFtZSxcbiAgICAgIHF1b3RlZF9jb21wb25lbnRzOiBbXSxcbiAgICAgIGJhcmVfcGNiX2Nvc3Q6IDAsXG4gICAgICBzaGlwcGluZ19vcHRpb25zOiBbXSxcbiAgICAgIHRvdGFsX2Nvc3Q6IDAsXG4gICAgfVxuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG9yZGVyUXVvdGVzOiBbLi4uc3RhdGUub3JkZXJRdW90ZXMsIG5ld09yZGVyUXVvdGVdLFxuICAgICAgICBpZENvdW50ZXI6IHN0YXRlLmlkQ291bnRlciArIDEsXG4gICAgICB9XG4gICAgfSlcbiAgICByZXR1cm4gbmV3T3JkZXJRdW90ZS5vcmRlcl9xdW90ZV9pZFxuICB9LFxuICBnZXRPcmRlclF1b3RlQnlJZDogKG9yZGVyUXVvdGVJZDogc3RyaW5nKTogT3JkZXJRdW90ZSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5vcmRlclF1b3Rlcy5maW5kKFxuICAgICAgKHF1b3RlKSA9PiBxdW90ZS5vcmRlcl9xdW90ZV9pZCA9PT0gb3JkZXJRdW90ZUlkLFxuICAgIClcbiAgfSxcbiAgZ2V0SmxjcGNiT3JkZXJTdGF0ZXNCeU9yZGVySWQ6IChcbiAgICBvcmRlcklkOiBzdHJpbmcsXG4gICk6IEpsY3BjYk9yZGVyU3RhdGUgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUuamxjcGNiT3JkZXJTdGF0ZS5maW5kKChzdGF0ZSkgPT4gc3RhdGUub3JkZXJfaWQgPT09IG9yZGVySWQpXG4gIH0sXG4gIGdldEpsY3BjYk9yZGVyU3RlcFJ1bnNCeUpsY3BjYk9yZGVyU3RhdGVJZDogKFxuICAgIGpsY3BjYk9yZGVyU3RhdGVJZDogc3RyaW5nLFxuICApOiBKbGNwY2JPcmRlclN0ZXBSdW5bXSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5qbGNwY2JPcmRlclN0ZXBSdW5zXG4gICAgICAuZmlsdGVyKChzdGVwUnVuKSA9PiB7XG4gICAgICAgIGNvbnN0IG9yZGVyU3RhdGUgPSBzdGF0ZS5qbGNwY2JPcmRlclN0YXRlLmZpbmQoXG4gICAgICAgICAgKHN0YXRlKSA9PlxuICAgICAgICAgICAgc3RhdGUuamxjcGNiX29yZGVyX3N0YXRlX2lkID09PSBzdGVwUnVuLmpsY3BjYl9vcmRlcl9zdGF0ZV9pZCxcbiAgICAgICAgKVxuICAgICAgICByZXR1cm4gb3JkZXJTdGF0ZT8ub3JkZXJfaWQgPT09IGpsY3BjYk9yZGVyU3RhdGVJZFxuICAgICAgfSlcbiAgICAgIC5zb3J0KFxuICAgICAgICAoYSwgYikgPT5cbiAgICAgICAgICBuZXcgRGF0ZShhLmNyZWF0ZWRfYXQpLmdldFRpbWUoKSAtIG5ldyBEYXRlKGIuY3JlYXRlZF9hdCkuZ2V0VGltZSgpLFxuICAgICAgKVxuICB9LFxuICB1cGRhdGVPcmRlcjogKG9yZGVySWQ6IHN0cmluZywgdXBkYXRlczogUGFydGlhbDxPcmRlcj4pID0+IHtcbiAgICBzZXQoKHN0YXRlKSA9PiAoe1xuICAgICAgb3JkZXJzOiBzdGF0ZS5vcmRlcnMubWFwKChvcmRlcikgPT5cbiAgICAgICAgb3JkZXIub3JkZXJfaWQgPT09IG9yZGVySWQgPyB7IC4uLm9yZGVyLCAuLi51cGRhdGVzIH0gOiBvcmRlcixcbiAgICAgICksXG4gICAgfSkpXG4gIH0sXG4gIGFkZEpsY3BjYk9yZGVyU3RhdGU6IChcbiAgICBvcmRlclN0YXRlOiBPbWl0PEpsY3BjYk9yZGVyU3RhdGUsIFwiamxjcGNiX29yZGVyX3N0YXRlX2lkXCI+LFxuICApOiBKbGNwY2JPcmRlclN0YXRlID0+IHtcbiAgICBjb25zdCBuZXdPcmRlclN0YXRlID0ge1xuICAgICAgamxjcGNiX29yZGVyX3N0YXRlX2lkOiBgb3JkZXJfc3RhdGVfJHtnZXQoKS5pZENvdW50ZXIgKyAxfWAsXG4gICAgICAuLi5vcmRlclN0YXRlLFxuICAgIH1cbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBqbGNwY2JPcmRlclN0YXRlOiBbLi4uc3RhdGUuamxjcGNiT3JkZXJTdGF0ZSwgbmV3T3JkZXJTdGF0ZV0sXG4gICAgICAgIGlkQ291bnRlcjogc3RhdGUuaWRDb3VudGVyICsgMSxcbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiBuZXdPcmRlclN0YXRlXG4gIH0sXG4gIHVwZGF0ZUpsY3BjYk9yZGVyU3RhdGU6IChcbiAgICBvcmRlcklkOiBzdHJpbmcsXG4gICAgdXBkYXRlczogUGFydGlhbDxKbGNwY2JPcmRlclN0YXRlPixcbiAgKSA9PiB7XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIGpsY3BjYk9yZGVyU3RhdGU6IHN0YXRlLmpsY3BjYk9yZGVyU3RhdGUubWFwKChvcmRlclN0YXRlKSA9PlxuICAgICAgICBvcmRlclN0YXRlLm9yZGVyX2lkID09PSBvcmRlcklkXG4gICAgICAgICAgPyB7IC4uLm9yZGVyU3RhdGUsIC4uLnVwZGF0ZXMgfVxuICAgICAgICAgIDogb3JkZXJTdGF0ZSxcbiAgICAgICksXG4gICAgfSkpXG4gIH0sXG4gIGFkZE9yZGVyRmlsZTogKG9yZGVyRmlsZTogT21pdDxPcmRlckZpbGUsIFwib3JkZXJfZmlsZV9pZFwiPik6IE9yZGVyRmlsZSA9PiB7XG4gICAgY29uc3QgbmV3T3JkZXJGaWxlID0ge1xuICAgICAgb3JkZXJfZmlsZV9pZDogYG9yZGVyX2ZpbGVfJHtnZXQoKS5pZENvdW50ZXIgKyAxfWAsXG4gICAgICAuLi5vcmRlckZpbGUsXG4gICAgfVxuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG9yZGVyRmlsZXM6IFsuLi5zdGF0ZS5vcmRlckZpbGVzLCBuZXdPcmRlckZpbGVdLFxuICAgICAgICBpZENvdW50ZXI6IHN0YXRlLmlkQ291bnRlciArIDEsXG4gICAgICB9XG4gICAgfSlcbiAgICByZXR1cm4gbmV3T3JkZXJGaWxlXG4gIH0sXG4gIGdldE9yZGVyRmlsZUJ5SWQ6IChvcmRlckZpbGVJZDogc3RyaW5nKTogT3JkZXJGaWxlIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLm9yZGVyRmlsZXMuZmluZCgoZmlsZSkgPT4gZmlsZS5vcmRlcl9maWxlX2lkID09PSBvcmRlckZpbGVJZClcbiAgfSxcbiAgYWRkQWNjb3VudDogKFxuICAgIGFjY291bnQ6IE9taXQ8QWNjb3VudCwgXCJhY2NvdW50X2lkXCI+ICYgUGFydGlhbDxQaWNrPEFjY291bnQsIFwiYWNjb3VudF9pZFwiPj4sXG4gICkgPT4ge1xuICAgIGNvbnN0IG5ld0FjY291bnQgPSB7XG4gICAgICBhY2NvdW50X2lkOiBhY2NvdW50LmFjY291bnRfaWQgfHwgYGFjY291bnRfJHtnZXQoKS5pZENvdW50ZXIgKyAxfWAsXG4gICAgICAuLi5hY2NvdW50LFxuICAgIH1cblxuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFjY291bnRzOiBbLi4uc3RhdGUuYWNjb3VudHMsIG5ld0FjY291bnRdLFxuICAgICAgICBpZENvdW50ZXI6IHN0YXRlLmlkQ291bnRlciArIDEsXG4gICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiBuZXdBY2NvdW50XG4gIH0sXG4gIGFkZEFjY291bnRQYWNrYWdlOiAoXG4gICAgYWNjb3VudFBhY2thZ2U6IE9taXQ8QWNjb3VudFBhY2thZ2UsIFwiYWNjb3VudF9wYWNrYWdlX2lkXCI+LFxuICApOiBBY2NvdW50UGFja2FnZSA9PiB7XG4gICAgY29uc3QgbmV3QWNjb3VudFBhY2thZ2UgPSB7XG4gICAgICBhY2NvdW50X3BhY2thZ2VfaWQ6IGBhcF8ke2dldCgpLmlkQ291bnRlciArIDF9YCxcbiAgICAgIC4uLmFjY291bnRQYWNrYWdlLFxuICAgIH1cbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhY2NvdW50UGFja2FnZXM6IFsuLi5zdGF0ZS5hY2NvdW50UGFja2FnZXMsIG5ld0FjY291bnRQYWNrYWdlXSxcbiAgICAgICAgaWRDb3VudGVyOiBzdGF0ZS5pZENvdW50ZXIgKyAxLFxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIG5ld0FjY291bnRQYWNrYWdlXG4gIH0sXG4gIGdldEFjY291bnRQYWNrYWdlQnlJZDogKFxuICAgIGFjY291bnRQYWNrYWdlSWQ6IHN0cmluZyxcbiAgKTogQWNjb3VudFBhY2thZ2UgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUuYWNjb3VudFBhY2thZ2VzLmZpbmQoXG4gICAgICAoYXApID0+IGFwLmFjY291bnRfcGFja2FnZV9pZCA9PT0gYWNjb3VudFBhY2thZ2VJZCxcbiAgICApXG4gIH0sXG4gIHVwZGF0ZUFjY291bnRQYWNrYWdlOiAoXG4gICAgYWNjb3VudFBhY2thZ2VJZDogc3RyaW5nLFxuICAgIHVwZGF0ZXM6IFBhcnRpYWw8QWNjb3VudFBhY2thZ2U+LFxuICApOiB2b2lkID0+IHtcbiAgICBzZXQoKHN0YXRlKSA9PiAoe1xuICAgICAgYWNjb3VudFBhY2thZ2VzOiBzdGF0ZS5hY2NvdW50UGFja2FnZXMubWFwKChhcCkgPT5cbiAgICAgICAgYXAuYWNjb3VudF9wYWNrYWdlX2lkID09PSBhY2NvdW50UGFja2FnZUlkID8geyAuLi5hcCwgLi4udXBkYXRlcyB9IDogYXAsXG4gICAgICApLFxuICAgIH0pKVxuICB9LFxuICBkZWxldGVBY2NvdW50UGFja2FnZTogKGFjY291bnRQYWNrYWdlSWQ6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICAgIGxldCBkZWxldGVkID0gZmFsc2VcbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IHN0YXRlLmFjY291bnRQYWNrYWdlcy5maW5kSW5kZXgoXG4gICAgICAgIChhcCkgPT4gYXAuYWNjb3VudF9wYWNrYWdlX2lkID09PSBhY2NvdW50UGFja2FnZUlkLFxuICAgICAgKVxuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBzdGF0ZS5hY2NvdW50UGFja2FnZXMuc3BsaWNlKGluZGV4LCAxKVxuICAgICAgICBkZWxldGVkID0gdHJ1ZVxuICAgICAgfVxuICAgICAgcmV0dXJuIHN0YXRlXG4gICAgfSlcbiAgICByZXR1cm4gZGVsZXRlZFxuICB9LFxuICBhZGRTbmlwcGV0OiAoXG4gICAgc25pcHBldDogT21pdDxcbiAgICAgIHouaW5wdXQ8dHlwZW9mIHNuaXBwZXRTY2hlbWE+LFxuICAgICAgXCJzbmlwcGV0X2lkXCIgfCBcInBhY2thZ2VfcmVsZWFzZV9pZFwiXG4gICAgPixcbiAgKTogU25pcHBldCA9PiB7XG4gICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKVxuICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gbmV3IERhdGUodGltZXN0YW1wKS50b0lTT1N0cmluZygpXG5cbiAgICBjb25zdCBuZXdTdGF0ZSA9IGdldCgpXG4gICAgY29uc3QgbmV4dElkID0gbmV3U3RhdGUuaWRDb3VudGVyICsgMVxuXG4gICAgLy8gQ3JlYXRlIHRoZSBwYWNrYWdlIHRoYXQgd2lsbCBzZXJ2ZSBhcyBvdXIgc25pcHBldFxuICAgIGNvbnN0IG5ld1BhY2thZ2UgPSB7XG4gICAgICBwYWNrYWdlX2lkOiBgcGtnXyR7bmV4dElkfWAsXG4gICAgICBjcmVhdG9yX2FjY291bnRfaWQ6IHNuaXBwZXQub3duZXJfbmFtZSwgLy8gVXNpbmcgb3duZXJfbmFtZSBhcyBhY2NvdW50X2lkIHNpbmNlIHdlIGRvbid0IGhhdmUgY29udGV4dFxuICAgICAgb3duZXJfb3JnX2lkOiBcIlwiLCAvLyBFbXB0eSBzdHJpbmcgaW5zdGVhZCBvZiBudWxsIHRvIG1hdGNoIHR5cGVcbiAgICAgIG93bmVyX2dpdGh1Yl91c2VybmFtZTogc25pcHBldC5vd25lcl9uYW1lLFxuICAgICAgaXNfc291cmNlX2Zyb21fZ2l0aHViOiBmYWxzZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBzbmlwcGV0LmRlc2NyaXB0aW9uIHx8IFwiXCIsXG4gICAgICBuYW1lOiBgJHtzbmlwcGV0Lm93bmVyX25hbWV9LyR7c25pcHBldC51bnNjb3BlZF9uYW1lfWAsXG4gICAgICB1bnNjb3BlZF9uYW1lOiBzbmlwcGV0LnVuc2NvcGVkX25hbWUsXG4gICAgICBsYXRlc3RfdmVyc2lvbjogXCIwLjAuMVwiLFxuICAgICAgbGljZW5zZTogbnVsbCxcbiAgICAgIHdlYnNpdGU6IG51bGwsXG4gICAgICBzdGFyX2NvdW50OiAwLFxuICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICB1cGRhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIGFpX2Rlc2NyaXB0aW9uOiBcInBsYWNlaG9sZGVyIGFpIGRlc2NyaXB0aW9uXCIsXG4gICAgICBhaV91c2FnZV9pbnN0cnVjdGlvbnM6IFwicGxhY2Vob2xkZXIgYWkgdXNhZ2UgaW5zdHJ1Y3Rpb25zXCIsXG4gICAgICBpc19zbmlwcGV0OiB0cnVlLFxuICAgICAgaXNfYm9hcmQ6IHNuaXBwZXQuc25pcHBldF90eXBlID09PSBcImJvYXJkXCIsXG4gICAgICBpc19wYWNrYWdlOiBzbmlwcGV0LnNuaXBwZXRfdHlwZSA9PT0gXCJwYWNrYWdlXCIsXG4gICAgICBpc19tb2RlbDogc25pcHBldC5zbmlwcGV0X3R5cGUgPT09IFwibW9kZWxcIixcbiAgICAgIGlzX2Zvb3RwcmludDogc25pcHBldC5zbmlwcGV0X3R5cGUgPT09IFwiZm9vdHByaW50XCIsXG4gICAgICBzbmlwcGV0X3R5cGU6IHNuaXBwZXQuc25pcHBldF90eXBlLFxuICAgICAgaXNfcHJpdmF0ZTogZmFsc2UsXG4gICAgICBpc19wdWJsaWM6IHRydWUsXG4gICAgICBpc191bmxpc3RlZDogZmFsc2UsXG4gICAgICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkOiBgcGFja2FnZV9yZWxlYXNlXyR7bmV4dElkfWAsXG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIHBhY2thZ2UgcmVsZWFzZVxuICAgIGNvbnN0IG5ld1BhY2thZ2VSZWxlYXNlID0ge1xuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBgcGFja2FnZV9yZWxlYXNlXyR7bmV4dElkfWAsXG4gICAgICBwYWNrYWdlX2lkOiBuZXdQYWNrYWdlLnBhY2thZ2VfaWQsXG4gICAgICB2ZXJzaW9uOiBcIjAuMC4xXCIsXG4gICAgICBpc19sYXRlc3Q6IHRydWUsXG4gICAgICBpc19sb2NrZWQ6IGZhbHNlLFxuICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICB1cGRhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICB9XG5cbiAgICAvLyBBZGQgYWxsIHRoZSBmaWxlc1xuICAgIGNvbnN0IHBhY2thZ2VGaWxlczogUGFja2FnZUZpbGVbXSA9IFtdXG4gICAgbGV0IGZpbGVJZENvdW50ZXIgPSBuZXh0SWRcblxuICAgIC8vIEFkZCBtYWluIGNvZGUgZmlsZVxuICAgIHBhY2thZ2VGaWxlcy5wdXNoKHtcbiAgICAgIHBhY2thZ2VfZmlsZV9pZDogYHBhY2thZ2VfZmlsZV8ke2ZpbGVJZENvdW50ZXIrK31gLFxuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBuZXdQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICBmaWxlX3BhdGg6IFwiaW5kZXgudHN4XCIsXG4gICAgICBjb250ZW50X3RleHQ6IHNuaXBwZXQuY29kZSB8fCBcIlwiLFxuICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgfSlcblxuICAgIC8vIEFkZCBEVFMgZmlsZSBpZiBwcm92aWRlZFxuICAgIGlmIChzbmlwcGV0LmR0cykge1xuICAgICAgcGFja2FnZUZpbGVzLnB1c2goe1xuICAgICAgICBwYWNrYWdlX2ZpbGVfaWQ6IGBwYWNrYWdlX2ZpbGVfJHtmaWxlSWRDb3VudGVyKyt9YCxcbiAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBuZXdQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgIGZpbGVfcGF0aDogXCIvZGlzdC9pbmRleC5kLnRzXCIsXG4gICAgICAgIGNvbnRlbnRfdGV4dDogc25pcHBldC5kdHMsXG4gICAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyBBZGQgY29tcGlsZWQgSlMgaWYgcHJvdmlkZWRcbiAgICBpZiAoc25pcHBldC5jb21waWxlZF9qcykge1xuICAgICAgcGFja2FnZUZpbGVzLnB1c2goe1xuICAgICAgICBwYWNrYWdlX2ZpbGVfaWQ6IGBwYWNrYWdlX2ZpbGVfJHtmaWxlSWRDb3VudGVyKyt9YCxcbiAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBuZXdQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgIGZpbGVfcGF0aDogXCIvZGlzdC9pbmRleC5qc1wiLFxuICAgICAgICBjb250ZW50X3RleHQ6IHNuaXBwZXQuY29tcGlsZWRfanMsXG4gICAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyBBZGQgY2lyY3VpdCBKU09OIGlmIHByb3ZpZGVkXG4gICAgaWYgKHNuaXBwZXQuY2lyY3VpdF9qc29uICYmIHNuaXBwZXQuY2lyY3VpdF9qc29uLmxlbmd0aCA+IDApIHtcbiAgICAgIHBhY2thZ2VGaWxlcy5wdXNoKHtcbiAgICAgICAgcGFja2FnZV9maWxlX2lkOiBgcGFja2FnZV9maWxlXyR7ZmlsZUlkQ291bnRlcisrfWAsXG4gICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICBmaWxlX3BhdGg6IFwiL2Rpc3QvY2lyY3VpdC5qc29uXCIsXG4gICAgICAgIGNvbnRlbnRfdGV4dDogSlNPTi5zdHJpbmdpZnkoc25pcHBldC5jaXJjdWl0X2pzb24pLFxuICAgICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHRoZSBkYXRhYmFzZSBzdGF0ZSBhdG9taWNhbGx5XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgcGFja2FnZXM6IFsuLi5zdGF0ZS5wYWNrYWdlcywgbmV3UGFja2FnZV0sXG4gICAgICBwYWNrYWdlUmVsZWFzZXM6IFsuLi5zdGF0ZS5wYWNrYWdlUmVsZWFzZXMsIG5ld1BhY2thZ2VSZWxlYXNlXSxcbiAgICAgIHBhY2thZ2VGaWxlczogWy4uLnN0YXRlLnBhY2thZ2VGaWxlcywgLi4ucGFja2FnZUZpbGVzXSxcbiAgICAgIGlkQ291bnRlcjogZmlsZUlkQ291bnRlcixcbiAgICB9KSlcblxuICAgIC8vIFJldHVybiBpbiB0aGUgc2FtZSBmb3JtYXQgYXMgY3JlYXRlIGVuZHBvaW50XG4gICAgcmV0dXJuIHtcbiAgICAgIHNuaXBwZXRfaWQ6IG5ld1BhY2thZ2UucGFja2FnZV9pZCxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgbmFtZTogbmV3UGFja2FnZS5uYW1lLFxuICAgICAgdW5zY29wZWRfbmFtZTogbmV3UGFja2FnZS51bnNjb3BlZF9uYW1lLFxuICAgICAgb3duZXJfbmFtZTogc25pcHBldC5vd25lcl9uYW1lLFxuICAgICAgY29kZTogc25pcHBldC5jb2RlIHx8IFwiXCIsXG4gICAgICBkdHM6IHNuaXBwZXQuZHRzLFxuICAgICAgY29tcGlsZWRfanM6IHNuaXBwZXQuY29tcGlsZWRfanMsXG4gICAgICBzdGFyX2NvdW50OiAwLFxuICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICB1cGRhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIHNuaXBwZXRfdHlwZTogc25pcHBldC5zbmlwcGV0X3R5cGUsXG4gICAgICBjaXJjdWl0X2pzb246IHNuaXBwZXQuY2lyY3VpdF9qc29uIHx8IFtdLFxuICAgICAgZGVzY3JpcHRpb246IHNuaXBwZXQuZGVzY3JpcHRpb24gfHwgXCJcIixcbiAgICAgIGlzX3N0YXJyZWQ6IGZhbHNlLFxuICAgICAgdmVyc2lvbjogXCIwLjAuMVwiLFxuICAgICAgaXNfcHJpdmF0ZTogZmFsc2UsXG4gICAgICBpc19wdWJsaWM6IHRydWUsXG4gICAgICBpc191bmxpc3RlZDogZmFsc2UsXG4gICAgfVxuICB9LFxuICBnZXRMYXRlc3RTbmlwcGV0czogKGxpbWl0OiBudW1iZXIpOiBTbmlwcGV0W10gPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcblxuICAgIC8vIEdldCBhbGwgcGFja2FnZXMgdGhhdCBhcmUgc25pcHBldHNcbiAgICBjb25zdCBzbmlwcGV0UGFja2FnZXMgPSBzdGF0ZS5wYWNrYWdlc1xuICAgICAgLmZpbHRlcigocGtnKSA9PiBwa2cuaXNfc25pcHBldCA9PT0gdHJ1ZSlcbiAgICAgIC5tYXAoKHBrZykgPT4ge1xuICAgICAgICAvLyBHZXQgdGhlIHBhY2thZ2UgcmVsZWFzZVxuICAgICAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IHN0YXRlLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAgIChwcikgPT5cbiAgICAgICAgICAgIHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGtnLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgJiZcbiAgICAgICAgICAgIHByLmlzX2xhdGVzdCA9PT0gdHJ1ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSByZXR1cm4gbnVsbFxuXG4gICAgICAgIC8vIEdldCB0aGUgcGFja2FnZSBmaWxlc1xuICAgICAgICBjb25zdCBwYWNrYWdlRmlsZXMgPSBzdGF0ZS5wYWNrYWdlRmlsZXMuZmlsdGVyKFxuICAgICAgICAgIChmaWxlKSA9PlxuICAgICAgICAgICAgZmlsZS5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgICAgKVxuXG4gICAgICAgIC8vIEdldCB0aGUgY29kZSBmaWxlXG4gICAgICAgIGNvbnN0IGNvZGVGaWxlID0gcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAgICAgKGZpbGUpID0+XG4gICAgICAgICAgICBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c1wiIHx8IGZpbGUuZmlsZV9wYXRoID09PSBcImluZGV4LnRzeFwiLFxuICAgICAgICApXG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgc3RhcnJlZFxuICAgICAgICBjb25zdCBpc1N0YXJyZWQgPSBzdGF0ZS5hY2NvdW50UGFja2FnZXMuc29tZShcbiAgICAgICAgICAoYXApID0+IGFwLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIGFwLmlzX3N0YXJyZWQsXG4gICAgICAgIClcblxuICAgICAgICAvLyBDb252ZXJ0IHRvIHNuaXBwZXQgZm9ybWF0XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc25pcHBldF9pZDogcGtnLnBhY2thZ2VfaWQsXG4gICAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCB8fCBcIlwiLFxuICAgICAgICAgIHVuc2NvcGVkX25hbWU6IHBrZy51bnNjb3BlZF9uYW1lLFxuICAgICAgICAgIG5hbWU6IHBrZy5uYW1lLFxuICAgICAgICAgIG93bmVyX25hbWU6IHBrZy5vd25lcl9naXRodWJfdXNlcm5hbWUgfHwgXCJcIixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogcGtnLmRlc2NyaXB0aW9uIHx8IFwiXCIsXG4gICAgICAgICAgc25pcHBldF90eXBlOiBwa2cuc25pcHBldF90eXBlIHx8IFwiYm9hcmRcIixcbiAgICAgICAgICBjb2RlOiBjb2RlRmlsZT8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICAgICAgZHRzOlxuICAgICAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmQudHNcIilcbiAgICAgICAgICAgICAgPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgICAgICBjb21waWxlZF9qczpcbiAgICAgICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5qc1wiKVxuICAgICAgICAgICAgICA/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgICAgIGNyZWF0ZWRfYXQ6IHBrZy5jcmVhdGVkX2F0LFxuICAgICAgICAgIHVwZGF0ZWRfYXQ6IHBrZy51cGRhdGVkX2F0LFxuICAgICAgICAgIHN0YXJfY291bnQ6IHBrZy5zdGFyX2NvdW50IHx8IDAsXG4gICAgICAgICAgaXNfc3RhcnJlZDogaXNTdGFycmVkLFxuICAgICAgICAgIHZlcnNpb246IHBrZy5sYXRlc3RfdmVyc2lvbiB8fCBcIjAuMC4xXCIsXG4gICAgICAgICAgY2lyY3VpdF9qc29uOlxuICAgICAgICAgICAgcGFja2FnZUZpbGVzXG4gICAgICAgICAgICAgIC5maWx0ZXIoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2NpcmN1aXQuanNvblwiKVxuICAgICAgICAgICAgICAuZmxhdE1hcCgoZmlsZSkgPT4gSlNPTi5wYXJzZShmaWxlLmNvbnRlbnRfdGV4dCB8fCBcIltdXCIpKSB8fCBbXSxcbiAgICAgICAgICBpc19wcml2YXRlOiBwa2cuaXNfcHJpdmF0ZSB8fCBmYWxzZSxcbiAgICAgICAgICBpc19wdWJsaWM6IHBrZy5pc19wdWJsaWMgfHwgdHJ1ZSxcbiAgICAgICAgICBpc191bmxpc3RlZDogcGtnLmlzX3VubGlzdGVkIHx8IGZhbHNlLFxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmZpbHRlcihcbiAgICAgICAgKHNuaXBwZXQpOiBzbmlwcGV0IGlzIE5vbk51bGxhYmxlPHR5cGVvZiBzbmlwcGV0PiA9PiBzbmlwcGV0ICE9PSBudWxsLFxuICAgICAgKVxuICAgICAgLm1hcCgoc25pcHBldCkgPT4gKHtcbiAgICAgICAgLi4uc25pcHBldCxcbiAgICAgICAgZGVzY3JpcHRpb246IHNuaXBwZXQuZGVzY3JpcHRpb24gfHwgXCJcIixcbiAgICAgIH0pKVxuICAgICAgLnNvcnQoXG4gICAgICAgIChhLCBiKSA9PlxuICAgICAgICAgIG5ldyBEYXRlKGIuY3JlYXRlZF9hdCkuZ2V0VGltZSgpIC0gbmV3IERhdGUoYS5jcmVhdGVkX2F0KS5nZXRUaW1lKCksXG4gICAgICApXG4gICAgICAuc2xpY2UoMCwgbGltaXQpXG5cbiAgICByZXR1cm4gc25pcHBldFBhY2thZ2VzXG4gIH0sXG4gIGdldFRyZW5kaW5nU25pcHBldHM6IChsaW1pdDogbnVtYmVyLCBzaW5jZTogc3RyaW5nKTogU25pcHBldFtdID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgY29uc3Qgc2luY2VEYXRlID0gbmV3IERhdGUoc2luY2UpLmdldFRpbWUoKVxuXG4gICAgLy8gR2V0IHN0YXIgY291bnRzIHdpdGhpbiB0aW1lIHBlcmlvZFxuICAgIGNvbnN0IHJlY2VudFN0YXJzID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKVxuICAgIHN0YXRlLmFjY291bnRQYWNrYWdlcy5mb3JFYWNoKChhcCkgPT4ge1xuICAgICAgaWYgKGFwLmlzX3N0YXJyZWQgJiYgbmV3IERhdGUoYXAuY3JlYXRlZF9hdCkuZ2V0VGltZSgpID49IHNpbmNlRGF0ZSkge1xuICAgICAgICByZWNlbnRTdGFycy5zZXQoXG4gICAgICAgICAgYXAucGFja2FnZV9pZCxcbiAgICAgICAgICAocmVjZW50U3RhcnMuZ2V0KGFwLnBhY2thZ2VfaWQpIHx8IDApICsgMSxcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH0pXG5cbiAgICBjb25zdCBwYWNrYWdlc1dpdGhTdGFyQ291bnQgPSBbLi4uc3RhdGUucGFja2FnZXNdXG4gICAgICAubWFwKChwa2cpID0+ICh7XG4gICAgICAgIC4uLnBrZyxcbiAgICAgICAgc3Rhcl9jb3VudDogcmVjZW50U3RhcnMuZ2V0KHBrZy5wYWNrYWdlX2lkKSB8fCAwLFxuICAgICAgfSkpXG4gICAgICAuc29ydCgoYSwgYikgPT4gYi5zdGFyX2NvdW50IC0gYS5zdGFyX2NvdW50KVxuICAgICAgLnNsaWNlKDAsIGxpbWl0KVxuXG4gICAgY29uc3QgdHJlbmRpbmdTbmlwcGV0cyA9IHBhY2thZ2VzV2l0aFN0YXJDb3VudFxuICAgICAgLm1hcCgocGtnKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gc3RhdGUucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAgICAgKHByKSA9PlxuICAgICAgICAgICAgcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCAmJlxuICAgICAgICAgICAgcHIuaXNfbGF0ZXN0ID09PSB0cnVlLFxuICAgICAgICApXG4gICAgICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHJldHVybiBudWxsXG5cbiAgICAgICAgY29uc3QgcGFja2FnZUZpbGVzID0gc3RhdGUucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAgICAgICAoZmlsZSkgPT5cbiAgICAgICAgICAgIGZpbGUucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgIClcblxuICAgICAgICBjb25zdCBjb2RlRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgICAgIChmaWxlKSA9PlxuICAgICAgICAgICAgZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHNcIiB8fCBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIixcbiAgICAgICAgKVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc25pcHBldF9pZDogcGtnLnBhY2thZ2VfaWQsXG4gICAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCB8fCBcIlwiLFxuICAgICAgICAgIHVuc2NvcGVkX25hbWU6IHBrZy51bnNjb3BlZF9uYW1lLFxuICAgICAgICAgIG5hbWU6IHBrZy5uYW1lLFxuICAgICAgICAgIG93bmVyX25hbWU6IHBrZy5vd25lcl9naXRodWJfdXNlcm5hbWUgfHwgXCJcIixcbiAgICAgICAgICBjb2RlOiBjb2RlRmlsZSA/IGNvZGVGaWxlLmNvbnRlbnRfdGV4dCB8fCBcIlwiIDogXCJcIixcbiAgICAgICAgICBjcmVhdGVkX2F0OiBwa2cuY3JlYXRlZF9hdCxcbiAgICAgICAgICB1cGRhdGVkX2F0OiBwa2cudXBkYXRlZF9hdCxcbiAgICAgICAgICBzbmlwcGV0X3R5cGU6IHBrZy5pc19zbmlwcGV0ID8gXCJib2FyZFwiIDogXCJwYWNrYWdlXCIsXG4gICAgICAgICAgc3Rhcl9jb3VudDogcGtnLnN0YXJfY291bnQsXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKChzbmlwcGV0KSA9PiBzbmlwcGV0ICE9PSBudWxsKVxuXG4gICAgcmV0dXJuIHRyZW5kaW5nU25pcHBldHMgYXMgU25pcHBldFtdXG4gIH0sXG4gIGdldFBhY2thZ2VzQnlBdXRob3I6IChhdXRob3JOYW1lPzogc3RyaW5nKTogUGFja2FnZVtdID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgY29uc3QgcGFja2FnZXMgPSBhdXRob3JOYW1lXG4gICAgICA/IHN0YXRlLnBhY2thZ2VzLmZpbHRlcigocGtnKSA9PiBwa2cub3duZXJfZ2l0aHViX3VzZXJuYW1lID09PSBhdXRob3JOYW1lKVxuICAgICAgOiBzdGF0ZS5wYWNrYWdlc1xuICAgIHJldHVybiBwYWNrYWdlcy5tYXAoKHBrZykgPT4gKHtcbiAgICAgIC4uLnBrZyxcbiAgICAgIHN0YXJfY291bnQ6IHN0YXRlLmFjY291bnRQYWNrYWdlcy5maWx0ZXIoXG4gICAgICAgIChhcCkgPT4gYXAucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQgJiYgYXAuaXNfc3RhcnJlZCxcbiAgICAgICkubGVuZ3RoLFxuICAgIH0pKVxuICB9LFxuICBnZXRTbmlwcGV0QnlBdXRob3JBbmROYW1lOiAoXG4gICAgYXV0aG9yTmFtZTogc3RyaW5nLFxuICAgIHNuaXBwZXROYW1lOiBzdHJpbmcsXG4gICk6IFNuaXBwZXQgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICAvLyBMb29rIGZvciB0aGUgcGFja2FnZSB0aGF0IHJlcHJlc2VudHMgdGhpcyBzbmlwcGV0IHdpdGggY2FzZS1pbnNlbnNpdGl2ZSBtYXRjaGluZ1xuICAgIGNvbnN0IF9wYWNrYWdlID0gc3RhdGUucGFja2FnZXMuZmluZChcbiAgICAgIChwa2cpID0+XG4gICAgICAgIHBrZy5vd25lcl9naXRodWJfdXNlcm5hbWU/LnRvTG93ZXJDYXNlKCkgPT09IGF1dGhvck5hbWUudG9Mb3dlckNhc2UoKSAmJlxuICAgICAgICBwa2cubmFtZS50b0xvd2VyQ2FzZSgpID09PSBzbmlwcGV0TmFtZS50b0xvd2VyQ2FzZSgpICYmXG4gICAgICAgIHBrZy5pc19zbmlwcGV0ID09PSB0cnVlLFxuICAgIClcbiAgICBpZiAoIV9wYWNrYWdlKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICAvLyBHZXQgdGhlIHBhY2thZ2UgcmVsZWFzZVxuICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gc3RhdGUucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAocHIpID0+XG4gICAgICAgIHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gX3BhY2thZ2UubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCAmJlxuICAgICAgICBwci5pc19sYXRlc3QgPT09IHRydWUsXG4gICAgKVxuICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHJldHVybiB1bmRlZmluZWRcblxuICAgIC8vIEdldCB0aGUgcGFja2FnZSBmaWxlc1xuICAgIGNvbnN0IHBhY2thZ2VGaWxlcyA9IHN0YXRlLnBhY2thZ2VGaWxlcy5maWx0ZXIoXG4gICAgICAoZmlsZSkgPT4gZmlsZS5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICApXG5cbiAgICAvLyBHZXQgdGhlIGNvZGUgZmlsZSAoaW5kZXgudHMgb3IgaW5kZXgudHN4KVxuICAgIGNvbnN0IGNvZGVGaWxlID0gcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHNcIiB8fCBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIixcbiAgICApXG5cbiAgICAvLyBNYXAgdGhlIHBhY2thZ2UgZGF0YSB0byBtYXRjaCB0aGUgU25pcHBldCBzdHJ1Y3R1cmVcbiAgICByZXR1cm4ge1xuICAgICAgc25pcHBldF9pZDogX3BhY2thZ2UucGFja2FnZV9pZCxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogX3BhY2thZ2UubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCB8fCBcIlwiLFxuICAgICAgdW5zY29wZWRfbmFtZTogX3BhY2thZ2UudW5zY29wZWRfbmFtZSxcbiAgICAgIG5hbWU6IF9wYWNrYWdlLm5hbWUsXG4gICAgICBvd25lcl9uYW1lOiBfcGFja2FnZS5vd25lcl9naXRodWJfdXNlcm5hbWUgfHwgXCJcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBfcGFja2FnZS5kZXNjcmlwdGlvbiB8fCBcIlwiLFxuICAgICAgc25pcHBldF90eXBlOiBfcGFja2FnZS5zbmlwcGV0X3R5cGUgfHwgXCJib2FyZFwiLFxuICAgICAgY29kZTogY29kZUZpbGU/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgZHRzOlxuICAgICAgICBwYWNrYWdlRmlsZXMuZmluZCgoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvaW5kZXguZC50c1wiKVxuICAgICAgICAgID8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICBjb21waWxlZF9qczpcbiAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmpzXCIpXG4gICAgICAgICAgPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgIGNyZWF0ZWRfYXQ6IF9wYWNrYWdlLmNyZWF0ZWRfYXQsXG4gICAgICB1cGRhdGVkX2F0OiBfcGFja2FnZS51cGRhdGVkX2F0LFxuICAgICAgc3Rhcl9jb3VudDogX3BhY2thZ2Uuc3Rhcl9jb3VudCB8fCAwLFxuICAgICAgaXNfc3RhcnJlZDogZmFsc2UsXG4gICAgICB2ZXJzaW9uOiBfcGFja2FnZS5sYXRlc3RfdmVyc2lvbiB8fCBcIjAuMC4xXCIsXG4gICAgICBjaXJjdWl0X2pzb246IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgICAoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvY2lyY3VpdC5qc29uXCIsXG4gICAgICApPy5jb250ZW50X3RleHRcbiAgICAgICAgPyBKU09OLnBhcnNlKFxuICAgICAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2NpcmN1aXQuanNvblwiKVxuICAgICAgICAgICAgICA/LmNvbnRlbnRfdGV4dCB8fCBcIltdXCIsXG4gICAgICAgICAgKVxuICAgICAgICA6IFtdLFxuICAgICAgaXNfcHJpdmF0ZTogX3BhY2thZ2UuaXNfcHJpdmF0ZSB8fCBmYWxzZSxcbiAgICAgIGlzX3B1YmxpYzogX3BhY2thZ2UuaXNfcHVibGljIHx8IHRydWUsXG4gICAgICBpc191bmxpc3RlZDogX3BhY2thZ2UuaXNfdW5saXN0ZWQgfHwgZmFsc2UsXG4gICAgfVxuICB9LFxuICB1cGRhdGVTbmlwcGV0OiAoXG4gICAgc25pcHBldElkOiBzdHJpbmcsXG4gICAgdXBkYXRlczogUGFydGlhbDxTbmlwcGV0PixcbiAgKTogU25pcHBldCB8IHVuZGVmaW5lZCA9PiB7XG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgcGFja2FnZUluZGV4ID0gc3RhdGUucGFja2FnZXMuZmluZEluZGV4KFxuICAgICAgICAocGtnKSA9PiBwa2cucGFja2FnZV9pZCA9PT0gc25pcHBldElkICYmIHBrZy5pc19zbmlwcGV0ID09PSB0cnVlLFxuICAgICAgKVxuICAgICAgaWYgKHBhY2thZ2VJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIHN0YXRlXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KClcbiAgICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gbmV3IERhdGUodGltZXN0YW1wKS50b0lTT1N0cmluZygpXG5cbiAgICAgIC8vIFVwZGF0ZSB0aGUgcGFja2FnZVxuICAgICAgY29uc3QgdXBkYXRlZFBhY2thZ2VzID0gWy4uLnN0YXRlLnBhY2thZ2VzXVxuICAgICAgY29uc3QgY3VycmVudFBhY2thZ2UgPSB1cGRhdGVkUGFja2FnZXNbcGFja2FnZUluZGV4XVxuICAgICAgdXBkYXRlZFBhY2thZ2VzW3BhY2thZ2VJbmRleF0gPSB7XG4gICAgICAgIC4uLmN1cnJlbnRQYWNrYWdlLFxuICAgICAgICBkZXNjcmlwdGlvbjogdXBkYXRlcy5kZXNjcmlwdGlvbiA/PyBjdXJyZW50UGFja2FnZS5kZXNjcmlwdGlvbixcbiAgICAgICAgaXNfcHJpdmF0ZTogdXBkYXRlcy5pc19wcml2YXRlID8/IGN1cnJlbnRQYWNrYWdlLmlzX3ByaXZhdGUsXG4gICAgICAgIGlzX3B1YmxpYzpcbiAgICAgICAgICB1cGRhdGVzLmlzX3ByaXZhdGUgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyAhdXBkYXRlcy5pc19wcml2YXRlXG4gICAgICAgICAgICA6IGN1cnJlbnRQYWNrYWdlLmlzX3B1YmxpYyxcbiAgICAgICAgaXNfdW5saXN0ZWQ6IHVwZGF0ZXMuaXNfcHJpdmF0ZVxuICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgIDogKHVwZGF0ZXMuaXNfdW5saXN0ZWQgPz8gY3VycmVudFBhY2thZ2UuaXNfdW5saXN0ZWQpLFxuICAgICAgICB1cGRhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIH1cblxuICAgICAgLy8gR2V0IHRoZSBjdXJyZW50IHBhY2thZ2UgcmVsZWFzZVxuICAgICAgY29uc3QgcGFja2FnZVJlbGVhc2UgPSBzdGF0ZS5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgICAgKHByKSA9PlxuICAgICAgICAgIHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gY3VycmVudFBhY2thZ2UubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgIClcbiAgICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHJldHVybiBzdGF0ZVxuXG4gICAgICAvLyBVcGRhdGUgcGFja2FnZSBmaWxlcyBpZiBjb2RlL2R0cy9qcyBjaGFuZ2VkXG4gICAgICBjb25zdCB1cGRhdGVkRmlsZXMgPSBbLi4uc3RhdGUucGFja2FnZUZpbGVzXVxuICAgICAgY29uc3QgcGFja2FnZUZpbGVzID0gdXBkYXRlZEZpbGVzLmZpbHRlcihcbiAgICAgICAgKGZpbGUpID0+IGZpbGUucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICApXG5cbiAgICAgIGlmICh1cGRhdGVzLmNvZGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBjb2RlRmlsZUluZGV4ID0gcGFja2FnZUZpbGVzLmZpbmRJbmRleChcbiAgICAgICAgICAoZmlsZSkgPT5cbiAgICAgICAgICAgIGZpbGUuZmlsZV9wYXRoID09PSBcImluZGV4LnRzeFwiIHx8IGZpbGUuZmlsZV9wYXRoID09PSBcImluZGV4LnRzXCIsXG4gICAgICAgIClcbiAgICAgICAgaWYgKGNvZGVGaWxlSW5kZXggPj0gMCkge1xuICAgICAgICAgIHVwZGF0ZWRGaWxlc1tjb2RlRmlsZUluZGV4XSA9IHtcbiAgICAgICAgICAgIC4uLnBhY2thZ2VGaWxlc1tjb2RlRmlsZUluZGV4XSxcbiAgICAgICAgICAgIGNvbnRlbnRfdGV4dDogdXBkYXRlcy5jb2RlLFxuICAgICAgICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHVwZGF0ZWRGaWxlcy5wdXNoKHtcbiAgICAgICAgICAgIHBhY2thZ2VfZmlsZV9pZDogYHBhY2thZ2VfZmlsZV8ke3RpbWVzdGFtcH1gLFxuICAgICAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgICAgICBmaWxlX3BhdGg6IFwiaW5kZXgudHN4XCIsXG4gICAgICAgICAgICBjb250ZW50X3RleHQ6IHVwZGF0ZXMuY29kZSxcbiAgICAgICAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHVwZGF0ZXMuZHRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgZHRzRmlsZUluZGV4ID0gcGFja2FnZUZpbGVzLmZpbmRJbmRleChcbiAgICAgICAgICAoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvaW5kZXguZC50c1wiLFxuICAgICAgICApXG4gICAgICAgIGlmIChkdHNGaWxlSW5kZXggPj0gMCkge1xuICAgICAgICAgIHVwZGF0ZWRGaWxlc1tkdHNGaWxlSW5kZXhdID0ge1xuICAgICAgICAgICAgLi4ucGFja2FnZUZpbGVzW2R0c0ZpbGVJbmRleF0sXG4gICAgICAgICAgICBjb250ZW50X3RleHQ6IHVwZGF0ZXMuZHRzLFxuICAgICAgICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHVwZGF0ZWRGaWxlcy5wdXNoKHtcbiAgICAgICAgICAgIHBhY2thZ2VfZmlsZV9pZDogYHBhY2thZ2VfZmlsZV8ke3RpbWVzdGFtcH1gLFxuICAgICAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgICAgICBmaWxlX3BhdGg6IFwiL2Rpc3QvaW5kZXguZC50c1wiLFxuICAgICAgICAgICAgY29udGVudF90ZXh0OiB1cGRhdGVzLmR0cyxcbiAgICAgICAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHVwZGF0ZXMuY29tcGlsZWRfanMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBqc0ZpbGVJbmRleCA9IHBhY2thZ2VGaWxlcy5maW5kSW5kZXgoXG4gICAgICAgICAgKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmpzXCIsXG4gICAgICAgIClcbiAgICAgICAgaWYgKGpzRmlsZUluZGV4ID49IDApIHtcbiAgICAgICAgICB1cGRhdGVkRmlsZXNbanNGaWxlSW5kZXhdID0ge1xuICAgICAgICAgICAgLi4ucGFja2FnZUZpbGVzW2pzRmlsZUluZGV4XSxcbiAgICAgICAgICAgIGNvbnRlbnRfdGV4dDogdXBkYXRlcy5jb21waWxlZF9qcyxcbiAgICAgICAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1cGRhdGVkRmlsZXMucHVzaCh7XG4gICAgICAgICAgICBwYWNrYWdlX2ZpbGVfaWQ6IGBwYWNrYWdlX2ZpbGVfJHt0aW1lc3RhbXB9YCxcbiAgICAgICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICAgICAgZmlsZV9wYXRoOiBcIi9kaXN0L2luZGV4LmpzXCIsXG4gICAgICAgICAgICBjb250ZW50X3RleHQ6IHVwZGF0ZXMuY29tcGlsZWRfanMsXG4gICAgICAgICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFVwZGF0ZSBjaXJjdWl0IEpTT04gaWYgcHJvdmlkZWRcbiAgICAgIGlmICh1cGRhdGVzLmNpcmN1aXRfanNvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IGNpcmN1aXRGaWxlSW5kZXggPSBwYWNrYWdlRmlsZXMuZmluZEluZGV4KFxuICAgICAgICAgIChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9jaXJjdWl0Lmpzb25cIixcbiAgICAgICAgKVxuICAgICAgICBpZiAoY2lyY3VpdEZpbGVJbmRleCA+PSAwKSB7XG4gICAgICAgICAgdXBkYXRlZEZpbGVzW2NpcmN1aXRGaWxlSW5kZXhdID0ge1xuICAgICAgICAgICAgLi4ucGFja2FnZUZpbGVzW2NpcmN1aXRGaWxlSW5kZXhdLFxuICAgICAgICAgICAgY29udGVudF90ZXh0OiBKU09OLnN0cmluZ2lmeSh1cGRhdGVzLmNpcmN1aXRfanNvbiksXG4gICAgICAgICAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFJldHVybiB1cGRhdGVkIHN0YXRlXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgcGFja2FnZXM6IHVwZGF0ZWRQYWNrYWdlcyxcbiAgICAgICAgcGFja2FnZUZpbGVzOiB1cGRhdGVkRmlsZXMsXG4gICAgICB9XG4gICAgfSlcblxuICAgIC8vIEdldCB0aGUgdXBkYXRlZCBzbmlwcGV0IHRvIHJldHVyblxuICAgIGNvbnN0IHVwZGF0ZWRQYWNrYWdlID0gZ2V0KCkucGFja2FnZXMuZmluZChcbiAgICAgIChwa2cpID0+IHBrZy5wYWNrYWdlX2lkID09PSBzbmlwcGV0SWQsXG4gICAgKVxuICAgIGlmICghdXBkYXRlZFBhY2thZ2UpIHJldHVybiB1bmRlZmluZWRcblxuICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gZ2V0KCkucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAocHIpID0+XG4gICAgICAgIHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gdXBkYXRlZFBhY2thZ2UubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICApXG4gICAgaWYgKCFwYWNrYWdlUmVsZWFzZSkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgY29uc3QgcGFja2FnZUZpbGVzID0gZ2V0KCkucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAgIChmaWxlKSA9PiBmaWxlLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgIClcblxuICAgIGNvbnN0IGNvZGVGaWxlID0gcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHNcIiB8fCBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIixcbiAgICApXG4gICAgY29uc3QgZHRzRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmQudHNcIixcbiAgICApXG4gICAgY29uc3QganNGaWxlID0gcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvaW5kZXguanNcIixcbiAgICApXG4gICAgY29uc3QgY2lyY3VpdEZpbGUgPSBwYWNrYWdlRmlsZXMuZmluZChcbiAgICAgIChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9jaXJjdWl0Lmpzb25cIixcbiAgICApXG5cbiAgICAvLyBSZXR1cm4gaW4gc25pcHBldCBmb3JtYXRcbiAgICByZXR1cm4ge1xuICAgICAgc25pcHBldF9pZDogdXBkYXRlZFBhY2thZ2UucGFja2FnZV9pZCxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogdXBkYXRlZFBhY2thZ2UubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCB8fCBcIlwiLFxuICAgICAgdW5zY29wZWRfbmFtZTogdXBkYXRlZFBhY2thZ2UudW5zY29wZWRfbmFtZSxcbiAgICAgIG5hbWU6IHVwZGF0ZWRQYWNrYWdlLm5hbWUsXG4gICAgICBvd25lcl9uYW1lOiB1cGRhdGVkUGFja2FnZS5vd25lcl9naXRodWJfdXNlcm5hbWUgfHwgXCJcIixcbiAgICAgIGRlc2NyaXB0aW9uOiB1cGRhdGVkUGFja2FnZS5kZXNjcmlwdGlvbiB8fCBcIlwiLFxuICAgICAgc25pcHBldF90eXBlOiB1cGRhdGVkUGFja2FnZS5zbmlwcGV0X3R5cGUgfHwgXCJib2FyZFwiLFxuICAgICAgY29kZTogY29kZUZpbGU/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgZHRzOiBkdHNGaWxlPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgIGNvbXBpbGVkX2pzOiBqc0ZpbGU/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgY3JlYXRlZF9hdDogdXBkYXRlZFBhY2thZ2UuY3JlYXRlZF9hdCxcbiAgICAgIHVwZGF0ZWRfYXQ6IHVwZGF0ZWRQYWNrYWdlLnVwZGF0ZWRfYXQsXG4gICAgICBzdGFyX2NvdW50OiB1cGRhdGVkUGFja2FnZS5zdGFyX2NvdW50IHx8IDAsXG4gICAgICBpc19zdGFycmVkOiBmYWxzZSxcbiAgICAgIHZlcnNpb246IHVwZGF0ZWRQYWNrYWdlLmxhdGVzdF92ZXJzaW9uIHx8IFwiMC4wLjFcIixcbiAgICAgIGNpcmN1aXRfanNvbjogY2lyY3VpdEZpbGVcbiAgICAgICAgPyBKU09OLnBhcnNlKGNpcmN1aXRGaWxlLmNvbnRlbnRfdGV4dCB8fCBcIltdXCIpXG4gICAgICAgIDogW10sXG4gICAgICBpc19wcml2YXRlOiB1cGRhdGVkUGFja2FnZS5pc19wcml2YXRlID8/IGZhbHNlLFxuICAgICAgaXNfcHVibGljOiB1cGRhdGVkUGFja2FnZS5pc19wdWJsaWMgPz8gdHJ1ZSxcbiAgICAgIGlzX3VubGlzdGVkOiB1cGRhdGVkUGFja2FnZS5pc191bmxpc3RlZCA/PyBmYWxzZSxcbiAgICB9XG4gIH0sXG4gIGdldFNuaXBwZXRCeUlkOiAoXG4gICAgc25pcHBldElkOiBzdHJpbmcsXG4gICAgYXV0aD86IHsgZ2l0aHViX3VzZXJuYW1lOiBzdHJpbmcgfSxcbiAgKTogU25pcHBldCB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIC8vIExvb2sgZm9yIHRoZSBwYWNrYWdlIHRoYXQgcmVwcmVzZW50cyB0aGlzIHNuaXBwZXRcbiAgICBjb25zdCBfcGFja2FnZSA9IHN0YXRlLnBhY2thZ2VzLmZpbmQoXG4gICAgICAocGtnKSA9PiBwa2cucGFja2FnZV9pZCA9PT0gc25pcHBldElkICYmIHBrZy5pc19zbmlwcGV0ID09PSB0cnVlLFxuICAgIClcbiAgICBpZiAoIV9wYWNrYWdlKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICAvLyBIYW5kbGUgdmlzaWJpbGl0eSBiYXNlZCBvbiBhdXRoZW50aWNhdGlvblxuICAgIGlmICghYXV0aCkge1xuICAgICAgLy8gVW5hdXRoZW50aWNhdGVkIHVzZXJzIGNhbiBvbmx5IHNlZSBwdWJsaWMgYW5kIG5vbi11bmxpc3RlZCBwYWNrYWdlc1xuICAgICAgaWYgKCFfcGFja2FnZS5pc19wdWJsaWMgfHwgX3BhY2thZ2UuaXNfdW5saXN0ZWQpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBBdXRoZW50aWNhdGVkIHVzZXJzIGNhbiBzZWU6XG4gICAgICAvLyAxLiBQdWJsaWMgYW5kIG5vbi11bmxpc3RlZCBwYWNrYWdlc1xuICAgICAgLy8gMi4gVGhlaXIgb3duIHVubGlzdGVkIHBhY2thZ2VzXG4gICAgICAvLyAzLiBUaGVpciBvd24gcHJpdmF0ZSBwYWNrYWdlc1xuICAgICAgY29uc3QgaXNPd25QYWNrYWdlID1cbiAgICAgICAgX3BhY2thZ2Uub3duZXJfZ2l0aHViX3VzZXJuYW1lID09PSBhdXRoPy5naXRodWJfdXNlcm5hbWVcbiAgICAgIGNvbnN0IGlzUHVibGljQW5kTm90VW5saXN0ZWQgPSBfcGFja2FnZS5pc19wdWJsaWMgJiYgIV9wYWNrYWdlLmlzX3VubGlzdGVkXG4gICAgICBjb25zdCBpc093blVubGlzdGVkID0gX3BhY2thZ2UuaXNfdW5saXN0ZWQgJiYgaXNPd25QYWNrYWdlXG4gICAgICBjb25zdCBpc093blByaXZhdGUgPSBfcGFja2FnZS5pc19wcml2YXRlICYmIGlzT3duUGFja2FnZVxuXG4gICAgICBpZiAoIWlzUHVibGljQW5kTm90VW5saXN0ZWQgJiYgIWlzT3duVW5saXN0ZWQgJiYgIWlzT3duUHJpdmF0ZSkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gR2V0IHRoZSBwYWNrYWdlIHJlbGVhc2VcbiAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IHN0YXRlLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgKHByKSA9PlxuICAgICAgICBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IF9wYWNrYWdlLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgJiZcbiAgICAgICAgcHIuaXNfbGF0ZXN0ID09PSB0cnVlLFxuICAgIClcbiAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICAvLyBHZXQgdGhlIHBhY2thZ2UgZmlsZXNcbiAgICBjb25zdCBwYWNrYWdlRmlsZXMgPSBzdGF0ZS5wYWNrYWdlRmlsZXMuZmlsdGVyKFxuICAgICAgKGZpbGUpID0+IGZpbGUucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgKVxuXG4gICAgLy8gR2V0IHRoZSBjb2RlIGZpbGUgKGluZGV4LnRzIG9yIGluZGV4LnRzeClcbiAgICBjb25zdCBjb2RlRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcImluZGV4LnRzXCIgfHwgZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHN4XCIsXG4gICAgKVxuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGN1cnJlbnQgdXNlciBoYXMgc3RhcnJlZCB0aGlzIHNuaXBwZXRcbiAgICBjb25zdCBpc1N0YXJyZWQgPSBzdGF0ZS5hY2NvdW50UGFja2FnZXMuc29tZShcbiAgICAgIChhcCkgPT4gYXAucGFja2FnZV9pZCA9PT0gc25pcHBldElkICYmIGFwLmlzX3N0YXJyZWQsXG4gICAgKVxuXG4gICAgLy8gTWFwIHRoZSBwYWNrYWdlIGRhdGEgdG8gbWF0Y2ggdGhlIFNuaXBwZXQgc3RydWN0dXJlXG4gICAgcmV0dXJuIHtcbiAgICAgIHNuaXBwZXRfaWQ6IF9wYWNrYWdlLnBhY2thZ2VfaWQsXG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IF9wYWNrYWdlLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgfHwgXCJcIixcbiAgICAgIHVuc2NvcGVkX25hbWU6IF9wYWNrYWdlLnVuc2NvcGVkX25hbWUsXG4gICAgICBuYW1lOiBfcGFja2FnZS5uYW1lLFxuICAgICAgb3duZXJfbmFtZTogX3BhY2thZ2Uub3duZXJfZ2l0aHViX3VzZXJuYW1lIHx8IFwiXCIsXG4gICAgICBkZXNjcmlwdGlvbjogX3BhY2thZ2UuZGVzY3JpcHRpb24gfHwgXCJcIixcbiAgICAgIHNuaXBwZXRfdHlwZTogX3BhY2thZ2Uuc25pcHBldF90eXBlIHx8IFwiYm9hcmRcIixcbiAgICAgIGNvZGU6IGNvZGVGaWxlPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgIGR0czpcbiAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmQudHNcIilcbiAgICAgICAgICA/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgY29tcGlsZWRfanM6XG4gICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5qc1wiKVxuICAgICAgICAgID8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICBjcmVhdGVkX2F0OiBfcGFja2FnZS5jcmVhdGVkX2F0LFxuICAgICAgdXBkYXRlZF9hdDogX3BhY2thZ2UudXBkYXRlZF9hdCxcbiAgICAgIHN0YXJfY291bnQ6IF9wYWNrYWdlLnN0YXJfY291bnQgfHwgMCxcbiAgICAgIGlzX3N0YXJyZWQ6IGlzU3RhcnJlZCxcbiAgICAgIHZlcnNpb246IF9wYWNrYWdlLmxhdGVzdF92ZXJzaW9uIHx8IFwiMC4wLjFcIixcbiAgICAgIGNpcmN1aXRfanNvbjogcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAgIChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9jaXJjdWl0Lmpzb25cIixcbiAgICAgICk/LmNvbnRlbnRfdGV4dFxuICAgICAgICA/IEpTT04ucGFyc2UoXG4gICAgICAgICAgICBwYWNrYWdlRmlsZXMuZmluZCgoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvY2lyY3VpdC5qc29uXCIpXG4gICAgICAgICAgICAgID8uY29udGVudF90ZXh0IHx8IFwiW11cIixcbiAgICAgICAgICApXG4gICAgICAgIDogW10sXG4gICAgICBpc19wcml2YXRlOiBfcGFja2FnZS5pc19wcml2YXRlIHx8IGZhbHNlLFxuICAgICAgaXNfcHVibGljOiBfcGFja2FnZS5pc19wdWJsaWMgfHwgdHJ1ZSxcbiAgICAgIGlzX3VubGlzdGVkOiBfcGFja2FnZS5pc191bmxpc3RlZCB8fCBmYWxzZSxcbiAgICB9XG4gIH0sXG4gIHNlYXJjaFNuaXBwZXRzOiAocXVlcnk6IHN0cmluZyk6IFNuaXBwZXRbXSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIGNvbnN0IGxvd2VyY2FzZVF1ZXJ5ID0gcXVlcnkudG9Mb3dlckNhc2UoKVxuXG4gICAgLy8gR2V0IGFsbCBwYWNrYWdlcyB0aGF0IGFyZSBzbmlwcGV0c1xuICAgIGNvbnN0IHBhY2thZ2VzID0gc3RhdGUucGFja2FnZXMuZmlsdGVyKChwa2cpID0+IHBrZy5pc19zbmlwcGV0ID09PSB0cnVlKVxuXG4gICAgLy8gRmluZCBwYWNrYWdlcyB0aGF0IG1hdGNoIGJ5IG5hbWUgb3IgZGVzY3JpcHRpb25cbiAgICBjb25zdCBtYXRjaGluZ1BhY2thZ2VzQnlNZXRhZGF0YSA9IHBhY2thZ2VzLmZpbHRlcihcbiAgICAgIChwa2cpID0+XG4gICAgICAgIHBrZy5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobG93ZXJjYXNlUXVlcnkpIHx8XG4gICAgICAgIHBrZy5kZXNjcmlwdGlvbj8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhsb3dlcmNhc2VRdWVyeSksXG4gICAgKVxuXG4gICAgLy8gRmluZCBwYWNrYWdlcyB0aGF0IG1hdGNoIGJ5IGNvZGUgY29udGVudCBpbiBhbnkgZmlsZVxuICAgIGNvbnN0IG1hdGNoaW5nRmlsZXNCeUNvbnRlbnQgPSBzdGF0ZS5wYWNrYWdlRmlsZXMuZmlsdGVyKFxuICAgICAgKGZpbGUpID0+XG4gICAgICAgIGZpbGUuY29udGVudF90ZXh0Py50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyY2FzZVF1ZXJ5KSA/PyBmYWxzZSxcbiAgICApXG5cbiAgICAvLyBHZXQgdGhlIHBhY2thZ2VzIGZvciBtYXRjaGluZyBmaWxlc1xuICAgIGNvbnN0IG1hdGNoaW5nUGFja2FnZXNCeUNvbnRlbnQgPSBtYXRjaGluZ0ZpbGVzQnlDb250ZW50XG4gICAgICAubWFwKChmaWxlKSA9PiB7XG4gICAgICAgIC8vIEZpbmQgdGhlIHBhY2thZ2UgcmVsZWFzZSBmb3IgdGhpcyBmaWxlXG4gICAgICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gc3RhdGUucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAgICAgKHByKSA9PiBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IGZpbGUucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICApXG4gICAgICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHJldHVybiBudWxsXG5cbiAgICAgICAgLy8gRmluZCB0aGUgcGFja2FnZSBmb3IgdGhpcyByZWxlYXNlXG4gICAgICAgIHJldHVybiBwYWNrYWdlcy5maW5kKFxuICAgICAgICAgIChwa2cpID0+XG4gICAgICAgICAgICBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICApXG4gICAgICB9KVxuICAgICAgLmZpbHRlcigocGtnKTogcGtnIGlzIE5vbk51bGxhYmxlPHR5cGVvZiBwa2c+ID0+IHBrZyAhPT0gbnVsbClcblxuICAgIC8vIENvbWJpbmUgYm90aCBzZXRzIG9mIG1hdGNoaW5nIHBhY2thZ2VzIGFuZCByZW1vdmUgZHVwbGljYXRlc1xuICAgIGNvbnN0IG1hdGNoaW5nUGFja2FnZXMgPSBbXG4gICAgICAuLi5uZXcgU2V0KFsuLi5tYXRjaGluZ1BhY2thZ2VzQnlNZXRhZGF0YSwgLi4ubWF0Y2hpbmdQYWNrYWdlc0J5Q29udGVudF0pLFxuICAgIF1cblxuICAgIC8vIENvbnZlcnQgbWF0Y2hpbmcgcGFja2FnZXMgdG8gc25pcHBldCBmb3JtYXRcbiAgICByZXR1cm4gbWF0Y2hpbmdQYWNrYWdlc1xuICAgICAgLm1hcCgocGtnKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gc3RhdGUucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAgICAgKHByKSA9PlxuICAgICAgICAgICAgcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCAmJlxuICAgICAgICAgICAgcHIuaXNfbGF0ZXN0ID09PSB0cnVlLFxuICAgICAgICApXG4gICAgICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHJldHVybiBudWxsXG5cbiAgICAgICAgY29uc3QgcGFja2FnZUZpbGVzID0gc3RhdGUucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAgICAgICAoZmlsZSkgPT5cbiAgICAgICAgICAgIGZpbGUucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgIClcblxuICAgICAgICBjb25zdCBjb2RlRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgICAgIChmaWxlKSA9PlxuICAgICAgICAgICAgZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHNcIiB8fCBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIixcbiAgICAgICAgKVxuXG4gICAgICAgIGNvbnN0IGlzU3RhcnJlZCA9IHN0YXRlLmFjY291bnRQYWNrYWdlcy5zb21lKFxuICAgICAgICAgIChhcCkgPT4gYXAucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQgJiYgYXAuaXNfc3RhcnJlZCxcbiAgICAgICAgKVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc25pcHBldF9pZDogcGtnLnBhY2thZ2VfaWQsXG4gICAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCB8fCBcIlwiLFxuICAgICAgICAgIHVuc2NvcGVkX25hbWU6IHBrZy51bnNjb3BlZF9uYW1lLFxuICAgICAgICAgIG5hbWU6IHBrZy5uYW1lLFxuICAgICAgICAgIG93bmVyX25hbWU6IHBrZy5vd25lcl9naXRodWJfdXNlcm5hbWUgfHwgXCJcIixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogcGtnLmRlc2NyaXB0aW9uIHx8IFwiXCIsXG4gICAgICAgICAgc25pcHBldF90eXBlOiBwa2cuc25pcHBldF90eXBlIHx8IFwiYm9hcmRcIixcbiAgICAgICAgICBjb2RlOiBjb2RlRmlsZT8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICAgICAgZHRzOlxuICAgICAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmQudHNcIilcbiAgICAgICAgICAgICAgPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgICAgICBjb21waWxlZF9qczpcbiAgICAgICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5qc1wiKVxuICAgICAgICAgICAgICA/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgICAgIGNyZWF0ZWRfYXQ6IHBrZy5jcmVhdGVkX2F0LFxuICAgICAgICAgIHVwZGF0ZWRfYXQ6IHBrZy51cGRhdGVkX2F0LFxuICAgICAgICAgIHN0YXJfY291bnQ6IHBrZy5zdGFyX2NvdW50IHx8IDAsXG4gICAgICAgICAgaXNfc3RhcnJlZDogaXNTdGFycmVkLFxuICAgICAgICAgIHZlcnNpb246IHBrZy5sYXRlc3RfdmVyc2lvbiB8fCBcIjAuMC4xXCIsXG4gICAgICAgICAgY2lyY3VpdF9qc29uOlxuICAgICAgICAgICAgcGFja2FnZUZpbGVzXG4gICAgICAgICAgICAgIC5maWx0ZXIoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2NpcmN1aXQuanNvblwiKVxuICAgICAgICAgICAgICAuZmxhdE1hcCgoZmlsZSkgPT4gSlNPTi5wYXJzZShmaWxlLmNvbnRlbnRfdGV4dCB8fCBcIltdXCIpKSB8fCBbXSxcbiAgICAgICAgfSBhcyBTbmlwcGV0XG4gICAgICB9KVxuICAgICAgLmZpbHRlcigoc25pcHBldCk6IHNuaXBwZXQgaXMgU25pcHBldCA9PiBzbmlwcGV0ICE9PSBudWxsKVxuICB9LFxuICBkZWxldGVTbmlwcGV0OiAoc25pcHBldElkOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICBsZXQgZGVsZXRlZCA9IGZhbHNlXG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBzdGF0ZS5zbmlwcGV0cy5maW5kSW5kZXgoKHMpID0+IHMuc25pcHBldF9pZCA9PT0gc25pcHBldElkKVxuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBzdGF0ZS5zbmlwcGV0cy5zcGxpY2UoaW5kZXgsIDEpXG4gICAgICAgIGRlbGV0ZWQgPSB0cnVlXG4gICAgICB9XG4gICAgICByZXR1cm4gc3RhdGVcbiAgICB9KVxuICAgIHJldHVybiBkZWxldGVkXG4gIH0sXG4gIGFkZFNlc3Npb246IChzZXNzaW9uOiBPbWl0PFNlc3Npb24sIFwic2Vzc2lvbl9pZFwiPik6IFNlc3Npb24gPT4ge1xuICAgIGNvbnN0IG5ld1Nlc3Npb24gPSB7IHNlc3Npb25faWQ6IGBzZXNzaW9uXyR7RGF0ZS5ub3coKX1gLCAuLi5zZXNzaW9uIH1cbiAgICBzZXQoKHN0YXRlKSA9PiAoe1xuICAgICAgc2Vzc2lvbnM6IFsuLi5zdGF0ZS5zZXNzaW9ucywgbmV3U2Vzc2lvbl0sXG4gICAgfSkpXG4gICAgcmV0dXJuIG5ld1Nlc3Npb25cbiAgfSxcbiAgZ2V0U2Vzc2lvbnM6ICh7XG4gICAgYWNjb3VudF9pZCxcbiAgICBpc19jbGlfc2Vzc2lvbixcbiAgfTogeyBhY2NvdW50X2lkOiBzdHJpbmc7IGlzX2NsaV9zZXNzaW9uPzogYm9vbGVhbiB9KTogU2Vzc2lvbltdID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLnNlc3Npb25zLmZpbHRlcihcbiAgICAgIChzZXNzaW9uKSA9PlxuICAgICAgICBzZXNzaW9uLmFjY291bnRfaWQgPT09IGFjY291bnRfaWQgJiZcbiAgICAgICAgKGlzX2NsaV9zZXNzaW9uID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICBzZXNzaW9uLmlzX2NsaV9zZXNzaW9uID09PSBpc19jbGlfc2Vzc2lvbiksXG4gICAgKVxuICB9LFxuICBjcmVhdGVMb2dpblBhZ2U6ICgpOiBMb2dpblBhZ2UgPT4ge1xuICAgIGNvbnN0IG5ld0xvZ2luUGFnZTogTG9naW5QYWdlID0ge1xuICAgICAgbG9naW5fcGFnZV9pZDogYGxvZ2luX3BhZ2VfJHtEYXRlLm5vdygpfWAsXG4gICAgICBsb2dpbl9wYWdlX2F1dGhfdG9rZW46IGB0b2tlbl8ke0RhdGUubm93KCl9YCxcbiAgICAgIHdhc19sb2dpbl9zdWNjZXNzZnVsOiBmYWxzZSxcbiAgICAgIGhhc19iZWVuX3VzZWRfdG9fY3JlYXRlX3Nlc3Npb246IGZhbHNlLFxuICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgZXhwaXJlc19hdDogbmV3IERhdGUoRGF0ZS5ub3coKSArIDMwICogNjAgKiAxMDAwKS50b0lTT1N0cmluZygpLCAvLyAzMCBtaW51dGVzIGV4cGlyYXRpb25cbiAgICB9XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIGxvZ2luUGFnZXM6IFsuLi5zdGF0ZS5sb2dpblBhZ2VzLCBuZXdMb2dpblBhZ2VdLFxuICAgIH0pKVxuICAgIHJldHVybiBuZXdMb2dpblBhZ2VcbiAgfSxcbiAgZ2V0TG9naW5QYWdlOiAobG9naW5QYWdlSWQ6IHN0cmluZyk6IExvZ2luUGFnZSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5sb2dpblBhZ2VzLmZpbmQoKGxwKSA9PiBscC5sb2dpbl9wYWdlX2lkID09PSBsb2dpblBhZ2VJZClcbiAgfSxcbiAgdXBkYXRlTG9naW5QYWdlOiAobG9naW5QYWdlSWQ6IHN0cmluZywgdXBkYXRlczogUGFydGlhbDxMb2dpblBhZ2U+KTogdm9pZCA9PiB7XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIGxvZ2luUGFnZXM6IHN0YXRlLmxvZ2luUGFnZXMubWFwKChscCkgPT5cbiAgICAgICAgbHAubG9naW5fcGFnZV9pZCA9PT0gbG9naW5QYWdlSWQgPyB7IC4uLmxwLCAuLi51cGRhdGVzIH0gOiBscCxcbiAgICAgICksXG4gICAgfSkpXG4gIH0sXG4gIGdldEFjY291bnQ6IChhY2NvdW50SWQ6IHN0cmluZyk6IEFjY291bnQgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUuYWNjb3VudHMuZmluZCgoYWNjb3VudCkgPT4gYWNjb3VudC5hY2NvdW50X2lkID09PSBhY2NvdW50SWQpXG4gIH0sXG4gIHVwZGF0ZUFjY291bnQ6IChcbiAgICBhY2NvdW50SWQ6IHN0cmluZyxcbiAgICB1cGRhdGVzOiBQYXJ0aWFsPEFjY291bnQ+LFxuICApOiBBY2NvdW50IHwgdW5kZWZpbmVkID0+IHtcbiAgICBsZXQgdXBkYXRlZEFjY291bnQ6IEFjY291bnQgfCB1bmRlZmluZWRcbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBhY2NvdW50SW5kZXggPSBzdGF0ZS5hY2NvdW50cy5maW5kSW5kZXgoXG4gICAgICAgIChhY2NvdW50KSA9PiBhY2NvdW50LmFjY291bnRfaWQgPT09IGFjY291bnRJZCxcbiAgICAgIClcbiAgICAgIGlmIChhY2NvdW50SW5kZXggIT09IC0xKSB7XG4gICAgICAgIHVwZGF0ZWRBY2NvdW50ID0geyAuLi5zdGF0ZS5hY2NvdW50c1thY2NvdW50SW5kZXhdIH1cbiAgICAgICAgaWYgKHVwZGF0ZXMuc2hpcHBpbmdJbmZvKSB7XG4gICAgICAgICAgdXBkYXRlZEFjY291bnQuc2hpcHBpbmdJbmZvID0ge1xuICAgICAgICAgICAgLi4udXBkYXRlZEFjY291bnQuc2hpcHBpbmdJbmZvLFxuICAgICAgICAgICAgLi4udXBkYXRlcy5zaGlwcGluZ0luZm8sXG4gICAgICAgICAgfVxuICAgICAgICAgIGRlbGV0ZSB1cGRhdGVzLnNoaXBwaW5nSW5mb1xuICAgICAgICB9XG4gICAgICAgIHVwZGF0ZWRBY2NvdW50ID0geyAuLi51cGRhdGVkQWNjb3VudCwgLi4udXBkYXRlcyB9XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRBY2NvdW50cyA9IFsuLi5zdGF0ZS5hY2NvdW50c11cbiAgICAgICAgdXBkYXRlZEFjY291bnRzW2FjY291bnRJbmRleF0gPSB1cGRhdGVkQWNjb3VudFxuICAgICAgICByZXR1cm4geyAuLi5zdGF0ZSwgYWNjb3VudHM6IHVwZGF0ZWRBY2NvdW50cyB9XG4gICAgICB9XG4gICAgICByZXR1cm4gc3RhdGVcbiAgICB9KVxuICAgIHJldHVybiB1cGRhdGVkQWNjb3VudFxuICB9LFxuICBjcmVhdGVTZXNzaW9uOiAoc2Vzc2lvbjogT21pdDxTZXNzaW9uLCBcInNlc3Npb25faWRcIj4pOiBTZXNzaW9uID0+IHtcbiAgICBjb25zdCBuZXdTZXNzaW9uID0geyBzZXNzaW9uX2lkOiBgc2Vzc2lvbl8ke0RhdGUubm93KCl9YCwgLi4uc2Vzc2lvbiB9XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIHNlc3Npb25zOiBbLi4uc3RhdGUuc2Vzc2lvbnMsIG5ld1Nlc3Npb25dLFxuICAgIH0pKVxuICAgIHJldHVybiBuZXdTZXNzaW9uXG4gIH0sXG4gIGFkZFN0YXI6IChhY2NvdW50SWQ6IHN0cmluZywgcGFja2FnZUlkOiBzdHJpbmcpOiBBY2NvdW50UGFja2FnZSA9PiB7XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG4gICAgY29uc3QgYWNjb3VudFBhY2thZ2UgPSB7XG4gICAgICBhY2NvdW50X3BhY2thZ2VfaWQ6IGBhcF8ke0RhdGUubm93KCl9YCxcbiAgICAgIGFjY291bnRfaWQ6IGFjY291bnRJZCxcbiAgICAgIHBhY2thZ2VfaWQ6IHBhY2thZ2VJZCxcbiAgICAgIGlzX3N0YXJyZWQ6IHRydWUsXG4gICAgICBjcmVhdGVkX2F0OiBub3csXG4gICAgICB1cGRhdGVkX2F0OiBub3csXG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHRoZSBwYWNrYWdlJ3Mgc3RhciBjb3VudFxuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIC8vIEZpbmQgdGhlIHBhY2thZ2UgYW5kIGluY3JlbWVudCBpdHMgc3RhciBjb3VudFxuICAgICAgY29uc3QgcGFja2FnZUluZGV4ID0gc3RhdGUucGFja2FnZXMuZmluZEluZGV4KFxuICAgICAgICAocGtnKSA9PiBwa2cucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkLFxuICAgICAgKVxuICAgICAgaWYgKHBhY2thZ2VJbmRleCA+PSAwKSB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRQYWNrYWdlcyA9IFsuLi5zdGF0ZS5wYWNrYWdlc11cbiAgICAgICAgdXBkYXRlZFBhY2thZ2VzW3BhY2thZ2VJbmRleF0gPSB7XG4gICAgICAgICAgLi4udXBkYXRlZFBhY2thZ2VzW3BhY2thZ2VJbmRleF0sXG4gICAgICAgICAgc3Rhcl9jb3VudDogKHVwZGF0ZWRQYWNrYWdlc1twYWNrYWdlSW5kZXhdLnN0YXJfY291bnQgfHwgMCkgKyAxLFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwYWNrYWdlczogdXBkYXRlZFBhY2thZ2VzLFxuICAgICAgICAgIGFjY291bnRQYWNrYWdlczogWy4uLnN0YXRlLmFjY291bnRQYWNrYWdlcywgYWNjb3VudFBhY2thZ2VdLFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFjY291bnRQYWNrYWdlczogWy4uLnN0YXRlLmFjY291bnRQYWNrYWdlcywgYWNjb3VudFBhY2thZ2VdLFxuICAgICAgfVxuICAgIH0pXG5cbiAgICByZXR1cm4gYWNjb3VudFBhY2thZ2VcbiAgfSxcbiAgcmVtb3ZlU3RhcjogKGFjY291bnRJZDogc3RyaW5nLCBwYWNrYWdlSWQ6IHN0cmluZyk6IHZvaWQgPT4ge1xuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIC8vIEZpbmQgdGhlIHBhY2thZ2UgYW5kIGRlY3JlbWVudCBpdHMgc3RhciBjb3VudFxuICAgICAgY29uc3QgcGFja2FnZUluZGV4ID0gc3RhdGUucGFja2FnZXMuZmluZEluZGV4KFxuICAgICAgICAocGtnKSA9PiBwa2cucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkLFxuICAgICAgKVxuXG4gICAgICBpZiAocGFja2FnZUluZGV4ID49IDApIHtcbiAgICAgICAgY29uc3QgdXBkYXRlZFBhY2thZ2VzID0gWy4uLnN0YXRlLnBhY2thZ2VzXVxuICAgICAgICB1cGRhdGVkUGFja2FnZXNbcGFja2FnZUluZGV4XSA9IHtcbiAgICAgICAgICAuLi51cGRhdGVkUGFja2FnZXNbcGFja2FnZUluZGV4XSxcbiAgICAgICAgICBzdGFyX2NvdW50OiBNYXRoLm1heChcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAodXBkYXRlZFBhY2thZ2VzW3BhY2thZ2VJbmRleF0uc3Rhcl9jb3VudCB8fCAwKSAtIDEsXG4gICAgICAgICAgKSxcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGFja2FnZXM6IHVwZGF0ZWRQYWNrYWdlcyxcbiAgICAgICAgICBhY2NvdW50UGFja2FnZXM6IHN0YXRlLmFjY291bnRQYWNrYWdlcy5maWx0ZXIoXG4gICAgICAgICAgICAoYXApID0+XG4gICAgICAgICAgICAgICEoYXAuYWNjb3VudF9pZCA9PT0gYWNjb3VudElkICYmIGFwLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VJZCksXG4gICAgICAgICAgKSxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBhY2NvdW50UGFja2FnZXM6IHN0YXRlLmFjY291bnRQYWNrYWdlcy5maWx0ZXIoXG4gICAgICAgICAgKGFwKSA9PiAhKGFwLmFjY291bnRfaWQgPT09IGFjY291bnRJZCAmJiBhcC5wYWNrYWdlX2lkID09PSBwYWNrYWdlSWQpLFxuICAgICAgICApLFxuICAgICAgfVxuICAgIH0pXG4gIH0sXG4gIGhhc1N0YXJyZWQ6IChhY2NvdW50SWQ6IHN0cmluZywgcGFja2FnZUlkOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLmFjY291bnRQYWNrYWdlcy5zb21lKFxuICAgICAgKGFwKSA9PlxuICAgICAgICBhcC5hY2NvdW50X2lkID09PSBhY2NvdW50SWQgJiZcbiAgICAgICAgYXAucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkICYmXG4gICAgICAgIGFwLmlzX3N0YXJyZWQsXG4gICAgKVxuICB9LFxuICBhZGRQYWNrYWdlOiAoXG4gICAgX3BhY2thZ2U6IE9taXQ8ei5pbnB1dDx0eXBlb2YgcGFja2FnZVNjaGVtYT4sIFwicGFja2FnZV9pZFwiPixcbiAgKTogUGFja2FnZSA9PiB7XG4gICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKVxuICAgIGNvbnN0IG5ld1BhY2thZ2UgPSB7XG4gICAgICBwYWNrYWdlX2lkOiBgcGFja2FnZV8ke3RpbWVzdGFtcH1gLFxuICAgICAgLi4uX3BhY2thZ2UsXG4gICAgfVxuICAgIHNldCgoc3RhdGUpID0+ICh7XG4gICAgICBwYWNrYWdlczogWy4uLnN0YXRlLnBhY2thZ2VzLCBuZXdQYWNrYWdlIGFzIFBhY2thZ2VdLFxuICAgIH0pKVxuICAgIHJldHVybiBuZXdQYWNrYWdlIGFzIFBhY2thZ2VcbiAgfSxcbiAgdXBkYXRlUGFja2FnZTogKFxuICAgIHBhY2thZ2VJZDogc3RyaW5nLFxuICAgIHVwZGF0ZXM6IFBhcnRpYWw8UGFja2FnZT4sXG4gICk6IFBhY2thZ2UgfCB1bmRlZmluZWQgPT4ge1xuICAgIGxldCB1cGRhdGVkUGFja2FnZTogUGFja2FnZSB8IHVuZGVmaW5lZFxuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIGNvbnN0IHBhY2thZ2VJbmRleCA9IHN0YXRlLnBhY2thZ2VzLmZpbmRJbmRleChcbiAgICAgICAgKHBrZykgPT4gcGtnLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VJZCxcbiAgICAgIClcbiAgICAgIGlmIChwYWNrYWdlSW5kZXggPT09IC0xKSByZXR1cm4gc3RhdGVcblxuICAgICAgY29uc3QgdXBkYXRlZFBhY2thZ2VzID0gWy4uLnN0YXRlLnBhY2thZ2VzXVxuICAgICAgdXBkYXRlZFBhY2thZ2VzW3BhY2thZ2VJbmRleF0gPSB7XG4gICAgICAgIC4uLnVwZGF0ZWRQYWNrYWdlc1twYWNrYWdlSW5kZXhdLFxuICAgICAgICAuLi51cGRhdGVzLFxuICAgICAgfVxuICAgICAgdXBkYXRlZFBhY2thZ2UgPSB1cGRhdGVkUGFja2FnZXNbcGFja2FnZUluZGV4XVxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHBhY2thZ2VzOiB1cGRhdGVkUGFja2FnZXMgfVxuICAgIH0pXG4gICAgcmV0dXJuIHVwZGF0ZWRQYWNrYWdlXG4gIH0sXG4gIGdldFBhY2thZ2VCeUlkOiAocGFja2FnZUlkOiBzdHJpbmcpOiBQYWNrYWdlIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgY29uc3QgcGtnID0gc3RhdGUucGFja2FnZXMuZmluZCgocGtnKSA9PiBwa2cucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkKVxuICAgIGlmICghcGtnKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnBrZyxcbiAgICB9XG4gIH0sXG4gIGdldFBhY2thZ2VSZWxlYXNlQnlJZDogKFxuICAgIHBhY2thZ2VSZWxlYXNlSWQ6IHN0cmluZyxcbiAgKTogUGFja2FnZVJlbGVhc2UgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAocHIpID0+IHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2VJZCxcbiAgICApXG4gIH0sXG4gIGFkZFBhY2thZ2VSZWxlYXNlOiAoXG4gICAgcGFja2FnZVJlbGVhc2U6IE9taXQ8UGFja2FnZVJlbGVhc2UsIFwicGFja2FnZV9yZWxlYXNlX2lkXCI+LFxuICApOiBQYWNrYWdlUmVsZWFzZSA9PiB7XG4gICAgY29uc3QgbmV3UGFja2FnZVJlbGVhc2UgPSB7XG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IGBwYWNrYWdlX3JlbGVhc2VfJHtEYXRlLm5vdygpfWAsXG4gICAgICAuLi5wYWNrYWdlUmVsZWFzZSxcbiAgICB9XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIHBhY2thZ2VSZWxlYXNlczogWy4uLnN0YXRlLnBhY2thZ2VSZWxlYXNlcywgbmV3UGFja2FnZVJlbGVhc2VdLFxuICAgIH0pKVxuICAgIHJldHVybiBuZXdQYWNrYWdlUmVsZWFzZVxuICB9LFxuICB1cGRhdGVQYWNrYWdlUmVsZWFzZTogKHBhY2thZ2VSZWxlYXNlOiBQYWNrYWdlUmVsZWFzZSk6IHZvaWQgPT4ge1xuICAgIHNldCgoc3RhdGUpID0+ICh7XG4gICAgICBwYWNrYWdlUmVsZWFzZXM6IHN0YXRlLnBhY2thZ2VSZWxlYXNlcy5tYXAoKHByKSA9PlxuICAgICAgICBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZFxuICAgICAgICAgID8gcGFja2FnZVJlbGVhc2VcbiAgICAgICAgICA6IHByLFxuICAgICAgKSxcbiAgICB9KSlcbiAgfSxcbiAgZGVsZXRlUGFja2FnZUZpbGU6IChwYWNrYWdlRmlsZUlkOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICBsZXQgZGVsZXRlZCA9IGZhbHNlXG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBzdGF0ZS5wYWNrYWdlRmlsZXMuZmluZEluZGV4KFxuICAgICAgICAoZmlsZSkgPT4gZmlsZS5wYWNrYWdlX2ZpbGVfaWQgPT09IHBhY2thZ2VGaWxlSWQsXG4gICAgICApXG4gICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgIHN0YXRlLnBhY2thZ2VGaWxlcy5zcGxpY2UoaW5kZXgsIDEpXG4gICAgICAgIGRlbGV0ZWQgPSB0cnVlXG4gICAgICB9XG4gICAgICByZXR1cm4gc3RhdGVcbiAgICB9KVxuICAgIHJldHVybiBkZWxldGVkXG4gIH0sXG4gIGFkZFBhY2thZ2VGaWxlOiAoXG4gICAgcGFja2FnZUZpbGU6IE9taXQ8UGFja2FnZUZpbGUsIFwicGFja2FnZV9maWxlX2lkXCI+LFxuICApOiBQYWNrYWdlRmlsZSA9PiB7XG4gICAgY29uc3QgbmV3UGFja2FnZUZpbGUgPSB7XG4gICAgICBwYWNrYWdlX2ZpbGVfaWQ6IGBwYWNrYWdlX2ZpbGVfJHtEYXRlLm5vdygpfWAsXG4gICAgICAuLi5wYWNrYWdlRmlsZSxcbiAgICB9XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIHBhY2thZ2VGaWxlczogWy4uLnN0YXRlLnBhY2thZ2VGaWxlcywgbmV3UGFja2FnZUZpbGVdLFxuICAgIH0pKVxuICAgIHJldHVybiBuZXdQYWNrYWdlRmlsZVxuICB9LFxuICB1cGRhdGVQYWNrYWdlRmlsZTogKFxuICAgIHBhY2thZ2VGaWxlSWQ6IHN0cmluZyxcbiAgICB1cGRhdGVzOiBQYXJ0aWFsPE9taXQ8UGFja2FnZUZpbGUsIFwicGFja2FnZV9maWxlX2lkXCI+PixcbiAgKTogUGFja2FnZUZpbGUgPT4ge1xuICAgIHNldCgoc3RhdGUpID0+ICh7XG4gICAgICBwYWNrYWdlRmlsZXM6IHN0YXRlLnBhY2thZ2VGaWxlcy5tYXAoKGZpbGUpID0+XG4gICAgICAgIGZpbGUucGFja2FnZV9maWxlX2lkID09PSBwYWNrYWdlRmlsZUlkID8geyAuLi5maWxlLCAuLi51cGRhdGVzIH0gOiBmaWxlLFxuICAgICAgKSxcbiAgICB9KSlcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLnBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKGZpbGUpID0+IGZpbGUucGFja2FnZV9maWxlX2lkID09PSBwYWNrYWdlRmlsZUlkLFxuICAgICkhXG4gIH0sXG4gIGdldFN0YXJDb3VudDogKHBhY2thZ2VJZDogc3RyaW5nKTogbnVtYmVyID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLmFjY291bnRQYWNrYWdlcy5maWx0ZXIoXG4gICAgICAoYXApID0+IGFwLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VJZCAmJiBhcC5pc19zdGFycmVkLFxuICAgICkubGVuZ3RoXG4gIH0sXG4gIGdldFBhY2thZ2VGaWxlc0J5UmVsZWFzZUlkOiAocGFja2FnZVJlbGVhc2VJZDogc3RyaW5nKTogUGFja2FnZUZpbGVbXSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5wYWNrYWdlRmlsZXMuZmlsdGVyKFxuICAgICAgKHBmKSA9PiBwZi5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlSWQsXG4gICAgKVxuICB9LFxufSkpXG4iLCAiaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgY29uc3QgZXJyb3JTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIGVycm9yX2NvZGU6IHouc3RyaW5nKCksXG4gICAgbWVzc2FnZTogei5zdHJpbmcoKSxcbiAgfSlcbiAgLnBhc3N0aHJvdWdoKClcblxuZXhwb3J0IGNvbnN0IGVycm9yUmVzcG9uc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGVycm9yOiBlcnJvclNjaGVtYSxcbn0pXG5cbmV4cG9ydCBjb25zdCBzbmlwcGV0U2NoZW1hID0gei5vYmplY3Qoe1xuICBzbmlwcGV0X2lkOiB6LnN0cmluZygpLFxuICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCksXG4gIG5hbWU6IHouc3RyaW5nKCksXG4gIHVuc2NvcGVkX25hbWU6IHouc3RyaW5nKCksXG4gIG93bmVyX25hbWU6IHouc3RyaW5nKCksXG4gIGlzX3N0YXJyZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBjb2RlOiB6LnN0cmluZygpLFxuICBkdHM6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgY29tcGlsZWRfanM6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5udWxsYWJsZSgpLFxuICBjaXJjdWl0X2pzb246IHouYXJyYXkoei5yZWNvcmQoei5hbnkoKSkpLm9wdGlvbmFsKCkubnVsbGFibGUoKSxcbiAgbWFudWFsX2VkaXRzX2pzb25fY29udGVudDogei5zdHJpbmcoKS5vcHRpb25hbCgpLm51bGxhYmxlKCksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCksXG4gIHVwZGF0ZWRfYXQ6IHouc3RyaW5nKCksXG4gIHNuaXBwZXRfdHlwZTogei5lbnVtKFtcImJvYXJkXCIsIFwicGFja2FnZVwiLCBcIm1vZGVsXCIsIFwiZm9vdHByaW50XCJdKSxcbiAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgdmVyc2lvbjogei5zdHJpbmcoKS5kZWZhdWx0KFwiMC4wLjFcIiksXG4gIHN0YXJfY291bnQ6IHoubnVtYmVyKCkuZGVmYXVsdCgwKSxcbiAgaXNfcHJpdmF0ZTogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX3B1YmxpYzogei5ib29sZWFuKCkuZGVmYXVsdCh0cnVlKSxcbiAgaXNfdW5saXN0ZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxufSlcbmV4cG9ydCB0eXBlIFNuaXBwZXQgPSB6LmluZmVyPHR5cGVvZiBzbmlwcGV0U2NoZW1hPlxuXG5leHBvcnQgY29uc3Qgc2Vzc2lvblNjaGVtYSA9IHoub2JqZWN0KHtcbiAgc2Vzc2lvbl9pZDogei5zdHJpbmcoKSxcbiAgYWNjb3VudF9pZDogei5zdHJpbmcoKSxcbiAgZXhwaXJlc19hdDogei5zdHJpbmcoKSxcbiAgaXNfY2xpX3Nlc3Npb246IHouYm9vbGVhbigpLFxufSlcbmV4cG9ydCB0eXBlIFNlc3Npb24gPSB6LmluZmVyPHR5cGVvZiBzZXNzaW9uU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgbG9naW5QYWdlU2NoZW1hID0gei5vYmplY3Qoe1xuICBsb2dpbl9wYWdlX2lkOiB6LnN0cmluZygpLFxuICBsb2dpbl9wYWdlX2F1dGhfdG9rZW46IHouc3RyaW5nKCksXG4gIHdhc19sb2dpbl9zdWNjZXNzZnVsOiB6LmJvb2xlYW4oKSxcbiAgaGFzX2JlZW5fdXNlZF90b19jcmVhdGVfc2Vzc2lvbjogei5ib29sZWFuKCksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCksXG4gIGV4cGlyZXNfYXQ6IHouc3RyaW5nKCksXG59KVxuZXhwb3J0IHR5cGUgTG9naW5QYWdlID0gei5pbmZlcjx0eXBlb2YgbG9naW5QYWdlU2NoZW1hPlxuXG5leHBvcnQgY29uc3Qgc2hpcHBpbmdJbmZvU2NoZW1hID0gei5vYmplY3Qoe1xuICBmaXJzdE5hbWU6IHouc3RyaW5nKCksXG4gIGxhc3ROYW1lOiB6LnN0cmluZygpLFxuICBjb21wYW55TmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBhZGRyZXNzOiB6LnN0cmluZygpLFxuICBhcGFydG1lbnQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgY2l0eTogei5zdHJpbmcoKSxcbiAgc3RhdGU6IHouc3RyaW5nKCksXG4gIHppcENvZGU6IHouc3RyaW5nKCksXG4gIGNvdW50cnk6IHouc3RyaW5nKCksXG4gIHBob25lOiB6LnN0cmluZygpLFxufSlcblxuZXhwb3J0IGNvbnN0IGFjY291bnRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGFjY291bnRfaWQ6IHouc3RyaW5nKCksXG4gIGdpdGh1Yl91c2VybmFtZTogei5zdHJpbmcoKSxcbiAgc2hpcHBpbmdJbmZvOiBzaGlwcGluZ0luZm9TY2hlbWEub3B0aW9uYWwoKSxcbn0pXG5leHBvcnQgdHlwZSBBY2NvdW50ID0gei5pbmZlcjx0eXBlb2YgYWNjb3VudFNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IG9yZGVyU2NoZW1hID0gei5vYmplY3Qoe1xuICBvcmRlcl9pZDogei5zdHJpbmcoKSxcbiAgYWNjb3VudF9pZDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBpc19ydW5uaW5nOiB6LmJvb2xlYW4oKSxcbiAgaXNfc3RhcnRlZDogei5ib29sZWFuKCksXG4gIGlzX2ZpbmlzaGVkOiB6LmJvb2xlYW4oKSxcbiAgZXJyb3I6IGVycm9yU2NoZW1hLm51bGxhYmxlKCksXG4gIGhhc19lcnJvcjogei5ib29sZWFuKCksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCksXG4gIHN0YXJ0ZWRfYXQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgY29tcGxldGVkX2F0OiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGNpcmN1aXRfanNvbjogei5hbnkoKSxcbn0pXG5leHBvcnQgdHlwZSBPcmRlciA9IHouaW5mZXI8dHlwZW9mIG9yZGVyU2NoZW1hPlxuXG5leHBvcnQgY29uc3Qgb3JkZXJGaWxlU2NoZW1hID0gei5vYmplY3Qoe1xuICBvcmRlcl9maWxlX2lkOiB6LnN0cmluZygpLFxuICBvcmRlcl9pZDogei5zdHJpbmcoKSxcbiAgaXNfZ2VyYmVyc196aXA6IHouYm9vbGVhbigpLFxuICBjb250ZW50X3R5cGU6IHouc3RyaW5nKCksXG4gIGZvcl9wcm92aWRlcjogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICB1cGxvYWRlZF9hdDogei5zdHJpbmcoKSxcbiAgY29udGVudF90ZXh0OiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGNvbnRlbnRfYnl0ZXM6IHouaW5zdGFuY2VvZihVaW50OEFycmF5KS5udWxsYWJsZSgpLFxufSlcbmV4cG9ydCB0eXBlIE9yZGVyRmlsZSA9IHouaW5mZXI8dHlwZW9mIG9yZGVyRmlsZVNjaGVtYT5cblxuY29uc3Qgc2hpcHBpbmdPcHRpb25TY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGNhcnJpZXI6IHouc3RyaW5nKCksXG4gIHNlcnZpY2U6IHouc3RyaW5nKCksXG4gIGNvc3Q6IHoubnVtYmVyKCksXG59KVxuZXhwb3J0IHR5cGUgU2hpcHBpbmdPcHRpb24gPSB6LmluZmVyPHR5cGVvZiBzaGlwcGluZ09wdGlvblNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IHF1b3RlZENvbXBvbmVudFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgbWFudWZhY3R1cmVyX3BhcnRfbnVtYmVyOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIHN1cHBsaWVyX3BhcnRfbnVtYmVyOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIHF1YW50aXR5OiB6Lm51bWJlcigpLmRlZmF1bHQoMCksXG4gIHVuaXRfcHJpY2U6IHoubnVtYmVyKCkuZGVmYXVsdCgwKSxcbiAgdG90YWxfcHJpY2U6IHoubnVtYmVyKCkuZGVmYXVsdCgwKSxcbiAgYXZhaWxhYmxlOiB6LmJvb2xlYW4oKS5kZWZhdWx0KHRydWUpLFxufSlcbmV4cG9ydCB0eXBlIFF1b3RlZENvbXBvbmVudCA9IHouaW5mZXI8dHlwZW9mIHF1b3RlZENvbXBvbmVudFNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IG9yZGVyUXVvdGVTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIG9yZGVyX3F1b3RlX2lkOiB6LnN0cmluZygpLFxuICBhY2NvdW50X2lkOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIHBhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBpc19jb21wbGV0ZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19wcm9jZXNzaW5nOiB6LmJvb2xlYW4oKS5kZWZhdWx0KHRydWUpLFxuICB2ZW5kb3JfbmFtZTogei5zdHJpbmcoKSxcbiAgZXJyb3I6IGVycm9yU2NoZW1hLm51bGxhYmxlKCksXG4gIGhhc19lcnJvcjogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCksXG4gIHVwZGF0ZWRfYXQ6IHouc3RyaW5nKCksXG4gIGNvbXBsZXRlZF9hdDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBxdW90ZWRfY29tcG9uZW50czogei5hcnJheShxdW90ZWRDb21wb25lbnRTY2hlbWEpLm51bGxhYmxlKCksXG4gIGJhcmVfcGNiX2Nvc3Q6IHoubnVtYmVyKCkuZGVmYXVsdCgwKSxcbiAgc2hpcHBpbmdfb3B0aW9uczogei5hcnJheShzaGlwcGluZ09wdGlvblNjaGVtYSksXG4gIHRvdGFsX2Nvc3Q6IHoubnVtYmVyKCkuZGVmYXVsdCgwKSxcbn0pXG5leHBvcnQgdHlwZSBPcmRlclF1b3RlID0gei5pbmZlcjx0eXBlb2Ygb3JkZXJRdW90ZVNjaGVtYT5cblxuLy8gVE9ETzogUmVtb3ZlIHRoaXMgc2NoZW1hIGFmdGVyIG1pZ3JhdGlvbiB0byBhY2NvdW50UGFja2FnZXMgaXMgY29tcGxldGVcbmV4cG9ydCBjb25zdCBhY2NvdW50U25pcHBldFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgYWNjb3VudF9pZDogei5zdHJpbmcoKSxcbiAgc25pcHBldF9pZDogei5zdHJpbmcoKSxcbiAgaGFzX3N0YXJyZWQ6IHouYm9vbGVhbigpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLFxuICB1cGRhdGVkX2F0OiB6LnN0cmluZygpLFxufSlcbmV4cG9ydCB0eXBlIEFjY291bnRTbmlwcGV0ID0gei5pbmZlcjx0eXBlb2YgYWNjb3VudFNuaXBwZXRTY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBhY2NvdW50UGFja2FnZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgYWNjb3VudF9wYWNrYWdlX2lkOiB6LnN0cmluZygpLFxuICBhY2NvdW50X2lkOiB6LnN0cmluZygpLFxuICBwYWNrYWdlX2lkOiB6LnN0cmluZygpLFxuICBpc19zdGFycmVkOiB6LmJvb2xlYW4oKSxcbiAgY3JlYXRlZF9hdDogei5zdHJpbmcoKSxcbiAgdXBkYXRlZF9hdDogei5zdHJpbmcoKSxcbn0pXG5leHBvcnQgdHlwZSBBY2NvdW50UGFja2FnZSA9IHouaW5mZXI8dHlwZW9mIGFjY291bnRQYWNrYWdlU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgcGFja2FnZVJlbGVhc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHBhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKSxcbiAgcGFja2FnZV9pZDogei5zdHJpbmcoKSxcbiAgdmVyc2lvbjogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBpc19sb2NrZWQ6IHouYm9vbGVhbigpLFxuICBpc19sYXRlc3Q6IHouYm9vbGVhbigpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCksXG4gIGNvbW1pdF9zaGE6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICBsaWNlbnNlOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbn0pXG5leHBvcnQgdHlwZSBQYWNrYWdlUmVsZWFzZSA9IHouaW5mZXI8dHlwZW9mIHBhY2thZ2VSZWxlYXNlU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgcGFja2FnZUZpbGVTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHBhY2thZ2VfZmlsZV9pZDogei5zdHJpbmcoKSxcbiAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLFxuICBmaWxlX3BhdGg6IHouc3RyaW5nKCksXG4gIGNvbnRlbnRfdGV4dDogei5zdHJpbmcoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKSxcbiAgY29udGVudF9taW1ldHlwZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGlzX3JlbGVhc2VfdGFyYmFsbDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgbnBtX3BhY2tfb3V0cHV0OiB6LmFueSgpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbn0pXG5leHBvcnQgdHlwZSBQYWNrYWdlRmlsZSA9IHouaW5mZXI8dHlwZW9mIHBhY2thZ2VGaWxlU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgcGFja2FnZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgcGFja2FnZV9pZDogei5zdHJpbmcoKSxcbiAgY3JlYXRvcl9hY2NvdW50X2lkOiB6LnN0cmluZygpLFxuICBvd25lcl9vcmdfaWQ6IHouc3RyaW5nKCksXG4gIG93bmVyX2dpdGh1Yl91c2VybmFtZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBuYW1lOiB6LnN0cmluZygpLFxuICB1bnNjb3BlZF9uYW1lOiB6LnN0cmluZygpLFxuICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCksXG4gIHVwZGF0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKSxcbiAgaXNfc25pcHBldDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX2JvYXJkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfcGFja2FnZTogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX21vZGVsOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfZm9vdHByaW50OiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfcHJpdmF0ZTogei5ib29sZWFuKCkubnVsbGFibGUoKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfcHVibGljOiB6LmJvb2xlYW4oKS5udWxsYWJsZSgpLmRlZmF1bHQodHJ1ZSksXG4gIGlzX3VubGlzdGVkOiB6LmJvb2xlYW4oKS5udWxsYWJsZSgpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19zb3VyY2VfZnJvbV9naXRodWI6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBzbmlwcGV0X3R5cGU6IHouZW51bShbXCJib2FyZFwiLCBcInBhY2thZ2VcIiwgXCJtb2RlbFwiLCBcImZvb3RwcmludFwiXSkub3B0aW9uYWwoKSxcbiAgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBsYXRlc3RfdmVyc2lvbjogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBsaWNlbnNlOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIHdlYnNpdGU6IHouc3RyaW5nKCkubnVsbGFibGUoKS5kZWZhdWx0KG51bGwpLFxuICBzdGFyX2NvdW50OiB6Lm51bWJlcigpLmRlZmF1bHQoMCksXG4gIGFpX2Rlc2NyaXB0aW9uOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGxhdGVzdF9saWNlbnNlOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgYWlfdXNhZ2VfaW5zdHJ1Y3Rpb25zOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG59KVxuZXhwb3J0IHR5cGUgUGFja2FnZSA9IHouaW5mZXI8dHlwZW9mIHBhY2thZ2VTY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBqbGNwY2JPcmRlclN0YXRlU2NoZW1hID0gei5vYmplY3Qoe1xuICBqbGNwY2Jfb3JkZXJfc3RhdGVfaWQ6IHouc3RyaW5nKCksXG4gIG9yZGVyX2lkOiB6LnN0cmluZygpLFxuICBhcmVfZ2VyYmVyc191cGxvYWRlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX2dlcmJlcl9hbmFseXplZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGFyZV9pbml0aWFsX2Nvc3RzX2NhbGN1bGF0ZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19wY2JfYWRkZWRfdG9fY2FydDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX2JvbV91cGxvYWRlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX3BucF91cGxvYWRlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX2JvbV9wbnBfYW5hbHl6ZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19ib21fcGFyc2luZ19jb21wbGV0ZTogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGFyZV9jb21wb25lbnRzX2F2YWlsYWJsZTogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX3BhdGNoX21hcF9nZW5lcmF0ZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19qc29uX21lcmdlX2ZpbGVfY3JlYXRlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX2RmbV9yZXN1bHRfZ2VuZXJhdGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgYXJlX2ZpbGVzX2Rvd25sb2FkZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBhcmVfcHJvZHVjdF9jYXRlZ29yaWVzX2ZldGNoZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBhcmVfZmluYWxfY29zdHNfY2FsY3VsYXRlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX2pzb25fbWVyZ2VfZmlsZV91cGRhdGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfYWRkZWRfdG9fY2FydDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIHVwbG9hZGVkX2dlcmJlcl9tZXRhZGF0YTogei5hbnkoKS5udWxsYWJsZSgpLmRlZmF1bHQobnVsbCksXG4gIGdlcmJlcl9hbmFseXNpczogei5hbnkoKS5udWxsYWJsZSgpLmRlZmF1bHQobnVsbCksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCksXG4gIGFyZV9nZXJiZXJzX2dlbmVyYXRlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGN1cnJlbnRfc3RlcDogei5zdHJpbmcoKS5udWxsYWJsZSgpLmRlZmF1bHQobnVsbCksXG59KVxuZXhwb3J0IHR5cGUgSmxjcGNiT3JkZXJTdGF0ZSA9IHouaW5mZXI8dHlwZW9mIGpsY3BjYk9yZGVyU3RhdGVTY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBqbGNwY2JPcmRlclN0ZXBSdW5TY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGpsY3BjYl9vcmRlcl9zdGVwX3J1bl9pZDogei5zdHJpbmcoKSxcbiAgaXNfcnVubmluZzogei5ib29sZWFuKCkubnVsbGFibGUoKS5kZWZhdWx0KG51bGwpLFxuICBzdGVwX2Z1bmN0aW9uX25hbWU6IHouc3RyaW5nKCkubnVsbGFibGUoKS5kZWZhdWx0KG51bGwpLFxuICBqbGNwY2Jfb3JkZXJfc3RhdGVfaWQ6IHouc3RyaW5nKCkubnVsbGFibGUoKS5kZWZhdWx0KG51bGwpLFxuICBlcnJvcl9tZXNzYWdlOiB6LnN0cmluZygpLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbiAgY3JlYXRlZF9hdDogei5zdHJpbmcoKSxcbn0pXG5leHBvcnQgdHlwZSBKbGNwY2JPcmRlclN0ZXBSdW4gPSB6LmluZmVyPHR5cGVvZiBqbGNwY2JPcmRlclN0ZXBSdW5TY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBkYXRhYmFzZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgaWRDb3VudGVyOiB6Lm51bWJlcigpLmRlZmF1bHQoMCksXG4gIHNuaXBwZXRzOiB6LmFycmF5KHNuaXBwZXRTY2hlbWEpLmRlZmF1bHQoW10pLFxuICBwYWNrYWdlUmVsZWFzZXM6IHouYXJyYXkocGFja2FnZVJlbGVhc2VTY2hlbWEpLmRlZmF1bHQoW10pLFxuICBwYWNrYWdlRmlsZXM6IHouYXJyYXkocGFja2FnZUZpbGVTY2hlbWEpLmRlZmF1bHQoW10pLFxuICBzZXNzaW9uczogei5hcnJheShzZXNzaW9uU2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgbG9naW5QYWdlczogei5hcnJheShsb2dpblBhZ2VTY2hlbWEpLmRlZmF1bHQoW10pLFxuICBhY2NvdW50czogei5hcnJheShhY2NvdW50U2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgcGFja2FnZXM6IHouYXJyYXkocGFja2FnZVNjaGVtYSkuZGVmYXVsdChbXSksXG4gIG9yZGVyczogei5hcnJheShvcmRlclNjaGVtYSkuZGVmYXVsdChbXSksXG4gIG9yZGVyRmlsZXM6IHouYXJyYXkob3JkZXJGaWxlU2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgYWNjb3VudFNuaXBwZXRzOiB6LmFycmF5KGFjY291bnRTbmlwcGV0U2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgYWNjb3VudFBhY2thZ2VzOiB6LmFycmF5KGFjY291bnRQYWNrYWdlU2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgamxjcGNiT3JkZXJTdGF0ZTogei5hcnJheShqbGNwY2JPcmRlclN0YXRlU2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgamxjcGNiT3JkZXJTdGVwUnVuczogei5hcnJheShqbGNwY2JPcmRlclN0ZXBSdW5TY2hlbWEpLmRlZmF1bHQoW10pLFxuICBvcmRlclF1b3Rlczogei5hcnJheShvcmRlclF1b3RlU2NoZW1hKS5kZWZhdWx0KFtdKSxcbn0pXG5leHBvcnQgdHlwZSBEYXRhYmFzZVNjaGVtYSA9IHouaW5mZXI8dHlwZW9mIGRhdGFiYXNlU2NoZW1hPlxuIiwgImltcG9ydCBmcyBmcm9tIFwiZnNcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuaW1wb3J0IGF4aW9zIGZyb20gXCJyZWRheGlvc1wiXG5pbXBvcnQgdHlwZSB7IERiQ2xpZW50IH0gZnJvbSBcIi4vZGItY2xpZW50XCJcbmltcG9ydCB0eXBlIHsgUGFja2FnZSwgUGFja2FnZUZpbGUsIFBhY2thZ2VSZWxlYXNlIH0gZnJvbSBcIi4vc2NoZW1hXCJcblxuY29uc3QgZXh0cmFjdFRzY2lEZXBlbmRlbmNpZXMgPSAoXG4gIGNvZGU6IHN0cmluZyxcbik6IEFycmF5PHsgb3duZXI6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0+ID0+IHtcbiAgY29uc3QgcmVnZXggPSAvQHRzY2lcXC8oW14uXSspXFwuKFteXCInXFxzXSspL2dcbiAgY29uc3QgbWF0Y2hlcyA9IEFycmF5LmZyb20oY29kZS5tYXRjaEFsbChyZWdleCkpXG4gIHJldHVybiBtYXRjaGVzLm1hcCgobWF0Y2gpID0+ICh7XG4gICAgb3duZXI6IG1hdGNoWzFdLFxuICAgIG5hbWU6IG1hdGNoWzJdLFxuICB9KSlcbn1cblxuY29uc3QgcmVnaXN0cnlBcGkgPSBheGlvcy5jcmVhdGUoe1xuICBiYXNlVVJMOiBcImh0dHBzOi8vcmVnaXN0cnktYXBpLnRzY2lyY3VpdC5jb21cIixcbiAgaGVhZGVyczoge1xuICAgIEFjY2VwdDogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gIH0sXG59KVxuXG5jb25zdCBmZXRjaFBhY2thZ2VGcm9tUmVnaXN0cnkgPSBhc3luYyAob3duZXI6IHN0cmluZywgbmFtZTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGZ1bGxOYW1lID0gYCR7b3duZXJ9LyR7bmFtZX1gXG4gIGNvbnNvbGUubG9nKGBGZXRjaGluZyBwYWNrYWdlICR7ZnVsbE5hbWV9Li4uYClcblxuICBsZXQgcGFja2FnZURhdGFcbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlZ2lzdHJ5QXBpLnBvc3QoXCIvcGFja2FnZXMvZ2V0XCIsIHtcbiAgICAgIG5hbWU6IGZ1bGxOYW1lLFxuICAgIH0pXG4gICAgcGFja2FnZURhdGEgPSByZXNwb25zZS5kYXRhXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggcGFja2FnZSBkYXRhIGZvciAke2Z1bGxOYW1lfTpgLCBlKVxuICAgIHRocm93IGVcbiAgfVxuXG4gIGxldCByZWxlYXNlRGF0YVxuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcmVnaXN0cnlBcGkucG9zdChcIi9wYWNrYWdlX3JlbGVhc2VzL2dldFwiLCB7XG4gICAgICBwYWNrYWdlX2lkOiBwYWNrYWdlRGF0YS5wYWNrYWdlLnBhY2thZ2VfaWQsXG4gICAgICBpc19sYXRlc3Q6IHRydWUsXG4gICAgfSlcbiAgICByZWxlYXNlRGF0YSA9IHJlc3BvbnNlLmRhdGFcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBmZXRjaCByZWxlYXNlIGRhdGEgZm9yICR7ZnVsbE5hbWV9OmAsIGUpXG4gICAgdGhyb3cgZVxuICB9XG5cbiAgbGV0IGZpbGVzRGF0YVxuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcmVnaXN0cnlBcGkucG9zdChcIi9wYWNrYWdlX2ZpbGVzL2xpc3RcIiwge1xuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiByZWxlYXNlRGF0YS5wYWNrYWdlX3JlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgIH0pXG4gICAgZmlsZXNEYXRhID0gcmVzcG9uc2UuZGF0YVxuXG4gICAgLy8gRmV0Y2ggY29udGVudF90ZXh0IGZvciBlYWNoIGZpbGUgaW5kaXZpZHVhbGx5XG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzRGF0YS5wYWNrYWdlX2ZpbGVzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBmaWxlUmVzcG9uc2UgPSBhd2FpdCByZWdpc3RyeUFwaS5wb3N0KFwiL3BhY2thZ2VfZmlsZXMvZ2V0XCIsIHtcbiAgICAgICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHJlbGVhc2VEYXRhLnBhY2thZ2VfcmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgICAgZmlsZV9wYXRoOiBmaWxlLmZpbGVfcGF0aCxcbiAgICAgICAgfSlcbiAgICAgICAgZmlsZS5jb250ZW50X3RleHQgPSBmaWxlUmVzcG9uc2UuZGF0YS5wYWNrYWdlX2ZpbGUuY29udGVudF90ZXh0XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgYEZhaWxlZCB0byBmZXRjaCBjb250ZW50IGZvciBmaWxlICR7ZmlsZS5maWxlX3BhdGh9IGluIHBhY2thZ2UgJHtmdWxsTmFtZX06YCxcbiAgICAgICAgICBlLFxuICAgICAgICApXG4gICAgICAgIHRocm93IGVcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggZmlsZXMgZGF0YSBmb3IgJHtmdWxsTmFtZX06YCwgZSlcbiAgICB0aHJvdyBlXG4gIH1cblxuICByZXR1cm4ge1xuICAgIHBhY2thZ2U6IHBhY2thZ2VEYXRhLnBhY2thZ2UgYXMgUGFja2FnZSxcbiAgICByZWxlYXNlOiByZWxlYXNlRGF0YS5wYWNrYWdlX3JlbGVhc2UgYXMgUGFja2FnZVJlbGVhc2UsXG4gICAgZmlsZXM6IGZpbGVzRGF0YS5wYWNrYWdlX2ZpbGVzIGFzIFBhY2thZ2VGaWxlW10sXG4gIH1cbn1cblxuY29uc3QgbG9hZFBhY2thZ2VXaXRoRGVwZW5kZW5jaWVzID0gYXN5bmMgKFxuICBkYjogRGJDbGllbnQsXG4gIG93bmVyOiBzdHJpbmcsXG4gIG5hbWU6IHN0cmluZyxcbiAgbG9hZGVkUGFja2FnZXMgPSBuZXcgU2V0PHN0cmluZz4oKSxcbikgPT4ge1xuICBjb25zdCBwYWNrYWdlS2V5ID0gYCR7b3duZXJ9LyR7bmFtZX1gXG4gIGlmIChsb2FkZWRQYWNrYWdlcy5oYXMocGFja2FnZUtleSkpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgbGV0IHJlc3VsdFxuICB0cnkge1xuICAgIHJlc3VsdCA9IGF3YWl0IGZldGNoUGFja2FnZUZyb21SZWdpc3RyeShvd25lciwgbmFtZSlcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoYFx1MjcxNyBGYWlsZWQgdG8gbG9hZCAke3BhY2thZ2VLZXl9YClcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGNvbnN0IHsgcGFja2FnZTogcGtnLCByZWxlYXNlLCBmaWxlcyB9ID0gcmVzdWx0XG5cbiAgLy8gQ2hlY2sgaWYgcGFja2FnZSBhbHJlYWR5IGV4aXN0c1xuICBpZiAoZGIuZ2V0UGFja2FnZUJ5SWQocGtnLnBhY2thZ2VfaWQpKSB7XG4gICAgY29uc29sZS5sb2coYFx1MjcxMyBQYWNrYWdlICR7cGFja2FnZUtleX0gYWxyZWFkeSBleGlzdHNgKVxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICAvLyBBZGQgcGFja2FnZSwgcmVsZWFzZSwgYW5kIGZpbGVzIHRvIGRiXG4gIGRiLmFkZFBhY2thZ2Uoe1xuICAgIC4uLnBrZyxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgdXBkYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQ6IHJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICB9KVxuXG4gIGRiLmFkZFBhY2thZ2VSZWxlYXNlKHtcbiAgICAuLi5yZWxlYXNlLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgfSlcblxuICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICBkYi5hZGRQYWNrYWdlRmlsZSh7XG4gICAgICAuLi5maWxlLFxuICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIH0pXG4gIH1cblxuICBsb2FkZWRQYWNrYWdlcy5hZGQocGFja2FnZUtleSlcbiAgY29uc29sZS5sb2coYFx1MjcxMyBMb2FkZWQgJHtwYWNrYWdlS2V5fWApXG5cbiAgLy8gTG9hZCBkZXBlbmRlbmNpZXNcbiAgY29uc3QgbWFpbkZpbGUgPSBmaWxlcy5maW5kKFxuICAgIChmKSA9PiBmLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIiB8fCBmLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c1wiLFxuICApXG4gIGlmICghbWFpbkZpbGU/LmNvbnRlbnRfdGV4dCkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBjb25zdCBkZXBlbmRlbmNpZXMgPSBleHRyYWN0VHNjaURlcGVuZGVuY2llcyhtYWluRmlsZS5jb250ZW50X3RleHQpXG4gIGxldCBhbGxEZXBzTG9hZGVkID0gdHJ1ZVxuXG4gIGZvciAoY29uc3QgZGVwIG9mIGRlcGVuZGVuY2llcykge1xuICAgIGNvbnN0IGRlcExvYWRlZCA9IGF3YWl0IGxvYWRQYWNrYWdlV2l0aERlcGVuZGVuY2llcyhcbiAgICAgIGRiLFxuICAgICAgZGVwLm93bmVyLFxuICAgICAgZGVwLm5hbWUsXG4gICAgICBsb2FkZWRQYWNrYWdlcyxcbiAgICApXG4gICAgaWYgKCFkZXBMb2FkZWQpIHtcbiAgICAgIGFsbERlcHNMb2FkZWQgPSBmYWxzZVxuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgXHUyNkEwXHVGRTBGIEZhaWxlZCB0byBsb2FkIGRlcGVuZGVuY3kgJHtkZXAub3duZXJ9LyR7ZGVwLm5hbWV9IGZvciAke3BhY2thZ2VLZXl9YCxcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWxsRGVwc0xvYWRlZFxufVxuXG5leHBvcnQgY29uc3QgbG9hZEF1dG9sb2FkUGFja2FnZXMgPSBhc3luYyAoZGI6IERiQ2xpZW50KSA9PiB7XG4gIGNvbnN0IGF1dG9sb2FkUGF0aCA9IHBhdGguam9pbihcbiAgICBwYXRoLmRpcm5hbWUoX19kaXJuYW1lKSxcbiAgICBcImRiXCIsXG4gICAgXCJhdXRvbG9hZC1wYWNrYWdlcy5qc29uXCIsXG4gIClcbiAgaWYgKCFmcy5leGlzdHNTeW5jKGF1dG9sb2FkUGF0aCkpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiTm8gYXV0b2xvYWQtcGFja2FnZXMuanNvbiBmb3VuZFwiKVxuICAgIHJldHVyblxuICB9XG5cbiAgY29uc3QgYXV0b2xvYWRDb250ZW50ID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMoYXV0b2xvYWRQYXRoLCBcInV0ZjhcIikpXG4gIGNvbnN0IGxvYWRlZFBhY2thZ2VzID0gbmV3IFNldDxzdHJpbmc+KClcbiAgbGV0IHN1Y2Nlc3NDb3VudCA9IDBcbiAgbGV0IGZhaWx1cmVDb3VudCA9IDBcblxuICBmb3IgKGNvbnN0IHBhY2thZ2VSZWYgb2YgYXV0b2xvYWRDb250ZW50LnBhY2thZ2VzKSB7XG4gICAgY29uc3Qgc3VjY2VzcyA9IGF3YWl0IGxvYWRQYWNrYWdlV2l0aERlcGVuZGVuY2llcyhcbiAgICAgIGRiLFxuICAgICAgcGFja2FnZVJlZi5vd25lcixcbiAgICAgIHBhY2thZ2VSZWYubmFtZSxcbiAgICAgIGxvYWRlZFBhY2thZ2VzLFxuICAgIClcbiAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgc3VjY2Vzc0NvdW50KytcbiAgICB9IGVsc2Uge1xuICAgICAgZmFpbHVyZUNvdW50KytcbiAgICB9XG4gIH1cblxuICBjb25zb2xlLmxvZyhgXFxuUGFja2FnZSBsb2FkaW5nIGNvbXBsZXRlOmApXG4gIGNvbnNvbGUubG9nKGBcdTI3MTMgU3VjY2Vzc2Z1bGx5IGxvYWRlZDogJHtzdWNjZXNzQ291bnR9IHBhY2thZ2VzYClcbiAgaWYgKGZhaWx1cmVDb3VudCA+IDApIHtcbiAgICBjb25zb2xlLmxvZyhgXHUyNzE3IEZhaWxlZCB0byBsb2FkOiAke2ZhaWx1cmVDb3VudH0gcGFja2FnZXNgKVxuICB9XG59XG4iLCAiaW1wb3J0IHsgRGJDbGllbnQgfSBmcm9tIFwiLi9kYi1jbGllbnRcIlxuaW1wb3J0IHsgbG9hZEF1dG9sb2FkUGFja2FnZXMgfSBmcm9tIFwiLi9hdXRvbG9hZC1kZXYtcGFja2FnZXNcIlxuXG5leHBvcnQgY29uc3Qgc2VlZCA9IChkYjogRGJDbGllbnQpID0+IHtcbiAgY29uc3QgeyBhY2NvdW50X2lkIH0gPSBkYi5hZGRBY2NvdW50KHtcbiAgICBhY2NvdW50X2lkOiBcImFjY291bnQtMTIzNFwiLFxuICAgIGdpdGh1Yl91c2VybmFtZTogXCJ0ZXN0dXNlclwiLFxuICAgIHNoaXBwaW5nSW5mbzoge1xuICAgICAgZmlyc3ROYW1lOiBcIlRlc3RcIixcbiAgICAgIGxhc3ROYW1lOiBcIlVzZXJcIixcbiAgICAgIGNvbXBhbnlOYW1lOiBcIlRlc3QgQ29tcGFueVwiLFxuICAgICAgYWRkcmVzczogXCIxMjMgVGVzdCBTdFwiLFxuICAgICAgYXBhcnRtZW50OiBcIkFwdCA0QlwiLFxuICAgICAgY2l0eTogXCJUZXN0dmlsbGVcIixcbiAgICAgIHN0YXRlOiBcIk5ZXCIsXG4gICAgICB6aXBDb2RlOiBcIjEwMDAxXCIsXG4gICAgICBjb3VudHJ5OiBcIlVuaXRlZCBTdGF0ZXMgb2YgQW1lcmljYVwiLFxuICAgICAgcGhvbmU6IFwiNTU1LTEyMy00NTY3XCIsXG4gICAgfSxcbiAgfSlcbiAgZGIuYWRkQWNjb3VudCh7XG4gICAgZ2l0aHViX3VzZXJuYW1lOiBcInNldmVpYmFyXCIsXG4gIH0pXG5cbiAgaWYgKHByb2Nlc3MuZW52LkFVVE9MT0FEX1BBQ0tBR0VTID09PSBcInRydWVcIikge1xuICAgIGxvYWRBdXRvbG9hZFBhY2thZ2VzKGRiKVxuICB9XG5cbiAgZGIuYWRkU25pcHBldCh7XG4gICAgbmFtZTogXCJ0ZXN0dXNlci9teS10ZXN0LWJvYXJkXCIsXG4gICAgdW5zY29wZWRfbmFtZTogXCJteS10ZXN0LWJvYXJkXCIsXG4gICAgb3duZXJfbmFtZTogXCJ0ZXN0dXNlclwiLFxuICAgIGNvZGU6IGBcbmltcG9ydCB7IEE1NTVUaW1lciB9IGZyb20gXCJAdHNjaS9zZXZlaWJhci5hNTU1dGltZXJcIlxuXG5leHBvcnQgZGVmYXVsdCAoKSA9PiAoXG4gIDxib2FyZCB3aWR0aD1cIjEwbW1cIiBoZWlnaHQ9XCIxMG1tXCI+XG4gICAgPEE1NTVUaW1lciBuYW1lPVwiVTFcIiAvPlxuICA8L2JvYXJkPlxuKWAudHJpbSgpLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB1cGRhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgc25pcHBldF90eXBlOiBcImJvYXJkXCIsXG4gICAgZGVzY3JpcHRpb246IFwiQSBzaW1wbGUgYm9hcmQgd2l0aCBhbiBBNTU1IFRpbWVyIGNvbXBvbmVudFwiLFxuICAgIGNpcmN1aXRfanNvbjogW1xuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzBcIixcbiAgICAgICAgbmFtZTogXCJwaW4xXCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDEsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjFcIiwgXCIxXCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8xXCIsXG4gICAgICAgIG5hbWU6IFwicGluMlwiLFxuICAgICAgICBwaW5fbnVtYmVyOiAyLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW4yXCIsIFwiMlwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMlwiLFxuICAgICAgICBuYW1lOiBcInBpbjNcIixcbiAgICAgICAgcGluX251bWJlcjogMyxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluM1wiLCBcIjNcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzNcIixcbiAgICAgICAgbmFtZTogXCJwaW40XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDQsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjRcIiwgXCI0XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF80XCIsXG4gICAgICAgIG5hbWU6IFwicGluNVwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA1LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW41XCIsIFwiNVwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNVwiLFxuICAgICAgICBuYW1lOiBcInBpbjZcIixcbiAgICAgICAgcGluX251bWJlcjogNixcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluNlwiLCBcIjZcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzZcIixcbiAgICAgICAgbmFtZTogXCJwaW43XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDcsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjdcIiwgXCI3XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF83XCIsXG4gICAgICAgIG5hbWU6IFwicGluOFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA4LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW44XCIsIFwiOFwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX2NvbXBvbmVudFwiLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgICBmdHlwZTogXCJzaW1wbGVfY2hpcFwiLFxuICAgICAgICBuYW1lOiBcIlUxXCIsXG4gICAgICAgIHN1cHBsaWVyX3BhcnRfbnVtYmVyczoge30sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19jb21wb25lbnRcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICB9LFxuICAgICAgICByb3RhdGlvbjogMCxcbiAgICAgICAgc2l6ZToge1xuICAgICAgICAgIHdpZHRoOiAxLjEsXG4gICAgICAgICAgaGVpZ2h0OiAxLFxuICAgICAgICB9LFxuICAgICAgICBwaW5fc3BhY2luZzogMC4yLFxuICAgICAgICBwb3J0X2xhYmVsczoge30sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzBcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogLTAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAwLjMwMDAwMDAwMDAwMDAwMDA0LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8wXCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwibGVmdFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcImxlZnRcIixcbiAgICAgICAgcGluX251bWJlcjogMSxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzFcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogLTAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAwLjEwMDAwMDAwMDAwMDAwMDAzLFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8xXCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwibGVmdFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcImxlZnRcIixcbiAgICAgICAgcGluX251bWJlcjogMixcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzJcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogLTAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAtMC4wOTk5OTk5OTk5OTk5OTk5OCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMlwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcImxlZnRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJsZWZ0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDMsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiAyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF8zXCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IC0wLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogLTAuMzAwMDAwMDAwMDAwMDAwMDQsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzNcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJsZWZ0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwibGVmdFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA0LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogMyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfNFwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogLTAuMzAwMDAwMDAwMDAwMDAwMDQsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzRcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJyaWdodFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcInJpZ2h0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDUsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiA0LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF81XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAtMC4xMDAwMDAwMDAwMDAwMDAwMyxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNVwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcInJpZ2h0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwicmlnaHRcIixcbiAgICAgICAgcGluX251bWJlcjogNixcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDUsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzZcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IDAuMDk5OTk5OTk5OTk5OTk5OTgsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzZcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJyaWdodFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcInJpZ2h0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDcsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiA2LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF83XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAwLjMwMDAwMDAwMDAwMDAwMDA0LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF83XCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwicmlnaHRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJyaWdodFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA4LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogNyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX2NvbXBvbmVudFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHdpZHRoOiA4LjgyLFxuICAgICAgICBoZWlnaHQ6IDguODIsXG4gICAgICAgIGxheWVyOiBcInRvcFwiLFxuICAgICAgICByb3RhdGlvbjogMCxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX2JvYXJkXCIsXG4gICAgICAgIHBjYl9ib2FyZF9pZDogXCJwY2JfYm9hcmRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHRoaWNrbmVzczogMS40LFxuICAgICAgICBudW1fbGF5ZXJzOiA0LFxuICAgICAgICB3aWR0aDogMTAsXG4gICAgICAgIGhlaWdodDogMTAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzBcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMFwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiMVwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IDMuODEsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV8xXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzFcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjJcIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAxLjI3LFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfMlwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8yXCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCIzXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogLTEuMjcsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV8zXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzNcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjRcIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAtMy44MSxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzRcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNFwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiNVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogLTMuODEsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV81XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzVcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjZcIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IC0xLjI3LFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfNlwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF82XCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI3XCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAxLjI3LFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfN1wiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF83XCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI4XCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAzLjgxLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3NpbGtzY3JlZW5fcGF0aFwiLFxuICAgICAgICBwY2Jfc2lsa3NjcmVlbl9wYXRoX2lkOiBcInBjYl9zaWxrc2NyZWVuX3BhdGhfMFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcjogXCJ0b3BcIixcbiAgICAgICAgcm91dGU6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMy4wMSxcbiAgICAgICAgICAgIHk6IC00LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTMuMDEsXG4gICAgICAgICAgICB5OiA0LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTEuMDAzMzMzMzMzMzMzMzMzMixcbiAgICAgICAgICAgIHk6IDQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMC45MjY5NTkxMzA5NTI5OTA5LFxuICAgICAgICAgICAgeTogNC4yMjYwNDA5NTYxOTM2OTMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMC43MDk0NjM4MDM3OTA1MDI2LFxuICAgICAgICAgICAgeTogMy45MDA1MzYxOTYyMDk0OTc4LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTAuMzgzOTU5MDQzODA2MzA2NyxcbiAgICAgICAgICAgIHk6IDMuNjgzMDQwODY5MDQ3MDA5NixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDYuMTQzNjQ0Nzc1NzIyNTU2ZS0xNyxcbiAgICAgICAgICAgIHk6IDMuNjA2NjY2NjY2NjY2NjY3NCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDAuMzgzOTU5MDQzODA2MzA2NzQsXG4gICAgICAgICAgICB5OiAzLjY4MzA0MDg2OTA0NzAwOTYsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAwLjcwOTQ2MzgwMzc5MDUwMjcsXG4gICAgICAgICAgICB5OiAzLjkwMDUzNjE5NjIwOTQ5NzgsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAwLjkyNjk1OTEzMDk1Mjk5MDksXG4gICAgICAgICAgICB5OiA0LjIyNjA0MDk1NjE5MzY5MyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDEuMDAzMzMzMzMzMzMzMzMzMixcbiAgICAgICAgICAgIHk6IDQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAzLjAxLFxuICAgICAgICAgICAgeTogNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDMuMDEsXG4gICAgICAgICAgICB5OiAtNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0zLjAxLFxuICAgICAgICAgICAgeTogLTQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgc3Ryb2tlX3dpZHRoOiAwLjEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzBcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAzLjgxLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzFcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAxLjI3LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8xXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzJcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAtMS4yNyxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMlwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8zXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogLTMuODEsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzNcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogLTMuODEsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzRcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNVwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogLTEuMjcsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzVcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNlwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogMS4yNyxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNlwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF83XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAzLjgxLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF83XCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcImNhZF9jb21wb25lbnRcIixcbiAgICAgICAgY2FkX2NvbXBvbmVudF9pZDogXCJjYWRfY29tcG9uZW50XzBcIixcbiAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgejogMC43LFxuICAgICAgICB9LFxuICAgICAgICByb3RhdGlvbjoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgICB6OiAwLFxuICAgICAgICB9LFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgICBmb290cHJpbnRlcl9zdHJpbmc6IFwiZGlwOFwiLFxuICAgICAgfSxcbiAgICBdLFxuICB9KVxuXG4gIC8vIERlZmluZSB0aGUgQHRzY2kvc2V2ZWliYXIuYTU1NXRpbWVyIHBhY2thZ2VcbiAgZGIuYWRkU25pcHBldCh7XG4gICAgbmFtZTogXCJzZXZlaWJhci9hNTU1dGltZXJcIixcbiAgICB1bnNjb3BlZF9uYW1lOiBcImE1NTV0aW1lclwiLFxuICAgIG93bmVyX25hbWU6IFwic2V2ZWliYXJcIixcbiAgICBjb2RlOiBgXG5leHBvcnQgY29uc3QgQTU1NVRpbWVyID0gKHsgbmFtZSB9OiB7IG5hbWU6IHN0cmluZyB9KSA9PiAoXG4gIDxjaGlwIG5hbWU9e25hbWV9IGZvb3RwcmludD1cImRpcDhcIiAvPlxuKVxuYC50cmltKCksXG4gICAgZHRzOiBgXG5kZWNsYXJlIG1vZHVsZSBcIkB0c2NpL3NldmVpYmFyLmE1NTV0aW1lclwiIHtcbiAgZXhwb3J0IGNvbnN0IEE1NTVUaW1lcjogKHsgbmFtZSB9OiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICB9KSA9PiBhbnk7XG59XG5gLnRyaW0oKSxcbiAgICBjb21waWxlZF9qczogYFxuXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLkE1NTVUaW1lciA9IHZvaWQgMDtcbmNvbnN0IEE1NTVUaW1lciA9ICh7XG4gIG5hbWVcbn0pID0+IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiY2hpcFwiLCB7XG4gIG5hbWU6IG5hbWUsXG4gIGZvb3RwcmludDogXCJkaXA4XCJcbn0pO1xuZXhwb3J0cy5BNTU1VGltZXIgPSBBNTU1VGltZXI7XG4gICAgYC50cmltKCksXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBzbmlwcGV0X3R5cGU6IFwicGFja2FnZVwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkEgc2ltcGxlIHBhY2thZ2Ugd2l0aCBhbiBBNTU1IFRpbWVyIGNvbXBvbmVudFwiLFxuICAgIGNpcmN1aXRfanNvbjogW1xuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzBcIixcbiAgICAgICAgbmFtZTogXCJwaW4xXCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDEsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjFcIiwgXCIxXCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8xXCIsXG4gICAgICAgIG5hbWU6IFwicGluMlwiLFxuICAgICAgICBwaW5fbnVtYmVyOiAyLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW4yXCIsIFwiMlwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMlwiLFxuICAgICAgICBuYW1lOiBcInBpbjNcIixcbiAgICAgICAgcGluX251bWJlcjogMyxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluM1wiLCBcIjNcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzNcIixcbiAgICAgICAgbmFtZTogXCJwaW40XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDQsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjRcIiwgXCI0XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF80XCIsXG4gICAgICAgIG5hbWU6IFwicGluNVwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA1LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW41XCIsIFwiNVwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNVwiLFxuICAgICAgICBuYW1lOiBcInBpbjZcIixcbiAgICAgICAgcGluX251bWJlcjogNixcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluNlwiLCBcIjZcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzZcIixcbiAgICAgICAgbmFtZTogXCJwaW43XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDcsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjdcIiwgXCI3XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF83XCIsXG4gICAgICAgIG5hbWU6IFwicGluOFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA4LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW44XCIsIFwiOFwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX2NvbXBvbmVudFwiLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgICBmdHlwZTogXCJzaW1wbGVfY2hpcFwiLFxuICAgICAgICBuYW1lOiBcIlUxXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19jb21wb25lbnRcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICB9LFxuICAgICAgICByb3RhdGlvbjogMCxcbiAgICAgICAgc2l6ZToge1xuICAgICAgICAgIHdpZHRoOiAxLjEsXG4gICAgICAgICAgaGVpZ2h0OiAxLFxuICAgICAgICB9LFxuICAgICAgICBwaW5fc3BhY2luZzogMC4yLFxuICAgICAgICBwb3J0X2xhYmVsczoge30sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzBcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogLTAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAwLjMwMDAwMDAwMDAwMDAwMDA0LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8wXCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwibGVmdFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcImxlZnRcIixcbiAgICAgICAgcGluX251bWJlcjogMSxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzFcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogLTAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAwLjEwMDAwMDAwMDAwMDAwMDAzLFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8xXCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwibGVmdFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcImxlZnRcIixcbiAgICAgICAgcGluX251bWJlcjogMixcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzJcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogLTAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAtMC4wOTk5OTk5OTk5OTk5OTk5OCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMlwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcImxlZnRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJsZWZ0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDMsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiAyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF8zXCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IC0wLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogLTAuMzAwMDAwMDAwMDAwMDAwMDQsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzNcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJsZWZ0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwibGVmdFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA0LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogMyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfNFwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogLTAuMzAwMDAwMDAwMDAwMDAwMDQsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzRcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJyaWdodFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcInJpZ2h0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDUsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiA0LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF81XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAtMC4xMDAwMDAwMDAwMDAwMDAwMyxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNVwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcInJpZ2h0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwicmlnaHRcIixcbiAgICAgICAgcGluX251bWJlcjogNixcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDUsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzZcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IDAuMDk5OTk5OTk5OTk5OTk5OTgsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzZcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJyaWdodFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcInJpZ2h0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDcsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiA2LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF83XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAwLjMwMDAwMDAwMDAwMDAwMDA0LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF83XCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwicmlnaHRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJyaWdodFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA4LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogNyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX2NvbXBvbmVudFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHdpZHRoOiA4LjgyLFxuICAgICAgICBoZWlnaHQ6IDguODIsXG4gICAgICAgIGxheWVyOiBcInRvcFwiLFxuICAgICAgICByb3RhdGlvbjogMCxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX2JvYXJkXCIsXG4gICAgICAgIHBjYl9ib2FyZF9pZDogXCJwY2JfYm9hcmRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHRoaWNrbmVzczogMS40LFxuICAgICAgICBudW1fbGF5ZXJzOiA0LFxuICAgICAgICB3aWR0aDogNTAsXG4gICAgICAgIGhlaWdodDogNTAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzBcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMFwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiMVwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IDMuODEsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV8xXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzFcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjJcIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAxLjI3LFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfMlwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8yXCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCIzXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogLTEuMjcsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV8zXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzNcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjRcIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAtMy44MSxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzRcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNFwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiNVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogLTMuODEsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV81XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzVcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjZcIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IC0xLjI3LFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfNlwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF82XCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI3XCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAxLjI3LFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfN1wiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF83XCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI4XCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAzLjgxLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3NpbGtzY3JlZW5fcGF0aFwiLFxuICAgICAgICBwY2Jfc2lsa3NjcmVlbl9wYXRoX2lkOiBcInBjYl9zaWxrc2NyZWVuX3BhdGhfMFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcjogXCJ0b3BcIixcbiAgICAgICAgcm91dGU6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMy4wMSxcbiAgICAgICAgICAgIHk6IC00LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTMuMDEsXG4gICAgICAgICAgICB5OiA0LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTEuMDAzMzMzMzMzMzMzMzMzMixcbiAgICAgICAgICAgIHk6IDQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMC45MjY5NTkxMzA5NTI5OTA5LFxuICAgICAgICAgICAgeTogNC4yMjYwNDA5NTYxOTM2OTMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMC43MDk0NjM4MDM3OTA1MDI2LFxuICAgICAgICAgICAgeTogMy45MDA1MzYxOTYyMDk0OTc4LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTAuMzgzOTU5MDQzODA2MzA2NyxcbiAgICAgICAgICAgIHk6IDMuNjgzMDQwODY5MDQ3MDA5NixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDYuMTQzNjQ0Nzc1NzIyNTU2ZS0xNyxcbiAgICAgICAgICAgIHk6IDMuNjA2NjY2NjY2NjY2NjY3NCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDAuMzgzOTU5MDQzODA2MzA2NzQsXG4gICAgICAgICAgICB5OiAzLjY4MzA0MDg2OTA0NzAwOTYsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAwLjcwOTQ2MzgwMzc5MDUwMjcsXG4gICAgICAgICAgICB5OiAzLjkwMDUzNjE5NjIwOTQ5NzgsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAwLjkyNjk1OTEzMDk1Mjk5MDksXG4gICAgICAgICAgICB5OiA0LjIyNjA0MDk1NjE5MzY5MyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDEuMDAzMzMzMzMzMzMzMzMzMixcbiAgICAgICAgICAgIHk6IDQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAzLjAxLFxuICAgICAgICAgICAgeTogNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDMuMDEsXG4gICAgICAgICAgICB5OiAtNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0zLjAxLFxuICAgICAgICAgICAgeTogLTQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgc3Ryb2tlX3dpZHRoOiAwLjEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzBcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAzLjgxLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzFcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAxLjI3LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8xXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzJcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAtMS4yNyxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMlwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8zXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogLTMuODEsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzNcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogLTMuODEsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzRcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNVwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogLTEuMjcsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzVcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNlwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogMS4yNyxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNlwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF83XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAzLjgxLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF83XCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcImNhZF9jb21wb25lbnRcIixcbiAgICAgICAgY2FkX2NvbXBvbmVudF9pZDogXCJjYWRfY29tcG9uZW50XzBcIixcbiAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgejogMC43LFxuICAgICAgICB9LFxuICAgICAgICByb3RhdGlvbjoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgICB6OiAwLFxuICAgICAgICB9LFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgICBmb290cHJpbnRlcl9zdHJpbmc6IFwiZGlwOFwiLFxuICAgICAgfSxcbiAgICBdLFxuICB9KVxuXG4gIC8vIEFkZCBhIHNuaXBwZXQgdGhhdCBvdXRwdXRzIGEgc3F1YXJlIHdhdmVmb3JtIHVzaW5nIHRoZSBhNTU1dGltZXJcblxuICBkYi5hZGRTbmlwcGV0KHtcbiAgICBuYW1lOiBcInRlc3R1c2VyL2E1NTV0aW1lci1zcXVhcmUtd2F2ZVwiLFxuICAgIHVuc2NvcGVkX25hbWU6IFwiYTU1NXRpbWVyLXNxdWFyZS13YXZlXCIsXG4gICAgb3duZXJfbmFtZTogXCJ0ZXN0dXNlclwiLFxuICAgIGNvZGU6IGBcbmltcG9ydCB7IEE1NTVUaW1lciB9IGZyb20gXCJAdHNjaS9zZXZlaWJhci5hNTU1dGltZXJcIlxuXG5leHBvcnQgY29uc3QgU3F1YXJlV2F2ZU1vZHVsZSA9ICgpID0+IChcbiAgPEE1NTVUaW1lciBuYW1lPVwiVTFcIiAvPlxuKVxuYC50cmltKCksXG4gICAgZHRzOiAnZXhwb3J0IGRlY2xhcmUgY29uc3QgU3F1YXJlV2F2ZU1vZHVsZTogKCkgPT4gaW1wb3J0KFwicmVhY3QvanN4LXJ1bnRpbWVcIikuSlNYLkVsZW1lbnQ7XFxuJyxcbiAgICBjb21waWxlZF9qczpcbiAgICAgICdcInVzZSBzdHJpY3RcIjtcXG5cXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcXG4gIHZhbHVlOiB0cnVlXFxufSk7XFxuZXhwb3J0cy5TcXVhcmVXYXZlTW9kdWxlID0gdm9pZCAwO1xcbnZhciBfc2V2ZWliYXIgPSByZXF1aXJlKFwiQHRzY2kvc2V2ZWliYXIuYTU1NXRpbWVyXCIpO1xcbmNvbnN0IFNxdWFyZVdhdmVNb2R1bGUgPSAoKSA9PiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfc2V2ZWliYXIuQTU1NVRpbWVyLCB7XFxuICBuYW1lOiBcIlUxXCJcXG59KTtcXG5leHBvcnRzLlNxdWFyZVdhdmVNb2R1bGUgPSBTcXVhcmVXYXZlTW9kdWxlOycsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBzbmlwcGV0X3R5cGU6IFwicGFja2FnZVwiLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJBIHNpbXBsZSBwYWNrYWdlIHRoYXQgb3V0cHV0cyBhIHNxdWFyZSB3YXZlZm9ybSB1c2luZyB0aGUgYTU1NXRpbWVyXCIsXG4gICAgY2lyY3VpdF9qc29uOiBbXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMFwiLFxuICAgICAgICBuYW1lOiBcInBpbjFcIixcbiAgICAgICAgcGluX251bWJlcjogMSxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluMVwiLCBcIjFcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzFcIixcbiAgICAgICAgbmFtZTogXCJwaW4yXCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjJcIiwgXCIyXCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8yXCIsXG4gICAgICAgIG5hbWU6IFwicGluM1wiLFxuICAgICAgICBwaW5fbnVtYmVyOiAzLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW4zXCIsIFwiM1wiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfM1wiLFxuICAgICAgICBuYW1lOiBcInBpbjRcIixcbiAgICAgICAgcGluX251bWJlcjogNCxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluNFwiLCBcIjRcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzRcIixcbiAgICAgICAgbmFtZTogXCJwaW41XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDUsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjVcIiwgXCI1XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF81XCIsXG4gICAgICAgIG5hbWU6IFwicGluNlwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA2LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW42XCIsIFwiNlwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNlwiLFxuICAgICAgICBuYW1lOiBcInBpbjdcIixcbiAgICAgICAgcGluX251bWJlcjogNyxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluN1wiLCBcIjdcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzdcIixcbiAgICAgICAgbmFtZTogXCJwaW44XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDgsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjhcIiwgXCI4XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfY29tcG9uZW50XCIsXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGZ0eXBlOiBcInNpbXBsZV9jaGlwXCIsXG4gICAgICAgIG5hbWU6IFwiVTFcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX2NvbXBvbmVudFwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHJvdGF0aW9uOiAwLFxuICAgICAgICBzaXplOiB7XG4gICAgICAgICAgd2lkdGg6IDEuMSxcbiAgICAgICAgICBoZWlnaHQ6IDEsXG4gICAgICAgIH0sXG4gICAgICAgIHBpbl9zcGFjaW5nOiAwLjIsXG4gICAgICAgIHBvcnRfbGFiZWxzOiB7fSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfMFwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAtMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IDAuMzAwMDAwMDAwMDAwMDAwMDQsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzBcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJsZWZ0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwibGVmdFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiAxLFxuICAgICAgICB0cnVlX2Njd19pbmRleDogMCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfMVwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAtMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IDAuMTAwMDAwMDAwMDAwMDAwMDMsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzFcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJsZWZ0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwibGVmdFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiAyLFxuICAgICAgICB0cnVlX2Njd19pbmRleDogMSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfMlwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAtMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IC0wLjA5OTk5OTk5OTk5OTk5OTk4LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8yXCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwibGVmdFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcImxlZnRcIixcbiAgICAgICAgcGluX251bWJlcjogMyxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzNcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogLTAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAtMC4zMDAwMDAwMDAwMDAwMDAwNCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfM1wiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcImxlZnRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJsZWZ0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDQsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiAzLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF80XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAtMC4zMDAwMDAwMDAwMDAwMDAwNCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNFwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcInJpZ2h0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwicmlnaHRcIixcbiAgICAgICAgcGluX251bWJlcjogNSxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDQsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzVcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IC0wLjEwMDAwMDAwMDAwMDAwMDAzLFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF81XCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwicmlnaHRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJyaWdodFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA2LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogNSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfNlwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogMC4wOTk5OTk5OTk5OTk5OTk5OCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNlwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcInJpZ2h0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwicmlnaHRcIixcbiAgICAgICAgcGluX251bWJlcjogNyxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDYsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzdcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IDAuMzAwMDAwMDAwMDAwMDAwMDQsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzdcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJyaWdodFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcInJpZ2h0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDgsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiA3LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfY29tcG9uZW50XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgfSxcbiAgICAgICAgd2lkdGg6IDguODIsXG4gICAgICAgIGhlaWdodDogOC44MixcbiAgICAgICAgbGF5ZXI6IFwidG9wXCIsXG4gICAgICAgIHJvdGF0aW9uOiAwLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfYm9hcmRcIixcbiAgICAgICAgcGNiX2JvYXJkX2lkOiBcInBjYl9ib2FyZF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgfSxcbiAgICAgICAgdGhpY2tuZXNzOiAxLjQsXG4gICAgICAgIG51bV9sYXllcnM6IDQsXG4gICAgICAgIHdpZHRoOiA1MCxcbiAgICAgICAgaGVpZ2h0OiA1MCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfMFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8wXCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCIxXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogMy44MSxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzFcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMVwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiMlwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IDEuMjcsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV8yXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzJcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjNcIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAtMS4yNyxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzNcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfM1wiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiNFwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IC0zLjgxLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfNFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF80XCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI1XCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAtMy44MSxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzVcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNVwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiNlwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogLTEuMjcsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV82XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzZcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjdcIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IDEuMjcsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV83XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzdcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjhcIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IDMuODEsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2Jfc2lsa3NjcmVlbl9wYXRoXCIsXG4gICAgICAgIHBjYl9zaWxrc2NyZWVuX3BhdGhfaWQ6IFwicGNiX3NpbGtzY3JlZW5fcGF0aF8wXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyOiBcInRvcFwiLFxuICAgICAgICByb3V0ZTogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0zLjAxLFxuICAgICAgICAgICAgeTogLTQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMy4wMSxcbiAgICAgICAgICAgIHk6IDQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMS4wMDMzMzMzMzMzMzMzMzMyLFxuICAgICAgICAgICAgeTogNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0wLjkyNjk1OTEzMDk1Mjk5MDksXG4gICAgICAgICAgICB5OiA0LjIyNjA0MDk1NjE5MzY5MyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0wLjcwOTQ2MzgwMzc5MDUwMjYsXG4gICAgICAgICAgICB5OiAzLjkwMDUzNjE5NjIwOTQ5NzgsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMC4zODM5NTkwNDM4MDYzMDY3LFxuICAgICAgICAgICAgeTogMy42ODMwNDA4NjkwNDcwMDk2LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogNi4xNDM2NDQ3NzU3MjI1NTZlLTE3LFxuICAgICAgICAgICAgeTogMy42MDY2NjY2NjY2NjY2Njc0LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMC4zODM5NTkwNDM4MDYzMDY3NCxcbiAgICAgICAgICAgIHk6IDMuNjgzMDQwODY5MDQ3MDA5NixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDAuNzA5NDYzODAzNzkwNTAyNyxcbiAgICAgICAgICAgIHk6IDMuOTAwNTM2MTk2MjA5NDk3OCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDAuOTI2OTU5MTMwOTUyOTkwOSxcbiAgICAgICAgICAgIHk6IDQuMjI2MDQwOTU2MTkzNjkzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMS4wMDMzMzMzMzMzMzMzMzMyLFxuICAgICAgICAgICAgeTogNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDMuMDEsXG4gICAgICAgICAgICB5OiA0LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMy4wMSxcbiAgICAgICAgICAgIHk6IC00LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTMuMDEsXG4gICAgICAgICAgICB5OiAtNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBzdHJva2Vfd2lkdGg6IDAuMSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IDMuODEsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMVwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IDEuMjcsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzFcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMlwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IC0xLjI3LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8yXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzNcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAtMy44MSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfM1wiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF80XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAtMy44MSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF81XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAtMS4yNyxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNVwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF82XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAxLjI3LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF82XCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzdcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IDMuODEsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzdcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwiY2FkX2NvbXBvbmVudFwiLFxuICAgICAgICBjYWRfY29tcG9uZW50X2lkOiBcImNhZF9jb21wb25lbnRfMFwiLFxuICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgICB6OiAwLjcsXG4gICAgICAgIH0sXG4gICAgICAgIHJvdGF0aW9uOiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIHo6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGZvb3RwcmludGVyX3N0cmluZzogXCJkaXA4XCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0pXG5cbiAgZGIuYWRkT3JkZXIoe1xuICAgIGFjY291bnRfaWQsXG4gICAgaXNfcnVubmluZzogZmFsc2UsXG4gICAgaXNfc3RhcnRlZDogZmFsc2UsXG4gICAgaXNfZmluaXNoZWQ6IGZhbHNlLFxuICAgIGVycm9yOiBudWxsLFxuICAgIGhhc19lcnJvcjogZmFsc2UsXG4gICAgY2lyY3VpdF9qc29uOiBbXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX2NvbXBvbmVudFwiLFxuICAgICAgICBmdHlwZTogXCJzaW1wbGVfcmVzaXN0b3JcIixcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzFcIixcbiAgICAgICAgbmFtZTogXCJSMVwiLFxuICAgICAgICByZXNpc3RhbmU6IFwiMWtcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgc3RhcnRlZF9hdDogbnVsbCxcbiAgICBjb21wbGV0ZWRfYXQ6IG51bGwsXG4gIH0pXG59XG4iLCAiaW1wb3J0IHR5cGUgeyBEYkNsaWVudCB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvZGItY2xpZW50XCJcbmltcG9ydCB7IGNyZWF0ZURhdGFiYXNlIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9kYi1jbGllbnRcIlxuaW1wb3J0IHR5cGUgeyBNaWRkbGV3YXJlIH0gZnJvbSBcIndpbnRlcnNwZWNcIlxuXG5leHBvcnQgY29uc3Qgd2l0aERiOiBNaWRkbGV3YXJlPFxuICB7fSxcbiAge1xuICAgIGRiOiBEYkNsaWVudFxuICB9XG4+ID0gYXN5bmMgKHJlcSwgY3R4LCBuZXh0KSA9PiB7XG4gIGlmICghY3R4LmRiKSB7XG4gICAgY3R4LmRiID0gY3JlYXRlRGF0YWJhc2UoKVxuICB9XG4gIHJldHVybiBuZXh0KHJlcSwgY3R4KVxufVxuIiwgImltcG9ydCB7IE1pZGRsZXdhcmUgfSBmcm9tIFwid2ludGVyc3BlYy9taWRkbGV3YXJlXCJcblxuZXhwb3J0IHR5cGUgQ3R4RXJyb3JGbiA9IChcbiAgc3RhdHVzOiBudW1iZXIsXG4gIGVycm9yX3BheWxvYWQ6IHtcbiAgICBlcnJvcl9jb2RlOiBzdHJpbmdcbiAgICBtZXNzYWdlOiBzdHJpbmdcbiAgfSxcbikgPT4gUmVzcG9uc2VcblxuZXhwb3J0IGNvbnN0IHdpdGhDdHhFcnJvcjogTWlkZGxld2FyZTxcbiAge30sXG4gIHtcbiAgICBlcnJvcjogQ3R4RXJyb3JGblxuICB9XG4+ID0gYXN5bmMgKHJlcSwgY3R4LCBuZXh0KSA9PiB7XG4gIGN0eC5lcnJvciA9IChzdGF0dXMsIGVycm9yX3BheWxvYWQpID0+IHtcbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKEpTT04uc3RyaW5naWZ5KHsgZXJyb3I6IGVycm9yX3BheWxvYWQgfSksIHtcbiAgICAgIHN0YXR1cyxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICB9LFxuICAgIH0pXG4gIH1cbiAgcmV0dXJuIG5leHQocmVxLCBjdHgpXG59XG4iLCAiaW1wb3J0IHR5cGUgeyBNaWRkbGV3YXJlIH0gZnJvbSBcIndpbnRlcnNwZWMvbWlkZGxld2FyZVwiXG5pbXBvcnQgdHlwZSB7IEN0eEVycm9yRm4gfSBmcm9tIFwiLi93aXRoLWN0eC1lcnJvclwiXG5cbmV4cG9ydCBjb25zdCB3aXRoU2Vzc2lvbkF1dGg6IE1pZGRsZXdhcmU8XG4gIHtcbiAgICBlcnJvcjogQ3R4RXJyb3JGblxuICAgIGRiOiBhbnlcbiAgfSxcbiAge1xuICAgIGF1dGg6IHtcbiAgICAgIHR5cGU6IFwic2Vzc2lvblwiXG4gICAgICBhY2NvdW50X2lkOiBzdHJpbmdcbiAgICAgIHBlcnNvbmFsX29yZ19pZDogc3RyaW5nXG4gICAgICBnaXRodWJfdXNlcm5hbWU6IHN0cmluZ1xuICAgICAgc2Vzc2lvbl9pZDogc3RyaW5nXG4gICAgfVxuICB9LFxuICB7fVxuPiA9IGFzeW5jIChyZXEsIGN0eCwgbmV4dCkgPT4ge1xuICBpZiAocmVxLm1ldGhvZCA9PT0gXCJPUFRJT05TXCIpIHJldHVybiBuZXh0KHJlcSwgY3R4KVxuXG4gIGNvbnN0IHRva2VuID0gcmVxLmhlYWRlcnMuZ2V0KFwiYXV0aG9yaXphdGlvblwiKT8uc3BsaXQoXCJCZWFyZXIgXCIpPy5bMV1cblxuICAvLyBPbmx5IGNoZWNrIGRhdGFiYXNlIGFjY291bnRzIHdoZW4gd2UncmUgaW4gYSBCdW4gdGVzdCBlbnZpcm9ubWVudFxuICBpZiAocHJvY2Vzcy5lbnYuQlVOX1RFU1QgPT09IFwidHJ1ZVwiICYmIGN0eC5kYj8uYWNjb3VudHMpIHtcbiAgICBjb25zdCBhY2NvdW50ID0gY3R4LmRiLmFjY291bnRzLmZpbmQoKGFjYzogYW55KSA9PiBhY2MuYWNjb3VudF9pZCA9PT0gdG9rZW4pXG5cbiAgICBpZiAoYWNjb3VudCkge1xuICAgICAgY3R4LmF1dGggPSB7XG4gICAgICAgIHR5cGU6IFwic2Vzc2lvblwiLFxuICAgICAgICBhY2NvdW50X2lkOiBhY2NvdW50LmFjY291bnRfaWQsXG4gICAgICAgIHBlcnNvbmFsX29yZ19pZDogYG9yZy0ke2FjY291bnQuYWNjb3VudF9pZH1gLFxuICAgICAgICBnaXRodWJfdXNlcm5hbWU6IGFjY291bnQuZ2l0aHViX3VzZXJuYW1lLFxuICAgICAgICBzZXNzaW9uX2lkOiBgc2Vzc2lvbi0ke2FjY291bnQuYWNjb3VudF9pZH1gLFxuICAgICAgfVxuICAgICAgcmV0dXJuIG5leHQocmVxLCBjdHgpXG4gICAgfVxuICB9XG5cbiAgLy8gRm9yIGFsbCBvdGhlciBlbnZpcm9ubWVudHMgb3IgaWYgYWNjb3VudCBub3QgZm91bmQgaW4gdGVzdCwgdXNlIGhhcmRjb2RlZCBhdXRoXG4gIGN0eC5hdXRoID0ge1xuICAgIHR5cGU6IFwic2Vzc2lvblwiLFxuICAgIGFjY291bnRfaWQ6IFwiYWNjb3VudC0xMjM0XCIsXG4gICAgcGVyc29uYWxfb3JnX2lkOiBcIm9yZy0xMjM0XCIsXG4gICAgZ2l0aHViX3VzZXJuYW1lOiBcInRlc3R1c2VyXCIsXG4gICAgc2Vzc2lvbl9pZDogXCJzZXNzaW9uLTEyMzRcIixcbiAgfVxuXG4gIHJldHVybiBuZXh0KHJlcSwgY3R4KVxufVxuIiwgImltcG9ydCB0eXBlIHsgTWlkZGxld2FyZSB9IGZyb20gXCJ3aW50ZXJzcGVjL21pZGRsZXdhcmVcIlxuaW1wb3J0IHR5cGUgeyBDdHhFcnJvckZuIH0gZnJvbSBcIi4vd2l0aC1jdHgtZXJyb3JcIlxuXG5leHBvcnQgY29uc3Qgd2l0aE9wdGlvbmFsU2Vzc2lvbkF1dGg6IE1pZGRsZXdhcmU8XG4gIHtcbiAgICBlcnJvcjogQ3R4RXJyb3JGblxuICAgIGRiOiBhbnlcbiAgfSxcbiAge1xuICAgIGF1dGg/OiB7XG4gICAgICB0eXBlOiBcInNlc3Npb25cIlxuICAgICAgYWNjb3VudF9pZDogc3RyaW5nXG4gICAgICBwZXJzb25hbF9vcmdfaWQ6IHN0cmluZ1xuICAgICAgZ2l0aHViX3VzZXJuYW1lOiBzdHJpbmdcbiAgICAgIHNlc3Npb25faWQ6IHN0cmluZ1xuICAgIH1cbiAgfSxcbiAge31cbj4gPSBhc3luYyAocmVxLCBjdHgsIG5leHQpID0+IHtcbiAgaWYgKHJlcS5tZXRob2QgPT09IFwiT1BUSU9OU1wiKSByZXR1cm4gbmV4dChyZXEsIGN0eClcblxuICBjb25zdCB0b2tlbiA9IHJlcS5oZWFkZXJzLmdldChcImF1dGhvcml6YXRpb25cIik/LnNwbGl0KFwiQmVhcmVyIFwiKT8uWzFdXG5cbiAgaWYgKCF0b2tlbikge1xuICAgIHJldHVybiBuZXh0KHJlcSwgY3R4KVxuICB9XG5cbiAgaWYgKHByb2Nlc3MuZW52LkJVTl9URVNUID09PSBcInRydWVcIiAmJiBjdHguZGI/LmFjY291bnRzKSB7XG4gICAgY29uc3QgYWNjb3VudCA9IGN0eC5kYi5hY2NvdW50cy5maW5kKChhY2M6IGFueSkgPT4gYWNjLmFjY291bnRfaWQgPT09IHRva2VuKVxuXG4gICAgaWYgKGFjY291bnQpIHtcbiAgICAgIGN0eC5hdXRoID0ge1xuICAgICAgICB0eXBlOiBcInNlc3Npb25cIixcbiAgICAgICAgYWNjb3VudF9pZDogYWNjb3VudC5hY2NvdW50X2lkLFxuICAgICAgICBwZXJzb25hbF9vcmdfaWQ6IGBvcmctJHthY2NvdW50LmFjY291bnRfaWR9YCxcbiAgICAgICAgZ2l0aHViX3VzZXJuYW1lOiBhY2NvdW50LmdpdGh1Yl91c2VybmFtZSxcbiAgICAgICAgc2Vzc2lvbl9pZDogYHNlc3Npb24tJHthY2NvdW50LmFjY291bnRfaWR9YCxcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV4dChyZXEsIGN0eClcbiAgfVxuXG4gIGN0eC5hdXRoID0ge1xuICAgIHR5cGU6IFwic2Vzc2lvblwiLFxuICAgIGFjY291bnRfaWQ6IFwiYWNjb3VudC0xMjM0XCIsXG4gICAgcGVyc29uYWxfb3JnX2lkOiBcIm9yZy0xMjM0XCIsXG4gICAgZ2l0aHViX3VzZXJuYW1lOiBcInRlc3R1c2VyXCIsXG4gICAgc2Vzc2lvbl9pZDogXCJzZXNzaW9uLTEyMzRcIixcbiAgfVxuXG4gIHJldHVybiBuZXh0KHJlcSwgY3R4KVxufVxuIiwgImltcG9ydCB7IE1pZGRsZXdhcmUgfSBmcm9tIFwid2ludGVyc3BlYy9taWRkbGV3YXJlXCJcbmltcG9ydCBrbGV1ciBmcm9tIFwia2xldXJcIlxuXG5leHBvcnQgY29uc3Qgd2l0aEVycm9ySGFuZGxpbmc6IE1pZGRsZXdhcmU8e30sIHt9PiA9IGFzeW5jIChyZXEsIGN0eCwgbmV4dCkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBuZXh0KHJlcSwgY3R4KVxuICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgY29uc29sZS5lcnJvcihrbGV1ci5yZWQoXCJJbnRlcmNlcHRlZCBlcnJvcjpcIiksIGVycm9yKVxuICAgIC8vIElmIGVycm9yIGlzIGEgUmVzcG9uc2UsIHJldHVybiBpdFxuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gZXJyb3JcbiAgICB9XG4gICAgcmV0dXJuIChjdHggYXMgYW55KS5qc29uKFxuICAgICAge1xuICAgICAgICBvazogZmFsc2UsXG4gICAgICAgIGVycm9yOiB7XG4gICAgICAgICAgbWVzc2FnZTogZXJyb3I/Lm1lc3NhZ2UsXG4gICAgICAgICAgZXJyb3JfY29kZTogZXJyb3I/LmVycm9yX2NvZGUgPz8gXCJpbnRlcm5hbF9zZXJ2ZXJfZXJyb3JcIixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7IHN0YXR1czogZXJyb3I/LnN0YXR1cyB8fCA1MDAgfSxcbiAgICApXG4gIH1cbn1cbiIsICJpbXBvcnQgeyBNaWRkbGV3YXJlIH0gZnJvbSBcIndpbnRlcnNwZWMvbWlkZGxld2FyZVwiXG5pbXBvcnQga2xldXIgZnJvbSBcImtsZXVyXCJcblxuLy8gRU5BQkxFIENPTE9SUyBBTFdBWVNcbmtsZXVyLmVuYWJsZWQgPSB0cnVlXG5cbmNvbnN0IGNvbG9yU3RhdHVzID0gKHN0YXR1czogbnVtYmVyKSA9PiB7XG4gIGlmIChzdGF0dXMgPj0gNTAwKSB7XG4gICAgcmV0dXJuIGtsZXVyLnJlZChzdGF0dXMudG9TdHJpbmcoKSlcbiAgfVxuICBpZiAoc3RhdHVzID49IDQwMCkge1xuICAgIHJldHVybiBrbGV1ci55ZWxsb3coc3RhdHVzLnRvU3RyaW5nKCkpXG4gIH1cbiAgcmV0dXJuIGtsZXVyLmdyZWVuKHN0YXR1cy50b1N0cmluZygpKVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ2dlciB7XG4gIGVycm9yOiAoLi4uYXJnczogYW55W10pID0+IHZvaWRcbiAgaW5mbzogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkXG4gIHdhcm46ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZFxuICBkZWJ1ZzogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkXG59XG5cbmV4cG9ydCBjb25zdCB3aXRoUmVxdWVzdExvZ2dpbmc6IE1pZGRsZXdhcmU8XG4gIHt9LFxuICB7XG4gICAgbG9nZ2VyOiBMb2dnZXJcbiAgfVxuPiA9IGFzeW5jIChyZXEsIGN0eCwgbmV4dCkgPT4ge1xuICBpZiAoIWN0eC5sb2dnZXIpIHtcbiAgICBjdHgubG9nZ2VyID0ge1xuICAgICAgZXJyb3I6ICguLi5hcmdzOiBhbnlbXSkgPT4gY29uc29sZS5lcnJvciguLi5hcmdzKSxcbiAgICAgIGluZm86ICguLi5hcmdzOiBhbnlbXSkgPT4gY29uc29sZS5sb2coLi4uYXJncyksXG4gICAgICB3YXJuOiAoLi4uYXJnczogYW55W10pID0+IGNvbnNvbGUud2FybiguLi5hcmdzKSxcbiAgICAgIGRlYnVnOiAoLi4uYXJnczogYW55W10pID0+IGNvbnNvbGUubG9nKC4uLmFyZ3MpLFxuICAgIH1cbiAgfVxuICB0cnkge1xuICAgIGN0eC5sb2dnZXIuaW5mbyhrbGV1ci5ibHVlKGA+ICR7cmVxLm1ldGhvZH0gJHtyZXEudXJsfWApKVxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgbmV4dChyZXEsIGN0eClcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2VCb2R5ID0gYXdhaXQgcmVzcG9uc2UuY2xvbmUoKS50ZXh0KClcbiAgICAgIGN0eC5sb2dnZXIuaW5mbyhcbiAgICAgICAgYDwgJHtjb2xvclN0YXR1cyhyZXNwb25zZS5zdGF0dXMpfSAke2tsZXVyLmdyYXkocmVzcG9uc2VCb2R5LnNsaWNlKDAsIDQwKS5yZXBsYWNlKC8oXFxyXFxufFxcbnxcXHIpL2dtLCBcIlwiKSl9YCxcbiAgICAgIClcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjdHgubG9nZ2VyLmluZm8oYDwgJHtjb2xvclN0YXR1cyhyZXNwb25zZS5zdGF0dXMpfWApXG4gICAgfVxuICAgIHJldHVybiByZXNwb25zZVxuICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICBjdHgubG9nZ2VyLmluZm8oa2xldXIucmVkKGA8IEVSUk9SICR7ZS50b1N0cmluZygpLnNsaWNlKDAsIDUwKX0uLi5gKSlcbiAgICB0aHJvdyBlXG4gIH1cbn1cbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgc2VlZCB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2VlZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBqc29uUmVzcG9uc2U6IHouYW55KCksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgcmV0dXJuIGN0eC5qc29uKGN0eC5kYi5nZXRTdGF0ZSgpKVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgb3JkZXJTdGVwcyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS91dGlscy9vcmRlci1zdGVwc1wiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBzdWNjZXNzOiB6LmJvb2xlYW4oKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgLy8gR2V0IGFsbCBvcmRlcnMgdGhhdCBhcmVuJ3QgZmluaXNoZWRcbiAgY29uc3Qgb3JkZXJzID0gY3R4LmRiLm9yZGVycy5maWx0ZXIoKG9yZGVyKSA9PiAhb3JkZXIuaXNfZmluaXNoZWQpXG4gIGNvbnN0IHVwZGF0ZWRPcmRlcnMgPSBbXVxuXG4gIGZvciAoY29uc3Qgb3JkZXIgb2Ygb3JkZXJzKSB7XG4gICAgY29uc3Qgb3JkZXJTdGF0ZSA9IGN0eC5kYi5nZXRKbGNwY2JPcmRlclN0YXRlc0J5T3JkZXJJZChvcmRlci5vcmRlcl9pZClcbiAgICBpZiAoIW9yZGVyU3RhdGUpIGNvbnRpbnVlXG5cbiAgICAvLyBGaW5kIHRoZSBuZXh0IHN0ZXAgdG8gY29tcGxldGVcbiAgICBsZXQgbmV4dFN0ZXBJbmRleCA9IC0xXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcmRlclN0ZXBzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBzdGVwID0gb3JkZXJTdGVwc1tpXVxuICAgICAgaWYgKCFvcmRlclN0YXRlW3N0ZXBdKSB7XG4gICAgICAgIG5leHRTdGVwSW5kZXggPSBpXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSWYgYWxsIHN0ZXBzIGFyZSBjb21wbGV0ZWQgb3Igbm8gbmV4dCBzdGVwIGZvdW5kXG4gICAgaWYgKG5leHRTdGVwSW5kZXggPT09IC0xKSB7XG4gICAgICB1cGRhdGVkT3JkZXJzLnB1c2goe1xuICAgICAgICBvcmRlcl9pZDogb3JkZXIub3JkZXJfaWQsXG4gICAgICAgIGN1cnJlbnRfc3RlcDogbnVsbCxcbiAgICAgIH0pXG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIC8vIFVwZGF0ZSB0aGUgbmV4dCBzdGVwIHRvIHRydWVcbiAgICBjb25zdCBuZXh0U3RlcCA9IG9yZGVyU3RlcHNbbmV4dFN0ZXBJbmRleF1cbiAgICBjb25zdCB1cGRhdGVzID0ge1xuICAgICAgW25leHRTdGVwXTogdHJ1ZSxcbiAgICAgIGN1cnJlbnRfc3RlcDogbmV4dFN0ZXAsXG4gICAgfVxuXG4gICAgLy8gSWYgdGhpcyBpcyB0aGUgbGFzdCBzdGVwLCBhbHNvIHVwZGF0ZSB0aGUgb3JkZXIgc3RhdHVzXG4gICAgaWYgKG5leHRTdGVwSW5kZXggPT09IG9yZGVyU3RlcHMubGVuZ3RoIC0gMSkge1xuICAgICAgY3R4LmRiLnVwZGF0ZU9yZGVyKG9yZGVyLm9yZGVyX2lkLCB7XG4gICAgICAgIGlzX2ZpbmlzaGVkOiB0cnVlLFxuICAgICAgICBjb21wbGV0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgY3R4LmRiLnVwZGF0ZUpsY3BjYk9yZGVyU3RhdGUob3JkZXIub3JkZXJfaWQsIHVwZGF0ZXMpXG5cbiAgICB1cGRhdGVkT3JkZXJzLnB1c2goe1xuICAgICAgb3JkZXJfaWQ6IG9yZGVyLm9yZGVyX2lkLFxuICAgICAgY3VycmVudF9zdGVwOiBuZXh0U3RlcCxcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBzdWNjZXNzOiB0cnVlLFxuICB9KVxufSlcbiIsICJleHBvcnQgY29uc3Qgb3JkZXJTdGVwcyA9IFtcbiAgXCJhcmVfZ2VyYmVyc19nZW5lcmF0ZWRcIixcbiAgXCJhcmVfZ2VyYmVyc191cGxvYWRlZFwiLFxuICBcImlzX2dlcmJlcl9hbmFseXplZFwiLFxuICBcImFyZV9pbml0aWFsX2Nvc3RzX2NhbGN1bGF0ZWRcIixcbiAgXCJpc19wY2JfYWRkZWRfdG9fY2FydFwiLFxuICBcImlzX2JvbV91cGxvYWRlZFwiLFxuICBcImlzX3BucF91cGxvYWRlZFwiLFxuICBcImlzX2JvbV9wbnBfYW5hbHl6ZWRcIixcbiAgXCJpc19ib21fcGFyc2luZ19jb21wbGV0ZVwiLFxuICBcImFyZV9jb21wb25lbnRzX2F2YWlsYWJsZVwiLFxuICBcImlzX3BhdGNoX21hcF9nZW5lcmF0ZWRcIixcbiAgXCJpc19qc29uX21lcmdlX2ZpbGVfY3JlYXRlZFwiLFxuICBcImlzX2RmbV9yZXN1bHRfZ2VuZXJhdGVkXCIsXG4gIFwiYXJlX2ZpbGVzX2Rvd25sb2FkZWRcIixcbiAgXCJhcmVfcHJvZHVjdF9jYXRlZ29yaWVzX2ZldGNoZWRcIixcbiAgXCJhcmVfZmluYWxfY29zdHNfY2FsY3VsYXRlZFwiLFxuICBcImlzX2pzb25fbWVyZ2VfZmlsZV91cGRhdGVkXCIsXG4gIFwiaXNfYWRkZWRfdG9fY2FydFwiLFxuXSBhcyBjb25zdFxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBvcmRlclF1b3RlU2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgb3JkZXJfcXVvdGVfaWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvcmRlcl9xdW90ZTogb3JkZXJRdW90ZVNjaGVtYS5vcHRpb25hbCgpLFxuICAgIGVycm9yOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgb3JkZXJfcXVvdGVfaWQgfSA9IHJlcS5qc29uQm9keVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb3JkZXJfcXVvdGU6IHtcbiAgICAgIG9yZGVyX3F1b3RlX2lkLFxuICAgICAgYWNjb3VudF9pZDogXCIxMjNcIixcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogXCIxMjNcIixcbiAgICAgIGlzX2NvbXBsZXRlZDogdHJ1ZSxcbiAgICAgIGlzX3Byb2Nlc3Npbmc6IGZhbHNlLFxuICAgICAgdmVuZG9yX25hbWU6IFwiSkxDUENCXCIsXG4gICAgICBlcnJvcjogbnVsbCxcbiAgICAgIGhhc19lcnJvcjogZmFsc2UsXG4gICAgICBjcmVhdGVkX2F0OiBcIjIwMjUtMDQtMjFcIixcbiAgICAgIHVwZGF0ZWRfYXQ6IFwiMjAyNS0wNC0yMVwiLFxuICAgICAgY29tcGxldGVkX2F0OiBcIjIwMjUtMDQtMjFcIixcbiAgICAgIHF1b3RlZF9jb21wb25lbnRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBtYW51ZmFjdHVyZXJfcGFydF9udW1iZXI6IFwiMTIzXCIsXG4gICAgICAgICAgc3VwcGxpZXJfcGFydF9udW1iZXI6IFwiMTIzXCIsXG4gICAgICAgICAgcXVhbnRpdHk6IDEsXG4gICAgICAgICAgdW5pdF9wcmljZTogMTAwLFxuICAgICAgICAgIHRvdGFsX3ByaWNlOiAxMDAsXG4gICAgICAgICAgYXZhaWxhYmxlOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbWFudWZhY3R1cmVyX3BhcnRfbnVtYmVyOiBcIjEyMzRcIixcbiAgICAgICAgICBzdXBwbGllcl9wYXJ0X251bWJlcjogXCIxMjM0XCIsXG4gICAgICAgICAgcXVhbnRpdHk6IDEsXG4gICAgICAgICAgdW5pdF9wcmljZTogMjAwLFxuICAgICAgICAgIHRvdGFsX3ByaWNlOiAyMDAsXG4gICAgICAgICAgYXZhaWxhYmxlOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGJhcmVfcGNiX2Nvc3Q6IDMwMCxcbiAgICAgIHNoaXBwaW5nX29wdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGNhcnJpZXI6IFwiREhMXCIsXG4gICAgICAgICAgc2VydmljZTogXCJFeHByZXNzXCIsXG4gICAgICAgICAgY29zdDogMTAwLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgY2FycmllcjogXCJGZWRFeFwiLFxuICAgICAgICAgIHNlcnZpY2U6IFwiRXhwcmVzc1wiLFxuICAgICAgICAgIGNvc3Q6IDIwMCxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICAvLyBUT0RPOiBzaGlwcGluZyBjb3N0IGNhbiB2YXJ5IHNvIGRvIHRoZSB0b3RhbCBjb3N0IGNhbGN1bGF0aW9uXG4gICAgICB0b3RhbF9jb3N0OiAxMDAsXG4gICAgfSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IHNlZWQgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NlZWRcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3QoeyBvazogei5ib29sZWFuKCkgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgc2VlZChjdHguZGIpXG5cbiAgcmV0dXJuIGN0eC5qc29uKHsgb2s6IHRydWUgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIGFjY291bnRfYmFsYW5jZTogei5vYmplY3Qoe1xuICAgICAgbW9udGhseV9haV9idWRnZXRfdXNlZF91c2Q6IHoubnVtYmVyKCksXG4gICAgfSksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIC8vIEZvciB0aGlzIGV4YW1wbGUsIHdlJ2xsIHJldHVybiBhIG1vY2sgYmFsYW5jZVxuICAvLyBJbiBhIHJlYWwgaW1wbGVtZW50YXRpb24sIHlvdSB3b3VsZCBmZXRjaCB0aGlzIGZyb20gYSBkYXRhYmFzZSBvciBleHRlcm5hbCBzZXJ2aWNlXG4gIGNvbnN0IG1vY2tCYWxhbmNlID0ge1xuICAgIG1vbnRobHlfYWlfYnVkZ2V0X3VzZWRfdXNkOiAyLjUsXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIGFjY291bnRfYmFsYW5jZTogbW9ja0JhbGFuY2UsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBhY2NvdW50U2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgYWNjb3VudDogYWNjb3VudFNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgYWNjb3VudCA9IGN0eC5kYi5nZXRBY2NvdW50KGN0eC5hdXRoLmFjY291bnRfaWQpXG4gIGlmICghYWNjb3VudCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImFjY291bnRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIkFjY291bnQgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7IGFjY291bnQgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7XG4gIGFjY291bnRTY2hlbWEsXG4gIHNoaXBwaW5nSW5mb1NjaGVtYSxcbn0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgc2hpcHBpbmdJbmZvOiBzaGlwcGluZ0luZm9TY2hlbWEsXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBhY2NvdW50OiBhY2NvdW50U2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IHNoaXBwaW5nSW5mbyB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgY29uc3QgdXBkYXRlZEFjY291bnQgPSBjdHguZGIudXBkYXRlQWNjb3VudChjdHguYXV0aC5hY2NvdW50X2lkLCB7XG4gICAgc2hpcHBpbmdJbmZvLFxuICB9KVxuXG4gIGlmICghdXBkYXRlZEFjY291bnQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJhY2NvdW50X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJBY2NvdW50IG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oeyBhY2NvdW50OiB1cGRhdGVkQWNjb3VudCB9KVxufSlcbiIsICIvKipcbiAqIEZvcndhcmQgcmVxdWVzdCB0byBhbnRocm9waWNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgYXN5bmMgKHJlcTogUmVxdWVzdCkgPT4ge1xuICBjb25zdCB1cmwgPSBuZXcgVVJMKHJlcS51cmwpXG4gIGNvbnN0IGFudGhyb3BpY0FwaUtleSA9IHByb2Nlc3MuZW52LkFOVEhST1BJQ19BUElfS0VZXG5cbiAgaWYgKCFhbnRocm9waWNBcGlLZXkpIHtcbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKFwiQW50aHJvcGljIEFQSSBrZXkgaXMgbm90IHNldFwiLCB7IHN0YXR1czogNTAwIH0pXG4gIH1cblxuICBjb25zdCBhbnRocm9waWNVcmwgPVxuICAgIFwiaHR0cHM6Ly9hcGkuYW50aHJvcGljLmNvbVwiICsgdXJsLnBhdGhuYW1lLnJlcGxhY2UoL15cXC9hcGlcXC9haS8sIFwiXCIpXG5cbiAgY29uc3QgaGVhZGVycyA9IG5ldyBIZWFkZXJzKHJlcS5oZWFkZXJzKVxuICBoZWFkZXJzLnNldChcIngtYXBpLWtleVwiLCBgJHthbnRocm9waWNBcGlLZXl9YClcblxuICBjb25zb2xlLmxvZyhcInNlbmRpbmcgcmVxdWVzdCB0byBhbnRocm9waWNcIilcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChhbnRocm9waWNVcmwsIHtcbiAgICBtZXRob2Q6IHJlcS5tZXRob2QsXG4gICAgaGVhZGVyczogaGVhZGVycyxcbiAgICBib2R5OiByZXEuYm9keSxcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgZHVwbGV4OiBcImhhbGZcIixcbiAgfSkudGhlbigocikgPT4gci5qc29uKCkpXG5cbiAgcmV0dXJuIG5ldyBSZXNwb25zZShKU09OLnN0cmluZ2lmeShyZXNwb25zZSksIHtcbiAgICBzdGF0dXM6IDIwMCxcbiAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gIH0pXG59XG4iLCAiaW1wb3J0IGFpIGZyb20gXCIuL2FpL1suLi5hbnlyb3V0ZV1cIlxuZXhwb3J0IGRlZmF1bHQgYWlcbiIsICJpbXBvcnQgeyBSZWFkYWJsZVN0cmVhbSB9IGZyb20gXCJzdHJlYW0vd2ViXCJcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgKHJlcTogUmVxdWVzdCkgPT4ge1xuICBjb25zdCB1cmwgPSBuZXcgVVJMKHJlcS51cmwpXG4gIGNvbnN0IGFudGhyb3BpY0FwaUtleSA9IHByb2Nlc3MuZW52LkFOVEhST1BJQ19BUElfS0VZXG5cbiAgaWYgKCFhbnRocm9waWNBcGlLZXkpIHtcbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKFwiQW50aHJvcGljIEFQSSBrZXkgaXMgbm90IHNldFwiLCB7IHN0YXR1czogNTAwIH0pXG4gIH1cblxuICBjb25zdCBhbnRocm9waWNVcmwgPVxuICAgIFwiaHR0cHM6Ly9hcGkuYW50aHJvcGljLmNvbVwiICsgdXJsLnBhdGhuYW1lLnJlcGxhY2UoL15cXC9hcGlcXC9haS8sIFwiXCIpXG5cbiAgY29uc3QgaGVhZGVycyA9IG5ldyBIZWFkZXJzKHJlcS5oZWFkZXJzKVxuICBoZWFkZXJzLnNldChcIngtYXBpLWtleVwiLCBgJHthbnRocm9waWNBcGlLZXl9YClcbiAgaGVhZGVycy5zZXQoXCJBY2NlcHRcIiwgXCJ0ZXh0L2V2ZW50LXN0cmVhbVwiKVxuICBoZWFkZXJzLnNldChcIkNhY2hlLUNvbnRyb2xcIiwgXCJuby1jYWNoZVwiKVxuICBoZWFkZXJzLnNldChcIkNvbm5lY3Rpb25cIiwgXCJrZWVwLWFsaXZlXCIpXG5cbiAgY29uc29sZS5sb2coXCJzZW5kaW5nIHJlcXVlc3QgdG8gYW50aHJvcGljXCIpXG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYW50aHJvcGljVXJsLCB7XG4gICAgbWV0aG9kOiByZXEubWV0aG9kLFxuICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgYm9keTogcmVxLmJvZHksXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGR1cGxleDogXCJoYWxmXCIsXG4gIH0pXG5cbiAgLy8gQ2hlY2sgaWYgdGhlIHJlc3BvbnNlIGlzIHN1Y2Nlc3NmdWxcbiAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgIHJldHVybiBuZXcgUmVzcG9uc2UoXG4gICAgICBgQW50aHJvcGljIEFQSSByZXR1cm5lZCBhbiBlcnJvcjogJHtyZXNwb25zZS5zdGF0dXN9ICR7cmVzcG9uc2Uuc3RhdHVzVGV4dH1gLFxuICAgICAge1xuICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cyxcbiAgICAgIH0sXG4gICAgKVxuICB9XG5cbiAgLy8gQ3JlYXRlIGEgUmVhZGFibGVTdHJlYW0gdG8gcHJvY2VzcyB0aGUgcmVzcG9uc2VcbiAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHtcbiAgICBhc3luYyBzdGFydChjb250cm9sbGVyKSB7XG4gICAgICBjb25zdCByZWFkZXIgPSByZXNwb25zZS5ib2R5IS5nZXRSZWFkZXIoKVxuXG4gICAgICB0cnkge1xuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgIGNvbnN0IHsgZG9uZSwgdmFsdWUgfSA9IGF3YWl0IHJlYWRlci5yZWFkKClcbiAgICAgICAgICBpZiAoZG9uZSkgYnJlYWtcbiAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUodmFsdWUpXG4gICAgICAgIH1cbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHJlYWRlci5yZWxlYXNlTG9jaygpXG4gICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKVxuICAgICAgfVxuICAgIH0sXG4gIH0pXG5cbiAgLy8gUmV0dXJuIGEgc3RyZWFtaW5nIHJlc3BvbnNlXG4gIHJldHVybiBuZXcgUmVzcG9uc2Uoc3RyZWFtIGFzIGFueSwge1xuICAgIGhlYWRlcnM6IHtcbiAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwidGV4dC9ldmVudC1zdHJlYW1cIixcbiAgICAgIFwiQ2FjaGUtQ29udHJvbFwiOiBcIm5vLWNhY2hlXCIsXG4gICAgICBDb25uZWN0aW9uOiBcImtlZXAtYWxpdmVcIixcbiAgICB9LFxuICB9KVxufVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGpzb25SZXNwb25zZTogei5vYmplY3QoeyBvazogei5ib29sZWFuKCkgfSksXG59KShhc3luYyAocmVxOiBhbnksIGN0eDogYW55KSA9PiB7XG4gIHJldHVybiBjdHguanNvbih7IG9rOiB0cnVlIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgbXMgZnJvbSBcIm1zXCJcbmltcG9ydCB7IFNpZ25KV1QgfSBmcm9tIFwiam9zZVwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAganNvbkJvZHk6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIGFjY291bnRfaWQ6IHouc3RyaW5nKCksXG4gICAgfSlcbiAgICAub3IoXG4gICAgICB6Lm9iamVjdCh7XG4gICAgICAgIGdpdGh1Yl91c2VybmFtZTogei5zdHJpbmcoKSxcbiAgICAgIH0pLFxuICAgICksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIHNlc3Npb246IHoub2JqZWN0KHtcbiAgICAgIHNlc3Npb25faWQ6IHouc3RyaW5nKCksXG4gICAgICBhY2NvdW50X2lkOiB6LnN0cmluZygpLFxuICAgICAgZXhwaXJlc19hdDogei5zdHJpbmcoKSxcbiAgICAgIGlzX2NsaV9zZXNzaW9uOiB6LmJvb2xlYW4oKSxcbiAgICAgIHRva2VuOiB6LnN0cmluZygpLFxuICAgIH0pLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBsZXQgYWNjb3VudFxuICBpZiAoXCJhY2NvdW50X2lkXCIgaW4gcmVxLmpzb25Cb2R5KSB7XG4gICAgYWNjb3VudCA9IGN0eC5kYi5nZXRBY2NvdW50KHJlcS5qc29uQm9keS5hY2NvdW50X2lkKVxuICB9IGVsc2Uge1xuICAgIGFjY291bnQgPSBjdHguZGIuZ2V0QWNjb3VudChyZXEuanNvbkJvZHkuZ2l0aHViX3VzZXJuYW1lKVxuICB9XG5cbiAgaWYgKCFhY2NvdW50KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiYWNjb3VudF9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiQWNjb3VudCBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgbmV3X3Nlc3Npb24gPSBjdHguZGIuY3JlYXRlU2Vzc2lvbih7XG4gICAgZXhwaXJlc19hdDogbmV3IERhdGUoRGF0ZS5ub3coKSArIG1zKFwiNjAgZGF5XCIpKS50b0lTT1N0cmluZygpLFxuICAgIGFjY291bnRfaWQ6IGFjY291bnQuYWNjb3VudF9pZCxcbiAgICBpc19jbGlfc2Vzc2lvbjogZmFsc2UsXG4gIH0pXG5cbiAgY29uc3QgdG9rZW4gPSBhd2FpdCBuZXcgU2lnbkpXVCh7XG4gICAgYWNjb3VudF9pZDogYWNjb3VudC5hY2NvdW50X2lkLFxuICAgIHNlc3Npb25faWQ6IG5ld19zZXNzaW9uLnNlc3Npb25faWQsXG4gICAgZ2l0aHViX3VzZXJuYW1lOiBhY2NvdW50LmdpdGh1Yl91c2VybmFtZSxcbiAgfSlcbiAgICAuc2V0UHJvdGVjdGVkSGVhZGVyKHsgYWxnOiBcIkhTMjU2XCIgfSlcbiAgICAuc2V0RXhwaXJhdGlvblRpbWUobmV3IERhdGUoRGF0ZS5ub3coKSArIG1zKFwiNjAgZGF5XCIpKS50b0lTT1N0cmluZygpKVxuICAgIC5zaWduKG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShwcm9jZXNzLmVudi5KV1RfU0VDUkVUIHx8IFwiXCIpKVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgc2Vzc2lvbjoge1xuICAgICAgLi4ubmV3X3Nlc3Npb24sXG4gICAgICB0b2tlbixcbiAgICB9LFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgb3JkZXJGaWxlU2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAgcXVlcnlQYXJhbXM6IHoub2JqZWN0KHtcbiAgICBvcmRlcl9maWxlX2lkOiB6LnN0cmluZygpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb3JkZXJfZmlsZTogb3JkZXJGaWxlU2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IG9yZGVyX2ZpbGVfaWQgfSA9IHJlcS5xdWVyeVxuXG4gIGNvbnN0IG9yZGVyRmlsZSA9IGN0eC5kYi5nZXRPcmRlckZpbGVCeUlkKG9yZGVyX2ZpbGVfaWQpXG4gIGlmICghb3JkZXJGaWxlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwib3JkZXJfZmlsZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiT3JkZXIgZmlsZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvcmRlcl9maWxlOiBvcmRlckZpbGUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBvcmRlckZpbGVTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBvcmRlcl9pZDogei5zdHJpbmcoKSxcbiAgICBjb250ZW50X2Jhc2U2NDogei5zdHJpbmcoKSxcbiAgICBpc19nZXJiZXJzX3ppcDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICBmb3JfcHJvdmlkZXI6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9yZGVyX2ZpbGU6IG9yZGVyRmlsZVNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBvcmRlcl9pZCwgY29udGVudF9iYXNlNjQsIGlzX2dlcmJlcnNfemlwLCBmb3JfcHJvdmlkZXIgfSA9XG4gICAgcmVxLmpzb25Cb2R5XG5cbiAgY29uc3Qgb3JkZXIgPSBjdHguZGIuZ2V0T3JkZXJCeUlkKG9yZGVyX2lkKVxuICBpZiAoIW9yZGVyKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwib3JkZXJfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIk9yZGVyIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBuZXdPcmRlckZpbGUgPSB7XG4gICAgb3JkZXJfaWQsXG4gICAgaXNfZ2VyYmVyc196aXA6IGlzX2dlcmJlcnNfemlwIHx8IGZhbHNlLFxuICAgIGNvbnRlbnRfdHlwZTogXCJiYXNlNjRcIixcbiAgICBmb3JfcHJvdmlkZXI6IGZvcl9wcm92aWRlciB8fCBudWxsLFxuICAgIHVwbG9hZGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgY29udGVudF90ZXh0OiBCdWZmZXIuZnJvbShjb250ZW50X2Jhc2U2NCwgXCJiYXNlNjRcIikudG9TdHJpbmcoXCJ1dGYtOFwiKSxcbiAgICBjb250ZW50X2J5dGVzOiBVaW50OEFycmF5LmZyb20oYXRvYihjb250ZW50X2Jhc2U2NCksIChjKSA9PlxuICAgICAgYy5jaGFyQ29kZUF0KDApLFxuICAgICksXG4gIH1cblxuICBjb25zdCBvcmRlckZpbGUgPSBjdHguZGIuYWRkT3JkZXJGaWxlKG5ld09yZGVyRmlsZSlcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9yZGVyX2ZpbGU6IG9yZGVyRmlsZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9yZGVyX3F1b3RlX2lkczogei5hcnJheSh6LnN0cmluZygpKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBwYWNrYWdlX3JlbGVhc2VfaWQgfSA9IHJlcS5qc29uQm9keVxuICBjb25zdCB2ZW5kb3JOYW1lcyA9IFtcIkpMQ1BDQlwiLCBcIk1hY3JvRmFiXCJdXG5cbiAgbGV0IG9yZGVyUXVvdGVJZHMgPSBbXVxuICBmb3IgKGNvbnN0IHZlbmRvck5hbWUgb2YgdmVuZG9yTmFtZXMpIHtcbiAgICBjb25zdCBvcmRlclF1b3RlSWQgPSBjdHguZGIuYWRkT3JkZXJRdW90ZSh7XG4gICAgICBhY2NvdW50X2lkOiBjdHguYXV0aC5hY2NvdW50X2lkLFxuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgdmVuZG9yX25hbWU6IHZlbmRvck5hbWUsXG4gICAgfSlcbiAgICBvcmRlclF1b3RlSWRzLnB1c2gob3JkZXJRdW90ZUlkKVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvcmRlcl9xdW90ZV9pZHM6IG9yZGVyUXVvdGVJZHMsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCksXG4gICAgdmVuZG9yX25hbWU6IHouc3RyaW5nKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvcmRlcl9xdW90ZV9pZDogei5zdHJpbmcoKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBwYWNrYWdlX3JlbGVhc2VfaWQsIHZlbmRvcl9uYW1lIH0gPSByZXEuanNvbkJvZHlcblxuICBjb25zdCBvcmRlclF1b3RlSWQgPSBjdHguZGIuYWRkT3JkZXJRdW90ZSh7XG4gICAgYWNjb3VudF9pZDogY3R4LmF1dGguYWNjb3VudF9pZCxcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgdmVuZG9yX25hbWUsXG4gIH0pXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvcmRlcl9xdW90ZV9pZDogb3JkZXJRdW90ZUlkLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgb3JkZXJRdW90ZVNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIG9yZGVyX3F1b3RlX2lkOiB6LnN0cmluZygpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb3JkZXJfcXVvdGU6IG9yZGVyUXVvdGVTY2hlbWEub3B0aW9uYWwoKSxcbiAgICBlcnJvcjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IG9yZGVyX3F1b3RlX2lkIH0gPSByZXEuanNvbkJvZHlcblxuICBjb25zdCBvcmRlclF1b3RlID0gY3R4LmRiLmdldE9yZGVyUXVvdGVCeUlkKG9yZGVyX3F1b3RlX2lkKVxuXG4gIGlmICghb3JkZXJRdW90ZSkge1xuICAgIHJldHVybiBjdHguanNvbihcbiAgICAgIHtcbiAgICAgICAgZXJyb3I6IFwiT3JkZXIgcXVvdGUgbm90IGZvdW5kXCIsXG4gICAgICB9LFxuICAgICAgeyBzdGF0dXM6IDQwNCB9LFxuICAgIClcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb3JkZXJfcXVvdGU6IG9yZGVyUXVvdGUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7XG4gIEpsY3BjYk9yZGVyU3RhdGUsXG4gIHR5cGUgT3JkZXIsXG4gIG9yZGVyU2NoZW1hLFxufSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCkudXVpZCgpLm9wdGlvbmFsKCksXG4gICAgICBjaXJjdWl0X2pzb246IHouYXJyYXkoei5yZWNvcmQoei5hbnkoKSkpLFxuICAgIH0pXG4gICAgLnJlZmluZSgoZGF0YSkgPT4gZGF0YS5wYWNrYWdlX3JlbGVhc2VfaWQgfHwgZGF0YS5jaXJjdWl0X2pzb24sIHtcbiAgICAgIG1lc3NhZ2U6IFwiRWl0aGVyIHBhY2thZ2VfcmVsZWFzZV9pZCBvciBjaXJjdWl0X2pzb24gbXVzdCBiZSBwcm92aWRlZFwiLFxuICAgIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvcmRlcjogb3JkZXJTY2hlbWEsXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgY2lyY3VpdF9qc29uIH0gPSByZXEuanNvbkJvZHlcblxuICBjb25zdCBuZXdPcmRlciA9IHtcbiAgICBhY2NvdW50X2lkOiBjdHguYXV0aC5hY2NvdW50X2lkLFxuICAgIGlzX3J1bm5pbmc6IGZhbHNlLFxuICAgIGlzX3N0YXJ0ZWQ6IGZhbHNlLFxuICAgIGlzX2ZpbmlzaGVkOiBmYWxzZSxcbiAgICBlcnJvcjogbnVsbCxcbiAgICBoYXNfZXJyb3I6IGZhbHNlLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBzdGFydGVkX2F0OiBudWxsLFxuICAgIGNvbXBsZXRlZF9hdDogbnVsbCxcbiAgICBjaXJjdWl0X2pzb24sXG4gIH1cblxuICBjb25zdCBvcmRlciA9IGN0eC5kYi5hZGRPcmRlcihuZXdPcmRlcilcblxuICBjb25zdCBuZXdKbGNwY2JPcmRlclN0YXRlID0ge1xuICAgIG9yZGVyX2lkOiBvcmRlci5vcmRlcl9pZCxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgYXJlX2dlcmJlcnNfdXBsb2FkZWQ6IGZhbHNlLFxuICAgIGlzX2dlcmJlcl9hbmFseXplZDogZmFsc2UsXG4gICAgYXJlX2luaXRpYWxfY29zdHNfY2FsY3VsYXRlZDogZmFsc2UsXG4gICAgaXNfcGNiX2FkZGVkX3RvX2NhcnQ6IGZhbHNlLFxuICAgIGlzX2JvbV91cGxvYWRlZDogZmFsc2UsXG4gICAgaXNfcG5wX3VwbG9hZGVkOiBmYWxzZSxcbiAgICBpc19ib21fcG5wX2FuYWx5emVkOiBmYWxzZSxcbiAgICBpc19ib21fcGFyc2luZ19jb21wbGV0ZTogZmFsc2UsXG4gICAgYXJlX2NvbXBvbmVudHNfYXZhaWxhYmxlOiBmYWxzZSxcbiAgICBpc19wYXRjaF9tYXBfZ2VuZXJhdGVkOiBmYWxzZSxcbiAgICBpc19qc29uX21lcmdlX2ZpbGVfY3JlYXRlZDogZmFsc2UsXG4gICAgaXNfZGZtX3Jlc3VsdF9nZW5lcmF0ZWQ6IGZhbHNlLFxuICAgIGFyZV9maWxlc19kb3dubG9hZGVkOiBmYWxzZSxcbiAgICBhcmVfcHJvZHVjdF9jYXRlZ29yaWVzX2ZldGNoZWQ6IGZhbHNlLFxuICAgIGFyZV9maW5hbF9jb3N0c19jYWxjdWxhdGVkOiBmYWxzZSxcbiAgICBpc19qc29uX21lcmdlX2ZpbGVfdXBkYXRlZDogZmFsc2UsXG4gICAgaXNfYWRkZWRfdG9fY2FydDogZmFsc2UsXG4gICAgYXJlX2dlcmJlcnNfZ2VuZXJhdGVkOiBmYWxzZSxcbiAgICBjdXJyZW50X3N0ZXA6IG51bGwsXG4gIH1cblxuICBjdHguZGIuYWRkSmxjcGNiT3JkZXJTdGF0ZShuZXdKbGNwY2JPcmRlclN0YXRlKVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb3JkZXIsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7XG4gIGVycm9yU2NoZW1hLFxuICBqbGNwY2JPcmRlclN0YXRlU2NoZW1hLFxuICBvcmRlclNjaGVtYSxcbn0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IG9yZGVyU3RlcHMgYXMgc2ltdWxhdGVTY2VuYXJpb3MgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvdXRpbHMvb3JkZXItc3RlcHNcIlxuXG5jb25zdCBkZWZhdWx0T3JkZXJTdGF0ZSA9IHtcbiAgYXJlX2dlcmJlcnNfdXBsb2FkZWQ6IGZhbHNlLFxuICBpc19nZXJiZXJfYW5hbHl6ZWQ6IGZhbHNlLFxuICBhcmVfaW5pdGlhbF9jb3N0c19jYWxjdWxhdGVkOiBmYWxzZSxcbiAgaXNfcGNiX2FkZGVkX3RvX2NhcnQ6IGZhbHNlLFxuICBpc19ib21fdXBsb2FkZWQ6IGZhbHNlLFxuICBpc19wbnBfdXBsb2FkZWQ6IGZhbHNlLFxuICBpc19ib21fcG5wX2FuYWx5emVkOiBmYWxzZSxcbiAgaXNfYm9tX3BhcnNpbmdfY29tcGxldGU6IGZhbHNlLFxuICBhcmVfY29tcG9uZW50c19hdmFpbGFibGU6IGZhbHNlLFxuICBpc19wYXRjaF9tYXBfZ2VuZXJhdGVkOiBmYWxzZSxcbiAgaXNfanNvbl9tZXJnZV9maWxlX2NyZWF0ZWQ6IGZhbHNlLFxuICBpc19kZm1fcmVzdWx0X2dlbmVyYXRlZDogZmFsc2UsXG4gIGFyZV9maWxlc19kb3dubG9hZGVkOiBmYWxzZSxcbiAgYXJlX3Byb2R1Y3RfY2F0ZWdvcmllc19mZXRjaGVkOiBmYWxzZSxcbiAgYXJlX2ZpbmFsX2Nvc3RzX2NhbGN1bGF0ZWQ6IGZhbHNlLFxuICBpc19qc29uX21lcmdlX2ZpbGVfdXBkYXRlZDogZmFsc2UsXG4gIGlzX2FkZGVkX3RvX2NhcnQ6IGZhbHNlLFxuICB1cGxvYWRlZF9nZXJiZXJfbWV0YWRhdGE6IG51bGwsXG4gIGdlcmJlcl9hbmFseXNpczogbnVsbCxcbiAgYXJlX2dlcmJlcnNfZ2VuZXJhdGVkOiBmYWxzZSxcbiAgY3VycmVudF9zdGVwOiBudWxsIGFzIG51bGwgfCAodHlwZW9mIHNpbXVsYXRlU2NlbmFyaW9zKVtudW1iZXJdLFxufVxuXG5jb25zdCBlcnJvck1hcCA9IHtcbiAgYXJlX2dlcmJlcnNfZ2VuZXJhdGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJHRVJCRVJfR0VORVJBVElPTl9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkdlcmJlciBnZW5lcmF0aW9uIGZhaWxlZFwiLFxuICB9LFxuICBhcmVfZ2VyYmVyc191cGxvYWRlZDoge1xuICAgIGVycm9yX2NvZGU6IFwiR0VSQkVSX1VQTE9BRF9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkdlcmJlciB1cGxvYWQgZmFpbGVkXCIsXG4gIH0sXG4gIGlzX2dlcmJlcl9hbmFseXplZDoge1xuICAgIGVycm9yX2NvZGU6IFwiQU5BTFlaRV9HRVJCRVJfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJBbmFseXplIGdlcmJlciBmYWlsZWRcIixcbiAgfSxcbiAgaXNfYm9tX3VwbG9hZGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJCT01fVVBMT0FEX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiQm9tIHVwbG9hZCBmYWlsZWRcIixcbiAgfSxcbiAgaXNfcG5wX3VwbG9hZGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJQTlBfVVBMT0FEX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiUG5wIHVwbG9hZCBmYWlsZWRcIixcbiAgfSxcbiAgaXNfYm9tX3BucF9hbmFseXplZDoge1xuICAgIGVycm9yX2NvZGU6IFwiQU5BTFlaRV9CT01fQU5EX1BOUF9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkFuYWx5emUgYm9tIGFuZCBwbnAgZmFpbGVkXCIsXG4gIH0sXG4gIGlzX2JvbV9wYXJzaW5nX2NvbXBsZXRlOiB7XG4gICAgZXJyb3JfY29kZTogXCJCT01fUEFSU0lOR19GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkJvbSBwYXJzaW5nIGZhaWxlZFwiLFxuICB9LFxuICBhcmVfY29tcG9uZW50c19hdmFpbGFibGU6IHtcbiAgICBlcnJvcl9jb2RlOiBcIkNPTVBPTkVOVFNfQVZBSUxBQklMSVRZX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiQ29tcG9uZW50cyBhdmFpbGFiaWxpdHkgZmFpbGVkXCIsXG4gIH0sXG4gIGlzX3BhdGNoX21hcF9nZW5lcmF0ZWQ6IHtcbiAgICBlcnJvcl9jb2RlOiBcIkdFTkVSQVRFX1BBVENIX01BUF9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkdlbmVyYXRlIHBhdGNoIG1hcCBmYWlsZWRcIixcbiAgfSxcbiAgaXNfanNvbl9tZXJnZV9maWxlX2NyZWF0ZWQ6IHtcbiAgICBlcnJvcl9jb2RlOiBcIkNSRUFUSU9OX0pTT05fTUVSR0VfRklMRV9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkNyZWF0aW9uIGpzb24gbWVyZ2UgZmlsZSBmYWlsZWRcIixcbiAgfSxcbiAgaXNfZGZtX3Jlc3VsdF9nZW5lcmF0ZWQ6IHtcbiAgICBlcnJvcl9jb2RlOiBcIkdFTkVSQVRFX0RGTV9SRVNVTFRfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJHZW5lcmF0ZSBkZm0gcmVzdWx0IGZhaWxlZFwiLFxuICB9LFxuICBhcmVfZmlsZXNfZG93bmxvYWRlZDoge1xuICAgIGVycm9yX2NvZGU6IFwiRE9XTkxPQURfRklMRVNfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJEb3dubG9hZCBmaWxlcyBmYWlsZWRcIixcbiAgfSxcbiAgYXJlX3Byb2R1Y3RfY2F0ZWdvcmllc19mZXRjaGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJGRVRDSF9QUk9EVUNUX0NBVEVHT1JJRVNfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJGZXRjaCBwcm9kdWN0IGNhdGVnb3JpZXMgZmFpbGVkXCIsXG4gIH0sXG4gIGFyZV9maW5hbF9jb3N0c19jYWxjdWxhdGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJGSU5BTF9DT1NUX0NBTENVTEFUSU9OX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiRmluYWwgY29zdCBjYWxjdWxhdGlvbiBmYWlsZWRcIixcbiAgfSxcbiAgaXNfanNvbl9tZXJnZV9maWxlX3VwZGF0ZWQ6IHtcbiAgICBlcnJvcl9jb2RlOiBcIlVQREFURV9KU09OX01FUkdFX0ZJTEVfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJVcGRhdGUganNvbiBtZXJnZSBmaWxlIGZhaWxlZFwiLFxuICB9LFxuICBpc19wY2JfYWRkZWRfdG9fY2FydDoge1xuICAgIGVycm9yX2NvZGU6IFwiQUREX1BDQl9UT19DQVJUX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiQWRkIHBjYiB0byBjYXJ0IGZhaWxlZFwiLFxuICB9LFxuICBpc19hZGRlZF90b19jYXJ0OiB7XG4gICAgZXJyb3JfY29kZTogXCJBRERfVE9fQ0FSVF9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkFkZCB0byBjYXJ0IGZhaWxlZFwiLFxuICB9LFxuICBhcmVfaW5pdGlhbF9jb3N0c19jYWxjdWxhdGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJJTklUSUFMX0NPU1RfQ0FMQ1VMQVRJT05fRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJJbml0aWFsIGNvc3QgY2FsY3VsYXRpb24gZmFpbGVkXCIsXG4gIH0sXG59XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBxdWVyeVBhcmFtczogei5vYmplY3Qoe1xuICAgIG9yZGVyX2lkOiB6LnN0cmluZygpLFxuICAgIF9zaW11bGF0ZV9zY2VuYXJpbzogei5lbnVtKHNpbXVsYXRlU2NlbmFyaW9zKS5vcHRpb25hbCgpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb3JkZXI6IG9yZGVyU2NoZW1hLFxuICAgIG9yZGVyU3RhdGU6IGpsY3BjYk9yZGVyU3RhdGVTY2hlbWEsXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgb3JkZXJfaWQsIF9zaW11bGF0ZV9zY2VuYXJpbyB9ID0gcmVxLnF1ZXJ5XG5cbiAgY29uc3Qgb3JkZXIgPSBjdHguZGIuZ2V0T3JkZXJCeUlkKG9yZGVyX2lkKVxuICBpZiAoIW9yZGVyKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwib3JkZXJfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIk9yZGVyIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCB1cGRhdGVkT3JkZXJTdGF0ZSA9IHtcbiAgICAuLi5kZWZhdWx0T3JkZXJTdGF0ZSxcbiAgICBvcmRlcl9pZCxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gIH1cblxuICBpZiAoX3NpbXVsYXRlX3NjZW5hcmlvKSB7XG4gICAgY29uc3QgZXJyb3IgPSBlcnJvck1hcFtfc2ltdWxhdGVfc2NlbmFyaW9dXG4gICAgaWYgKGVycm9yKSB7XG4gICAgICBvcmRlci5lcnJvciA9IGVycm9yU2NoZW1hLnBhcnNlKGVycm9yKVxuICAgICAgb3JkZXIuaGFzX2Vycm9yID0gdHJ1ZVxuICAgICAgY3R4LmRiLnVwZGF0ZU9yZGVyKG9yZGVyX2lkLCB7IGVycm9yOiBvcmRlci5lcnJvciwgaGFzX2Vycm9yOiB0cnVlIH0pXG5cbiAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHNpbXVsYXRlU2NlbmFyaW9zLmluZGV4T2YoX3NpbXVsYXRlX3NjZW5hcmlvKVxuICAgICAgc2ltdWxhdGVTY2VuYXJpb3Muc2xpY2UoMCwgY3VycmVudEluZGV4KS5mb3JFYWNoKChzY2VuYXJpbykgPT4ge1xuICAgICAgICB1cGRhdGVkT3JkZXJTdGF0ZVtzY2VuYXJpb10gPSB0cnVlXG4gICAgICB9KVxuICAgICAgdXBkYXRlZE9yZGVyU3RhdGUuY3VycmVudF9zdGVwID0gc2ltdWxhdGVTY2VuYXJpb3NbY3VycmVudEluZGV4XVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBleGlzdGluZ1N0YXRlID0gY3R4LmRiLmdldEpsY3BjYk9yZGVyU3RhdGVzQnlPcmRlcklkKG9yZGVyX2lkKVxuICAgIGlmIChleGlzdGluZ1N0YXRlKSB7XG4gICAgICByZXR1cm4gY3R4Lmpzb24oe1xuICAgICAgICBvcmRlcixcbiAgICAgICAgb3JkZXJTdGF0ZTogZXhpc3RpbmdTdGF0ZSxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgY3R4LmRiLnVwZGF0ZUpsY3BjYk9yZGVyU3RhdGUob3JkZXJfaWQsIHVwZGF0ZWRPcmRlclN0YXRlKVxuXG4gIGNvbnN0IG9yZGVyU3RhdGUgPSBjdHguZGIuZ2V0SmxjcGNiT3JkZXJTdGF0ZXNCeU9yZGVySWQob3JkZXJfaWQpIVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb3JkZXIsXG4gICAgb3JkZXJTdGF0ZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IG9yZGVyU2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb3JkZXJzOiB6LmFycmF5KG9yZGVyU2NoZW1hKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvcmRlcnM6IGN0eC5kYi5vcmRlcnMuZmlsdGVyKChvKSA9PiBvLmFjY291bnRfaWQgPT09IGN0eC5hdXRoLmFjY291bnRfaWQpLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyBQYWNrYWdlLCBQYWNrYWdlUmVsZWFzZSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGNvbnN0IGZpbmRQYWNrYWdlUmVsZWFzZUlkID0gYXN5bmMgKFxuICBwYXJhbXM6XG4gICAgfCBzdHJpbmdcbiAgICB8IHtcbiAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBzdHJpbmdcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgcGFja2FnZV9uYW1lOiBzdHJpbmdcbiAgICAgICAgdXNlX2xhdGVzdF92ZXJzaW9uOiB0cnVlXG4gICAgICB9XG4gICAgfCB7XG4gICAgICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb246IHN0cmluZ1xuICAgICAgfVxuICAgIHwge1xuICAgICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ/OiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICAgICAgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbj86IHN0cmluZyB8IHVuZGVmaW5lZFxuICAgICAgfSxcbiAgY3R4OiB7IGRiOiBhbnkgfSxcbik6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4gPT4ge1xuICBpZiAodHlwZW9mIHBhcmFtcyA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiBmaW5kUGFja2FnZVJlbGVhc2VJZEZyb21QYWNrYWdlTmFtZVdpdGhWZXJzaW9uKHBhcmFtcywgY3R4LmRiKVxuICB9XG5cbiAgaWYgKFxuICAgIFwicGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvblwiIGluIHBhcmFtcyAmJlxuICAgIHBhcmFtcy5wYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uXG4gICkge1xuICAgIGNvbnN0IHsgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbiB9ID0gcGFyYW1zXG5cbiAgICBpZiAocGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbi5lbmRzV2l0aChcIkBsYXRlc3RcIikpIHtcbiAgICAgIGNvbnN0IFtwYWNrYWdlTmFtZV0gPSBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uLnNwbGl0KFwiQFwiKVxuICAgICAgcmV0dXJuIGZpbmRQYWNrYWdlUmVsZWFzZUlkKFxuICAgICAgICB7XG4gICAgICAgICAgcGFja2FnZV9uYW1lOiBwYWNrYWdlTmFtZSEsXG4gICAgICAgICAgdXNlX2xhdGVzdF92ZXJzaW9uOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjdHgsXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiBmaW5kUGFja2FnZVJlbGVhc2VJZEZyb21QYWNrYWdlTmFtZVdpdGhWZXJzaW9uKFxuICAgICAgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbiEsXG4gICAgICBjdHguZGIsXG4gICAgKVxuICB9XG5cbiAgaWYgKFwicGFja2FnZV9yZWxlYXNlX2lkXCIgaW4gcGFyYW1zICYmIHBhcmFtcy5wYWNrYWdlX3JlbGVhc2VfaWQpIHtcbiAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgIChwcjogUGFja2FnZVJlbGVhc2UpID0+XG4gICAgICAgIHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFyYW1zLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICApXG4gICAgaWYgKCFwYWNrYWdlUmVsZWFzZSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgcmV0dXJuIHBhcmFtcy5wYWNrYWdlX3JlbGVhc2VfaWRcbiAgfVxuXG4gIGlmIChcInBhY2thZ2VfbmFtZVwiIGluIHBhcmFtcykge1xuICAgIGNvbnN0IHsgcGFja2FnZV9uYW1lLCB1c2VfbGF0ZXN0X3ZlcnNpb24gfSA9IHBhcmFtc1xuXG4gICAgaWYgKCF1c2VfbGF0ZXN0X3ZlcnNpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcInVzZV9sYXRlc3RfdmVyc2lvbiBtdXN0IGJlIHRydWVcIilcbiAgICB9XG5cbiAgICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXMuZmluZChcbiAgICAgIChwOiBQYWNrYWdlKSA9PiBwLm5hbWUgPT09IHBhY2thZ2VfbmFtZS5yZXBsYWNlKC9eQC8sIFwiXCIpLFxuICAgIClcbiAgICBpZiAoIXBrZykge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgIChwcjogUGFja2FnZVJlbGVhc2UpID0+IHByLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIHByLmlzX2xhdGVzdCxcbiAgICApXG5cbiAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIHJldHVybiBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWRcbiAgfVxuXG4gIHJldHVybiBudWxsXG59XG5cbmV4cG9ydCBjb25zdCBmaW5kUGFja2FnZVJlbGVhc2VJZEZyb21QYWNrYWdlTmFtZVdpdGhWZXJzaW9uID0gKFxuICBwYWNrYWdlTmFtZVdpdGhWZXJzaW9uOiBzdHJpbmcsXG4gIGRiOiBhbnksXG4pOiBzdHJpbmcgfCBudWxsID0+IHtcbiAgaWYgKCFwYWNrYWdlTmFtZVdpdGhWZXJzaW9uKSByZXR1cm4gbnVsbFxuXG4gIGNvbnN0IFtwYWNrYWdlTmFtZSwgdmVyc2lvbl0gPSBwYWNrYWdlTmFtZVdpdGhWZXJzaW9uXG4gICAgLnJlcGxhY2UoL15ALywgXCJcIilcbiAgICAuc3BsaXQoXCJAXCIpXG5cbiAgY29uc3QgcGtnID0gZGIucGFja2FnZXMuZmluZCgocDogUGFja2FnZSkgPT4gcC5uYW1lID09PSBwYWNrYWdlTmFtZSlcbiAgaWYgKCFwa2cpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgbGV0IHBhY2thZ2VSZWxlYXNlXG5cbiAgaWYgKCF2ZXJzaW9uIHx8IHZlcnNpb24gPT09IFwibGF0ZXN0XCIpIHtcbiAgICBwYWNrYWdlUmVsZWFzZSA9IGRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgKHByOiBQYWNrYWdlUmVsZWFzZSkgPT4gcHIucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQgJiYgcHIuaXNfbGF0ZXN0LFxuICAgIClcbiAgfSBlbHNlIHtcbiAgICBwYWNrYWdlUmVsZWFzZSA9IGRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgKHByOiBQYWNrYWdlUmVsZWFzZSkgPT5cbiAgICAgICAgcHIucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQgJiYgcHIudmVyc2lvbiA9PT0gdmVyc2lvbixcbiAgICApXG4gIH1cblxuICBpZiAoIXBhY2thZ2VSZWxlYXNlKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIHJldHVybiBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWRcbn1cbiIsICJpbXBvcnQgKiBhcyB6dCBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyBmaW5kUGFja2FnZVJlbGVhc2VJZCB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcGFja2FnZV9yZWxlYXNlL2ZpbmQtcGFja2FnZS1yZWxlYXNlLWlkXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5jb25zdCByb3V0ZVNwZWMgPSB7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogelxuICAgIC5vYmplY3Qoe1xuICAgICAgZmlsZV9wYXRoOiB6LnN0cmluZygpLFxuICAgICAgaXNfcmVsZWFzZV90YXJiYWxsOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlZmF1bHQoZmFsc2UpLFxuICAgICAgY29udGVudF9taW1ldHlwZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgY29udGVudF90ZXh0OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBjb250ZW50X2Jhc2U2NDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBucG1fcGFja19vdXRwdXQ6IHouYW55KCkub3B0aW9uYWwoKSxcbiAgICB9KVxuICAgIC5yZWZpbmUoKHYpID0+IHtcbiAgICAgIGlmICh2LnBhY2thZ2VfcmVsZWFzZV9pZCkgcmV0dXJuIHRydWVcbiAgICAgIGlmICh2LnBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24pIHJldHVybiB0cnVlXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9LCBcIk11c3Qgc3BlY2lmeSBlaXRoZXIgcGFja2FnZV9yZWxlYXNlX2lkIG9yIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb25cIilcbiAgICAucmVmaW5lKCh2KSA9PiB7XG4gICAgICBpZiAodi5wYWNrYWdlX3JlbGVhc2VfaWQgJiYgdi5wYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uKSByZXR1cm4gZmFsc2VcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSwgXCJDYW5ub3Qgc3BlY2lmeSBib3RoIHBhY2thZ2VfcmVsZWFzZV9pZCBhbmQgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvblwiKVxuICAgIC5yZWZpbmUoKHYpID0+IHtcbiAgICAgIGlmICh2LmNvbnRlbnRfYmFzZTY0ICYmIHYuY29udGVudF90ZXh0KSByZXR1cm4gZmFsc2VcbiAgICAgIGlmICghdi5jb250ZW50X2Jhc2U2NCAmJiAhdi5jb250ZW50X3RleHQpIHJldHVybiBmYWxzZVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9LCBcIkVpdGhlciBjb250ZW50X2Jhc2U2NCBvciBjb250ZW50X3RleHQgaXMgcmVxdWlyZWRcIiksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBwYWNrYWdlX2ZpbGU6IHp0LnBhY2thZ2VGaWxlU2NoZW1hLFxuICB9KSxcbn0gYXMgY29uc3RcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyhyb3V0ZVNwZWMpKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7XG4gICAgZmlsZV9wYXRoLFxuICAgIGNvbnRlbnRfbWltZXR5cGU6IHByb3ZpZGVkQ29udGVudE1pbWV0eXBlLFxuICAgIGNvbnRlbnRfYmFzZTY0LFxuICAgIGNvbnRlbnRfdGV4dCxcbiAgICBpc19yZWxlYXNlX3RhcmJhbGwsXG4gICAgbnBtX3BhY2tfb3V0cHV0LFxuICB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgaWYgKGlzX3JlbGVhc2VfdGFyYmFsbCAmJiAhbnBtX3BhY2tfb3V0cHV0KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwibWlzc2luZ19vcHRpb25zXCIsXG4gICAgICBtZXNzYWdlOiBcIm5wbV9wYWNrX291dHB1dCBpcyByZXF1aXJlZCBmb3IgcmVsZWFzZSB0YXJiYWxsc1wiLFxuICAgIH0pXG4gIH1cblxuICBpZiAoIWlzX3JlbGVhc2VfdGFyYmFsbCAmJiBucG1fcGFja19vdXRwdXQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJpbnZhbGlkX29wdGlvbnNcIixcbiAgICAgIG1lc3NhZ2U6IFwibnBtX3BhY2tfb3V0cHV0IGlzIG9ubHkgdmFsaWQgZm9yIHJlbGVhc2UgdGFyYmFsbHNcIixcbiAgICB9KVxuICB9XG5cbiAgbGV0IHBhY2thZ2VSZWxlYXNlSWQgPSByZXEuanNvbkJvZHkucGFja2FnZV9yZWxlYXNlX2lkXG5cbiAgaWYgKCFwYWNrYWdlUmVsZWFzZUlkICYmIHJlcS5qc29uQm9keS5wYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uKSB7XG4gICAgY29uc3QgZm91bmRQYWNrYWdlUmVsZWFzZUlkID0gYXdhaXQgZmluZFBhY2thZ2VSZWxlYXNlSWQoXG4gICAgICB7IHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb246IHJlcS5qc29uQm9keS5wYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uIH0sXG4gICAgICBjdHgsXG4gICAgKVxuICAgIGlmIChmb3VuZFBhY2thZ2VSZWxlYXNlSWQpIHtcbiAgICAgIHBhY2thZ2VSZWxlYXNlSWQgPSBmb3VuZFBhY2thZ2VSZWxlYXNlSWRcbiAgICB9XG4gIH1cblxuICBpZiAoIXBhY2thZ2VSZWxlYXNlSWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gVmVyaWZ5IHRoZSBwYWNrYWdlIHJlbGVhc2UgZXhpc3RzXG4gIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgIChwcikgPT4gcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZUlkLFxuICApXG5cbiAgaWYgKCFwYWNrYWdlUmVsZWFzZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBHZXQgdGhlIHBhY2thZ2UgdG8gY2hlY2sgcGVybWlzc2lvbnNcbiAgY29uc3QgZXhpc3RpbmdQYWNrYWdlID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoXG4gICAgKHApID0+IHAucGFja2FnZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9pZCxcbiAgKVxuXG4gIGlmICghZXhpc3RpbmdQYWNrYWdlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdXNlciBoYXMgcGVybWlzc2lvbiB0byBjcmVhdGUvdXBkYXRlIHRoZSBmaWxlXG4gIGlmIChleGlzdGluZ1BhY2thZ2UuY3JlYXRvcl9hY2NvdW50X2lkICE9PSBjdHguYXV0aC5hY2NvdW50X2lkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDMsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiZm9yYmlkZGVuXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gbW9kaWZ5IGZpbGVzIGluIHRoaXMgcGFja2FnZVwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiBmaWxlIGV4aXN0c1xuICBjb25zdCBleGlzaXRpbmdGaWxlID0gY3R4LmRiLnBhY2thZ2VGaWxlcy5maW5kKFxuICAgIChwZikgPT5cbiAgICAgIHBmLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2VJZCAmJiBwZi5maWxlX3BhdGggPT09IGZpbGVfcGF0aCxcbiAgKVxuXG4gIC8vIERldGVybWluZSBjb250ZW50IG1pbWV0eXBlXG4gIGNvbnN0IGNvbnRlbnRNaW1ldHlwZSA9XG4gICAgcHJvdmlkZWRDb250ZW50TWltZXR5cGUgfHxcbiAgICAoZmlsZV9wYXRoLmVuZHNXaXRoKFwiLnRzXCIpIHx8IGZpbGVfcGF0aC5lbmRzV2l0aChcIi50c3hcIilcbiAgICAgID8gXCJ0ZXh0L3R5cGVzY3JpcHRcIlxuICAgICAgOiBudWxsKSB8fFxuICAgIChmaWxlX3BhdGguZW5kc1dpdGgoXCIuanNcIikgPyBcImFwcGxpY2F0aW9uL2phdmFzY3JpcHRcIiA6IG51bGwpIHx8XG4gICAgKGZpbGVfcGF0aC5lbmRzV2l0aChcIi5qc29uXCIpID8gXCJhcHBsaWNhdGlvbi9qc29uXCIgOiBudWxsKSB8fFxuICAgIChmaWxlX3BhdGguZW5kc1dpdGgoXCIubWRcIikgPyBcInRleHQvbWFya2Rvd25cIiA6IG51bGwpIHx8XG4gICAgKGZpbGVfcGF0aC5lbmRzV2l0aChcIi5odG1sXCIpID8gXCJ0ZXh0L2h0bWxcIiA6IG51bGwpIHx8XG4gICAgKGZpbGVfcGF0aC5lbmRzV2l0aChcIi5jc3NcIikgPyBcInRleHQvY3NzXCIgOiBudWxsKSB8fFxuICAgIFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCJcblxuICBpZiAoZXhpc2l0aW5nRmlsZSkge1xuICAgIGNvbnN0IHBhY2thZ2VfZmlsZSA9IGN0eC5kYi51cGRhdGVQYWNrYWdlRmlsZShcbiAgICAgIGV4aXNpdGluZ0ZpbGUucGFja2FnZV9maWxlX2lkLFxuICAgICAge1xuICAgICAgICBjb250ZW50X3RleHQ6XG4gICAgICAgICAgY29udGVudF90ZXh0IHx8XG4gICAgICAgICAgKGNvbnRlbnRfYmFzZTY0XG4gICAgICAgICAgICA/IEJ1ZmZlci5mcm9tKGNvbnRlbnRfYmFzZTY0LCBcImJhc2U2NFwiKS50b1N0cmluZygpXG4gICAgICAgICAgICA6IG51bGwpLFxuICAgICAgICBjb250ZW50X21pbWV0eXBlOiBjb250ZW50TWltZXR5cGUsXG4gICAgICAgIGlzX3JlbGVhc2VfdGFyYmFsbDogaXNfcmVsZWFzZV90YXJiYWxsIHx8IGZhbHNlLFxuICAgICAgICBucG1fcGFja19vdXRwdXQ6IG5wbV9wYWNrX291dHB1dCB8fCBudWxsLFxuICAgICAgfSxcbiAgICApXG5cbiAgICByZXR1cm4gY3R4Lmpzb24oe1xuICAgICAgb2s6IHRydWUsXG4gICAgICBwYWNrYWdlX2ZpbGUsXG4gICAgfSlcbiAgfVxuXG4gIGlmIChcbiAgICAhcmVxLmpzb25Cb2R5LnBhY2thZ2VfcmVsZWFzZV9pZCAmJlxuICAgICFyZXEuanNvbkJvZHkucGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvblxuICApXG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwibWlzc2luZ19vcHRpb25zXCIsXG4gICAgICBtZXNzYWdlOlxuICAgICAgICBcIk11c3Qgc3BlY2lmeSBlaXRoZXIgcGFja2FnZV9yZWxlYXNlX2lkIG9yIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb25cIixcbiAgICB9KVxuICAvLyBDcmVhdGUgdGhlIHBhY2thZ2UgZmlsZVxuICBjb25zdCBuZXdQYWNrYWdlRmlsZSA9IHtcbiAgICBwYWNrYWdlX2ZpbGVfaWQ6IGNyeXB0by5yYW5kb21VVUlEKCksXG4gICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwYWNrYWdlUmVsZWFzZUlkLFxuICAgIGZpbGVfcGF0aCxcbiAgICBjb250ZW50X3RleHQ6XG4gICAgICBjb250ZW50X3RleHQgfHxcbiAgICAgIChjb250ZW50X2Jhc2U2NFxuICAgICAgICA/IEJ1ZmZlci5mcm9tKGNvbnRlbnRfYmFzZTY0LCBcImJhc2U2NFwiKS50b1N0cmluZygpXG4gICAgICAgIDogbnVsbCksXG4gICAgY29udGVudF9taW1ldHlwZTogY29udGVudE1pbWV0eXBlLFxuICAgIGlzX2RpcmVjdG9yeTogZmFsc2UsXG4gICAgaXNfcmVsZWFzZV90YXJiYWxsOiBpc19yZWxlYXNlX3RhcmJhbGwgfHwgZmFsc2UsXG4gICAgbnBtX3BhY2tfb3V0cHV0OiBucG1fcGFja19vdXRwdXQgfHwgbnVsbCxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gIH1cblxuICAvLyBBZGQgdG8gdGhlIHRlc3QgZGF0YWJhc2VcbiAgY3R4LmRiLmFkZFBhY2thZ2VGaWxlKG5ld1BhY2thZ2VGaWxlKVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgcGFja2FnZV9maWxlOiBuZXdQYWNrYWdlRmlsZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0ICogYXMgenQgZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgZmluZFBhY2thZ2VSZWxlYXNlSWQgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3BhY2thZ2VfcmVsZWFzZS9maW5kLXBhY2thZ2UtcmVsZWFzZS1pZFwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuY29uc3Qgcm91dGVTcGVjID0ge1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAganNvbkJvZHk6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIGZpbGVfcGF0aDogei5zdHJpbmcoKSxcbiAgICAgIGlzX3JlbGVhc2VfdGFyYmFsbDogei5ib29sZWFuKCkub3B0aW9uYWwoKS5kZWZhdWx0KGZhbHNlKSxcbiAgICAgIGNvbnRlbnRfbWltZXR5cGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIGNvbnRlbnRfdGV4dDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgY29udGVudF9iYXNlNjQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgbnBtX3BhY2tfb3V0cHV0OiB6LmFueSgpLm9wdGlvbmFsKCksXG4gICAgfSlcbiAgICAucmVmaW5lKCh2KSA9PiB7XG4gICAgICBpZiAodi5wYWNrYWdlX3JlbGVhc2VfaWQpIHJldHVybiB0cnVlXG4gICAgICBpZiAodi5wYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uKSByZXR1cm4gdHJ1ZVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSwgXCJNdXN0IHNwZWNpZnkgZWl0aGVyIHBhY2thZ2VfcmVsZWFzZV9pZCBvciBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uXCIpXG4gICAgLnJlZmluZSgodikgPT4ge1xuICAgICAgaWYgKHYucGFja2FnZV9yZWxlYXNlX2lkICYmIHYucGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbikgcmV0dXJuIGZhbHNlXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0sIFwiQ2Fubm90IHNwZWNpZnkgYm90aCBwYWNrYWdlX3JlbGVhc2VfaWQgYW5kIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb25cIilcbiAgICAucmVmaW5lKCh2KSA9PiB7XG4gICAgICBpZiAodi5jb250ZW50X2Jhc2U2NCAmJiB2LmNvbnRlbnRfdGV4dCkgcmV0dXJuIGZhbHNlXG4gICAgICBpZiAoIXYuY29udGVudF9iYXNlNjQgJiYgIXYuY29udGVudF90ZXh0KSByZXR1cm4gZmFsc2VcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSwgXCJFaXRoZXIgY29udGVudF9iYXNlNjQgb3IgY29udGVudF90ZXh0IGlzIHJlcXVpcmVkXCIpLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgcGFja2FnZV9maWxlOiB6dC5wYWNrYWdlRmlsZVNjaGVtYSxcbiAgfSksXG59IGFzIGNvbnN0XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMocm91dGVTcGVjKShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3Qge1xuICAgIGZpbGVfcGF0aCxcbiAgICBjb250ZW50X21pbWV0eXBlOiBwcm92aWRlZENvbnRlbnRNaW1ldHlwZSxcbiAgICBjb250ZW50X2Jhc2U2NCxcbiAgICBjb250ZW50X3RleHQsXG4gICAgaXNfcmVsZWFzZV90YXJiYWxsLFxuICAgIG5wbV9wYWNrX291dHB1dCxcbiAgfSA9IHJlcS5qc29uQm9keVxuXG4gIGlmIChpc19yZWxlYXNlX3RhcmJhbGwgJiYgIW5wbV9wYWNrX291dHB1dCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm1pc3Npbmdfb3B0aW9uc1wiLFxuICAgICAgbWVzc2FnZTogXCJucG1fcGFja19vdXRwdXQgaXMgcmVxdWlyZWQgZm9yIHJlbGVhc2UgdGFyYmFsbHNcIixcbiAgICB9KVxuICB9XG5cbiAgaWYgKCFpc19yZWxlYXNlX3RhcmJhbGwgJiYgbnBtX3BhY2tfb3V0cHV0KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiaW52YWxpZF9vcHRpb25zXCIsXG4gICAgICBtZXNzYWdlOiBcIm5wbV9wYWNrX291dHB1dCBpcyBvbmx5IHZhbGlkIGZvciByZWxlYXNlIHRhcmJhbGxzXCIsXG4gICAgfSlcbiAgfVxuXG4gIGxldCBwYWNrYWdlUmVsZWFzZUlkID0gcmVxLmpzb25Cb2R5LnBhY2thZ2VfcmVsZWFzZV9pZFxuXG4gIGlmICghcGFja2FnZVJlbGVhc2VJZCAmJiByZXEuanNvbkJvZHkucGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbikge1xuICAgIGNvbnN0IGZvdW5kUGFja2FnZVJlbGVhc2VJZCA9IGF3YWl0IGZpbmRQYWNrYWdlUmVsZWFzZUlkKFxuICAgICAgcmVxLmpzb25Cb2R5LnBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24sXG4gICAgICBjdHgsXG4gICAgKVxuICAgIGlmIChmb3VuZFBhY2thZ2VSZWxlYXNlSWQpIHtcbiAgICAgIHBhY2thZ2VSZWxlYXNlSWQgPSBmb3VuZFBhY2thZ2VSZWxlYXNlSWRcbiAgICB9XG4gIH1cblxuICBpZiAoIXBhY2thZ2VSZWxlYXNlSWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gVmVyaWZ5IHRoZSBwYWNrYWdlIHJlbGVhc2UgZXhpc3RzXG4gIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgIChwcikgPT4gcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZUlkLFxuICApXG5cbiAgaWYgKCFwYWNrYWdlUmVsZWFzZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBEZXRlcm1pbmUgY29udGVudCBtaW1ldHlwZVxuICBjb25zdCBjb250ZW50TWltZXR5cGUgPVxuICAgIHByb3ZpZGVkQ29udGVudE1pbWV0eXBlIHx8XG4gICAgKGZpbGVfcGF0aC5lbmRzV2l0aChcIi50c1wiKSB8fCBmaWxlX3BhdGguZW5kc1dpdGgoXCIudHN4XCIpXG4gICAgICA/IFwidGV4dC90eXBlc2NyaXB0XCJcbiAgICAgIDogbnVsbCkgfHxcbiAgICAoZmlsZV9wYXRoLmVuZHNXaXRoKFwiLmpzXCIpID8gXCJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0XCIgOiBudWxsKSB8fFxuICAgIChmaWxlX3BhdGguZW5kc1dpdGgoXCIuanNvblwiKSA/IFwiYXBwbGljYXRpb24vanNvblwiIDogbnVsbCkgfHxcbiAgICAoZmlsZV9wYXRoLmVuZHNXaXRoKFwiLm1kXCIpID8gXCJ0ZXh0L21hcmtkb3duXCIgOiBudWxsKSB8fFxuICAgIChmaWxlX3BhdGguZW5kc1dpdGgoXCIuaHRtbFwiKSA/IFwidGV4dC9odG1sXCIgOiBudWxsKSB8fFxuICAgIChmaWxlX3BhdGguZW5kc1dpdGgoXCIuY3NzXCIpID8gXCJ0ZXh0L2Nzc1wiIDogbnVsbCkgfHxcbiAgICBcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiXG5cbiAgLy8gQ3JlYXRlIHRoZSBwYWNrYWdlIGZpbGVcbiAgY29uc3QgbmV3UGFja2FnZUZpbGUgPSB7XG4gICAgcGFja2FnZV9maWxlX2lkOiBjcnlwdG8ucmFuZG9tVVVJRCgpLFxuICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcGFja2FnZVJlbGVhc2VJZCxcbiAgICBmaWxlX3BhdGgsXG4gICAgY29udGVudF90ZXh0OlxuICAgICAgY29udGVudF90ZXh0IHx8XG4gICAgICAoY29udGVudF9iYXNlNjRcbiAgICAgICAgPyBCdWZmZXIuZnJvbShjb250ZW50X2Jhc2U2NCwgXCJiYXNlNjRcIikudG9TdHJpbmcoKVxuICAgICAgICA6IG51bGwpLFxuICAgIGNvbnRlbnRfbWltZXR5cGU6IGNvbnRlbnRNaW1ldHlwZSxcbiAgICBpc19kaXJlY3Rvcnk6IGZhbHNlLFxuICAgIGlzX3JlbGVhc2VfdGFyYmFsbDogaXNfcmVsZWFzZV90YXJiYWxsIHx8IGZhbHNlLFxuICAgIG5wbV9wYWNrX291dHB1dDogbnBtX3BhY2tfb3V0cHV0IHx8IG51bGwsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICB9XG5cbiAgLy8gQWRkIHRvIHRoZSB0ZXN0IGRhdGFiYXNlXG4gIGN0eC5kYi5hZGRQYWNrYWdlRmlsZShuZXdQYWNrYWdlRmlsZSlcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICAgIHBhY2thZ2VfZmlsZTogbmV3UGFja2FnZUZpbGUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBmaW5kUGFja2FnZVJlbGVhc2VJZCB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcGFja2FnZV9yZWxlYXNlL2ZpbmQtcGFja2FnZS1yZWxlYXNlLWlkXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogelxuICAgIC5vYmplY3Qoe1xuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBmaWxlX3BhdGg6IHouc3RyaW5nKCksXG4gICAgfSlcbiAgICAucmVmaW5lKCh2KSA9PiB7XG4gICAgICBpZiAodi5wYWNrYWdlX3JlbGVhc2VfaWQpIHJldHVybiB0cnVlXG4gICAgICBpZiAodi5wYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uKSByZXR1cm4gdHJ1ZVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSwgXCJNdXN0IHNwZWNpZnkgZWl0aGVyIHBhY2thZ2VfcmVsZWFzZV9pZCBvciBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uXCIpXG4gICAgLnJlZmluZSgodikgPT4ge1xuICAgICAgaWYgKHYucGFja2FnZV9yZWxlYXNlX2lkICYmIHYucGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbikgcmV0dXJuIGZhbHNlXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0sIFwiQ2Fubm90IHNwZWNpZnkgYm90aCBwYWNrYWdlX3JlbGVhc2VfaWQgYW5kIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb25cIiksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBmaWxlX3BhdGggfSA9IHJlcS5qc29uQm9keVxuXG4gIGxldCBwYWNrYWdlUmVsZWFzZUlkID0gcmVxLmpzb25Cb2R5LnBhY2thZ2VfcmVsZWFzZV9pZFxuXG4gIGlmICghcGFja2FnZVJlbGVhc2VJZCAmJiByZXEuanNvbkJvZHkucGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbikge1xuICAgIGNvbnN0IGZvdW5kUGFja2FnZVJlbGVhc2VJZCA9IGF3YWl0IGZpbmRQYWNrYWdlUmVsZWFzZUlkKFxuICAgICAgcmVxLmpzb25Cb2R5LnBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24sXG4gICAgICBjdHgsXG4gICAgKVxuICAgIGlmIChmb3VuZFBhY2thZ2VSZWxlYXNlSWQpIHtcbiAgICAgIHBhY2thZ2VSZWxlYXNlSWQgPSBmb3VuZFBhY2thZ2VSZWxlYXNlSWRcbiAgICB9XG4gIH1cblxuICBpZiAoIXBhY2thZ2VSZWxlYXNlSWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gR2V0IHRoZSBwYWNrYWdlIHJlbGVhc2UgdG8gY2hlY2sgcGVybWlzc2lvbnNcbiAgY29uc3QgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgKHByKSA9PiBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlSWQsXG4gIClcblxuICBpZiAoIXBhY2thZ2VSZWxlYXNlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIEdldCB0aGUgcGFja2FnZSB0byBjaGVjayBwZXJtaXNzaW9uc1xuICBjb25zdCBleGlzdGluZ3BhY2thZ2UgPSBjdHguZGIucGFja2FnZXMuZmluZChcbiAgICAocCkgPT4gcC5wYWNrYWdlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX2lkLFxuICApXG5cbiAgaWYgKCFleGlzdGluZ3BhY2thZ2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiB1c2VyIGhhcyBwZXJtaXNzaW9uIHRvIGRlbGV0ZSB0aGUgZmlsZVxuICBpZiAoZXhpc3RpbmdwYWNrYWdlLmNyZWF0b3JfYWNjb3VudF9pZCAhPT0gY3R4LmF1dGguYWNjb3VudF9pZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAzLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImZvcmJpZGRlblwiLFxuICAgICAgbWVzc2FnZTogXCJZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGRlbGV0ZSBmaWxlcyBpbiB0aGlzIHBhY2thZ2VcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gRmluZCB0aGUgZmlsZVxuICBjb25zdCBwYWNrYWdlRmlsZSA9IGN0eC5kYi5wYWNrYWdlRmlsZXMuZmluZChcbiAgICAoZikgPT5cbiAgICAgIGYuZmlsZV9wYXRoID09PSBmaWxlX3BhdGggJiYgZi5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlSWQsXG4gIClcblxuICBpZiAoIXBhY2thZ2VGaWxlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiZmlsZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBmaWxlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBEZWxldGUgdGhlIGZpbGUgdXNpbmcgZGVsZXRlUGFja2FnZUZpbGUgbWV0aG9kXG4gIGNvbnN0IGRlbGV0ZWQgPSBjdHguZGIuZGVsZXRlUGFja2FnZUZpbGUocGFja2FnZUZpbGUucGFja2FnZV9maWxlX2lkKVxuXG4gIGlmICghZGVsZXRlZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNTAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImZpbGVfZGVsZXRpb25fZmFpbGVkXCIsXG4gICAgICBtZXNzYWdlOiBcIkZhaWxlZCB0byBkZWxldGUgcGFja2FnZSBmaWxlXCIsXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IE5vdEZvdW5kRXJyb3IgfSBmcm9tIFwid2ludGVyc3BlYy9taWRkbGV3YXJlXCJcbmltcG9ydCAqIGFzIFpUIGZyb20gXCIuLi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgbm9ybWFsaXplUHJvamVjdEZpbGVQYXRoIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL3V0aWxzL25vcm1hbGl6ZVByb2plY3RGaWxlUGF0aFwiXG5leHBvcnQgY29uc3QgZ2V0UGFja2FnZUZpbGVJZEZyb21GaWxlRGVzY3JpcHRvciA9IGFzeW5jIChcbiAgZGVzY3JpcHRvcjpcbiAgICB8IHsgcGFja2FnZV9maWxlX2lkOiBzdHJpbmcgfVxuICAgIHwgeyBwYWNrYWdlX3JlbGVhc2VfaWQ6IHN0cmluZzsgZmlsZV9wYXRoOiBzdHJpbmcgfVxuICAgIHwgeyBwYWNrYWdlX2lkOiBzdHJpbmc7IHZlcnNpb24/OiBzdHJpbmc7IGZpbGVfcGF0aDogc3RyaW5nIH1cbiAgICB8IHsgcGFja2FnZV9uYW1lOiBzdHJpbmc7IHZlcnNpb24/OiBzdHJpbmc7IGZpbGVfcGF0aDogc3RyaW5nIH1cbiAgICB8IHsgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbjogc3RyaW5nOyBmaWxlX3BhdGg6IHN0cmluZyB9LFxuICBjdHg6IHsgZGI6IGFueSB9LFxuKTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcbiAgaWYgKFwicGFja2FnZV9maWxlX2lkXCIgaW4gZGVzY3JpcHRvcikge1xuICAgIGNvbnN0IHBhY2thZ2VGaWxlID0gY3R4LmRiLnBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKHBmOiBaVC5QYWNrYWdlRmlsZSkgPT4gcGYucGFja2FnZV9maWxlX2lkID09PSBkZXNjcmlwdG9yLnBhY2thZ2VfZmlsZV9pZCxcbiAgICApXG5cbiAgICBpZiAoIXBhY2thZ2VGaWxlKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihcIlBhY2thZ2UgZmlsZSBub3QgZm91bmRcIilcbiAgICB9XG5cbiAgICByZXR1cm4gZGVzY3JpcHRvci5wYWNrYWdlX2ZpbGVfaWRcbiAgfVxuXG4gIGlmIChcInBhY2thZ2VfcmVsZWFzZV9pZFwiIGluIGRlc2NyaXB0b3IpIHtcbiAgICBjb25zdCB7IHBhY2thZ2VfcmVsZWFzZV9pZCwgZmlsZV9wYXRoIH0gPSBkZXNjcmlwdG9yXG4gICAgY29uc3QgcGFja2FnZUZpbGUgPSBjdHguZGIucGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAocGY6IFpULlBhY2thZ2VGaWxlKSA9PlxuICAgICAgICBwZi5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VfcmVsZWFzZV9pZCAmJlxuICAgICAgICBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGgocGYuZmlsZV9wYXRoKSA9PT1cbiAgICAgICAgICBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGgoZmlsZV9wYXRoKSxcbiAgICApXG5cbiAgICBpZiAoIXBhY2thZ2VGaWxlKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihcIlBhY2thZ2UgZmlsZSBub3QgZm91bmRcIilcbiAgICB9XG5cbiAgICByZXR1cm4gcGFja2FnZUZpbGUucGFja2FnZV9maWxlX2lkXG4gIH1cblxuICBpZiAoXCJwYWNrYWdlX2lkXCIgaW4gZGVzY3JpcHRvcikge1xuICAgIGNvbnN0IHsgcGFja2FnZV9pZCwgdmVyc2lvbiwgZmlsZV9wYXRoIH0gPSBkZXNjcmlwdG9yXG5cbiAgICAvLyBWZXJpZnkgcGFja2FnZSBleGlzdHNcbiAgICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXMuZmluZChcbiAgICAgIChwOiBaVC5QYWNrYWdlKSA9PiBwLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VfaWQsXG4gICAgKVxuICAgIGlmICghcGtnKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihcIlBhY2thZ2Ugbm90IGZvdW5kXCIpXG4gICAgfVxuXG4gICAgLy8gRmluZCB0aGUgcGFja2FnZSByZWxlYXNlXG4gICAgbGV0IHBhY2thZ2VSZWxlYXNlXG4gICAgaWYgKHZlcnNpb24pIHtcbiAgICAgIHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAocHI6IFpULlBhY2thZ2VSZWxlYXNlKSA9PlxuICAgICAgICAgIHByLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VfaWQgJiYgcHIudmVyc2lvbiA9PT0gdmVyc2lvbixcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAgIChwcjogWlQuUGFja2FnZVJlbGVhc2UpID0+IHByLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VfaWQgJiYgcHIuaXNfbGF0ZXN0LFxuICAgICAgKVxuICAgIH1cblxuICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHtcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKFwiUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZFwiKVxuICAgIH1cblxuICAgIC8vIEZpbmQgdGhlIGZpbGVcbiAgICBjb25zdCBwYWNrYWdlRmlsZSA9IGN0eC5kYi5wYWNrYWdlRmlsZXMuZmluZChcbiAgICAgIChwZjogWlQuUGFja2FnZUZpbGUpID0+XG4gICAgICAgIHBmLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkICYmXG4gICAgICAgIG5vcm1hbGl6ZVByb2plY3RGaWxlUGF0aChwZi5maWxlX3BhdGgpID09PVxuICAgICAgICAgIG5vcm1hbGl6ZVByb2plY3RGaWxlUGF0aChmaWxlX3BhdGgpLFxuICAgIClcblxuICAgIGlmICghcGFja2FnZUZpbGUpIHtcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKFwiUGFja2FnZSBmaWxlIG5vdCBmb3VuZFwiKVxuICAgIH1cblxuICAgIHJldHVybiBwYWNrYWdlRmlsZS5wYWNrYWdlX2ZpbGVfaWRcbiAgfVxuXG4gIGlmIChcInBhY2thZ2VfbmFtZVwiIGluIGRlc2NyaXB0b3IpIHtcbiAgICBjb25zdCB7IHBhY2thZ2VfbmFtZSwgdmVyc2lvbiwgZmlsZV9wYXRoIH0gPSBkZXNjcmlwdG9yXG5cbiAgICAvLyBGaW5kIHRoZSBwYWNrYWdlIGZpcnN0XG4gICAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHA6IFpULlBhY2thZ2UpID0+IHAubmFtZSA9PT0gcGFja2FnZV9uYW1lKVxuICAgIGlmICghcGtnKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihgUGFja2FnZSBub3QgZm91bmQ6ICR7cGFja2FnZV9uYW1lfWApXG4gICAgfVxuXG4gICAgLy8gRmluZCB0aGUgcGFja2FnZSByZWxlYXNlXG4gICAgbGV0IHBhY2thZ2VSZWxlYXNlXG4gICAgaWYgKHZlcnNpb24pIHtcbiAgICAgIHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAocHI6IFpULlBhY2thZ2VSZWxlYXNlKSA9PlxuICAgICAgICAgIHByLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIHByLnZlcnNpb24gPT09IHZlcnNpb24sXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAocHI6IFpULlBhY2thZ2VSZWxlYXNlKSA9PlxuICAgICAgICAgIHByLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIHByLmlzX2xhdGVzdCxcbiAgICAgIClcbiAgICB9XG5cbiAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIilcbiAgICB9XG5cbiAgICAvLyBGaW5kIHRoZSBmaWxlXG4gICAgY29uc3QgcGFja2FnZUZpbGUgPSBjdHguZGIucGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAocGY6IFpULlBhY2thZ2VGaWxlKSA9PlxuICAgICAgICBwZi5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCAmJlxuICAgICAgICBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGgocGYuZmlsZV9wYXRoKSA9PT1cbiAgICAgICAgICBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGgoZmlsZV9wYXRoKSxcbiAgICApXG5cbiAgICBpZiAoIXBhY2thZ2VGaWxlKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihcIlBhY2thZ2UgZmlsZSBub3QgZm91bmRcIilcbiAgICB9XG5cbiAgICByZXR1cm4gcGFja2FnZUZpbGUucGFja2FnZV9maWxlX2lkXG4gIH1cblxuICBpZiAoXCJwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uXCIgaW4gZGVzY3JpcHRvcikge1xuICAgIGNvbnN0IHsgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbiwgZmlsZV9wYXRoIH0gPSBkZXNjcmlwdG9yXG4gICAgY29uc3QgcGFja2FnZU5hbWUgPSBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uLnNwbGl0KFwiQFwiKVsxXVxuICAgIGNvbnN0IHZlcnNpb24gPSBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uLnNwbGl0KFwiQFwiKVsyXVxuXG4gICAgLy8gRmluZCB0aGUgcGFja2FnZVxuICAgIGNvbnN0IHBrZyA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKChwOiBaVC5QYWNrYWdlKSA9PiBwLm5hbWUgPT09IHBhY2thZ2VOYW1lKVxuICAgIGlmICghcGtnKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihgUGFja2FnZSBub3QgZm91bmQ6ICR7cGFja2FnZU5hbWV9YClcbiAgICB9XG5cbiAgICAvLyBGaW5kIHRoZSBwYWNrYWdlIHJlbGVhc2VcbiAgICBsZXQgcGFja2FnZVJlbGVhc2VcbiAgICBpZiAoIXZlcnNpb24gfHwgdmVyc2lvbiA9PT0gXCJsYXRlc3RcIikge1xuICAgICAgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAgIChwcjogWlQuUGFja2FnZVJlbGVhc2UpID0+XG4gICAgICAgICAgcHIucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQgJiYgcHIuaXNfbGF0ZXN0LFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBwYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgICAgKHByOiBaVC5QYWNrYWdlUmVsZWFzZSkgPT5cbiAgICAgICAgICBwci5wYWNrYWdlX2lkID09PSBwa2cucGFja2FnZV9pZCAmJiBwci52ZXJzaW9uID09PSB2ZXJzaW9uLFxuICAgICAgKVxuICAgIH1cblxuICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHtcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKFxuICAgICAgICBgUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZCBmb3IgdmVyc2lvbjogJHt2ZXJzaW9uIHx8IFwibGF0ZXN0XCJ9YCxcbiAgICAgIClcbiAgICB9XG5cbiAgICAvLyBGaW5kIHRoZSBmaWxlXG4gICAgY29uc3QgcGFja2FnZUZpbGUgPSBjdHguZGIucGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAocGY6IFpULlBhY2thZ2VGaWxlKSA9PlxuICAgICAgICBwZi5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCAmJlxuICAgICAgICBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGgocGYuZmlsZV9wYXRoKSA9PT1cbiAgICAgICAgICBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGgoZmlsZV9wYXRoKSxcbiAgICApXG5cbiAgICBpZiAoIXBhY2thZ2VGaWxlKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihgUGFja2FnZSBmaWxlIG5vdCBmb3VuZDogJHtmaWxlX3BhdGh9YClcbiAgICB9XG5cbiAgICByZXR1cm4gcGFja2FnZUZpbGUucGFja2FnZV9maWxlX2lkXG4gIH1cblxuICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihcIkludmFsaWQgcGFja2FnZSBmaWxlIGRlc2NyaXB0b3JcIilcbn1cbiIsICJjb25zdCBSRVNUUklDVEVEX0RJUlMgPSBbXCIvbm9kZV9tb2R1bGVzL1wiLCBcIi9kaXN0L1wiLCBcIi8uZ2l0L1wiXVxuXG4vKipcbiAqIEEgbm9ybWFsaXplZCBwcm9qZWN0IHBhdGggYWx3YXlzIHN0YXJ0cyB3aXRoIFwiLi9cIiBhbmQgbmV2ZXIgZW5kcyB3aXRoIGEgc2xhc2guXG4gKiBJdCBoYXMgbm8gYmFja3dhcmRzIHNsYXNoZXMgYW5kIG5vIGRvdWJsZSBzbGFzaGVzLiBJdCBkb2VzIG5vdCBnbyB0byBwYXJlbnRcbiAqIGRpcmVjdG9yaWVzLiBJdCBpcyBub3QgYSBkaXJlY3RvcnkgKG11c3QgaGF2ZSBhIGZpbGUgZXh0ZW5zaW9uKVxuICpcbiAqIEdPT0Q6XG4gKiAgLSBzcmMvaW5kZXgudHNcbiAqICAtIFJFQURNRS5tZFxuICpcbiAqIEJBRDpcbiAqIC0gLi9SRUFETUUubWRcbiAqIC0gLi9zcmMvaW5kZXgudHNcbiAqIC0gc3JjXFxpbmRleC50c1xuICogLSAuLi9SRUFETUUubWRcbiAqIC0gLi9zcmMvXG4gKiAtIC4vc3JjXG4gKlxuICogQWRkaXRpb25hbGx5LCB0aHJvdyBvbiBkaXJlY3RvcmllcyB0aGF0IHNob3VsZCBuZXZlciBiZSBpbmNsdWRlZCwgZS5nLlxuICogLSBub2RlX21vZHVsZXNcbiAqIC0gZGlzdFxuICogLSAuZ2l0XG4gKi9cbmV4cG9ydCBjb25zdCBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGhBbmRWYWxpZGF0ZSA9IChyYXdQYXRoOiBzdHJpbmcpID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGgocmF3UGF0aClcblxuICBpZiAobm9ybWFsaXplZFBhdGguaW5jbHVkZXMoXCIuLi9cIikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBcIkludmFsaWQgcHJvamVjdCBmaWxlIHBhdGguIFBhcmVudCBkaXJlY3RvcmllcyBhcmUgbm90IGFsbG93ZWQuXCIsXG4gICAgKVxuICB9XG5cbiAgaWYgKFJFU1RSSUNURURfRElSUy5zb21lKChkaXIpID0+IG5vcm1hbGl6ZWRQYXRoLmluY2x1ZGVzKGRpcikpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEludmFsaWQgcHJvamVjdCBmaWxlIHBhdGguIFJlc3RyaWN0ZWQgZGlyZWN0b3JpZXMgKCR7UkVTVFJJQ1RFRF9ESVJTLm1hcChcbiAgICAgICAgKHJkKSA9PiByZC5zbGljZSgxLCAtMSksXG4gICAgICApLmpvaW4oXCIsIFwiKX0pIGFyZSBub3QgYWxsb3dlZC5gLFxuICAgIClcbiAgfVxuXG4gIGlmICghbm9ybWFsaXplZFBhdGguaW5jbHVkZXMoXCIuXCIpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEludmFsaWQgcHJvamVjdCBmaWxlIHBhdGguIE11c3QgaGF2ZSBhIGZpbGUgZXh0ZW5zaW9uLiBHaXZlbiBcIiR7cmF3UGF0aH1cImAsXG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIG5vcm1hbGl6ZWRQYXRoXG59XG5cbmV4cG9ydCBjb25zdCBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGggPSAocmF3UGF0aDogc3RyaW5nKSA9PiB7XG4gIGxldCBub3JtYWxpemVkUGF0aCA9IHJhd1BhdGgudHJpbSgpIC8vIFJlbW92ZSBsZWFkaW5nL3RyYWlsaW5nIHdoaXRlc3BhY2VcbiAgbm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVkUGF0aC5yZXBsYWNlKC9cXC8rL2csIFwiL1wiKSAvLyBSZXBsYWNlIG11bHRpcGxlIGNvbnNlY3V0aXZlIHNsYXNoZXMgd2l0aCBhIHNpbmdsZSBzbGFzaFxuICBub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZWRQYXRoLnJlcGxhY2UoL15cXC5cXC8vLCBcIlwiKSAvLyBSZW1vdmUgbGVhZGluZyBcIi4vXCJcbiAgbm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVkUGF0aC5yZXBsYWNlKC9cXC8kLywgXCJcIikgLy8gUmVtb3ZlIHRyYWlsaW5nIHNsYXNoXG4gIG5vcm1hbGl6ZWRQYXRoID0gbm9ybWFsaXplZFBhdGgucmVwbGFjZSgvXFxcXC9nLCBcIi9cIikgLy8gUmVwbGFjZSBiYWNrc2xhc2hlcyB3aXRoIGZvcndhcmQgc2xhc2hlc1xuICBub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZWRQYXRoLnJlcGxhY2UoL15cXC8vLCBcIlwiKSAvLyBSZW1vdmUgbGVhZGluZyBcIi9cIlxuXG4gIHJldHVybiBub3JtYWxpemVkUGF0aFxufVxuIiwgImltcG9ydCB7IGdldFBhY2thZ2VGaWxlSWRGcm9tRmlsZURlc2NyaXB0b3IgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3BhY2thZ2VfZmlsZS9nZXQtcGFja2FnZS1maWxlLWlkLWZyb20tZmlsZS1kZXNjcmlwdG9yXCJcbmltcG9ydCB7IGZpbmRQYWNrYWdlUmVsZWFzZUlkIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9wYWNrYWdlX3JlbGVhc2UvZmluZC1wYWNrYWdlLXJlbGVhc2UtaWRcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmNvbnN0IHJvdXRlU3BlYyA9IHtcbiAgbWV0aG9kczogW1wiR0VUXCIsIFwiUE9TVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIHF1ZXJ5UGFyYW1zOiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBwYWNrYWdlX2ZpbGVfaWQ6IHouc3RyaW5nKCksXG4gICAgfSlcbiAgICAub3IoXG4gICAgICB6Lm9iamVjdCh7XG4gICAgICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb246IHouc3RyaW5nKCksXG4gICAgICAgIGZpbGVfcGF0aDogei5zdHJpbmcoKSxcbiAgICAgIH0pLFxuICAgICksXG4gIGpzb25SZXNwb25zZTogei5hbnkoKSwgLy8gVXNpbmcgYW55IGJlY2F1c2Ugd2UncmUgcmV0dXJuaW5nIGJpbmFyeSBkYXRhXG59IGFzIGNvbnN0XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMocm91dGVTcGVjKShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgbGV0IHBhY2thZ2VGaWxlSWQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBjb25zdCBwYXJhbXMgPSByZXEucXVlcnlcblxuICBpZiAoXCJwYWNrYWdlX2ZpbGVfaWRcIiBpbiBwYXJhbXMpIHtcbiAgICBwYWNrYWdlRmlsZUlkID0gcGFyYW1zLnBhY2thZ2VfZmlsZV9pZFxuICB9IGVsc2UgaWYgKFwicGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvblwiIGluIHBhcmFtcykge1xuICAgIGNvbnN0IHsgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbiwgZmlsZV9wYXRoIH0gPSBwYXJhbXNcblxuICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlSWQgPSBhd2FpdCBmaW5kUGFja2FnZVJlbGVhc2VJZChcbiAgICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24sXG4gICAgICBjdHgsXG4gICAgKVxuXG4gICAgaWYgKCFwYWNrYWdlUmVsZWFzZUlkKSB7XG4gICAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgICBlcnJvcl9jb2RlOiBcIm5vdF9mb3VuZFwiLFxuICAgICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHBhY2thZ2VGaWxlSWQgPSBhd2FpdCBnZXRQYWNrYWdlRmlsZUlkRnJvbUZpbGVEZXNjcmlwdG9yKFxuICAgICAgICB7XG4gICAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwYWNrYWdlUmVsZWFzZUlkLFxuICAgICAgICAgIGZpbGVfcGF0aDogZmlsZV9wYXRoLFxuICAgICAgICB9LFxuICAgICAgICBjdHgsXG4gICAgICApXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwibm90X2ZvdW5kXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBmaWxlIG5vdCBmb3VuZFwiLFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBpZiAoIXBhY2thZ2VGaWxlSWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJiYWRfcmVxdWVzdFwiLFxuICAgICAgbWVzc2FnZTogXCJDb3VsZCBub3QgZGV0ZXJtaW5lIHBhY2thZ2VfZmlsZV9pZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBwYWNrYWdlRmlsZSA9IGN0eC5kYi5wYWNrYWdlRmlsZXMuZmluZChcbiAgICAocGYpID0+IHBmLnBhY2thZ2VfZmlsZV9pZCA9PT0gcGFja2FnZUZpbGVJZCxcbiAgKVxuXG4gIGlmICghcGFja2FnZUZpbGUpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBmaWxlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBjb250ZW50VHlwZSA9IFwidGV4dC9wbGFpblwiXG5cbiAgY29uc3QgaGVhZGVycyA9IHtcbiAgICBcIkNvbnRlbnQtVHlwZVwiOiBjb250ZW50VHlwZSxcbiAgICBcIkNvbnRlbnQtRGlzcG9zaXRpb25cIjogYGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiJHtwYWNrYWdlRmlsZS5maWxlX3BhdGguc3BsaXQoXCIvXCIpLnBvcCgpfVwiYCxcbiAgICBcIkNhY2hlLUNvbnRyb2xcIjogXCJwdWJsaWMsIG1heC1hZ2U9ODY0MDAsIHN0YWxlLXdoaWxlLXJldmFsaWRhdGU9NjA0ODAwXCIsXG4gICAgRXhwaXJlczogbmV3IERhdGUoRGF0ZS5ub3coKSArIDg2NDAwMDAwKS50b1VUQ1N0cmluZygpLFxuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXNwb25zZShwYWNrYWdlRmlsZS5jb250ZW50X3RleHQsIHsgaGVhZGVycyB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCAqIGFzIFpUIGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IGdldFBhY2thZ2VGaWxlSWRGcm9tRmlsZURlc2NyaXB0b3IgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3BhY2thZ2VfZmlsZS9nZXQtcGFja2FnZS1maWxlLWlkLWZyb20tZmlsZS1kZXNjcmlwdG9yXCJcblxuY29uc3Qgcm91dGVTcGVjID0ge1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAganNvbkJvZHk6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIHBhY2thZ2VfZmlsZV9pZDogei5zdHJpbmcoKSxcbiAgICB9KVxuICAgIC5vcihcbiAgICAgIHoub2JqZWN0KHtcbiAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLFxuICAgICAgICBmaWxlX3BhdGg6IHouc3RyaW5nKCksXG4gICAgICB9KSxcbiAgICApXG4gICAgLm9yKFxuICAgICAgei5vYmplY3Qoe1xuICAgICAgICBwYWNrYWdlX2lkOiB6LnN0cmluZygpLFxuICAgICAgICB2ZXJzaW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICAgIGZpbGVfcGF0aDogei5zdHJpbmcoKSxcbiAgICAgIH0pLFxuICAgIClcbiAgICAub3IoXG4gICAgICB6Lm9iamVjdCh7XG4gICAgICAgIHBhY2thZ2VfbmFtZTogei5zdHJpbmcoKSxcbiAgICAgICAgdmVyc2lvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICBmaWxlX3BhdGg6IHouc3RyaW5nKCksXG4gICAgICB9KSxcbiAgICApXG4gICAgLm9yKFxuICAgICAgei5vYmplY3Qoe1xuICAgICAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uOiB6LnN0cmluZygpLFxuICAgICAgICBmaWxlX3BhdGg6IHouc3RyaW5nKCksXG4gICAgICB9KSxcbiAgICApLFxuICBqc29uUmVzcG9uc2U6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICAgIHBhY2thZ2VfZmlsZTogWlQucGFja2FnZUZpbGVTY2hlbWEub3B0aW9uYWwoKSxcbiAgICB9KVxuICAgIC5vcihaVC5lcnJvclJlc3BvbnNlU2NoZW1hKSxcbn0gYXMgY29uc3RcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyhyb3V0ZVNwZWMpKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCBwYWNrYWdlRmlsZUlkID0gYXdhaXQgZ2V0UGFja2FnZUZpbGVJZEZyb21GaWxlRGVzY3JpcHRvcihcbiAgICByZXEuanNvbkJvZHksXG4gICAgY3R4LFxuICApXG5cbiAgY29uc3QgcGFja2FnZUZpbGUgPSBjdHguZGIucGFja2FnZUZpbGVzLmZpbmQoXG4gICAgKHBmOiBaVC5QYWNrYWdlRmlsZSkgPT4gcGYucGFja2FnZV9maWxlX2lkID09PSBwYWNrYWdlRmlsZUlkLFxuICApXG5cbiAgaWYgKCFwYWNrYWdlRmlsZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfZmlsZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBmaWxlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICAgIHBhY2thZ2VfZmlsZToge1xuICAgICAgLi4ucGFja2FnZUZpbGUsXG4gICAgICBjcmVhdGVkX2F0OiBwYWNrYWdlRmlsZS5jcmVhdGVkX2F0LnRvU3RyaW5nKCksXG4gICAgfSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgKiBhcyBaVCBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyBmaW5kUGFja2FnZVJlbGVhc2VJZCB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcGFja2FnZV9yZWxlYXNlL2ZpbmQtcGFja2FnZS1yZWxlYXNlLWlkXCJcblxuY29uc3Qgcm91dGVTcGVjID0ge1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAganNvbkJvZHk6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKSxcbiAgICB9KVxuICAgIC5vcihcbiAgICAgIHoub2JqZWN0KHtcbiAgICAgICAgcGFja2FnZV9uYW1lOiB6LnN0cmluZygpLFxuICAgICAgICB1c2VfbGF0ZXN0X3ZlcnNpb246IHoubGl0ZXJhbCh0cnVlKSxcbiAgICAgIH0pLFxuICAgIClcbiAgICAub3IoXG4gICAgICB6Lm9iamVjdCh7XG4gICAgICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb246IHouc3RyaW5nKCksXG4gICAgICB9KSxcbiAgICApLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgcGFja2FnZV9maWxlczogei5hcnJheShaVC5wYWNrYWdlRmlsZVNjaGVtYSksXG4gIH0pLFxufSBhcyBjb25zdFxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHJvdXRlU3BlYykoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHBhY2thZ2VSZWxlYXNlSWQgPSBhd2FpdCBmaW5kUGFja2FnZVJlbGVhc2VJZChyZXEuanNvbkJvZHksIGN0eClcblxuICBpZiAoIXBhY2thZ2VSZWxlYXNlSWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gT21pdCB0aGUgY29udGVudF90ZXh0IGZpZWxkXG4gIGNvbnN0IHBhY2thZ2VGaWxlcyA9IGN0eC5kYi5wYWNrYWdlRmlsZXNcbiAgICAuZmlsdGVyKChmaWxlKSA9PiBmaWxlLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2VJZClcbiAgICAubWFwKCh7IGNvbnRlbnRfdGV4dCwgLi4uZmlsZSB9KSA9PiAoe1xuICAgICAgLi4uZmlsZSxcbiAgICB9KSlcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICAgIHBhY2thZ2VfZmlsZXM6IHBhY2thZ2VGaWxlcyxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0ICogYXMgWlQgZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgY29uc3QgcHVibGljTWFwUGFja2FnZVJlbGVhc2UgPSAoXG4gIGludGVybmFsX3BhY2thZ2VfcmVsZWFzZTogWlQuUGFja2FnZVJlbGVhc2UsXG4pOiBaVC5QYWNrYWdlUmVsZWFzZSA9PiB7XG4gIHJldHVybiB7XG4gICAgLi4uaW50ZXJuYWxfcGFja2FnZV9yZWxlYXNlLFxuICAgIGNyZWF0ZWRfYXQ6IGludGVybmFsX3BhY2thZ2VfcmVsZWFzZS5jcmVhdGVkX2F0LFxuICB9XG59XG4iLCAiaW1wb3J0IHsgcGFja2FnZVJlbGVhc2VTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgcHVibGljTWFwUGFja2FnZVJlbGVhc2UgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3B1YmxpYy1tYXBwaW5nL3B1YmxpYy1tYXAtcGFja2FnZS1yZWxlYXNlXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICB2ZXJzaW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgaXNfbGF0ZXN0OiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIGNvbW1pdF9zaGE6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgcGFja2FnZV9yZWxlYXNlOiBwYWNrYWdlUmVsZWFzZVNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgbGV0IHtcbiAgICBwYWNrYWdlX2lkLFxuICAgIGlzX2xhdGVzdCA9IHRydWUsXG4gICAgdmVyc2lvbixcbiAgICBjb21taXRfc2hhLFxuICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24sXG4gIH0gPSByZXEuanNvbkJvZHlcblxuICBpZiAocGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbiAmJiAhdmVyc2lvbiAmJiAhcGFja2FnZV9pZCkge1xuICAgIGNvbnN0IFtwYWNrYWdlTmFtZSwgcGFyc2VkVmVyc2lvbl0gPSBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uLnNwbGl0KFwiQFwiKVxuICAgIGNvbnN0IHBrZyA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKChwKSA9PiBwLm5hbWUgPT09IHBhY2thZ2VOYW1lKVxuXG4gICAgaWYgKCFwa2cpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogYFBhY2thZ2Ugbm90IGZvdW5kOiAke3BhY2thZ2VOYW1lfWAsXG4gICAgICB9KVxuICAgIH1cblxuICAgIHBhY2thZ2VfaWQgPSBwa2cucGFja2FnZV9pZFxuICAgIHZlcnNpb24gPSBwYXJzZWRWZXJzaW9uXG4gIH1cblxuICBpZiAoIXBhY2thZ2VfaWQgfHwgIXZlcnNpb24pIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJtaXNzaW5nX29wdGlvbnNcIixcbiAgICAgIG1lc3NhZ2U6IFwicGFja2FnZV9pZCBhbmQgdmVyc2lvbiBhcmUgcmVxdWlyZWRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdmVyc2lvbiBhbHJlYWR5IGV4aXN0c1xuICBjb25zdCBleGlzdGluZ1JlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgKHByKSA9PiBwci5wYWNrYWdlX2lkID09PSBwYWNrYWdlX2lkICYmIHByLnZlcnNpb24gPT09IHZlcnNpb24sXG4gIClcblxuICBpZiAoZXhpc3RpbmdSZWxlYXNlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwidmVyc2lvbl9hbHJlYWR5X2V4aXN0c1wiLFxuICAgICAgbWVzc2FnZTogYFZlcnNpb24gJHt2ZXJzaW9ufSBhbHJlYWR5IGV4aXN0cyBmb3IgdGhpcyBwYWNrYWdlYCxcbiAgICB9KVxuICB9XG5cbiAgLy8gVXBkYXRlIHByZXZpb3VzIGxhdGVzdCBpZiBuZWVkZWRcbiAgaWYgKGlzX2xhdGVzdCkge1xuICAgIGN0eC5kYi5wYWNrYWdlUmVsZWFzZXNcbiAgICAgIC5maWx0ZXIoKHByKSA9PiBwci5wYWNrYWdlX2lkID09PSBwYWNrYWdlX2lkICYmIHByLmlzX2xhdGVzdClcbiAgICAgIC5mb3JFYWNoKChwcikgPT4gKHByLmlzX2xhdGVzdCA9IGZhbHNlKSlcbiAgfVxuXG4gIGNvbnN0IG5ld1BhY2thZ2VSZWxlYXNlID0gY3R4LmRiLmFkZFBhY2thZ2VSZWxlYXNlKHtcbiAgICBwYWNrYWdlX2lkLFxuICAgIGlzX2xhdGVzdCxcbiAgICB2ZXJzaW9uLFxuICAgIGlzX2xvY2tlZDogZmFsc2UsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGNvbW1pdF9zaGE6IGNvbW1pdF9zaGEgPz8gbnVsbCxcbiAgfSlcblxuICAvLyBVcGRhdGUgdGhlIHBhY2thZ2UncyBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkIGlmIHRoaXMgaXMgdGhlIGxhdGVzdCByZWxlYXNlXG4gIGlmIChpc19sYXRlc3QpIHtcbiAgICBjdHguZGIudXBkYXRlUGFja2FnZShwYWNrYWdlX2lkLCB7XG4gICAgICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkOiBuZXdQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICBsYXRlc3RfdmVyc2lvbjogdmVyc2lvbixcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBwYWNrYWdlX3JlbGVhc2U6IHB1YmxpY01hcFBhY2thZ2VSZWxlYXNlKG5ld1BhY2thZ2VSZWxlYXNlKSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0ICogYXMgenQgZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgcHVibGljTWFwUGFja2FnZVJlbGVhc2UgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3B1YmxpYy1tYXBwaW5nL3B1YmxpYy1tYXAtcGFja2FnZS1yZWxlYXNlXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHBhY2thZ2VfbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBpc19sYXRlc3Q6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgcGFja2FnZV9yZWxlYXNlOiB6dC5wYWNrYWdlUmVsZWFzZVNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3Qge1xuICAgIHBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uLFxuICAgIHBhY2thZ2VfbmFtZSxcbiAgICBwYWNrYWdlX2lkLFxuICAgIGlzX2xhdGVzdCxcbiAgfSA9IHJlcS5qc29uQm9keVxuXG4gIC8vIEhhbmRsZSBwYWNrYWdlX25hbWUgd2l0aCBpc19sYXRlc3RcbiAgaWYgKHBhY2thZ2VfbmFtZSAmJiBpc19sYXRlc3QgPT09IHRydWUpIHtcbiAgICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXMuZmluZCgoeCkgPT4geC5uYW1lID09PSBwYWNrYWdlX25hbWUpXG5cbiAgICBpZiAoIXBrZykge1xuICAgICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgICBtZXNzYWdlOiBcIlBhY2thZ2Ugbm90IGZvdW5kXCIsXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIFNvcnQgcmVsZWFzZXMgYnkgdmVyc2lvbiB0byBmaW5kIHRoZSBsYXRlc3Qgb25lXG4gICAgY29uc3QgcGFja2FnZVJlbGVhc2VzID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlc1xuICAgICAgLmZpbHRlcigoeCkgPT4geC5wYWNrYWdlX2lkID09PSBwa2cucGFja2FnZV9pZClcbiAgICAgIC5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgbmV3IERhdGUoYi5jcmVhdGVkX2F0KS5nZXRUaW1lKCkgLSBuZXcgRGF0ZShhLmNyZWF0ZWRfYXQpLmdldFRpbWUoKVxuICAgICAgICApXG4gICAgICB9KVxuXG4gICAgaWYgKHBhY2thZ2VSZWxlYXNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgICBtZXNzYWdlOiBcIk5vIHJlbGVhc2VzIGZvdW5kIGZvciB0aGlzIHBhY2thZ2VcIixcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICAgIG9rOiB0cnVlLFxuICAgICAgcGFja2FnZV9yZWxlYXNlOiBwdWJsaWNNYXBQYWNrYWdlUmVsZWFzZShwYWNrYWdlUmVsZWFzZXNbMF0pLFxuICAgIH0pXG4gIH1cblxuICAvLyBIYW5kbGUgcGFja2FnZV9pZCB3aXRoIGlzX2xhdGVzdFxuICBpZiAocGFja2FnZV9pZCAmJiBpc19sYXRlc3QgPT09IHRydWUpIHtcbiAgICAvLyBTb3J0IHJlbGVhc2VzIGJ5IHZlcnNpb24gdG8gZmluZCB0aGUgbGF0ZXN0IG9uZVxuICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlcyA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXNcbiAgICAgIC5maWx0ZXIoKHgpID0+IHgucGFja2FnZV9pZCA9PT0gcGFja2FnZV9pZClcbiAgICAgIC5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgbmV3IERhdGUoYi5jcmVhdGVkX2F0KS5nZXRUaW1lKCkgLSBuZXcgRGF0ZShhLmNyZWF0ZWRfYXQpLmdldFRpbWUoKVxuICAgICAgICApXG4gICAgICB9KVxuXG4gICAgaWYgKHBhY2thZ2VSZWxlYXNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgICBtZXNzYWdlOiBcIk5vIHJlbGVhc2VzIGZvdW5kIGZvciB0aGlzIHBhY2thZ2VcIixcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICAgIG9rOiB0cnVlLFxuICAgICAgcGFja2FnZV9yZWxlYXNlOiBwdWJsaWNNYXBQYWNrYWdlUmVsZWFzZShwYWNrYWdlUmVsZWFzZXNbMF0pLFxuICAgIH0pXG4gIH1cblxuICBpZiAocGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbiAmJiAhcGFja2FnZV9yZWxlYXNlX2lkKSB7XG4gICAgY29uc3QgW3BhY2thZ2VOYW1lLCBwYXJzZWRWZXJzaW9uXSA9IHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24uc3BsaXQoXCJAXCIpXG4gICAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHgpID0+IHgubmFtZSA9PT0gcGFja2FnZU5hbWUpXG4gICAgY29uc3QgcGtnUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZCgoeCkgPT4ge1xuICAgICAgcmV0dXJuIHgudmVyc2lvbiA9PSBwYXJzZWRWZXJzaW9uICYmIHgucGFja2FnZV9pZCA9PSBwa2c/LnBhY2thZ2VfaWRcbiAgICB9KVxuXG4gICAgaWYgKCFwa2dSZWxlYXNlKSB7XG4gICAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIsXG4gICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiBjdHguanNvbih7XG4gICAgICBvazogdHJ1ZSxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZTogcHVibGljTWFwUGFja2FnZVJlbGVhc2UocGtnUmVsZWFzZSksXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGZvdW5kUmVsZWFzZSA9XG4gICAgcGFja2FnZV9yZWxlYXNlX2lkICYmIGN0eC5kYi5nZXRQYWNrYWdlUmVsZWFzZUJ5SWQocGFja2FnZV9yZWxlYXNlX2lkKVxuXG4gIGlmICghZm91bmRSZWxlYXNlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgcGFja2FnZV9yZWxlYXNlOiBwdWJsaWNNYXBQYWNrYWdlUmVsZWFzZShmb3VuZFJlbGVhc2UpLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyBwYWNrYWdlUmVsZWFzZVNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyBwdWJsaWNNYXBQYWNrYWdlUmVsZWFzZSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcHVibGljLW1hcHBpbmcvcHVibGljLW1hcC1wYWNrYWdlLXJlbGVhc2VcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIGpzb25Cb2R5OiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBwYWNrYWdlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBwYWNrYWdlX25hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIGlzX2xhdGVzdDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICAgIHZlcnNpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIGNvbW1pdF9zaGE6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICB9KVxuICAgIC5yZWZpbmUoKHsgcGFja2FnZV9pZCwgcGFja2FnZV9uYW1lIH0pID0+IHtcbiAgICAgIGlmIChwYWNrYWdlX2lkICYmIHBhY2thZ2VfbmFtZSkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSwgXCJwYWNrYWdlX2lkIGFuZCBwYWNrYWdlX25hbWUgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZVwiKVxuICAgIC5yZWZpbmUoKHsgcGFja2FnZV9pZCwgcGFja2FnZV9uYW1lIH0pID0+IHtcbiAgICAgIGlmICghcGFja2FnZV9pZCAmJiAhcGFja2FnZV9uYW1lKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9LCBcInBhY2thZ2VfaWQgb3IgcGFja2FnZV9uYW1lIGlzIHJlcXVpcmVkXCIpLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgcGFja2FnZV9yZWxlYXNlczogei5hcnJheShwYWNrYWdlUmVsZWFzZVNjaGVtYSksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgcGFja2FnZV9pZCwgcGFja2FnZV9uYW1lLCBpc19sYXRlc3QsIHZlcnNpb24sIGNvbW1pdF9zaGEgfSA9XG4gICAgcmVxLmpzb25Cb2R5XG5cbiAgaWYgKCFwYWNrYWdlX2lkICYmICFwYWNrYWdlX25hbWUgJiYgIWlzX2xhdGVzdCAmJiAhdmVyc2lvbiAmJiAhY29tbWl0X3NoYSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImludmFsaWRfcXVlcnlcIixcbiAgICAgIG1lc3NhZ2U6XG4gICAgICAgIFwiQXQgbGVhc3Qgb25lIG9mIHBhY2thZ2VfaWQsIHBhY2thZ2VfbmFtZSwgaXNfbGF0ZXN0LCB2ZXJzaW9uIG9yIGNvbW1pdF9zaGEgaXMgcmVxdWlyZWRcIixcbiAgICB9KVxuICB9XG5cbiAgbGV0IHJlbGVhc2VzID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlc1xuXG4gIC8vIEFwcGx5IGZpbHRlcnNcbiAgaWYgKHBhY2thZ2VfaWQpIHtcbiAgICByZWxlYXNlcyA9IHJlbGVhc2VzLmZpbHRlcigocHIpID0+IHByLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VfaWQpXG4gIH1cblxuICBpZiAocGFja2FnZV9uYW1lKSB7XG4gICAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHApID0+IHAubmFtZSA9PT0gcGFja2FnZV9uYW1lKVxuICAgIGlmIChwa2cpIHtcbiAgICAgIHJlbGVhc2VzID0gcmVsZWFzZXMuZmlsdGVyKChwcikgPT4gcHIucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJlbGVhc2VzID0gW11cbiAgICB9XG4gIH1cblxuICBpZiAoaXNfbGF0ZXN0ICE9PSB1bmRlZmluZWQpIHtcbiAgICByZWxlYXNlcyA9IHJlbGVhc2VzLmZpbHRlcigocHIpID0+IHByLmlzX2xhdGVzdCA9PT0gaXNfbGF0ZXN0KVxuICB9XG5cbiAgaWYgKHZlcnNpb24pIHtcbiAgICByZWxlYXNlcyA9IHJlbGVhc2VzLmZpbHRlcigocHIpID0+IHByLnZlcnNpb24gPT09IHZlcnNpb24pXG4gIH1cblxuICBpZiAoY29tbWl0X3NoYSkge1xuICAgIHJlbGVhc2VzID0gcmVsZWFzZXMuZmlsdGVyKChwcikgPT4gcHIuY29tbWl0X3NoYSA9PT0gY29tbWl0X3NoYSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgcGFja2FnZV9yZWxlYXNlczogcmVsZWFzZXMubWFwKChwcikgPT4gcHVibGljTWFwUGFja2FnZVJlbGVhc2UocHIpKSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBpc19sb2NrZWQ6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgaXNfbGF0ZXN0OiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIGxpY2Vuc2U6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3Qge1xuICAgIHBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uLFxuICAgIGlzX2xvY2tlZCxcbiAgICBpc19sYXRlc3QsXG4gICAgbGljZW5zZSxcbiAgfSA9IHJlcS5qc29uQm9keVxuICBsZXQgcmVsZWFzZUlkID0gcGFja2FnZV9yZWxlYXNlX2lkXG5cbiAgLy8gSGFuZGxlIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24gbG9va3VwXG4gIGlmICghcmVsZWFzZUlkICYmIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24pIHtcbiAgICBjb25zdCBbcGFja2FnZU5hbWUsIHZlcnNpb25dID0gcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbi5zcGxpdChcIkBcIilcbiAgICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXMuZmluZCgocCkgPT4gcC5uYW1lID09PSBwYWNrYWdlTmFtZSlcbiAgICBpZiAocGtnKSB7XG4gICAgICBjb25zdCByZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAocHIpID0+IHByLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIHByLnZlcnNpb24gPT09IHZlcnNpb24sXG4gICAgICApXG4gICAgICBpZiAocmVsZWFzZSkge1xuICAgICAgICByZWxlYXNlSWQgPSByZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICghcmVsZWFzZUlkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGRlbHRhID0geyBpc19sb2NrZWQsIGlzX2xhdGVzdCwgbGljZW5zZSB9XG4gIGlmIChcbiAgICBPYmplY3Qua2V5cyhkZWx0YSkuZmlsdGVyKFxuICAgICAgKGspID0+IGRlbHRhW2sgYXMga2V5b2YgdHlwZW9mIGRlbHRhXSAhPT0gdW5kZWZpbmVkLFxuICAgICkubGVuZ3RoID09PSAwXG4gICkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm5vX2ZpZWxkc19wcm92aWRlZFwiLFxuICAgICAgbWVzc2FnZTogXCJObyBmaWVsZHMgcHJvdmlkZWQgdG8gdXBkYXRlXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgKHByKSA9PiBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHJlbGVhc2VJZCxcbiAgKVxuICBpZiAoIXJlbGVhc2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ3JlYXRlIHVwZGF0ZWQgcmVsZWFzZSBvYmplY3RcbiAgY29uc3QgdXBkYXRlZFJlbGVhc2UgPSB7XG4gICAgLi4ucmVsZWFzZSxcbiAgICAuLi4oaXNfbG9ja2VkICE9PSB1bmRlZmluZWQgJiYgeyBpc19sb2NrZWQgfSksXG4gICAgLi4uKGlzX2xhdGVzdCAhPT0gdW5kZWZpbmVkICYmIHsgaXNfbGF0ZXN0IH0pLFxuICAgIC4uLihsaWNlbnNlICE9PSB1bmRlZmluZWQgJiYgeyBsaWNlbnNlIH0pLFxuICB9XG5cbiAgLy8gSGFuZGxlIGlzX2xhdGVzdCB1cGRhdGVzIGF0b21pY2FsbHlcbiAgaWYgKGlzX2xhdGVzdCAhPT0gdW5kZWZpbmVkICYmIGlzX2xhdGVzdCkge1xuICAgIC8vIEdldCBhbGwgcmVsZWFzZXMgZm9yIHRoaXMgcGFja2FnZSB0aGF0IGFyZSBjdXJyZW50bHkgbWFya2VkIGFzIGxhdGVzdFxuICAgIGNvbnN0IG90aGVyTGF0ZXN0UmVsZWFzZXMgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbHRlcihcbiAgICAgIChwcikgPT5cbiAgICAgICAgcHIucGFja2FnZV9pZCA9PT0gcmVsZWFzZS5wYWNrYWdlX2lkICYmXG4gICAgICAgIHByLnBhY2thZ2VfcmVsZWFzZV9pZCAhPT0gcmVsZWFzZUlkICYmXG4gICAgICAgIHByLmlzX2xhdGVzdCxcbiAgICApXG5cbiAgICAvLyBVcGRhdGUgYWxsIHJlbGVhc2VzIGluIGEgc2luZ2xlIG9wZXJhdGlvblxuICAgIGZvciAoY29uc3QgbGF0ZXN0UmVsZWFzZSBvZiBvdGhlckxhdGVzdFJlbGVhc2VzKSB7XG4gICAgICBjdHguZGIudXBkYXRlUGFja2FnZVJlbGVhc2Uoe1xuICAgICAgICAuLi5sYXRlc3RSZWxlYXNlLFxuICAgICAgICBpc19sYXRlc3Q6IGZhbHNlLFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICAvLyBVcGRhdGUgdGhlIHRhcmdldCByZWxlYXNlXG4gIGN0eC5kYi51cGRhdGVQYWNrYWdlUmVsZWFzZSh1cGRhdGVkUmVsZWFzZSlcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBwYWNrYWdlX2lkOiB6LnN0cmluZygpLFxuICAgIH0pXG4gICAgLm9yKHoub2JqZWN0KHsgbmFtZTogei5zdHJpbmcoKSB9KSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgbGV0IHBhY2thZ2VJZDogc3RyaW5nXG5cbiAgLy8gR2V0IHBhY2thZ2UgSUQgZWl0aGVyIGRpcmVjdGx5IG9yIGJ5IG5hbWVcbiAgaWYgKFwicGFja2FnZV9pZFwiIGluIHJlcS5qc29uQm9keSkge1xuICAgIGNvbnN0IGJvZHkgPSByZXEuanNvbkJvZHlcbiAgICBwYWNrYWdlSWQgPSBib2R5LnBhY2thZ2VfaWRcbiAgfSBlbHNlIHtcbiAgICAvLyBJZiBuYW1lIGlzIHByb3ZpZGVkLCBsb29rIHVwIHRoZSBwYWNrYWdlX2lkXG4gICAgY29uc3QgYm9keSA9IHJlcS5qc29uQm9keVxuICAgIGNvbnN0IHBhY2thZ2VEYXRhID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHBrZykgPT4gcGtnLm5hbWUgPT09IGJvZHkubmFtZSlcblxuICAgIGlmICghcGFja2FnZURhdGEpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIG5vdCBmb3VuZFwiLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBwYWNrYWdlSWQgPSBwYWNrYWdlRGF0YS5wYWNrYWdlX2lkXG4gIH1cblxuICAvLyBDaGVjayBpZiBwYWNrYWdlIGV4aXN0cyAoZXh0cmEgY2hlY2sgZm9yIElELWJhc2VkIGxvb2t1cClcbiAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHApID0+IHAucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkKVxuXG4gIGlmICghcGtnKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgYWxyZWFkeSBzdGFycmVkXG4gIGNvbnN0IGV4aXN0aW5nID0gY3R4LmRiLmFjY291bnRQYWNrYWdlcy5maW5kKFxuICAgIChhcCkgPT5cbiAgICAgIGFwLmFjY291bnRfaWQgPT09IGN0eC5hdXRoLmFjY291bnRfaWQgJiYgYXAucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkLFxuICApXG5cbiAgaWYgKGV4aXN0aW5nPy5pc19zdGFycmVkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiYWxyZWFkeV9zdGFycmVkXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBoYXZlIGFscmVhZHkgc3RhcnJlZCB0aGlzIHBhY2thZ2VcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gVXBkYXRlIHRoZSBwYWNrYWdlJ3Mgc3RhciBjb3VudFxuICBwa2cuc3Rhcl9jb3VudCA9IChwa2cuc3Rhcl9jb3VudCB8fCAwKSArIDFcblxuICBpZiAoZXhpc3RpbmcpIHtcbiAgICAvLyBJZiByZWNvcmQgZXhpc3RzIGJ1dCBpc19zdGFycmVkIGlzIGZhbHNlLCB1cGRhdGUgdG8gaXNfc3RhcnJlZD10cnVlXG4gICAgZXhpc3RpbmcuaXNfc3RhcnJlZCA9IHRydWVcbiAgICBleGlzdGluZy51cGRhdGVkX2F0ID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG4gIH0gZWxzZSB7XG4gICAgLy8gQWRkIHN0YXIgYnkgY3JlYXRpbmcgYSBuZXcgYWNjb3VudF9wYWNrYWdlIHJlY29yZFxuICAgIGNvbnN0IG5ld0FjY291bnRQYWNrYWdlID0ge1xuICAgICAgYWNjb3VudF9pZDogY3R4LmF1dGguYWNjb3VudF9pZCxcbiAgICAgIHBhY2thZ2VfaWQ6IHBhY2thZ2VJZCxcbiAgICAgIGlzX3N0YXJyZWQ6IHRydWUsXG4gICAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB1cGRhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgfVxuICAgIGN0eC5kYi5hZGRBY2NvdW50UGFja2FnZShuZXdBY2NvdW50UGFja2FnZSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB0eXBlICogYXMgenQgZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgY29uc3QgcHVibGljTWFwUGFja2FnZSA9IChpbnRlcm5hbFBhY2thZ2U6IHtcbiAgcGFja2FnZV9pZDogc3RyaW5nXG4gIGNyZWF0b3JfYWNjb3VudF9pZDogc3RyaW5nXG4gIG93bmVyX29yZ19pZDogc3RyaW5nXG4gIG93bmVyX2dpdGh1Yl91c2VybmFtZTogc3RyaW5nIHwgbnVsbFxuICBpc19zb3VyY2VfZnJvbV9naXRodWI6IGJvb2xlYW5cbiAgZGVzY3JpcHRpb246IHN0cmluZyB8IG51bGxcbiAgbGF0ZXN0X3ZlcnNpb24/OiBzdHJpbmcgfCBudWxsXG4gIGxhdGVzdF9saWNlbnNlPzogc3RyaW5nIHwgbnVsbFxuICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkPzogc3RyaW5nIHwgbnVsbFxuICBzdGFyX2NvdW50PzogbnVtYmVyIHwgbnVsbFxuICBuYW1lOiBzdHJpbmdcbiAgd2Vic2l0ZTogc3RyaW5nIHwgbnVsbFxuICB1bnNjb3BlZF9uYW1lOiBzdHJpbmdcbiAgdXBkYXRlZF9hdDogc3RyaW5nXG4gIGNyZWF0ZWRfYXQ6IHN0cmluZ1xuICBhaV9kZXNjcmlwdGlvbjogc3RyaW5nIHwgbnVsbFxuICBhaV91c2FnZV9pbnN0cnVjdGlvbnM6IHN0cmluZyB8IG51bGxcbiAgaXNfc25pcHBldDogYm9vbGVhblxuICBpc19ib2FyZDogYm9vbGVhblxuICBpc19wYWNrYWdlOiBib29sZWFuXG4gIGlzX21vZGVsOiBib29sZWFuXG4gIGlzX2Zvb3RwcmludDogYm9vbGVhblxuICBpc19wcml2YXRlOiBib29sZWFuIHwgbnVsbFxuICBpc191bmxpc3RlZDogYm9vbGVhbiB8IG51bGxcbn0pOiB6dC5QYWNrYWdlID0+IHtcbiAgcmV0dXJuIHtcbiAgICAuLi5pbnRlcm5hbFBhY2thZ2UsXG4gICAgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZDpcbiAgICAgIGludGVybmFsUGFja2FnZS5sYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkID8/IG51bGwsXG4gICAgbGF0ZXN0X3ZlcnNpb246IGludGVybmFsUGFja2FnZS5sYXRlc3RfdmVyc2lvbiA/PyBudWxsLFxuICAgIGxpY2Vuc2U6IGludGVybmFsUGFja2FnZS5sYXRlc3RfbGljZW5zZSA/PyBudWxsLFxuICAgIHdlYnNpdGU6IGludGVybmFsUGFja2FnZS53ZWJzaXRlID8/IG51bGwsXG4gICAgc3Rhcl9jb3VudDogaW50ZXJuYWxQYWNrYWdlLnN0YXJfY291bnQgPz8gMCxcbiAgICBjcmVhdGVkX2F0OiBpbnRlcm5hbFBhY2thZ2UuY3JlYXRlZF9hdCxcbiAgICB1cGRhdGVkX2F0OiBpbnRlcm5hbFBhY2thZ2UudXBkYXRlZF9hdCxcbiAgICBpc19wcml2YXRlOiBpbnRlcm5hbFBhY2thZ2UuaXNfcHJpdmF0ZSA/PyBmYWxzZSxcbiAgICBpc19wdWJsaWM6IGludGVybmFsUGFja2FnZS5pc19wcml2YXRlID09PSB0cnVlID8gZmFsc2UgOiB0cnVlLFxuICAgIGlzX3VubGlzdGVkOlxuICAgICAgaW50ZXJuYWxQYWNrYWdlLmlzX3ByaXZhdGUgPT09IHRydWVcbiAgICAgICAgPyB0cnVlXG4gICAgICAgIDogKGludGVybmFsUGFja2FnZS5pc191bmxpc3RlZCA/PyBmYWxzZSksXG4gIH1cbn1cbiIsICJpbXBvcnQgeyBwYWNrYWdlU2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHB1YmxpY01hcFBhY2thZ2UgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3B1YmxpYy1tYXBwaW5nL3B1YmxpYy1tYXAtcGFja2FnZVwiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBuYW1lOiB6XG4gICAgICAuc3RyaW5nKClcbiAgICAgIC5yZWdleChcbiAgICAgICAgL15bQGEtekEtWjAtOS1fXFwvXSskLyxcbiAgICAgICAgXCJQYWNrYWdlIG5hbWUgY2FuIG9ubHkgY29udGFpbiBsZXR0ZXJzLCBudW1iZXJzLCBoeXBoZW5zLCB1bmRlcnNjb3JlcywgYW5kIGZvcndhcmQgc2xhc2hlc1wiLFxuICAgICAgKVxuICAgICAgLnRyYW5zZm9ybSgobmFtZSkgPT4gbmFtZS5yZXBsYWNlKC9eQC8sIFwiXCIpKSxcbiAgICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGlzX3ByaXZhdGU6IHouYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVmYXVsdChmYWxzZSksXG4gICAgaXNfdW5saXN0ZWQ6IHouYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVmYXVsdChmYWxzZSksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBwYWNrYWdlOiBwYWNrYWdlU2NoZW1hLm9wdGlvbmFsKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgbmFtZSwgZGVzY3JpcHRpb24sIGlzX3ByaXZhdGUsIGlzX3VubGlzdGVkIH0gPSByZXEuanNvbkJvZHlcblxuICBjb25zdCBleGlzdGluZ1BhY2thZ2UgPSBjdHguZGIucGFja2FnZXMuZmluZCgocGtnKSA9PiBwa2cubmFtZSA9PT0gbmFtZSlcblxuICBpZiAoZXhpc3RpbmdQYWNrYWdlKSB7XG4gICAgdGhyb3cgY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX2FscmVhZHlfZXhpc3RzXCIsXG4gICAgICBtZXNzYWdlOiBcIkEgcGFja2FnZSB3aXRoIHRoaXMgbmFtZSBhbHJlYWR5IGV4aXN0c1wiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCB1bnNjb3BlZF9uYW1lID0gbmFtZS5zcGxpdChcIi9cIilbMV1cblxuICBjb25zdCBuZXdQYWNrYWdlID0gY3R4LmRiLmFkZFBhY2thZ2Uoe1xuICAgIG5hbWUsXG4gICAgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uID8/IG51bGwsXG4gICAgY3JlYXRvcl9hY2NvdW50X2lkOiBjdHguYXV0aC5hY2NvdW50X2lkLFxuICAgIG93bmVyX29yZ19pZDogY3R4LmF1dGgucGVyc29uYWxfb3JnX2lkLFxuICAgIG93bmVyX2dpdGh1Yl91c2VybmFtZTogY3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lLFxuICAgIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQ6IG51bGwsXG4gICAgbGF0ZXN0X3ZlcnNpb246IG51bGwsXG4gICAgbGljZW5zZTogbnVsbCxcbiAgICB3ZWJzaXRlOiBudWxsLFxuICAgIGlzX3NvdXJjZV9mcm9tX2dpdGh1YjogZmFsc2UsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB1bnNjb3BlZF9uYW1lLFxuICAgIHN0YXJfY291bnQ6IDAsXG4gICAgYWlfZGVzY3JpcHRpb246IFwicGxhY2Vob2xkZXIgYWkgZGVzY3JpcHRpb25cIixcbiAgICBpc19wcml2YXRlOiBpc19wcml2YXRlID8/IGZhbHNlLFxuICAgIGlzX3B1YmxpYzogaXNfcHJpdmF0ZSA9PT0gdHJ1ZSA/IGZhbHNlIDogdHJ1ZSxcbiAgICBpc191bmxpc3RlZDogaXNfcHJpdmF0ZSA9PT0gdHJ1ZSA/IHRydWUgOiAoaXNfdW5saXN0ZWQgPz8gZmFsc2UpLFxuICAgIGFpX3VzYWdlX2luc3RydWN0aW9uczogXCJwbGFjZWhvbGRlciBhaSB1c2FnZSBpbnN0cnVjdGlvbnNcIixcbiAgfSlcblxuICBpZiAoIW5ld1BhY2thZ2UpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gY3JlYXRlIHBhY2thZ2VcIilcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgcGFja2FnZTogcHVibGljTWFwUGFja2FnZShuZXdQYWNrYWdlKSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgcGFja2FnZV9pZCB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgY29uc3QgcGFja2FnZUluZGV4ID0gY3R4LmRiLnBhY2thZ2VzLmZpbmRJbmRleChcbiAgICAocCkgPT4gcC5wYWNrYWdlX2lkID09PSBwYWNrYWdlX2lkLFxuICApXG5cbiAgaWYgKHBhY2thZ2VJbmRleCA9PT0gLTEpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXNbcGFja2FnZUluZGV4XVxuXG4gIGlmIChwa2cub3duZXJfZ2l0aHViX3VzZXJuYW1lICE9PSBjdHguYXV0aC5naXRodWJfdXNlcm5hbWUpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMywge1xuICAgICAgZXJyb3JfY29kZTogXCJmb3JiaWRkZW5cIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byBkZWxldGUgdGhpcyBwYWNrYWdlXCIsXG4gICAgfSlcbiAgfVxuXG4gIGN0eC5kYi5wYWNrYWdlcy5zcGxpY2UocGFja2FnZUluZGV4LCAxKVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHBhY2thZ2VTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgcHVibGljTWFwUGFja2FnZSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcHVibGljLW1hcHBpbmcvcHVibGljLW1hcC1wYWNrYWdlXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogelxuICAgIC5vYmplY3Qoe1xuICAgICAgLy8gQWNjZXB0IGVpdGhlciBwYWNrYWdlX2lkIG9yIHBhY2thZ2VfbmFtZSB0byBmaW5kIHRoZSBwYWNrYWdlIHRvIGZvcmtcbiAgICAgIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIHBhY2thZ2VfbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgLy8gT3B0aW9uYWwgcGFyYW1ldGVycyB0byBjdXN0b21pemUgdGhlIGZvcmtlZCBwYWNrYWdlXG4gICAgICBpc19wcml2YXRlOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlZmF1bHQoZmFsc2UpLFxuICAgICAgaXNfdW5saXN0ZWQ6IHouYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVmYXVsdChmYWxzZSksXG4gICAgfSlcbiAgICAucmVmaW5lKFxuICAgICAgKGRhdGEpID0+XG4gICAgICAgIGRhdGEucGFja2FnZV9pZCAhPT0gdW5kZWZpbmVkIHx8IGRhdGEucGFja2FnZV9uYW1lICE9PSB1bmRlZmluZWQsXG4gICAgICB7XG4gICAgICAgIG1lc3NhZ2U6IFwiRWl0aGVyIHBhY2thZ2VfaWQgb3IgcGFja2FnZV9uYW1lIG11c3QgYmUgcHJvdmlkZWRcIixcbiAgICAgIH0sXG4gICAgKVxuICAgIC50cmFuc2Zvcm0oKGRhdGEpID0+ICh7XG4gICAgICAuLi5kYXRhLFxuICAgICAgLy8gSWYgdGhlIHBhY2thZ2UgaXMgcHJpdmF0ZSwgaXQgc2hvdWxkIGJlIHVubGlzdGVkXG4gICAgICBpc191bmxpc3RlZDogZGF0YS5pc19wcml2YXRlID8gdHJ1ZSA6IGRhdGEuaXNfdW5saXN0ZWQsXG4gICAgfSkpLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBwYWNrYWdlOiBwYWNrYWdlU2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IHBhY2thZ2VfaWQsIHBhY2thZ2VfbmFtZSwgaXNfcHJpdmF0ZSwgaXNfdW5saXN0ZWQgfSA9IHJlcS5qc29uQm9keVxuXG4gIC8vIEZpbmQgdGhlIHBhY2thZ2UgdG8gZm9ya1xuICBsZXQgc291cmNlUGFja2FnZSA9IG51bGxcbiAgaWYgKHBhY2thZ2VfaWQpIHtcbiAgICBzb3VyY2VQYWNrYWdlID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHBrZykgPT4gcGtnLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VfaWQpXG4gIH0gZWxzZSBpZiAocGFja2FnZV9uYW1lKSB7XG4gICAgc291cmNlUGFja2FnZSA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKChwa2cpID0+IHBrZy5uYW1lID09PSBwYWNrYWdlX25hbWUpXG4gIH1cblxuICBpZiAoIXNvdXJjZVBhY2thZ2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJUaGUgcGFja2FnZSB0byBmb3JrIHdhcyBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgaWYgKHNvdXJjZVBhY2thZ2UuY3JlYXRvcl9hY2NvdW50X2lkID09PSBjdHguYXV0aC5hY2NvdW50X2lkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiY2Fubm90X2Zvcmtfb3duX3BhY2thZ2VcIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGNhbm5vdCBmb3JrIHlvdXIgb3duIHBhY2thZ2VcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgZm9yayBhbHJlYWR5IGV4aXN0cyAodXNlciBhbHJlYWR5IGhhcyBhIHBhY2thZ2Ugd2l0aCB0aGUgc2FtZSBuYW1lKVxuICBjb25zdCBmb3JrTmFtZSA9IGAke2N0eC5hdXRoLmdpdGh1Yl91c2VybmFtZX0vJHtzb3VyY2VQYWNrYWdlLnVuc2NvcGVkX25hbWV9YFxuICBjb25zdCBleGlzdGluZ0ZvcmsgPSBjdHguZGIucGFja2FnZXMuZmluZChcbiAgICAocGtnKSA9PlxuICAgICAgcGtnLmNyZWF0b3JfYWNjb3VudF9pZCA9PT0gY3R4LmF1dGguYWNjb3VudF9pZCAmJiBwa2cubmFtZSA9PT0gZm9ya05hbWUsXG4gIClcblxuICBpZiAoZXhpc3RpbmdGb3JrKSB7XG4gICAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICAgIHBhY2thZ2U6IHB1YmxpY01hcFBhY2thZ2UoZXhpc3RpbmdGb3JrKSxcbiAgICB9KVxuICB9XG5cbiAgLy8gRmluZCB0aGUgbGF0ZXN0IHJlbGVhc2Ugb2YgdGhlIHNvdXJjZSBwYWNrYWdlXG4gIGNvbnN0IHNvdXJjZVBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgIChyZWxlYXNlKSA9PlxuICAgICAgcmVsZWFzZS5wYWNrYWdlX2lkID09PSBzb3VyY2VQYWNrYWdlLnBhY2thZ2VfaWQgJiZcbiAgICAgIHJlbGVhc2UuaXNfbGF0ZXN0ID09PSB0cnVlLFxuICApXG5cbiAgaWYgKCFzb3VyY2VQYWNrYWdlUmVsZWFzZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInNvdXJjZV9wYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlRoZSBzb3VyY2UgcGFja2FnZSBkb2VzIG5vdCBoYXZlIGFueSByZWxlYXNlcyB0byBmb3JrXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIEdldCB0aGUgZmlsZXMgZnJvbSB0aGUgc291cmNlIHBhY2thZ2UgcmVsZWFzZVxuICBjb25zdCBzb3VyY2VGaWxlcyA9IGN0eC5kYi5wYWNrYWdlRmlsZXMuZmlsdGVyKFxuICAgIChmaWxlKSA9PlxuICAgICAgZmlsZS5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHNvdXJjZVBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgKVxuXG4gIGlmIChzb3VyY2VGaWxlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzb3VyY2VfcGFja2FnZV9maWxlc19ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiVGhlIHNvdXJjZSBwYWNrYWdlIHJlbGVhc2UgZG9lcyBub3QgaGF2ZSBhbnkgZmlsZXMgdG8gZm9ya1wiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDcmVhdGUgdGhlIGZvcmtlZCBwYWNrYWdlXG4gIGNvbnN0IGZvcmtlZFBhY2thZ2UgPSBjdHguZGIuYWRkUGFja2FnZSh7XG4gICAgbmFtZTogZm9ya05hbWUsXG4gICAgZGVzY3JpcHRpb246IHNvdXJjZVBhY2thZ2UuZGVzY3JpcHRpb24sXG4gICAgY3JlYXRvcl9hY2NvdW50X2lkOiBjdHguYXV0aC5hY2NvdW50X2lkLFxuICAgIG93bmVyX29yZ19pZDogY3R4LmF1dGgucGVyc29uYWxfb3JnX2lkLFxuICAgIG93bmVyX2dpdGh1Yl91c2VybmFtZTogY3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lLFxuICAgIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQ6IG51bGwsXG4gICAgbGF0ZXN0X3ZlcnNpb246IG51bGwsXG4gICAgbGljZW5zZTogbnVsbCxcbiAgICB3ZWJzaXRlOiBudWxsLFxuICAgIGlzX3NvdXJjZV9mcm9tX2dpdGh1YjogZmFsc2UsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB1bnNjb3BlZF9uYW1lOiBzb3VyY2VQYWNrYWdlLnVuc2NvcGVkX25hbWUsXG4gICAgc3Rhcl9jb3VudDogMCxcbiAgICBhaV9kZXNjcmlwdGlvbjogc291cmNlUGFja2FnZS5haV9kZXNjcmlwdGlvbiB8fCBcImZvcmtlZCBwYWNrYWdlXCIsXG4gICAgaXNfcHJpdmF0ZTogaXNfcHJpdmF0ZSxcbiAgICBpc19wdWJsaWM6ICFpc19wcml2YXRlLFxuICAgIGlzX3VubGlzdGVkLFxuICAgIGFpX3VzYWdlX2luc3RydWN0aW9uczogXCJmb3JrZWQgcGFja2FnZSB1c2FnZVwiLFxuICAgIGlzX2JvYXJkOiBCb29sZWFuKHNvdXJjZVBhY2thZ2UuaXNfYm9hcmQpLFxuICAgIGlzX3BhY2thZ2U6IHRydWUsXG4gICAgaXNfbW9kZWw6IEJvb2xlYW4oc291cmNlUGFja2FnZS5pc19tb2RlbCksXG4gICAgaXNfZm9vdHByaW50OiBCb29sZWFuKHNvdXJjZVBhY2thZ2UuaXNfZm9vdHByaW50KSxcbiAgICBpc19zbmlwcGV0OiBCb29sZWFuKHNvdXJjZVBhY2thZ2UuaXNfc25pcHBldCksXG4gIH0pXG5cbiAgaWYgKCFmb3JrZWRQYWNrYWdlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig1MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiZmFpbGVkX3RvX2NyZWF0ZV9mb3JrZWRfcGFja2FnZVwiLFxuICAgICAgbWVzc2FnZTogXCJGYWlsZWQgdG8gY3JlYXRlIGZvcmtlZCBwYWNrYWdlXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENyZWF0ZSBhIG5ldyBwYWNrYWdlIHJlbGVhc2UgZm9yIHRoZSBmb3JrZWQgcGFja2FnZVxuICBjb25zdCBmb3JrZWRQYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5hZGRQYWNrYWdlUmVsZWFzZSh7XG4gICAgcGFja2FnZV9pZDogZm9ya2VkUGFja2FnZS5wYWNrYWdlX2lkLFxuICAgIHZlcnNpb246IHNvdXJjZVBhY2thZ2VSZWxlYXNlLnZlcnNpb24sXG4gICAgaXNfbG9ja2VkOiBmYWxzZSxcbiAgICBpc19sYXRlc3Q6IHRydWUsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGNvbW1pdF9zaGE6IG51bGwsXG4gICAgbGljZW5zZTogc291cmNlUGFja2FnZVJlbGVhc2UubGljZW5zZSB8fCBudWxsLFxuICB9KVxuXG4gIC8vIFVwZGF0ZSB0aGUgZm9ya2VkIHBhY2thZ2Ugd2l0aCByZWxlYXNlIGluZm9cbiAgZm9ya2VkUGFja2FnZS5sYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkID1cbiAgICBmb3JrZWRQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWRcbiAgZm9ya2VkUGFja2FnZS5sYXRlc3RfdmVyc2lvbiA9IGZvcmtlZFBhY2thZ2VSZWxlYXNlLnZlcnNpb24gfHwgbnVsbFxuXG4gIC8vIENvcHkgYWxsIGZpbGVzIGZyb20gdGhlIHNvdXJjZSBwYWNrYWdlIHJlbGVhc2UgdG8gdGhlIGZvcmtlZCBwYWNrYWdlIHJlbGVhc2VcbiAgZm9yIChjb25zdCBzb3VyY2VGaWxlIG9mIHNvdXJjZUZpbGVzKSB7XG4gICAgY3R4LmRiLmFkZFBhY2thZ2VGaWxlKHtcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogZm9ya2VkUGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgZmlsZV9wYXRoOiBzb3VyY2VGaWxlLmZpbGVfcGF0aCxcbiAgICAgIGNvbnRlbnRfdGV4dDogc291cmNlRmlsZS5jb250ZW50X3RleHQsXG4gICAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgcGFja2FnZTogcHVibGljTWFwUGFja2FnZShmb3JrZWRQYWNrYWdlKSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgcGFja2FnZVNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyBwdWJsaWNNYXBQYWNrYWdlIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9wdWJsaWMtbWFwcGluZy9wdWJsaWMtbWFwLXBhY2thZ2VcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCIsIFwiUE9TVFwiXSxcbiAgYXV0aDogXCJvcHRpb25hbF9zZXNzaW9uXCIsXG4gIGNvbW1vblBhcmFtczogei5vYmplY3Qoe1xuICAgIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBuYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBqc29uQm9keTogei5hbnkoKS5vcHRpb25hbCgpLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgcGFja2FnZTogcGFja2FnZVNjaGVtYVxuICAgICAgLmV4dGVuZCh7XG4gICAgICAgIGlzX3N0YXJyZWQ6IHouYm9vbGVhbigpLFxuICAgICAgfSlcbiAgICAgIC5vcHRpb25hbCgpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IHBhY2thZ2VfaWQsIG5hbWUgfSA9IHJlcS5jb21tb25QYXJhbXNcbiAgY29uc3QgYXV0aCA9IFwiYXV0aFwiIGluIGN0eCAmJiBjdHguYXV0aCA/IGN0eC5hdXRoIDogbnVsbFxuXG4gIGNvbnN0IGZvdW5kUGFja2FnZSA9XG4gICAgKHBhY2thZ2VfaWQgJiYgY3R4LmRiLmdldFBhY2thZ2VCeUlkKHBhY2thZ2VfaWQpKSB8fFxuICAgIGN0eC5kYi5wYWNrYWdlcy5maW5kKChwKSA9PiBwLm5hbWUgPT09IG5hbWUpXG5cbiAgaWYgKCFmb3VuZFBhY2thZ2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogYFBhY2thZ2Ugbm90IGZvdW5kIChzZWFyY2hlZCB1c2luZyAke0pTT04uc3RyaW5naWZ5KHJlcS5jb21tb25QYXJhbXMpfSlgLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICAgIHBhY2thZ2U6IHtcbiAgICAgIC4uLnB1YmxpY01hcFBhY2thZ2UoZm91bmRQYWNrYWdlKSxcbiAgICAgIGlzX3N0YXJyZWQ6IGF1dGhcbiAgICAgICAgPyBjdHguZGIuaGFzU3RhcnJlZChhdXRoLmFjY291bnRfaWQsIGZvdW5kUGFja2FnZS5wYWNrYWdlX2lkKVxuICAgICAgICA6IGZhbHNlLFxuICAgIH0sXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHBhY2thZ2VTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCIsIFwiUE9TVFwiXSxcbiAgYXV0aDogXCJvcHRpb25hbF9zZXNzaW9uXCIsXG4gIGNvbW1vblBhcmFtczogei5vYmplY3Qoe1xuICAgIGNyZWF0b3JfYWNjb3VudF9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIG93bmVyX2dpdGh1Yl91c2VybmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGlzX3dyaXRhYmxlOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIG5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBwYWNrYWdlczogei5hcnJheShwYWNrYWdlU2NoZW1hKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBjcmVhdG9yX2FjY291bnRfaWQsIG93bmVyX2dpdGh1Yl91c2VybmFtZSwgbmFtZSwgaXNfd3JpdGFibGUgfSA9XG4gICAgcmVxLmNvbW1vblBhcmFtc1xuXG4gIGNvbnN0IGF1dGggPSBcImF1dGhcIiBpbiBjdHggJiYgY3R4LmF1dGggPyBjdHguYXV0aCA6IG51bGxcblxuICBpZiAoIWF1dGggJiYgIWlzX3dyaXRhYmxlICYmICFjcmVhdG9yX2FjY291bnRfaWQgJiYgIW93bmVyX2dpdGh1Yl91c2VybmFtZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImludmFsaWRfcmVxdWVzdFwiLFxuICAgICAgbWVzc2FnZTogXCJZb3UgbXVzdCBwcm92aWRlIHNvbWUgZmlsdGVyaW5nIHBhcmFtZXRlcnMgb3IgYmUgbG9nZ2VkIGluXCIsXG4gICAgfSlcbiAgfVxuXG4gIGxldCBwYWNrYWdlcyA9IGN0eC5kYi5wYWNrYWdlc1xuXG4gIC8vIEFwcGx5IGZpbHRlcnNcbiAgaWYgKGNyZWF0b3JfYWNjb3VudF9pZCkge1xuICAgIHBhY2thZ2VzID0gcGFja2FnZXMuZmlsdGVyKFxuICAgICAgKHApID0+IHAuY3JlYXRvcl9hY2NvdW50X2lkID09PSBjcmVhdG9yX2FjY291bnRfaWQsXG4gICAgKVxuICB9XG4gIGlmIChvd25lcl9naXRodWJfdXNlcm5hbWUpIHtcbiAgICBwYWNrYWdlcyA9IHBhY2thZ2VzLmZpbHRlcihcbiAgICAgIChwKSA9PiBwLm93bmVyX2dpdGh1Yl91c2VybmFtZSA9PT0gb3duZXJfZ2l0aHViX3VzZXJuYW1lLFxuICAgIClcbiAgfVxuICBpZiAobmFtZSkge1xuICAgIHBhY2thZ2VzID0gcGFja2FnZXMuZmlsdGVyKChwKSA9PiBwLm5hbWUgPT09IG5hbWUpXG4gIH1cblxuICBpZiAoaXNfd3JpdGFibGUgJiYgYXV0aCkge1xuICAgIHBhY2thZ2VzID0gcGFja2FnZXMuZmlsdGVyKChwKSA9PiBwLm93bmVyX29yZ19pZCA9PT0gYXV0aC5wZXJzb25hbF9vcmdfaWQpXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICAgIHBhY2thZ2VzOiBwYWNrYWdlcy5tYXAoKHApID0+ICh7XG4gICAgICAuLi5wLFxuICAgICAgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZDogcC5sYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkIHx8IG51bGwsXG4gICAgfSkpLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBwYWNrYWdlX2lkOiB6LnN0cmluZygpLFxuICAgIH0pXG4gICAgLm9yKHoub2JqZWN0KHsgbmFtZTogei5zdHJpbmcoKSB9KSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgbGV0IHBhY2thZ2VJZDogc3RyaW5nXG5cbiAgLy8gR2V0IHBhY2thZ2UgSUQgZWl0aGVyIGRpcmVjdGx5IG9yIGJ5IG5hbWVcbiAgaWYgKFwicGFja2FnZV9pZFwiIGluIHJlcS5qc29uQm9keSkge1xuICAgIGNvbnN0IGJvZHkgPSByZXEuanNvbkJvZHlcbiAgICBwYWNrYWdlSWQgPSBib2R5LnBhY2thZ2VfaWRcbiAgfSBlbHNlIHtcbiAgICAvLyBJZiBuYW1lIGlzIHByb3ZpZGVkLCBsb29rIHVwIHRoZSBwYWNrYWdlX2lkXG4gICAgY29uc3QgYm9keSA9IHJlcS5qc29uQm9keVxuICAgIGNvbnN0IHBhY2thZ2VEYXRhID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHBrZykgPT4gcGtnLm5hbWUgPT09IGJvZHkubmFtZSlcblxuICAgIGlmICghcGFja2FnZURhdGEpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIG5vdCBmb3VuZFwiLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBwYWNrYWdlSWQgPSBwYWNrYWdlRGF0YS5wYWNrYWdlX2lkXG4gIH1cblxuICAvLyBDaGVjayBpZiBwYWNrYWdlIGV4aXN0cyAoZXh0cmEgY2hlY2sgZm9yIElELWJhc2VkIGxvb2t1cClcbiAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHApID0+IHAucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkKVxuXG4gIGlmICghcGtnKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgYWxyZWFkeSBzdGFycmVkXG4gIGNvbnN0IGV4aXN0aW5nID0gY3R4LmRiLmFjY291bnRQYWNrYWdlcy5maW5kKFxuICAgIChhcCkgPT5cbiAgICAgIGFwLmFjY291bnRfaWQgPT09IGN0eC5hdXRoLmFjY291bnRfaWQgJiYgYXAucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkLFxuICApXG5cbiAgaWYgKCFleGlzdGluZz8uaXNfc3RhcnJlZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm5vdF9zdGFycmVkXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBoYXZlIG5vdCBzdGFycmVkIHRoaXMgcGFja2FnZVwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBVcGRhdGUgdGhlIHBhY2thZ2UncyBzdGFyIGNvdW50XG4gIHBrZy5zdGFyX2NvdW50ID0gTWF0aC5tYXgoMCwgKHBrZy5zdGFyX2NvdW50IHx8IDApIC0gMSlcblxuICAvLyBSZW1vdmUgc3RhciBieSB1cGRhdGluZyBpc19zdGFycmVkIHRvIGZhbHNlXG4gIGV4aXN0aW5nLmlzX3N0YXJyZWQgPSBmYWxzZVxuICBleGlzdGluZy51cGRhdGVkX2F0ID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgcGFja2FnZVNjaGVtYSB9IGZyb20gXCIuLi8uLi8uLi9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiLi4vLi4vLi4vbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCksXG4gICAgICBuYW1lOiB6XG4gICAgICAgIC5zdHJpbmcoKVxuICAgICAgICAucmVnZXgoXG4gICAgICAgICAgL15bQGEtekEtWjAtOS1fXFwvXSskLyxcbiAgICAgICAgICBcIlBhY2thZ2UgbmFtZSBjYW4gb25seSBjb250YWluIGxldHRlcnMsIG51bWJlcnMsIGh5cGhlbnMsIHVuZGVyc2NvcmVzLCBhbmQgZm9yd2FyZCBzbGFzaGVzXCIsXG4gICAgICAgIClcbiAgICAgICAgLnRyYW5zZm9ybSgobmFtZSkgPT4gbmFtZS5yZXBsYWNlKC9eQC8sIFwiXCIpKVxuICAgICAgICAub3B0aW9uYWwoKSxcbiAgICAgIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICB3ZWJzaXRlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBpc19wcml2YXRlOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgICAgaXNfdW5saXN0ZWQ6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgfSlcbiAgICAudHJhbnNmb3JtKChkYXRhKSA9PiAoe1xuICAgICAgLi4uZGF0YSxcbiAgICAgIGlzX3VubGlzdGVkOiBkYXRhLmlzX3ByaXZhdGUgPyB0cnVlIDogZGF0YS5pc191bmxpc3RlZCxcbiAgICB9KSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBwYWNrYWdlOiBwYWNrYWdlU2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IHBhY2thZ2VfaWQsIG5hbWUsIGRlc2NyaXB0aW9uLCB3ZWJzaXRlLCBpc19wcml2YXRlLCBpc191bmxpc3RlZCB9ID1cbiAgICByZXEuanNvbkJvZHlcblxuICBjb25zdCBwYWNrYWdlSW5kZXggPSBjdHguZGIucGFja2FnZXMuZmluZEluZGV4KFxuICAgIChwKSA9PiBwLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VfaWQsXG4gIClcblxuICBpZiAocGFja2FnZUluZGV4ID09PSAtMSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGV4aXN0aW5nUGFja2FnZSA9IGN0eC5kYi5wYWNrYWdlc1twYWNrYWdlSW5kZXhdXG5cbiAgLy8gQ2hlY2sgaWYgdXNlciBoYXMgcGVybWlzc2lvbiB0byB1cGRhdGUgdGhlIHBhY2thZ2VcbiAgaWYgKGV4aXN0aW5nUGFja2FnZS5jcmVhdG9yX2FjY291bnRfaWQgIT09IGN0eC5hdXRoLmFjY291bnRfaWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMywge1xuICAgICAgZXJyb3JfY29kZTogXCJmb3JiaWRkZW5cIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byB1cGRhdGUgdGhpcyBwYWNrYWdlXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENoZWNrIGZvciBkdXBsaWNhdGUgcGFja2FnZSBuYW1lIGlmIG5hbWUgaXMgYmVpbmcgdXBkYXRlZFxuICBpZiAobmFtZSkge1xuICAgIGNvbnN0IG5ld0Z1bGxOYW1lID0gYCR7Y3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lfS8ke25hbWV9YFxuICAgIGNvbnN0IGR1cGxpY2F0ZVBhY2thZ2UgPSBjdHguZGIucGFja2FnZXMuZmluZChcbiAgICAgIChwKSA9PiBwLm5hbWUgPT09IG5ld0Z1bGxOYW1lICYmIHAucGFja2FnZV9pZCAhPT0gcGFja2FnZV9pZCxcbiAgICApXG4gICAgaWYgKGR1cGxpY2F0ZVBhY2thZ2UpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9hbHJlYWR5X2V4aXN0c1wiLFxuICAgICAgICBtZXNzYWdlOiBcIkEgcGFja2FnZSB3aXRoIHRoaXMgbmFtZSBhbHJlYWR5IGV4aXN0c1wiLFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBjb25zdCB1cGRhdGVkUGFja2FnZSA9IGN0eC5kYi51cGRhdGVQYWNrYWdlKHBhY2thZ2VfaWQsIHtcbiAgICBuYW1lOiBuYW1lID8gYCR7Y3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lfS8ke25hbWV9YCA6IGV4aXN0aW5nUGFja2FnZS5uYW1lLFxuICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiA/PyBleGlzdGluZ1BhY2thZ2UuZGVzY3JpcHRpb24sXG4gICAgdW5zY29wZWRfbmFtZTogbmFtZSA/PyBleGlzdGluZ1BhY2thZ2UudW5zY29wZWRfbmFtZSxcbiAgICB3ZWJzaXRlOiB3ZWJzaXRlID8/IGV4aXN0aW5nUGFja2FnZS53ZWJzaXRlLFxuICAgIGlzX3ByaXZhdGU6IGlzX3ByaXZhdGUgPz8gZXhpc3RpbmdQYWNrYWdlLmlzX3ByaXZhdGUsXG4gICAgaXNfcHVibGljOlxuICAgICAgaXNfcHJpdmF0ZSAhPT0gdW5kZWZpbmVkID8gIWlzX3ByaXZhdGUgOiBleGlzdGluZ1BhY2thZ2UuaXNfcHVibGljLFxuICAgIGlzX3VubGlzdGVkOiBpc191bmxpc3RlZCA/PyBleGlzdGluZ1BhY2thZ2UuaXNfdW5saXN0ZWQsXG4gICAgdXBkYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICB9KVxuXG4gIGlmICghdXBkYXRlZFBhY2thZ2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDUwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJ1cGRhdGVfZmFpbGVkXCIsXG4gICAgICBtZXNzYWdlOiBcIkZhaWxlZCB0byB1cGRhdGUgcGFja2FnZVwiLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICAgIHBhY2thZ2U6IHVwZGF0ZWRQYWNrYWdlLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgc25pcHBldF9pZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBzbmlwcGV0X2lkIH0gPSByZXEuanNvbkJvZHlcblxuICAvLyBDaGVjayBpZiBzbmlwcGV0IGV4aXN0cyAoYXMgYSBwYWNrYWdlKVxuICBjb25zdCBzbmlwcGV0ID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoXG4gICAgKHBrZykgPT4gcGtnLnBhY2thZ2VfaWQgPT09IHNuaXBwZXRfaWQgJiYgcGtnLmlzX3NuaXBwZXQgPT09IHRydWUsXG4gIClcblxuICBpZiAoIXNuaXBwZXQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzbmlwcGV0X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJTbmlwcGV0IG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiBhbHJlYWR5IHN0YXJyZWRcbiAgY29uc3QgZXhpc3RpbmcgPSBjdHguZGIuYWNjb3VudFBhY2thZ2VzLmZpbmQoXG4gICAgKGFwKSA9PlxuICAgICAgYXAuYWNjb3VudF9pZCA9PT0gY3R4LmF1dGguYWNjb3VudF9pZCAmJiBhcC5wYWNrYWdlX2lkID09PSBzbmlwcGV0X2lkLFxuICApXG5cbiAgaWYgKGV4aXN0aW5nPy5pc19zdGFycmVkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiYWxyZWFkeV9zdGFycmVkXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBoYXZlIGFscmVhZHkgc3RhcnJlZCB0aGlzIHNuaXBwZXRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gVXBkYXRlIHRoZSBwYWNrYWdlJ3Mgc3RhciBjb3VudFxuICBzbmlwcGV0LnN0YXJfY291bnQgPSAoc25pcHBldC5zdGFyX2NvdW50IHx8IDApICsgMVxuXG4gIGlmIChleGlzdGluZykge1xuICAgIC8vIElmIHJlY29yZCBleGlzdHMgYnV0IGlzX3N0YXJyZWQgaXMgZmFsc2UsIHVwZGF0ZSB0byBpc19zdGFycmVkPXRydWVcbiAgICBleGlzdGluZy5pc19zdGFycmVkID0gdHJ1ZVxuICAgIGV4aXN0aW5nLnVwZGF0ZWRfYXQgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKClcbiAgfSBlbHNlIHtcbiAgICAvLyBBZGQgc3RhciBieSBjcmVhdGluZyBhIG5ldyBhY2NvdW50X3BhY2thZ2UgcmVjb3JkXG4gICAgY3R4LmRiLmFkZEFjY291bnRQYWNrYWdlKHtcbiAgICAgIGFjY291bnRfaWQ6IGN0eC5hdXRoLmFjY291bnRfaWQsXG4gICAgICBwYWNrYWdlX2lkOiBzbmlwcGV0X2lkLFxuICAgICAgaXNfc3RhcnJlZDogdHJ1ZSxcbiAgICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgc25pcHBldFNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICB1bnNjb3BlZF9uYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgY29kZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHNuaXBwZXRfdHlwZTogei5lbnVtKFtcImJvYXJkXCIsIFwicGFja2FnZVwiLCBcIm1vZGVsXCIsIFwiZm9vdHByaW50XCJdKSxcbiAgICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGNvbXBpbGVkX2pzOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgY2lyY3VpdF9qc29uOiB6LmFycmF5KHoucmVjb3JkKHouYW55KCkpKS5vcHRpb25hbCgpLm51bGxhYmxlKCksXG4gICAgZHRzOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgaXNfcHJpdmF0ZTogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICBpc19wdWJsaWM6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgaXNfdW5saXN0ZWQ6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgc25pcHBldDogc25pcHBldFNjaGVtYS5vcHRpb25hbCgpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBsZXQge1xuICAgIHVuc2NvcGVkX25hbWUsXG4gICAgY29kZSA9IFwiXCIsXG4gICAgc25pcHBldF90eXBlLFxuICAgIGRlc2NyaXB0aW9uID0gXCJcIixcbiAgICBjb21waWxlZF9qcyxcbiAgICBjaXJjdWl0X2pzb24sXG4gICAgZHRzLFxuICAgIGlzX3ByaXZhdGUsXG4gICAgaXNfcHVibGljLFxuICAgIGlzX3VubGlzdGVkLFxuICB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKVxuICBjb25zdCBjdXJyZW50VGltZSA9IG5ldyBEYXRlKHRpbWVzdGFtcCkudG9JU09TdHJpbmcoKVxuXG4gIGlmICghdW5zY29wZWRfbmFtZSkge1xuICAgIC8vIENvdW50IHNuaXBwZXRzIG9mIHRoaXMgdHlwZSBmb3IgdGhpcyB1c2VyXG4gICAgY29uc3QgdXNlclNuaXBwZXRzID0gY3R4LmRiLnBhY2thZ2VzLmZpbHRlcihcbiAgICAgIChwKSA9PlxuICAgICAgICBwLm93bmVyX2dpdGh1Yl91c2VybmFtZSA9PT0gY3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lICYmXG4gICAgICAgIHAuaXNfc25pcHBldCA9PT0gdHJ1ZSAmJlxuICAgICAgICAoKHAuaXNfYm9hcmQgJiYgc25pcHBldF90eXBlID09PSBcImJvYXJkXCIpIHx8XG4gICAgICAgICAgKHAuaXNfcGFja2FnZSAmJiBzbmlwcGV0X3R5cGUgPT09IFwicGFja2FnZVwiKSB8fFxuICAgICAgICAgIChwLmlzX21vZGVsICYmIHNuaXBwZXRfdHlwZSA9PT0gXCJtb2RlbFwiKSB8fFxuICAgICAgICAgIChwLmlzX2Zvb3RwcmludCAmJiBzbmlwcGV0X3R5cGUgPT09IFwiZm9vdHByaW50XCIpKSxcbiAgICApXG4gICAgdW5zY29wZWRfbmFtZSA9IGB1bnRpdGxlZC0ke3NuaXBwZXRfdHlwZX0tJHt1c2VyU25pcHBldHMubGVuZ3RoICsgMX1gXG4gIH1cblxuICBjb25zdCBleGlzdGluZ1BhY2thZ2UgPSBjdHguZGIucGFja2FnZXMuZmluZChcbiAgICAocGtnKSA9PlxuICAgICAgcGtnLnVuc2NvcGVkX25hbWUgPT09IHVuc2NvcGVkX25hbWUgJiZcbiAgICAgIHBrZy5vd25lcl9naXRodWJfdXNlcm5hbWUgPT09IGN0eC5hdXRoLmdpdGh1Yl91c2VybmFtZSxcbiAgKVxuXG4gIGlmIChleGlzdGluZ1BhY2thZ2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzbmlwcGV0X2FscmVhZHlfZXhpc3RzXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBoYXZlIGFscmVhZHkgZm9ya2VkIHRoaXMgc25pcHBldCBpbiB5b3VyIGFjY291bnQuXCIsXG4gICAgfSlcbiAgfVxuXG4gIHRyeSB7XG4gICAgLy8gQ3JlYXRlIHRoZSBwYWNrYWdlIGRpcmVjdGx5ICh3aGljaCB3aWxsIHNlcnZlIGFzIG91ciBzbmlwcGV0KVxuICAgIGNvbnN0IG5ld1BhY2thZ2UgPSBjdHguZGIuYWRkUGFja2FnZSh7XG4gICAgICBjcmVhdG9yX2FjY291bnRfaWQ6IGN0eC5hdXRoLmFjY291bnRfaWQsXG4gICAgICBvd25lcl9vcmdfaWQ6IGN0eC5hdXRoLnBlcnNvbmFsX29yZ19pZCxcbiAgICAgIG93bmVyX2dpdGh1Yl91c2VybmFtZTogY3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lLFxuICAgICAgaXNfc291cmNlX2Zyb21fZ2l0aHViOiBmYWxzZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbixcbiAgICAgIG5hbWU6IGAke2N0eC5hdXRoLmdpdGh1Yl91c2VybmFtZX0vJHt1bnNjb3BlZF9uYW1lfWAsXG4gICAgICB1bnNjb3BlZF9uYW1lOiB1bnNjb3BlZF9uYW1lLFxuICAgICAgbGF0ZXN0X3ZlcnNpb246IFwiMC4wLjFcIixcbiAgICAgIGxpY2Vuc2U6IG51bGwsXG4gICAgICBzdGFyX2NvdW50OiAwLFxuICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICB1cGRhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIGFpX2Rlc2NyaXB0aW9uOiBudWxsLFxuICAgICAgaXNfc25pcHBldDogdHJ1ZSxcbiAgICAgIGlzX2JvYXJkOiBzbmlwcGV0X3R5cGUgPT09IFwiYm9hcmRcIixcbiAgICAgIGlzX3BhY2thZ2U6IHNuaXBwZXRfdHlwZSA9PT0gXCJwYWNrYWdlXCIsXG4gICAgICBpc19tb2RlbDogc25pcHBldF90eXBlID09PSBcIm1vZGVsXCIsXG4gICAgICBpc19mb290cHJpbnQ6IHNuaXBwZXRfdHlwZSA9PT0gXCJmb290cHJpbnRcIixcbiAgICAgIHNuaXBwZXRfdHlwZTogc25pcHBldF90eXBlLFxuICAgICAgaXNfcHJpdmF0ZTogaXNfcHJpdmF0ZSB8fCBmYWxzZSxcbiAgICAgIGlzX3B1YmxpYzogaXNfcHVibGljIHx8IHRydWUsXG4gICAgICBpc191bmxpc3RlZDogaXNfdW5saXN0ZWQgfHwgZmFsc2UsXG4gICAgICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkOiBudWxsLFxuICAgICAgYWlfdXNhZ2VfaW5zdHJ1Y3Rpb25zOiBcInBsYWNlaG9sZGVyIGFpIHVzYWdlIGluc3RydWN0aW9uc1wiLFxuICAgIH0pXG5cbiAgICBjb25zdCBuZXdQYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5hZGRQYWNrYWdlUmVsZWFzZSh7XG4gICAgICBwYWNrYWdlX2lkOiBuZXdQYWNrYWdlLnBhY2thZ2VfaWQsXG4gICAgICB2ZXJzaW9uOiBcIjAuMC4xXCIsXG4gICAgICBpc19sYXRlc3Q6IHRydWUsXG4gICAgICBpc19sb2NrZWQ6IGZhbHNlLFxuICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgfSlcblxuICAgIGN0eC5kYi51cGRhdGVQYWNrYWdlKG5ld1BhY2thZ2UucGFja2FnZV9pZCwge1xuICAgICAgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZDogbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgIH0pXG5cbiAgICAvLyBBZGQgcGFja2FnZSBmaWxlc1xuICAgIC8vIEFkZCBpbmRleC50c3ggZmlsZSB3aXRoIHRoZSBjb2RlIGNvbnRlbnRcbiAgICBjdHguZGIuYWRkUGFja2FnZUZpbGUoe1xuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBuZXdQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICBmaWxlX3BhdGg6IFwiaW5kZXgudHN4XCIsXG4gICAgICBjb250ZW50X3RleHQ6IGNvZGUsXG4gICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICB9KVxuXG4gICAgLy8gQWRkIERUUyBmaWxlIGlmIHByb3ZpZGVkXG4gICAgaWYgKGR0cykge1xuICAgICAgY3R4LmRiLmFkZFBhY2thZ2VGaWxlKHtcbiAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBuZXdQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgIGZpbGVfcGF0aDogXCIvZGlzdC9pbmRleC5kLnRzXCIsXG4gICAgICAgIGNvbnRlbnRfdGV4dDogZHRzLFxuICAgICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gQWRkIGNvbXBpbGVkIEpTIGlmIHByb3ZpZGVkXG4gICAgaWYgKGNvbXBpbGVkX2pzKSB7XG4gICAgICBjdHguZGIuYWRkUGFja2FnZUZpbGUoe1xuICAgICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IG5ld1BhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgICAgZmlsZV9wYXRoOiBcIi9kaXN0L2luZGV4LmpzXCIsXG4gICAgICAgIGNvbnRlbnRfdGV4dDogY29tcGlsZWRfanMsXG4gICAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyBBZGQgY2lyY3VpdCBKU09OIGlmIHByb3ZpZGVkXG4gICAgaWYgKGNpcmN1aXRfanNvbikge1xuICAgICAgY3R4LmRiLmFkZFBhY2thZ2VGaWxlKHtcbiAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBuZXdQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgIGZpbGVfcGF0aDogXCIvZGlzdC9jaXJjdWl0Lmpzb25cIixcbiAgICAgICAgY29udGVudF90ZXh0OiBKU09OLnN0cmluZ2lmeShjaXJjdWl0X2pzb24pLFxuICAgICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIHRoZSBzbmlwcGV0IHJlc3BvbnNlIG9iamVjdFxuICAgIGNvbnN0IHNuaXBwZXRSZXNwb25zZSA9IHtcbiAgICAgIHNuaXBwZXRfaWQ6IG5ld1BhY2thZ2UucGFja2FnZV9pZCxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgbmFtZTogbmV3UGFja2FnZS5uYW1lLFxuICAgICAgdW5zY29wZWRfbmFtZTogbmV3UGFja2FnZS51bnNjb3BlZF9uYW1lLFxuICAgICAgb3duZXJfbmFtZTogY3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lLFxuICAgICAgY29kZSxcbiAgICAgIGR0cyxcbiAgICAgIGNvbXBpbGVkX2pzLFxuICAgICAgc3Rhcl9jb3VudDogMCxcbiAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgdXBkYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICBzbmlwcGV0X3R5cGU6IHNuaXBwZXRfdHlwZSxcbiAgICAgIGNpcmN1aXRfanNvbjogY2lyY3VpdF9qc29uIHx8IFtdLFxuICAgICAgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uLFxuICAgICAgaXNfc3RhcnJlZDogZmFsc2UsXG4gICAgICB2ZXJzaW9uOiBcIjAuMC4xXCIsXG4gICAgICBpc19wcml2YXRlOiBpc19wcml2YXRlIHx8IGZhbHNlLFxuICAgICAgaXNfcHVibGljOiBpc19wdWJsaWMgfHwgdHJ1ZSxcbiAgICAgIGlzX3VubGlzdGVkOiBpc191bmxpc3RlZCB8fCBmYWxzZSxcbiAgICB9XG5cbiAgICByZXR1cm4gY3R4Lmpzb24oe1xuICAgICAgb2s6IHRydWUsXG4gICAgICBzbmlwcGV0OiBzbmlwcGV0UmVzcG9uc2UsXG4gICAgfSlcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDUwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzbmlwcGV0X2NyZWF0aW9uX2ZhaWxlZFwiLFxuICAgICAgbWVzc2FnZTogYEZhaWxlZCB0byBjcmVhdGUgc25pcHBldDogJHtlcnJvcn1gLFxuICAgIH0pXG4gIH1cbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIHNuaXBwZXRfaWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgc25pcHBldF9pZCB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgY29uc3Qgc25pcHBldEluZGV4ID0gY3R4LmRiLnBhY2thZ2VzLmZpbmRJbmRleChcbiAgICAocykgPT4gcy5wYWNrYWdlX2lkID09PSBzbmlwcGV0X2lkLFxuICApXG5cbiAgaWYgKHNuaXBwZXRJbmRleCA9PT0gLTEpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzbmlwcGV0X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJTbmlwcGV0IG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBzbmlwcGV0ID0gY3R4LmRiLnBhY2thZ2VzW3NuaXBwZXRJbmRleF1cblxuICBpZiAoc25pcHBldC5jcmVhdG9yX2FjY291bnRfaWQgIT09IGN0eC5hdXRoLmdpdGh1Yl91c2VybmFtZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAzLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImZvcmJpZGRlblwiLFxuICAgICAgbWVzc2FnZTogXCJZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGRlbGV0ZSB0aGlzIHNuaXBwZXRcIixcbiAgICB9KVxuICB9XG5cbiAgY3R4LmRiLnBhY2thZ2VzLnNwbGljZShzbmlwcGV0SW5kZXgsIDEpXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIHF1ZXJ5UGFyYW1zOiB6Lm9iamVjdCh7XG4gICAganNkZWxpdnJfcmVzb2x2ZTogelxuICAgICAgLmVudW0oW1widHJ1ZVwiLCBcImZhbHNlXCJdKVxuICAgICAgLm9wdGlvbmFsKClcbiAgICAgIC50cmFuc2Zvcm0oKHYpID0+IHYgPT09IFwidHJ1ZVwiKSxcbiAgICBqc2RlbGl2cl9wYXRoOiB6LnN0cmluZygpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6LmFueSgpLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsganNkZWxpdnJfcGF0aCwganNkZWxpdnJfcmVzb2x2ZSB9ID0gcmVxLnF1ZXJ5XG5cbiAgLy8gUGFyc2UgdGhlIGZpbGUgcGF0aFxuICBjb25zdCBbb3duZXIsIHBhY2thZ2VXaXRoVmVyc2lvbiwgLi4ucmVzdF0gPSBqc2RlbGl2cl9wYXRoLnNwbGl0KFwiL1wiKVxuICBjb25zdCBbcGFja2FnZU5hbWUsIHZlcnNpb25dID0gcGFja2FnZVdpdGhWZXJzaW9uLnNwbGl0KFwiQFwiKVxuICBjb25zdCBmaWxlTmFtZSA9IHJlc3Quam9pbihcIi9cIilcblxuICAvLyBGaW5kIHRoZSBzbmlwcGV0XG4gIGNvbnN0IF9wYWNrYWdlID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoXG4gICAgKHMpID0+IHMub3duZXJfZ2l0aHViX3VzZXJuYW1lID09PSBvd25lciAmJiBzLnVuc2NvcGVkX25hbWUgPT09IHBhY2thZ2VOYW1lLFxuICApXG5cbiAgY29uc3QgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgKHApID0+IHAucGFja2FnZV9pZCA9PT0gX3BhY2thZ2U/LnBhY2thZ2VfaWQsXG4gIClcblxuICBjb25zdCBwYWNrYWdlRmlsZXMgPSBjdHguZGIucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAocCkgPT4gcC5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlPy5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gIClcblxuICBpZiAoIV9wYWNrYWdlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwic25pcHBldF9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiU25pcHBldCBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgaWYgKCFmaWxlTmFtZSAmJiAhanNkZWxpdnJfcmVzb2x2ZSkge1xuICAgIHJldHVybiBuZXcgUmVzcG9uc2UoXG4gICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICBsYXRlc3Q6IFwiMC4wLjFcIixcbiAgICAgICAgfSxcbiAgICAgICAgdmVyc2lvbnM6IFtcIjAuMC4xXCJdLFxuICAgICAgfSksXG4gICAgICB7XG4gICAgICAgIHN0YXR1czogMjAwLFxuICAgICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICB9LFxuICAgIClcbiAgfSBlbHNlIGlmICghZmlsZU5hbWUgJiYganNkZWxpdnJfcmVzb2x2ZSkge1xuICAgIHJldHVybiBuZXcgUmVzcG9uc2UoXG4gICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIHZlcnNpb246IFwiMC4wLjFcIixcbiAgICAgIH0pLFxuICAgICAge1xuICAgICAgICBzdGF0dXM6IDIwMCxcbiAgICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgfSxcbiAgICApXG4gIH1cblxuICAvLyBJZiBubyBmaWxlTmFtZSBpcyBwcm92aWRlZCwgcmV0dXJuIHRoZSBkaXJlY3RvcnkgbGlzdGluZ1xuICBpZiAoIWZpbGVOYW1lIHx8IGZpbGVOYW1lID09PSBcImZsYXRcIikge1xuICAgIGNvbnN0IGZpbGVzID0gW1xuICAgICAge1xuICAgICAgICB0eXBlOiBcImZpbGVcIixcbiAgICAgICAgbmFtZTogXCJpbmRleC50c1wiLFxuICAgICAgICBoYXNoOiBcInBsYWNlaG9sZGVyX2hhc2hcIixcbiAgICAgICAgdGltZTogcGFja2FnZVJlbGVhc2U/LmNyZWF0ZWRfYXQsXG4gICAgICAgIHNpemU6IHBhY2thZ2VGaWxlcy5maW5kKChmKSA9PiBmLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c1wiKT8uY29udGVudF90ZXh0XG4gICAgICAgICAgPy5sZW5ndGgsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcImZpbGVcIixcbiAgICAgICAgbmFtZTogXCJpbmRleC5kLnRzXCIsXG4gICAgICAgIGhhc2g6IFwicGxhY2Vob2xkZXJfaGFzaFwiLFxuICAgICAgICB0aW1lOiBwYWNrYWdlUmVsZWFzZT8uY3JlYXRlZF9hdCxcbiAgICAgICAgc2l6ZTogcGFja2FnZUZpbGVzLmZpbmQoKGYpID0+IGYuZmlsZV9wYXRoID09PSBcImluZGV4LmQudHNcIilcbiAgICAgICAgICA/LmNvbnRlbnRfdGV4dD8ubGVuZ3RoLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJmaWxlXCIsXG4gICAgICAgIG5hbWU6IFwicGFja2FnZS5qc29uXCIsXG4gICAgICAgIGhhc2g6IFwicGxhY2Vob2xkZXJfaGFzaFwiLFxuICAgICAgICB0aW1lOiBwYWNrYWdlUmVsZWFzZT8uY3JlYXRlZF9hdCxcbiAgICAgICAgc2l6ZTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIG5hbWU6IGBAdHNjaS8ke293bmVyfS4ke3BhY2thZ2VOYW1lfWAsXG4gICAgICAgICAgdmVyc2lvbjogdmVyc2lvbiB8fCBcIjAuMC4xXCIsXG4gICAgICAgICAgbWFpbjogXCJpbmRleC50c1wiLFxuICAgICAgICAgIHR5cGVzOiBcImluZGV4LmQudHNcIixcbiAgICAgICAgfSkubGVuZ3RoLFxuICAgICAgfSxcbiAgICBdXG5cbiAgICBjb25zdCByZXNwb25zZSA9IHtcbiAgICAgIGRlZmF1bHQ6IFwiL2luZGV4LnRzXCIsXG4gICAgICBmaWxlczpcbiAgICAgICAgZmlsZU5hbWUgPT09IFwiZmxhdFwiXG4gICAgICAgICAgPyBmaWxlcy5tYXAoKGYpID0+ICh7XG4gICAgICAgICAgICAgIG5hbWU6IGAvJHtmLm5hbWV9YCxcbiAgICAgICAgICAgICAgaGFzaDogZi5oYXNoLFxuICAgICAgICAgICAgICB0aW1lOiBmLnRpbWUsXG4gICAgICAgICAgICAgIHNpemU6IGYuc2l6ZSxcbiAgICAgICAgICAgIH0pKVxuICAgICAgICAgIDogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJkaXJlY3RvcnlcIixcbiAgICAgICAgICAgICAgICBuYW1lOiBcIi5cIixcbiAgICAgICAgICAgICAgICBmaWxlczogZmlsZXMsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgIH1cblxuICAgIHJldHVybiBuZXcgUmVzcG9uc2UoSlNPTi5zdHJpbmdpZnkocmVzcG9uc2UsIG51bGwsIDIpLCB7XG4gICAgICBzdGF0dXM6IDIwMCxcbiAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICB9KVxuICB9XG5cbiAgLy8gSGFuZGxlIGZpbGUgZG93bmxvYWRzXG4gIGxldCBjb250ZW50OiBzdHJpbmdcbiAgc3dpdGNoIChmaWxlTmFtZSkge1xuICAgIGNhc2UgXCJpbmRleC50c1wiOlxuICAgICAgY29udGVudCA9XG4gICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKChmKSA9PiBmLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIik/LmNvbnRlbnRfdGV4dCB8fFxuICAgICAgICBcIlwiXG4gICAgICBicmVha1xuICAgIGNhc2UgXCJpbmRleC5kLnRzXCI6XG4gICAgICBjb250ZW50ID1cbiAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoKGYpID0+IGYuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmQudHNcIilcbiAgICAgICAgICA/LmNvbnRlbnRfdGV4dCB8fCBcIlwiXG4gICAgICBicmVha1xuICAgIGNhc2UgXCJwYWNrYWdlLmpzb25cIjpcbiAgICAgIGNvbnRlbnQgPSBKU09OLnN0cmluZ2lmeShcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IGBAdHNjaS8ke293bmVyfS4ke3BhY2thZ2VOYW1lfWAsXG4gICAgICAgICAgdmVyc2lvbjogdmVyc2lvbiB8fCBcIjAuMC4xXCIsXG4gICAgICAgICAgbWFpbjogXCJpbmRleC50c1wiLFxuICAgICAgICAgIHR5cGVzOiBcImluZGV4LmQudHNcIixcbiAgICAgICAgfSxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgMixcbiAgICAgIClcbiAgICAgIGJyZWFrXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwiZmlsZV9ub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogXCJSZXF1ZXN0ZWQgZmlsZSBub3QgZm91bmRcIixcbiAgICAgIH0pXG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3BvbnNlKGNvbnRlbnQsIHtcbiAgICBzdGF0dXM6IDIwMCxcbiAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwidGV4dC9wbGFpblwiIH0sXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBzbmlwcGV0U2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgZmV0Y2hFYXN5RURBQ29tcG9uZW50LCBjb252ZXJ0UmF3RWFzeUVkYVRvVHMgfSBmcm9tIFwiZWFzeWVkYVwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBqbGNwY2JfcGFydF9udW1iZXI6IHouc3RyaW5nKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBzbmlwcGV0OiBzbmlwcGV0U2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IGpsY3BjYl9wYXJ0X251bWJlciB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgdHJ5IHtcbiAgICAvLyBGZXRjaCB0aGUgRWFzeUVEQSBjb21wb25lbnQgZGF0YVxuICAgIGNvbnN0IHJhd0Vhc3lKc29uID0gYXdhaXQgZmV0Y2hFYXN5RURBQ29tcG9uZW50KGpsY3BjYl9wYXJ0X251bWJlcikuY2F0Y2goXG4gICAgICAoZSkgPT4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGluIGZldGNoRWFzeUVEQUNvbXBvbmVudDogJHtlLnRvU3RyaW5nKCl9YClcbiAgICAgIH0sXG4gICAgKVxuXG4gICAgLy8gQ29udmVydCB0byBUeXBlU2NyaXB0IFJlYWN0IGNvbXBvbmVudFxuICAgIGNvbnN0IHRzeENvbXBvbmVudCA9IGF3YWl0IGNvbnZlcnRSYXdFYXN5RWRhVG9UcyhyYXdFYXN5SnNvbikuY2F0Y2goKGUpID0+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRXJyb3IgaW4gY29udmVydFJhd0Vhc3lFZGFUb1RzICR7ZS50b1N0cmluZygpfWApXG4gICAgfSlcblxuICAgIC8vIENyZWF0ZSBhIG5ldyBzbmlwcGV0XG4gICAgY29uc3QgbmV3U25pcHBldCA9IHtcbiAgICAgIHNuaXBwZXRfaWQ6IGBzbmlwcGV0XyR7Y3R4LmRiLmlkQ291bnRlciArIDF9YCxcbiAgICAgIG5hbWU6IGAke2N0eC5hdXRoLmdpdGh1Yl91c2VybmFtZX0vJHtqbGNwY2JfcGFydF9udW1iZXJ9YCxcbiAgICAgIHVuc2NvcGVkX25hbWU6IGpsY3BjYl9wYXJ0X251bWJlcixcbiAgICAgIG93bmVyX25hbWU6IGN0eC5hdXRoLmdpdGh1Yl91c2VybmFtZSxcbiAgICAgIGNvZGU6IHRzeENvbXBvbmVudCxcbiAgICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIHNuaXBwZXRfdHlwZTogXCJwYWNrYWdlXCIsXG4gICAgICBkZXNjcmlwdGlvbjogYEdlbmVyYXRlZCBmcm9tIEpMQ1BDQiBwYXJ0IG51bWJlciAke2psY3BjYl9wYXJ0X251bWJlcn1gLFxuICAgIH1cblxuICAgIGN0eC5kYi5hZGRTbmlwcGV0KG5ld1NuaXBwZXQgYXMgYW55KVxuXG4gICAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICAgIHNuaXBwZXQ6IG5ld1NuaXBwZXQgYXMgYW55LFxuICAgIH0pXG4gIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDUwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJqbGNwY2JfZ2VuZXJhdGlvbl9mYWlsZWRcIixcbiAgICAgIG1lc3NhZ2U6IGBGYWlsZWQgdG8gZ2VuZXJhdGUgc25pcHBldCBmcm9tIEpMQ1BDQiBwYXJ0OiAke2Vycm9yLm1lc3NhZ2V9XFxuXFxuJHtlcnJvci5zdGFja31gLFxuICAgIH0pXG4gIH1cbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7XG4gIGNvbnZlcnRDaXJjdWl0SnNvblRvU2NoZW1hdGljU3ZnLFxuICBjb252ZXJ0Q2lyY3VpdEpzb25Ub1BjYlN2Zyxcbn0gZnJvbSBcImNpcmN1aXQtdG8tc3ZnXCJcbmltcG9ydCB7IEFueUNpcmN1aXRFbGVtZW50IH0gZnJvbSBcImNpcmN1aXQtanNvblwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBxdWVyeVBhcmFtczogei5vYmplY3Qoe1xuICAgIHNuaXBwZXRJZDogei5zdHJpbmcoKSxcbiAgICBpbWFnZV9vZjogei5lbnVtKFtcInNjaGVtYXRpY1wiLCBcInBjYlwiXSksXG4gICAgZm9ybWF0OiB6LmVudW0oW1wic3ZnXCJdKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBzdmc6IHouc3RyaW5nKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgc25pcHBldElkLCBpbWFnZV9vZiwgZm9ybWF0IH0gPSByZXEucXVlcnlcblxuICBjb25zdCBzbmlwcGV0ID0gY3R4LmRiLmdldFNuaXBwZXRCeUlkKHNuaXBwZXRJZClcblxuICAvLyBjaGVjayBpZiB0aGUgc25pcHBldCBleGlzdHNcbiAgaWYgKCFzbmlwcGV0KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwic25pcHBldF9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiU25pcHBldCBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGhlIGZvcm1hdCBpcyB2YWxpZFxuICBpZiAoZm9ybWF0ICE9PSBcInN2Z1wiKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiaW52YWxpZF9mb3JtYXRcIixcbiAgICAgIG1lc3NhZ2U6IFwiRm9ybWF0IG11c3QgYmUgJ3N2ZydcIixcbiAgICB9KVxuICB9XG5cbiAgaWYgKGltYWdlX29mID09PSBcInNjaGVtYXRpY1wiKSB7XG4gICAgY29uc3QgY2lyY3VpdEpzb24gPSBzbmlwcGV0LmNpcmN1aXRfanNvbiBhcyBBbnlDaXJjdWl0RWxlbWVudFtdXG4gICAgY29uc3Qgc3ZnID0gY29udmVydENpcmN1aXRKc29uVG9TY2hlbWF0aWNTdmcoY2lyY3VpdEpzb24pXG4gICAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICAgIG9rOiB0cnVlLFxuICAgICAgc3ZnLFxuICAgIH0pXG4gIH1cblxuICBpZiAoaW1hZ2Vfb2YgPT09IFwicGNiXCIpIHtcbiAgICBjb25zdCBzdmcgPSBjb252ZXJ0Q2lyY3VpdEpzb25Ub1BjYlN2ZyhcbiAgICAgIHNuaXBwZXQuY2lyY3VpdF9qc29uIGFzIEFueUNpcmN1aXRFbGVtZW50W10sXG4gICAgKVxuICAgIHJldHVybiBjdHguanNvbih7XG4gICAgICBvazogdHJ1ZSxcbiAgICAgIHN2ZyxcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICBlcnJvcl9jb2RlOiBcIklOVkFMSURfUkVRVUVTVF9UWVBFXCIsXG4gICAgbWVzc2FnZTogXCJSZXF1ZXN0IHR5cGUgbXVzdCBiZSBlaXRoZXIgJ3NjaGVtYXRpYycgb3IgJ3BjYidcIixcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgc25pcHBldFNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIiwgXCJQT1NUXCJdLFxuICBhdXRoOiBcIm9wdGlvbmFsX3Nlc3Npb25cIixcbiAgY29tbW9uUGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgc25pcHBldF9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIG5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBvd25lcl9uYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgdW5zY29wZWRfbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB9KSxcbiAganNvbkJvZHk6IHouYW55KCkub3B0aW9uYWwoKSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICAgIHNuaXBwZXQ6IHNuaXBwZXRTY2hlbWEsXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgc25pcHBldF9pZCwgbmFtZSwgb3duZXJfbmFtZSwgdW5zY29wZWRfbmFtZSB9ID0gcmVxLmNvbW1vblBhcmFtc1xuXG4gIC8vIEZpcnN0IHRyeSB0byBmaW5kIGJ5IHNuaXBwZXRfaWRcbiAgaWYgKHNuaXBwZXRfaWQpIHtcbiAgICBjb25zdCBmb3VuZFNuaXBwZXQgPSBjdHguZGIuZ2V0U25pcHBldEJ5SWQoc25pcHBldF9pZCwgY3R4LmF1dGgpXG4gICAgaWYgKGZvdW5kU25pcHBldCkge1xuICAgICAgaWYgKGN0eC5hdXRoKSB7XG4gICAgICAgIGZvdW5kU25pcHBldC5pc19zdGFycmVkID0gY3R4LmRiLmhhc1N0YXJyZWQoXG4gICAgICAgICAgY3R4LmF1dGguYWNjb3VudF9pZCxcbiAgICAgICAgICBmb3VuZFNuaXBwZXQuc25pcHBldF9pZCxcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICAgICAgb2s6IHRydWUsXG4gICAgICAgIHNuaXBwZXQ6IGZvdW5kU25pcHBldCxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgLy8gSWYgbm90IGZvdW5kIGJ5IElELCB0cnkgdG8gZmluZCBieSBvdGhlciBwYXJhbWV0ZXJzXG4gIGNvbnN0IGZvdW5kUGFja2FnZSA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKChwa2cpID0+IHtcbiAgICBpZiAoIXBrZy5pc19zbmlwcGV0KSByZXR1cm4gZmFsc2VcbiAgICBpZiAobmFtZSAmJiBwa2cubmFtZS50b0xvd2VyQ2FzZSgpICE9PSBuYW1lLnRvTG93ZXJDYXNlKCkpIHJldHVybiBmYWxzZVxuICAgIGlmIChcbiAgICAgIG93bmVyX25hbWUgJiZcbiAgICAgIHBrZy5vd25lcl9naXRodWJfdXNlcm5hbWU/LnRvTG93ZXJDYXNlKCkgIT09IG93bmVyX25hbWUudG9Mb3dlckNhc2UoKVxuICAgIClcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIGlmIChcbiAgICAgIHVuc2NvcGVkX25hbWUgJiZcbiAgICAgIHBrZy51bnNjb3BlZF9uYW1lLnRvTG93ZXJDYXNlKCkgIT09IHVuc2NvcGVkX25hbWUudG9Mb3dlckNhc2UoKVxuICAgIClcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIHJldHVybiB0cnVlXG4gIH0pXG5cbiAgaWYgKCFmb3VuZFBhY2thZ2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzbmlwcGV0X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogYFNuaXBwZXQgbm90IGZvdW5kIChzZWFyY2hlZCB1c2luZyAke0pTT04uc3RyaW5naWZ5KHJlcS5jb21tb25QYXJhbXMpfSlgLFxuICAgIH0pXG4gIH1cblxuICAvLyBDb252ZXJ0IHBhY2thZ2UgdG8gc25pcHBldCBmb3JtYXRcbiAgY29uc3Qgc25pcHBldCA9IGN0eC5kYi5nZXRTbmlwcGV0QnlJZChmb3VuZFBhY2thZ2UucGFja2FnZV9pZClcbiAgaWYgKCFzbmlwcGV0KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwic25pcHBldF9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IGBTbmlwcGV0IG5vdCBmb3VuZCAoc2VhcmNoZWQgdXNpbmcgJHtKU09OLnN0cmluZ2lmeShyZXEuY29tbW9uUGFyYW1zKX0pYCxcbiAgICB9KVxuICB9XG5cbiAgaWYgKGN0eC5hdXRoKSB7XG4gICAgc25pcHBldC5pc19zdGFycmVkID0gY3R4LmRiLmhhc1N0YXJyZWQoXG4gICAgICBjdHguYXV0aC5hY2NvdW50X2lkLFxuICAgICAgc25pcHBldC5zbmlwcGV0X2lkLFxuICAgIClcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgc25pcHBldCxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgQW55Q2lyY3VpdEVsZW1lbnQgfSBmcm9tIFwiY2lyY3VpdC1qc29uXCJcbmltcG9ydCB7XG4gIGNvbnZlcnRDaXJjdWl0SnNvblRvQXNzZW1ibHlTdmcsXG4gIGNvbnZlcnRDaXJjdWl0SnNvblRvUGNiU3ZnLFxuICBjb252ZXJ0Q2lyY3VpdEpzb25Ub1NjaGVtYXRpY1N2Zyxcbn0gZnJvbSBcImNpcmN1aXQtdG8tc3ZnXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICByb3V0ZVBhcmFtczogei5vYmplY3Qoe1xuICAgIGF1dGhvcjogei5zdHJpbmcoKSxcbiAgICBzbmlwcGV0X25hbWU6IHouc3RyaW5nKCksXG4gICAgdHlwZUZvcm1hdDogei5zdHJpbmcoKSxcbiAgfSksXG4gIHJhd1Jlc3BvbnNlOiB0cnVlLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgYXV0aG9yLCBzbmlwcGV0X25hbWUsIHR5cGVGb3JtYXQgfSA9IHJlcS5yb3V0ZVBhcmFtc1xuXG4gIC8vIEdldCB0aGUgc25pcHBldFxuICBjb25zdCBuYW1lID0gYXV0aG9yICsgXCIvXCIgKyBzbmlwcGV0X25hbWVcbiAgY29uc3Qgc25pcHBldCA9IGN0eC5kYi5nZXRTbmlwcGV0QnlBdXRob3JBbmROYW1lKGF1dGhvciwgbmFtZSlcblxuICAvLyBJZiBzbmlwcGV0IGlzIG5vdCBmb3VuZCwgcmV0dXJuIDQwNFxuICBpZiAoIXNuaXBwZXQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzbmlwcGV0X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJTbmlwcGV0IG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGUgZm9ybWF0IGlzIHZhbGlkXG4gIGNvbnN0IGZvcm1hdCA9IHR5cGVGb3JtYXQuc3BsaXQoXCIuXCIpWzFdXG4gIGlmIChmb3JtYXQgIT09IFwic3ZnXCIpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJpbnZhbGlkX2Zvcm1hdFwiLFxuICAgICAgbWVzc2FnZTogXCJGb3JtYXQgbXVzdCBiZSAnc3ZnJ1wiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGUgdHlwZSBpcyB2YWxpZFxuICBjb25zdCB0eXBlID0gdHlwZUZvcm1hdC5zcGxpdChcIi5cIilbMF1cbiAgY29uc3QgdHlwZXNWYWxpZCA9IFtcInNjaGVtYXRpY1wiLCBcInBjYlwiLCBcImFzc2VtYmx5XCJdXG4gIGlmICghdHlwZXNWYWxpZC5pbmNsdWRlcyh0eXBlKSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImludmFsaWRfdHlwZVwiLFxuICAgICAgbWVzc2FnZTogYFR5cGUgbXVzdCBiZSAnJHt0eXBlc1ZhbGlkLmpvaW4oXCInIG9yICdcIil9J2AsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENvbnZlcnQgY2lyY3VpdCBqc29uIHRvIHN2Z1xuICBsZXQgc3ZnOiBzdHJpbmdcbiAgaWYgKHR5cGUgPT09IFwic2NoZW1hdGljXCIpIHtcbiAgICBzdmcgPSBjb252ZXJ0Q2lyY3VpdEpzb25Ub1NjaGVtYXRpY1N2ZyhcbiAgICAgIHNuaXBwZXQuY2lyY3VpdF9qc29uIGFzIEFueUNpcmN1aXRFbGVtZW50W10sXG4gICAgKVxuICB9IGVsc2UgaWYgKHR5cGUgPT09IFwicGNiXCIpIHtcbiAgICBzdmcgPSBjb252ZXJ0Q2lyY3VpdEpzb25Ub1BjYlN2ZyhcbiAgICAgIHNuaXBwZXQuY2lyY3VpdF9qc29uIGFzIEFueUNpcmN1aXRFbGVtZW50W10sXG4gICAgKVxuICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiYXNzZW1ibHlcIikge1xuICAgIHN2ZyA9IGNvbnZlcnRDaXJjdWl0SnNvblRvQXNzZW1ibHlTdmcoXG4gICAgICBzbmlwcGV0LmNpcmN1aXRfanNvbiBhcyBBbnlDaXJjdWl0RWxlbWVudFtdLFxuICAgIClcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDUwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJ1bmtub3duX2Vycm9yXCIsXG4gICAgICBtZXNzYWdlOiBcIlVua25vd24gZXJyb3JcIixcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXNwb25zZShzdmcsIHtcbiAgICBoZWFkZXJzOiB7XG4gICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImltYWdlL3N2Zyt4bWxcIixcbiAgICAgIFwiQ2FjaGUtQ29udHJvbFwiOiBcInB1YmxpYywgbWF4LWFnZT0zMTUzNjAwMFwiLFxuICAgIH0sXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBzbmlwcGV0U2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBzbmlwcGV0czogei5hcnJheShzbmlwcGV0U2NoZW1hKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgbGF0ZXN0U25pcHBldHMgPSBjdHguZGIuZ2V0TGF0ZXN0U25pcHBldHMoMjApXG4gIHJldHVybiBjdHguanNvbih7IHNuaXBwZXRzOiBsYXRlc3RTbmlwcGV0cyB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgc25pcHBldFNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIHNuaXBwZXRzOiB6LmFycmF5KHNuaXBwZXRTY2hlbWEpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICAvLyBHZXQgdHJlbmRpbmcgc25pcHBldHMgZnJvbSBsYXN0IDcgZGF5c1xuICBjb25zdCBzZXZlbkRheXNBZ28gPSBuZXcgRGF0ZSgpXG4gIHNldmVuRGF5c0Fnby5zZXREYXRlKHNldmVuRGF5c0Fnby5nZXREYXRlKCkgLSA3KVxuXG4gIGNvbnN0IHRyZW5kaW5nU25pcHBldHMgPSBjdHguZGIuZ2V0VHJlbmRpbmdTbmlwcGV0cyhcbiAgICAyMCxcbiAgICBzZXZlbkRheXNBZ28udG9JU09TdHJpbmcoKSxcbiAgKVxuICByZXR1cm4gY3R4Lmpzb24oeyBzbmlwcGV0czogdHJlbmRpbmdTbmlwcGV0cyB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgc25pcHBldFNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiLCBcIlBPU1RcIl0sXG4gIGF1dGg6IFwib3B0aW9uYWxfc2Vzc2lvblwiLFxuICBjb21tb25QYXJhbXM6IHoub2JqZWN0KHtcbiAgICBvd25lcl9uYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgdW5zY29wZWRfbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHN0YXJyZWRfYnk6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25Cb2R5OiB6LmFueSgpLm9wdGlvbmFsKCksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBzbmlwcGV0czogei5hcnJheShzbmlwcGV0U2NoZW1hKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBvd25lcl9uYW1lLCB1bnNjb3BlZF9uYW1lLCBzdGFycmVkX2J5IH0gPSByZXEuY29tbW9uUGFyYW1zXG5cbiAgLy8gR2V0IGFsbCBwYWNrYWdlcyB0aGF0IGFyZSBzbmlwcGV0c1xuICBsZXQgcGFja2FnZXMgPSBjdHguZGIucGFja2FnZXMuZmlsdGVyKChwa2cpID0+IHBrZy5pc19zbmlwcGV0ID09PSB0cnVlKVxuXG4gIC8vIEZpbHRlciBieSBvd25lcl9uYW1lIGlmIHByb3ZpZGVkXG4gIGlmIChvd25lcl9uYW1lKSB7XG4gICAgcGFja2FnZXMgPSBwYWNrYWdlcy5maWx0ZXIoXG4gICAgICAocGtnKSA9PlxuICAgICAgICBwa2cub3duZXJfZ2l0aHViX3VzZXJuYW1lPy50b0xvd2VyQ2FzZSgpID09PSBvd25lcl9uYW1lLnRvTG93ZXJDYXNlKCksXG4gICAgKVxuICB9XG5cbiAgLy8gRmlsdGVyIGJ5IHVuc2NvcGVkX25hbWUgaWYgcHJvdmlkZWRcbiAgaWYgKHVuc2NvcGVkX25hbWUpIHtcbiAgICBwYWNrYWdlcyA9IHBhY2thZ2VzLmZpbHRlcihcbiAgICAgIChwa2cpID0+IHBrZy51bnNjb3BlZF9uYW1lLnRvTG93ZXJDYXNlKCkgPT09IHVuc2NvcGVkX25hbWUudG9Mb3dlckNhc2UoKSxcbiAgICApXG4gIH1cblxuICAvLyBGaWx0ZXIgYnkgc3RhcnJlZF9ieSBpZiBwcm92aWRlZFxuICBpZiAoc3RhcnJlZF9ieSkge1xuICAgIC8vIEdldCB0aGUgYWNjb3VudCBJRCBmb3IgdGhlIHN0YXJyZWRfYnkgdXNlcm5hbWVcbiAgICBjb25zdCBzdGFycmVkQnlBY2NvdW50ID0gY3R4LmRiLmFjY291bnRzLmZpbmQoXG4gICAgICAoYWNjKSA9PiBhY2MuZ2l0aHViX3VzZXJuYW1lLnRvTG93ZXJDYXNlKCkgPT09IHN0YXJyZWRfYnkudG9Mb3dlckNhc2UoKSxcbiAgICApXG4gICAgaWYgKHN0YXJyZWRCeUFjY291bnQpIHtcbiAgICAgIC8vIEZpbHRlciBwYWNrYWdlcyB0byBvbmx5IGluY2x1ZGUgdGhvc2UgdGhhdCBhcmUgc3RhcnJlZCBieSB0aGlzIGFjY291bnRcbiAgICAgIHBhY2thZ2VzID0gcGFja2FnZXMuZmlsdGVyKChwa2cpID0+XG4gICAgICAgIGN0eC5kYi5oYXNTdGFycmVkKHN0YXJyZWRCeUFjY291bnQuYWNjb3VudF9pZCwgcGtnLnBhY2thZ2VfaWQpLFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJZiB3ZSBjYW4ndCBmaW5kIHRoZSBhY2NvdW50LCByZXR1cm4gbm8gc25pcHBldHNcbiAgICAgIHBhY2thZ2VzID0gW11cbiAgICB9XG4gIH1cblxuICBjb25zdCBzbmlwcGV0cyA9IHBhY2thZ2VzLm1hcCgocGtnKSA9PiB7XG4gICAgY29uc3QgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIuZ2V0UGFja2FnZVJlbGVhc2VCeUlkKFxuICAgICAgcGtnLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgfHwgXCJcIixcbiAgICApXG4gICAgaWYgKCFwYWNrYWdlUmVsZWFzZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc25pcHBldF9pZDogcGtnLnBhY2thZ2VfaWQsXG4gICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcGtnLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgfHwgXCJcIixcbiAgICAgICAgdW5zY29wZWRfbmFtZTogcGtnLnVuc2NvcGVkX25hbWUsXG4gICAgICAgIG5hbWU6IHBrZy5uYW1lLFxuICAgICAgICBvd25lcl9uYW1lOiBwa2cub3duZXJfZ2l0aHViX3VzZXJuYW1lIHx8IFwiXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBwa2cuZGVzY3JpcHRpb24gfHwgXCJcIixcbiAgICAgICAgc25pcHBldF90eXBlOiBwa2cuc25pcHBldF90eXBlIHx8IFwiYm9hcmRcIixcbiAgICAgICAgY29kZTogXCJcIixcbiAgICAgICAgZHRzOiBcIlwiLFxuICAgICAgICBjb21waWxlZF9qczogXCJcIixcbiAgICAgICAgY3JlYXRlZF9hdDogcGtnLmNyZWF0ZWRfYXQsXG4gICAgICAgIHVwZGF0ZWRfYXQ6IHBrZy51cGRhdGVkX2F0LFxuICAgICAgICBzdGFyX2NvdW50OiBjdHguZGIuZ2V0U3RhckNvdW50KHBrZy5wYWNrYWdlX2lkKSxcbiAgICAgICAgaXNfc3RhcnJlZDogY3R4LmF1dGhcbiAgICAgICAgICA/IGN0eC5kYi5oYXNTdGFycmVkKGN0eC5hdXRoLmFjY291bnRfaWQsIHBrZy5wYWNrYWdlX2lkKVxuICAgICAgICAgIDogZmFsc2UsXG4gICAgICAgIHZlcnNpb246IHBrZy5sYXRlc3RfdmVyc2lvbiB8fCBcIjAuMC4xXCIsXG4gICAgICAgIGlzX3ByaXZhdGU6IHBrZy5pc19wcml2YXRlIHx8IGZhbHNlLFxuICAgICAgICBpc19wdWJsaWM6IHBrZy5pc19wdWJsaWMgfHwgdHJ1ZSxcbiAgICAgICAgaXNfdW5saXN0ZWQ6IHBrZy5pc191bmxpc3RlZCB8fCBmYWxzZSxcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgcGFja2FnZUZpbGVzID0gY3R4LmRiLmdldFBhY2thZ2VGaWxlc0J5UmVsZWFzZUlkKFxuICAgICAgcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgIClcbiAgICBjb25zdCBjb2RlRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKGZpbGU6IHsgZmlsZV9wYXRoOiBzdHJpbmcgfSkgPT5cbiAgICAgICAgZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHNcIiB8fCBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIixcbiAgICApXG4gICAgY29uc3Qgc3RhckNvdW50ID0gY3R4LmRiLmdldFN0YXJDb3VudChwa2cucGFja2FnZV9pZClcbiAgICBjb25zdCBpc1N0YXJyZWQgPSBjdHguYXV0aFxuICAgICAgPyBjdHguZGIuaGFzU3RhcnJlZChjdHguYXV0aC5hY2NvdW50X2lkLCBwa2cucGFja2FnZV9pZClcbiAgICAgIDogZmFsc2VcblxuICAgIHJldHVybiB7XG4gICAgICBzbmlwcGV0X2lkOiBwa2cucGFja2FnZV9pZCxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcGtnLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgfHwgXCJcIixcbiAgICAgIHVuc2NvcGVkX25hbWU6IHBrZy51bnNjb3BlZF9uYW1lLFxuICAgICAgbmFtZTogcGtnLm5hbWUsXG4gICAgICBvd25lcl9uYW1lOiBwa2cub3duZXJfZ2l0aHViX3VzZXJuYW1lIHx8IFwiXCIsXG4gICAgICBkZXNjcmlwdGlvbjogcGtnLmRlc2NyaXB0aW9uIHx8IFwiXCIsXG4gICAgICBzbmlwcGV0X3R5cGU6IHBrZy5zbmlwcGV0X3R5cGUgfHwgXCJib2FyZFwiLFxuICAgICAgY29kZTogY29kZUZpbGU/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgZHRzOlxuICAgICAgICBwYWNrYWdlRmlsZXMuZmluZChcbiAgICAgICAgICAoZmlsZTogeyBmaWxlX3BhdGg6IHN0cmluZyB9KSA9PlxuICAgICAgICAgICAgZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvaW5kZXguZC50c1wiLFxuICAgICAgICApPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgIGNvbXBpbGVkX2pzOlxuICAgICAgICBwYWNrYWdlRmlsZXMuZmluZChcbiAgICAgICAgICAoZmlsZTogeyBmaWxlX3BhdGg6IHN0cmluZyB9KSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5qc1wiLFxuICAgICAgICApPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgIGNyZWF0ZWRfYXQ6IHBrZy5jcmVhdGVkX2F0LFxuICAgICAgdXBkYXRlZF9hdDogcGtnLnVwZGF0ZWRfYXQsXG4gICAgICBzdGFyX2NvdW50OiBzdGFyQ291bnQsXG4gICAgICBpc19zdGFycmVkOiBpc1N0YXJyZWQsXG4gICAgICB2ZXJzaW9uOiBwa2cubGF0ZXN0X3ZlcnNpb24gfHwgXCIwLjAuMVwiLFxuICAgICAgaXNfcHJpdmF0ZTogcGtnLmlzX3ByaXZhdGUgfHwgZmFsc2UsXG4gICAgICBpc19wdWJsaWM6IHBrZy5pc19wdWJsaWMgfHwgdHJ1ZSxcbiAgICAgIGlzX3VubGlzdGVkOiBwa2cuaXNfdW5saXN0ZWQgfHwgZmFsc2UsXG4gICAgfVxuICB9KVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgc25pcHBldHMsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IGFjY291bnRTbmlwcGV0U2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIHNuaXBwZXRfaWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgaXNfc3RhcnJlZDogei5ib29sZWFuKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgc25pcHBldF9pZCB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgLy8gQ2hlY2sgaWYgc25pcHBldCBleGlzdHNcbiAgY29uc3Qgc25pcHBldCA9IGN0eC5kYi5nZXRTbmlwcGV0QnlJZChzbmlwcGV0X2lkKVxuICBpZiAoIXNuaXBwZXQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzbmlwcGV0X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJTbmlwcGV0IG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBjaGVjayBpZiBub3QgYWxyZWFkeSBzdGFycmVkXG4gIGlmICghY3R4LmRiLmhhc1N0YXJyZWQoY3R4LmF1dGguYWNjb3VudF9pZCwgc25pcHBldF9pZCkpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJub3Rfc3RhcnJlZFwiLFxuICAgICAgbWVzc2FnZTogXCJZb3UgaGF2ZSBub3Qgc3RhcnJlZCB0aGlzIHNuaXBwZXRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gUmVtb3ZlIHN0YXJcbiAgY3R4LmRiLnJlbW92ZVN0YXIoY3R4LmF1dGguYWNjb3VudF9pZCwgc25pcHBldF9pZClcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICAgIGlzX3N0YXJyZWQ6IGZhbHNlLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgc25pcHBldFNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIHF1ZXJ5UGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgcTogei5zdHJpbmcoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIHNuaXBwZXRzOiB6LmFycmF5KHNuaXBwZXRTY2hlbWEpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IHEgfSA9IHJlcS5xdWVyeVxuICBjb25zdCBzbmlwcGV0cyA9IGN0eC5kYi5zZWFyY2hTbmlwcGV0cyhxKVxuICByZXR1cm4gY3R4Lmpzb24oeyBzbmlwcGV0cyB9KVxufSlcbiIsICJpbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBzbmlwcGV0U2NoZW1hIH0gZnJvbSBcIi4uLy4uLy4uL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCIuLi8uLi8uLi9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIHNuaXBwZXRfaWQ6IHouc3RyaW5nKCksXG4gICAgY29kZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgdW5zY29wZWRfbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGR0czogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGNvbXBpbGVkX2pzOiB6LnN0cmluZygpLm9wdGlvbmFsKCkubnVsbGFibGUoKSxcbiAgICBjaXJjdWl0X2pzb246IHouYXJyYXkoei5yZWNvcmQoei5hbnkoKSkpLm9wdGlvbmFsKCkubnVsbGFibGUoKSxcbiAgICBtYW51YWxfZWRpdHNfanNvbl9jb250ZW50OiB6LnN0cmluZygpLm9wdGlvbmFsKCkubnVsbGFibGUoKSxcbiAgICBzbmlwcGV0X3R5cGU6IHouZW51bShbXCJib2FyZFwiLCBcInBhY2thZ2VcIiwgXCJtb2RlbFwiLCBcImZvb3RwcmludFwiXSkub3B0aW9uYWwoKSxcbiAgICBpc19wcml2YXRlOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIGlzX3VubGlzdGVkOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICAgIHNuaXBwZXQ6IHNuaXBwZXRTY2hlbWEsXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzbmlwcGV0X2lkLFxuICAgIGNvZGUsXG4gICAgZGVzY3JpcHRpb24sXG4gICAgdW5zY29wZWRfbmFtZSxcbiAgICBkdHMsXG4gICAgY29tcGlsZWRfanMsXG4gICAgY2lyY3VpdF9qc29uLFxuICAgIHNuaXBwZXRfdHlwZSxcbiAgICBtYW51YWxfZWRpdHNfanNvbl9jb250ZW50LFxuICAgIGlzX3ByaXZhdGUsXG4gICAgaXNfdW5saXN0ZWQsXG4gIH0gPSByZXEuanNvbkJvZHlcblxuICBjb25zdCBwYWNrYWdlSW5kZXggPSBjdHguZGIucGFja2FnZXMuZmluZEluZGV4KFxuICAgIChzKSA9PiBzLnBhY2thZ2VfaWQgPT09IHNuaXBwZXRfaWQsXG4gIClcblxuICBpZiAocGFja2FnZUluZGV4ID09PSAtMSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInNuaXBwZXRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlNuaXBwZXQgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IF9wYWNrYWdlID0gY3R4LmRiLnBhY2thZ2VzW3BhY2thZ2VJbmRleF1cbiAgY29uc3QgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgKHIpID0+IHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBfcGFja2FnZS5sYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkLFxuICApXG4gIGNvbnN0IHBhY2thZ2VGaWxlcyA9IGN0eC5kYi5wYWNrYWdlRmlsZXMuZmlsdGVyKFxuICAgIChmKSA9PiBmLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2U/LnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgKVxuICBjb25zdCBjb2RlRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgIChmKSA9PiBmLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIiB8fCBmLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c1wiLFxuICApXG4gIGNvbnN0IGR0c0ZpbGUgPSBwYWNrYWdlRmlsZXMuZmluZCgoZikgPT4gZi5maWxlX3BhdGggPT09IFwiL2Rpc3QvaW5kZXguZC50c1wiKVxuICBjb25zdCBjb21waWxlZEpzRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgIChmKSA9PiBmLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5qc1wiLFxuICApXG4gIGNvbnN0IG1hbnVhbEVkaXRzSnNvbkZpbGUgPSBwYWNrYWdlRmlsZXMuZmluZChcbiAgICAoZikgPT4gZi5maWxlX3BhdGggPT09IFwibWFudWFsLWVkaXRzLmpzb25cIixcbiAgKVxuICBjb25zdCBjaXJjdWl0SnNvbkZpbGUgPSBwYWNrYWdlRmlsZXMuZmluZChcbiAgICAoZikgPT4gZi5maWxlX3BhdGggPT09IFwiL2Rpc3QvY2lyY3VpdC5qc29uXCIsXG4gIClcblxuICBpZiAoX3BhY2thZ2Uub3duZXJfZ2l0aHViX3VzZXJuYW1lICE9PSBjdHguYXV0aC5naXRodWJfdXNlcm5hbWUpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMywge1xuICAgICAgZXJyb3JfY29kZTogXCJmb3JiaWRkZW5cIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byB1cGRhdGUgdGhpcyBzbmlwcGV0XCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHVwZGF0ZWRTbmlwcGV0ID0gY3R4LmRiLnVwZGF0ZVNuaXBwZXQoc25pcHBldF9pZCwge1xuICAgIGNvZGU6IGNvZGUgPz8gY29kZUZpbGU/LmNvbnRlbnRfdGV4dCA/PyBcIlwiLFxuICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiA/PyBfcGFja2FnZS5kZXNjcmlwdGlvbiA/PyBcIlwiLFxuICAgIHVuc2NvcGVkX25hbWU6IHVuc2NvcGVkX25hbWUgPz8gX3BhY2thZ2UudW5zY29wZWRfbmFtZSxcbiAgICBuYW1lOiB1bnNjb3BlZF9uYW1lXG4gICAgICA/IGAke2N0eC5hdXRoLmdpdGh1Yl91c2VybmFtZX0vJHt1bnNjb3BlZF9uYW1lfWBcbiAgICAgIDogX3BhY2thZ2UubmFtZSxcbiAgICBkdHM6IGR0cyA/PyBkdHNGaWxlPy5jb250ZW50X3RleHQgPz8gXCJcIixcbiAgICBjb21waWxlZF9qczogY29tcGlsZWRfanMgPz8gY29tcGlsZWRKc0ZpbGU/LmNvbnRlbnRfdGV4dCA/PyBcIlwiLFxuICAgIG1hbnVhbF9lZGl0c19qc29uX2NvbnRlbnQ6XG4gICAgICBtYW51YWxfZWRpdHNfanNvbl9jb250ZW50ICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyBtYW51YWxfZWRpdHNfanNvbl9jb250ZW50XG4gICAgICAgIDogKG1hbnVhbEVkaXRzSnNvbkZpbGU/LmNvbnRlbnRfdGV4dCA/PyBcIlwiKSxcbiAgICBjaXJjdWl0X2pzb246XG4gICAgICBjaXJjdWl0X2pzb24gPz9cbiAgICAgIChjaXJjdWl0SnNvbkZpbGU/LmNvbnRlbnRfdGV4dFxuICAgICAgICA/IEpTT04ucGFyc2UoY2lyY3VpdEpzb25GaWxlLmNvbnRlbnRfdGV4dClcbiAgICAgICAgOiBbXSksXG4gICAgc25pcHBldF90eXBlOiBzbmlwcGV0X3R5cGUgPz8gX3BhY2thZ2Uuc25pcHBldF90eXBlLFxuICAgIGlzX3ByaXZhdGU6IGlzX3ByaXZhdGUgPz8gX3BhY2thZ2UuaXNfcHJpdmF0ZSA/PyBmYWxzZSxcbiAgICBpc191bmxpc3RlZDogaXNfdW5saXN0ZWQgPz8gX3BhY2thZ2UuaXNfdW5saXN0ZWQgPz8gZmFsc2UsXG4gICAgdXBkYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICB9KVxuXG4gIGlmICghdXBkYXRlZFNuaXBwZXQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDUwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJ1cGRhdGVfZmFpbGVkXCIsXG4gICAgICBtZXNzYWdlOiBcIkZhaWxlZCB0byB1cGRhdGUgc25pcHBldFwiLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICAgIHNuaXBwZXQ6IHVwZGF0ZWRTbmlwcGV0LFxuICB9KVxufSlcbiJdLAogICJtYXBwaW5ncyI6ICI7QUFBQSxTQUFRLHVCQUFzQjtBQUM5QixTQUFTLG9DQUFvQzs7O0FDRDdDLFNBQVMsNEJBQTRCOzs7QUNDckMsU0FBUyxhQUFhO0FBQ3RCLFNBQVMsbUJBQW1CO0FBRTVCLFNBQVMsZUFBZTs7O0FDSnhCLFNBQVMsU0FBUztBQUVYLElBQU0sY0FBYyxFQUN4QixPQUFPO0FBQUEsRUFDTixZQUFZLEVBQUUsT0FBTztBQUFBLEVBQ3JCLFNBQVMsRUFBRSxPQUFPO0FBQ3BCLENBQUMsRUFDQSxZQUFZO0FBRVIsSUFBTSxzQkFBc0IsRUFBRSxPQUFPO0FBQUEsRUFDMUMsT0FBTztBQUNULENBQUM7QUFFTSxJQUFNLGdCQUFnQixFQUFFLE9BQU87QUFBQSxFQUNwQyxZQUFZLEVBQUUsT0FBTztBQUFBLEVBQ3JCLG9CQUFvQixFQUFFLE9BQU87QUFBQSxFQUM3QixNQUFNLEVBQUUsT0FBTztBQUFBLEVBQ2YsZUFBZSxFQUFFLE9BQU87QUFBQSxFQUN4QixZQUFZLEVBQUUsT0FBTztBQUFBLEVBQ3JCLFlBQVksRUFBRSxRQUFRLEVBQUUsUUFBUSxLQUFLO0FBQUEsRUFDckMsTUFBTSxFQUFFLE9BQU87QUFBQSxFQUNmLEtBQUssRUFBRSxPQUFPLEVBQUUsU0FBUztBQUFBLEVBQ3pCLGFBQWEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVM7QUFBQSxFQUM1QyxjQUFjLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxTQUFTO0FBQUEsRUFDN0QsMkJBQTJCLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTO0FBQUEsRUFDMUQsWUFBWSxFQUFFLE9BQU87QUFBQSxFQUNyQixZQUFZLEVBQUUsT0FBTztB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LGNBQWM7QUFBQSxJQUNkLGFBQWE7QUFBQSxJQUNiLGNBQWM7QUFBQSxNQUNaO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixnQkFBZ0I7QUFBQSxRQUNoQixNQUFNO0FBQUEsUUFDTixZQUFZO0FBQUEsUUFDWixZQUFZLENBQUMsUUFBUSxHQUFHO0FBQUEsUUFDeEIscUJBQXFCO0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixnQkFBZ0I7QUFBQSxRQUNoQixNQUFNO0FBQUEsUUFDTixZQUFZO0FBQUEsUUFDWixZQUFZLENBQUMsUUFBUSxHQUFHO0FBQUEsUUFDeEIscUJBQXFCO0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixnQkFBZ0I7QUFBQSxRQUNoQixNQUFNO0FBQUEsUUFDTixZQUFZO0FBQUEsUUFDWixZQUFZLENBQUMsUUFBUSxHQUFHO0FBQUEsUUFDeEIscUJBQXFCO0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixnQkFBZ0I7QUFBQSxRQUNoQixNQUFNO0FBQUEsUUFDTixZQUFZO0FBQUEsUUFDWixZQUFZLENBQUMsUUFBUSxHQUFHO0FBQUEsUUFDeEIscUJBQXFCO0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixnQkFBZ0I7QUFBQSxRQUNoQixNQUFNO0FBQUEsUUFDTixZQUFZO0FBQUEsUUFDWixZQUFZLENBQUMsUUFBUSxHQUFHO0FBQUEsUUFDeEIscUJBQXFCO0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixnQkFBZ0I7QUFBQSxRQUNoQixNQUFNO0FBQUEsUUFDTixZQUFZO0FBQUEsUUFDWixZQUFZLENBQUMsUUFBUSxHQUFHO0FBQUEsUUFDeEIscUJBQXFCO0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixnQkFBZ0I7QUFBQSxRQUNoQixNQUFNO0FBQUEsUUFDTixZQUFZ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SUFDZCxhQUFhO0FBQUEsSUFDYixjQUFjO0FBQUEsTUFDWjtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04scUJBQXFCO0FBQUEsUUFDckIsT0FBTztBQUFBLFFBQ1AsTUFBTTtBQUFBLE1BQ1I7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsVUFBVTtBQUFBLFFBQ1YsTUFBTTtBQUFBLFVBQ0osT0FBTztBQUFBLFVBQ1AsUUFBUTtBQUFBLFFBQ1Y7QUFBQSxRQUNBLGFBQWE7QUFBQSxRQUNiLGFBQWEsQ0FBQztBQUFBLFFBQ2QscUJBQXFCO0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtC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QjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04scUJBQXFCO0FBQUEsUUFDckIsT0FBTztBQUFBLFFBQ1AsTUFBTTtBQUFBLE1BQ1I7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsVUFBVTtBQUFBLFFBQ1YsTUFBTTtBQUFBLFVBQ0osT0FBTztBQUFBLFVBQ1AsUUFBUTtBQUFBLFFBQ1Y7QUFBQSxRQUNBLGFBQWE7QUFBQSxRQUNiLGFBQWEsQ0FBQztBQUFBLFFBQ2QscUJBQXFCO0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFB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LEVBQVEsd0JBQXlDSjtBQUFBLEVBQVEsd0JBQXlDRztBQUFBLEVBQVEsMEJBQTJDRTtBQUFBLEVBQVEsc0NBQXVEO0FBQUEsRUFBUSwyQkFBNEM7QUFBQSxFQUFRLHFCQUFzQ047QUFBQSxFQUFRLDZEQUE4RTtBQUFBLEVBQVEsNkJBQThDO0FBQUEsRUFBUSwrQkFBZ0Q7QUFBQSxFQUFRLHNCQUF1Q0U7QUFBQSxFQUFRLDZCQUE4Q0s7QUFBQSxFQUFRLHdCQUF5QztBQUFBLEVBQVEsd0JBQXlDSjtBQUM3cEY7QUFFQSxJQUFNLGFBQWE7QUFBQSxFQUNqQixjQUFjLGdCQUFnQixPQUFPLEtBQUssb0JBQW9CLENBQUM7QUFBQSxFQUMvRDtBQUFBLEVBQ0EsYUFBYSxPQUFPLEtBQUssWUFBWSw2QkFBNkIsWUFBWSxPQUFPLEVBQUUsR0FBRztBQUM1RjtBQUVBLElBQU8sZ0JBQVE7IiwKICAibmFtZXMiOiBbInNlZWQiLCAic3RhdGUiLCAicGFja2FnZVJlbGVhc2UiLCAicGFja2FnZUZpbGVzIiwgInBrZyIsICJrbGV1ciIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJhbnlyb3V0ZV9kZWZhdWx0IiwgInoiLCAieiIsICJ6IiwgImdldF9kZWZhdWx0IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJ6IiwgImdldF9kZWZhdWx0IiwgInoiLCAieiIsICJjcmVhdGVfZGVmYXVsdCIsICJ6IiwgImdldF9kZWZhdWx0IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJyb3V0ZVNwZWMiLCAiY3JlYXRlX2RlZmF1bHQiLCAieiIsICJ6IiwgInoiLCAicm91dGVTcGVjIiwgInoiLCAicm91dGVTcGVjIiwgInoiLCAiZ2V0X2RlZmF1bHQiLCAieiIsICJyb3V0ZVNwZWMiLCAieiIsICJsaXN0X2RlZmF1bHQiLCAieiIsICJjcmVhdGVfZGVmYXVsdCIsICJ6IiwgImdldF9kZWZhdWx0IiwgInoiLCAibGlzdF9kZWZhdWx0IiwgInoiLCAidXBkYXRlX2RlZmF1bHQiLCAicmVsZWFzZSIsICJ6IiwgInBrZyIsICJ6IiwgImNyZWF0ZV9kZWZhdWx0IiwgInoiLCAiZGVsZXRlX2RlZmF1bHQiLCAieiIsICJ6IiwgImdldF9kZWZhdWx0IiwgInoiLCAibGlzdF9kZWZhdWx0IiwgInoiLCAicGtnIiwgInoiLCAidXBkYXRlX2RlZmF1bHQiLCAieiIsICJ6IiwgImFkZF9zdGFyX2RlZmF1bHQiLCAieiIsICJjcmVhdGVfZGVmYXVsdCIsICJ6IiwgImRlbGV0ZV9kZWZhdWx0IiwgInoiLCAiZG93bmxvYWRfZGVmYXVsdCIsICJ6IiwgInoiLCAieiIsICJ6IiwgImdldF9kZWZhdWx0IiwgImNvbnZlcnRDaXJjdWl0SnNvblRvUGNiU3ZnIiwgImNvbnZlcnRDaXJjdWl0SnNvblRvU2NoZW1hdGljU3ZnIiwgInoiLCAiY29udmVydENpcmN1aXRKc29uVG9TY2hlbWF0aWNTdmciLCAiY29udmVydENpcmN1aXRKc29uVG9QY2JTdmciLCAieiIsICJ6IiwgInoiLCAieiIsICJ6IiwgImxpc3RfZGVmYXVsdCIsICJ6IiwgInoiLCAicmVtb3ZlX3N0YXJfZGVmYXVsdCIsICJ6IiwgInoiLCAieiIsICJ1cGRhdGVfZGVmYXVsdCIsICJ6IiwgImFueXJvdXRlX2RlZmF1bHQiLCAiZ2V0X2RlZmF1bHQiLCAiY3JlYXRlX2RlZmF1bHQiLCAibGlzdF9kZWZhdWx0IiwgInVwZGF0ZV9kZWZhdWx0IiwgImRlbGV0ZV9kZWZhdWx0IiwgImFkZF9zdGFyX2RlZmF1bHQiLCAiZG93bmxvYWRfZGVmYXVsdCIsICJyZW1vdmVfc3Rhcl9kZWZhdWx0Il0KfQo=