@prisma/studio-core 0.0.0-dev.202505141903 → 0.0.0-dev.202505141908

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.
package/dist/ui/index.js CHANGED
@@ -320,4 +320,4 @@ lucide-react/dist/esm/lucide-react.js:
320
320
  * @license MIT
321
321
  *)
322
322
  */
323
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vdWkvc3R1ZGlvL1N0dWRpby50c3giLCAiLi4vLi4vdWkvaG9va3MvbnVxcy50cyIsICIuLi8uLi91aS9saWIvdXRpbHMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL2NsYXNzLWdyb3VwLXV0aWxzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9scnUtY2FjaGUudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL3BhcnNlLWNsYXNzLW5hbWUudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL2NvbmZpZy11dGlscy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvbWVyZ2UtY2xhc3NsaXN0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi90dy1qb2luLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9jcmVhdGUtdGFpbHdpbmQtbWVyZ2UudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL2Zyb20tdGhlbWUudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL3ZhbGlkYXRvcnMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL2RlZmF1bHQtY29uZmlnLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9tZXJnZS1jb25maWdzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9leHRlbmQtdGFpbHdpbmQtbWVyZ2UudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL3R3LW1lcmdlLnRzIiwgIi4uLy4uL3VpL3N0dWRpby9BY3RpdmVUYWJsZVZpZXcudHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL3NoYXJlZC9zcmMvdXRpbHMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9kZWZhdWx0QXR0cmlidXRlcy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL0ljb24udHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9jcmVhdGVMdWNpZGVJY29uLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvYXJyb3ctZG93bi13aWRlLW5hcnJvdy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2Fycm93LXJpZ2h0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvYXJyb3ctdXAtd2lkZS1uYXJyb3cudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaGVjay50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NoZXZyb24tZG93bi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NoZXZyb24tbGVmdC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NoZXZyb24tcmlnaHQudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaGV2cm9uLXVwLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbnMtbGVmdC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NoZXZyb25zLXJpZ2h0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2lyY2xlLWFsZXJ0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2lyY2xlLWhlbHAudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaXJjbGUudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jb3B5LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY29ybmVyLWRvd24tbGVmdC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2ZpbHRlci50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2dyaXAtdmVydGljYWwudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9rZXktcm91bmQudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9rZXkudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9tYXhpbWl6ZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL21pbmltaXplLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvbW92ZS1kb3duLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvbW92ZS11cC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL3BhbmVsLWxlZnQtY2xvc2UudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9wYW5lbC1sZWZ0LW9wZW4udHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9waW4tb2ZmLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvcGluLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvcmVmcmVzaC1jdy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL3NxdWFyZS1hcnJvdy1yaWdodC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL3RhYmxlLTIudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy94LnRzIiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvYmFkZ2UudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvYnV0dG9uLnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3BvcG92ZXIudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvdGFibGUudHN4IiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1hY3RpdmUtdGFibGUtaW5zZXJ0LnRzIiwgIi4uLy4uL3VpL3N0dWRpby9jb250ZXh0LnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXF1ZXJ5LWRldnRvb2xzQDUuNzIuMl9AdGFuc3RhY2srcmVhY3QtcXVlcnlANS43Mi4yX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5LWRldnRvb2xzL3NyYy9SZWFjdFF1ZXJ5RGV2dG9vbHMudHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcXVlcnktZGV2dG9vbHNANS43Mi4yL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcXVlcnktZGV2dG9vbHMvYnVpbGQvaW5kZXguanMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC1xdWVyeS1kZXZ0b29sc0A1LjcyLjJfQHRhbnN0YWNrK3JlYWN0LXF1ZXJ5QDUuNzIuMl9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC1xdWVyeS1kZXZ0b29scy9zcmMvUmVhY3RRdWVyeURldnRvb2xzUGFuZWwudHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtcXVlcnktZGV2dG9vbHNANS43Mi4yX0B0YW5zdGFjaytyZWFjdC1xdWVyeUA1LjcyLjJfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtcXVlcnktZGV2dG9vbHMvc3JjL2luZGV4LnRzIiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvc29ubmVyLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vTnVxc0hhc2hBZGFwdGVyLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vVVJMRGVmYXVsdHNIYW5kbGVyLnRzeCIsICIuLi8uLi91aS9ob29rcy91c2UtaW50cm9zcGVjdGlvbi50cyIsICIuLi8uLi91aS9ob29rcy91dGlscy9hZGQtcm93LWlkLXRvLXJlc3VsdC50cyIsICIuLi8uLi91aS9ob29rcy91c2UtYWN0aXZlLXRhYmxlLXF1ZXJ5LnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1hY3RpdmUtdGFibGUtdXBkYXRlLnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1maWx0ZXJpbmcudHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLWlzLWluc2VydGluZy50cyIsICIuLi8uLi91aS9ob29rcy91c2UtcGFnaW5hdGlvbi50cyIsICIuLi8uLi91aS9ob29rcy91c2Utc2VsZWN0aW9uLnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1hY3RpdmUtdGFibGUtZGVsZXRlLnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1zb3J0aW5nLnRzIiwgIi4uLy4uL3VpL3N0dWRpby9ncmlkL0RhdGFHcmlkQ2VsbENvbnRleHRNZW51LnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2NvbnRleHQtbWVudS50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvZ2V0LWNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL0Jvb2xlYW5DZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9EYXRlQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvRW1wdHlDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9FbnVtQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvSlNPTkNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL051bGxDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9OdW1lcmljQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvUmF3Q2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvVGltZUNlbGwudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvY2hlY2tib3gudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL1NlbGVjdEhlYWRlckNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL1NlbGVjdFJvd0NlbGwudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9Xcml0ZWFibGVDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vRmlsdGVyVHJlZS50c3giLCAiLi4vLi4vbGliL2NvbnZlcnNpb25VdGlscy50cyIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2Ryb3Bkb3duLW1lbnUudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvaW5wdXQudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvc2VsZWN0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZC50c3giLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC10YWJsZS1kZXZ0b29sc0A4LjIxLjNfcmVhY3QtZG9tQDE4LjMuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC10YWJsZS1kZXZ0b29scy9zcmMvdXNlTG9jYWxTdG9yYWdlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL3RoZW1lLnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXRhYmxlLWRldnRvb2xzQDguMjEuM19yZWFjdC1kb21AMTguMy4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzL3NyYy91c2VNZWRpYVF1ZXJ5LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL3V0aWxzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL3N0eWxlZENvbXBvbmVudHMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC10YWJsZS1kZXZ0b29sc0A4LjIxLjNfcmVhY3QtZG9tQDE4LjMuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC10YWJsZS1kZXZ0b29scy9zcmMvRXhwbG9yZXIudHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL0xvZ28udHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL2luZGV4LnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3NrZWxldG9uLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZExvYWRpbmdCYXIudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9ncmlkL0RhdGFHcmlkUGFnaW5hdGlvbi50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvZmVhdHVyZXMvY29sdW1uLXBpbm5pbmcudHMiLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvRGF0YUdyaWREcmFnZ2FibGVIZWFkZXJDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZEhlYWRlci50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS90b29sdGlwLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZEhlYWRlckNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC9nZXQtaW5wdXQudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC9Cb29sZWFuSW5wdXQudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvbGFiZWwudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvc3dpdGNoLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvaW5wdXQtYWN0aW9ucy50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L0RhdGVJbnB1dC50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9jYWxlbmRhci50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L3VzZS1pbnB1dC50cyIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvRW51bUlucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvSnNvbklucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvTnVtZXJpY0lucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvUmF3SW5wdXQudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC9UaW1lSW5wdXQudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9saW5rL2dldC1saW5rLnRzeCIsICIuLi8uLi91aS9ob29rcy91c2UtYWN0aXZlLXRhYmxlLnRzIiwgIi4uLy4uL3VpL3N0dWRpby9TdGFnZWRSb3dzLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vU3R1ZGlvSGVhZGVyLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vQmFzaWNWaWV3LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vTmF2aWdhdGlvbi50c3giLCAiLi4vLi4vdWkvaG9va3MvdXNlLXNjaGVtYS12aXN1YWxpemF0aW9uLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vc2NoZW1hL1Zpc3VhbGlzZXIudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9zY2hlbWEvU2NoZW1hVmlldy50c3giXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IEFuaW1hdGVQcmVzZW5jZSwgbW90aW9uIH0gZnJvbSBcIm1vdGlvbi9yZWFjdFwiO1xuXG5pbXBvcnQgdHlwZSB7IEFkYXB0ZXIgfSBmcm9tIFwiLi4vLi4vZGF0YVwiO1xuaW1wb3J0IHsgdXNlUXVlcnlTdGF0ZSB9IGZyb20gXCIuLi9ob29rcy9udXFzXCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi9saWIvdXRpbHNcIjtcbmltcG9ydCB7IEFjdGl2ZVRhYmxlVmlldyB9IGZyb20gXCIuL0FjdGl2ZVRhYmxlVmlld1wiO1xuaW1wb3J0IHsgQmFzaWNWaWV3IH0gZnJvbSBcIi4vQmFzaWNWaWV3XCI7XG5pbXBvcnQgeyBTdHVkaW9Db250ZXh0UHJvdmlkZXIsIHVzZVN0dWRpbyB9IGZyb20gXCIuL2NvbnRleHRcIjtcbmltcG9ydCB7IE5hdmlnYXRpb24gfSBmcm9tIFwiLi9OYXZpZ2F0aW9uXCI7XG5pbXBvcnQgeyBTY2hlbWFWaWV3IH0gZnJvbSBcIi4vc2NoZW1hL1NjaGVtYVZpZXdcIjtcblxuZXhwb3J0IHR5cGUgU3R1ZGlvVGVsZW1ldHJ5RXZlbnQgPSB7XG4gIGV2ZW50OiBcInN0dWRpb19sYXVuY2hlZFwiO1xuICBwYXlsb2FkOiB7XG4gICAgZXZlbnRfaWQ6IHN0cmluZztcbiAgICB0aW1lc3RhbXA6IHN0cmluZztcbiAgICB1c2VyX2lkPzogc3RyaW5nO1xuICAgIHdvcmtzcGFjZV9pZD86IHN0cmluZztcbiAgICBvcmdhbml6YXRpb25faWQ/OiBzdHJpbmc7XG4gICAgZW1iZWRkaW5nX3R5cGU/OiBzdHJpbmc7XG4gICAgdmVuZG9yX2lkPzogc3RyaW5nO1xuICAgIHRhYmxlX2NvdW50OiBudW1iZXI7XG4gIH07XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0dWRpb1Byb3BzIHtcbiAgYWRhcHRlcjogQWRhcHRlcjtcbiAgb25FcnJvcj86IChlcnJvcjogRXJyb3IpID0+IHZvaWQ7XG4gIG9uVGVsZW1ldHJ5RXZlbnQ/OiAoYXJnczogU3R1ZGlvVGVsZW1ldHJ5RXZlbnQpID0+IHZvaWQ7XG59XG5cbi8qKlxuICogTWFpbiBTdHVkaW8gY29tcG9uZW50IHRoYXQgcHJvdmlkZXMgZGF0YWJhc2UgdmlzdWFsaXphdGlvbiBhbmQgbWFuYWdlbWVudFxuICovXG5leHBvcnQgZnVuY3Rpb24gU3R1ZGlvKHByb3BzOiBTdHVkaW9Qcm9wcykge1xuICBjb25zdCB7IGFkYXB0ZXIsIG9uRXJyb3IsIG9uVGVsZW1ldHJ5RXZlbnQgfSA9IHByb3BzO1xuXG4gIGlmICghYWRhcHRlcikge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJObyBhZGFwdGVyIHByb3ZpZGVkIHRvIFN0dWRpbyBjb21wb25lbnRcIik7XG4gICAgcmV0dXJuIDxkaXY+RXJyb3I6IE5vIGFkYXB0ZXIgcHJvdmlkZWQ8L2Rpdj47XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTdHVkaW9Db250ZXh0UHJvdmlkZXIgYWRhcHRlcj17YWRhcHRlcn0gb25FcnJvcj17b25FcnJvcn0gb25UZWxlbWV0cnlFdmVudD17b25UZWxlbWV0cnlFdmVudH0+XG4gICAgICA8U3R1ZGlvQ29udGVudCAvPlxuICAgIDwvU3R1ZGlvQ29udGV4dFByb3ZpZGVyPlxuICApO1xufVxuXG5mdW5jdGlvbiBTdHVkaW9Db250ZW50KCkge1xuICBjb25zdCB7IGlzRnVsbHNjcmVlbiwgaXNOYXZpZ2F0aW9uT3BlbiB9ID0gdXNlU3R1ZGlvKCk7XG4gIGNvbnN0IFt2aWV3XSA9IHVzZVF1ZXJ5U3RhdGUoXCJ2aWV3XCIpO1xuXG4gIGNvbnN0IGNvbnRhaW5lckNsYXNzZXMgPSBjbihcbiAgICBcInBzLWZsZXggcHMtZmxleC1jb2wgcHMtdy1mdWxsIHBzLW1pbi1oLTAgcHMtbWF4LWgtZnVsbFwiLFxuICAgIGlzRnVsbHNjcmVlbiAmJiBcInBzLWZpeGVkIHBzLWluc2V0LTAgcHMtei1bOTk5OV0gcHMtYmctYmFja2dyb3VuZCBwcy1wLTJcIixcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgZGF0YS1mdWxsc2NyZWVuPXtpc0Z1bGxzY3JlZW59IGNsYXNzTmFtZT17Y29udGFpbmVyQ2xhc3Nlc30+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZ2FwLTAgcHMtdy1mdWxsIHBzLWJnLW5ldXRyYWwtNTAgcHMtcmVsYXRpdmUgcHMtbWF4LWgtZnVsbCBwcy1taW4taC1mdWxsIHBzLXJvdW5kZWQtbGdcIj5cbiAgICAgICAgPEFuaW1hdGVQcmVzZW5jZSBtb2RlPVwid2FpdFwiPlxuICAgICAgICAgIHtpc05hdmlnYXRpb25PcGVuICYmIChcbiAgICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICAgIGluaXRpYWw9e3sgd2lkdGg6IDAsIG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICAgICAgYW5pbWF0ZT17eyB3aWR0aDogXCJhdXRvXCIsIG9wYWNpdHk6IDEgfX1cbiAgICAgICAgICAgICAgZXhpdD17eyB3aWR0aDogMCwgb3BhY2l0eTogMCB9fVxuICAgICAgICAgICAgICB0cmFuc2l0aW9uPXt7IGR1cmF0aW9uOiAwLjE0IH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxOYXZpZ2F0aW9uIC8+XG4gICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9BbmltYXRlUHJlc2VuY2U+XG5cbiAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLXctZnVsbCBwcy1iZy1uZXV0cmFsLTEwMCBwcy1mbGV4LWNvbCBwcy1wLXB4IHBzLXJvdW5kZWQtbGcgcHMtc2VsZi1zdGFydCBwcy1oLWZ1bGwgcHMtbWluLWgtZnVsbCBwcy1tYXgtaC1mdWxsIHBzLW92ZXJmbG93LWNsaXBcIlxuICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDAuMTQgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHt2aWV3ID09PSBcInNjaGVtYVwiID8gPFNjaGVtYVZpZXcgLz4gOiAhdmlldyB8fCB2aWV3ID09PSBcInRhYmxlXCIgPyA8QWN0aXZlVGFibGVWaWV3IC8+IDogPEJhc2ljVmlldyAvPn1cbiAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCAiLy8gd2UncmUgZW5zdXJpbmcgdGhhdCBrZXlzIGFyZSB0eXBlLXNhZmUuIHRoZXJlIGlzIG5vIHByb3BlciB3YXkgdG8gYWNoaWV2ZSBpdCBpbiBgbnVxc2AuXG4vLyB0aGUgYGRlY2xhcmUgbW9kdWxlYCB0ZWNobmlxdWUgcmVzdWx0cyBpbiBhZGRpbmcgb3ZlcmxvYWRzLCBub3Qgb3ZlcnJpZGluZyB0aGUgZXhpc3RpbmcgZnVuY3Rpb25zLlxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1pbXBvcnRzXG5pbXBvcnQge1xuICB0eXBlIE9wdGlvbnMsXG4gIHR5cGUgUGFyc2VyLFxuICB1c2VRdWVyeVN0YXRlIGFzIHVzZVF1ZXJ5U3RhdGVPcmlnaW5hbCxcbiAgdHlwZSBVc2VRdWVyeVN0YXRlT3B0aW9ucyxcbiAgdHlwZSBVc2VRdWVyeVN0YXRlUmV0dXJuLFxuICB1c2VRdWVyeVN0YXRlcyBhcyB1c2VRdWVyeVN0YXRlc09yaWdpbmFsLFxuICB0eXBlIFVzZVF1ZXJ5U3RhdGVzT3B0aW9ucyxcbiAgdHlwZSBVc2VRdWVyeVN0YXRlc1JldHVybixcbn0gZnJvbSBcIm51cXNcIjtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtaW1wb3J0c1xuZXhwb3J0ICogZnJvbSBcIm51cXNcIjtcblxuZXhwb3J0IHR5cGUgU3RhdGVLZXkgPSBcInBhZ2VJbmRleFwiIHwgXCJwYWdlU2l6ZVwiIHwgXCJ0YWJsZVwiIHwgXCJzb3J0XCIgfCBcInNjaGVtYVwiIHwgXCJ0ZXN0XCIgfCBcImZpbHRlclwiIHwgXCJ2aWV3XCI7XG5cbi8vIGxpZnRlZCBmcm9tIEBwcmlzbWEvY2xpZW50L3J1bnRpbWVcbnR5cGUgRXhhY3Q8QSwgVz4gPVxuICB8IChBIGV4dGVuZHMgdW5rbm93blxuICAgICAgPyBXIGV4dGVuZHMgQVxuICAgICAgICA/IHtcbiAgICAgICAgICAgIFtLIGluIGtleW9mIEFdOiBFeGFjdDxBW0tdLCBXW0tdPjtcbiAgICAgICAgICB9XG4gICAgICAgIDogV1xuICAgICAgOiBuZXZlcilcbiAgfCAoQSBleHRlbmRzIHN0cmluZyB8IG51bWJlciB8IGJpZ2ludCB8IGJvb2xlYW4gfCBbXSA/IEEgOiBuZXZlcik7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgZnVuY3Rpb24ga2V5TWFwPGNvbnN0IE1hcCBleHRlbmRzIFBhcnRpYWw8UmVjb3JkPFN0YXRlS2V5LCBhbnk+Pj4oXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIGtleU1hcDogRXhhY3Q8TWFwLCBQYXJ0aWFsPFJlY29yZDxTdGF0ZUtleSwgYW55Pj4+LFxuKTogQnJhbmRlZEtleU1hcDxNYXA+IHtcbiAgcmV0dXJuIGtleU1hcCBhcyBuZXZlcjtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBmdW5jdGlvbiB1cmxLZXlzPGNvbnN0IE1hcCBleHRlbmRzIFBhcnRpYWw8UmVjb3JkPFN0YXRlS2V5LCBzdHJpbmc+Pj4oXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIHVybEtleXM6IEV4YWN0PE1hcCwgUGFydGlhbDxSZWNvcmQ8U3RhdGVLZXksIHN0cmluZz4+Pixcbik6IEJyYW5kZWRLZXlNYXA8TWFwPiB7XG4gIHJldHVybiB1cmxLZXlzIGFzIG5ldmVyO1xufVxuXG5jb25zdCBfQlJBTkRfU1lNQk9MID0gU3ltYm9sKFwiQlJBTkRfU1lNQk9MXCIpO1xuXG50eXBlIEJyYW5kZWRLZXlNYXA8TWFwPiA9IE1hcCAmIHtcbiAgW0sgaW4gdHlwZW9mIF9CUkFORF9TWU1CT0xdOiBuZXZlcjtcbn07XG5cbi8qKlxuICogQHNlZSB7QGxpbmsgdXNlUXVlcnlTdGF0ZU9yaWdpbmFsfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlUXVlcnlTdGF0ZTxUPihcbiAga2V5OiBTdGF0ZUtleSxcbiAgb3B0aW9uczogVXNlUXVlcnlTdGF0ZU9wdGlvbnM8VD4gJiB7XG4gICAgZGVmYXVsdFZhbHVlOiBUO1xuICB9LFxuKTogVXNlUXVlcnlTdGF0ZVJldHVybjxOb25OdWxsYWJsZTxSZXR1cm5UeXBlPHR5cGVvZiBvcHRpb25zLnBhcnNlPj4sIHR5cGVvZiBvcHRpb25zLmRlZmF1bHRWYWx1ZT47XG5leHBvcnQgZnVuY3Rpb24gdXNlUXVlcnlTdGF0ZTxUPihcbiAga2V5OiBTdGF0ZUtleSxcbiAgb3B0aW9uczogVXNlUXVlcnlTdGF0ZU9wdGlvbnM8VD4sXG4pOiBVc2VRdWVyeVN0YXRlUmV0dXJuPE5vbk51bGxhYmxlPFJldHVyblR5cGU8dHlwZW9mIG9wdGlvbnMucGFyc2U+PiwgdW5kZWZpbmVkPjtcbmV4cG9ydCBmdW5jdGlvbiB1c2VRdWVyeVN0YXRlKFxuICBrZXk6IFN0YXRlS2V5LFxuICBvcHRpb25zOiBPcHRpb25zICYge1xuICAgIGRlZmF1bHRWYWx1ZTogc3RyaW5nO1xuICB9LFxuKTogVXNlUXVlcnlTdGF0ZVJldHVybjxzdHJpbmcsIHR5cGVvZiBvcHRpb25zLmRlZmF1bHRWYWx1ZT47XG5leHBvcnQgZnVuY3Rpb24gdXNlUXVlcnlTdGF0ZShcbiAga2V5OiBTdGF0ZUtleSxcbiAgb3B0aW9uczogUGljazxVc2VRdWVyeVN0YXRlT3B0aW9uczxzdHJpbmc+LCBrZXlvZiBPcHRpb25zPixcbik6IFVzZVF1ZXJ5U3RhdGVSZXR1cm48c3RyaW5nLCB1bmRlZmluZWQ+O1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGUoa2V5OiBTdGF0ZUtleSk6IFVzZVF1ZXJ5U3RhdGVSZXR1cm48c3RyaW5nLCB1bmRlZmluZWQ+O1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBmdW5jdGlvbiB1c2VRdWVyeVN0YXRlKGtleTogU3RhdGVLZXksIG9wdGlvbnM/OiBhbnkpOiBhbnkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hcmd1bWVudFxuICByZXR1cm4gdXNlUXVlcnlTdGF0ZU9yaWdpbmFsKGtleSwgb3B0aW9ucyk7XG59XG5cbnR5cGUgVXNlUXVlcnlTdGF0ZXNLZXlzTWFwPFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBNYXAgZXh0ZW5kcyBQYXJ0aWFsPFJlY29yZDxTdGF0ZUtleSwgYW55Pj4gPSBQYXJ0aWFsPFJlY29yZDxTdGF0ZUtleSwgYW55Pj4sXG4+ID0ge1xuICBbS2V5IGluIGtleW9mIE1hcF06IEtleU1hcFZhbHVlPE1hcFtLZXldPjtcbn07XG5cbnR5cGUgS2V5TWFwVmFsdWU8VHlwZT4gPSBQYXJzZXI8VHlwZT4gJlxuICBPcHRpb25zICYge1xuICAgIGRlZmF1bHRWYWx1ZT86IFR5cGU7XG4gIH07XG5cbi8qKlxuICogQHNlZSB7QGxpbmsgdXNlUXVlcnlTdGF0ZXNPcmlnaW5hbH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGVzPEtleU1hcCBleHRlbmRzIFVzZVF1ZXJ5U3RhdGVzS2V5c01hcD4oXG4gIGtleU1hcDogQnJhbmRlZEtleU1hcDxLZXlNYXA+LFxuICBvcHRpb25zPzogUGFydGlhbDxVc2VRdWVyeVN0YXRlc09wdGlvbnM8S2V5TWFwPj4sXG4pOiBVc2VRdWVyeVN0YXRlc1JldHVybjxLZXlNYXA+IHtcbiAgcmV0dXJuIHVzZVF1ZXJ5U3RhdGVzT3JpZ2luYWwoa2V5TWFwIGFzIG5ldmVyLCBvcHRpb25zKTtcbn1cbiIsICIvLyBzaGFkY24gdXRpbHNcbmltcG9ydCB7IHR5cGUgQ2xhc3NWYWx1ZSwgY2xzeCB9IGZyb20gXCJjbHN4XCI7XG5pbXBvcnQgeyBleHRlbmRUYWlsd2luZE1lcmdlIH0gZnJvbSBcInRhaWx3aW5kLW1lcmdlXCI7XG5cbmV4cG9ydCBjb25zdCB0d01lcmdlID0gZXh0ZW5kVGFpbHdpbmRNZXJnZSh7XG4gIHByZWZpeDogXCJwcy1cIixcbn0pO1xuXG5leHBvcnQgZnVuY3Rpb24gY24oLi4uaW5wdXRzOiBDbGFzc1ZhbHVlW10pIHtcbiAgcmV0dXJuIHR3TWVyZ2UoY2xzeChpbnB1dHMpKTtcbn1cbiIsICJpbXBvcnQge1xuICAgIENsYXNzR3JvdXAsXG4gICAgQ2xhc3NWYWxpZGF0b3IsXG4gICAgQ29uZmlnLFxuICAgIEdlbmVyaWNDbGFzc0dyb3VwSWRzLFxuICAgIEdlbmVyaWNDb25maWcsXG4gICAgR2VuZXJpY1RoZW1lR3JvdXBJZHMsXG4gICAgVGhlbWVHZXR0ZXIsXG4gICAgVGhlbWVPYmplY3QsXG59IGZyb20gJy4vdHlwZXMnXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xhc3NQYXJ0T2JqZWN0IHtcbiAgICBuZXh0UGFydDogTWFwPHN0cmluZywgQ2xhc3NQYXJ0T2JqZWN0PlxuICAgIHZhbGlkYXRvcnM6IENsYXNzVmFsaWRhdG9yT2JqZWN0W11cbiAgICBjbGFzc0dyb3VwSWQ/OiBHZW5lcmljQ2xhc3NHcm91cElkc1xufVxuXG5pbnRlcmZhY2UgQ2xhc3NWYWxpZGF0b3JPYmplY3Qge1xuICAgIGNsYXNzR3JvdXBJZDogR2VuZXJpY0NsYXNzR3JvdXBJZHNcbiAgICB2YWxpZGF0b3I6IENsYXNzVmFsaWRhdG9yXG59XG5cbmNvbnN0IENMQVNTX1BBUlRfU0VQQVJBVE9SID0gJy0nXG5cbmV4cG9ydCBjb25zdCBjcmVhdGVDbGFzc0dyb3VwVXRpbHMgPSAoY29uZmlnOiBHZW5lcmljQ29uZmlnKSA9PiB7XG4gICAgY29uc3QgY2xhc3NNYXAgPSBjcmVhdGVDbGFzc01hcChjb25maWcpXG4gICAgY29uc3QgeyBjb25mbGljdGluZ0NsYXNzR3JvdXBzLCBjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnMgfSA9IGNvbmZpZ1xuXG4gICAgY29uc3QgZ2V0Q2xhc3NHcm91cElkID0gKGNsYXNzTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IGNsYXNzUGFydHMgPSBjbGFzc05hbWUuc3BsaXQoQ0xBU1NfUEFSVF9TRVBBUkFUT1IpXG5cbiAgICAgICAgLy8gQ2xhc3NlcyBsaWtlIGAtaW5zZXQtMWAgcHJvZHVjZSBhbiBlbXB0eSBzdHJpbmcgYXMgZmlyc3QgY2xhc3NQYXJ0LiBXZSBhc3N1bWUgdGhhdCBjbGFzc2VzIGZvciBuZWdhdGl2ZSB2YWx1ZXMgYXJlIHVzZWQgY29ycmVjdGx5IGFuZCByZW1vdmUgaXQgZnJvbSBjbGFzc1BhcnRzLlxuICAgICAgICBpZiAoY2xhc3NQYXJ0c1swXSA9PT0gJycgJiYgY2xhc3NQYXJ0cy5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgICAgIGNsYXNzUGFydHMuc2hpZnQoKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdldEdyb3VwUmVjdXJzaXZlKGNsYXNzUGFydHMsIGNsYXNzTWFwKSB8fCBnZXRHcm91cElkRm9yQXJiaXRyYXJ5UHJvcGVydHkoY2xhc3NOYW1lKVxuICAgIH1cblxuICAgIGNvbnN0IGdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkcyA9IChcbiAgICAgICAgY2xhc3NHcm91cElkOiBHZW5lcmljQ2xhc3NHcm91cElkcyxcbiAgICAgICAgaGFzUG9zdGZpeE1vZGlmaWVyOiBib29sZWFuLFxuICAgICkgPT4ge1xuICAgICAgICBjb25zdCBjb25mbGljdHMgPSBjb25mbGljdGluZ0NsYXNzR3JvdXBzW2NsYXNzR3JvdXBJZF0gfHwgW11cblxuICAgICAgICBpZiAoaGFzUG9zdGZpeE1vZGlmaWVyICYmIGNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyc1tjbGFzc0dyb3VwSWRdKSB7XG4gICAgICAgICAgICByZXR1cm4gWy4uLmNvbmZsaWN0cywgLi4uY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzW2NsYXNzR3JvdXBJZF0hXVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbmZsaWN0c1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGdldENsYXNzR3JvdXBJZCxcbiAgICAgICAgZ2V0Q29uZmxpY3RpbmdDbGFzc0dyb3VwSWRzLFxuICAgIH1cbn1cblxuY29uc3QgZ2V0R3JvdXBSZWN1cnNpdmUgPSAoXG4gICAgY2xhc3NQYXJ0czogc3RyaW5nW10sXG4gICAgY2xhc3NQYXJ0T2JqZWN0OiBDbGFzc1BhcnRPYmplY3QsXG4pOiBHZW5lcmljQ2xhc3NHcm91cElkcyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgaWYgKGNsYXNzUGFydHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBjbGFzc1BhcnRPYmplY3QuY2xhc3NHcm91cElkXG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudENsYXNzUGFydCA9IGNsYXNzUGFydHNbMF0hXG4gICAgY29uc3QgbmV4dENsYXNzUGFydE9iamVjdCA9IGNsYXNzUGFydE9iamVjdC5uZXh0UGFydC5nZXQoY3VycmVudENsYXNzUGFydClcbiAgICBjb25zdCBjbGFzc0dyb3VwRnJvbU5leHRDbGFzc1BhcnQgPSBuZXh0Q2xhc3NQYXJ0T2JqZWN0XG4gICAgICAgID8gZ2V0R3JvdXBSZWN1cnNpdmUoY2xhc3NQYXJ0cy5zbGljZSgxKSwgbmV4dENsYXNzUGFydE9iamVjdClcbiAgICAgICAgOiB1bmRlZmluZWRcblxuICAgIGlmIChjbGFzc0dyb3VwRnJvbU5leHRDbGFzc1BhcnQpIHtcbiAgICAgICAgcmV0dXJuIGNsYXNzR3JvdXBGcm9tTmV4dENsYXNzUGFydFxuICAgIH1cblxuICAgIGlmIChjbGFzc1BhcnRPYmplY3QudmFsaWRhdG9ycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IGNsYXNzUmVzdCA9IGNsYXNzUGFydHMuam9pbihDTEFTU19QQVJUX1NFUEFSQVRPUilcblxuICAgIHJldHVybiBjbGFzc1BhcnRPYmplY3QudmFsaWRhdG9ycy5maW5kKCh7IHZhbGlkYXRvciB9KSA9PiB2YWxpZGF0b3IoY2xhc3NSZXN0KSk/LmNsYXNzR3JvdXBJZFxufVxuXG5jb25zdCBhcmJpdHJhcnlQcm9wZXJ0eVJlZ2V4ID0gL15cXFsoLispXFxdJC9cblxuY29uc3QgZ2V0R3JvdXBJZEZvckFyYml0cmFyeVByb3BlcnR5ID0gKGNsYXNzTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgaWYgKGFyYml0cmFyeVByb3BlcnR5UmVnZXgudGVzdChjbGFzc05hbWUpKSB7XG4gICAgICAgIGNvbnN0IGFyYml0cmFyeVByb3BlcnR5Q2xhc3NOYW1lID0gYXJiaXRyYXJ5UHJvcGVydHlSZWdleC5leGVjKGNsYXNzTmFtZSkhWzFdXG4gICAgICAgIGNvbnN0IHByb3BlcnR5ID0gYXJiaXRyYXJ5UHJvcGVydHlDbGFzc05hbWU/LnN1YnN0cmluZyhcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICBhcmJpdHJhcnlQcm9wZXJ0eUNsYXNzTmFtZS5pbmRleE9mKCc6JyksXG4gICAgICAgIClcblxuICAgICAgICBpZiAocHJvcGVydHkpIHtcbiAgICAgICAgICAgIC8vIEkgdXNlIHR3byBkb3RzIGhlcmUgYmVjYXVzZSBvbmUgZG90IGlzIHVzZWQgYXMgcHJlZml4IGZvciBjbGFzcyBncm91cHMgaW4gcGx1Z2luc1xuICAgICAgICAgICAgcmV0dXJuICdhcmJpdHJhcnkuLicgKyBwcm9wZXJ0eVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIEV4cG9ydGVkIGZvciB0ZXN0aW5nIG9ubHlcbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZUNsYXNzTWFwID0gKGNvbmZpZzogQ29uZmlnPEdlbmVyaWNDbGFzc0dyb3VwSWRzLCBHZW5lcmljVGhlbWVHcm91cElkcz4pID0+IHtcbiAgICBjb25zdCB7IHRoZW1lLCBwcmVmaXggfSA9IGNvbmZpZ1xuICAgIGNvbnN0IGNsYXNzTWFwOiBDbGFzc1BhcnRPYmplY3QgPSB7XG4gICAgICAgIG5leHRQYXJ0OiBuZXcgTWFwPHN0cmluZywgQ2xhc3NQYXJ0T2JqZWN0PigpLFxuICAgICAgICB2YWxpZGF0b3JzOiBbXSxcbiAgICB9XG5cbiAgICBjb25zdCBwcmVmaXhlZENsYXNzR3JvdXBFbnRyaWVzID0gZ2V0UHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcyhcbiAgICAgICAgT2JqZWN0LmVudHJpZXMoY29uZmlnLmNsYXNzR3JvdXBzKSxcbiAgICAgICAgcHJlZml4LFxuICAgIClcblxuICAgIHByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMuZm9yRWFjaCgoW2NsYXNzR3JvdXBJZCwgY2xhc3NHcm91cF0pID0+IHtcbiAgICAgICAgcHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseShjbGFzc0dyb3VwLCBjbGFzc01hcCwgY2xhc3NHcm91cElkLCB0aGVtZSlcbiAgICB9KVxuXG4gICAgcmV0dXJuIGNsYXNzTWFwXG59XG5cbmNvbnN0IHByb2Nlc3NDbGFzc2VzUmVjdXJzaXZlbHkgPSAoXG4gICAgY2xhc3NHcm91cDogQ2xhc3NHcm91cDxHZW5lcmljVGhlbWVHcm91cElkcz4sXG4gICAgY2xhc3NQYXJ0T2JqZWN0OiBDbGFzc1BhcnRPYmplY3QsXG4gICAgY2xhc3NHcm91cElkOiBHZW5lcmljQ2xhc3NHcm91cElkcyxcbiAgICB0aGVtZTogVGhlbWVPYmplY3Q8R2VuZXJpY1RoZW1lR3JvdXBJZHM+LFxuKSA9PiB7XG4gICAgY2xhc3NHcm91cC5mb3JFYWNoKChjbGFzc0RlZmluaXRpb24pID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjbGFzc0RlZmluaXRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb25zdCBjbGFzc1BhcnRPYmplY3RUb0VkaXQgPVxuICAgICAgICAgICAgICAgIGNsYXNzRGVmaW5pdGlvbiA9PT0gJycgPyBjbGFzc1BhcnRPYmplY3QgOiBnZXRQYXJ0KGNsYXNzUGFydE9iamVjdCwgY2xhc3NEZWZpbml0aW9uKVxuICAgICAgICAgICAgY2xhc3NQYXJ0T2JqZWN0VG9FZGl0LmNsYXNzR3JvdXBJZCA9IGNsYXNzR3JvdXBJZFxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGNsYXNzRGVmaW5pdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgaWYgKGlzVGhlbWVHZXR0ZXIoY2xhc3NEZWZpbml0aW9uKSkge1xuICAgICAgICAgICAgICAgIHByb2Nlc3NDbGFzc2VzUmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzRGVmaW5pdGlvbih0aGVtZSksXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzUGFydE9iamVjdCxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NHcm91cElkLFxuICAgICAgICAgICAgICAgICAgICB0aGVtZSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNsYXNzUGFydE9iamVjdC52YWxpZGF0b3JzLnB1c2goe1xuICAgICAgICAgICAgICAgIHZhbGlkYXRvcjogY2xhc3NEZWZpbml0aW9uLFxuICAgICAgICAgICAgICAgIGNsYXNzR3JvdXBJZCxcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgT2JqZWN0LmVudHJpZXMoY2xhc3NEZWZpbml0aW9uKS5mb3JFYWNoKChba2V5LCBjbGFzc0dyb3VwXSkgPT4ge1xuICAgICAgICAgICAgcHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICBjbGFzc0dyb3VwLFxuICAgICAgICAgICAgICAgIGdldFBhcnQoY2xhc3NQYXJ0T2JqZWN0LCBrZXkpLFxuICAgICAgICAgICAgICAgIGNsYXNzR3JvdXBJZCxcbiAgICAgICAgICAgICAgICB0aGVtZSxcbiAgICAgICAgICAgIClcbiAgICAgICAgfSlcbiAgICB9KVxufVxuXG5jb25zdCBnZXRQYXJ0ID0gKGNsYXNzUGFydE9iamVjdDogQ2xhc3NQYXJ0T2JqZWN0LCBwYXRoOiBzdHJpbmcpID0+IHtcbiAgICBsZXQgY3VycmVudENsYXNzUGFydE9iamVjdCA9IGNsYXNzUGFydE9iamVjdFxuXG4gICAgcGF0aC5zcGxpdChDTEFTU19QQVJUX1NFUEFSQVRPUikuZm9yRWFjaCgocGF0aFBhcnQpID0+IHtcbiAgICAgICAgaWYgKCFjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0Lm5leHRQYXJ0LmhhcyhwYXRoUGFydCkpIHtcbiAgICAgICAgICAgIGN1cnJlbnRDbGFzc1BhcnRPYmplY3QubmV4dFBhcnQuc2V0KHBhdGhQYXJ0LCB7XG4gICAgICAgICAgICAgICAgbmV4dFBhcnQ6IG5ldyBNYXAoKSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbXSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0ID0gY3VycmVudENsYXNzUGFydE9iamVjdC5uZXh0UGFydC5nZXQocGF0aFBhcnQpIVxuICAgIH0pXG5cbiAgICByZXR1cm4gY3VycmVudENsYXNzUGFydE9iamVjdFxufVxuXG5jb25zdCBpc1RoZW1lR2V0dGVyID0gKGZ1bmM6IENsYXNzVmFsaWRhdG9yIHwgVGhlbWVHZXR0ZXIpOiBmdW5jIGlzIFRoZW1lR2V0dGVyID0+XG4gICAgKGZ1bmMgYXMgVGhlbWVHZXR0ZXIpLmlzVGhlbWVHZXR0ZXJcblxuY29uc3QgZ2V0UHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcyA9IChcbiAgICBjbGFzc0dyb3VwRW50cmllczogQXJyYXk8W2NsYXNzR3JvdXBJZDogc3RyaW5nLCBjbGFzc0dyb3VwOiBDbGFzc0dyb3VwPEdlbmVyaWNUaGVtZUdyb3VwSWRzPl0+LFxuICAgIHByZWZpeDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuKTogQXJyYXk8W2NsYXNzR3JvdXBJZDogc3RyaW5nLCBjbGFzc0dyb3VwOiBDbGFzc0dyb3VwPEdlbmVyaWNUaGVtZUdyb3VwSWRzPl0+ID0+IHtcbiAgICBpZiAoIXByZWZpeCkge1xuICAgICAgICByZXR1cm4gY2xhc3NHcm91cEVudHJpZXNcbiAgICB9XG5cbiAgICByZXR1cm4gY2xhc3NHcm91cEVudHJpZXMubWFwKChbY2xhc3NHcm91cElkLCBjbGFzc0dyb3VwXSkgPT4ge1xuICAgICAgICBjb25zdCBwcmVmaXhlZENsYXNzR3JvdXAgPSBjbGFzc0dyb3VwLm1hcCgoY2xhc3NEZWZpbml0aW9uKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNsYXNzRGVmaW5pdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJlZml4ICsgY2xhc3NEZWZpbml0aW9uXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2xhc3NEZWZpbml0aW9uID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGNsYXNzRGVmaW5pdGlvbikubWFwKChba2V5LCB2YWx1ZV0pID0+IFtwcmVmaXggKyBrZXksIHZhbHVlXSksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY2xhc3NEZWZpbml0aW9uXG4gICAgICAgIH0pXG5cbiAgICAgICAgcmV0dXJuIFtjbGFzc0dyb3VwSWQsIHByZWZpeGVkQ2xhc3NHcm91cF1cbiAgICB9KVxufVxuIiwgIi8vIEV4cG9ydCBpcyBuZWVkZWQgYmVjYXVzZSBUeXBlU2NyaXB0IGNvbXBsYWlucyBhYm91dCBhbiBlcnJvciBvdGhlcndpc2U6XG4vLyBFcnJvcjogXHUyMDI2L3RhaWx3aW5kLW1lcmdlL3NyYy9jb25maWctdXRpbHMudHMoOCwxNyk6IHNlbWFudGljIGVycm9yIFRTNDA1ODogUmV0dXJuIHR5cGUgb2YgZXhwb3J0ZWQgZnVuY3Rpb24gaGFzIG9yIGlzIHVzaW5nIG5hbWUgJ0xydUNhY2hlJyBmcm9tIGV4dGVybmFsIG1vZHVsZSBcIlx1MjAyNi90YWlsd2luZC1tZXJnZS9zcmMvbHJ1LWNhY2hlXCIgYnV0IGNhbm5vdCBiZSBuYW1lZC5cbmV4cG9ydCBpbnRlcmZhY2UgTHJ1Q2FjaGU8S2V5LCBWYWx1ZT4ge1xuICAgIGdldChrZXk6IEtleSk6IFZhbHVlIHwgdW5kZWZpbmVkXG4gICAgc2V0KGtleTogS2V5LCB2YWx1ZTogVmFsdWUpOiB2b2lkXG59XG5cbi8vIExSVSBjYWNoZSBpbnNwaXJlZCBmcm9tIGhhc2hscnUgKGh0dHBzOi8vZ2l0aHViLmNvbS9kb21pbmljdGFyci9oYXNobHJ1L2Jsb2IvdjEuMC40L2luZGV4LmpzKSBidXQgb2JqZWN0IHJlcGxhY2VkIHdpdGggTWFwIHRvIGltcHJvdmUgcGVyZm9ybWFuY2VcbmV4cG9ydCBjb25zdCBjcmVhdGVMcnVDYWNoZSA9IDxLZXksIFZhbHVlPihtYXhDYWNoZVNpemU6IG51bWJlcik6IExydUNhY2hlPEtleSwgVmFsdWU+ID0+IHtcbiAgICBpZiAobWF4Q2FjaGVTaXplIDwgMSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ2V0OiAoKSA9PiB1bmRlZmluZWQsXG4gICAgICAgICAgICBzZXQ6ICgpID0+IHt9LFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGNhY2hlU2l6ZSA9IDBcbiAgICBsZXQgY2FjaGUgPSBuZXcgTWFwPEtleSwgVmFsdWU+KClcbiAgICBsZXQgcHJldmlvdXNDYWNoZSA9IG5ldyBNYXA8S2V5LCBWYWx1ZT4oKVxuXG4gICAgY29uc3QgdXBkYXRlID0gKGtleTogS2V5LCB2YWx1ZTogVmFsdWUpID0+IHtcbiAgICAgICAgY2FjaGUuc2V0KGtleSwgdmFsdWUpXG4gICAgICAgIGNhY2hlU2l6ZSsrXG5cbiAgICAgICAgaWYgKGNhY2hlU2l6ZSA+IG1heENhY2hlU2l6ZSkge1xuICAgICAgICAgICAgY2FjaGVTaXplID0gMFxuICAgICAgICAgICAgcHJldmlvdXNDYWNoZSA9IGNhY2hlXG4gICAgICAgICAgICBjYWNoZSA9IG5ldyBNYXAoKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgZ2V0KGtleSkge1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gY2FjaGUuZ2V0KGtleSlcblxuICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgodmFsdWUgPSBwcmV2aW91c0NhY2hlLmdldChrZXkpKSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlKGtleSwgdmFsdWUpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHNldChrZXksIHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAoY2FjaGUuaGFzKGtleSkpIHtcbiAgICAgICAgICAgICAgICBjYWNoZS5zZXQoa2V5LCB2YWx1ZSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlKGtleSwgdmFsdWUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfVxufVxuIiwgImltcG9ydCB7IEdlbmVyaWNDb25maWcgfSBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgY29uc3QgSU1QT1JUQU5UX01PRElGSUVSID0gJyEnXG5cbmV4cG9ydCBjb25zdCBjcmVhdGVQYXJzZUNsYXNzTmFtZSA9IChjb25maWc6IEdlbmVyaWNDb25maWcpID0+IHtcbiAgICBjb25zdCB7IHNlcGFyYXRvciwgZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUgfSA9IGNvbmZpZ1xuICAgIGNvbnN0IGlzU2VwYXJhdG9yU2luZ2xlQ2hhcmFjdGVyID0gc2VwYXJhdG9yLmxlbmd0aCA9PT0gMVxuICAgIGNvbnN0IGZpcnN0U2VwYXJhdG9yQ2hhcmFjdGVyID0gc2VwYXJhdG9yWzBdXG4gICAgY29uc3Qgc2VwYXJhdG9yTGVuZ3RoID0gc2VwYXJhdG9yLmxlbmd0aFxuXG4gICAgLy8gcGFyc2VDbGFzc05hbWUgaW5zcGlyZWQgYnkgaHR0cHM6Ly9naXRodWIuY29tL3RhaWx3aW5kbGFicy90YWlsd2luZGNzcy9ibG9iL3YzLjIuMi9zcmMvdXRpbC9zcGxpdEF0VG9wTGV2ZWxPbmx5LmpzXG4gICAgY29uc3QgcGFyc2VDbGFzc05hbWUgPSAoY2xhc3NOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgbW9kaWZpZXJzID0gW11cblxuICAgICAgICBsZXQgYnJhY2tldERlcHRoID0gMFxuICAgICAgICBsZXQgbW9kaWZpZXJTdGFydCA9IDBcbiAgICAgICAgbGV0IHBvc3RmaXhNb2RpZmllclBvc2l0aW9uOiBudW1iZXIgfCB1bmRlZmluZWRcblxuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgY2xhc3NOYW1lLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRDaGFyYWN0ZXIgPSBjbGFzc05hbWVbaW5kZXhdXG5cbiAgICAgICAgICAgIGlmIChicmFja2V0RGVwdGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDaGFyYWN0ZXIgPT09IGZpcnN0U2VwYXJhdG9yQ2hhcmFjdGVyICYmXG4gICAgICAgICAgICAgICAgICAgIChpc1NlcGFyYXRvclNpbmdsZUNoYXJhY3RlciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lLnNsaWNlKGluZGV4LCBpbmRleCArIHNlcGFyYXRvckxlbmd0aCkgPT09IHNlcGFyYXRvcilcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzLnB1c2goY2xhc3NOYW1lLnNsaWNlKG1vZGlmaWVyU3RhcnQsIGluZGV4KSlcbiAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJTdGFydCA9IGluZGV4ICsgc2VwYXJhdG9yTGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgPT09ICcvJykge1xuICAgICAgICAgICAgICAgICAgICBwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiA9IGluZGV4XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY3VycmVudENoYXJhY3RlciA9PT0gJ1snKSB7XG4gICAgICAgICAgICAgICAgYnJhY2tldERlcHRoKytcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudENoYXJhY3RlciA9PT0gJ10nKSB7XG4gICAgICAgICAgICAgICAgYnJhY2tldERlcHRoLS1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGJhc2VDbGFzc05hbWVXaXRoSW1wb3J0YW50TW9kaWZpZXIgPVxuICAgICAgICAgICAgbW9kaWZpZXJzLmxlbmd0aCA9PT0gMCA/IGNsYXNzTmFtZSA6IGNsYXNzTmFtZS5zdWJzdHJpbmcobW9kaWZpZXJTdGFydClcbiAgICAgICAgY29uc3QgaGFzSW1wb3J0YW50TW9kaWZpZXIgPVxuICAgICAgICAgICAgYmFzZUNsYXNzTmFtZVdpdGhJbXBvcnRhbnRNb2RpZmllci5zdGFydHNXaXRoKElNUE9SVEFOVF9NT0RJRklFUilcbiAgICAgICAgY29uc3QgYmFzZUNsYXNzTmFtZSA9IGhhc0ltcG9ydGFudE1vZGlmaWVyXG4gICAgICAgICAgICA/IGJhc2VDbGFzc05hbWVXaXRoSW1wb3J0YW50TW9kaWZpZXIuc3Vic3RyaW5nKDEpXG4gICAgICAgICAgICA6IGJhc2VDbGFzc05hbWVXaXRoSW1wb3J0YW50TW9kaWZpZXJcblxuICAgICAgICBjb25zdCBtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uID1cbiAgICAgICAgICAgIHBvc3RmaXhNb2RpZmllclBvc2l0aW9uICYmIHBvc3RmaXhNb2RpZmllclBvc2l0aW9uID4gbW9kaWZpZXJTdGFydFxuICAgICAgICAgICAgICAgID8gcG9zdGZpeE1vZGlmaWVyUG9zaXRpb24gLSBtb2RpZmllclN0YXJ0XG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbW9kaWZpZXJzLFxuICAgICAgICAgICAgaGFzSW1wb3J0YW50TW9kaWZpZXIsXG4gICAgICAgICAgICBiYXNlQ2xhc3NOYW1lLFxuICAgICAgICAgICAgbWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbixcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSkge1xuICAgICAgICByZXR1cm4gKGNsYXNzTmFtZTogc3RyaW5nKSA9PiBleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSh7IGNsYXNzTmFtZSwgcGFyc2VDbGFzc05hbWUgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyc2VDbGFzc05hbWVcbn1cblxuLyoqXG4gKiBTb3J0cyBtb2RpZmllcnMgYWNjb3JkaW5nIHRvIGZvbGxvd2luZyBzY2hlbWE6XG4gKiAtIFByZWRlZmluZWQgbW9kaWZpZXJzIGFyZSBzb3J0ZWQgYWxwaGFiZXRpY2FsbHlcbiAqIC0gV2hlbiBhbiBhcmJpdHJhcnkgdmFyaWFudCBhcHBlYXJzLCBpdCBtdXN0IGJlIHByZXNlcnZlZCB3aGljaCBtb2RpZmllcnMgYXJlIGJlZm9yZSBhbmQgYWZ0ZXIgaXRcbiAqL1xuZXhwb3J0IGNvbnN0IHNvcnRNb2RpZmllcnMgPSAobW9kaWZpZXJzOiBzdHJpbmdbXSkgPT4ge1xuICAgIGlmIChtb2RpZmllcnMubGVuZ3RoIDw9IDEpIHtcbiAgICAgICAgcmV0dXJuIG1vZGlmaWVyc1xuICAgIH1cblxuICAgIGNvbnN0IHNvcnRlZE1vZGlmaWVyczogc3RyaW5nW10gPSBbXVxuICAgIGxldCB1bnNvcnRlZE1vZGlmaWVyczogc3RyaW5nW10gPSBbXVxuXG4gICAgbW9kaWZpZXJzLmZvckVhY2goKG1vZGlmaWVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzQXJiaXRyYXJ5VmFyaWFudCA9IG1vZGlmaWVyWzBdID09PSAnWydcblxuICAgICAgICBpZiAoaXNBcmJpdHJhcnlWYXJpYW50KSB7XG4gICAgICAgICAgICBzb3J0ZWRNb2RpZmllcnMucHVzaCguLi51bnNvcnRlZE1vZGlmaWVycy5zb3J0KCksIG1vZGlmaWVyKVxuICAgICAgICAgICAgdW5zb3J0ZWRNb2RpZmllcnMgPSBbXVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdW5zb3J0ZWRNb2RpZmllcnMucHVzaChtb2RpZmllcilcbiAgICAgICAgfVxuICAgIH0pXG5cbiAgICBzb3J0ZWRNb2RpZmllcnMucHVzaCguLi51bnNvcnRlZE1vZGlmaWVycy5zb3J0KCkpXG5cbiAgICByZXR1cm4gc29ydGVkTW9kaWZpZXJzXG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlQ2xhc3NHcm91cFV0aWxzIH0gZnJvbSAnLi9jbGFzcy1ncm91cC11dGlscydcbmltcG9ydCB7IGNyZWF0ZUxydUNhY2hlIH0gZnJvbSAnLi9scnUtY2FjaGUnXG5pbXBvcnQgeyBjcmVhdGVQYXJzZUNsYXNzTmFtZSB9IGZyb20gJy4vcGFyc2UtY2xhc3MtbmFtZSdcbmltcG9ydCB7IEdlbmVyaWNDb25maWcgfSBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgdHlwZSBDb25maWdVdGlscyA9IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUNvbmZpZ1V0aWxzPlxuXG5leHBvcnQgY29uc3QgY3JlYXRlQ29uZmlnVXRpbHMgPSAoY29uZmlnOiBHZW5lcmljQ29uZmlnKSA9PiAoe1xuICAgIGNhY2hlOiBjcmVhdGVMcnVDYWNoZTxzdHJpbmcsIHN0cmluZz4oY29uZmlnLmNhY2hlU2l6ZSksXG4gICAgcGFyc2VDbGFzc05hbWU6IGNyZWF0ZVBhcnNlQ2xhc3NOYW1lKGNvbmZpZyksXG4gICAgLi4uY3JlYXRlQ2xhc3NHcm91cFV0aWxzKGNvbmZpZyksXG59KVxuIiwgImltcG9ydCB7IENvbmZpZ1V0aWxzIH0gZnJvbSAnLi9jb25maWctdXRpbHMnXG5pbXBvcnQgeyBJTVBPUlRBTlRfTU9ESUZJRVIsIHNvcnRNb2RpZmllcnMgfSBmcm9tICcuL3BhcnNlLWNsYXNzLW5hbWUnXG5cbmNvbnN0IFNQTElUX0NMQVNTRVNfUkVHRVggPSAvXFxzKy9cblxuZXhwb3J0IGNvbnN0IG1lcmdlQ2xhc3NMaXN0ID0gKGNsYXNzTGlzdDogc3RyaW5nLCBjb25maWdVdGlsczogQ29uZmlnVXRpbHMpID0+IHtcbiAgICBjb25zdCB7IHBhcnNlQ2xhc3NOYW1lLCBnZXRDbGFzc0dyb3VwSWQsIGdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkcyB9ID0gY29uZmlnVXRpbHNcblxuICAgIC8qKlxuICAgICAqIFNldCBvZiBjbGFzc0dyb3VwSWRzIGluIGZvbGxvd2luZyBmb3JtYXQ6XG4gICAgICogYHtpbXBvcnRhbnRNb2RpZmllcn17dmFyaWFudE1vZGlmaWVyc317Y2xhc3NHcm91cElkfWBcbiAgICAgKiBAZXhhbXBsZSAnZmxvYXQnXG4gICAgICogQGV4YW1wbGUgJ2hvdmVyOmZvY3VzOmJnLWNvbG9yJ1xuICAgICAqIEBleGFtcGxlICdtZDohcHInXG4gICAgICovXG4gICAgY29uc3QgY2xhc3NHcm91cHNJbkNvbmZsaWN0OiBzdHJpbmdbXSA9IFtdXG4gICAgY29uc3QgY2xhc3NOYW1lcyA9IGNsYXNzTGlzdC50cmltKCkuc3BsaXQoU1BMSVRfQ0xBU1NFU19SRUdFWClcblxuICAgIGxldCByZXN1bHQgPSAnJ1xuXG4gICAgZm9yIChsZXQgaW5kZXggPSBjbGFzc05hbWVzLmxlbmd0aCAtIDE7IGluZGV4ID49IDA7IGluZGV4IC09IDEpIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxDbGFzc05hbWUgPSBjbGFzc05hbWVzW2luZGV4XSFcblxuICAgICAgICBjb25zdCB7IG1vZGlmaWVycywgaGFzSW1wb3J0YW50TW9kaWZpZXIsIGJhc2VDbGFzc05hbWUsIG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb24gfSA9XG4gICAgICAgICAgICBwYXJzZUNsYXNzTmFtZShvcmlnaW5hbENsYXNzTmFtZSlcblxuICAgICAgICBsZXQgaGFzUG9zdGZpeE1vZGlmaWVyID0gQm9vbGVhbihtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uKVxuICAgICAgICBsZXQgY2xhc3NHcm91cElkID0gZ2V0Q2xhc3NHcm91cElkKFxuICAgICAgICAgICAgaGFzUG9zdGZpeE1vZGlmaWVyXG4gICAgICAgICAgICAgICAgPyBiYXNlQ2xhc3NOYW1lLnN1YnN0cmluZygwLCBtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uKVxuICAgICAgICAgICAgICAgIDogYmFzZUNsYXNzTmFtZSxcbiAgICAgICAgKVxuXG4gICAgICAgIGlmICghY2xhc3NHcm91cElkKSB7XG4gICAgICAgICAgICBpZiAoIWhhc1Bvc3RmaXhNb2RpZmllcikge1xuICAgICAgICAgICAgICAgIC8vIE5vdCBhIFRhaWx3aW5kIGNsYXNzXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gb3JpZ2luYWxDbGFzc05hbWUgKyAocmVzdWx0Lmxlbmd0aCA+IDAgPyAnICcgKyByZXN1bHQgOiByZXN1bHQpXG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2xhc3NHcm91cElkID0gZ2V0Q2xhc3NHcm91cElkKGJhc2VDbGFzc05hbWUpXG5cbiAgICAgICAgICAgIGlmICghY2xhc3NHcm91cElkKSB7XG4gICAgICAgICAgICAgICAgLy8gTm90IGEgVGFpbHdpbmQgY2xhc3NcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBvcmlnaW5hbENsYXNzTmFtZSArIChyZXN1bHQubGVuZ3RoID4gMCA/ICcgJyArIHJlc3VsdCA6IHJlc3VsdClcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBoYXNQb3N0Zml4TW9kaWZpZXIgPSBmYWxzZVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmFyaWFudE1vZGlmaWVyID0gc29ydE1vZGlmaWVycyhtb2RpZmllcnMpLmpvaW4oJzonKVxuXG4gICAgICAgIGNvbnN0IG1vZGlmaWVySWQgPSBoYXNJbXBvcnRhbnRNb2RpZmllclxuICAgICAgICAgICAgPyB2YXJpYW50TW9kaWZpZXIgKyBJTVBPUlRBTlRfTU9ESUZJRVJcbiAgICAgICAgICAgIDogdmFyaWFudE1vZGlmaWVyXG5cbiAgICAgICAgY29uc3QgY2xhc3NJZCA9IG1vZGlmaWVySWQgKyBjbGFzc0dyb3VwSWRcblxuICAgICAgICBpZiAoY2xhc3NHcm91cHNJbkNvbmZsaWN0LmluY2x1ZGVzKGNsYXNzSWQpKSB7XG4gICAgICAgICAgICAvLyBUYWlsd2luZCBjbGFzcyBvbWl0dGVkIGR1ZSB0byBjb25mbGljdFxuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIGNsYXNzR3JvdXBzSW5Db25mbGljdC5wdXNoKGNsYXNzSWQpXG5cbiAgICAgICAgY29uc3QgY29uZmxpY3RHcm91cHMgPSBnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHMoY2xhc3NHcm91cElkLCBoYXNQb3N0Zml4TW9kaWZpZXIpXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmxpY3RHcm91cHMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gY29uZmxpY3RHcm91cHNbaV0hXG4gICAgICAgICAgICBjbGFzc0dyb3Vwc0luQ29uZmxpY3QucHVzaChtb2RpZmllcklkICsgZ3JvdXApXG4gICAgICAgIH1cblxuICAgICAgICAvLyBUYWlsd2luZCBjbGFzcyBub3QgaW4gY29uZmxpY3RcbiAgICAgICAgcmVzdWx0ID0gb3JpZ2luYWxDbGFzc05hbWUgKyAocmVzdWx0Lmxlbmd0aCA+IDAgPyAnICcgKyByZXN1bHQgOiByZXN1bHQpXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxufVxuIiwgIi8qKlxuICogVGhlIGNvZGUgaW4gdGhpcyBmaWxlIGlzIGNvcGllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9sdWtlZWQvY2xzeCBhbmQgbW9kaWZpZWQgdG8gc3VpdCB0aGUgbmVlZHMgb2YgdGFpbHdpbmQtbWVyZ2UgYmV0dGVyLlxuICpcbiAqIFNwZWNpZmljYWxseTpcbiAqIC0gUnVudGltZSBjb2RlIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2x1a2VlZC9jbHN4L2Jsb2IvdjEuMi4xL3NyYy9pbmRleC5qc1xuICogLSBUeXBlU2NyaXB0IHR5cGVzIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2x1a2VlZC9jbHN4L2Jsb2IvdjEuMi4xL2Nsc3guZC50c1xuICpcbiAqIE9yaWdpbmFsIGNvZGUgaGFzIE1JVCBsaWNlbnNlOiBDb3B5cmlnaHQgKGMpIEx1a2UgRWR3YXJkcyA8bHVrZS5lZHdhcmRzMDVAZ21haWwuY29tPiAobHVrZWVkLmNvbSlcbiAqL1xuXG5leHBvcnQgdHlwZSBDbGFzc05hbWVWYWx1ZSA9IENsYXNzTmFtZUFycmF5IHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCB8IDAgfCAwbiB8IGZhbHNlXG50eXBlIENsYXNzTmFtZUFycmF5ID0gQ2xhc3NOYW1lVmFsdWVbXVxuXG5leHBvcnQgZnVuY3Rpb24gdHdKb2luKC4uLmNsYXNzTGlzdHM6IENsYXNzTmFtZVZhbHVlW10pOiBzdHJpbmdcbmV4cG9ydCBmdW5jdGlvbiB0d0pvaW4oKSB7XG4gICAgbGV0IGluZGV4ID0gMFxuICAgIGxldCBhcmd1bWVudDogQ2xhc3NOYW1lVmFsdWVcbiAgICBsZXQgcmVzb2x2ZWRWYWx1ZTogc3RyaW5nXG4gICAgbGV0IHN0cmluZyA9ICcnXG5cbiAgICB3aGlsZSAoaW5kZXggPCBhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgICAgIGlmICgoYXJndW1lbnQgPSBhcmd1bWVudHNbaW5kZXgrK10pKSB7XG4gICAgICAgICAgICBpZiAoKHJlc29sdmVkVmFsdWUgPSB0b1ZhbHVlKGFyZ3VtZW50KSkpIHtcbiAgICAgICAgICAgICAgICBzdHJpbmcgJiYgKHN0cmluZyArPSAnICcpXG4gICAgICAgICAgICAgICAgc3RyaW5nICs9IHJlc29sdmVkVmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3RyaW5nXG59XG5cbmNvbnN0IHRvVmFsdWUgPSAobWl4OiBDbGFzc05hbWVBcnJheSB8IHN0cmluZykgPT4ge1xuICAgIGlmICh0eXBlb2YgbWl4ID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gbWl4XG4gICAgfVxuXG4gICAgbGV0IHJlc29sdmVkVmFsdWU6IHN0cmluZ1xuICAgIGxldCBzdHJpbmcgPSAnJ1xuXG4gICAgZm9yIChsZXQgayA9IDA7IGsgPCBtaXgubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgaWYgKG1peFtrXSkge1xuICAgICAgICAgICAgaWYgKChyZXNvbHZlZFZhbHVlID0gdG9WYWx1ZShtaXhba10gYXMgQ2xhc3NOYW1lQXJyYXkgfCBzdHJpbmcpKSkge1xuICAgICAgICAgICAgICAgIHN0cmluZyAmJiAoc3RyaW5nICs9ICcgJylcbiAgICAgICAgICAgICAgICBzdHJpbmcgKz0gcmVzb2x2ZWRWYWx1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmluZ1xufVxuIiwgImltcG9ydCB7IGNyZWF0ZUNvbmZpZ1V0aWxzIH0gZnJvbSAnLi9jb25maWctdXRpbHMnXG5pbXBvcnQgeyBtZXJnZUNsYXNzTGlzdCB9IGZyb20gJy4vbWVyZ2UtY2xhc3NsaXN0J1xuaW1wb3J0IHsgQ2xhc3NOYW1lVmFsdWUsIHR3Sm9pbiB9IGZyb20gJy4vdHctam9pbidcbmltcG9ydCB7IEdlbmVyaWNDb25maWcgfSBmcm9tICcuL3R5cGVzJ1xuXG50eXBlIENyZWF0ZUNvbmZpZ0ZpcnN0ID0gKCkgPT4gR2VuZXJpY0NvbmZpZ1xudHlwZSBDcmVhdGVDb25maWdTdWJzZXF1ZW50ID0gKGNvbmZpZzogR2VuZXJpY0NvbmZpZykgPT4gR2VuZXJpY0NvbmZpZ1xudHlwZSBUYWlsd2luZE1lcmdlID0gKC4uLmNsYXNzTGlzdHM6IENsYXNzTmFtZVZhbHVlW10pID0+IHN0cmluZ1xudHlwZSBDb25maWdVdGlscyA9IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUNvbmZpZ1V0aWxzPlxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVGFpbHdpbmRNZXJnZShcbiAgICBjcmVhdGVDb25maWdGaXJzdDogQ3JlYXRlQ29uZmlnRmlyc3QsXG4gICAgLi4uY3JlYXRlQ29uZmlnUmVzdDogQ3JlYXRlQ29uZmlnU3Vic2VxdWVudFtdXG4pOiBUYWlsd2luZE1lcmdlIHtcbiAgICBsZXQgY29uZmlnVXRpbHM6IENvbmZpZ1V0aWxzXG4gICAgbGV0IGNhY2hlR2V0OiBDb25maWdVdGlsc1snY2FjaGUnXVsnZ2V0J11cbiAgICBsZXQgY2FjaGVTZXQ6IENvbmZpZ1V0aWxzWydjYWNoZSddWydzZXQnXVxuICAgIGxldCBmdW5jdGlvblRvQ2FsbCA9IGluaXRUYWlsd2luZE1lcmdlXG5cbiAgICBmdW5jdGlvbiBpbml0VGFpbHdpbmRNZXJnZShjbGFzc0xpc3Q6IHN0cmluZykge1xuICAgICAgICBjb25zdCBjb25maWcgPSBjcmVhdGVDb25maWdSZXN0LnJlZHVjZShcbiAgICAgICAgICAgIChwcmV2aW91c0NvbmZpZywgY3JlYXRlQ29uZmlnQ3VycmVudCkgPT4gY3JlYXRlQ29uZmlnQ3VycmVudChwcmV2aW91c0NvbmZpZyksXG4gICAgICAgICAgICBjcmVhdGVDb25maWdGaXJzdCgpIGFzIEdlbmVyaWNDb25maWcsXG4gICAgICAgIClcblxuICAgICAgICBjb25maWdVdGlscyA9IGNyZWF0ZUNvbmZpZ1V0aWxzKGNvbmZpZylcbiAgICAgICAgY2FjaGVHZXQgPSBjb25maWdVdGlscy5jYWNoZS5nZXRcbiAgICAgICAgY2FjaGVTZXQgPSBjb25maWdVdGlscy5jYWNoZS5zZXRcbiAgICAgICAgZnVuY3Rpb25Ub0NhbGwgPSB0YWlsd2luZE1lcmdlXG5cbiAgICAgICAgcmV0dXJuIHRhaWx3aW5kTWVyZ2UoY2xhc3NMaXN0KVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRhaWx3aW5kTWVyZ2UoY2xhc3NMaXN0OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgY2FjaGVkUmVzdWx0ID0gY2FjaGVHZXQoY2xhc3NMaXN0KVxuXG4gICAgICAgIGlmIChjYWNoZWRSZXN1bHQpIHtcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRSZXN1bHRcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG1lcmdlQ2xhc3NMaXN0KGNsYXNzTGlzdCwgY29uZmlnVXRpbHMpXG4gICAgICAgIGNhY2hlU2V0KGNsYXNzTGlzdCwgcmVzdWx0KVxuXG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICB9XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gY2FsbFRhaWx3aW5kTWVyZ2UoKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvblRvQ2FsbCh0d0pvaW4uYXBwbHkobnVsbCwgYXJndW1lbnRzIGFzIGFueSkpXG4gICAgfVxufVxuIiwgImltcG9ydCB7IERlZmF1bHRUaGVtZUdyb3VwSWRzLCBOb0luZmVyLCBUaGVtZUdldHRlciwgVGhlbWVPYmplY3QgfSBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgY29uc3QgZnJvbVRoZW1lID0gPFxuICAgIEFkZGl0aW9uYWxUaGVtZUdyb3VwSWRzIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsXG4gICAgRGVmYXVsdFRoZW1lR3JvdXBJZHNJbm5lciBleHRlbmRzIHN0cmluZyA9IERlZmF1bHRUaGVtZUdyb3VwSWRzLFxuPihrZXk6IE5vSW5mZXI8RGVmYXVsdFRoZW1lR3JvdXBJZHNJbm5lciB8IEFkZGl0aW9uYWxUaGVtZUdyb3VwSWRzPik6IFRoZW1lR2V0dGVyID0+IHtcbiAgICBjb25zdCB0aGVtZUdldHRlciA9ICh0aGVtZTogVGhlbWVPYmplY3Q8RGVmYXVsdFRoZW1lR3JvdXBJZHNJbm5lciB8IEFkZGl0aW9uYWxUaGVtZUdyb3VwSWRzPikgPT5cbiAgICAgICAgdGhlbWVba2V5XSB8fCBbXVxuXG4gICAgdGhlbWVHZXR0ZXIuaXNUaGVtZUdldHRlciA9IHRydWUgYXMgY29uc3RcblxuICAgIHJldHVybiB0aGVtZUdldHRlclxufVxuIiwgImNvbnN0IGFyYml0cmFyeVZhbHVlUmVnZXggPSAvXlxcWyg/OihbYS16LV0rKTopPyguKylcXF0kL2lcbmNvbnN0IGZyYWN0aW9uUmVnZXggPSAvXlxcZCtcXC9cXGQrJC9cbmNvbnN0IHN0cmluZ0xlbmd0aHMgPSBuZXcgU2V0KFsncHgnLCAnZnVsbCcsICdzY3JlZW4nXSlcbmNvbnN0IHRzaGlydFVuaXRSZWdleCA9IC9eKFxcZCsoXFwuXFxkKyk/KT8oeHN8c218bWR8bGd8eGwpJC9cbmNvbnN0IGxlbmd0aFVuaXRSZWdleCA9XG4gICAgL1xcZCsoJXxweHxyP2VtfFtzZGxdP3YoW2h3aWJdfG1pbnxtYXgpfHB0fHBjfGlufGNtfG1tfGNhcHxjaHxleHxyP2xofGNxKHd8aHxpfGJ8bWlufG1heCkpfFxcYihjYWxjfG1pbnxtYXh8Y2xhbXApXFwoLitcXCl8XjAkL1xuY29uc3QgY29sb3JGdW5jdGlvblJlZ2V4ID0gL14ocmdiYT98aHNsYT98aHdifChvayk/KGxhYnxsY2gpKVxcKC4rXFwpJC9cbi8vIFNoYWRvdyBhbHdheXMgYmVnaW5zIHdpdGggeCBhbmQgeSBvZmZzZXQgc2VwYXJhdGVkIGJ5IHVuZGVyc2NvcmUgb3B0aW9uYWxseSBwcmVwZW5kZWQgYnkgaW5zZXRcbmNvbnN0IHNoYWRvd1JlZ2V4ID0gL14oaW5zZXRfKT8tPygoXFxkKyk/XFwuPyhcXGQrKVthLXpdK3wwKV8tPygoXFxkKyk/XFwuPyhcXGQrKVthLXpdK3wwKS9cbmNvbnN0IGltYWdlUmVnZXggPVxuICAgIC9eKHVybHxpbWFnZXxpbWFnZS1zZXR8Y3Jvc3MtZmFkZXxlbGVtZW50fChyZXBlYXRpbmctKT8obGluZWFyfHJhZGlhbHxjb25pYyktZ3JhZGllbnQpXFwoLitcXCkkL1xuXG5leHBvcnQgY29uc3QgaXNMZW5ndGggPSAodmFsdWU6IHN0cmluZykgPT5cbiAgICBpc051bWJlcih2YWx1ZSkgfHwgc3RyaW5nTGVuZ3Rocy5oYXModmFsdWUpIHx8IGZyYWN0aW9uUmVnZXgudGVzdCh2YWx1ZSlcblxuZXhwb3J0IGNvbnN0IGlzQXJiaXRyYXJ5TGVuZ3RoID0gKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgJ2xlbmd0aCcsIGlzTGVuZ3RoT25seSlcblxuZXhwb3J0IGNvbnN0IGlzTnVtYmVyID0gKHZhbHVlOiBzdHJpbmcpID0+IEJvb2xlYW4odmFsdWUpICYmICFOdW1iZXIuaXNOYU4oTnVtYmVyKHZhbHVlKSlcblxuZXhwb3J0IGNvbnN0IGlzQXJiaXRyYXJ5TnVtYmVyID0gKHZhbHVlOiBzdHJpbmcpID0+IGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsICdudW1iZXInLCBpc051bWJlcilcblxuZXhwb3J0IGNvbnN0IGlzSW50ZWdlciA9ICh2YWx1ZTogc3RyaW5nKSA9PiBCb29sZWFuKHZhbHVlKSAmJiBOdW1iZXIuaXNJbnRlZ2VyKE51bWJlcih2YWx1ZSkpXG5cbmV4cG9ydCBjb25zdCBpc1BlcmNlbnQgPSAodmFsdWU6IHN0cmluZykgPT4gdmFsdWUuZW5kc1dpdGgoJyUnKSAmJiBpc051bWJlcih2YWx1ZS5zbGljZSgwLCAtMSkpXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeVZhbHVlID0gKHZhbHVlOiBzdHJpbmcpID0+IGFyYml0cmFyeVZhbHVlUmVnZXgudGVzdCh2YWx1ZSlcblxuZXhwb3J0IGNvbnN0IGlzVHNoaXJ0U2l6ZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiB0c2hpcnRVbml0UmVnZXgudGVzdCh2YWx1ZSlcblxuY29uc3Qgc2l6ZUxhYmVscyA9IG5ldyBTZXQoWydsZW5ndGgnLCAnc2l6ZScsICdwZXJjZW50YWdlJ10pXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeVNpemUgPSAodmFsdWU6IHN0cmluZykgPT4gZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgc2l6ZUxhYmVscywgaXNOZXZlcilcblxuZXhwb3J0IGNvbnN0IGlzQXJiaXRyYXJ5UG9zaXRpb24gPSAodmFsdWU6IHN0cmluZykgPT5cbiAgICBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCAncG9zaXRpb24nLCBpc05ldmVyKVxuXG5jb25zdCBpbWFnZUxhYmVscyA9IG5ldyBTZXQoWydpbWFnZScsICd1cmwnXSlcblxuZXhwb3J0IGNvbnN0IGlzQXJiaXRyYXJ5SW1hZ2UgPSAodmFsdWU6IHN0cmluZykgPT4gZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgaW1hZ2VMYWJlbHMsIGlzSW1hZ2UpXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeVNoYWRvdyA9ICh2YWx1ZTogc3RyaW5nKSA9PiBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCAnJywgaXNTaGFkb3cpXG5cbmV4cG9ydCBjb25zdCBpc0FueSA9ICgpID0+IHRydWVcblxuY29uc3QgZ2V0SXNBcmJpdHJhcnlWYWx1ZSA9IChcbiAgICB2YWx1ZTogc3RyaW5nLFxuICAgIGxhYmVsOiBzdHJpbmcgfCBTZXQ8c3RyaW5nPixcbiAgICB0ZXN0VmFsdWU6ICh2YWx1ZTogc3RyaW5nKSA9PiBib29sZWFuLFxuKSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXJiaXRyYXJ5VmFsdWVSZWdleC5leGVjKHZhbHVlKVxuXG4gICAgaWYgKHJlc3VsdCkge1xuICAgICAgICBpZiAocmVzdWx0WzFdKSB7XG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIGxhYmVsID09PSAnc3RyaW5nJyA/IHJlc3VsdFsxXSA9PT0gbGFiZWwgOiBsYWJlbC5oYXMocmVzdWx0WzFdKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRlc3RWYWx1ZShyZXN1bHRbMl0hKVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxufVxuXG5jb25zdCBpc0xlbmd0aE9ubHkgPSAodmFsdWU6IHN0cmluZykgPT5cbiAgICAvLyBgY29sb3JGdW5jdGlvblJlZ2V4YCBjaGVjayBpcyBuZWNlc3NhcnkgYmVjYXVzZSBjb2xvciBmdW5jdGlvbnMgY2FuIGhhdmUgcGVyY2VudGFnZXMgaW4gdGhlbSB3aGljaCB3aGljaCB3b3VsZCBiZSBpbmNvcnJlY3RseSBjbGFzc2lmaWVkIGFzIGxlbmd0aHMuXG4gICAgLy8gRm9yIGV4YW1wbGUsIGBoc2woMCAwJSAwJSlgIHdvdWxkIGJlIGNsYXNzaWZpZWQgYXMgYSBsZW5ndGggd2l0aG91dCB0aGlzIGNoZWNrLlxuICAgIC8vIEkgY291bGQgYWxzbyB1c2UgbG9va2JlaGluZCBhc3NlcnRpb24gaW4gYGxlbmd0aFVuaXRSZWdleGAgYnV0IHRoYXQgaXNuJ3Qgc3VwcG9ydGVkIHdpZGVseSBlbm91Z2guXG4gICAgbGVuZ3RoVW5pdFJlZ2V4LnRlc3QodmFsdWUpICYmICFjb2xvckZ1bmN0aW9uUmVnZXgudGVzdCh2YWx1ZSlcblxuY29uc3QgaXNOZXZlciA9ICgpID0+IGZhbHNlXG5cbmNvbnN0IGlzU2hhZG93ID0gKHZhbHVlOiBzdHJpbmcpID0+IHNoYWRvd1JlZ2V4LnRlc3QodmFsdWUpXG5cbmNvbnN0IGlzSW1hZ2UgPSAodmFsdWU6IHN0cmluZykgPT4gaW1hZ2VSZWdleC50ZXN0KHZhbHVlKVxuIiwgImltcG9ydCB7IGZyb21UaGVtZSB9IGZyb20gJy4vZnJvbS10aGVtZSdcbmltcG9ydCB7IENvbmZpZywgRGVmYXVsdENsYXNzR3JvdXBJZHMsIERlZmF1bHRUaGVtZUdyb3VwSWRzIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7XG4gICAgaXNBbnksXG4gICAgaXNBcmJpdHJhcnlJbWFnZSxcbiAgICBpc0FyYml0cmFyeUxlbmd0aCxcbiAgICBpc0FyYml0cmFyeU51bWJlcixcbiAgICBpc0FyYml0cmFyeVBvc2l0aW9uLFxuICAgIGlzQXJiaXRyYXJ5U2hhZG93LFxuICAgIGlzQXJiaXRyYXJ5U2l6ZSxcbiAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgIGlzSW50ZWdlcixcbiAgICBpc0xlbmd0aCxcbiAgICBpc051bWJlcixcbiAgICBpc1BlcmNlbnQsXG4gICAgaXNUc2hpcnRTaXplLFxufSBmcm9tICcuL3ZhbGlkYXRvcnMnXG5cbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0Q29uZmlnID0gKCkgPT4ge1xuICAgIGNvbnN0IGNvbG9ycyA9IGZyb21UaGVtZSgnY29sb3JzJylcbiAgICBjb25zdCBzcGFjaW5nID0gZnJvbVRoZW1lKCdzcGFjaW5nJylcbiAgICBjb25zdCBibHVyID0gZnJvbVRoZW1lKCdibHVyJylcbiAgICBjb25zdCBicmlnaHRuZXNzID0gZnJvbVRoZW1lKCdicmlnaHRuZXNzJylcbiAgICBjb25zdCBib3JkZXJDb2xvciA9IGZyb21UaGVtZSgnYm9yZGVyQ29sb3InKVxuICAgIGNvbnN0IGJvcmRlclJhZGl1cyA9IGZyb21UaGVtZSgnYm9yZGVyUmFkaXVzJylcbiAgICBjb25zdCBib3JkZXJTcGFjaW5nID0gZnJvbVRoZW1lKCdib3JkZXJTcGFjaW5nJylcbiAgICBjb25zdCBib3JkZXJXaWR0aCA9IGZyb21UaGVtZSgnYm9yZGVyV2lkdGgnKVxuICAgIGNvbnN0IGNvbnRyYXN0ID0gZnJvbVRoZW1lKCdjb250cmFzdCcpXG4gICAgY29uc3QgZ3JheXNjYWxlID0gZnJvbVRoZW1lKCdncmF5c2NhbGUnKVxuICAgIGNvbnN0IGh1ZVJvdGF0ZSA9IGZyb21UaGVtZSgnaHVlUm90YXRlJylcbiAgICBjb25zdCBpbnZlcnQgPSBmcm9tVGhlbWUoJ2ludmVydCcpXG4gICAgY29uc3QgZ2FwID0gZnJvbVRoZW1lKCdnYXAnKVxuICAgIGNvbnN0IGdyYWRpZW50Q29sb3JTdG9wcyA9IGZyb21UaGVtZSgnZ3JhZGllbnRDb2xvclN0b3BzJylcbiAgICBjb25zdCBncmFkaWVudENvbG9yU3RvcFBvc2l0aW9ucyA9IGZyb21UaGVtZSgnZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnMnKVxuICAgIGNvbnN0IGluc2V0ID0gZnJvbVRoZW1lKCdpbnNldCcpXG4gICAgY29uc3QgbWFyZ2luID0gZnJvbVRoZW1lKCdtYXJnaW4nKVxuICAgIGNvbnN0IG9wYWNpdHkgPSBmcm9tVGhlbWUoJ29wYWNpdHknKVxuICAgIGNvbnN0IHBhZGRpbmcgPSBmcm9tVGhlbWUoJ3BhZGRpbmcnKVxuICAgIGNvbnN0IHNhdHVyYXRlID0gZnJvbVRoZW1lKCdzYXR1cmF0ZScpXG4gICAgY29uc3Qgc2NhbGUgPSBmcm9tVGhlbWUoJ3NjYWxlJylcbiAgICBjb25zdCBzZXBpYSA9IGZyb21UaGVtZSgnc2VwaWEnKVxuICAgIGNvbnN0IHNrZXcgPSBmcm9tVGhlbWUoJ3NrZXcnKVxuICAgIGNvbnN0IHNwYWNlID0gZnJvbVRoZW1lKCdzcGFjZScpXG4gICAgY29uc3QgdHJhbnNsYXRlID0gZnJvbVRoZW1lKCd0cmFuc2xhdGUnKVxuXG4gICAgY29uc3QgZ2V0T3ZlcnNjcm9sbCA9ICgpID0+IFsnYXV0bycsICdjb250YWluJywgJ25vbmUnXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldE92ZXJmbG93ID0gKCkgPT4gWydhdXRvJywgJ2hpZGRlbicsICdjbGlwJywgJ3Zpc2libGUnLCAnc2Nyb2xsJ10gYXMgY29uc3RcbiAgICBjb25zdCBnZXRTcGFjaW5nV2l0aEF1dG9BbmRBcmJpdHJhcnkgPSAoKSA9PiBbJ2F1dG8nLCBpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5ID0gKCkgPT4gW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmddIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0TGVuZ3RoV2l0aEVtcHR5QW5kQXJiaXRyYXJ5ID0gKCkgPT4gWycnLCBpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGhdIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkgPSAoKSA9PiBbJ2F1dG8nLCBpc051bWJlciwgaXNBcmJpdHJhcnlWYWx1ZV0gYXMgY29uc3RcbiAgICBjb25zdCBnZXRQb3NpdGlvbnMgPSAoKSA9PlxuICAgICAgICBbXG4gICAgICAgICAgICAnYm90dG9tJyxcbiAgICAgICAgICAgICdjZW50ZXInLFxuICAgICAgICAgICAgJ2xlZnQnLFxuICAgICAgICAgICAgJ2xlZnQtYm90dG9tJyxcbiAgICAgICAgICAgICdsZWZ0LXRvcCcsXG4gICAgICAgICAgICAncmlnaHQnLFxuICAgICAgICAgICAgJ3JpZ2h0LWJvdHRvbScsXG4gICAgICAgICAgICAncmlnaHQtdG9wJyxcbiAgICAgICAgICAgICd0b3AnLFxuICAgICAgICBdIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0TGluZVN0eWxlcyA9ICgpID0+IFsnc29saWQnLCAnZGFzaGVkJywgJ2RvdHRlZCcsICdkb3VibGUnLCAnbm9uZSddIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0QmxlbmRNb2RlcyA9ICgpID0+XG4gICAgICAgIFtcbiAgICAgICAgICAgICdub3JtYWwnLFxuICAgICAgICAgICAgJ211bHRpcGx5JyxcbiAgICAgICAgICAgICdzY3JlZW4nLFxuICAgICAgICAgICAgJ292ZXJsYXknLFxuICAgICAgICAgICAgJ2RhcmtlbicsXG4gICAgICAgICAgICAnbGlnaHRlbicsXG4gICAgICAgICAgICAnY29sb3ItZG9kZ2UnLFxuICAgICAgICAgICAgJ2NvbG9yLWJ1cm4nLFxuICAgICAgICAgICAgJ2hhcmQtbGlnaHQnLFxuICAgICAgICAgICAgJ3NvZnQtbGlnaHQnLFxuICAgICAgICAgICAgJ2RpZmZlcmVuY2UnLFxuICAgICAgICAgICAgJ2V4Y2x1c2lvbicsXG4gICAgICAgICAgICAnaHVlJyxcbiAgICAgICAgICAgICdzYXR1cmF0aW9uJyxcbiAgICAgICAgICAgICdjb2xvcicsXG4gICAgICAgICAgICAnbHVtaW5vc2l0eScsXG4gICAgICAgIF0gYXMgY29uc3RcbiAgICBjb25zdCBnZXRBbGlnbiA9ICgpID0+XG4gICAgICAgIFsnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdiZXR3ZWVuJywgJ2Fyb3VuZCcsICdldmVubHknLCAnc3RyZXRjaCddIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0WmVyb0FuZEVtcHR5ID0gKCkgPT4gWycnLCAnMCcsIGlzQXJiaXRyYXJ5VmFsdWVdIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0QnJlYWtzID0gKCkgPT5cbiAgICAgICAgWydhdXRvJywgJ2F2b2lkJywgJ2FsbCcsICdhdm9pZC1wYWdlJywgJ3BhZ2UnLCAnbGVmdCcsICdyaWdodCcsICdjb2x1bW4nXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldE51bWJlckFuZEFyYml0cmFyeSA9ICgpID0+IFtpc051bWJlciwgaXNBcmJpdHJhcnlWYWx1ZV1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGNhY2hlU2l6ZTogNTAwLFxuICAgICAgICBzZXBhcmF0b3I6ICc6JyxcbiAgICAgICAgdGhlbWU6IHtcbiAgICAgICAgICAgIGNvbG9yczogW2lzQW55XSxcbiAgICAgICAgICAgIHNwYWNpbmc6IFtpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGhdLFxuICAgICAgICAgICAgYmx1cjogWydub25lJywgJycsIGlzVHNoaXJ0U2l6ZSwgaXNBcmJpdHJhcnlWYWx1ZV0sXG4gICAgICAgICAgICBicmlnaHRuZXNzOiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIGJvcmRlckNvbG9yOiBbY29sb3JzXSxcbiAgICAgICAgICAgIGJvcmRlclJhZGl1czogWydub25lJywgJycsICdmdWxsJywgaXNUc2hpcnRTaXplLCBpc0FyYml0cmFyeVZhbHVlXSxcbiAgICAgICAgICAgIGJvcmRlclNwYWNpbmc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBib3JkZXJXaWR0aDogZ2V0TGVuZ3RoV2l0aEVtcHR5QW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBjb250cmFzdDogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBncmF5c2NhbGU6IGdldFplcm9BbmRFbXB0eSgpLFxuICAgICAgICAgICAgaHVlUm90YXRlOiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIGludmVydDogZ2V0WmVyb0FuZEVtcHR5KCksXG4gICAgICAgICAgICBnYXA6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBncmFkaWVudENvbG9yU3RvcHM6IFtjb2xvcnNdLFxuICAgICAgICAgICAgZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnM6IFtpc1BlcmNlbnQsIGlzQXJiaXRyYXJ5TGVuZ3RoXSxcbiAgICAgICAgICAgIGluc2V0OiBnZXRTcGFjaW5nV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIG1hcmdpbjogZ2V0U3BhY2luZ1dpdGhBdXRvQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBvcGFjaXR5OiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIHBhZGRpbmc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBzYXR1cmF0ZTogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBzY2FsZTogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBzZXBpYTogZ2V0WmVyb0FuZEVtcHR5KCksXG4gICAgICAgICAgICBza2V3OiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIHNwYWNlOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgdHJhbnNsYXRlOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc0dyb3Vwczoge1xuICAgICAgICAgICAgLy8gTGF5b3V0XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFzcGVjdCBSYXRpb1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FzcGVjdC1yYXRpb1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBhc3BlY3Q6IFt7IGFzcGVjdDogWydhdXRvJywgJ3NxdWFyZScsICd2aWRlbycsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDb250YWluZXJcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jb250YWluZXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY29udGFpbmVyOiBbJ2NvbnRhaW5lciddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDb2x1bW5zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY29sdW1uc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjb2x1bW5zOiBbeyBjb2x1bW5zOiBbaXNUc2hpcnRTaXplXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQnJlYWsgQWZ0ZXJcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9icmVhay1hZnRlclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYnJlYWstYWZ0ZXInOiBbeyAnYnJlYWstYWZ0ZXInOiBnZXRCcmVha3MoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQnJlYWsgQmVmb3JlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYnJlYWstYmVmb3JlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdicmVhay1iZWZvcmUnOiBbeyAnYnJlYWstYmVmb3JlJzogZ2V0QnJlYWtzKCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJyZWFrIEluc2lkZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JyZWFrLWluc2lkZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYnJlYWstaW5zaWRlJzogW3sgJ2JyZWFrLWluc2lkZSc6IFsnYXV0bycsICdhdm9pZCcsICdhdm9pZC1wYWdlJywgJ2F2b2lkLWNvbHVtbiddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3ggRGVjb3JhdGlvbiBCcmVha1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JveC1kZWNvcmF0aW9uLWJyZWFrXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3gtZGVjb3JhdGlvbic6IFt7ICdib3gtZGVjb3JhdGlvbic6IFsnc2xpY2UnLCAnY2xvbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm94IFNpemluZ1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JveC1zaXppbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYm94OiBbeyBib3g6IFsnYm9yZGVyJywgJ2NvbnRlbnQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGlzcGxheVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2Rpc3BsYXlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZGlzcGxheTogW1xuICAgICAgICAgICAgICAgICdibG9jaycsXG4gICAgICAgICAgICAgICAgJ2lubGluZS1ibG9jaycsXG4gICAgICAgICAgICAgICAgJ2lubGluZScsXG4gICAgICAgICAgICAgICAgJ2ZsZXgnLFxuICAgICAgICAgICAgICAgICdpbmxpbmUtZmxleCcsXG4gICAgICAgICAgICAgICAgJ3RhYmxlJyxcbiAgICAgICAgICAgICAgICAnaW5saW5lLXRhYmxlJyxcbiAgICAgICAgICAgICAgICAndGFibGUtY2FwdGlvbicsXG4gICAgICAgICAgICAgICAgJ3RhYmxlLWNlbGwnLFxuICAgICAgICAgICAgICAgICd0YWJsZS1jb2x1bW4nLFxuICAgICAgICAgICAgICAgICd0YWJsZS1jb2x1bW4tZ3JvdXAnLFxuICAgICAgICAgICAgICAgICd0YWJsZS1mb290ZXItZ3JvdXAnLFxuICAgICAgICAgICAgICAgICd0YWJsZS1oZWFkZXItZ3JvdXAnLFxuICAgICAgICAgICAgICAgICd0YWJsZS1yb3ctZ3JvdXAnLFxuICAgICAgICAgICAgICAgICd0YWJsZS1yb3cnLFxuICAgICAgICAgICAgICAgICdmbG93LXJvb3QnLFxuICAgICAgICAgICAgICAgICdncmlkJyxcbiAgICAgICAgICAgICAgICAnaW5saW5lLWdyaWQnLFxuICAgICAgICAgICAgICAgICdjb250ZW50cycsXG4gICAgICAgICAgICAgICAgJ2xpc3QtaXRlbScsXG4gICAgICAgICAgICAgICAgJ2hpZGRlbicsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGbG9hdHNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbG9hdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBmbG9hdDogW3sgZmxvYXQ6IFsncmlnaHQnLCAnbGVmdCcsICdub25lJywgJ3N0YXJ0JywgJ2VuZCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDbGVhclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NsZWFyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNsZWFyOiBbeyBjbGVhcjogWydsZWZ0JywgJ3JpZ2h0JywgJ2JvdGgnLCAnbm9uZScsICdzdGFydCcsICdlbmQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSXNvbGF0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvaXNvbGF0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGlzb2xhdGlvbjogWydpc29sYXRlJywgJ2lzb2xhdGlvbi1hdXRvJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE9iamVjdCBGaXRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vYmplY3QtZml0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvYmplY3QtZml0JzogW3sgb2JqZWN0OiBbJ2NvbnRhaW4nLCAnY292ZXInLCAnZmlsbCcsICdub25lJywgJ3NjYWxlLWRvd24nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT2JqZWN0IFBvc2l0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb2JqZWN0LXBvc2l0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvYmplY3QtcG9zaXRpb24nOiBbeyBvYmplY3Q6IFsuLi5nZXRQb3NpdGlvbnMoKSwgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE92ZXJmbG93XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcmZsb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgb3ZlcmZsb3c6IFt7IG92ZXJmbG93OiBnZXRPdmVyZmxvdygpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdmVyZmxvdyBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcmZsb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ292ZXJmbG93LXgnOiBbeyAnb3ZlcmZsb3cteCc6IGdldE92ZXJmbG93KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE92ZXJmbG93IFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyZmxvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3ZlcmZsb3cteSc6IFt7ICdvdmVyZmxvdy15JzogZ2V0T3ZlcmZsb3coKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3ZlcnNjcm9sbCBCZWhhdmlvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJzY3JvbGwtYmVoYXZpb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgb3ZlcnNjcm9sbDogW3sgb3ZlcnNjcm9sbDogZ2V0T3ZlcnNjcm9sbCgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdmVyc2Nyb2xsIEJlaGF2aW9yIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyc2Nyb2xsLWJlaGF2aW9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdmVyc2Nyb2xsLXgnOiBbeyAnb3ZlcnNjcm9sbC14JzogZ2V0T3ZlcnNjcm9sbCgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdmVyc2Nyb2xsIEJlaGF2aW9yIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyc2Nyb2xsLWJlaGF2aW9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdmVyc2Nyb2xsLXknOiBbeyAnb3ZlcnNjcm9sbC15JzogZ2V0T3ZlcnNjcm9sbCgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Bvc2l0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHBvc2l0aW9uOiBbJ3N0YXRpYycsICdmaXhlZCcsICdhYnNvbHV0ZScsICdyZWxhdGl2ZScsICdzdGlja3knXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG9wIC8gUmlnaHQgLyBCb3R0b20gLyBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGluc2V0OiBbeyBpbnNldDogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmlnaHQgLyBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdpbnNldC14JzogW3sgJ2luc2V0LXgnOiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUb3AgLyBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2luc2V0LXknOiBbeyAnaW5zZXQteSc6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHN0YXJ0OiBbeyBzdGFydDogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGVuZDogW3sgZW5kOiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdG9wOiBbeyB0b3A6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHJpZ2h0OiBbeyByaWdodDogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGJvdHRvbTogW3sgYm90dG9tOiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGxlZnQ6IFt7IGxlZnQ6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFZpc2liaWxpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy92aXNpYmlsaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHZpc2liaWxpdHk6IFsndmlzaWJsZScsICdpbnZpc2libGUnLCAnY29sbGFwc2UnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogWi1JbmRleFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3otaW5kZXhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgejogW3sgejogWydhdXRvJywgaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8vIEZsZXhib3ggYW5kIEdyaWRcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxleCBCYXNpc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtYmFzaXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYmFzaXM6IFt7IGJhc2lzOiBnZXRTcGFjaW5nV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxleCBEaXJlY3Rpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4LWRpcmVjdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZmxleC1kaXJlY3Rpb24nOiBbeyBmbGV4OiBbJ3JvdycsICdyb3ctcmV2ZXJzZScsICdjb2wnLCAnY29sLXJldmVyc2UnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxleCBXcmFwXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleC13cmFwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmbGV4LXdyYXAnOiBbeyBmbGV4OiBbJ3dyYXAnLCAnd3JhcC1yZXZlcnNlJywgJ25vd3JhcCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGbGV4XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBmbGV4OiBbeyBmbGV4OiBbJzEnLCAnYXV0bycsICdpbml0aWFsJywgJ25vbmUnLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxleCBHcm93XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleC1ncm93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGdyb3c6IFt7IGdyb3c6IGdldFplcm9BbmRFbXB0eSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGbGV4IFNocmlua1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtc2hyaW5rXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNocmluazogW3sgc2hyaW5rOiBnZXRaZXJvQW5kRW1wdHkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3JkZXJcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vcmRlclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBvcmRlcjogW3sgb3JkZXI6IFsnZmlyc3QnLCAnbGFzdCcsICdub25lJywgaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBUZW1wbGF0ZSBDb2x1bW5zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmlkLWNvbHMnOiBbeyAnZ3JpZC1jb2xzJzogW2lzQW55XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBDb2x1bW4gU3RhcnQgLyBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWNvbHVtblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnY29sLXN0YXJ0LWVuZCc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNvbDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBzcGFuOiBbJ2Z1bGwnLCBpc0ludGVnZXIsIGlzQXJiaXRyYXJ5VmFsdWVdIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIENvbHVtbiBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtY29sdW1uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdjb2wtc3RhcnQnOiBbeyAnY29sLXN0YXJ0JzogZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBDb2x1bW4gRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1jb2x1bW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2NvbC1lbmQnOiBbeyAnY29sLWVuZCc6IGdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgVGVtcGxhdGUgUm93c1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtdGVtcGxhdGUtcm93c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JpZC1yb3dzJzogW3sgJ2dyaWQtcm93cyc6IFtpc0FueV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgUm93IFN0YXJ0IC8gRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1yb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jvdy1zdGFydC1lbmQnOiBbXG4gICAgICAgICAgICAgICAgeyByb3c6IFsnYXV0bycsIHsgc3BhbjogW2lzSW50ZWdlciwgaXNBcmJpdHJhcnlWYWx1ZV0gfSwgaXNBcmJpdHJhcnlWYWx1ZV0gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgUm93IFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1yb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jvdy1zdGFydCc6IFt7ICdyb3ctc3RhcnQnOiBnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIFJvdyBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLXJvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm93LWVuZCc6IFt7ICdyb3ctZW5kJzogZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBBdXRvIEZsb3dcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWF1dG8tZmxvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JpZC1mbG93JzogW3sgJ2dyaWQtZmxvdyc6IFsncm93JywgJ2NvbCcsICdkZW5zZScsICdyb3ctZGVuc2UnLCAnY29sLWRlbnNlJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgQXV0byBDb2x1bW5zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1hdXRvLWNvbHVtbnNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2F1dG8tY29scyc6IFt7ICdhdXRvLWNvbHMnOiBbJ2F1dG8nLCAnbWluJywgJ21heCcsICdmcicsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIEF1dG8gUm93c1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtYXV0by1yb3dzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdhdXRvLXJvd3MnOiBbeyAnYXV0by1yb3dzJzogWydhdXRvJywgJ21pbicsICdtYXgnLCAnZnInLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR2FwXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ2FwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGdhcDogW3sgZ2FwOiBbZ2FwXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR2FwIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9nYXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dhcC14JzogW3sgJ2dhcC14JzogW2dhcF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdhcCBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ2FwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdnYXAteSc6IFt7ICdnYXAteSc6IFtnYXBdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBKdXN0aWZ5IENvbnRlbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9qdXN0aWZ5LWNvbnRlbnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2p1c3RpZnktY29udGVudCc6IFt7IGp1c3RpZnk6IFsnbm9ybWFsJywgLi4uZ2V0QWxpZ24oKV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEp1c3RpZnkgSXRlbXNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9qdXN0aWZ5LWl0ZW1zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdqdXN0aWZ5LWl0ZW1zJzogW3sgJ2p1c3RpZnktaXRlbXMnOiBbJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnc3RyZXRjaCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBKdXN0aWZ5IFNlbGZcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9qdXN0aWZ5LXNlbGZcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2p1c3RpZnktc2VsZic6IFt7ICdqdXN0aWZ5LXNlbGYnOiBbJ2F1dG8nLCAnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdzdHJldGNoJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFsaWduIENvbnRlbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hbGlnbi1jb250ZW50XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdhbGlnbi1jb250ZW50JzogW3sgY29udGVudDogWydub3JtYWwnLCAuLi5nZXRBbGlnbigpLCAnYmFzZWxpbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQWxpZ24gSXRlbXNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hbGlnbi1pdGVtc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYWxpZ24taXRlbXMnOiBbeyBpdGVtczogWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ2Jhc2VsaW5lJywgJ3N0cmV0Y2gnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQWxpZ24gU2VsZlxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FsaWduLXNlbGZcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2FsaWduLXNlbGYnOiBbeyBzZWxmOiBbJ2F1dG8nLCAnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdzdHJldGNoJywgJ2Jhc2VsaW5lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBsYWNlIENvbnRlbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wbGFjZS1jb250ZW50XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdwbGFjZS1jb250ZW50JzogW3sgJ3BsYWNlLWNvbnRlbnQnOiBbLi4uZ2V0QWxpZ24oKSwgJ2Jhc2VsaW5lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBsYWNlIEl0ZW1zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2UtaXRlbXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3BsYWNlLWl0ZW1zJzogW3sgJ3BsYWNlLWl0ZW1zJzogWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ2Jhc2VsaW5lJywgJ3N0cmV0Y2gnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGxhY2UgU2VsZlxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BsYWNlLXNlbGZcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3BsYWNlLXNlbGYnOiBbeyAncGxhY2Utc2VsZic6IFsnYXV0bycsICdzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ3N0cmV0Y2gnXSB9XSxcbiAgICAgICAgICAgIC8vIFNwYWNpbmdcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZ1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcDogW3sgcDogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHB4OiBbeyBweDogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHB5OiBbeyBweTogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwczogW3sgcHM6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHBlOiBbeyBwZTogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcHQ6IFt7IHB0OiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmcgUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHByOiBbeyBwcjogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcGI6IFt7IHBiOiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmcgTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcGw6IFt7IHBsOiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBtOiBbeyBtOiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbXg6IFt7IG14OiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbXk6IFt7IG15OiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG1zOiBbeyBtczogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbWU6IFt7IG1lOiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBtdDogW3sgbXQ6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW4gUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbXI6IFt7IG1yOiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBtYjogW3sgbWI6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW4gTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBtbDogW3sgbWw6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTcGFjZSBCZXR3ZWVuIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zcGFjZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc3BhY2UteCc6IFt7ICdzcGFjZS14JzogW3NwYWNlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU3BhY2UgQmV0d2VlbiBYIFJldmVyc2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zcGFjZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc3BhY2UteC1yZXZlcnNlJzogWydzcGFjZS14LXJldmVyc2UnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU3BhY2UgQmV0d2VlbiBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3BhY2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NwYWNlLXknOiBbeyAnc3BhY2UteSc6IFtzcGFjZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNwYWNlIEJldHdlZW4gWSBSZXZlcnNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3BhY2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NwYWNlLXktcmV2ZXJzZSc6IFsnc3BhY2UteS1yZXZlcnNlJ10sXG4gICAgICAgICAgICAvLyBTaXppbmdcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy93aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB3OiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB3OiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnYXV0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWluJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtYXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc3Z3JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdsdncnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2R2dycsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2luZyxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWluLVdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWluLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdtaW4tdyc6IFt7ICdtaW4tdyc6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnbWluJywgJ21heCcsICdmaXQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWF4LVdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWF4LXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdtYXgtdyc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICdtYXgtdyc6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzcGFjaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2Z1bGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21pbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWF4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdmaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3NlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgc2NyZWVuOiBbaXNUc2hpcnRTaXplXSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUc2hpcnRTaXplLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBIZWlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9oZWlnaHRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaDogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYXV0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWluJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtYXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc3ZoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdsdmgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2R2aCcsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1pbi1IZWlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9taW4taGVpZ2h0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdtaW4taCc6IFtcbiAgICAgICAgICAgICAgICB7ICdtaW4taCc6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnbWluJywgJ21heCcsICdmaXQnLCAnc3ZoJywgJ2x2aCcsICdkdmgnXSB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWF4LUhlaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21heC1oZWlnaHRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ21heC1oJzogW1xuICAgICAgICAgICAgICAgIHsgJ21heC1oJzogW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmcsICdtaW4nLCAnbWF4JywgJ2ZpdCcsICdzdmgnLCAnbHZoJywgJ2R2aCddIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTaXplXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2l6ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzaXplOiBbeyBzaXplOiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZywgJ2F1dG8nLCAnbWluJywgJ21heCcsICdmaXQnXSB9XSxcbiAgICAgICAgICAgIC8vIFR5cG9ncmFwaHlcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBTaXplXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC1zaXplXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmb250LXNpemUnOiBbeyB0ZXh0OiBbJ2Jhc2UnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5TGVuZ3RoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBTbW9vdGhpbmdcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXNtb290aGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZm9udC1zbW9vdGhpbmcnOiBbJ2FudGlhbGlhc2VkJywgJ3N1YnBpeGVsLWFudGlhbGlhc2VkJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgU3R5bGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXN0eWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmb250LXN0eWxlJzogWydpdGFsaWMnLCAnbm90LWl0YWxpYyddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFdlaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtd2VpZ2h0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmb250LXdlaWdodCc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQ6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICd0aGluJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdleHRyYWxpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdsaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9ybWFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3NlbWlib2xkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdib2xkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdleHRyYWJvbGQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JsYWNrJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5TnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IEZhbWlseVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtZmFtaWx5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmb250LWZhbWlseSc6IFt7IGZvbnQ6IFtpc0FueV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2Z2bi1ub3JtYWwnOiBbJ25vcm1hbC1udW1zJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2Z2bi1vcmRpbmFsJzogWydvcmRpbmFsJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2Z2bi1zbGFzaGVkLXplcm8nOiBbJ3NsYXNoZWQtemVybyddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmdm4tZmlndXJlJzogWydsaW5pbmctbnVtcycsICdvbGRzdHlsZS1udW1zJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2Z2bi1zcGFjaW5nJzogWydwcm9wb3J0aW9uYWwtbnVtcycsICd0YWJ1bGFyLW51bXMnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZnZuLWZyYWN0aW9uJzogWydkaWFnb25hbC1mcmFjdGlvbnMnLCAnc3RhY2tlZC1mcmFjdG9ucyddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBMZXR0ZXIgU3BhY2luZ1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xldHRlci1zcGFjaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRyYWNraW5nOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0cmFja2luZzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ3RpZ2h0ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdub3JtYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd3aWRlc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGluZSBDbGFtcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xpbmUtY2xhbXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2xpbmUtY2xhbXAnOiBbeyAnbGluZS1jbGFtcCc6IFsnbm9uZScsIGlzTnVtYmVyLCBpc0FyYml0cmFyeU51bWJlcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIExpbmUgSGVpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGluZS1oZWlnaHRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbGVhZGluZzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGVhZGluZzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzbnVnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdub3JtYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbGF4ZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2xvb3NlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGlzdCBTdHlsZSBJbWFnZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xpc3Qtc3R5bGUtaW1hZ2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2xpc3QtaW1hZ2UnOiBbeyAnbGlzdC1pbWFnZSc6IFsnbm9uZScsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBMaXN0IFN0eWxlIFR5cGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saXN0LXN0eWxlLXR5cGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2xpc3Qtc3R5bGUtdHlwZSc6IFt7IGxpc3Q6IFsnbm9uZScsICdkaXNjJywgJ2RlY2ltYWwnLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGlzdCBTdHlsZSBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xpc3Qtc3R5bGUtcG9zaXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2xpc3Qtc3R5bGUtcG9zaXRpb24nOiBbeyBsaXN0OiBbJ2luc2lkZScsICdvdXRzaWRlJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBsYWNlaG9sZGVyIENvbG9yXG4gICAgICAgICAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSBUYWlsd2luZCBDU1MgdjMuMC4wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2Vob2xkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3BsYWNlaG9sZGVyLWNvbG9yJzogW3sgcGxhY2Vob2xkZXI6IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQbGFjZWhvbGRlciBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2Vob2xkZXItb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncGxhY2Vob2xkZXItb3BhY2l0eSc6IFt7ICdwbGFjZWhvbGRlci1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IEFsaWdubWVudFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtYWxpZ25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtYWxpZ25tZW50JzogW3sgdGV4dDogWydsZWZ0JywgJ2NlbnRlcicsICdyaWdodCcsICdqdXN0aWZ5JywgJ3N0YXJ0JywgJ2VuZCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1jb2xvcic6IFt7IHRleHQ6IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtb3BhY2l0eSc6IFt7ICd0ZXh0LW9wYWNpdHknOiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgRGVjb3JhdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtZGVjb3JhdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1kZWNvcmF0aW9uJzogWyd1bmRlcmxpbmUnLCAnb3ZlcmxpbmUnLCAnbGluZS10aHJvdWdoJywgJ25vLXVuZGVybGluZSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IERlY29yYXRpb24gU3R5bGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWRlY29yYXRpb24tc3R5bGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtZGVjb3JhdGlvbi1zdHlsZSc6IFt7IGRlY29yYXRpb246IFsuLi5nZXRMaW5lU3R5bGVzKCksICd3YXZ5J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgRGVjb3JhdGlvbiBUaGlja25lc3NcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzJzogW1xuICAgICAgICAgICAgICAgIHsgZGVjb3JhdGlvbjogWydhdXRvJywgJ2Zyb20tZm9udCcsIGlzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aF0gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgVW5kZXJsaW5lIE9mZnNldFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtdW5kZXJsaW5lLW9mZnNldFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndW5kZXJsaW5lLW9mZnNldCc6IFt7ICd1bmRlcmxpbmUtb2Zmc2V0JzogWydhdXRvJywgaXNMZW5ndGgsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IERlY29yYXRpb24gQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWRlY29yYXRpb24tY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtZGVjb3JhdGlvbi1jb2xvcic6IFt7IGRlY29yYXRpb246IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IFRyYW5zZm9ybVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtdHJhbnNmb3JtXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LXRyYW5zZm9ybSc6IFsndXBwZXJjYXNlJywgJ2xvd2VyY2FzZScsICdjYXBpdGFsaXplJywgJ25vcm1hbC1jYXNlJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgT3ZlcmZsb3dcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LW92ZXJmbG93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LW92ZXJmbG93JzogWyd0cnVuY2F0ZScsICd0ZXh0LWVsbGlwc2lzJywgJ3RleHQtY2xpcCddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IFdyYXBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LXdyYXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtd3JhcCc6IFt7IHRleHQ6IFsnd3JhcCcsICdub3dyYXAnLCAnYmFsYW5jZScsICdwcmV0dHknXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBJbmRlbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWluZGVudFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpbmRlbnQ6IFt7IGluZGVudDogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVmVydGljYWwgQWxpZ25tZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdmVydGljYWwtYWxpZ25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3ZlcnRpY2FsLWFsaWduJzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYWxpZ246IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdiYXNlbGluZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAndG9wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtaWRkbGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JvdHRvbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAndGV4dC10b3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtYm90dG9tJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzdWInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3N1cGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFdoaXRlc3BhY2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy93aGl0ZXNwYWNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHdoaXRlc3BhY2U6IFtcbiAgICAgICAgICAgICAgICB7IHdoaXRlc3BhY2U6IFsnbm9ybWFsJywgJ25vd3JhcCcsICdwcmUnLCAncHJlLWxpbmUnLCAncHJlLXdyYXAnLCAnYnJlYWstc3BhY2VzJ10gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFdvcmQgQnJlYWtcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy93b3JkLWJyZWFrXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGJyZWFrOiBbeyBicmVhazogWydub3JtYWwnLCAnd29yZHMnLCAnYWxsJywgJ2tlZXAnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSHlwaGVuc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2h5cGhlbnNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaHlwaGVuczogW3sgaHlwaGVuczogWydub25lJywgJ21hbnVhbCcsICdhdXRvJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENvbnRlbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jb250ZW50XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNvbnRlbnQ6IFt7IGNvbnRlbnQ6IFsnbm9uZScsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLy8gQmFja2dyb3VuZHNcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBBdHRhY2htZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1hdHRhY2htZW50XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1hdHRhY2htZW50JzogW3sgYmc6IFsnZml4ZWQnLCAnbG9jYWwnLCAnc2Nyb2xsJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgQ2xpcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtY2xpcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctY2xpcCc6IFt7ICdiZy1jbGlwJzogWydib3JkZXInLCAncGFkZGluZycsICdjb250ZW50JywgJ3RleHQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSBUYWlsd2luZCBDU1MgdjMuMC4wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1vcGFjaXR5JzogW3sgJ2JnLW9wYWNpdHknOiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgT3JpZ2luXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1vcmlnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLW9yaWdpbic6IFt7ICdiZy1vcmlnaW4nOiBbJ2JvcmRlcicsICdwYWRkaW5nJywgJ2NvbnRlbnQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtcG9zaXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLXBvc2l0aW9uJzogW3sgYmc6IFsuLi5nZXRQb3NpdGlvbnMoKSwgaXNBcmJpdHJhcnlQb3NpdGlvbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgUmVwZWF0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1yZXBlYXRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLXJlcGVhdCc6IFt7IGJnOiBbJ25vLXJlcGVhdCcsIHsgcmVwZWF0OiBbJycsICd4JywgJ3knLCAncm91bmQnLCAnc3BhY2UnXSB9XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBTaXplXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1zaXplXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1zaXplJzogW3sgYmc6IFsnYXV0bycsICdjb3ZlcicsICdjb250YWluJywgaXNBcmJpdHJhcnlTaXplXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBJbWFnZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtaW1hZ2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLWltYWdlJzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYmc6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgJ2dyYWRpZW50LXRvJzogWyd0JywgJ3RyJywgJ3InLCAnYnInLCAnYicsICdibCcsICdsJywgJ3RsJ10gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5SW1hZ2UsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1jb2xvcic6IFt7IGJnOiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgRnJvbSBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmFkaWVudC1mcm9tLXBvcyc6IFt7IGZyb206IFtncmFkaWVudENvbG9yU3RvcFBvc2l0aW9uc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIFZpYSBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmFkaWVudC12aWEtcG9zJzogW3sgdmlhOiBbZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBUbyBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmFkaWVudC10by1wb3MnOiBbeyB0bzogW2dyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgRnJvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmFkaWVudC1mcm9tJzogW3sgZnJvbTogW2dyYWRpZW50Q29sb3JTdG9wc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIFZpYVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmFkaWVudC12aWEnOiBbeyB2aWE6IFtncmFkaWVudENvbG9yU3RvcHNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBUb1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmFkaWVudC10byc6IFt7IHRvOiBbZ3JhZGllbnRDb2xvclN0b3BzXSB9XSxcbiAgICAgICAgICAgIC8vIEJvcmRlcnNcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1c1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcm91bmRlZDogW3sgcm91bmRlZDogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXMnOiBbeyAncm91bmRlZC1zJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1lJzogW3sgJ3JvdW5kZWQtZSc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtdCc6IFt7ICdyb3VuZGVkLXQnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtcic6IFt7ICdyb3VuZGVkLXInOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLWInOiBbeyAncm91bmRlZC1iJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtbCc6IFt7ICdyb3VuZGVkLWwnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBTdGFydCBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtc3MnOiBbeyAncm91bmRlZC1zcyc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIFN0YXJ0IEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtc2UnOiBbeyAncm91bmRlZC1zZSc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIEVuZCBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLWVlJzogW3sgJ3JvdW5kZWQtZWUnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBFbmQgU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLWVzJzogW3sgJ3JvdW5kZWQtZXMnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBUb3AgTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtdGwnOiBbeyAncm91bmRlZC10bCc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIFRvcCBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtdHInOiBbeyAncm91bmRlZC10cic6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIEJvdHRvbSBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtYnInOiBbeyAncm91bmRlZC1icic6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIEJvdHRvbSBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1ibCc6IFt7ICdyb3VuZGVkLWJsJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXcnOiBbeyBib3JkZXI6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy14JzogW3sgJ2JvcmRlci14JzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LXknOiBbeyAnYm9yZGVyLXknOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LXMnOiBbeyAnYm9yZGVyLXMnOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy1lJzogW3sgJ2JvcmRlci1lJzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXctdCc6IFt7ICdib3JkZXItdCc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXctcic6IFt7ICdib3JkZXItcic6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LWInOiBbeyAnYm9yZGVyLWInOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXctbCc6IFt7ICdib3JkZXItbCc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1vcGFjaXR5JzogW3sgJ2JvcmRlci1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgU3R5bGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItc3R5bGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1zdHlsZSc6IFt7IGJvcmRlcjogWy4uLmdldExpbmVTdHlsZXMoKSwgJ2hpZGRlbiddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgV2lkdGggWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLXgnOiBbeyAnZGl2aWRlLXgnOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgV2lkdGggWCBSZXZlcnNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkaXZpZGUteC1yZXZlcnNlJzogWydkaXZpZGUteC1yZXZlcnNlJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpdmlkZSBXaWR0aCBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkaXZpZGUteSc6IFt7ICdkaXZpZGUteSc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpdmlkZSBXaWR0aCBZIFJldmVyc2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2RpdmlkZS15LXJldmVyc2UnOiBbJ2RpdmlkZS15LXJldmVyc2UnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGl2aWRlIE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLW9wYWNpdHknOiBbeyAnZGl2aWRlLW9wYWNpdHknOiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpdmlkZSBTdHlsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS1zdHlsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLXN0eWxlJzogW3sgZGl2aWRlOiBnZXRMaW5lU3R5bGVzKCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yJzogW3sgYm9yZGVyOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3IgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXgnOiBbeyAnYm9yZGVyLXgnOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3IgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXknOiBbeyAnYm9yZGVyLXknOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3IgVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sb3ItdCc6IFt7ICdib3JkZXItdCc6IFtib3JkZXJDb2xvcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBDb2xvciBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXInOiBbeyAnYm9yZGVyLXInOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3IgQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sb3ItYic6IFt7ICdib3JkZXItYic6IFtib3JkZXJDb2xvcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBDb2xvciBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sb3ItbCc6IFt7ICdib3JkZXItbCc6IFtib3JkZXJDb2xvcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpdmlkZSBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLWNvbG9yJzogW3sgZGl2aWRlOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdXRsaW5lIFN0eWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3V0bGluZS1zdHlsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3V0bGluZS1zdHlsZSc6IFt7IG91dGxpbmU6IFsnJywgLi4uZ2V0TGluZVN0eWxlcygpXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3V0bGluZSBPZmZzZXRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdXRsaW5lLW9mZnNldFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3V0bGluZS1vZmZzZXQnOiBbeyAnb3V0bGluZS1vZmZzZXQnOiBbaXNMZW5ndGgsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdXRsaW5lIFdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3V0bGluZS13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3V0bGluZS13JzogW3sgb3V0bGluZTogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE91dGxpbmUgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdXRsaW5lLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdXRsaW5lLWNvbG9yJzogW3sgb3V0bGluZTogW2NvbG9yc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpbmcgV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyaW5nLXcnOiBbeyByaW5nOiBnZXRMZW5ndGhXaXRoRW1wdHlBbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmluZyBXaWR0aCBJbnNldFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jpbmctd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jpbmctdy1pbnNldCc6IFsncmluZy1pbnNldCddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaW5nIENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncmluZy1jb2xvcic6IFt7IHJpbmc6IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaW5nIE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jpbmctb3BhY2l0eSc6IFt7ICdyaW5nLW9wYWNpdHknOiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpbmcgT2Zmc2V0IFdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy1vZmZzZXQtd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jpbmctb2Zmc2V0LXcnOiBbeyAncmluZy1vZmZzZXQnOiBbaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmluZyBPZmZzZXQgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLW9mZnNldC1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncmluZy1vZmZzZXQtY29sb3InOiBbeyAncmluZy1vZmZzZXQnOiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8vIEVmZmVjdHNcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm94IFNoYWRvd1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JveC1zaGFkb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2hhZG93OiBbeyBzaGFkb3c6IFsnJywgJ2lubmVyJywgJ25vbmUnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5U2hhZG93XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm94IFNoYWRvdyBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JveC1zaGFkb3ctY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NoYWRvdy1jb2xvcic6IFt7IHNoYWRvdzogW2lzQW55XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3BhY2l0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL29wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgb3BhY2l0eTogW3sgb3BhY2l0eTogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNaXggQmxlbmQgTW9kZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21peC1ibGVuZC1tb2RlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdtaXgtYmxlbmQnOiBbeyAnbWl4LWJsZW5kJzogWy4uLmdldEJsZW5kTW9kZXMoKSwgJ3BsdXMtbGlnaHRlcicsICdwbHVzLWRhcmtlciddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIEJsZW5kIE1vZGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWJsZW5kLW1vZGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLWJsZW5kJzogW3sgJ2JnLWJsZW5kJzogZ2V0QmxlbmRNb2RlcygpIH1dLFxuICAgICAgICAgICAgLy8gRmlsdGVyc1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGaWx0ZXJcbiAgICAgICAgICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIFRhaWx3aW5kIENTUyB2My4wLjBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9maWx0ZXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZmlsdGVyOiBbeyBmaWx0ZXI6IFsnJywgJ25vbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmx1clxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JsdXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYmx1cjogW3sgYmx1cjogW2JsdXJdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCcmlnaHRuZXNzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYnJpZ2h0bmVzc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBicmlnaHRuZXNzOiBbeyBicmlnaHRuZXNzOiBbYnJpZ2h0bmVzc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENvbnRyYXN0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY29udHJhc3RcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY29udHJhc3Q6IFt7IGNvbnRyYXN0OiBbY29udHJhc3RdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEcm9wIFNoYWRvd1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2Ryb3Atc2hhZG93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkcm9wLXNoYWRvdyc6IFt7ICdkcm9wLXNoYWRvdyc6IFsnJywgJ25vbmUnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmF5c2NhbGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmF5c2NhbGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZ3JheXNjYWxlOiBbeyBncmF5c2NhbGU6IFtncmF5c2NhbGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBIdWUgUm90YXRlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvaHVlLXJvdGF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnaHVlLXJvdGF0ZSc6IFt7ICdodWUtcm90YXRlJzogW2h1ZVJvdGF0ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEludmVydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ludmVydFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpbnZlcnQ6IFt7IGludmVydDogW2ludmVydF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNhdHVyYXRlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2F0dXJhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2F0dXJhdGU6IFt7IHNhdHVyYXRlOiBbc2F0dXJhdGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTZXBpYVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NlcGlhXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNlcGlhOiBbeyBzZXBpYTogW3NlcGlhXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgRmlsdGVyXG4gICAgICAgICAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSBUYWlsd2luZCBDU1MgdjMuMC4wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtZmlsdGVyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1maWx0ZXInOiBbeyAnYmFja2Ryb3AtZmlsdGVyJzogWycnLCAnbm9uZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBCbHVyXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtYmx1clxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtYmx1cic6IFt7ICdiYWNrZHJvcC1ibHVyJzogW2JsdXJdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBCcmlnaHRuZXNzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtYnJpZ2h0bmVzc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtYnJpZ2h0bmVzcyc6IFt7ICdiYWNrZHJvcC1icmlnaHRuZXNzJzogW2JyaWdodG5lc3NdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBDb250cmFzdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWNvbnRyYXN0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1jb250cmFzdCc6IFt7ICdiYWNrZHJvcC1jb250cmFzdCc6IFtjb250cmFzdF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIEdyYXlzY2FsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWdyYXlzY2FsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtZ3JheXNjYWxlJzogW3sgJ2JhY2tkcm9wLWdyYXlzY2FsZSc6IFtncmF5c2NhbGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBIdWUgUm90YXRlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtaHVlLXJvdGF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtaHVlLXJvdGF0ZSc6IFt7ICdiYWNrZHJvcC1odWUtcm90YXRlJzogW2h1ZVJvdGF0ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIEludmVydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWludmVydFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtaW52ZXJ0JzogW3sgJ2JhY2tkcm9wLWludmVydCc6IFtpbnZlcnRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3Atb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3Atb3BhY2l0eSc6IFt7ICdiYWNrZHJvcC1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBTYXR1cmF0ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLXNhdHVyYXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1zYXR1cmF0ZSc6IFt7ICdiYWNrZHJvcC1zYXR1cmF0ZSc6IFtzYXR1cmF0ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIFNlcGlhXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3Atc2VwaWFcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLXNlcGlhJzogW3sgJ2JhY2tkcm9wLXNlcGlhJzogW3NlcGlhXSB9XSxcbiAgICAgICAgICAgIC8vIFRhYmxlc1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sbGFwc2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sbGFwc2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xsYXBzZSc6IFt7IGJvcmRlcjogWydjb2xsYXBzZScsICdzZXBhcmF0ZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgU3BhY2luZ1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1zcGFjaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItc3BhY2luZyc6IFt7ICdib3JkZXItc3BhY2luZyc6IFtib3JkZXJTcGFjaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFNwYWNpbmcgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1zcGFjaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItc3BhY2luZy14JzogW3sgJ2JvcmRlci1zcGFjaW5nLXgnOiBbYm9yZGVyU3BhY2luZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBTcGFjaW5nIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItc3BhY2luZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXNwYWNpbmcteSc6IFt7ICdib3JkZXItc3BhY2luZy15JzogW2JvcmRlclNwYWNpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUYWJsZSBMYXlvdXRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90YWJsZS1sYXlvdXRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RhYmxlLWxheW91dCc6IFt7IHRhYmxlOiBbJ2F1dG8nLCAnZml4ZWQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ2FwdGlvbiBTaWRlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY2FwdGlvbi1zaWRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNhcHRpb246IFt7IGNhcHRpb246IFsndG9wJywgJ2JvdHRvbSddIH1dLFxuICAgICAgICAgICAgLy8gVHJhbnNpdGlvbnMgYW5kIEFuaW1hdGlvblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuaXNpdGlvbiBQcm9wZXJ0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zaXRpb24tcHJvcGVydHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2FsbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvcnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ29wYWNpdHknLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3NoYWRvdycsXG4gICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNmb3JtJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5zaXRpb24gRHVyYXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2l0aW9uLWR1cmF0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGR1cmF0aW9uOiBbeyBkdXJhdGlvbjogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5zaXRpb24gVGltaW5nIEZ1bmN0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZWFzZTogW3sgZWFzZTogWydsaW5lYXInLCAnaW4nLCAnb3V0JywgJ2luLW91dCcsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuc2l0aW9uIERlbGF5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNpdGlvbi1kZWxheVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBkZWxheTogW3sgZGVsYXk6IGdldE51bWJlckFuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBbmltYXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hbmltYXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYW5pbWF0ZTogW3sgYW5pbWF0ZTogWydub25lJywgJ3NwaW4nLCAncGluZycsICdwdWxzZScsICdib3VuY2UnLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8vIFRyYW5zZm9ybXNcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbnNmb3JtXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNmb3JtXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRyYW5zZm9ybTogW3sgdHJhbnNmb3JtOiBbJycsICdncHUnLCAnbm9uZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY2FsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NjYWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNjYWxlOiBbeyBzY2FsZTogW3NjYWxlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2NhbGUgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NjYWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY2FsZS14JzogW3sgJ3NjYWxlLXgnOiBbc2NhbGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY2FsZSBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2NhbGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NjYWxlLXknOiBbeyAnc2NhbGUteSc6IFtzY2FsZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJvdGF0ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3JvdGF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICByb3RhdGU6IFt7IHJvdGF0ZTogW2lzSW50ZWdlciwgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5zbGF0ZSBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNsYXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0cmFuc2xhdGUteCc6IFt7ICd0cmFuc2xhdGUteCc6IFt0cmFuc2xhdGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuc2xhdGUgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zbGF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndHJhbnNsYXRlLXknOiBbeyAndHJhbnNsYXRlLXknOiBbdHJhbnNsYXRlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2tldyBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2tld1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2tldy14JzogW3sgJ3NrZXcteCc6IFtza2V3XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2tldyBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2tld1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2tldy15JzogW3sgJ3NrZXcteSc6IFtza2V3XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbnNmb3JtIE9yaWdpblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zZm9ybS1vcmlnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RyYW5zZm9ybS1vcmlnaW4nOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW46IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RvcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAndG9wLXJpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdyaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYm90dG9tLXJpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdib3R0b20nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JvdHRvbS1sZWZ0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdsZWZ0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0b3AtbGVmdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLy8gSW50ZXJhY3Rpdml0eVxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBY2NlbnQgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hY2NlbnQtY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYWNjZW50OiBbeyBhY2NlbnQ6IFsnYXV0bycsIGNvbG9yc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFwcGVhcmFuY2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hcHBlYXJhbmNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGFwcGVhcmFuY2U6IFt7IGFwcGVhcmFuY2U6IFsnbm9uZScsICdhdXRvJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEN1cnNvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2N1cnNvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjdXJzb3I6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnNvcjogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmF1bHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3dhaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21vdmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2hlbHAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25vdC1hbGxvd2VkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjb250ZXh0LW1lbnUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2dyZXNzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjZWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjcm9zc2hhaXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcnRpY2FsLXRleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2FsaWFzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjb3B5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICduby1kcm9wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdncmFiJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdncmFiYmluZycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYWxsLXNjcm9sbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnY29sLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAncm93LXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbi1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2UtcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAndy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25lLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbnctcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzZS1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3N3LXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZXctcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICducy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25lc3ctcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdud3NlLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnem9vbS1pbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnem9vbS1vdXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ2FyZXQgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9qdXN0LWluLXRpbWUtbW9kZSNjYXJldC1jb2xvci11dGlsaXRpZXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2NhcmV0LWNvbG9yJzogW3sgY2FyZXQ6IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQb2ludGVyIEV2ZW50c1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BvaW50ZXItZXZlbnRzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdwb2ludGVyLWV2ZW50cyc6IFt7ICdwb2ludGVyLWV2ZW50cyc6IFsnbm9uZScsICdhdXRvJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJlc2l6ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jlc2l6ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICByZXNpemU6IFt7IHJlc2l6ZTogWydub25lJywgJ3knLCAneCcsICcnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIEJlaGF2aW9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLWJlaGF2aW9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtYmVoYXZpb3InOiBbeyBzY3JvbGw6IFsnYXV0bycsICdzbW9vdGgnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1tJzogW3sgJ3Njcm9sbC1tJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW14JzogW3sgJ3Njcm9sbC1teCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1teSc6IFt7ICdzY3JvbGwtbXknOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW1zJzogW3sgJ3Njcm9sbC1tcyc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW1lJzogW3sgJ3Njcm9sbC1tZSc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW10JzogW3sgJ3Njcm9sbC1tdCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbXInOiBbeyAnc2Nyb2xsLW1yJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbWInOiBbeyAnc2Nyb2xsLW1iJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW1sJzogW3sgJ3Njcm9sbC1tbCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1wJzogW3sgJ3Njcm9sbC1wJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcHgnOiBbeyAnc2Nyb2xsLXB4JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcHknOiBbeyAnc2Nyb2xsLXB5JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXBzJzogW3sgJ3Njcm9sbC1wcyc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcGUnOiBbeyAnc2Nyb2xsLXBlJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1wdCc6IFt7ICdzY3JvbGwtcHQnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZyBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcHInOiBbeyAnc2Nyb2xsLXByJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1wYic6IFt7ICdzY3JvbGwtcGInOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZyBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1wbCc6IFt7ICdzY3JvbGwtcGwnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgU25hcCBBbGlnblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1zbmFwLWFsaWduXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzbmFwLWFsaWduJzogW3sgc25hcDogWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ2FsaWduLW5vbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFNuYXAgU3RvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1zbmFwLXN0b3BcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NuYXAtc3RvcCc6IFt7IHNuYXA6IFsnbm9ybWFsJywgJ2Fsd2F5cyddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgU25hcCBUeXBlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXNuYXAtdHlwZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc25hcC10eXBlJzogW3sgc25hcDogWydub25lJywgJ3gnLCAneScsICdib3RoJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBTbmFwIFR5cGUgU3RyaWN0bmVzc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1zbmFwLXR5cGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NuYXAtc3RyaWN0bmVzcyc6IFt7IHNuYXA6IFsnbWFuZGF0b3J5JywgJ3Byb3hpbWl0eSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUb3VjaCBBY3Rpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3VjaC1hY3Rpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdG91Y2g6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRvdWNoOiBbJ2F1dG8nLCAnbm9uZScsICdtYW5pcHVsYXRpb24nXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG91Y2ggQWN0aW9uIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3VjaC1hY3Rpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RvdWNoLXgnOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAndG91Y2gtcGFuJzogWyd4JywgJ2xlZnQnLCAncmlnaHQnXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG91Y2ggQWN0aW9uIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3VjaC1hY3Rpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RvdWNoLXknOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAndG91Y2gtcGFuJzogWyd5JywgJ3VwJywgJ2Rvd24nXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG91Y2ggQWN0aW9uIFBpbmNoIFpvb21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3VjaC1hY3Rpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RvdWNoLXB6JzogWyd0b3VjaC1waW5jaC16b29tJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFVzZXIgU2VsZWN0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdXNlci1zZWxlY3RcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2VsZWN0OiBbeyBzZWxlY3Q6IFsnbm9uZScsICd0ZXh0JywgJ2FsbCcsICdhdXRvJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFdpbGwgQ2hhbmdlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvd2lsbC1jaGFuZ2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3dpbGwtY2hhbmdlJzogW1xuICAgICAgICAgICAgICAgIHsgJ3dpbGwtY2hhbmdlJzogWydhdXRvJywgJ3Njcm9sbCcsICdjb250ZW50cycsICd0cmFuc2Zvcm0nLCBpc0FyYml0cmFyeVZhbHVlXSB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8vIFNWR1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGaWxsXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmlsbFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBmaWxsOiBbeyBmaWxsOiBbY29sb3JzLCAnbm9uZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTdHJva2UgV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zdHJva2Utd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3N0cm9rZS13JzogW3sgc3Ryb2tlOiBbaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoLCBpc0FyYml0cmFyeU51bWJlcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFN0cm9rZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3N0cm9rZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzdHJva2U6IFt7IHN0cm9rZTogW2NvbG9ycywgJ25vbmUnXSB9XSxcbiAgICAgICAgICAgIC8vIEFjY2Vzc2liaWxpdHlcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2NyZWVuIFJlYWRlcnNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JlZW4tcmVhZGVyc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzcjogWydzci1vbmx5JywgJ25vdC1zci1vbmx5J10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvcmNlZCBDb2xvciBBZGp1c3RcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb3JjZWQtY29sb3ItYWRqdXN0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmb3JjZWQtY29sb3ItYWRqdXN0JzogW3sgJ2ZvcmNlZC1jb2xvci1hZGp1c3QnOiBbJ2F1dG8nLCAnbm9uZSddIH1dLFxuICAgICAgICB9LFxuICAgICAgICBjb25mbGljdGluZ0NsYXNzR3JvdXBzOiB7XG4gICAgICAgICAgICBvdmVyZmxvdzogWydvdmVyZmxvdy14JywgJ292ZXJmbG93LXknXSxcbiAgICAgICAgICAgIG92ZXJzY3JvbGw6IFsnb3ZlcnNjcm9sbC14JywgJ292ZXJzY3JvbGwteSddLFxuICAgICAgICAgICAgaW5zZXQ6IFsnaW5zZXQteCcsICdpbnNldC15JywgJ3N0YXJ0JywgJ2VuZCcsICd0b3AnLCAncmlnaHQnLCAnYm90dG9tJywgJ2xlZnQnXSxcbiAgICAgICAgICAgICdpbnNldC14JzogWydyaWdodCcsICdsZWZ0J10sXG4gICAgICAgICAgICAnaW5zZXQteSc6IFsndG9wJywgJ2JvdHRvbSddLFxuICAgICAgICAgICAgZmxleDogWydiYXNpcycsICdncm93JywgJ3NocmluayddLFxuICAgICAgICAgICAgZ2FwOiBbJ2dhcC14JywgJ2dhcC15J10sXG4gICAgICAgICAgICBwOiBbJ3B4JywgJ3B5JywgJ3BzJywgJ3BlJywgJ3B0JywgJ3ByJywgJ3BiJywgJ3BsJ10sXG4gICAgICAgICAgICBweDogWydwcicsICdwbCddLFxuICAgICAgICAgICAgcHk6IFsncHQnLCAncGInXSxcbiAgICAgICAgICAgIG06IFsnbXgnLCAnbXknLCAnbXMnLCAnbWUnLCAnbXQnLCAnbXInLCAnbWInLCAnbWwnXSxcbiAgICAgICAgICAgIG14OiBbJ21yJywgJ21sJ10sXG4gICAgICAgICAgICBteTogWydtdCcsICdtYiddLFxuICAgICAgICAgICAgc2l6ZTogWyd3JywgJ2gnXSxcbiAgICAgICAgICAgICdmb250LXNpemUnOiBbJ2xlYWRpbmcnXSxcbiAgICAgICAgICAgICdmdm4tbm9ybWFsJzogW1xuICAgICAgICAgICAgICAgICdmdm4tb3JkaW5hbCcsXG4gICAgICAgICAgICAgICAgJ2Z2bi1zbGFzaGVkLXplcm8nLFxuICAgICAgICAgICAgICAgICdmdm4tZmlndXJlJyxcbiAgICAgICAgICAgICAgICAnZnZuLXNwYWNpbmcnLFxuICAgICAgICAgICAgICAgICdmdm4tZnJhY3Rpb24nLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICdmdm4tb3JkaW5hbCc6IFsnZnZuLW5vcm1hbCddLFxuICAgICAgICAgICAgJ2Z2bi1zbGFzaGVkLXplcm8nOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICAgICAgICdmdm4tZmlndXJlJzogWydmdm4tbm9ybWFsJ10sXG4gICAgICAgICAgICAnZnZuLXNwYWNpbmcnOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICAgICAgICdmdm4tZnJhY3Rpb24nOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICAgICAgICdsaW5lLWNsYW1wJzogWydkaXNwbGF5JywgJ292ZXJmbG93J10sXG4gICAgICAgICAgICByb3VuZGVkOiBbXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtcycsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtZScsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtdCcsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtcicsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtYicsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtbCcsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtc3MnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLXNlJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1lZScsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtZXMnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLXRsJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC10cicsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtYnInLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWJsJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAncm91bmRlZC1zJzogWydyb3VuZGVkLXNzJywgJ3JvdW5kZWQtZXMnXSxcbiAgICAgICAgICAgICdyb3VuZGVkLWUnOiBbJ3JvdW5kZWQtc2UnLCAncm91bmRlZC1lZSddLFxuICAgICAgICAgICAgJ3JvdW5kZWQtdCc6IFsncm91bmRlZC10bCcsICdyb3VuZGVkLXRyJ10sXG4gICAgICAgICAgICAncm91bmRlZC1yJzogWydyb3VuZGVkLXRyJywgJ3JvdW5kZWQtYnInXSxcbiAgICAgICAgICAgICdyb3VuZGVkLWInOiBbJ3JvdW5kZWQtYnInLCAncm91bmRlZC1ibCddLFxuICAgICAgICAgICAgJ3JvdW5kZWQtbCc6IFsncm91bmRlZC10bCcsICdyb3VuZGVkLWJsJ10sXG4gICAgICAgICAgICAnYm9yZGVyLXNwYWNpbmcnOiBbJ2JvcmRlci1zcGFjaW5nLXgnLCAnYm9yZGVyLXNwYWNpbmcteSddLFxuICAgICAgICAgICAgJ2JvcmRlci13JzogW1xuICAgICAgICAgICAgICAgICdib3JkZXItdy1zJyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLXctZScsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci13LXQnLFxuICAgICAgICAgICAgICAgICdib3JkZXItdy1yJyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLXctYicsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci13LWwnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICdib3JkZXItdy14JzogWydib3JkZXItdy1yJywgJ2JvcmRlci13LWwnXSxcbiAgICAgICAgICAgICdib3JkZXItdy15JzogWydib3JkZXItdy10JywgJ2JvcmRlci13LWInXSxcbiAgICAgICAgICAgICdib3JkZXItY29sb3InOiBbXG4gICAgICAgICAgICAgICAgJ2JvcmRlci1jb2xvci10JyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXInLFxuICAgICAgICAgICAgICAgICdib3JkZXItY29sb3ItYicsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci1jb2xvci1sJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXgnOiBbJ2JvcmRlci1jb2xvci1yJywgJ2JvcmRlci1jb2xvci1sJ10sXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXknOiBbJ2JvcmRlci1jb2xvci10JywgJ2JvcmRlci1jb2xvci1iJ10sXG4gICAgICAgICAgICAnc2Nyb2xsLW0nOiBbXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1teCcsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1teScsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1tcycsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1tZScsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1tdCcsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1tcicsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1tYicsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1tbCcsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgJ3Njcm9sbC1teCc6IFsnc2Nyb2xsLW1yJywgJ3Njcm9sbC1tbCddLFxuICAgICAgICAgICAgJ3Njcm9sbC1teSc6IFsnc2Nyb2xsLW10JywgJ3Njcm9sbC1tYiddLFxuICAgICAgICAgICAgJ3Njcm9sbC1wJzogW1xuICAgICAgICAgICAgICAgICdzY3JvbGwtcHgnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcHknLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcHMnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcGUnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcHQnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcHInLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcGInLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcGwnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICdzY3JvbGwtcHgnOiBbJ3Njcm9sbC1wcicsICdzY3JvbGwtcGwnXSxcbiAgICAgICAgICAgICdzY3JvbGwtcHknOiBbJ3Njcm9sbC1wdCcsICdzY3JvbGwtcGInXSxcbiAgICAgICAgICAgIHRvdWNoOiBbJ3RvdWNoLXgnLCAndG91Y2gteScsICd0b3VjaC1weiddLFxuICAgICAgICAgICAgJ3RvdWNoLXgnOiBbJ3RvdWNoJ10sXG4gICAgICAgICAgICAndG91Y2gteSc6IFsndG91Y2gnXSxcbiAgICAgICAgICAgICd0b3VjaC1weic6IFsndG91Y2gnXSxcbiAgICAgICAgfSxcbiAgICAgICAgY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzOiB7XG4gICAgICAgICAgICAnZm9udC1zaXplJzogWydsZWFkaW5nJ10sXG4gICAgICAgIH0sXG4gICAgfSBhcyBjb25zdCBzYXRpc2ZpZXMgQ29uZmlnPERlZmF1bHRDbGFzc0dyb3VwSWRzLCBEZWZhdWx0VGhlbWVHcm91cElkcz5cbn1cbiIsICJpbXBvcnQgeyBDb25maWdFeHRlbnNpb24sIEdlbmVyaWNDb25maWcgfSBmcm9tICcuL3R5cGVzJ1xuXG4vKipcbiAqIEBwYXJhbSBiYXNlQ29uZmlnIENvbmZpZyB3aGVyZSBvdGhlciBjb25maWcgd2lsbCBiZSBtZXJnZWQgaW50by4gVGhpcyBvYmplY3Qgd2lsbCBiZSBtdXRhdGVkLlxuICogQHBhcmFtIGNvbmZpZ0V4dGVuc2lvbiBQYXJ0aWFsIGNvbmZpZyB0byBtZXJnZSBpbnRvIHRoZSBgYmFzZUNvbmZpZ2AuXG4gKi9cbmV4cG9ydCBjb25zdCBtZXJnZUNvbmZpZ3MgPSA8Q2xhc3NHcm91cElkcyBleHRlbmRzIHN0cmluZywgVGhlbWVHcm91cElkcyBleHRlbmRzIHN0cmluZyA9IG5ldmVyPihcbiAgICBiYXNlQ29uZmlnOiBHZW5lcmljQ29uZmlnLFxuICAgIHtcbiAgICAgICAgY2FjaGVTaXplLFxuICAgICAgICBwcmVmaXgsXG4gICAgICAgIHNlcGFyYXRvcixcbiAgICAgICAgZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUsXG4gICAgICAgIGV4dGVuZCA9IHt9LFxuICAgICAgICBvdmVycmlkZSA9IHt9LFxuICAgIH06IENvbmZpZ0V4dGVuc2lvbjxDbGFzc0dyb3VwSWRzLCBUaGVtZUdyb3VwSWRzPixcbikgPT4ge1xuICAgIG92ZXJyaWRlUHJvcGVydHkoYmFzZUNvbmZpZywgJ2NhY2hlU2l6ZScsIGNhY2hlU2l6ZSlcbiAgICBvdmVycmlkZVByb3BlcnR5KGJhc2VDb25maWcsICdwcmVmaXgnLCBwcmVmaXgpXG4gICAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlQ29uZmlnLCAnc2VwYXJhdG9yJywgc2VwYXJhdG9yKVxuICAgIG92ZXJyaWRlUHJvcGVydHkoYmFzZUNvbmZpZywgJ2V4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lJywgZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUpXG5cbiAgICBmb3IgKGNvbnN0IGNvbmZpZ0tleSBpbiBvdmVycmlkZSkge1xuICAgICAgICBvdmVycmlkZUNvbmZpZ1Byb3BlcnRpZXMoXG4gICAgICAgICAgICBiYXNlQ29uZmlnW2NvbmZpZ0tleSBhcyBrZXlvZiB0eXBlb2Ygb3ZlcnJpZGVdLFxuICAgICAgICAgICAgb3ZlcnJpZGVbY29uZmlnS2V5IGFzIGtleW9mIHR5cGVvZiBvdmVycmlkZV0sXG4gICAgICAgIClcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiBleHRlbmQpIHtcbiAgICAgICAgbWVyZ2VDb25maWdQcm9wZXJ0aWVzKFxuICAgICAgICAgICAgYmFzZUNvbmZpZ1trZXkgYXMga2V5b2YgdHlwZW9mIGV4dGVuZF0sXG4gICAgICAgICAgICBleHRlbmRba2V5IGFzIGtleW9mIHR5cGVvZiBleHRlbmRdLFxuICAgICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuIGJhc2VDb25maWdcbn1cblxuY29uc3Qgb3ZlcnJpZGVQcm9wZXJ0eSA9IDxUIGV4dGVuZHMgb2JqZWN0LCBLIGV4dGVuZHMga2V5b2YgVD4oXG4gICAgYmFzZU9iamVjdDogVCxcbiAgICBvdmVycmlkZUtleTogSyxcbiAgICBvdmVycmlkZVZhbHVlOiBUW0tdIHwgdW5kZWZpbmVkLFxuKSA9PiB7XG4gICAgaWYgKG92ZXJyaWRlVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBiYXNlT2JqZWN0W292ZXJyaWRlS2V5XSA9IG92ZXJyaWRlVmFsdWVcbiAgICB9XG59XG5cbmNvbnN0IG92ZXJyaWRlQ29uZmlnUHJvcGVydGllcyA9IChcbiAgICBiYXNlT2JqZWN0OiBQYXJ0aWFsPFJlY29yZDxzdHJpbmcsIHJlYWRvbmx5IHVua25vd25bXT4+LFxuICAgIG92ZXJyaWRlT2JqZWN0OiBQYXJ0aWFsPFJlY29yZDxzdHJpbmcsIHJlYWRvbmx5IHVua25vd25bXT4+IHwgdW5kZWZpbmVkLFxuKSA9PiB7XG4gICAgaWYgKG92ZXJyaWRlT2JqZWN0KSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIG92ZXJyaWRlT2JqZWN0KSB7XG4gICAgICAgICAgICBvdmVycmlkZVByb3BlcnR5KGJhc2VPYmplY3QsIGtleSwgb3ZlcnJpZGVPYmplY3Rba2V5XSlcbiAgICAgICAgfVxuICAgIH1cbn1cblxuY29uc3QgbWVyZ2VDb25maWdQcm9wZXJ0aWVzID0gKFxuICAgIGJhc2VPYmplY3Q6IFBhcnRpYWw8UmVjb3JkPHN0cmluZywgcmVhZG9ubHkgdW5rbm93bltdPj4sXG4gICAgbWVyZ2VPYmplY3Q6IFBhcnRpYWw8UmVjb3JkPHN0cmluZywgcmVhZG9ubHkgdW5rbm93bltdPj4gfCB1bmRlZmluZWQsXG4pID0+IHtcbiAgICBpZiAobWVyZ2VPYmplY3QpIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbWVyZ2VPYmplY3QpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlVmFsdWUgPSBtZXJnZU9iamVjdFtrZXldXG5cbiAgICAgICAgICAgIGlmIChtZXJnZVZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBiYXNlT2JqZWN0W2tleV0gPSAoYmFzZU9iamVjdFtrZXldIHx8IFtdKS5jb25jYXQobWVyZ2VWYWx1ZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsICJpbXBvcnQgeyBjcmVhdGVUYWlsd2luZE1lcmdlIH0gZnJvbSAnLi9jcmVhdGUtdGFpbHdpbmQtbWVyZ2UnXG5pbXBvcnQgeyBnZXREZWZhdWx0Q29uZmlnIH0gZnJvbSAnLi9kZWZhdWx0LWNvbmZpZydcbmltcG9ydCB7IG1lcmdlQ29uZmlncyB9IGZyb20gJy4vbWVyZ2UtY29uZmlncydcbmltcG9ydCB7IENvbmZpZ0V4dGVuc2lvbiwgRGVmYXVsdENsYXNzR3JvdXBJZHMsIERlZmF1bHRUaGVtZUdyb3VwSWRzLCBHZW5lcmljQ29uZmlnIH0gZnJvbSAnLi90eXBlcydcblxudHlwZSBDcmVhdGVDb25maWdTdWJzZXF1ZW50ID0gKGNvbmZpZzogR2VuZXJpY0NvbmZpZykgPT4gR2VuZXJpY0NvbmZpZ1xuXG5leHBvcnQgY29uc3QgZXh0ZW5kVGFpbHdpbmRNZXJnZSA9IDxcbiAgICBBZGRpdGlvbmFsQ2xhc3NHcm91cElkcyBleHRlbmRzIHN0cmluZyA9IG5ldmVyLFxuICAgIEFkZGl0aW9uYWxUaGVtZUdyb3VwSWRzIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsXG4+KFxuICAgIGNvbmZpZ0V4dGVuc2lvbjpcbiAgICAgICAgfCBDb25maWdFeHRlbnNpb248XG4gICAgICAgICAgICAgIERlZmF1bHRDbGFzc0dyb3VwSWRzIHwgQWRkaXRpb25hbENsYXNzR3JvdXBJZHMsXG4gICAgICAgICAgICAgIERlZmF1bHRUaGVtZUdyb3VwSWRzIHwgQWRkaXRpb25hbFRoZW1lR3JvdXBJZHNcbiAgICAgICAgICA+XG4gICAgICAgIHwgQ3JlYXRlQ29uZmlnU3Vic2VxdWVudCxcbiAgICAuLi5jcmVhdGVDb25maWc6IENyZWF0ZUNvbmZpZ1N1YnNlcXVlbnRbXVxuKSA9PlxuICAgIHR5cGVvZiBjb25maWdFeHRlbnNpb24gPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyBjcmVhdGVUYWlsd2luZE1lcmdlKGdldERlZmF1bHRDb25maWcsIGNvbmZpZ0V4dGVuc2lvbiwgLi4uY3JlYXRlQ29uZmlnKVxuICAgICAgICA6IGNyZWF0ZVRhaWx3aW5kTWVyZ2UoXG4gICAgICAgICAgICAgICgpID0+IG1lcmdlQ29uZmlncyhnZXREZWZhdWx0Q29uZmlnKCksIGNvbmZpZ0V4dGVuc2lvbiksXG4gICAgICAgICAgICAgIC4uLmNyZWF0ZUNvbmZpZyxcbiAgICAgICAgICApXG4iLCAiaW1wb3J0IHsgY3JlYXRlVGFpbHdpbmRNZXJnZSB9IGZyb20gJy4vY3JlYXRlLXRhaWx3aW5kLW1lcmdlJ1xuaW1wb3J0IHsgZ2V0RGVmYXVsdENvbmZpZyB9IGZyb20gJy4vZGVmYXVsdC1jb25maWcnXG5cbmV4cG9ydCBjb25zdCB0d01lcmdlID0gY3JlYXRlVGFpbHdpbmRNZXJnZShnZXREZWZhdWx0Q29uZmlnKVxuIiwgImltcG9ydCB7IHVzZUlzTXV0YXRpbmcgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5pbXBvcnQgeyB0eXBlIENvbHVtbkRlZiB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IEZpbHRlckljb24sIFJlZnJlc2hDdyB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB7IEFuaW1hdGVOdW1iZXIgfSBmcm9tIFwibW90aW9uLXBsdXMvcmVhY3RcIjtcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHRvYXN0IH0gZnJvbSBcInNvbm5lclwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbHVtbiB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB0eXBlIHsgQmlnSW50U3RyaW5nLCBOdW1lcmljU3RyaW5nIH0gZnJvbSBcIi4uLy4uL2RhdGEvdHlwZS11dGlsc1wiO1xuaW1wb3J0IHsgQmFkZ2UgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9iYWRnZVwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvYnV0dG9uXCI7XG5pbXBvcnQgeyBQb3BvdmVyLCBQb3BvdmVyQ29udGVudCwgUG9wb3ZlclRyaWdnZXIgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9wb3BvdmVyXCI7XG5pbXBvcnQgeyBUYWJsZUhlYWQgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS90YWJsZVwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGVJbnNlcnQgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZS1pbnNlcnRcIjtcbmltcG9ydCB7IHVzZUFjdGl2ZVRhYmxlUXVlcnkgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZS1xdWVyeVwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGVVcGRhdGUgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZS11cGRhdGVcIjtcbmltcG9ydCB7IHVzZUZpbHRlcmluZyB9IGZyb20gXCIuLi9ob29rcy91c2UtZmlsdGVyaW5nXCI7XG5pbXBvcnQgeyB1c2VJc0luc2VydGluZyB9IGZyb20gXCIuLi9ob29rcy91c2UtaXMtaW5zZXJ0aW5nXCI7XG5pbXBvcnQgeyB1c2VQYWdpbmF0aW9uIH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1wYWdpbmF0aW9uXCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rpb24gfSBmcm9tIFwiLi4vaG9va3MvdXNlLXNlbGVjdGlvblwiO1xuaW1wb3J0IHsgdXNlU29ydGluZyB9IGZyb20gXCIuLi9ob29rcy91c2Utc29ydGluZ1wiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vbGliL3V0aWxzXCI7XG5pbXBvcnQgeyBDZWxsLCBDZWxsUHJvcHMgfSBmcm9tIFwiLi9jZWxsL0NlbGxcIjtcbmltcG9ydCB7IGdldENlbGwgfSBmcm9tIFwiLi9jZWxsL2dldC1jZWxsXCI7XG5pbXBvcnQgeyBTZWxlY3RIZWFkZXJDZWxsIH0gZnJvbSBcIi4vY2VsbC9TZWxlY3RIZWFkZXJDZWxsXCI7XG5pbXBvcnQgeyBTZWxlY3RSb3dDZWxsIH0gZnJvbSBcIi4vY2VsbC9TZWxlY3RSb3dDZWxsXCI7XG5pbXBvcnQgeyBXcml0ZWFibGVDZWxsIH0gZnJvbSBcIi4vY2VsbC9Xcml0ZWFibGVDZWxsXCI7XG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi9jb250ZXh0XCI7XG5pbXBvcnQgeyBGaWx0ZXJUcmVlIH0gZnJvbSBcIi4vRmlsdGVyVHJlZVwiO1xuaW1wb3J0IHsgRGF0YUdyaWQgfSBmcm9tIFwiLi9ncmlkL0RhdGFHcmlkXCI7XG5pbXBvcnQgeyBEYXRhR3JpZERyYWdnYWJsZUhlYWRlckNlbGwgfSBmcm9tIFwiLi9ncmlkL0RhdGFHcmlkRHJhZ2dhYmxlSGVhZGVyQ2VsbFwiO1xuaW1wb3J0IHsgRGF0YUdyaWRIZWFkZXIgfSBmcm9tIFwiLi9ncmlkL0RhdGFHcmlkSGVhZGVyXCI7XG5pbXBvcnQgeyBnZXRJbnB1dCB9IGZyb20gXCIuL2lucHV0L2dldC1pbnB1dFwiO1xuaW1wb3J0IHsgTGluayB9IGZyb20gXCIuL2xpbmsvZ2V0LWxpbmtcIjtcbmltcG9ydCB7IFN0YWdlZFJvd3MgfSBmcm9tIFwiLi9TdGFnZWRSb3dzXCI7XG5pbXBvcnQgeyBTdHVkaW9IZWFkZXIgfSBmcm9tIFwiLi9TdHVkaW9IZWFkZXJcIjtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1vYmplY3QtdHlwZVxuZXhwb3J0IGludGVyZmFjZSBBY3RpdmVUYWJsZVZpZXdQcm9wcyB7fVxuXG5leHBvcnQgZnVuY3Rpb24gQWN0aXZlVGFibGVWaWV3KF9wcm9wczogQWN0aXZlVGFibGVWaWV3UHJvcHMpIHtcbiAgY29uc3QgaXNNdXRhdGluZyA9IEJvb2xlYW4odXNlSXNNdXRhdGluZygpKTtcbiAgY29uc3QgeyBhY3RpdmVUYWJsZSwgb25FcnJvciB9ID0gdXNlU3R1ZGlvKCk7XG4gIGNvbnN0IHsgc29ydGluZ1N0YXRlLCBzZXRTb3J0aW5nU3RhdGUgfSA9IHVzZVNvcnRpbmcoKTtcbiAgY29uc3QgeyBwYWdpbmF0aW9uU3RhdGUsIHNldFBhZ2luYXRpb25TdGF0ZSB9ID0gdXNlUGFnaW5hdGlvbigpO1xuICBjb25zdCBbc3RhZ2VkUm93cywgc2V0U3RhZ2VkUm93c10gPSB1c2VTdGF0ZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdPihbXSk7XG4gIGNvbnN0IHsgYXBwbGllZEZpbHRlciwgc2V0QXBwbGllZEZpbHRlciwgZWRpdGluZ0ZpbHRlciwgc2V0RWRpdGluZ0ZpbHRlciwgdG90YWxFZGl0aW5nRmlsdGVycyB9ID0gdXNlRmlsdGVyaW5nKCk7XG5cbiAgY29uc3QgeyBkYXRhLCBpc0ZldGNoaW5nLCByZWZldGNoIH0gPSB1c2VBY3RpdmVUYWJsZVF1ZXJ5KHtcbiAgICAuLi5wYWdpbmF0aW9uU3RhdGUsXG4gICAgc29ydE9yZGVyOiBzb3J0aW5nU3RhdGUsXG4gICAgZmlsdGVyOiBhcHBsaWVkRmlsdGVyLFxuICB9KTtcbiAgY29uc3QgeyBkZWxldGVTZWxlY3Rpb24sIGlzU2VsZWN0aW5nLCByb3dTZWxlY3Rpb25TdGF0ZSwgc2V0Um93U2VsZWN0aW9uU3RhdGUgfSA9IHVzZVNlbGVjdGlvbihkYXRhKTtcblxuICBjb25zdCByZWFkb25seSA9ICFPYmplY3QudmFsdWVzKGFjdGl2ZVRhYmxlPy5jb2x1bW5zID8/IHt9KS5zb21lKChjb2x1bW4pID0+IGNvbHVtbi5pc0luUHJpbWFyeUtleSk7XG4gIGNvbnN0IGlzSW5zZXJ0aW5nID0gdXNlSXNJbnNlcnRpbmcoKTtcbiAgY29uc3QgaW5zZXJ0ID0gdXNlQWN0aXZlVGFibGVJbnNlcnQoKTtcbiAgY29uc3QgdXBkYXRlID0gdXNlQWN0aXZlVGFibGVVcGRhdGUoKTtcblxuICAvLyByZXNldCBpbnNlcnRSb3dzIHdoZW4gYWN0aXZlVGFibGUgY2hhbmdlc1xuICB1c2VFZmZlY3QoKCkgPT4gc2V0U3RhZ2VkUm93cyhbXSksIFthY3RpdmVUYWJsZV0pO1xuXG4gIGlmICghYWN0aXZlVGFibGUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNhdmVTdGFnZWRSb3dzKCkge1xuICAgIGluc2VydC5tdXRhdGUoc3RhZ2VkUm93cywge1xuICAgICAgb25FcnJvcixcbiAgICAgIG9uU3VjY2VzcygpIHtcbiAgICAgICAgdG9hc3Quc3VjY2VzcyhcIlJvd3MgaW5zZXJ0ZWQgc3VjY2Vzc2Z1bGx5XCIpO1xuICAgICAgICBzZXRTdGFnZWRSb3dzKFtdKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBuZXdTdGFnZWRSb3coKSB7XG4gICAgLy8gVE9ETzogdGhlIG5ldyBvYmplY3Qgc2hvdWxkIGhhdmUgc29tZSB0aGluZ3Mgc2V0IHRvIG51bGwgaWYgdGhleSdyZSBudWxsYWJsZSBvciBoYXZlIGEgZGVmYXVsdCB2YWx1ZT9cbiAgICBzZXRTdGFnZWRSb3dzKChvbGQpID0+IFsuLi5vbGQsIHt9XSk7XG4gIH1cblxuICBmdW5jdGlvbiBkcm9wU3RhZ2VkUm93cygpIHtcbiAgICBzZXRTdGFnZWRSb3dzKFtdKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZUNlbGxJbnB1dFN1Ym1pdCh2YWx1ZTogdW5rbm93biwgY29sdW1uOiBDb2x1bW4sIHJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkIHtcbiAgICB1cGRhdGUubXV0YXRlKHtcbiAgICAgIGRldGFpbHM6IHsgY2hhbmdlczogeyBbY29sdW1uLm5hbWVdOiB2YWx1ZSB9LCByb3csIHRhYmxlOiBhY3RpdmVUYWJsZSEgfSxcbiAgICAgIG9wdGlvbnM6IHt9LFxuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gb25GaWx0ZXJPcGVuQ2hhbmdlKG9wZW46IGJvb2xlYW4pIHtcbiAgICBpZiAob3BlbiA9PT0gdHJ1ZSkge1xuICAgICAgc2V0RWRpdGluZ0ZpbHRlcihhcHBsaWVkRmlsdGVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0QXBwbGllZEZpbHRlcihlZGl0aW5nRmlsdGVyKTtcbiAgICB9XG4gIH1cblxuICAvLyByZWFsIGNvbHVtbiBkZWZpbml0aW9ucyB0aGF0IGNvcnJlc3BvbmQgdG8gZGF0YWJhc2UgY29sdW1uc1xuICBjb25zdCBjb25jcmV0ZUNvbHVtbkRlZnMgPSBPYmplY3QudmFsdWVzKGFjdGl2ZVRhYmxlPy5jb2x1bW5zID8/IHt9KS5tYXAoKGNvbHVtbikgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogY29sdW1uLm5hbWUsXG4gICAgICBhY2Nlc3NvcktleTogY29sdW1uLm5hbWUsXG4gICAgICBtZXRhOiBjb2x1bW4sXG4gICAgICBoZWFkZXIoeyB0YWJsZSwgaGVhZGVyIH0pIHtcbiAgICAgICAgcmV0dXJuIChwcm9wczogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxEYXRhR3JpZERyYWdnYWJsZUhlYWRlckNlbGwgdGFibGU9e3RhYmxlfSBoZWFkZXI9e2hlYWRlcn0gey4uLnByb3BzfT5cbiAgICAgICAgICAgICAgPERhdGFHcmlkSGVhZGVyIGhlYWRlcj17aGVhZGVyfSBjb2x1bW49e2NvbHVtbn0gLz5cbiAgICAgICAgICAgIDwvRGF0YUdyaWREcmFnZ2FibGVIZWFkZXJDZWxsPlxuICAgICAgICAgICk7XG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICAgY2VsbCh7IGNlbGwgfSkge1xuICAgICAgICByZXR1cm4gKHByb3BzOiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj4pID0+IChcbiAgICAgICAgICA8V3JpdGVhYmxlQ2VsbFxuICAgICAgICAgICAgY29udGFpbmVyUHJvcHM9e3Byb3BzfVxuICAgICAgICAgICAgY2VsbENvbXBvbmVudD17Z2V0Q2VsbCh7IGNlbGwsIGNvbHVtbiB9KX1cbiAgICAgICAgICAgIGxpbmtDb21wb25lbnQ9e0xpbmsoeyBjZWxsLCBjb2x1bW4gfSl9XG4gICAgICAgICAgICBpbnB1dENvbXBvbmVudD17Z2V0SW5wdXQoe1xuICAgICAgICAgICAgICBjZWxsLFxuICAgICAgICAgICAgICBjb2x1bW4sXG4gICAgICAgICAgICAgIHJlYWRvbmx5LFxuICAgICAgICAgICAgICBvblN1Ym1pdCh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGVDZWxsSW5wdXRTdWJtaXQodmFsdWUsIGNvbHVtbiwgY2VsbC5yb3cub3JpZ2luYWwpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgfSBzYXRpc2ZpZXMgQ29sdW1uRGVmPFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgfSk7XG5cbiAgLy8gdGhlc2UgYXJlIGNvbHVtbnMgdGhhdCBleGlzdCB2aXJ0dWFsbHkgYW5kIGFyZSBub3QgZGIgY29sdW1uc1xuICBjb25zdCB2aXJ0dWFsQ29sdW1uRGVmcyA9IFtcbiAgICB7XG4gICAgICBpZDogXCJfX3BzX3NlbGVjdFwiLFxuICAgICAgYWNjZXNzb3JLZXk6IFwiX19wc19zZWxlY3RcIixcbiAgICAgIGVuYWJsZVBpbm5pbmc6IHRydWUsXG4gICAgICBlbmFibGVSZXNpemluZzogZmFsc2UsXG4gICAgICBlbmFibGVTb3J0aW5nOiBmYWxzZSxcbiAgICAgIHNpemU6IDM1LFxuICAgICAgbWluU2l6ZTogMzUsXG4gICAgICBoZWFkZXIoeyB0YWJsZSB9KSB7XG4gICAgICAgIHJldHVybiAocHJvcHM6IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPikgPT4ge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8VGFibGVIZWFkIHsuLi5wcm9wc30+XG4gICAgICAgICAgICAgIDxTZWxlY3RIZWFkZXJDZWxsIHRhYmxlPXt0YWJsZX0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPlxuICAgICAgICAgICAgPC9UYWJsZUhlYWQ+XG4gICAgICAgICAgKTtcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgICBjZWxsKHsgcm93IH0pIHtcbiAgICAgICAgcmV0dXJuIChwcm9wczogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxDZWxsIHsuLi5wcm9wc30+XG4gICAgICAgICAgICAgIDxTZWxlY3RSb3dDZWxsIHJvdz17cm93fSByZWFkb25seT17cmVhZG9ubHl9IC8+XG4gICAgICAgICAgICA8L0NlbGw+XG4gICAgICAgICAgKTtcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgfSxcbiAgXSBzYXRpc2ZpZXMgKENvbHVtbkRlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4gJiB7IGRpc2FibGVEcmFnZ2luZz86IGJvb2xlYW4gfSlbXTtcblxuICBjb25zdCBjb2x1bW5EZWZzID0gWy4uLmNvbmNyZXRlQ29sdW1uRGVmcywgLi4udmlydHVhbENvbHVtbkRlZnNdLnNvcnQoZGVmYXVsdENvbHVtblNvcnRpbmcpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxTdHVkaW9IZWFkZXJcbiAgICAgICAgZW5kQ29udGVudD17XG4gICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIHNpemU9XCJpY29uXCIgb25DbGljaz17KCkgPT4gdm9pZCByZWZldGNoKCl9IGRpc2FibGVkPXtpc0ZldGNoaW5nfT5cbiAgICAgICAgICAgIDxSZWZyZXNoQ3cgY2xhc3NOYW1lPXtjbihcInBzLWgtNCBwcy13LTRcIiwgaXNGZXRjaGluZyAmJiBcInBzLWFuaW1hdGUtc3BpblwiKX0gLz5cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgPlxuICAgICAgICA8UG9wb3ZlciBvbk9wZW5DaGFuZ2U9e29uRmlsdGVyT3BlbkNoYW5nZX0+XG4gICAgICAgICAgPFBvcG92ZXJUcmlnZ2VyIGFzQ2hpbGQ+XG4gICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lXCIgc2l6ZT1cInNtXCIgY2xhc3NOYW1lPXtjbih0b3RhbEVkaXRpbmdGaWx0ZXJzID4gMCAmJiBcInBzLWJvcmRlci1wcmltYXJ5XCIpfT5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICA8RmlsdGVySWNvbiAvPlxuICAgICAgICAgICAgICAgIHt0b3RhbEVkaXRpbmdGaWx0ZXJzID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICA8QmFkZ2U+XG4gICAgICAgICAgICAgICAgICAgIDxBbmltYXRlTnVtYmVyIHRyYW5zaXRpb249e3sgbGF5b3V0OiB7IGR1cmF0aW9uOiAwLjEyIH0gfX0+e3RvdGFsRWRpdGluZ0ZpbHRlcnN9PC9BbmltYXRlTnVtYmVyPlxuICAgICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8L1BvcG92ZXJUcmlnZ2VyPlxuICAgICAgICAgIDxQb3BvdmVyQ29udGVudCBhbGlnbj1cInN0YXJ0XCIgc2lkZT1cImJvdHRvbVwiIGNsYXNzTmFtZT1cInBzLXctbWluIHBzLW1heC1oLVs1MjBweF0gcHMtb3ZlcmZsb3cteS1hdXRvXCI+XG4gICAgICAgICAgICA8RmlsdGVyVHJlZVxuICAgICAgICAgICAgICBmaWx0ZXI9e2VkaXRpbmdGaWx0ZXJ9XG4gICAgICAgICAgICAgIHNldEZpbHRlcj17c2V0RWRpdGluZ0ZpbHRlcn1cbiAgICAgICAgICAgICAgc2V0QXBwbGllZEZpbHRlcj17KGZpbHRlcikgPT4ge1xuICAgICAgICAgICAgICAgIHNldEVkaXRpbmdGaWx0ZXIoZmlsdGVyKTsgLy8gVXBkYXRlIHRoZSBlZGl0aW5nIHN0YXRlXG4gICAgICAgICAgICAgICAgc2V0QXBwbGllZEZpbHRlcihmaWx0ZXIpOyAvLyBVcGRhdGUgdGhlIGFwcGxpZWQgc3RhdGVcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgdGFibGU9e2FjdGl2ZVRhYmxlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1BvcG92ZXJDb250ZW50PlxuICAgICAgICA8L1BvcG92ZXI+XG4gICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBzaXplPVwic21cIiBvbkNsaWNrPXtuZXdTdGFnZWRSb3d9IGRpc2FibGVkPXtpc0luc2VydGluZyA+IDB9PlxuICAgICAgICAgIEluc2VydCByb3dcbiAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIHtzdGFnZWRSb3dzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJzZWNvbmRhcnlcIiBzaXplPVwic21cIiBvbkNsaWNrPXtzYXZlU3RhZ2VkUm93c30+XG4gICAgICAgICAgICAgIFNhdmVcbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgey8qIE5lZWRzIHNvbWUgaW1wcm92ZW1lbnQgKi99XG4gICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJnaG9zdFwiIHNpemU9XCJzbVwiIG9uQ2xpY2s9e2Ryb3BTdGFnZWRSb3dzfT5cbiAgICAgICAgICAgICAgQ2FuY2VsXG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgICAge2lzU2VsZWN0aW5nICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwic2Vjb25kYXJ5XCIgc2l6ZT1cInNtXCIgb25DbGljaz17ZGVsZXRlU2VsZWN0aW9ufT5cbiAgICAgICAgICAgICAgRGVsZXRlXG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvU3R1ZGlvSGVhZGVyPlxuICAgICAgPERhdGFHcmlkXG4gICAgICAgIGNvbHVtbkRlZnM9e2NvbHVtbkRlZnN9XG4gICAgICAgIGdldEJlZm9yZVJvd3M9eyh0YWJsZSkgPT4gPFN0YWdlZFJvd3Mgey4uLnsgdGFibGUsIHN0YWdlZFJvd3MsIHNldFN0YWdlZFJvd3MgfX0gLz59XG4gICAgICAgIGlzTG9hZGluZz17aXNGZXRjaGluZ31cbiAgICAgICAgaXNQcm9jZXNzaW5nPXtpc011dGF0aW5nfVxuICAgICAgICBvblBhZ2luYXRpb25DaGFuZ2U9e3NldFBhZ2luYXRpb25TdGF0ZX1cbiAgICAgICAgb25Sb3dTZWxlY3Rpb25DaGFuZ2U9e3NldFJvd1NlbGVjdGlvblN0YXRlfVxuICAgICAgICBvblNvcnRpbmdDaGFuZ2U9e3NldFNvcnRpbmdTdGF0ZX1cbiAgICAgICAgcGFnZUNvdW50PXtnZXRQYWdlQ291bnQoZGF0YT8uZmlsdGVyZWRSb3dDb3VudCA/PyBJbmZpbml0eSwgcGFnaW5hdGlvblN0YXRlLnBhZ2VTaXplKX1cbiAgICAgICAgcGFnaW5hdGlvblN0YXRlPXtwYWdpbmF0aW9uU3RhdGV9XG4gICAgICAgIHJvd3M9e2RhdGE/LnJvd3MgPz8gW119XG4gICAgICAgIHJvd1NlbGVjdGlvblN0YXRlPXtyb3dTZWxlY3Rpb25TdGF0ZX1cbiAgICAgICAgc29ydGluZ1N0YXRlPXtzb3J0aW5nU3RhdGV9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufVxuXG5mdW5jdGlvbiBnZXRQYWdlQ291bnQocm93Q291bnQ6IG51bWJlciB8IGJpZ2ludCB8IE51bWVyaWNTdHJpbmcgfCBCaWdJbnRTdHJpbmcsIHBhZ2VTaXplOiBudW1iZXIpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBpZiAocm93Q291bnQgPT09IEluZmluaXR5KSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcGFnZUNvdW50ID0gTnVtYmVyKChCaWdJbnQocm93Q291bnQpICsgQmlnSW50KHBhZ2VTaXplKSAtIEJpZ0ludCgxKSkgLyBCaWdJbnQocGFnZVNpemUpKTtcblxuICByZXR1cm4gTnVtYmVyLmlzU2FmZUludGVnZXIocGFnZUNvdW50KSA/IHBhZ2VDb3VudCA6IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSO1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0Q29sdW1uU29ydGluZyhhOiBDb2x1bW5EZWY8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+LCBiOiBDb2x1bW5EZWY8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KSB7XG4gIGNvbnN0IGFNZXRhID0gYS5tZXRhIGFzIENvbHVtbiB8IHVuZGVmaW5lZDtcbiAgY29uc3QgYk1ldGEgPSBiLm1ldGEgYXMgQ29sdW1uIHwgdW5kZWZpbmVkO1xuXG4gIGlmIChhLmlkID09PSBcIl9fcHNfc2VsZWN0XCIgfHwgYi5pZCA9PT0gXCJfX3BzX3NlbGVjdFwiKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICBpZiAoYU1ldGEgPT09IHVuZGVmaW5lZCB8fCBiTWV0YSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIDA7IC8vIGNhbid0IGJlIGNvbXBhcmVkLCBzaG91bGRuJ3QgaGFwcGVuXG4gIH1cblxuICBpZiAoYU1ldGEuaXNJblByaW1hcnlLZXkgJiYgIWJNZXRhLmlzSW5QcmltYXJ5S2V5KSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG4gIGlmICghYU1ldGEuaXNJblByaW1hcnlLZXkgJiYgYk1ldGEuaXNJblByaW1hcnlLZXkpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIHJldHVybiBhTWV0YS5uYW1lLmxvY2FsZUNvbXBhcmUoYk1ldGEubmFtZSk7XG59XG4iLCAiaW1wb3J0IHsgQ2FtZWxUb1Bhc2NhbCB9IGZyb20gJy4vdXRpbGl0eS10eXBlcyc7XG5cbi8qKlxuICogQ29udmVydHMgc3RyaW5nIHRvIGtlYmFiIGNhc2VcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIGtlYmFiaXplZCBzdHJpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IHRvS2ViYWJDYXNlID0gKHN0cmluZzogc3RyaW5nKSA9PlxuICBzdHJpbmcucmVwbGFjZSgvKFthLXowLTldKShbQS1aXSkvZywgJyQxLSQyJykudG9Mb3dlckNhc2UoKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBzdHJpbmcgdG8gY2FtZWwgY2FzZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEEgY2FtZWxpemVkIHN0cmluZ1xuICovXG5leHBvcnQgY29uc3QgdG9DYW1lbENhc2UgPSA8VCBleHRlbmRzIHN0cmluZz4oc3RyaW5nOiBUKSA9PlxuICBzdHJpbmcucmVwbGFjZSgvXihbQS1aXSl8W1xccy1fXSsoXFx3KS9nLCAobWF0Y2gsIHAxLCBwMikgPT5cbiAgICBwMiA/IHAyLnRvVXBwZXJDYXNlKCkgOiBwMS50b0xvd2VyQ2FzZSgpLFxuICApO1xuXG4vKipcbiAqIENvbnZlcnRzIHN0cmluZyB0byBwYXNjYWwgY2FzZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEEgcGFzY2FsaXplZCBzdHJpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IHRvUGFzY2FsQ2FzZSA9IDxUIGV4dGVuZHMgc3RyaW5nPihzdHJpbmc6IFQpOiBDYW1lbFRvUGFzY2FsPFQ+ID0+IHtcbiAgY29uc3QgY2FtZWxDYXNlID0gdG9DYW1lbENhc2Uoc3RyaW5nKTtcblxuICByZXR1cm4gKGNhbWVsQ2FzZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGNhbWVsQ2FzZS5zbGljZSgxKSkgYXMgQ2FtZWxUb1Bhc2NhbDxUPjtcbn07XG5cbi8qKlxuICogTWVyZ2VzIGNsYXNzZXMgaW50byBhIHNpbmdsZSBzdHJpbmdcbiAqXG4gKiBAcGFyYW0ge2FycmF5fSBjbGFzc2VzXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIHN0cmluZyBvZiBjbGFzc2VzXG4gKi9cbmV4cG9ydCBjb25zdCBtZXJnZUNsYXNzZXMgPSA8Q2xhc3NUeXBlID0gc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbD4oLi4uY2xhc3NlczogQ2xhc3NUeXBlW10pID0+XG4gIGNsYXNzZXNcbiAgICAuZmlsdGVyKChjbGFzc05hbWUsIGluZGV4LCBhcnJheSkgPT4ge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgQm9vbGVhbihjbGFzc05hbWUpICYmXG4gICAgICAgIChjbGFzc05hbWUgYXMgc3RyaW5nKS50cmltKCkgIT09ICcnICYmXG4gICAgICAgIGFycmF5LmluZGV4T2YoY2xhc3NOYW1lKSA9PT0gaW5kZXhcbiAgICAgICk7XG4gICAgfSlcbiAgICAuam9pbignICcpXG4gICAgLnRyaW0oKTtcbiIsICJleHBvcnQgZGVmYXVsdCB7XG4gIHhtbG5zOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLFxuICB3aWR0aDogMjQsXG4gIGhlaWdodDogMjQsXG4gIHZpZXdCb3g6ICcwIDAgMjQgMjQnLFxuICBmaWxsOiAnbm9uZScsXG4gIHN0cm9rZTogJ2N1cnJlbnRDb2xvcicsXG4gIHN0cm9rZVdpZHRoOiAyLFxuICBzdHJva2VMaW5lY2FwOiAncm91bmQnLFxuICBzdHJva2VMaW5lam9pbjogJ3JvdW5kJyxcbn07XG4iLCAiaW1wb3J0IHsgY3JlYXRlRWxlbWVudCwgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBkZWZhdWx0QXR0cmlidXRlcyBmcm9tICcuL2RlZmF1bHRBdHRyaWJ1dGVzJztcbmltcG9ydCB7IEljb25Ob2RlLCBMdWNpZGVQcm9wcyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgbWVyZ2VDbGFzc2VzIH0gZnJvbSAnQGx1Y2lkZS9zaGFyZWQnO1xuXG5pbnRlcmZhY2UgSWNvbkNvbXBvbmVudFByb3BzIGV4dGVuZHMgTHVjaWRlUHJvcHMge1xuICBpY29uTm9kZTogSWNvbk5vZGU7XG59XG5cbi8qKlxuICogTHVjaWRlIGljb24gY29tcG9uZW50XG4gKlxuICogQGNvbXBvbmVudCBJY29uXG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wcy5jb2xvciAtIFRoZSBjb2xvciBvZiB0aGUgaWNvblxuICogQHBhcmFtIHtudW1iZXJ9IHByb3BzLnNpemUgLSBUaGUgc2l6ZSBvZiB0aGUgaWNvblxuICogQHBhcmFtIHtudW1iZXJ9IHByb3BzLnN0cm9rZVdpZHRoIC0gVGhlIHN0cm9rZSB3aWR0aCBvZiB0aGUgaWNvblxuICogQHBhcmFtIHtib29sZWFufSBwcm9wcy5hYnNvbHV0ZVN0cm9rZVdpZHRoIC0gV2hldGhlciB0byB1c2UgYWJzb2x1dGUgc3Ryb2tlIHdpZHRoXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvcHMuY2xhc3NOYW1lIC0gVGhlIGNsYXNzIG5hbWUgb2YgdGhlIGljb25cbiAqIEBwYXJhbSB7SWNvbk5vZGV9IHByb3BzLmNoaWxkcmVuIC0gVGhlIGNoaWxkcmVuIG9mIHRoZSBpY29uXG4gKiBAcGFyYW0ge0ljb25Ob2RlfSBwcm9wcy5pY29uTm9kZSAtIFRoZSBpY29uIG5vZGUgb2YgdGhlIGljb25cbiAqXG4gKiBAcmV0dXJucyB7Rm9yd2FyZFJlZkV4b3RpY0NvbXBvbmVudH0gTHVjaWRlSWNvblxuICovXG5jb25zdCBJY29uID0gZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uQ29tcG9uZW50UHJvcHM+KFxuICAoXG4gICAge1xuICAgICAgY29sb3IgPSAnY3VycmVudENvbG9yJyxcbiAgICAgIHNpemUgPSAyNCxcbiAgICAgIHN0cm9rZVdpZHRoID0gMixcbiAgICAgIGFic29sdXRlU3Ryb2tlV2lkdGgsXG4gICAgICBjbGFzc05hbWUgPSAnJyxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgaWNvbk5vZGUsXG4gICAgICAuLi5yZXN0XG4gICAgfSxcbiAgICByZWYsXG4gICkgPT4ge1xuICAgIHJldHVybiBjcmVhdGVFbGVtZW50KFxuICAgICAgJ3N2ZycsXG4gICAgICB7XG4gICAgICAgIHJlZixcbiAgICAgICAgLi4uZGVmYXVsdEF0dHJpYnV0ZXMsXG4gICAgICAgIHdpZHRoOiBzaXplLFxuICAgICAgICBoZWlnaHQ6IHNpemUsXG4gICAgICAgIHN0cm9rZTogY29sb3IsXG4gICAgICAgIHN0cm9rZVdpZHRoOiBhYnNvbHV0ZVN0cm9rZVdpZHRoID8gKE51bWJlcihzdHJva2VXaWR0aCkgKiAyNCkgLyBOdW1iZXIoc2l6ZSkgOiBzdHJva2VXaWR0aCxcbiAgICAgICAgY2xhc3NOYW1lOiBtZXJnZUNsYXNzZXMoJ2x1Y2lkZScsIGNsYXNzTmFtZSksXG4gICAgICAgIC4uLnJlc3QsXG4gICAgICB9LFxuICAgICAgW1xuICAgICAgICAuLi5pY29uTm9kZS5tYXAoKFt0YWcsIGF0dHJzXSkgPT4gY3JlYXRlRWxlbWVudCh0YWcsIGF0dHJzKSksXG4gICAgICAgIC4uLihBcnJheS5pc0FycmF5KGNoaWxkcmVuKSA/IGNoaWxkcmVuIDogW2NoaWxkcmVuXSksXG4gICAgICBdLFxuICAgICk7XG4gIH0sXG4pO1xuXG5leHBvcnQgZGVmYXVsdCBJY29uO1xuIiwgImltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIGZvcndhcmRSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBtZXJnZUNsYXNzZXMsIHRvS2ViYWJDYXNlIH0gZnJvbSAnQGx1Y2lkZS9zaGFyZWQnO1xuaW1wb3J0IHsgSWNvbk5vZGUsIEx1Y2lkZVByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgSWNvbiBmcm9tICcuL0ljb24nO1xuXG4vKipcbiAqIENyZWF0ZSBhIEx1Y2lkZSBpY29uIGNvbXBvbmVudFxuICogQHBhcmFtIHtzdHJpbmd9IGljb25OYW1lXG4gKiBAcGFyYW0ge2FycmF5fSBpY29uTm9kZVxuICogQHJldHVybnMge0ZvcndhcmRSZWZFeG90aWNDb21wb25lbnR9IEx1Y2lkZUljb25cbiAqL1xuY29uc3QgY3JlYXRlTHVjaWRlSWNvbiA9IChpY29uTmFtZTogc3RyaW5nLCBpY29uTm9kZTogSWNvbk5vZGUpID0+IHtcbiAgY29uc3QgQ29tcG9uZW50ID0gZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBMdWNpZGVQcm9wcz4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+XG4gICAgY3JlYXRlRWxlbWVudChJY29uLCB7XG4gICAgICByZWYsXG4gICAgICBpY29uTm9kZSxcbiAgICAgIGNsYXNzTmFtZTogbWVyZ2VDbGFzc2VzKGBsdWNpZGUtJHt0b0tlYmFiQ2FzZShpY29uTmFtZSl9YCwgY2xhc3NOYW1lKSxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pLFxuICApO1xuXG4gIENvbXBvbmVudC5kaXNwbGF5TmFtZSA9IGAke2ljb25OYW1lfWA7XG5cbiAgcmV0dXJuIENvbXBvbmVudDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZUx1Y2lkZUljb247XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBBcnJvd0Rvd25XaWRlTmFycm93XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnRNeUF4TmlBMElEUWdOQzAwSWlBdlBnb2dJRHh3WVhSb0lHUTlJazAzSURJd1ZqUWlJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRURXhJRFJvTVRBaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRFeElEaG9OeUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NVEVnTVRKb05DSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9hcnJvdy1kb3duLXdpZGUtbmFycm93XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQXJyb3dEb3duV2lkZU5hcnJvdyA9IGNyZWF0ZUx1Y2lkZUljb24oJ0Fycm93RG93bldpZGVOYXJyb3cnLCBbXG4gIFsncGF0aCcsIHsgZDogJ20zIDE2IDQgNCA0LTQnLCBrZXk6ICcxY282d2onIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNNyAyMFY0Jywga2V5OiAnMXlveGVjJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTExIDRoMTAnLCBrZXk6ICcxdzg3Z2MnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTEgOGg3Jywga2V5OiAnZGp5ZTM0JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTExIDEyaDQnLCBrZXk6ICdxOHRpaDQnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEFycm93RG93bldpZGVOYXJyb3c7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBBcnJvd1JpZ2h0XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5OU0F4TW1neE5DSWdMejRLSUNBOGNHRjBhQ0JrUFNKdE1USWdOU0EzSURjdE55QTNJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9hcnJvdy1yaWdodFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IEFycm93UmlnaHQgPSBjcmVhdGVMdWNpZGVJY29uKCdBcnJvd1JpZ2h0JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNNSAxMmgxNCcsIGtleTogJzFheXMwaCcgfV0sXG4gIFsncGF0aCcsIHsgZDogJ20xMiA1IDcgNy03IDcnLCBrZXk6ICd4cXV6NGMnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEFycm93UmlnaHQ7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBBcnJvd1VwV2lkZU5hcnJvd1xuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TXlBNElEUXROQ0EwSURRaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRjZ05IWXhOaUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NVEVnTVRKb01UQWlJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRURXhJREUyYURjaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRFeElESXdhRFFpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvYXJyb3ctdXAtd2lkZS1uYXJyb3dcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBBcnJvd1VwV2lkZU5hcnJvdyA9IGNyZWF0ZUx1Y2lkZUljb24oJ0Fycm93VXBXaWRlTmFycm93JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtMyA4IDQtNCA0IDQnLCBrZXk6ICcxMXdsN3UnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNNyA0djE2Jywga2V5OiAnMWdsZmN4JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTExIDEyaDEwJywga2V5OiAnMTQzOGppJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTExIDE2aDcnLCBrZXk6ICd1b3Npc3YnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTEgMjBoNCcsIGtleTogJzFrcmMzMicgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQXJyb3dVcFdpZGVOYXJyb3c7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGVja1xuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTWpBZ05pQTVJREUzYkMwMUxUVWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGVja1xuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENoZWNrID0gY3JlYXRlTHVjaWRlSWNvbignQ2hlY2snLCBbWydwYXRoJywgeyBkOiAnTTIwIDYgOSAxN2wtNS01Jywga2V5OiAnMWdtZjJjJyB9XV0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGVjaztcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENoZXZyb25Eb3duXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnROaUE1SURZZ05pQTJMVFlpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2hldnJvbi1kb3duXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hldnJvbkRvd24gPSBjcmVhdGVMdWNpZGVJY29uKCdDaGV2cm9uRG93bicsIFtcbiAgWydwYXRoJywgeyBkOiAnbTYgOSA2IDYgNi02Jywga2V5OiAncXJ1bnNsJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGV2cm9uRG93bjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENoZXZyb25MZWZ0XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnRNVFVnTVRndE5pMDJJRFl0TmlJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZXZyb24tbGVmdFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENoZXZyb25MZWZ0ID0gY3JlYXRlTHVjaWRlSWNvbignQ2hldnJvbkxlZnQnLCBbXG4gIFsncGF0aCcsIHsgZDogJ20xNSAxOC02LTYgNi02Jywga2V5OiAnMXduZmczJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGV2cm9uTGVmdDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENoZXZyb25SaWdodFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0T1NBeE9DQTJMVFl0TmkwMklpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZXZyb24tcmlnaHRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGV2cm9uUmlnaHQgPSBjcmVhdGVMdWNpZGVJY29uKCdDaGV2cm9uUmlnaHQnLCBbXG4gIFsncGF0aCcsIHsgZDogJ205IDE4IDYtNi02LTYnLCBrZXk6ICdtdGhod3EnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENoZXZyb25SaWdodDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENoZXZyb25VcFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TVRnZ01UVXROaTAyTFRZZ05pSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGV2cm9uLXVwXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hldnJvblVwID0gY3JlYXRlTHVjaWRlSWNvbignQ2hldnJvblVwJywgW1sncGF0aCcsIHsgZDogJ20xOCAxNS02LTYtNiA2Jywga2V5OiAnMTUzdWR6JyB9XV0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGV2cm9uVXA7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGV2cm9uc0xlZnRcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE1URWdNVGN0TlMwMUlEVXROU0lnTHo0S0lDQThjR0YwYUNCa1BTSnRNVGdnTVRjdE5TMDFJRFV0TlNJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZXZyb25zLWxlZnRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGV2cm9uc0xlZnQgPSBjcmVhdGVMdWNpZGVJY29uKCdDaGV2cm9uc0xlZnQnLCBbXG4gIFsncGF0aCcsIHsgZDogJ20xMSAxNy01LTUgNS01Jywga2V5OiAnMTN6aGFmJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnbTE4IDE3LTUtNSA1LTUnLCBrZXk6ICdoOGE4ZXQnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENoZXZyb25zTGVmdDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENoZXZyb25zUmlnaHRcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE5pQXhOeUExTFRVdE5TMDFJaUF2UGdvZ0lEeHdZWFJvSUdROUltMHhNeUF4TnlBMUxUVXROUzAxSWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2hldnJvbnMtcmlnaHRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGV2cm9uc1JpZ2h0ID0gY3JlYXRlTHVjaWRlSWNvbignQ2hldnJvbnNSaWdodCcsIFtcbiAgWydwYXRoJywgeyBkOiAnbTYgMTcgNS01LTUtNScsIGtleTogJ3huandxJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnbTEzIDE3IDUtNS01LTUnLCBrZXk6ICcxN3htbWYnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENoZXZyb25zUmlnaHQ7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaXJjbGVBbGVydFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4WTJseVkyeGxJR040UFNJeE1pSWdZM2s5SWpFeUlpQnlQU0l4TUNJZ0x6NEtJQ0E4YkdsdVpTQjRNVDBpTVRJaUlIZ3lQU0l4TWlJZ2VURTlJamdpSUhreVBTSXhNaUlnTHo0S0lDQThiR2x1WlNCNE1UMGlNVElpSUhneVBTSXhNaTR3TVNJZ2VURTlJakUySWlCNU1qMGlNVFlpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2lyY2xlLWFsZXJ0XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2lyY2xlQWxlcnQgPSBjcmVhdGVMdWNpZGVJY29uKCdDaXJjbGVBbGVydCcsIFtcbiAgWydjaXJjbGUnLCB7IGN4OiAnMTInLCBjeTogJzEyJywgcjogJzEwJywga2V5OiAnMW1nbGF5JyB9XSxcbiAgWydsaW5lJywgeyB4MTogJzEyJywgeDI6ICcxMicsIHkxOiAnOCcsIHkyOiAnMTInLCBrZXk6ICcxcGtldWgnIH1dLFxuICBbJ2xpbmUnLCB7IHgxOiAnMTInLCB4MjogJzEyLjAxJywgeTE6ICcxNicsIHkyOiAnMTYnLCBrZXk6ICc0ZGZxOTAnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENpcmNsZUFsZXJ0O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2lyY2xlSGVscFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4WTJseVkyeGxJR040UFNJeE1pSWdZM2s5SWpFeUlpQnlQU0l4TUNJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOT1M0d09TQTVZVE1nTXlBd0lEQWdNU0ExTGpneklERmpNQ0F5TFRNZ015MHpJRE1pSUM4K0NpQWdQSEJoZEdnZ1pEMGlUVEV5SURFM2FDNHdNU0lnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2lyY2xlLWhlbHBcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaXJjbGVIZWxwID0gY3JlYXRlTHVjaWRlSWNvbignQ2lyY2xlSGVscCcsIFtcbiAgWydjaXJjbGUnLCB7IGN4OiAnMTInLCBjeTogJzEyJywgcjogJzEwJywga2V5OiAnMW1nbGF5JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTkuMDkgOWEzIDMgMCAwIDEgNS44MyAxYzAgMi0zIDMtMyAzJywga2V5OiAnMXU3NzNzJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTEyIDE3aC4wMScsIGtleTogJ3AzMnAwNScgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2lyY2xlSGVscDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENpcmNsZVxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4WTJseVkyeGxJR040UFNJeE1pSWdZM2s5SWpFeUlpQnlQU0l4TUNJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NpcmNsZVxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENpcmNsZSA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NpcmNsZScsIFtcbiAgWydjaXJjbGUnLCB7IGN4OiAnMTInLCBjeTogJzEyJywgcjogJzEwJywga2V5OiAnMW1nbGF5JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaXJjbGU7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDb3B5XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjbVZqZENCM2FXUjBhRDBpTVRRaUlHaGxhV2RvZEQwaU1UUWlJSGc5SWpnaUlIazlJamdpSUhKNFBTSXlJaUJ5ZVQwaU1pSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk5DQXhObU10TVM0eElEQXRNaTB1T1MweUxUSldOR013TFRFdU1TNDVMVElnTWkweWFERXdZekV1TVNBd0lESWdMamtnTWlBeUlpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NvcHlcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDb3B5ID0gY3JlYXRlTHVjaWRlSWNvbignQ29weScsIFtcbiAgWydyZWN0JywgeyB3aWR0aDogJzE0JywgaGVpZ2h0OiAnMTQnLCB4OiAnOCcsIHk6ICc4Jywgcng6ICcyJywgcnk6ICcyJywga2V5OiAnMTdqeWVhJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTQgMTZjLTEuMSAwLTItLjktMi0yVjRjMC0xLjEuOS0yIDItMmgxMGMxLjEgMCAyIC45IDIgMicsIGtleTogJ3ppeDl1ZicgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ29weTtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENvcm5lckRvd25MZWZ0XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjRzlzZVd4cGJtVWdjRzlwYm5SelBTSTVJREV3SURRZ01UVWdPU0F5TUNJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTWpBZ05IWTNZVFFnTkNBd0lEQWdNUzAwSURSSU5DSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jb3JuZXItZG93bi1sZWZ0XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ29ybmVyRG93bkxlZnQgPSBjcmVhdGVMdWNpZGVJY29uKCdDb3JuZXJEb3duTGVmdCcsIFtcbiAgWydwb2x5bGluZScsIHsgcG9pbnRzOiAnOSAxMCA0IDE1IDkgMjAnLCBrZXk6ICdyM2pwcnYnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMjAgNHY3YTQgNCAwIDAgMS00IDRINCcsIGtleTogJzZvNWI3bCcgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ29ybmVyRG93bkxlZnQ7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBGaWx0ZXJcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHOXNlV2R2YmlCd2IybHVkSE05SWpJeUlETWdNaUF6SURFd0lERXlMalEySURFd0lERTVJREUwSURJeElERTBJREV5TGpRMklESXlJRE1pSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvZmlsdGVyXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgRmlsdGVyID0gY3JlYXRlTHVjaWRlSWNvbignRmlsdGVyJywgW1xuICBbJ3BvbHlnb24nLCB7IHBvaW50czogJzIyIDMgMiAzIDEwIDEyLjQ2IDEwIDE5IDE0IDIxIDE0IDEyLjQ2IDIyIDMnLCBrZXk6ICcxeWc3N2YnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEZpbHRlcjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIEdyaXBWZXJ0aWNhbFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4WTJseVkyeGxJR040UFNJNUlpQmplVDBpTVRJaUlISTlJakVpSUM4K0NpQWdQR05wY21Oc1pTQmplRDBpT1NJZ1kzazlJalVpSUhJOUlqRWlJQzgrQ2lBZ1BHTnBjbU5zWlNCamVEMGlPU0lnWTNrOUlqRTVJaUJ5UFNJeElpQXZQZ29nSUR4amFYSmpiR1VnWTNnOUlqRTFJaUJqZVQwaU1USWlJSEk5SWpFaUlDOCtDaUFnUEdOcGNtTnNaU0JqZUQwaU1UVWlJR041UFNJMUlpQnlQU0l4SWlBdlBnb2dJRHhqYVhKamJHVWdZM2c5SWpFMUlpQmplVDBpTVRraUlISTlJakVpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvZ3JpcC12ZXJ0aWNhbFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IEdyaXBWZXJ0aWNhbCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0dyaXBWZXJ0aWNhbCcsIFtcbiAgWydjaXJjbGUnLCB7IGN4OiAnOScsIGN5OiAnMTInLCByOiAnMScsIGtleTogJzF2Y3RnZicgfV0sXG4gIFsnY2lyY2xlJywgeyBjeDogJzknLCBjeTogJzUnLCByOiAnMScsIGtleTogJ2hwMHRjZicgfV0sXG4gIFsnY2lyY2xlJywgeyBjeDogJzknLCBjeTogJzE5JywgcjogJzEnLCBrZXk6ICdma2pqZjYnIH1dLFxuICBbJ2NpcmNsZScsIHsgY3g6ICcxNScsIGN5OiAnMTInLCByOiAnMScsIGtleTogJzF0bWFpaicgfV0sXG4gIFsnY2lyY2xlJywgeyBjeDogJzE1JywgY3k6ICc1JywgcjogJzEnLCBrZXk6ICcxOWwyOGUnIH1dLFxuICBbJ2NpcmNsZScsIHsgY3g6ICcxNScsIGN5OiAnMTknLCByOiAnMScsIGtleTogJ2Y0em9qMycgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgR3JpcFZlcnRpY2FsO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgS2V5Um91bmRcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk1pNDFPRFlnTVRjdU5ERTBRVElnTWlBd0lEQWdNQ0F5SURFNExqZ3lPRll5TVdFeElERWdNQ0F3SURBZ01TQXhhRE5oTVNBeElEQWdNQ0F3SURFdE1YWXRNV0V4SURFZ01DQXdJREVnTVMweGFERmhNU0F4SURBZ01DQXdJREV0TVhZdE1XRXhJREVnTUNBd0lERWdNUzB4YUM0eE56SmhNaUF5SURBZ01DQXdJREV1TkRFMExTNDFPRFpzTGpneE5DMHVPREUwWVRZdU5TQTJMalVnTUNBeElEQXROQzAwZWlJZ0x6NEtJQ0E4WTJseVkyeGxJR040UFNJeE5pNDFJaUJqZVQwaU55NDFJaUJ5UFNJdU5TSWdabWxzYkQwaVkzVnljbVZ1ZEVOdmJHOXlJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9rZXktcm91bmRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBLZXlSb3VuZCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0tleVJvdW5kJywgW1xuICBbXG4gICAgJ3BhdGgnLFxuICAgIHtcbiAgICAgIGQ6ICdNMi41ODYgMTcuNDE0QTIgMiAwIDAgMCAyIDE4LjgyOFYyMWExIDEgMCAwIDAgMSAxaDNhMSAxIDAgMCAwIDEtMXYtMWExIDEgMCAwIDEgMS0xaDFhMSAxIDAgMCAwIDEtMXYtMWExIDEgMCAwIDEgMS0xaC4xNzJhMiAyIDAgMCAwIDEuNDE0LS41ODZsLjgxNC0uODE0YTYuNSA2LjUgMCAxIDAtNC00eicsXG4gICAgICBrZXk6ICcxczZ0N3QnLFxuICAgIH0sXG4gIF0sXG4gIFsnY2lyY2xlJywgeyBjeDogJzE2LjUnLCBjeTogJzcuNScsIHI6ICcuNScsIGZpbGw6ICdjdXJyZW50Q29sb3InLCBrZXk6ICd3MGVrcGcnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEtleVJvdW5kO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgS2V5XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnRNVFV1TlNBM0xqVWdNaTR6SURJdU0yRXhJREVnTUNBd0lEQWdNUzQwSURCc01pNHhMVEl1TVdFeElERWdNQ0F3SURBZ01DMHhMalJNTVRrZ05DSWdMejRLSUNBOGNHRjBhQ0JrUFNKdE1qRWdNaTA1TGpZZ09TNDJJaUF2UGdvZ0lEeGphWEpqYkdVZ1kzZzlJamN1TlNJZ1kzazlJakUxTGpVaUlISTlJalV1TlNJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2tleVxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IEtleSA9IGNyZWF0ZUx1Y2lkZUljb24oJ0tleScsIFtcbiAgWydwYXRoJywgeyBkOiAnbTE1LjUgNy41IDIuMyAyLjNhMSAxIDAgMCAwIDEuNCAwbDIuMS0yLjFhMSAxIDAgMCAwIDAtMS40TDE5IDQnLCBrZXk6ICdnMGZsZGsnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdtMjEgMi05LjYgOS42Jywga2V5OiAnMWowaG84JyB9XSxcbiAgWydjaXJjbGUnLCB7IGN4OiAnNy41JywgY3k6ICcxNS41JywgcjogJzUuNScsIGtleTogJ3lxYjNocicgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgS2V5O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgTWF4aW1pemVcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk9DQXpTRFZoTWlBeUlEQWdNQ0F3TFRJZ01uWXpJaUF2UGdvZ0lEeHdZWFJvSUdROUlrMHlNU0E0VmpWaE1pQXlJREFnTUNBd0xUSXRNbWd0TXlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTXlBeE5uWXpZVElnTWlBd0lEQWdNQ0F5SURKb015SWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1UWWdNakZvTTJFeUlESWdNQ0F3SURBZ01pMHlkaTB6SWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvbWF4aW1pemVcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBNYXhpbWl6ZSA9IGNyZWF0ZUx1Y2lkZUljb24oJ01heGltaXplJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNOCAzSDVhMiAyIDAgMCAwLTIgMnYzJywga2V5OiAnMWRjbWl0JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTIxIDhWNWEyIDIgMCAwIDAtMi0yaC0zJywga2V5OiAnMWU0Z3QzJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTMgMTZ2M2EyIDIgMCAwIDAgMiAyaDMnLCBrZXk6ICd3c2w1c2MnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTYgMjFoM2EyIDIgMCAwIDAgMi0ydi0zJywga2V5OiAnMTh0cmVrJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBNYXhpbWl6ZTtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIE1pbmltaXplXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5PQ0F6ZGpOaE1pQXlJREFnTUNBeExUSWdNa2d6SWlBdlBnb2dJRHh3WVhSb0lHUTlJazB5TVNBNGFDMHpZVElnTWlBd0lEQWdNUzB5TFRKV015SWdMejRLSUNBOGNHRjBhQ0JrUFNKTk15QXhObWd6WVRJZ01pQXdJREFnTVNBeUlESjJNeUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NVFlnTWpGMkxUTmhNaUF5SURBZ01DQXhJREl0TW1neklpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL21pbmltaXplXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgTWluaW1pemUgPSBjcmVhdGVMdWNpZGVJY29uKCdNaW5pbWl6ZScsIFtcbiAgWydwYXRoJywgeyBkOiAnTTggM3YzYTIgMiAwIDAgMS0yIDJIMycsIGtleTogJ2hvaGJ0cicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00yMSA4aC0zYTIgMiAwIDAgMS0yLTJWMycsIGtleTogJzVqdzFmMycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00zIDE2aDNhMiAyIDAgMCAxIDIgMnYzJywga2V5OiAnMTk4dHZyJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTE2IDIxdi0zYTIgMiAwIDAgMSAyLTJoMycsIGtleTogJ3BoOG14cCcgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgTWluaW1pemU7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBNb3ZlRG93blxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOT0NBeE9Fd3hNaUF5TWt3eE5pQXhPQ0lnTHo0S0lDQThjR0YwYUNCa1BTSk5NVElnTWxZeU1pSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9tb3ZlLWRvd25cbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBNb3ZlRG93biA9IGNyZWF0ZUx1Y2lkZUljb24oJ01vdmVEb3duJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNOCAxOEwxMiAyMkwxNiAxOCcsIGtleTogJ2Nza3ZmdicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMiAyVjIyJywga2V5OiAncjg5cnprJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBNb3ZlRG93bjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIE1vdmVVcFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOT0NBMlRERXlJREpNTVRZZ05pSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1USWdNbFl5TWlJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL21vdmUtdXBcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBNb3ZlVXAgPSBjcmVhdGVMdWNpZGVJY29uKCdNb3ZlVXAnLCBbXG4gIFsncGF0aCcsIHsgZDogJ004IDZMMTIgMkwxNiA2Jywga2V5OiAnMXl2a3l4JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTEyIDJWMjInLCBrZXk6ICdyODlyemsnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IE1vdmVVcDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFBhbmVsTGVmdENsb3NlXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjbVZqZENCM2FXUjBhRDBpTVRnaUlHaGxhV2RvZEQwaU1UZ2lJSGc5SWpNaUlIazlJak1pSUhKNFBTSXlJaUF2UGdvZ0lEeHdZWFJvSUdROUlrMDVJRE4yTVRnaUlDOCtDaUFnUEhCaGRHZ2daRDBpYlRFMklERTFMVE10TXlBekxUTWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9wYW5lbC1sZWZ0LWNsb3NlXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgUGFuZWxMZWZ0Q2xvc2UgPSBjcmVhdGVMdWNpZGVJY29uKCdQYW5lbExlZnRDbG9zZScsIFtcbiAgWydyZWN0JywgeyB3aWR0aDogJzE4JywgaGVpZ2h0OiAnMTgnLCB4OiAnMycsIHk6ICczJywgcng6ICcyJywga2V5OiAnYWZpdHY3JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTkgM3YxOCcsIGtleTogJ2ZoM2hxYScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ20xNiAxNS0zLTMgMy0zJywga2V5OiAnMTR5OTl6JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBQYW5lbExlZnRDbG9zZTtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFBhbmVsTGVmdE9wZW5cbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNtVmpkQ0IzYVdSMGFEMGlNVGdpSUdobGFXZG9kRDBpTVRnaUlIZzlJak1pSUhrOUlqTWlJSEo0UFNJeUlpQXZQZ29nSUR4d1lYUm9JR1E5SWswNUlETjJNVGdpSUM4K0NpQWdQSEJoZEdnZ1pEMGliVEUwSURrZ015QXpMVE1nTXlJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3BhbmVsLWxlZnQtb3BlblxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFBhbmVsTGVmdE9wZW4gPSBjcmVhdGVMdWNpZGVJY29uKCdQYW5lbExlZnRPcGVuJywgW1xuICBbJ3JlY3QnLCB7IHdpZHRoOiAnMTgnLCBoZWlnaHQ6ICcxOCcsIHg6ICczJywgeTogJzMnLCByeDogJzInLCBrZXk6ICdhZml0djcnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNOSAzdjE4Jywga2V5OiAnZmgzaHFhJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnbTE0IDkgMyAzLTMgMycsIGtleTogJzgwMTBlZScgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgUGFuZWxMZWZ0T3BlbjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFBpbk9mZlxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTVRJZ01UZDJOU0lnTHo0S0lDQThjR0YwYUNCa1BTSk5NVFVnT1M0ek5GWTNZVEVnTVNBd0lEQWdNU0F4TFRFZ01pQXlJREFnTUNBd0lEQXRORWczTGpnNUlpQXZQZ29nSUR4d1lYUm9JR1E5SW0weUlESWdNakFnTWpBaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRrZ09YWXhMamMyWVRJZ01pQXdJREFnTVMweExqRXhJREV1Tnpsc0xURXVOemd1T1VFeUlESWdNQ0F3SURBZ05TQXhOUzR5TkZZeE5tRXhJREVnTUNBd0lEQWdNU0F4YURFeElpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3Bpbi1vZmZcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBQaW5PZmYgPSBjcmVhdGVMdWNpZGVJY29uKCdQaW5PZmYnLCBbXG4gIFsncGF0aCcsIHsgZDogJ00xMiAxN3Y1Jywga2V5OiAnYmIxZHU5JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTE1IDkuMzRWN2ExIDEgMCAwIDEgMS0xIDIgMiAwIDAgMCAwLTRINy44OScsIGtleTogJ3pud256cScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ20yIDIgMjAgMjAnLCBrZXk6ICcxb29ld3knIH1dLFxuICBbXG4gICAgJ3BhdGgnLFxuICAgIHtcbiAgICAgIGQ6ICdNOSA5djEuNzZhMiAyIDAgMCAxLTEuMTEgMS43OWwtMS43OC45QTIgMiAwIDAgMCA1IDE1LjI0VjE2YTEgMSAwIDAgMCAxIDFoMTEnLFxuICAgICAga2V5OiAnYzlxaG0yJyxcbiAgICB9LFxuICBdLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFBpbk9mZjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFBpblxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTVRJZ01UZDJOU0lnTHo0S0lDQThjR0YwYUNCa1BTSk5PU0F4TUM0M05tRXlJRElnTUNBd0lERXRNUzR4TVNBeExqYzViQzB4TGpjNExqbEJNaUF5SURBZ01DQXdJRFVnTVRVdU1qUldNVFpoTVNBeElEQWdNQ0F3SURFZ01XZ3hNbUV4SURFZ01DQXdJREFnTVMweGRpMHVOelpoTWlBeUlEQWdNQ0F3TFRFdU1URXRNUzQzT1d3dE1TNDNPQzB1T1VFeUlESWdNQ0F3SURFZ01UVWdNVEF1TnpaV04yRXhJREVnTUNBd0lERWdNUzB4SURJZ01pQXdJREFnTUNBd0xUUklPR0V5SURJZ01DQXdJREFnTUNBMElERWdNU0F3SURBZ01TQXhJREY2SWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvcGluXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgUGluID0gY3JlYXRlTHVjaWRlSWNvbignUGluJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNMTIgMTd2NScsIGtleTogJ2JiMWR1OScgfV0sXG4gIFtcbiAgICAncGF0aCcsXG4gICAge1xuICAgICAgZDogJ005IDEwLjc2YTIgMiAwIDAgMS0xLjExIDEuNzlsLTEuNzguOUEyIDIgMCAwIDAgNSAxNS4yNFYxNmExIDEgMCAwIDAgMSAxaDEyYTEgMSAwIDAgMCAxLTF2LS43NmEyIDIgMCAwIDAtMS4xMS0xLjc5bC0xLjc4LS45QTIgMiAwIDAgMSAxNSAxMC43NlY3YTEgMSAwIDAgMSAxLTEgMiAyIDAgMCAwIDAtNEg4YTIgMiAwIDAgMCAwIDQgMSAxIDAgMCAxIDEgMXonLFxuICAgICAga2V5OiAnMW5rejhiJyxcbiAgICB9LFxuICBdLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFBpbjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFJlZnJlc2hDd1xuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTXlBeE1tRTVJRGtnTUNBd0lERWdPUzA1SURrdU56VWdPUzQzTlNBd0lEQWdNU0EyTGpjMElESXVOelJNTWpFZ09DSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1qRWdNM1kxYUMwMUlpQXZQZ29nSUR4d1lYUm9JR1E5SWsweU1TQXhNbUU1SURrZ01DQXdJREV0T1NBNUlEa3VOelVnT1M0M05TQXdJREFnTVMwMkxqYzBMVEl1TnpSTU15QXhOaUlnTHo0S0lDQThjR0YwYUNCa1BTSk5PQ0F4TmtnemRqVWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9yZWZyZXNoLWN3XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgUmVmcmVzaEN3ID0gY3JlYXRlTHVjaWRlSWNvbignUmVmcmVzaEN3JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNMyAxMmE5IDkgMCAwIDEgOS05IDkuNzUgOS43NSAwIDAgMSA2Ljc0IDIuNzRMMjEgOCcsIGtleTogJ3Y5aDV2YycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00yMSAzdjVoLTUnLCBrZXk6ICcxcTd0bzAnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMjEgMTJhOSA5IDAgMCAxLTkgOSA5Ljc1IDkuNzUgMCAwIDEtNi43NC0yLjc0TDMgMTYnLCBrZXk6ICczdWlmbDMnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNOCAxNkgzdjUnLCBrZXk6ICcxY3Y2NzgnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnJlc2hDdztcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFNxdWFyZUFycm93UmlnaHRcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNtVmpkQ0IzYVdSMGFEMGlNVGdpSUdobGFXZG9kRDBpTVRnaUlIZzlJak1pSUhrOUlqTWlJSEo0UFNJeUlpQXZQZ29nSUR4d1lYUm9JR1E5SWswNElERXlhRGdpSUM4K0NpQWdQSEJoZEdnZ1pEMGliVEV5SURFMklEUXROQzAwTFRRaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3NxdWFyZS1hcnJvdy1yaWdodFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFNxdWFyZUFycm93UmlnaHQgPSBjcmVhdGVMdWNpZGVJY29uKCdTcXVhcmVBcnJvd1JpZ2h0JywgW1xuICBbJ3JlY3QnLCB7IHdpZHRoOiAnMTgnLCBoZWlnaHQ6ICcxOCcsIHg6ICczJywgeTogJzMnLCByeDogJzInLCBrZXk6ICdhZml0djcnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNOCAxMmg4Jywga2V5OiAnMXdjeWV2JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnbTEyIDE2IDQtNC00LTQnLCBrZXk6ICcxaTl6Y3YnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFNxdWFyZUFycm93UmlnaHQ7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBUYWJsZTJcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk9TQXpTRFZoTWlBeUlEQWdNQ0F3TFRJZ01uWTBiVFl0Tm1neE1HRXlJRElnTUNBd0lERWdNaUF5ZGpSTk9TQXpkakU0YlRBZ01HZ3hNR0V5SURJZ01DQXdJREFnTWkweVZqbE5PU0F5TVVnMVlUSWdNaUF3SURBZ01TMHlMVEpXT1cwd0lEQm9NVGdpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvdGFibGUtMlxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFRhYmxlMiA9IGNyZWF0ZUx1Y2lkZUljb24oJ1RhYmxlMicsIFtcbiAgW1xuICAgICdwYXRoJyxcbiAgICB7XG4gICAgICBkOiAnTTkgM0g1YTIgMiAwIDAgMC0yIDJ2NG02LTZoMTBhMiAyIDAgMCAxIDIgMnY0TTkgM3YxOG0wIDBoMTBhMiAyIDAgMCAwIDItMlY5TTkgMjFINWEyIDIgMCAwIDEtMi0yVjltMCAwaDE4JyxcbiAgICAgIGtleTogJ2d1Z2o4MycsXG4gICAgfSxcbiAgXSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBUYWJsZTI7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBYXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5NVGdnTmlBMklERTRJaUF2UGdvZ0lEeHdZWFJvSUdROUltMDJJRFlnTVRJZ01USWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy94XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgWCA9IGNyZWF0ZUx1Y2lkZUljb24oJ1gnLCBbXG4gIFsncGF0aCcsIHsgZDogJ00xOCA2IDYgMTgnLCBrZXk6ICcxYmw1ZjgnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdtNiA2IDEyIDEyJywga2V5OiAnZDhiazZ2JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBYO1xuIiwgImltcG9ydCB7IGN2YSwgdHlwZSBWYXJpYW50UHJvcHMgfSBmcm9tIFwiY2xhc3MtdmFyaWFuY2UtYXV0aG9yaXR5XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgYmFkZ2VWYXJpYW50cyA9IGN2YShcbiAgXCJwcy1pbmxpbmUtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtcHgtMi41IHBzLXB5LTAuNSBwcy10ZXh0LXhzIHBzLWZvbnQtc2VtaWJvbGQgcHMtdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXM6cHMtb3V0bGluZS1ub25lIGZvY3VzOnBzLXJpbmctMiBmb2N1czpwcy1yaW5nLXJpbmcgZm9jdXM6cHMtcmluZy1vZmZzZXQtMlwiLFxuICB7XG4gICAgdmFyaWFudHM6IHtcbiAgICAgIHZhcmlhbnQ6IHtcbiAgICAgICAgZGVmYXVsdDogXCJwcy1ib3JkZXItdHJhbnNwYXJlbnQgcHMtYmctcHJpbWFyeSBwcy10ZXh0LXByaW1hcnktZm9yZWdyb3VuZCBwcy1zaGFkb3cgaG92ZXI6cHMtYmctcHJpbWFyeS84MFwiLFxuICAgICAgICBzZWNvbmRhcnk6IFwicHMtYm9yZGVyLXRyYW5zcGFyZW50IHBzLWJnLXNlY29uZGFyeSBwcy10ZXh0LXNlY29uZGFyeS1mb3JlZ3JvdW5kIGhvdmVyOnBzLWJnLXNlY29uZGFyeS84MFwiLFxuICAgICAgICBkZXN0cnVjdGl2ZTpcbiAgICAgICAgICBcInBzLWJvcmRlci10cmFuc3BhcmVudCBwcy1iZy1kZXN0cnVjdGl2ZSBwcy10ZXh0LWRlc3RydWN0aXZlLWZvcmVncm91bmQgcHMtc2hhZG93IGhvdmVyOnBzLWJnLWRlc3RydWN0aXZlLzgwXCIsXG4gICAgICAgIG91dGxpbmU6IFwicHMtdGV4dC1mb3JlZ3JvdW5kXCIsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVmYXVsdFZhcmlhbnRzOiB7XG4gICAgICB2YXJpYW50OiBcImRlZmF1bHRcIixcbiAgICB9LFxuICB9LFxuKTtcblxuZXhwb3J0IGludGVyZmFjZSBCYWRnZVByb3BzIGV4dGVuZHMgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+LCBWYXJpYW50UHJvcHM8dHlwZW9mIGJhZGdlVmFyaWFudHM+IHt9XG5cbmZ1bmN0aW9uIEJhZGdlKHsgY2xhc3NOYW1lLCB2YXJpYW50LCAuLi5wcm9wcyB9OiBCYWRnZVByb3BzKSB7XG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17Y24oYmFkZ2VWYXJpYW50cyh7IHZhcmlhbnQgfSksIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz47XG59XG5cbmV4cG9ydCB7IEJhZGdlLCBiYWRnZVZhcmlhbnRzIH07XG4iLCAiaW1wb3J0IHsgU2xvdCB9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc2xvdFwiO1xuaW1wb3J0IHsgY3ZhLCB0eXBlIFZhcmlhbnRQcm9wcyB9IGZyb20gXCJjbGFzcy12YXJpYW5jZS1hdXRob3JpdHlcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBidXR0b25WYXJpYW50cyA9IGN2YShcbiAgXCJwcy1pbmxpbmUtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXIgcHMtZ2FwLTIgcHMtd2hpdGVzcGFjZS1ub3dyYXAgcHMtcm91bmRlZC1tZCBwcy10ZXh0LXNtIHBzLWZvbnQtbWVkaXVtIHBzLXRyYW5zaXRpb24tY29sb3JzIGZvY3VzLXZpc2libGU6cHMtb3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0xIGZvY3VzLXZpc2libGU6cHMtcmluZy1yaW5nIGRpc2FibGVkOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGlzYWJsZWQ6cHMtb3BhY2l0eS01MCBbJl9zdmddOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgWyZfc3ZnXTpwcy1zaXplLTQgWyZfc3ZnXTpwcy1zaHJpbmstMFwiLFxuICB7XG4gICAgdmFyaWFudHM6IHtcbiAgICAgIHZhcmlhbnQ6IHtcbiAgICAgICAgZGVmYXVsdDogXCJwcy1iZy1wcmltYXJ5IHBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIHBzLXNoYWRvdyBob3Zlcjpwcy1iZy1wcmltYXJ5LzkwXCIsXG4gICAgICAgIGRlc3RydWN0aXZlOiBcInBzLWJnLWRlc3RydWN0aXZlIHBzLXRleHQtZGVzdHJ1Y3RpdmUtZm9yZWdyb3VuZCBwcy1zaGFkb3ctc20gaG92ZXI6cHMtYmctZGVzdHJ1Y3RpdmUvOTBcIixcbiAgICAgICAgb3V0bGluZTpcbiAgICAgICAgICBcInBzLWJvcmRlciBwcy1ib3JkZXItaW5wdXQgcHMtYmctYmFja2dyb3VuZCBwcy1zaGFkb3ctc20gaG92ZXI6cHMtYmctYWNjZW50IGhvdmVyOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmRcIixcbiAgICAgICAgc2Vjb25kYXJ5OiBcInBzLWJnLXNlY29uZGFyeSBwcy10ZXh0LXNlY29uZGFyeS1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1zbSBob3Zlcjpwcy1iZy1zZWNvbmRhcnkvODBcIixcbiAgICAgICAgZ2hvc3Q6IFwiaG92ZXI6cHMtYmctYWNjZW50IGhvdmVyOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmRcIixcbiAgICAgICAgbGluazogXCJwcy10ZXh0LXByaW1hcnkgcHMtdW5kZXJsaW5lLW9mZnNldC00IGhvdmVyOnBzLXVuZGVybGluZVwiLFxuICAgICAgfSxcbiAgICAgIHNpemU6IHtcbiAgICAgICAgZGVmYXVsdDogXCJwcy1oLTkgcHMtcHgtNCBwcy1weS0yXCIsXG4gICAgICAgIHhzOiBcInBzLWgtNiBwcy1yb3VuZGVkLW1kIHBzLXB4LTIgcHMtdGV4dC14c1wiLFxuICAgICAgICBzbTogXCJwcy1oLTggcHMtcm91bmRlZC1tZCBwcy1weC0zIHBzLXRleHQteHNcIixcbiAgICAgICAgbGc6IFwicHMtaC0xMCBwcy1yb3VuZGVkLW1kIHBzLXB4LThcIixcbiAgICAgICAgaWNvbjogXCJwcy1oLTkgcHMtdy05XCIsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVmYXVsdFZhcmlhbnRzOiB7XG4gICAgICB2YXJpYW50OiBcImRlZmF1bHRcIixcbiAgICAgIHNpemU6IFwiZGVmYXVsdFwiLFxuICAgIH0sXG4gIH0sXG4pO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1dHRvblByb3BzXG4gIGV4dGVuZHMgUmVhY3QuQnV0dG9uSFRNTEF0dHJpYnV0ZXM8SFRNTEJ1dHRvbkVsZW1lbnQ+LFxuICAgIFZhcmlhbnRQcm9wczx0eXBlb2YgYnV0dG9uVmFyaWFudHM+IHtcbiAgYXNDaGlsZD86IGJvb2xlYW47XG59XG5cbmNvbnN0IEJ1dHRvbiA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQsIEJ1dHRvblByb3BzPihcbiAgKHsgY2xhc3NOYW1lLCB2YXJpYW50LCBzaXplLCBhc0NoaWxkID0gZmFsc2UsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IENvbXAgPSBhc0NoaWxkID8gU2xvdCA6IFwiYnV0dG9uXCI7XG4gICAgcmV0dXJuIDxDb21wIGNsYXNzTmFtZT17Y24oYnV0dG9uVmFyaWFudHMoeyB2YXJpYW50LCBzaXplLCBjbGFzc05hbWUgfSkpfSByZWY9e3JlZn0gey4uLnByb3BzfSAvPjtcbiAgfSxcbik7XG5CdXR0b24uZGlzcGxheU5hbWUgPSBcIkJ1dHRvblwiO1xuXG5leHBvcnQgeyBCdXR0b24sIGJ1dHRvblZhcmlhbnRzIH07XG4iLCAiaW1wb3J0ICogYXMgUG9wb3ZlclByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXBvcG92ZXJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBQb3BvdmVyID0gUG9wb3ZlclByaW1pdGl2ZS5Sb290O1xuXG5jb25zdCBQb3BvdmVyVHJpZ2dlciA9IFBvcG92ZXJQcmltaXRpdmUuVHJpZ2dlcjtcblxuY29uc3QgUG9wb3ZlckFuY2hvciA9IFBvcG92ZXJQcmltaXRpdmUuQW5jaG9yO1xuXG5jb25zdCBQb3BvdmVyQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFBvcG92ZXJQcmltaXRpdmUuQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgUG9wb3ZlclByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIGFsaWduID0gXCJjZW50ZXJcIiwgc2lkZU9mZnNldCA9IDQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8UG9wb3ZlclByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPFBvcG92ZXJQcmltaXRpdmUuQ29udGVudFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBhbGlnbj17YWxpZ259XG4gICAgICBzaWRlT2Zmc2V0PXtzaWRlT2Zmc2V0fVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy16LTUwIHBzLXctNzIgcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYmctcG9wb3ZlciBwcy1wLTQgcHMtdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgcHMtc2hhZG93LW1kIHBzLW91dGxpbmUtbm9uZSBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1hbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtYW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1mYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLXpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnBzLXpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnBzLXNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpwcy1zbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06cHMtc2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnBzLXNsaWRlLWluLWZyb20tYm90dG9tLTIgcHMtb3JpZ2luLVstLXJhZGl4LXBvcG92ZXItY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXVwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIDwvUG9wb3ZlclByaW1pdGl2ZS5Qb3J0YWw+XG4pKTtcblBvcG92ZXJDb250ZW50LmRpc3BsYXlOYW1lID0gUG9wb3ZlclByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgeyBQb3BvdmVyLCBQb3BvdmVyVHJpZ2dlciwgUG9wb3ZlckNvbnRlbnQsIFBvcG92ZXJBbmNob3IgfTtcbiIsICJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgVGFibGUgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZUVsZW1lbnQsIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZUVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXJlbGF0aXZlIHBzLXctZnVsbCBwcy1vdmVyZmxvdy1hdXRvIHBzLWZsZXggcHMtaXRlbXMtc3RhcnQgcHMtaC1mdWxsXCI+XG4gICAgICA8dGFibGUgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oXCJwcy13LWZ1bGwgcHMtY2FwdGlvbi1ib3R0b20gcHMtdGV4dC1zbVwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4gICAgPC9kaXY+XG4gICksXG4pO1xuVGFibGUuZGlzcGxheU5hbWUgPSBcIlRhYmxlXCI7XG5cbmNvbnN0IFRhYmxlSGVhZGVyID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVTZWN0aW9uRWxlbWVudCwgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IDx0aGVhZCByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+LFxuKTtcblRhYmxlSGVhZGVyLmRpc3BsYXlOYW1lID0gXCJUYWJsZUhlYWRlclwiO1xuXG5jb25zdCBUYWJsZUJvZHkgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LCBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVTZWN0aW9uRWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDx0Ym9keSByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihcIlsmX3RyOmxhc3QtY2hpbGRdOnBzLWJvcmRlci0wXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbiAgKSxcbik7XG5UYWJsZUJvZHkuZGlzcGxheU5hbWUgPSBcIlRhYmxlQm9keVwiO1xuXG5jb25zdCBUYWJsZUZvb3RlciA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQsIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPHRmb290XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXCJwcy1ib3JkZXItdCBwcy1iZy1tdXRlZC81MCBwcy1mb250LW1lZGl1bSBbJj50cl06bGFzdDpwcy1ib3JkZXItYi0wXCIsIGNsYXNzTmFtZSl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKSxcbik7XG5UYWJsZUZvb3Rlci5kaXNwbGF5TmFtZSA9IFwiVGFibGVGb290ZXJcIjtcblxuY29uc3QgVGFibGVSb3cgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZVJvd0VsZW1lbnQsIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZVJvd0VsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8dHJcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy1ib3JkZXItYiBwcy10cmFuc2l0aW9uLWNvbG9ycyBob3Zlcjpwcy1iZy1tdXRlZC81MCBkYXRhLVtzdGF0ZT1zZWxlY3RlZF06cHMtYmctbXV0ZWRcIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApLFxuKTtcblRhYmxlUm93LmRpc3BsYXlOYW1lID0gXCJUYWJsZVJvd1wiO1xuXG5jb25zdCBUYWJsZUhlYWQgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZUNlbGxFbGVtZW50LCBSZWFjdC5UaEhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZUNlbGxFbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPHRoXG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXCJwcy1oLTEwIHBzLXB4LTIgcHMtdGV4dC1sZWZ0IHBzLWFsaWduLW1pZGRsZSBwcy1mb250LW1lZGl1bSBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIiwgY2xhc3NOYW1lKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApLFxuKTtcblRhYmxlSGVhZC5kaXNwbGF5TmFtZSA9IFwiVGFibGVIZWFkXCI7XG5cbmNvbnN0IFRhYmxlQ2VsbCA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlQ2VsbEVsZW1lbnQsIFJlYWN0LlRkSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlQ2VsbEVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IDx0ZCByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihcInBzLWFsaWduLW1pZGRsZVwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+LFxuKTtcblRhYmxlQ2VsbC5kaXNwbGF5TmFtZSA9IFwiVGFibGVDZWxsXCI7XG5cbmNvbnN0IFRhYmxlQ2FwdGlvbiA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQsIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZUNhcHRpb25FbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPGNhcHRpb24gcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oXCJwcy1tdC00IHBzLXRleHQtc20gcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbiAgKSxcbik7XG5UYWJsZUNhcHRpb24uZGlzcGxheU5hbWUgPSBcIlRhYmxlQ2FwdGlvblwiO1xuXG5leHBvcnQgeyBUYWJsZSwgVGFibGVIZWFkZXIsIFRhYmxlQm9keSwgVGFibGVGb290ZXIsIFRhYmxlSGVhZCwgVGFibGVSb3csIFRhYmxlQ2VsbCwgVGFibGVDYXB0aW9uIH07XG4iLCAiaW1wb3J0IHsgUXVlcnlLZXksIHVzZU11dGF0aW9uLCB1c2VRdWVyeUNsaWVudCB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcblxuaW1wb3J0IHsgQWRhcHRlclF1ZXJ5UmVzdWx0IH0gZnJvbSBcIi4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4uL3N0dWRpby9jb250ZXh0XCI7XG5pbXBvcnQgeyBhZGRSb3dJZFRvUmVzdWx0IH0gZnJvbSBcIi4vdXRpbHMvYWRkLXJvdy1pZC10by1yZXN1bHRcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUFjdGl2ZVRhYmxlSW5zZXJ0KCkge1xuICBjb25zdCB7IGFjdGl2ZVRhYmxlLCBhZGFwdGVyIH0gPSB1c2VTdHVkaW8oKTtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuICBjb25zdCB7IHNjaGVtYSA9IG51bGwsIG5hbWU6IHRhYmxlID0gbnVsbCB9ID0gYWN0aXZlVGFibGUgPz8ge307XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbktleTogW1wic2NoZW1hXCIsIHNjaGVtYSwgXCJ0YWJsZVwiLCB0YWJsZSwgXCJpbnNlcnRcIl0sXG4gICAgYXN5bmMgbXV0YXRpb25Gbihyb3dzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdKSB7XG4gICAgICBjb25zdCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCBhZGFwdGVyLmluc2VydCh7IHJvd3MsIHRhYmxlOiBhY3RpdmVUYWJsZSEgfSwge30pO1xuXG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhZGRSb3dJZFRvUmVzdWx0KHJlc3VsdCwgYWN0aXZlVGFibGUhKTtcbiAgICB9LFxuICAgIG9uU3VjY2VzcyhuZXdEYXRhKSB7XG4gICAgICBxdWVyeUNsaWVudC5zZXRRdWVyaWVzRGF0YTxBZGFwdGVyUXVlcnlSZXN1bHQ+KFxuICAgICAgICB7XG4gICAgICAgICAgZXhhY3Q6IGZhbHNlLFxuICAgICAgICAgIC8vIGhlcmUgd2UgcGFydGlhbGx5IG1hdGNoIHRoZSBxdWVyeSBrZXkgdG8gZ2V0IHRoZSBjdXJyZW50IHBhZ2VcbiAgICAgICAgICBxdWVyeUtleTogW1wic2NoZW1hXCIsIHNjaGVtYSwgXCJ0YWJsZVwiLCB0YWJsZSwgXCJxdWVyeVwiXSBhcyBuZXZlciBhcyBRdWVyeUtleSxcbiAgICAgICAgfSxcbiAgICAgICAgKG9sZERhdGEpID0+IHtcbiAgICAgICAgICBpZiAob2xkRGF0YSA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gb2xkRGF0YTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ub2xkRGF0YSxcbiAgICAgICAgICAgIHJvd3M6IFsuLi5uZXdEYXRhLnJvd3MsIC4uLm9sZERhdGEucm93c10sXG4gICAgICAgICAgfSBzYXRpc2ZpZXMgQWRhcHRlclF1ZXJ5UmVzdWx0O1xuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9LFxuICAgIHJldHJ5OiBmYWxzZSxcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHsgUXVlcnlDbGllbnQsIFF1ZXJ5Q2xpZW50UHJvdmlkZXIgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5pbXBvcnQgeyBSZWFjdFF1ZXJ5RGV2dG9vbHMgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5LWRldnRvb2xzXCI7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB0eXBlIFByb3BzV2l0aENoaWxkcmVuLCB1c2VDb250ZXh0LCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdG9hc3QgfSBmcm9tIFwic29ubmVyXCI7XG5cbmltcG9ydCB0eXBlIHsgQWRhcHRlciwgVGFibGUgfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmltcG9ydCB7IFRvYXN0ZXIgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9zb25uZXJcIjtcbmltcG9ydCB7IE51cXNIYXNoQWRhcHRlciB9IGZyb20gXCIuL051cXNIYXNoQWRhcHRlclwiO1xuaW1wb3J0IHsgU3R1ZGlvVGVsZW1ldHJ5RXZlbnQgfSBmcm9tIFwiLi9TdHVkaW9cIjtcbmltcG9ydCB7IFVSTERlZmF1bHRzSGFuZGxlciB9IGZyb20gXCIuL1VSTERlZmF1bHRzSGFuZGxlclwiO1xuXG4vKipcbiAqIFN0dWRpbyBjb250ZXh0IHZhbHVlIGludGVyZmFjZVxuICovXG5pbnRlcmZhY2UgU3R1ZGlvQ29udGV4dFZhbHVlIHtcbiAgYWN0aXZlVGFibGU6IFRhYmxlIHwgbnVsbDtcbiAgYWN0aXZlU2NoZW1hOiBzdHJpbmc7XG4gIGFkYXB0ZXI6IEFkYXB0ZXI7XG4gIHNldEFjdGl2ZVRhYmxlOiAodGFibGU6IFRhYmxlIHwgbnVsbCkgPT4gdm9pZDtcbiAgc2V0QWN0aXZlU2NoZW1hOiAoc2NoZW1hOiBzdHJpbmcpID0+IHZvaWQ7XG4gIG9uRXJyb3I6IChlcnJvcjogRXJyb3IpID0+IHZvaWQ7XG4gIGVtaXRUZWxlbWV0cnlFdmVudDogKGFyZ3M6IFN0dWRpb1RlbGVtZXRyeUV2ZW50KSA9PiB2b2lkO1xuICAvLyBVSSBzdGF0ZVxuICBpc0Z1bGxzY3JlZW46IGJvb2xlYW47XG4gIHRvZ2dsZUZ1bGxzY3JlZW46ICgpID0+IHZvaWQ7XG4gIGlzTmF2aWdhdGlvbk9wZW46IGJvb2xlYW47XG4gIHRvZ2dsZU5hdmlnYXRpb246ICgpID0+IHZvaWQ7XG59XG5cbmNvbnN0IHF1ZXJ5Q2xpZW50ID0gbmV3IFF1ZXJ5Q2xpZW50KCk7XG5cbi8qKlxuICogQ29udGV4dCBmb3Igc2hhcmluZyBTdHVkaW8gc3RhdGUgYWNyb3NzIGNvbXBvbmVudHNcbiAqL1xuY29uc3QgU3R1ZGlvQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8U3R1ZGlvQ29udGV4dFZhbHVlIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG5leHBvcnQgdHlwZSBTdHVkaW9Db250ZXh0UHJvdmlkZXJQcm9wcyA9IFByb3BzV2l0aENoaWxkcmVuPHtcbiAgYWRhcHRlcjogQWRhcHRlcjtcbiAgb25FcnJvcj86IChlcnJvcjogRXJyb3IpID0+IHZvaWQ7XG4gIG9uVGVsZW1ldHJ5RXZlbnQ/OiAoYXJnczogU3R1ZGlvVGVsZW1ldHJ5RXZlbnQpID0+IHZvaWQ7XG59PjtcblxuZXhwb3J0IGZ1bmN0aW9uIFN0dWRpb0NvbnRleHRQcm92aWRlcihwcm9wczogU3R1ZGlvQ29udGV4dFByb3ZpZGVyUHJvcHMpIHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgLi4ub3RoZXJQcm9wcyB9ID0gcHJvcHM7XG4gIGNvbnN0IFthY3RpdmVUYWJsZSwgc2V0QWN0aXZlVGFibGVdID0gdXNlU3RhdGU8VGFibGUgfCBudWxsPihudWxsKTtcbiAgY29uc3QgW2FjdGl2ZVNjaGVtYSwgc2V0QWN0aXZlU2NoZW1hXSA9IHVzZVN0YXRlPHN0cmluZz4ocHJvcHMuYWRhcHRlci5kZWZhdWx0U2NoZW1hIHx8IFwicHVibGljXCIpO1xuICBjb25zdCBbaXNGdWxsc2NyZWVuLCBzZXRJc0Z1bGxzY3JlZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbaXNOYXZpZ2F0aW9uT3Blbiwgc2V0SXNOYXZpZ2F0aW9uT3Blbl0gPSB1c2VTdGF0ZSh0cnVlKTtcblxuICBsZXQgb25FcnJvciA9IHByb3BzLm9uRXJyb3I7XG4gIG9uRXJyb3IgPz89IChlcnJvcjogRXJyb3IpID0+IHRvYXN0LmVycm9yKGVycm9yLm1lc3NhZ2UpO1xuXG4gIGNvbnN0IGVtaXRUZWxlbWV0cnlFdmVudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBwcm9wcy5vblRlbGVtZXRyeUV2ZW50ID8/ICgoKSA9PiB7fSk7XG4gIH0sIFtwcm9wcy5vblRlbGVtZXRyeUV2ZW50XSk7XG5cbiAgY29uc3QgdG9nZ2xlRnVsbHNjcmVlbiA9ICgpID0+IHNldElzRnVsbHNjcmVlbigocHJldikgPT4gIXByZXYpO1xuICBjb25zdCB0b2dnbGVOYXZpZ2F0aW9uID0gKCkgPT4gc2V0SXNOYXZpZ2F0aW9uT3BlbigocHJldikgPT4gIXByZXYpO1xuICByZXR1cm4gKFxuICAgIDxRdWVyeUNsaWVudFByb3ZpZGVyIGNsaWVudD17cXVlcnlDbGllbnR9PlxuICAgICAgPFJlYWN0UXVlcnlEZXZ0b29scyAvPlxuICAgICAgPFRvYXN0ZXIgLz5cbiAgICAgIDxOdXFzSGFzaEFkYXB0ZXI+XG4gICAgICAgIDxTdHVkaW9Db250ZXh0LlByb3ZpZGVyXG4gICAgICAgICAgdmFsdWU9e3tcbiAgICAgICAgICAgIC4uLm90aGVyUHJvcHMsXG4gICAgICAgICAgICBhY3RpdmVUYWJsZSxcbiAgICAgICAgICAgIGFjdGl2ZVNjaGVtYSxcbiAgICAgICAgICAgIGlzRnVsbHNjcmVlbixcbiAgICAgICAgICAgIHNldEFjdGl2ZVRhYmxlLFxuICAgICAgICAgICAgc2V0QWN0aXZlU2NoZW1hLFxuICAgICAgICAgICAgb25FcnJvcixcbiAgICAgICAgICAgIGVtaXRUZWxlbWV0cnlFdmVudCxcbiAgICAgICAgICAgIHRvZ2dsZUZ1bGxzY3JlZW4sXG4gICAgICAgICAgICBpc05hdmlnYXRpb25PcGVuLFxuICAgICAgICAgICAgdG9nZ2xlTmF2aWdhdGlvbixcbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFVSTERlZmF1bHRzSGFuZGxlciAvPlxuICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPC9TdHVkaW9Db250ZXh0LlByb3ZpZGVyPlxuICAgICAgPC9OdXFzSGFzaEFkYXB0ZXI+XG4gICAgPC9RdWVyeUNsaWVudFByb3ZpZGVyPlxuICApO1xufVxuXG4vKipcbiAqIEhvb2sgdG8gYWNjZXNzIFN0dWRpbyBjb250ZXh0XG4gKiBAdGhyb3dzIEVycm9yIGlmIHVzZWQgb3V0c2lkZSBvZiBTdHVkaW8uUHJvdmlkZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVN0dWRpbygpOiBTdHVkaW9Db250ZXh0VmFsdWUge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChTdHVkaW9Db250ZXh0KTtcblxuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJgdXNlU3R1ZGlvYCBtdXN0IGJlIHVzZWQgd2l0aGluIGEgYFN0dWRpb0NvbnRleHQuUHJvdmlkZXJgXCIpO1xuICB9XG5cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG4iLCAiJ3VzZSBjbGllbnQnXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG9ubGluZU1hbmFnZXIsIHVzZVF1ZXJ5Q2xpZW50IH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5J1xuaW1wb3J0IHsgVGFuc3RhY2tRdWVyeURldnRvb2xzIH0gZnJvbSAnQHRhbnN0YWNrL3F1ZXJ5LWRldnRvb2xzJ1xuaW1wb3J0IHR5cGUge1xuICBEZXZ0b29sc0J1dHRvblBvc2l0aW9uLFxuICBEZXZ0b29sc0Vycm9yVHlwZSxcbiAgRGV2dG9vbHNQb3NpdGlvbixcbn0gZnJvbSAnQHRhbnN0YWNrL3F1ZXJ5LWRldnRvb2xzJ1xuaW1wb3J0IHR5cGUgeyBRdWVyeUNsaWVudCB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSdcblxuZXhwb3J0IGludGVyZmFjZSBEZXZ0b29sc09wdGlvbnMge1xuICAvKipcbiAgICogU2V0IHRoaXMgdHJ1ZSBpZiB5b3Ugd2FudCB0aGUgZGV2IHRvb2xzIHRvIGRlZmF1bHQgdG8gYmVpbmcgb3BlblxuICAgKi9cbiAgaW5pdGlhbElzT3Blbj86IGJvb2xlYW5cbiAgLyoqXG4gICAqIFRoZSBwb3NpdGlvbiBvZiB0aGUgUmVhY3QgUXVlcnkgbG9nbyB0byBvcGVuIGFuZCBjbG9zZSB0aGUgZGV2dG9vbHMgcGFuZWwuXG4gICAqICd0b3AtbGVmdCcgfCAndG9wLXJpZ2h0JyB8ICdib3R0b20tbGVmdCcgfCAnYm90dG9tLXJpZ2h0J1xuICAgKiBEZWZhdWx0cyB0byAnYm90dG9tLXJpZ2h0Jy5cbiAgICovXG4gIGJ1dHRvblBvc2l0aW9uPzogRGV2dG9vbHNCdXR0b25Qb3NpdGlvblxuICAvKipcbiAgICogVGhlIHBvc2l0aW9uIG9mIHRoZSBSZWFjdCBRdWVyeSBkZXZ0b29scyBwYW5lbC5cbiAgICogJ3RvcCcgfCAnYm90dG9tJyB8ICdsZWZ0JyB8ICdyaWdodCdcbiAgICogRGVmYXVsdHMgdG8gJ2JvdHRvbScuXG4gICAqL1xuICBwb3NpdGlvbj86IERldnRvb2xzUG9zaXRpb25cbiAgLyoqXG4gICAqIEN1c3RvbSBpbnN0YW5jZSBvZiBRdWVyeUNsaWVudFxuICAgKi9cbiAgY2xpZW50PzogUXVlcnlDbGllbnRcbiAgLyoqXG4gICAqIFVzZSB0aGlzIHNvIHlvdSBjYW4gZGVmaW5lIGN1c3RvbSBlcnJvcnMgdGhhdCBjYW4gYmUgc2hvd24gaW4gdGhlIGRldnRvb2xzLlxuICAgKi9cbiAgZXJyb3JUeXBlcz86IEFycmF5PERldnRvb2xzRXJyb3JUeXBlPlxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gcGFzcyBhIG5vbmNlIHRvIHRoZSBzdHlsZSB0YWcgdGhhdCBpcyBhZGRlZCB0byB0aGUgZG9jdW1lbnQgaGVhZC4gVGhpcyBpcyB1c2VmdWwgaWYgeW91IGFyZSB1c2luZyBhIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IChDU1ApIG5vbmNlIHRvIGFsbG93IGlubGluZSBzdHlsZXMuXG4gICAqL1xuICBzdHlsZU5vbmNlPzogc3RyaW5nXG4gIC8qKlxuICAgKiBVc2UgdGhpcyBzbyB5b3UgY2FuIGF0dGFjaCB0aGUgZGV2dG9vbCdzIHN0eWxlcyB0byBzcGVjaWZpYyBlbGVtZW50IGluIHRoZSBET00uXG4gICAqL1xuICBzaGFkb3dET01UYXJnZXQ/OiBTaGFkb3dSb290XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSZWFjdFF1ZXJ5RGV2dG9vbHMoXG4gIHByb3BzOiBEZXZ0b29sc09wdGlvbnMsXG4pOiBSZWFjdC5SZWFjdEVsZW1lbnQgfCBudWxsIHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudChwcm9wcy5jbGllbnQpXG4gIGNvbnN0IHJlZiA9IFJlYWN0LnVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3Qge1xuICAgIGJ1dHRvblBvc2l0aW9uLFxuICAgIHBvc2l0aW9uLFxuICAgIGluaXRpYWxJc09wZW4sXG4gICAgZXJyb3JUeXBlcyxcbiAgICBzdHlsZU5vbmNlLFxuICAgIHNoYWRvd0RPTVRhcmdldCxcbiAgfSA9IHByb3BzXG4gIGNvbnN0IFtkZXZ0b29sc10gPSBSZWFjdC51c2VTdGF0ZShcbiAgICBuZXcgVGFuc3RhY2tRdWVyeURldnRvb2xzKHtcbiAgICAgIGNsaWVudDogcXVlcnlDbGllbnQsXG4gICAgICBxdWVyeUZsYXZvcjogJ1JlYWN0IFF1ZXJ5JyxcbiAgICAgIHZlcnNpb246ICc1JyxcbiAgICAgIG9ubGluZU1hbmFnZXIsXG4gICAgICBidXR0b25Qb3NpdGlvbixcbiAgICAgIHBvc2l0aW9uLFxuICAgICAgaW5pdGlhbElzT3BlbixcbiAgICAgIGVycm9yVHlwZXMsXG4gICAgICBzdHlsZU5vbmNlLFxuICAgICAgc2hhZG93RE9NVGFyZ2V0LFxuICAgIH0pLFxuICApXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBkZXZ0b29scy5zZXRDbGllbnQocXVlcnlDbGllbnQpXG4gIH0sIFtxdWVyeUNsaWVudCwgZGV2dG9vbHNdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGJ1dHRvblBvc2l0aW9uKSB7XG4gICAgICBkZXZ0b29scy5zZXRCdXR0b25Qb3NpdGlvbihidXR0b25Qb3NpdGlvbilcbiAgICB9XG4gIH0sIFtidXR0b25Qb3NpdGlvbiwgZGV2dG9vbHNdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHBvc2l0aW9uKSB7XG4gICAgICBkZXZ0b29scy5zZXRQb3NpdGlvbihwb3NpdGlvbilcbiAgICB9XG4gIH0sIFtwb3NpdGlvbiwgZGV2dG9vbHNdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZGV2dG9vbHMuc2V0SW5pdGlhbElzT3Blbihpbml0aWFsSXNPcGVuIHx8IGZhbHNlKVxuICB9LCBbaW5pdGlhbElzT3BlbiwgZGV2dG9vbHNdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZGV2dG9vbHMuc2V0RXJyb3JUeXBlcyhlcnJvclR5cGVzIHx8IFtdKVxuICB9LCBbZXJyb3JUeXBlcywgZGV2dG9vbHNdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlZi5jdXJyZW50KSB7XG4gICAgICBkZXZ0b29scy5tb3VudChyZWYuY3VycmVudClcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZGV2dG9vbHMudW5tb3VudCgpXG4gICAgfVxuICB9LCBbZGV2dG9vbHNdKVxuXG4gIHJldHVybiA8ZGl2IGRpcj1cImx0clwiIGNsYXNzTmFtZT1cInRzcWQtcGFyZW50LWNvbnRhaW5lclwiIHJlZj17cmVmfT48L2Rpdj5cbn1cbiIsICJpbXBvcnQgeyBjcmVhdGVTaWduYWwsIHJlbmRlciwgbGF6eSwgc2V0dXBTdHlsZVNoZWV0LCBjcmVhdGVDb21wb25lbnQsIG1lcmdlUHJvcHMgfSBmcm9tICcuL2NodW5rL0hSN1lYWjVILmpzJztcblxuLy8gc3JjL1RhbnN0YWNrUXVlcnlEZXZ0b29scy50c3hcbnZhciBUYW5zdGFja1F1ZXJ5RGV2dG9vbHMgPSBjbGFzcyB7XG4gICNjbGllbnQ7XG4gICNvbmxpbmVNYW5hZ2VyO1xuICAjcXVlcnlGbGF2b3I7XG4gICN2ZXJzaW9uO1xuICAjaXNNb3VudGVkID0gZmFsc2U7XG4gICNzdHlsZU5vbmNlO1xuICAjc2hhZG93RE9NVGFyZ2V0O1xuICAjYnV0dG9uUG9zaXRpb247XG4gICNwb3NpdGlvbjtcbiAgI2luaXRpYWxJc09wZW47XG4gICNlcnJvclR5cGVzO1xuICAjQ29tcG9uZW50O1xuICAjZGlzcG9zZTtcbiAgY29uc3RydWN0b3IoY29uZmlnKSB7XG4gICAgY29uc3Qge1xuICAgICAgY2xpZW50LFxuICAgICAgcXVlcnlGbGF2b3IsXG4gICAgICB2ZXJzaW9uLFxuICAgICAgb25saW5lTWFuYWdlcixcbiAgICAgIGJ1dHRvblBvc2l0aW9uLFxuICAgICAgcG9zaXRpb24sXG4gICAgICBpbml0aWFsSXNPcGVuLFxuICAgICAgZXJyb3JUeXBlcyxcbiAgICAgIHN0eWxlTm9uY2UsXG4gICAgICBzaGFkb3dET01UYXJnZXRcbiAgICB9ID0gY29uZmlnO1xuICAgIHRoaXMuI2NsaWVudCA9IGNyZWF0ZVNpZ25hbChjbGllbnQpO1xuICAgIHRoaXMuI3F1ZXJ5Rmxhdm9yID0gcXVlcnlGbGF2b3I7XG4gICAgdGhpcy4jdmVyc2lvbiA9IHZlcnNpb247XG4gICAgdGhpcy4jb25saW5lTWFuYWdlciA9IG9ubGluZU1hbmFnZXI7XG4gICAgdGhpcy4jc3R5bGVOb25jZSA9IHN0eWxlTm9uY2U7XG4gICAgdGhpcy4jc2hhZG93RE9NVGFyZ2V0ID0gc2hhZG93RE9NVGFyZ2V0O1xuICAgIHRoaXMuI2J1dHRvblBvc2l0aW9uID0gY3JlYXRlU2lnbmFsKGJ1dHRvblBvc2l0aW9uKTtcbiAgICB0aGlzLiNwb3NpdGlvbiA9IGNyZWF0ZVNpZ25hbChwb3NpdGlvbik7XG4gICAgdGhpcy4jaW5pdGlhbElzT3BlbiA9IGNyZWF0ZVNpZ25hbChpbml0aWFsSXNPcGVuKTtcbiAgICB0aGlzLiNlcnJvclR5cGVzID0gY3JlYXRlU2lnbmFsKGVycm9yVHlwZXMpO1xuICB9XG4gIHNldEJ1dHRvblBvc2l0aW9uKHBvc2l0aW9uKSB7XG4gICAgdGhpcy4jYnV0dG9uUG9zaXRpb25bMV0ocG9zaXRpb24pO1xuICB9XG4gIHNldFBvc2l0aW9uKHBvc2l0aW9uKSB7XG4gICAgdGhpcy4jcG9zaXRpb25bMV0ocG9zaXRpb24pO1xuICB9XG4gIHNldEluaXRpYWxJc09wZW4oaXNPcGVuKSB7XG4gICAgdGhpcy4jaW5pdGlhbElzT3BlblsxXShpc09wZW4pO1xuICB9XG4gIHNldEVycm9yVHlwZXMoZXJyb3JUeXBlcykge1xuICAgIHRoaXMuI2Vycm9yVHlwZXNbMV0oZXJyb3JUeXBlcyk7XG4gIH1cbiAgc2V0Q2xpZW50KGNsaWVudCkge1xuICAgIHRoaXMuI2NsaWVudFsxXShjbGllbnQpO1xuICB9XG4gIG1vdW50KGVsKSB7XG4gICAgaWYgKHRoaXMuI2lzTW91bnRlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRGV2dG9vbHMgaXMgYWxyZWFkeSBtb3VudGVkXCIpO1xuICAgIH1cbiAgICBjb25zdCBkaXNwb3NlID0gcmVuZGVyKCgpID0+IHtcbiAgICAgIGNvbnN0IF9zZWxmJCA9IHRoaXM7XG4gICAgICBjb25zdCBbYnRuUG9zaXRpb25dID0gdGhpcy4jYnV0dG9uUG9zaXRpb247XG4gICAgICBjb25zdCBbcG9zXSA9IHRoaXMuI3Bvc2l0aW9uO1xuICAgICAgY29uc3QgW2lzT3Blbl0gPSB0aGlzLiNpbml0aWFsSXNPcGVuO1xuICAgICAgY29uc3QgW2Vycm9yc10gPSB0aGlzLiNlcnJvclR5cGVzO1xuICAgICAgY29uc3QgW3F1ZXJ5Q2xpZW50XSA9IHRoaXMuI2NsaWVudDtcbiAgICAgIGxldCBEZXZ0b29scztcbiAgICAgIGlmICh0aGlzLiNDb21wb25lbnQpIHtcbiAgICAgICAgRGV2dG9vbHMgPSB0aGlzLiNDb21wb25lbnQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBEZXZ0b29scyA9IGxhenkoKCkgPT4gaW1wb3J0KCcuL0RldnRvb2xzQ29tcG9uZW50L0NQSU9aUzVYLmpzJykpO1xuICAgICAgICB0aGlzLiNDb21wb25lbnQgPSBEZXZ0b29scztcbiAgICAgIH1cbiAgICAgIHNldHVwU3R5bGVTaGVldCh0aGlzLiNzdHlsZU5vbmNlLCB0aGlzLiNzaGFkb3dET01UYXJnZXQpO1xuICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChEZXZ0b29scywgbWVyZ2VQcm9wcyh7XG4gICAgICAgIGdldCBxdWVyeUZsYXZvcigpIHtcbiAgICAgICAgICByZXR1cm4gX3NlbGYkLiNxdWVyeUZsYXZvcjtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IHZlcnNpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIF9zZWxmJC4jdmVyc2lvbjtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IG9ubGluZU1hbmFnZXIoKSB7XG4gICAgICAgICAgcmV0dXJuIF9zZWxmJC4jb25saW5lTWFuYWdlcjtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IHNoYWRvd0RPTVRhcmdldCgpIHtcbiAgICAgICAgICByZXR1cm4gX3NlbGYkLiNzaGFkb3dET01UYXJnZXQ7XG4gICAgICAgIH1cbiAgICAgIH0sIHtcbiAgICAgICAgZ2V0IGNsaWVudCgpIHtcbiAgICAgICAgICByZXR1cm4gcXVlcnlDbGllbnQoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGJ1dHRvblBvc2l0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBidG5Qb3NpdGlvbigpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgcG9zaXRpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIHBvcygpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgaW5pdGlhbElzT3BlbigpIHtcbiAgICAgICAgICByZXR1cm4gaXNPcGVuKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBlcnJvclR5cGVzKCkge1xuICAgICAgICAgIHJldHVybiBlcnJvcnMoKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH0sIGVsKTtcbiAgICB0aGlzLiNpc01vdW50ZWQgPSB0cnVlO1xuICAgIHRoaXMuI2Rpc3Bvc2UgPSBkaXNwb3NlO1xuICB9XG4gIHVubW91bnQoKSB7XG4gICAgaWYgKCF0aGlzLiNpc01vdW50ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkRldnRvb2xzIGlzIG5vdCBtb3VudGVkXCIpO1xuICAgIH1cbiAgICB0aGlzLiNkaXNwb3NlPy4oKTtcbiAgICB0aGlzLiNpc01vdW50ZWQgPSBmYWxzZTtcbiAgfVxufTtcblxuLy8gc3JjL1RhbnN0YWNrUXVlcnlEZXZ0b29sc1BhbmVsLnRzeFxudmFyIFRhbnN0YWNrUXVlcnlEZXZ0b29sc1BhbmVsID0gY2xhc3Mge1xuICAjY2xpZW50O1xuICAjb25saW5lTWFuYWdlcjtcbiAgI3F1ZXJ5Rmxhdm9yO1xuICAjdmVyc2lvbjtcbiAgI2lzTW91bnRlZCA9IGZhbHNlO1xuICAjc3R5bGVOb25jZTtcbiAgI3NoYWRvd0RPTVRhcmdldDtcbiAgI2J1dHRvblBvc2l0aW9uO1xuICAjcG9zaXRpb247XG4gICNpbml0aWFsSXNPcGVuO1xuICAjZXJyb3JUeXBlcztcbiAgI29uQ2xvc2U7XG4gICNDb21wb25lbnQ7XG4gICNkaXNwb3NlO1xuICBjb25zdHJ1Y3Rvcihjb25maWcpIHtcbiAgICBjb25zdCB7XG4gICAgICBjbGllbnQsXG4gICAgICBxdWVyeUZsYXZvcixcbiAgICAgIHZlcnNpb24sXG4gICAgICBvbmxpbmVNYW5hZ2VyLFxuICAgICAgYnV0dG9uUG9zaXRpb24sXG4gICAgICBwb3NpdGlvbixcbiAgICAgIGluaXRpYWxJc09wZW4sXG4gICAgICBlcnJvclR5cGVzLFxuICAgICAgc3R5bGVOb25jZSxcbiAgICAgIHNoYWRvd0RPTVRhcmdldCxcbiAgICAgIG9uQ2xvc2VcbiAgICB9ID0gY29uZmlnO1xuICAgIHRoaXMuI2NsaWVudCA9IGNyZWF0ZVNpZ25hbChjbGllbnQpO1xuICAgIHRoaXMuI3F1ZXJ5Rmxhdm9yID0gcXVlcnlGbGF2b3I7XG4gICAgdGhpcy4jdmVyc2lvbiA9IHZlcnNpb247XG4gICAgdGhpcy4jb25saW5lTWFuYWdlciA9IG9ubGluZU1hbmFnZXI7XG4gICAgdGhpcy4jc3R5bGVOb25jZSA9IHN0eWxlTm9uY2U7XG4gICAgdGhpcy4jc2hhZG93RE9NVGFyZ2V0ID0gc2hhZG93RE9NVGFyZ2V0O1xuICAgIHRoaXMuI2J1dHRvblBvc2l0aW9uID0gY3JlYXRlU2lnbmFsKGJ1dHRvblBvc2l0aW9uKTtcbiAgICB0aGlzLiNwb3NpdGlvbiA9IGNyZWF0ZVNpZ25hbChwb3NpdGlvbik7XG4gICAgdGhpcy4jaW5pdGlhbElzT3BlbiA9IGNyZWF0ZVNpZ25hbChpbml0aWFsSXNPcGVuKTtcbiAgICB0aGlzLiNlcnJvclR5cGVzID0gY3JlYXRlU2lnbmFsKGVycm9yVHlwZXMpO1xuICAgIHRoaXMuI29uQ2xvc2UgPSBjcmVhdGVTaWduYWwob25DbG9zZSk7XG4gIH1cbiAgc2V0QnV0dG9uUG9zaXRpb24ocG9zaXRpb24pIHtcbiAgICB0aGlzLiNidXR0b25Qb3NpdGlvblsxXShwb3NpdGlvbik7XG4gIH1cbiAgc2V0UG9zaXRpb24ocG9zaXRpb24pIHtcbiAgICB0aGlzLiNwb3NpdGlvblsxXShwb3NpdGlvbik7XG4gIH1cbiAgc2V0SW5pdGlhbElzT3Blbihpc09wZW4pIHtcbiAgICB0aGlzLiNpbml0aWFsSXNPcGVuWzFdKGlzT3Blbik7XG4gIH1cbiAgc2V0RXJyb3JUeXBlcyhlcnJvclR5cGVzKSB7XG4gICAgdGhpcy4jZXJyb3JUeXBlc1sxXShlcnJvclR5cGVzKTtcbiAgfVxuICBzZXRDbGllbnQoY2xpZW50KSB7XG4gICAgdGhpcy4jY2xpZW50WzFdKGNsaWVudCk7XG4gIH1cbiAgc2V0T25DbG9zZShvbkNsb3NlKSB7XG4gICAgdGhpcy4jb25DbG9zZVsxXSgoKSA9PiBvbkNsb3NlKTtcbiAgfVxuICBtb3VudChlbCkge1xuICAgIGlmICh0aGlzLiNpc01vdW50ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkRldnRvb2xzIGlzIGFscmVhZHkgbW91bnRlZFwiKTtcbiAgICB9XG4gICAgY29uc3QgZGlzcG9zZSA9IHJlbmRlcigoKSA9PiB7XG4gICAgICBjb25zdCBfc2VsZiQgPSB0aGlzO1xuICAgICAgY29uc3QgW2J0blBvc2l0aW9uXSA9IHRoaXMuI2J1dHRvblBvc2l0aW9uO1xuICAgICAgY29uc3QgW3Bvc10gPSB0aGlzLiNwb3NpdGlvbjtcbiAgICAgIGNvbnN0IFtpc09wZW5dID0gdGhpcy4jaW5pdGlhbElzT3BlbjtcbiAgICAgIGNvbnN0IFtlcnJvcnNdID0gdGhpcy4jZXJyb3JUeXBlcztcbiAgICAgIGNvbnN0IFtxdWVyeUNsaWVudF0gPSB0aGlzLiNjbGllbnQ7XG4gICAgICBjb25zdCBbb25DbG9zZV0gPSB0aGlzLiNvbkNsb3NlO1xuICAgICAgbGV0IERldnRvb2xzO1xuICAgICAgaWYgKHRoaXMuI0NvbXBvbmVudCkge1xuICAgICAgICBEZXZ0b29scyA9IHRoaXMuI0NvbXBvbmVudDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIERldnRvb2xzID0gbGF6eSgoKSA9PiBpbXBvcnQoJy4vRGV2dG9vbHNQYW5lbENvbXBvbmVudC9PS0Y2RTQ1Ui5qcycpKTtcbiAgICAgICAgdGhpcy4jQ29tcG9uZW50ID0gRGV2dG9vbHM7XG4gICAgICB9XG4gICAgICBzZXR1cFN0eWxlU2hlZXQodGhpcy4jc3R5bGVOb25jZSwgdGhpcy4jc2hhZG93RE9NVGFyZ2V0KTtcbiAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoRGV2dG9vbHMsIG1lcmdlUHJvcHMoe1xuICAgICAgICBnZXQgcXVlcnlGbGF2b3IoKSB7XG4gICAgICAgICAgcmV0dXJuIF9zZWxmJC4jcXVlcnlGbGF2b3I7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCB2ZXJzaW9uKCkge1xuICAgICAgICAgIHJldHVybiBfc2VsZiQuI3ZlcnNpb247XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBvbmxpbmVNYW5hZ2VyKCkge1xuICAgICAgICAgIHJldHVybiBfc2VsZiQuI29ubGluZU1hbmFnZXI7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBzaGFkb3dET01UYXJnZXQoKSB7XG4gICAgICAgICAgcmV0dXJuIF9zZWxmJC4jc2hhZG93RE9NVGFyZ2V0O1xuICAgICAgICB9XG4gICAgICB9LCB7XG4gICAgICAgIGdldCBjbGllbnQoKSB7XG4gICAgICAgICAgcmV0dXJuIHF1ZXJ5Q2xpZW50KCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBidXR0b25Qb3NpdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gYnRuUG9zaXRpb24oKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IHBvc2l0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBwb3MoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGluaXRpYWxJc09wZW4oKSB7XG4gICAgICAgICAgcmV0dXJuIGlzT3BlbigpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgZXJyb3JUeXBlcygpIHtcbiAgICAgICAgICByZXR1cm4gZXJyb3JzKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBvbkNsb3NlKCkge1xuICAgICAgICAgIHJldHVybiBvbkNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB9LCBlbCk7XG4gICAgdGhpcy4jaXNNb3VudGVkID0gdHJ1ZTtcbiAgICB0aGlzLiNkaXNwb3NlID0gZGlzcG9zZTtcbiAgfVxuICB1bm1vdW50KCkge1xuICAgIGlmICghdGhpcy4jaXNNb3VudGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEZXZ0b29scyBpcyBub3QgbW91bnRlZFwiKTtcbiAgICB9XG4gICAgdGhpcy4jZGlzcG9zZT8uKCk7XG4gICAgdGhpcy4jaXNNb3VudGVkID0gZmFsc2U7XG4gIH1cbn07XG5cbmV4cG9ydCB7IFRhbnN0YWNrUXVlcnlEZXZ0b29scywgVGFuc3RhY2tRdWVyeURldnRvb2xzUGFuZWwgfTtcbiIsICIndXNlIGNsaWVudCdcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgb25saW5lTWFuYWdlciwgdXNlUXVlcnlDbGllbnQgfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtcXVlcnknXG5pbXBvcnQgeyBUYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbCB9IGZyb20gJ0B0YW5zdGFjay9xdWVyeS1kZXZ0b29scydcbmltcG9ydCB0eXBlIHsgRGV2dG9vbHNFcnJvclR5cGUgfSBmcm9tICdAdGFuc3RhY2svcXVlcnktZGV2dG9vbHMnXG5pbXBvcnQgdHlwZSB7IFF1ZXJ5Q2xpZW50IH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5J1xuXG5leHBvcnQgaW50ZXJmYWNlIERldnRvb2xzUGFuZWxPcHRpb25zIHtcbiAgLyoqXG4gICAqIEN1c3RvbSBpbnN0YW5jZSBvZiBRdWVyeUNsaWVudFxuICAgKi9cbiAgY2xpZW50PzogUXVlcnlDbGllbnRcbiAgLyoqXG4gICAqIFVzZSB0aGlzIHNvIHlvdSBjYW4gZGVmaW5lIGN1c3RvbSBlcnJvcnMgdGhhdCBjYW4gYmUgc2hvd24gaW4gdGhlIGRldnRvb2xzLlxuICAgKi9cbiAgZXJyb3JUeXBlcz86IEFycmF5PERldnRvb2xzRXJyb3JUeXBlPlxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gcGFzcyBhIG5vbmNlIHRvIHRoZSBzdHlsZSB0YWcgdGhhdCBpcyBhZGRlZCB0byB0aGUgZG9jdW1lbnQgaGVhZC4gVGhpcyBpcyB1c2VmdWwgaWYgeW91IGFyZSB1c2luZyBhIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IChDU1ApIG5vbmNlIHRvIGFsbG93IGlubGluZSBzdHlsZXMuXG4gICAqL1xuICBzdHlsZU5vbmNlPzogc3RyaW5nXG4gIC8qKlxuICAgKiBVc2UgdGhpcyBzbyB5b3UgY2FuIGF0dGFjaCB0aGUgZGV2dG9vbCdzIHN0eWxlcyB0byBzcGVjaWZpYyBlbGVtZW50IGluIHRoZSBET00uXG4gICAqL1xuICBzaGFkb3dET01UYXJnZXQ/OiBTaGFkb3dSb290XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBzdHlsZXMgZm9yIHRoZSBkZXZ0b29scyBwYW5lbFxuICAgKiBAZGVmYXVsdCB7IGhlaWdodDogJzUwMHB4JyB9XG4gICAqIEBleGFtcGxlIHsgaGVpZ2h0OiAnMTAwJScgfVxuICAgKiBAZXhhbXBsZSB7IGhlaWdodDogJzEwMCUnLCB3aWR0aDogJzEwMCUnIH1cbiAgICovXG4gIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllc1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSBkZXZ0b29scyBwYW5lbCBpcyBjbG9zZWRcbiAgICovXG4gIG9uQ2xvc2U/OiAoKSA9PiB1bmtub3duXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbChcbiAgcHJvcHM6IERldnRvb2xzUGFuZWxPcHRpb25zLFxuKTogUmVhY3QuUmVhY3RFbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQocHJvcHMuY2xpZW50KVxuICBjb25zdCByZWYgPSBSZWFjdC51c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHsgZXJyb3JUeXBlcywgc3R5bGVOb25jZSwgc2hhZG93RE9NVGFyZ2V0IH0gPSBwcm9wc1xuICBjb25zdCBbZGV2dG9vbHNdID0gUmVhY3QudXNlU3RhdGUoXG4gICAgbmV3IFRhbnN0YWNrUXVlcnlEZXZ0b29sc1BhbmVsKHtcbiAgICAgIGNsaWVudDogcXVlcnlDbGllbnQsXG4gICAgICBxdWVyeUZsYXZvcjogJ1JlYWN0IFF1ZXJ5JyxcbiAgICAgIHZlcnNpb246ICc1JyxcbiAgICAgIG9ubGluZU1hbmFnZXIsXG4gICAgICBidXR0b25Qb3NpdGlvbjogJ2JvdHRvbS1sZWZ0JyxcbiAgICAgIHBvc2l0aW9uOiAnYm90dG9tJyxcbiAgICAgIGluaXRpYWxJc09wZW46IHRydWUsXG4gICAgICBlcnJvclR5cGVzLFxuICAgICAgc3R5bGVOb25jZSxcbiAgICAgIHNoYWRvd0RPTVRhcmdldCxcbiAgICAgIG9uQ2xvc2U6IHByb3BzLm9uQ2xvc2UsXG4gICAgfSksXG4gIClcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRldnRvb2xzLnNldENsaWVudChxdWVyeUNsaWVudClcbiAgfSwgW3F1ZXJ5Q2xpZW50LCBkZXZ0b29sc10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBkZXZ0b29scy5zZXRPbkNsb3NlKHByb3BzLm9uQ2xvc2UgPz8gKCgpID0+IHt9KSlcbiAgfSwgW3Byb3BzLm9uQ2xvc2UsIGRldnRvb2xzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRldnRvb2xzLnNldEVycm9yVHlwZXMoZXJyb3JUeXBlcyB8fCBbXSlcbiAgfSwgW2Vycm9yVHlwZXMsIGRldnRvb2xzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZWYuY3VycmVudCkge1xuICAgICAgZGV2dG9vbHMubW91bnQocmVmLmN1cnJlbnQpXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRldnRvb2xzLnVubW91bnQoKVxuICAgIH1cbiAgfSwgW2RldnRvb2xzXSlcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHN0eWxlPXt7IGhlaWdodDogJzUwMHB4JywgLi4ucHJvcHMuc3R5bGUgfX1cbiAgICAgIGNsYXNzTmFtZT1cInRzcWQtcGFyZW50LWNvbnRhaW5lclwiXG4gICAgICByZWY9e3JlZn1cbiAgICA+PC9kaXY+XG4gIClcbn1cbiIsICIndXNlIGNsaWVudCdcblxuaW1wb3J0ICogYXMgRGV2dG9vbHMgZnJvbSAnLi9SZWFjdFF1ZXJ5RGV2dG9vbHMnXG5pbXBvcnQgKiBhcyBEZXZ0b29sc1BhbmVsIGZyb20gJy4vUmVhY3RRdWVyeURldnRvb2xzUGFuZWwnXG5cbmV4cG9ydCBjb25zdCBSZWFjdFF1ZXJ5RGV2dG9vbHM6ICh0eXBlb2YgRGV2dG9vbHMpWydSZWFjdFF1ZXJ5RGV2dG9vbHMnXSA9XG4gIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAnZGV2ZWxvcG1lbnQnXG4gICAgPyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG4gICAgOiBEZXZ0b29scy5SZWFjdFF1ZXJ5RGV2dG9vbHNcblxuZXhwb3J0IGNvbnN0IFJlYWN0UXVlcnlEZXZ0b29sc1BhbmVsOiAodHlwZW9mIERldnRvb2xzUGFuZWwpWydSZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbCddID1cbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdkZXZlbG9wbWVudCdcbiAgICA/IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cbiAgICA6IERldnRvb2xzUGFuZWwuUmVhY3RRdWVyeURldnRvb2xzUGFuZWxcbiIsICJpbXBvcnQgeyBUb2FzdGVyIGFzIFNvbm5lciB9IGZyb20gXCJzb25uZXJcIjtcblxuLy8gaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tIFwiQC91aS9zdHVkaW8vdXRpbC90aGVtZS1wcm92aWRlclwiO1xuXG50eXBlIFRvYXN0ZXJQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBTb25uZXI+O1xuXG5jb25zdCBUb2FzdGVyID0gKHsgLi4ucHJvcHMgfTogVG9hc3RlclByb3BzKSA9PiB7XG4gIC8vIGNvbnN0IHsgdGhlbWUgPSBcInN5c3RlbVwiIH0gPSB1c2VUaGVtZSgpO1xuXG4gIHJldHVybiAoXG4gICAgPFNvbm5lclxuICAgICAgLy8gdGhlbWU9e3RoZW1lIGFzIFRvYXN0ZXJQcm9wc1tcInRoZW1lXCJdfVxuICAgICAgY2xhc3NOYW1lPVwicHMtdG9hc3RlciBwcy1ncm91cFwiXG4gICAgICB0b2FzdE9wdGlvbnM9e3tcbiAgICAgICAgY2xhc3NOYW1lczoge1xuICAgICAgICAgIHRvYXN0OlxuICAgICAgICAgICAgXCJncm91cCB0b2FzdCBncm91cC1bLnRvYXN0ZXJdOmJnLWJhY2tncm91bmQgZ3JvdXAtWy50b2FzdGVyXTp0ZXh0LWZvcmVncm91bmQgZ3JvdXAtWy50b2FzdGVyXTpib3JkZXItYm9yZGVyIGdyb3VwLVsudG9hc3Rlcl06c2hhZG93LWxnXCIsXG4gICAgICAgICAgZGVzY3JpcHRpb246IFwiZ3JvdXAtWy50b2FzdF06dGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsXG4gICAgICAgICAgYWN0aW9uQnV0dG9uOiBcImdyb3VwLVsudG9hc3RdOmJnLXByaW1hcnkgZ3JvdXAtWy50b2FzdF06dGV4dC1wcmltYXJ5LWZvcmVncm91bmRcIixcbiAgICAgICAgICBjYW5jZWxCdXR0b246IFwiZ3JvdXAtWy50b2FzdF06YmctbXV0ZWQgZ3JvdXAtWy50b2FzdF06dGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsXG4gICAgICAgIH0sXG4gICAgICB9fVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICk7XG59O1xuXG5leHBvcnQgeyBUb2FzdGVyIH07XG4iLCAiaW1wb3J0IHtcbiAgdW5zdGFibGVfQWRhcHRlck9wdGlvbnMgYXMgQWRhcHRlck9wdGlvbnMsXG4gIHVuc3RhYmxlX2NyZWF0ZUFkYXB0ZXJQcm92aWRlciBhcyBjcmVhdGVBZGFwdGVyUHJvdmlkZXIsXG59IGZyb20gXCJudXFzL2FkYXB0ZXJzL2N1c3RvbVwiO1xuaW1wb3J0IHsgRkMsIHR5cGUgUHJvcHNXaXRoQ2hpbGRyZW4sIHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmV4cG9ydCB0eXBlIHsgZGVmYXVsdCB9IGZyb20gXCJyZWFjdFwiO1xuXG4vKipcbiAqIEhvb2sgdGhhdCBOdXFzIHdpbGwgY2FsbCB0byByZWFkICYgd3JpdGUgVVJMIHN0YXRlLlxuICovXG5mdW5jdGlvbiB1c2VIYXNoQWRhcHRlcigpIHtcbiAgY29uc3QgcmF3SGFzaCA9IHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3cubG9jYXRpb24uaGFzaC5zbGljZSgxKSA6IFwiXCI7XG4gIGNvbnN0IFtoYXNoUGFyYW1zLCBzZXRIYXNoUGFyYW1zXSA9IHVzZVN0YXRlKG5ldyBVUkxTZWFyY2hQYXJhbXMocmF3SGFzaCkpO1xuXG4gIC8vIHdyaXRlIG5ldyBzdGF0ZSBiYWNrIGludG8gdGhlIGhhc2ggZnJhZ21lbnRcbiAgZnVuY3Rpb24gdXBkYXRlVXJsKHVwZGF0ZWQ6IFVSTFNlYXJjaFBhcmFtcywgeyBoaXN0b3J5IH06IEFkYXB0ZXJPcHRpb25zKSB7XG4gICAgY29uc3QgeyBwYXRobmFtZSwgc2VhcmNoIH0gPSB3aW5kb3cubG9jYXRpb247XG4gICAgY29uc3QgaGFzaCA9IHVwZGF0ZWQudG9TdHJpbmcoKTtcbiAgICBjb25zdCB1cmwgPSBgJHtwYXRobmFtZX0ke3NlYXJjaH0jJHtoYXNofWA7XG5cbiAgICBpZiAoaGlzdG9yeSA9PT0gXCJwdXNoXCIpIHtcbiAgICAgIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZShudWxsLCBcIlwiLCB1cmwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwgXCJcIiwgdXJsKTtcbiAgICB9XG5cbiAgICBzZXRIYXNoUGFyYW1zKHVwZGF0ZWQpO1xuICB9XG5cbiAgLy8gZXhwb3NlIGEgc25hcHNob3Qgb2YgdGhlIGN1cnJlbnQgcGFyYW1zXG4gIGZ1bmN0aW9uIGdldFNlYXJjaFBhcmFtc1NuYXBzaG90KCkge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICByZXR1cm4gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgIH1cbiAgICBjb25zdCByYXcgPSB3aW5kb3cubG9jYXRpb24uaGFzaC5zbGljZSgxKTtcblxuICAgIHJldHVybiBuZXcgVVJMU2VhcmNoUGFyYW1zKHJhdyk7XG4gIH1cblxuICAvLyBzeW5jIHN0YXRlIHdoZW4gdXNlciBuYXZpZ2F0ZXMgdmlhIGJyb3dzZXIgY29udHJvbHMgb3IgZXh0ZXJuYWwgc2NyaXB0XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZnVuY3Rpb24gaGFuZGxlSGFzaENoYW5nZSgpIHtcbiAgICAgIGNvbnN0IHJhd0hhc2ggPSB3aW5kb3cubG9jYXRpb24uaGFzaC5zbGljZSgxKTtcbiAgICAgIHNldEhhc2hQYXJhbXMobmV3IFVSTFNlYXJjaFBhcmFtcyhyYXdIYXNoKSk7XG4gICAgfVxuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJoYXNoY2hhbmdlXCIsIGhhbmRsZUhhc2hDaGFuZ2UpO1xuXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiaGFzaGNoYW5nZVwiLCBoYW5kbGVIYXNoQ2hhbmdlKTtcbiAgfSwgW10pO1xuXG4gIHJldHVybiB7IHNlYXJjaFBhcmFtczogaGFzaFBhcmFtcywgdXBkYXRlVXJsLCBnZXRTZWFyY2hQYXJhbXNTbmFwc2hvdCB9O1xufVxuXG4vKipcbiAqIFRoZSBhZGFwdGVyIHByb3ZpZGVyIGNvbXBvbmVudCB5b3Ugd3JhcCB5b3VyIGFwcCBpbi5cbiAqL1xuZXhwb3J0IGNvbnN0IE51cXNIYXNoQWRhcHRlciA9IGNyZWF0ZUFkYXB0ZXJQcm92aWRlcih1c2VIYXNoQWRhcHRlcikgYXMgRkM8UHJvcHNXaXRoQ2hpbGRyZW4+O1xuIiwgImltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyB1c2VRdWVyeVN0YXRlIH0gZnJvbSBcIi4uL2hvb2tzL251cXNcIjtcbmltcG9ydCB7IHVzZUludHJvc3BlY3Rpb24gfSBmcm9tIFwiLi4vaG9va3MvdXNlLWludHJvc3BlY3Rpb25cIjtcblxuZXhwb3J0IGZ1bmN0aW9uIFVSTERlZmF1bHRzSGFuZGxlcigpIHtcbiAgY29uc3QgW190YWJsZSwgc2V0VGFibGVdID0gdXNlUXVlcnlTdGF0ZShcInRhYmxlXCIpO1xuICBjb25zdCBbX3NjaGVtYSwgc2V0U2NoZW1hXSA9IHVzZVF1ZXJ5U3RhdGUoXCJzY2hlbWFcIik7XG4gIGNvbnN0IFtfdmlldywgc2V0Vmlld10gPSB1c2VRdWVyeVN0YXRlKFwidmlld1wiKTtcblxuICBjb25zdCB7IGRhdGE6IGludHJvc3BlY3Rpb24sIGlzTG9hZGluZzogaXNJbnRyb3NwZWN0aW9uTG9hZGluZyB9ID0gdXNlSW50cm9zcGVjdGlvbigpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzSW50cm9zcGVjdGlvbkxvYWRpbmcgfHwgIWludHJvc3BlY3Rpb24/LnNjaGVtYXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpc1RhYmxlU2V0ID0gX3RhYmxlICE9PSBudWxsO1xuICAgIGNvbnN0IGlzU2NoZW1hU2V0ID0gX3NjaGVtYSAhPT0gbnVsbDtcbiAgICBjb25zdCBpc1ZpZXdTZXQgPSBfdmlldyAhPT0gbnVsbDtcblxuICAgIGlmICghaXNUYWJsZVNldCAmJiAhaXNTY2hlbWFTZXQgJiYgIWlzVmlld1NldCkge1xuICAgICAgY29uc3QgZmlyc3RTY2hlbWFOYW1lID0gT2JqZWN0LmtleXMoaW50cm9zcGVjdGlvbi5zY2hlbWFzKVswXTtcbiAgICAgIGlmIChmaXJzdFNjaGVtYU5hbWUpIHtcbiAgICAgICAgY29uc3QgZmlyc3RUYWJsZSA9IGludHJvc3BlY3Rpb24uc2NoZW1hc1tmaXJzdFNjaGVtYU5hbWVdPy50YWJsZXNbMF07XG4gICAgICAgIGlmIChmaXJzdFRhYmxlKSB7XG4gICAgICAgICAgdm9pZCBzZXRUYWJsZShmaXJzdFRhYmxlLm5hbWUpO1xuICAgICAgICAgIHZvaWQgc2V0U2NoZW1hKGZpcnN0U2NoZW1hTmFtZSk7XG4gICAgICAgICAgdm9pZCBzZXRWaWV3KFwidGFibGVcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzVGFibGVTZXQgJiYgaXNTY2hlbWFTZXQgJiYgIWlzVmlld1NldCkge1xuICAgICAgdm9pZCBzZXRWaWV3KFwidGFibGVcIik7XG4gICAgfVxuICB9LCBbaXNJbnRyb3NwZWN0aW9uTG9hZGluZywgaW50cm9zcGVjdGlvbiwgc2V0VGFibGUsIHNldFNjaGVtYSwgc2V0VmlldywgX3RhYmxlLCBfc2NoZW1hLCBfdmlld10pO1xuXG4gIHJldHVybiBudWxsO1xufVxuIiwgImltcG9ydCB7IHVzZVF1ZXJ5IH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuXG5pbXBvcnQgdHlwZSB7IEludHJvc3BlY3Rpb24gfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcblxuZXhwb3J0IGNvbnN0IElOSVRJQUxfREFUQV9VUERBVEVEX0FUID0gLTE7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VJbnRyb3NwZWN0aW9uKCkge1xuICBjb25zdCB7IGFkYXB0ZXIgfSA9IHVzZVN0dWRpbygpO1xuXG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgaW5pdGlhbERhdGE6IHtcbiAgICAgIHNjaGVtYXM6IHtcbiAgICAgICAgW2FkYXB0ZXIuZGVmYXVsdFNjaGVtYSB8fCBcImRiXCJdOiB7XG4gICAgICAgICAgdGFibGVzOiB7fSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB0aW1lem9uZTogXCJVVENcIixcbiAgICAgIGZpbHRlck9wZXJhdG9yczogW10sXG4gICAgfSBzYXRpc2ZpZXMgSW50cm9zcGVjdGlvbixcbiAgICBpbml0aWFsRGF0YVVwZGF0ZWRBdDogSU5JVElBTF9EQVRBX1VQREFURURfQVQsXG4gICAgcXVlcnlGbjogYXN5bmMgKHsgc2lnbmFsIH0pID0+IHtcbiAgICAgIGNvbnN0IFtlcnJvciwgaW50cm9zcGVjdGlvbl0gPSBhd2FpdCBhZGFwdGVyLmludHJvc3BlY3QoeyBhYm9ydFNpZ25hbDogc2lnbmFsIH0pO1xuXG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbnRyb3NwZWN0aW9uO1xuICAgIH0sXG4gICAgcXVlcnlLZXk6IFtcImludHJvc3BlY3Rpb25cIl0sXG4gICAgLy8gaWYgaXMgaW5pdGlhbCBkYXRhLCByZWZldGNoIGltbWVkaWF0ZWx5LCBvdGhlcndpc2UsIG5ldmVyIHJlZmV0Y2ggYXV0b21hdGljYWxseSBpbiB0aGUgYmFja2dyb3VuZC5cbiAgICAvLyB3ZSBjYW4gc3RpbGwgcmVmZXRjaCBtYW51YWxseSB1c2luZyB0aGUgcXVlcnkgY2xpZW50IC0gcHJvYmFibHkgdHJpZ2dlcmVkIGJ5IGEgYnV0dG9uLlxuICAgIHN0YWxlVGltZTogKGN0eCkgPT4gKGN0eC5zdGF0ZS5kYXRhVXBkYXRlZEF0ID09PSBJTklUSUFMX0RBVEFfVVBEQVRFRF9BVCA/IDAgOiBJbmZpbml0eSksXG4gIH0pO1xufVxuIiwgImltcG9ydCB7IGluZmVyUm93RmlsdGVyLCBUYWJsZSB9IGZyb20gXCJAL2RhdGFcIjtcblxuZnVuY3Rpb24gZ2V0Um93SWQocm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdGFibGU6IFRhYmxlKSB7XG4gIGNvbnN0IGlkID0ge1xuICAgIGZpbHRlcjogaW5mZXJSb3dGaWx0ZXIocm93LCB0YWJsZS5jb2x1bW5zKSxcbiAgICB0YWJsZTogYCR7dGFibGUuc2NoZW1hfS4ke3RhYmxlLm5hbWV9YCxcbiAgfTtcblxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoaWQpO1xufVxuXG5mdW5jdGlvbiBhZGRSb3dJZFRvUm93KHJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHRhYmxlOiBUYWJsZSkge1xuICByZXR1cm4geyAuLi5yb3csIF9fcHNfcm93aWQ6IGdldFJvd0lkKHJvdywgdGFibGUpIH07XG59XG5cbnR5cGUgQWRhcHRlclJlc3VsdCA9IHtcbiAgcm93PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHJvd3M/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGFkZFJvd0lkVG9SZXN1bHQ8VCBleHRlbmRzIEFkYXB0ZXJSZXN1bHQ+KHJlc3VsdDogVCwgdGFibGU6IFRhYmxlKSB7XG4gIGNvbnN0IHsgcm93LCByb3dzIH0gPSByZXN1bHQ7XG5cbiAgaWYgKHJvdyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHsgLi4ucmVzdWx0LCByb3c6IGFkZFJvd0lkVG9Sb3cocm93LCB0YWJsZSkgfTtcbiAgfVxuICBpZiAocm93cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHsgLi4ucmVzdWx0LCByb3dzOiByb3dzLm1hcCgocm93KSA9PiBhZGRSb3dJZFRvUm93KHJvdywgdGFibGUpKSB9O1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiIsICJpbXBvcnQgeyB1c2VRdWVyeSB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcblxuaW1wb3J0IHR5cGUgeyBBZGFwdGVyUXVlcnlSZXN1bHQsIEZpbHRlckdyb3VwLCBTb3J0T3JkZXJJdGVtIH0gZnJvbSBcIi4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4uL3N0dWRpby9jb250ZXh0XCI7XG5pbXBvcnQgeyBhZGRSb3dJZFRvUmVzdWx0IH0gZnJvbSBcIi4vdXRpbHMvYWRkLXJvdy1pZC10by1yZXN1bHRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBVc2VBY3RpdmVUYWJsZVF1ZXJ5UHJvcHMge1xuICBwYWdlSW5kZXg6IG51bWJlcjtcbiAgcGFnZVNpemU6IG51bWJlcjtcbiAgc29ydE9yZGVyOiBTb3J0T3JkZXJJdGVtW107XG4gIGZpbHRlcjogRmlsdGVyR3JvdXA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VBY3RpdmVUYWJsZVF1ZXJ5KHByb3BzOiBVc2VBY3RpdmVUYWJsZVF1ZXJ5UHJvcHMpIHtcbiAgY29uc3QgeyBwYWdlSW5kZXgsIHBhZ2VTaXplLCBzb3J0T3JkZXIsIGZpbHRlciB9ID0gcHJvcHM7XG5cbiAgY29uc3QgeyBhY3RpdmVUYWJsZSwgYWRhcHRlciB9ID0gdXNlU3R1ZGlvKCk7XG5cbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBlbmFibGVkOiBCb29sZWFuKGFjdGl2ZVRhYmxlKSxcbiAgICBnY1RpbWU6IDAsXG4gICAgcGxhY2Vob2xkZXJEYXRhKHByZXZpb3VzRGF0YTogQWRhcHRlclF1ZXJ5UmVzdWx0IHwgdW5kZWZpbmVkLCBwcmV2aW91c1F1ZXJ5KSB7XG4gICAgICBjb25zdCBbLCBzY2hlbWEsICwgdGFibGVdID0gcHJldmlvdXNRdWVyeT8ucXVlcnlLZXkgfHwgW107XG5cbiAgICAgIGlmIChzY2hlbWEgIT09IGFjdGl2ZVRhYmxlPy5zY2hlbWEgfHwgdGFibGUgIT09IGFjdGl2ZVRhYmxlPy5uYW1lKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHByZXZpb3VzRGF0YTtcbiAgICB9LFxuICAgIGFzeW5jIHF1ZXJ5Rm4oeyBzaWduYWwgfSkge1xuICAgICAgY29uc3QgW2Vycm9yLCByZXN1bHRzXSA9IGF3YWl0IGFkYXB0ZXIucXVlcnkoXG4gICAgICAgIHsgcGFnZUluZGV4LCBwYWdlU2l6ZSwgc29ydE9yZGVyLCB0YWJsZTogYWN0aXZlVGFibGUhLCBmaWx0ZXIgfSxcbiAgICAgICAgeyBhYm9ydFNpZ25hbDogc2lnbmFsIH0sXG4gICAgICApO1xuXG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhZGRSb3dJZFRvUmVzdWx0KHJlc3VsdHMsIGFjdGl2ZVRhYmxlISk7XG4gICAgfSxcbiAgICBxdWVyeUtleTogW1xuICAgICAgXCJzY2hlbWFcIixcbiAgICAgIGFjdGl2ZVRhYmxlPy5zY2hlbWEgfHwgbnVsbCxcbiAgICAgIFwidGFibGVcIixcbiAgICAgIGFjdGl2ZVRhYmxlPy5uYW1lIHx8IG51bGwsXG4gICAgICBcInF1ZXJ5XCIsXG4gICAgICBcInNvcnRPcmRlclwiLFxuICAgICAgc29ydE9yZGVyLm1hcCgoaXRlbSkgPT4gYCR7aXRlbS5jb2x1bW59OiR7aXRlbS5kaXJlY3Rpb259YCkuam9pbihcIixcIikgfHwgXCJuYXR1cmFsXCIsXG4gICAgICBcInBhZ2VJbmRleFwiLFxuICAgICAgcGFnZUluZGV4LFxuICAgICAgXCJwYWdlU2l6ZVwiLFxuICAgICAgcGFnZVNpemUsXG4gICAgICBcImZpbHRlclwiLFxuICAgICAgSlNPTi5zdHJpbmdpZnkoZmlsdGVyKSxcbiAgICBdLFxuICAgIHN0YWxlVGltZTogSW5maW5pdHksXG4gIH0pO1xufVxuIiwgImltcG9ydCB7IHR5cGUgUXVlcnlDbGllbnQsIHVzZU11dGF0aW9uLCB1c2VRdWVyeUNsaWVudCB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcblxuaW1wb3J0IHR5cGUgeyBBZGFwdGVyUXVlcnlSZXN1bHQsIEFkYXB0ZXJVcGRhdGVEZXRhaWxzLCBBZGFwdGVyVXBkYXRlT3B0aW9ucywgVGFibGUgfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBpbmZlclJvd0ZpbHRlciB9IGZyb20gXCIuLi8uLi9kYXRhL3F1ZXJ5XCI7XG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBVc2VBY3RpdmVUYWJsZVVwZGF0ZVBhcmFtcyB7XG4gIGRldGFpbHM6IEFkYXB0ZXJVcGRhdGVEZXRhaWxzO1xuICBvcHRpb25zOiBBZGFwdGVyVXBkYXRlT3B0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUFjdGl2ZVRhYmxlVXBkYXRlKCkge1xuICBjb25zdCB7IGFjdGl2ZVRhYmxlLCBhZGFwdGVyLCBvbkVycm9yIH0gPSB1c2VTdHVkaW8oKTtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIGNvbnN0IHF1ZXJ5S2V5UHJlZml4ID0gW1wic2NoZW1hXCIsIGFjdGl2ZVRhYmxlPy5zY2hlbWEgPz8gbnVsbCwgXCJ0YWJsZVwiLCBhY3RpdmVUYWJsZT8ubmFtZSA/PyBudWxsXSBhcyBjb25zdDtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jIChwYXJhbXM6IFVzZUFjdGl2ZVRhYmxlVXBkYXRlUGFyYW1zKSA9PiB7XG4gICAgICBjb25zdCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCBhZGFwdGVyLnVwZGF0ZShwYXJhbXMuZGV0YWlscywgcGFyYW1zLm9wdGlvbnMpO1xuXG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSxcbiAgICBtdXRhdGlvbktleTogWy4uLnF1ZXJ5S2V5UHJlZml4LCBcInVwZGF0ZVwiXSxcbiAgICBvbkVycm9yKGVycm9yLCBwYXJhbXMpIHtcbiAgICAgIGNvbnN0IHsgY2hhbmdlcywgcm93IH0gPSBwYXJhbXMuZGV0YWlscztcblxuICAgICAgb25FcnJvcihlcnJvcik7XG5cbiAgICAgIG92ZXJ3cml0ZUNhY2hlZFJvdyh7XG4gICAgICAgIGdldEZpbmRlckZuKCkge1xuICAgICAgICAgIGNvbnN0IGNoYW5nZWRSb3cgPSB7IC4uLnJvdywgLi4uY2hhbmdlcyB9O1xuXG4gICAgICAgICAgY29uc3Qgcm93RmlsdGVyID0gaW5mZXJSb3dGaWx0ZXIoY2hhbmdlZFJvdywgYWN0aXZlVGFibGUhLmNvbHVtbnMpO1xuXG4gICAgICAgICAgcmV0dXJuIChjYWNoZWRSb3cpID0+IHJvd0ZpbHRlci5ldmVyeSgoW2NvbHVtbk5hbWUsIHZhbHVlXSkgPT4gY2FjaGVkUm93W2NvbHVtbk5hbWVdID09PSB2YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIHF1ZXJ5Q2xpZW50LFxuICAgICAgICB0YWJsZTogYWN0aXZlVGFibGUhLFxuICAgICAgICB1cGRhdGVyRm46IGZ1bmN0aW9uIHJldmVydENoYW5nZXMoY2FjaGVkUm93KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmNhY2hlZFJvdyxcbiAgICAgICAgICAgIC4uLk9iamVjdC5rZXlzKGNoYW5nZXMpLnJlZHVjZShcbiAgICAgICAgICAgICAgKG9yaWdpbmFsVmFsdWVzLCBjb2x1bW5OYW1lKSA9PiAoeyAuLi5vcmlnaW5hbFZhbHVlcywgW2NvbHVtbk5hbWVdOiByb3dbY29sdW1uTmFtZV0gfSksXG4gICAgICAgICAgICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBvbk11dGF0ZShwYXJhbXMpIHtcbiAgICAgIGNvbnN0IHsgZGV0YWlscyB9ID0gcGFyYW1zO1xuXG4gICAgICBvdmVyd3JpdGVDYWNoZWRSb3coe1xuICAgICAgICBnZXRGaW5kZXJGbigpIHtcbiAgICAgICAgICBjb25zdCB7IHJvdzogdW5jaGFuZ2VkUm93IH0gPSBkZXRhaWxzO1xuXG4gICAgICAgICAgY29uc3Qgcm93RmlsdGVyID0gaW5mZXJSb3dGaWx0ZXIodW5jaGFuZ2VkUm93LCBhY3RpdmVUYWJsZSEuY29sdW1ucyk7XG5cbiAgICAgICAgICByZXR1cm4gKGNhY2hlZFJvdykgPT4gcm93RmlsdGVyLmV2ZXJ5KChbY29sdW1uTmFtZSwgdmFsdWVdKSA9PiBjYWNoZWRSb3dbY29sdW1uTmFtZV0gPT09IHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgcXVlcnlDbGllbnQsXG4gICAgICAgIHRhYmxlOiBhY3RpdmVUYWJsZSEsXG4gICAgICAgIHVwZGF0ZXJGbjogZnVuY3Rpb24gYXBwbHlDaGFuZ2VzKGNhY2hlZFJvdykge1xuICAgICAgICAgIHJldHVybiB7IC4uLmNhY2hlZFJvdywgLi4uZGV0YWlscy5jaGFuZ2VzIH07XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9LFxuICAgIG9uU3VjY2VzcyhyZXN1bHQsIHBhcmFtcykge1xuICAgICAgb3ZlcndyaXRlQ2FjaGVkUm93KHtcbiAgICAgICAgZ2V0RmluZGVyRm4oKSB7XG4gICAgICAgICAgY29uc3QgeyBjaGFuZ2VzLCByb3cgfSA9IHBhcmFtcy5kZXRhaWxzO1xuXG4gICAgICAgICAgY29uc3QgY2hhbmdlZFJvdyA9IHsgLi4ucm93LCAuLi5jaGFuZ2VzIH07XG5cbiAgICAgICAgICBjb25zdCByb3dGaWx0ZXIgPSBpbmZlclJvd0ZpbHRlcihjaGFuZ2VkUm93LCBhY3RpdmVUYWJsZSEuY29sdW1ucyk7XG5cbiAgICAgICAgICByZXR1cm4gKGNhY2hlZFJvdykgPT4gcm93RmlsdGVyLmV2ZXJ5KChbY29sdW1uTmFtZSwgdmFsdWVdKSA9PiBjYWNoZWRSb3dbY29sdW1uTmFtZV0gPT09IHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgcXVlcnlDbGllbnQsXG4gICAgICAgIHRhYmxlOiBhY3RpdmVUYWJsZSEsXG4gICAgICAgIHVwZGF0ZXJGbjogZnVuY3Rpb24gYXBwbHlSZWFsRGF0YVdoZW5GcmVzaGVyKGNhY2hlZFJvdykge1xuICAgICAgICAgIGNvbnN0IHsgX19wc191cGRhdGVkX2F0X18gfSA9IGNhY2hlZFJvdztcbiAgICAgICAgICBjb25zdCB7IHJvdyB9ID0gcmVzdWx0O1xuXG4gICAgICAgICAgLy8gcmVzdWx0IHJvdyBpcyBzdGFsZS5cbiAgICAgICAgICBpZiAoX19wc191cGRhdGVkX2F0X18gIT0gbnVsbCAmJiByb3cuX19wc191cGRhdGVkX2F0X18gPD0gX19wc191cGRhdGVkX2F0X18pIHtcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRSb3c7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHsgLi4uY2FjaGVkUm93LCAuLi5yb3cgfTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgcmV0cnk6IGZhbHNlLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gb3ZlcndyaXRlQ2FjaGVkUm93KHBhcmFtczoge1xuICBnZXRGaW5kZXJGbjogKCkgPT4gKGNhY2hlZFJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IGJvb2xlYW47XG4gIHRhYmxlOiBUYWJsZTtcbiAgdXBkYXRlckZuOiAoY2FjaGVkUm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHF1ZXJ5Q2xpZW50OiBRdWVyeUNsaWVudDtcbn0pIHtcbiAgY29uc3QgeyBnZXRGaW5kZXJGbiwgcXVlcnlDbGllbnQsIHRhYmxlLCB1cGRhdGVyRm4gfSA9IHBhcmFtcztcblxuICBsZXQgZmluZGVyOiBSZXR1cm5UeXBlPHR5cGVvZiBnZXRGaW5kZXJGbj47XG5cbiAgcXVlcnlDbGllbnQuc2V0UXVlcmllc0RhdGEoXG4gICAgeyBleGFjdDogZmFsc2UsIHF1ZXJ5S2V5OiBbXCJzY2hlbWFcIiwgdGFibGUuc2NoZW1hLCBcInRhYmxlXCIsIHRhYmxlLm5hbWUsIFwicXVlcnlcIl0gfSxcbiAgICAoY2FjaGVkUmVzdWx0OiBBZGFwdGVyUXVlcnlSZXN1bHQgfCB1bmRlZmluZWQpOiBBZGFwdGVyUXVlcnlSZXN1bHQgfCB1bmRlZmluZWQgPT4ge1xuICAgICAgY29uc3QgeyByb3dzOiBjYWNoZWRSb3dzID0gW10gfSA9IGNhY2hlZFJlc3VsdCB8fCB7fTtcblxuICAgICAgaWYgKGNhY2hlZFJvd3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRSZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNhY2hlZFJvd0luZGV4ID0gY2FjaGVkUm93cy5maW5kSW5kZXgoKGZpbmRlciA/Pz0gZ2V0RmluZGVyRm4oKSkpO1xuXG4gICAgICBpZiAoY2FjaGVkUm93SW5kZXggPT09IC0xKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRSZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5ld1JvdyA9IHVwZGF0ZXJGbihjYWNoZWRSb3dzW2NhY2hlZFJvd0luZGV4XSEpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5jYWNoZWRSZXN1bHQhLFxuICAgICAgICByb3dzOiBbLi4uY2FjaGVkUm93cy5zbGljZSgwLCBjYWNoZWRSb3dJbmRleCksIG5ld1JvdywgLi4uY2FjaGVkUm93cy5zbGljZShjYWNoZWRSb3dJbmRleCArIDEpXSxcbiAgICAgIH07XG4gICAgfSxcbiAgKTtcbn1cbiIsICJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgc2hvcnQgZnJvbSBcInNob3J0LXV1aWRcIjtcblxuaW1wb3J0IHR5cGUgeyBGaWx0ZXJHcm91cCB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IHVzZVF1ZXJ5U3RhdGUgfSBmcm9tIFwiLi9udXFzXCI7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0RmlsdGVyOiBGaWx0ZXJHcm91cCA9IHtcbiAga2luZDogXCJGaWx0ZXJHcm91cFwiLFxuICBmaWx0ZXJzOiBbXSxcbiAgYWZ0ZXI6IFwiYW5kXCIsXG4gIGlkOiBzaG9ydC5nZW5lcmF0ZSgpLFxufTtcblxuY29uc3QgY291bnRGaWx0ZXJzUmVjdXJzaXZlID0gKGZpbHRlckdyb3VwOiBGaWx0ZXJHcm91cCk6IG51bWJlciA9PiB7XG4gIGxldCBjb3VudCA9IDA7XG4gIGZvciAoY29uc3QgZmlsdGVyIG9mIGZpbHRlckdyb3VwLmZpbHRlcnMpIHtcbiAgICBpZiAoZmlsdGVyLmtpbmQgPT09IFwiQ29sdW1uRmlsdGVyXCIpIHtcbiAgICAgIC8vIE9ubHkgY291bnQgZmlsdGVycyB0aGF0IGhhdmUgYSBub24tZW1wdHkgY29sdW1uIHNlbGVjdGVkXG4gICAgICBpZiAoZmlsdGVyLmNvbHVtbi50cmltKCkpIHtcbiAgICAgICAgY291bnQrKztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGZpbHRlci5raW5kID09PSBcIkZpbHRlckdyb3VwXCIpIHtcbiAgICAgIGNvdW50ICs9IGNvdW50RmlsdGVyc1JlY3Vyc2l2ZShmaWx0ZXIpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY291bnQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlRmlsdGVyaW5nKCkge1xuICBjb25zdCBbZmlsdGVyUGFyYW0sIHNldEZpbHRlclBhcmFtXSA9IHVzZVF1ZXJ5U3RhdGUoXCJmaWx0ZXJcIiwge1xuICAgIGRlZmF1bHRWYWx1ZTogSlNPTi5zdHJpbmdpZnkoZGVmYXVsdEZpbHRlciksXG4gIH0pO1xuXG4gIGNvbnN0IGFwcGxpZWRGaWx0ZXIgPSB1c2VNZW1vKCgpID0+IEpTT04ucGFyc2UoZmlsdGVyUGFyYW0pIGFzIEZpbHRlckdyb3VwLCBbZmlsdGVyUGFyYW1dKTtcbiAgY29uc3Qgc2V0QXBwbGllZEZpbHRlciA9IChmaWx0ZXI6IEZpbHRlckdyb3VwKSA9PiB2b2lkIHNldEZpbHRlclBhcmFtKEpTT04uc3RyaW5naWZ5KGZpbHRlcikpO1xuXG4gIGNvbnN0IFtlZGl0aW5nRmlsdGVyLCBzZXRFZGl0aW5nRmlsdGVyXSA9IHVzZVN0YXRlPEZpbHRlckdyb3VwPihhcHBsaWVkRmlsdGVyKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldEVkaXRpbmdGaWx0ZXIoYXBwbGllZEZpbHRlcik7XG4gIH0sIFthcHBsaWVkRmlsdGVyXSk7XG5cbiAgY29uc3QgdG90YWxFZGl0aW5nRmlsdGVycyA9IHVzZU1lbW8oKCkgPT4gY291bnRGaWx0ZXJzUmVjdXJzaXZlKGVkaXRpbmdGaWx0ZXIpLCBbZWRpdGluZ0ZpbHRlcl0pO1xuXG4gIHJldHVybiB7XG4gICAgYXBwbGllZEZpbHRlcixcbiAgICBzZXRBcHBsaWVkRmlsdGVyLFxuICAgIGVkaXRpbmdGaWx0ZXIsXG4gICAgc2V0RWRpdGluZ0ZpbHRlcixcbiAgICB0b3RhbEVkaXRpbmdGaWx0ZXJzLFxuICB9O1xufVxuIiwgImltcG9ydCB7IHVzZUlzTXV0YXRpbmcgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5cbi8qKlxuICogSG9vayB0byBrbm93IHdoZXRoZXIgYW4gaW5zZXJ0IGlzIGN1cnJlbnRseSBvbmdvaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlSXNJbnNlcnRpbmcoKSB7XG4gIHJldHVybiB1c2VJc011dGF0aW5nKHtcbiAgICBwcmVkaWNhdGUoeyBvcHRpb25zOiB7IG11dGF0aW9uS2V5IH0gfSkge1xuICAgICAgcmV0dXJuIG11dGF0aW9uS2V5Py5bNF0gPT09IFwiaW5zZXJ0XCI7XG4gICAgfSxcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBPbkNoYW5nZUZuLCBQYWdpbmF0aW9uU3RhdGUgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjayB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBrZXlNYXAsIHBhcnNlQXNJbmRleCwgcGFyc2VBc0ludGVnZXIsIHVzZVF1ZXJ5U3RhdGVzIH0gZnJvbSBcIi4vbnVxc1wiO1xuXG4vLyBUT0RPOiBldmVudHVhbGx5IGNvbmZpZ3VyYWJsZSAvIGNvbnRyb2xsZWQgYnkgdXNlci4gYmFieSBzdGVwcy4uXG5jb25zdCBERUZBVUxUX1BBR0VfU0laRSA9IDI1O1xuXG5jb25zdCBwYWdpbmF0aW9uUGFyc2VycyA9IGtleU1hcCh7XG4gIHBhZ2VJbmRleDogcGFyc2VBc0luZGV4LndpdGhEZWZhdWx0KDApLCAvLyB6ZXJvLWJhc2VkXG4gIHBhZ2VTaXplOiBwYXJzZUFzSW50ZWdlci53aXRoRGVmYXVsdChERUZBVUxUX1BBR0VfU0laRSksXG59KTtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVBhZ2luYXRpb24oKSB7XG4gIGNvbnN0IFt7IHBhZ2VJbmRleCwgcGFnZVNpemUgfSwgc2V0UGFnaW5hdGlvbl0gPSB1c2VRdWVyeVN0YXRlcyhwYWdpbmF0aW9uUGFyc2Vycyk7XG5cbiAgLy8gQ29tcGF0aWJsZSB3aXRoIFRhblN0YWNrIFRhYmxlJ3MgT25DaGFuZ2VGbjxQYWdpbmF0aW9uU3RhdGU+XG4gIGNvbnN0IHNldFBhZ2luYXRpb25TdGF0ZTogT25DaGFuZ2VGbjxQYWdpbmF0aW9uU3RhdGU+ID0gdXNlQ2FsbGJhY2soXG4gICAgKHVwZGF0ZXJPclZhbHVlKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHVwZGF0ZXJPclZhbHVlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgdm9pZCBzZXRQYWdpbmF0aW9uKChvbGQpID0+IHtcbiAgICAgICAgICBjb25zdCBuZXdTdGF0ZSA9IHVwZGF0ZXJPclZhbHVlKG9sZCk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHBhZ2VJbmRleDogbmV3U3RhdGUucGFnZUluZGV4LFxuICAgICAgICAgICAgcGFnZVNpemU6IG5ld1N0YXRlLnBhZ2VTaXplLFxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdm9pZCBzZXRQYWdpbmF0aW9uKHtcbiAgICAgICAgICBwYWdlSW5kZXg6IHVwZGF0ZXJPclZhbHVlLnBhZ2VJbmRleCxcbiAgICAgICAgICBwYWdlU2l6ZTogdXBkYXRlck9yVmFsdWUucGFnZVNpemUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgW3NldFBhZ2luYXRpb25dLFxuICApO1xuXG4gIHJldHVybiB7XG4gICAgcGFnaW5hdGlvblN0YXRlOiB7IHBhZ2VJbmRleCwgcGFnZVNpemUgfSxcbiAgICBzZXRQYWdpbmF0aW9uU3RhdGUsXG4gIH07XG59XG4iLCAiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBBZGFwdGVyUXVlcnlSZXN1bHQgfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuLi9zdHVkaW8vY29udGV4dFwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGVEZWxldGUgfSBmcm9tIFwiLi91c2UtYWN0aXZlLXRhYmxlLWRlbGV0ZVwiO1xuaW1wb3J0IHsgdXNlUGFnaW5hdGlvbiB9IGZyb20gXCIuL3VzZS1wYWdpbmF0aW9uXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VTZWxlY3Rpb24oZGF0YTogQWRhcHRlclF1ZXJ5UmVzdWx0IHwgdW5kZWZpbmVkKSB7XG4gIGNvbnN0IHsgYWN0aXZlVGFibGUsIG9uRXJyb3IgfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCB7IHBhZ2luYXRpb25TdGF0ZSB9ID0gdXNlUGFnaW5hdGlvbigpO1xuICBjb25zdCBbcm93U2VsZWN0aW9uU3RhdGUsIHNldFJvd1NlbGVjdGlvblN0YXRlXSA9IHVzZVN0YXRlPFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+Pih7fSk7XG4gIGNvbnN0IGlzU2VsZWN0aW5nID0gT2JqZWN0LmtleXMocm93U2VsZWN0aW9uU3RhdGUpLmxlbmd0aCAhPT0gMDtcbiAgY29uc3QgeyBtdXRhdGUgfSA9IHVzZUFjdGl2ZVRhYmxlRGVsZXRlKCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHNldFJvd1NlbGVjdGlvblN0YXRlKHt9KSwgW2FjdGl2ZVRhYmxlLCBwYWdpbmF0aW9uU3RhdGUucGFnZUluZGV4XSk7XG5cbiAgZnVuY3Rpb24gZGVsZXRlU2VsZWN0aW9uKCkge1xuICAgIGNvbnN0IHJvd3MgPSBkYXRhPy5yb3dzLmZpbHRlcigocm93KSA9PiB7XG4gICAgICByZXR1cm4gcm93U2VsZWN0aW9uU3RhdGVbcm93Ll9fcHNfcm93aWQgYXMgc3RyaW5nXTtcbiAgICB9KTtcblxuICAgIG11dGF0ZShyb3dzID8/IFtdLCB7XG4gICAgICBvblN1Y2Nlc3MoKSB7XG4gICAgICAgIHNldFJvd1NlbGVjdGlvblN0YXRlKHt9KTtcbiAgICAgIH0sXG4gICAgICBvbkVycm9yLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBkZWxldGVTZWxlY3Rpb24sXG4gICAgc2V0Um93U2VsZWN0aW9uU3RhdGUsXG4gICAgcm93U2VsZWN0aW9uU3RhdGUsXG4gICAgaXNTZWxlY3RpbmcsXG4gIH07XG59XG4iLCAiaW1wb3J0IHsgUXVlcnlLZXksIHVzZU11dGF0aW9uLCB1c2VRdWVyeUNsaWVudCB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcblxuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4uL3N0dWRpby9jb250ZXh0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VBY3RpdmVUYWJsZURlbGV0ZSgpIHtcbiAgY29uc3QgeyBhY3RpdmVUYWJsZSwgYWRhcHRlciB9ID0gdXNlU3R1ZGlvKCk7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcbiAgY29uc3QgeyBzY2hlbWEgPSBudWxsLCBuYW1lOiB0YWJsZSA9IG51bGwgfSA9IGFjdGl2ZVRhYmxlID8/IHt9O1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25LZXk6IFtcInNjaGVtYVwiLCBzY2hlbWEsIFwidGFibGVcIiwgdGFibGUsIFwiZGVsZXRlXCJdLFxuICAgIGFzeW5jIG11dGF0aW9uRm4ocm93czogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSkge1xuICAgICAgY29uc3QgW2Vycm9yLCByZXN1bHRdID0gYXdhaXQgYWRhcHRlci5kZWxldGUoeyByb3dzLCB0YWJsZTogYWN0aXZlVGFibGUhIH0sIHt9KTtcblxuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sXG4gICAgYXN5bmMgb25TdWNjZXNzKCkge1xuICAgICAgYXdhaXQgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoe1xuICAgICAgICBleGFjdDogZmFsc2UsXG4gICAgICAgIHF1ZXJ5S2V5OiBbXCJzY2hlbWFcIiwgc2NoZW1hLCBcInRhYmxlXCIsIHRhYmxlLCBcInF1ZXJ5XCJdIGFzIG5ldmVyIGFzIFF1ZXJ5S2V5LFxuICAgICAgfSk7XG4gICAgfSxcbiAgICByZXRyeTogZmFsc2UsXG4gIH0pO1xufVxuIiwgImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHR5cGUgeyBTb3J0T3JkZXJJdGVtIH0gZnJvbSBcIi4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgdXNlUXVlcnlTdGF0ZSB9IGZyb20gXCIuL251cXNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVNvcnRpbmcoKSB7XG4gIC8vIFVzZSBudXFzIHRvIG1hbmFnZSBzb3J0aW5nIHN0YXRlIGluIFVSTFxuICBjb25zdCBbc29ydFBhcmFtLCBzZXRTb3J0UGFyYW1dID0gdXNlUXVlcnlTdGF0ZShcInNvcnRcIiwge1xuICAgIGRlZmF1bHRWYWx1ZTogXCJcIixcbiAgfSk7XG5cbiAgLy8gUGFyc2Ugc29ydGluZyBmcm9tIFVSTCBwYXJhbWV0ZXJcbiAgY29uc3QgcGFyc2VTb3J0aW5nID0gKHNvcnRQYXJhbTogc3RyaW5nIHwgbnVsbCk6IFNvcnRPcmRlckl0ZW1bXSA9PiB7XG4gICAgaWYgKCFzb3J0UGFyYW0pIHJldHVybiBbXTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBGb3JtYXQ6IGNvbHVtbjpkaXJlY3Rpb24sY29sdW1uOmRpcmVjdGlvblxuICAgICAgcmV0dXJuIHNvcnRQYXJhbVxuICAgICAgICAuc3BsaXQoXCIsXCIpXG4gICAgICAgIC5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICBjb25zdCBbY29sdW1uLCBkaXJlY3Rpb25dID0gaXRlbS5zcGxpdChcIjpcIik7XG4gICAgICAgICAgaWYgKCFjb2x1bW4gfHwgIWRpcmVjdGlvbiB8fCAhW1wiYXNjXCIsIFwiZGVzY1wiXS5pbmNsdWRlcyhkaXJlY3Rpb24pKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHsgY29sdW1uLCBkaXJlY3Rpb246IGRpcmVjdGlvbiBhcyBcImFzY1wiIHwgXCJkZXNjXCIgfTtcbiAgICAgICAgfSlcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKSBhcyBTb3J0T3JkZXJJdGVtW107XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBwYXJzZSBzb3J0aW5nIHBhcmFtZXRlcjpcIiwgZSk7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9O1xuXG4gIC8vIENyZWF0ZSBhIHN0YWJsZSBzb3J0aW5nIHN0YXRlIHRoYXQncyBkZXJpdmVkIGZyb20gVVJMIHBhcmFtZXRlcnNcbiAgY29uc3QgW3NvcnRpbmdTdGF0ZSwgc2V0U29ydGluZ1N0YXRlXSA9IHVzZVN0YXRlKCgpID0+IHBhcnNlU29ydGluZyhzb3J0UGFyYW0pKTtcblxuICAvLyBLZWVwIGludGVybmFsIHN0YXRlIHN5bmNocm9uaXplZCB3aXRoIFVSTCBwYXJhbWV0ZXJzXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgbmV3U29ydGluZ1N0YXRlID0gcGFyc2VTb3J0aW5nKHNvcnRQYXJhbSk7XG4gICAgc2V0U29ydGluZ1N0YXRlKG5ld1NvcnRpbmdTdGF0ZSk7XG4gIH0sIFtzb3J0UGFyYW1dKTtcblxuICAvLyBVcGRhdGUgVVJMIHdoZW4gc29ydGluZyBjaGFuZ2VzIGZyb20gdGhlIFVJXG4gIGNvbnN0IGhhbmRsZVNvcnRpbmdDaGFuZ2UgPSAobmV3U3RhdGU6IFNvcnRPcmRlckl0ZW1bXSB8ICgob2xkOiBTb3J0T3JkZXJJdGVtW10pID0+IFNvcnRPcmRlckl0ZW1bXSkpID0+IHtcbiAgICBjb25zdCByZXNvbHZlZFN0YXRlID0gdHlwZW9mIG5ld1N0YXRlID09PSBcImZ1bmN0aW9uXCIgPyBuZXdTdGF0ZShzb3J0aW5nU3RhdGUpIDogbmV3U3RhdGU7XG4gICAgc2V0U29ydGluZ1N0YXRlKHJlc29sdmVkU3RhdGUpO1xuXG4gICAgLy8gU2VyaWFsaXplIHNvcnRpbmcgc3RhdGUgdG8gVVJMIHBhcmFtZXRlclxuICAgIGNvbnN0IHNvcnRTdHJpbmcgPVxuICAgICAgcmVzb2x2ZWRTdGF0ZS5sZW5ndGggPiAwID8gcmVzb2x2ZWRTdGF0ZS5tYXAoKGl0ZW0pID0+IGAke2l0ZW0uY29sdW1ufToke2l0ZW0uZGlyZWN0aW9ufWApLmpvaW4oXCIsXCIpIDogbnVsbDtcblxuICAgIHZvaWQgc2V0U29ydFBhcmFtKHNvcnRTdHJpbmcpO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgc29ydGluZ1N0YXRlLFxuICAgIHNldFNvcnRpbmdTdGF0ZTogaGFuZGxlU29ydGluZ0NoYW5nZSxcbiAgfTtcbn1cbiIsICJpbXBvcnQgeyBDb3B5IH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0IHsgaXNWYWxpZEVsZW1lbnQsIHR5cGUgUHJvcHNXaXRoQ2hpbGRyZW4sIHR5cGUgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENvbnRleHRNZW51LCBDb250ZXh0TWVudUNvbnRlbnQsIENvbnRleHRNZW51SXRlbSwgQ29udGV4dE1lbnVUcmlnZ2VyIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvY29udGV4dC1tZW51XCI7XG5cbmV4cG9ydCB0eXBlIERhdGFHcmlkQ2VsbENvbnRleHRNZW51UHJvcHMgPSBQcm9wc1dpdGhDaGlsZHJlbjxvYmplY3Q+O1xuXG4vLyBUT0RPOiBUaGlzIG5lZWRzIHRvIGJlIGludmVyc2lmaWVkIC0gdG8gbWFrZSBpdCBleHRlbnNpYmxlLCBhbmQgYWRhcHRhYmxlIHRvIGRpZmZlcmVudCBzaXR1YXRpb25zLlxuZXhwb3J0IGZ1bmN0aW9uIERhdGFHcmlkQ2VsbENvbnRleHRNZW51KHByb3BzOiBEYXRhR3JpZENlbGxDb250ZXh0TWVudVByb3BzKSB7XG4gIGNvbnN0IHsgY2hpbGRyZW4gfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPENvbnRleHRNZW51PlxuICAgICAgPENvbnRleHRNZW51VHJpZ2dlciBjbGFzc05hbWU9XCJwcy1ibG9jayBwcy13LWZ1bGwgcHMtcHgtW3ZhcigtLXN0dWRpby1jZWxsLXNwYWNpbmcpXSBwcy1sZWFkaW5nLVt2YXIoLS1zdHVkaW8tY2VsbC1oZWlnaHQpXSBwcy1oLVt2YXIoLS1zdHVkaW8tY2VsbC1oZWlnaHQpXSBwcy10ZXh0LXhzIHBzLWZvbnQtbW9ubyBwcy13aGl0ZXNwYWNlLW5vd3JhcCBwcy1vdmVyZmxvdy1oaWRkZW4gcHMtdGV4dC1lbGxpcHNpc1wiPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0NvbnRleHRNZW51VHJpZ2dlcj5cbiAgICAgIDxDb250ZXh0TWVudUNvbnRlbnQ+XG4gICAgICAgIDxDb250ZXh0TWVudUl0ZW1cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50ID0gZXh0cmFjdFRleHRDb250ZW50KGNoaWxkcmVuKTtcbiAgICAgICAgICAgIHZvaWQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoY29udGVudCkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gY29weSB0byBjbGlwYm9hcmQ6XCIsIGVycm9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH19XG4gICAgICAgICAgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIlxuICAgICAgICA+XG4gICAgICAgICAgPENvcHkgc2l6ZT17MTJ9IC8+XG4gICAgICAgICAgQ29weVxuICAgICAgICA8L0NvbnRleHRNZW51SXRlbT5cbiAgICAgIDwvQ29udGV4dE1lbnVDb250ZW50PlxuICAgIDwvQ29udGV4dE1lbnU+XG4gICk7XG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RUZXh0Q29udGVudChub2RlOiBSZWFjdE5vZGUpOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIG5vZGUgPT09IFwic3RyaW5nXCIgfHwgdHlwZW9mIG5vZGUgPT09IFwibnVtYmVyXCIgfHwgdHlwZW9mIG5vZGUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgcmV0dXJuIFN0cmluZyhub2RlKTtcbiAgfVxuXG4gIGlmIChub2RlID09PSBudWxsIHx8IG5vZGUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgaWYgKGlzVmFsaWRFbGVtZW50KG5vZGUpKSB7XG4gICAgY29uc3QgcHJvcHMgPSBub2RlLnByb3BzIGFzIHsgdGV4dD86IHN0cmluZzsgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGUgfTtcblxuICAgIC8vIEhhbmRsZSBSZXZlYWxUZXh0IGNvbXBvbmVudCBzcGVjaWZpY2FsbHlcbiAgICBpZiAobm9kZS50eXBlICYmIHR5cGVvZiBub2RlLnR5cGUgPT09IFwiZnVuY3Rpb25cIiAmJiBub2RlLnR5cGUubmFtZSA9PT0gXCJSZXZlYWxUZXh0XCIpIHtcbiAgICAgIHJldHVybiBwcm9wcy50ZXh0IHx8IFwiXCI7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIE51bGxWYWx1ZSBjb21wb25lbnRcbiAgICBpZiAobm9kZS50eXBlICYmIHR5cGVvZiBub2RlLnR5cGUgPT09IFwiZnVuY3Rpb25cIiAmJiBub2RlLnR5cGUubmFtZSA9PT0gXCJOdWxsVmFsdWVcIikge1xuICAgICAgcmV0dXJuIFwiTlVMTFwiO1xuICAgIH1cblxuICAgIC8vIFJlY3Vyc2l2ZWx5IGV4dHJhY3QgdGV4dCBmcm9tIGNoaWxkcmVuXG4gICAgaWYgKHByb3BzLmNoaWxkcmVuKSB7XG4gICAgICByZXR1cm4gZXh0cmFjdFRleHRDb250ZW50KHByb3BzLmNoaWxkcmVuIGFzIFJlYWN0Tm9kZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheShub2RlKSkge1xuICAgIHJldHVybiBub2RlLm1hcChleHRyYWN0VGV4dENvbnRlbnQpLmpvaW4oXCJcIik7XG4gIH1cblxuICByZXR1cm4gXCJcIjtcbn1cbiIsICJpbXBvcnQgKiBhcyBDb250ZXh0TWVudVByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbnRleHQtbWVudVwiO1xuaW1wb3J0IHsgQ2hlY2ssIENoZXZyb25SaWdodCwgQ2lyY2xlIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IENvbnRleHRNZW51ID0gQ29udGV4dE1lbnVQcmltaXRpdmUuUm9vdDtcblxuY29uc3QgQ29udGV4dE1lbnVUcmlnZ2VyID0gQ29udGV4dE1lbnVQcmltaXRpdmUuVHJpZ2dlcjtcblxuY29uc3QgQ29udGV4dE1lbnVHcm91cCA9IENvbnRleHRNZW51UHJpbWl0aXZlLkdyb3VwO1xuXG5jb25zdCBDb250ZXh0TWVudVBvcnRhbCA9IENvbnRleHRNZW51UHJpbWl0aXZlLlBvcnRhbDtcblxuY29uc3QgQ29udGV4dE1lbnVTdWIgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWI7XG5cbmNvbnN0IENvbnRleHRNZW51UmFkaW9Hcm91cCA9IENvbnRleHRNZW51UHJpbWl0aXZlLlJhZGlvR3JvdXA7XG5cbmNvbnN0IENvbnRleHRNZW51U3ViVHJpZ2dlciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlN1YlRyaWdnZXI+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlN1YlRyaWdnZXI+ICYge1xuICAgIGluc2V0PzogYm9vbGVhbjtcbiAgfVxuPigoeyBjbGFzc05hbWUsIGluc2V0LCBjaGlsZHJlbiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1zbSBwcy1weC0yIHBzLXB5LTEuNSBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1iZy1hY2NlbnQgZm9jdXM6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1iZy1hY2NlbnQgZGF0YS1bc3RhdGU9b3Blbl06cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZFwiLFxuICAgICAgaW5zZXQgJiYgXCJwcy1wbC04XCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICB7Y2hpbGRyZW59XG4gICAgPENoZXZyb25SaWdodCBjbGFzc05hbWU9XCJwcy1tbC1hdXRvIHBzLWgtNCBwcy13LTRcIiAvPlxuICA8L0NvbnRleHRNZW51UHJpbWl0aXZlLlN1YlRyaWdnZXI+XG4pKTtcbkNvbnRleHRNZW51U3ViVHJpZ2dlci5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLlN1YlRyaWdnZXIuZGlzcGxheU5hbWU7XG5cbmNvbnN0IENvbnRleHRNZW51U3ViQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJDb250ZW50XG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtei01MCBwcy1taW4tdy1bOHJlbV0gcHMtb3ZlcmZsb3ctaGlkZGVuIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtcC0xIHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1sZyBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1hbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtYW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1mYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLXpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnBzLXpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnBzLXNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpwcy1zbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06cHMtc2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnBzLXNsaWRlLWluLWZyb20tYm90dG9tLTIgcHMtb3JpZ2luLVstLXJhZGl4LWNvbnRleHQtbWVudS1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5dXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkNvbnRleHRNZW51U3ViQ29udGVudC5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmNvbnN0IENvbnRleHRNZW51Q29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPENvbnRleHRNZW51UHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy16LTUwIHBzLW1heC1oLVstLXJhZGl4LWNvbnRleHQtbWVudS1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHRdIHBzLW1pbi13LVs4cmVtXSBwcy1vdmVyZmxvdy15LWF1dG8gcHMtb3ZlcmZsb3cteC1oaWRkZW4gcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYmctcG9wb3ZlciBwcy1wLTEgcHMtdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgcHMtc2hhZG93LW1kIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1hbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06cHMtZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtem9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06cHMtem9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06cHMtc2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnBzLXNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpwcy1zbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06cHMtc2xpZGUtaW4tZnJvbS1ib3R0b20tMiBwcy1vcmlnaW4tWy0tcmFkaXgtY29udGV4dC1tZW51LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICA8L0NvbnRleHRNZW51UHJpbWl0aXZlLlBvcnRhbD5cbikpO1xuQ29udGV4dE1lbnVDb250ZW50LmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVJdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuSXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuSXRlbT4gJiB7XG4gICAgaW5zZXQ/OiBib29sZWFuO1xuICB9XG4+KCh7IGNsYXNzTmFtZSwgaW5zZXQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuSXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtc20gcHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTBcIixcbiAgICAgIGluc2V0ICYmIFwicHMtcGwtOFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5Db250ZXh0TWVudUl0ZW0uZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5JdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudUNoZWNrYm94SXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCBjaGVja2VkLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtc20gcHMtcHktMS41IHBzLXBsLTggcHMtcHItMiBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1iZy1hY2NlbnQgZm9jdXM6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cHMtcG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06cHMtb3BhY2l0eS01MFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgY2hlY2tlZD17Y2hlY2tlZH1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1hYnNvbHV0ZSBwcy1sZWZ0LTIgcHMtZmxleCBwcy1oLTMuNSBwcy13LTMuNSBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgIDxDb250ZXh0TWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgICAgICA8Q2hlY2sgY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNFwiIC8+XG4gICAgICA8L0NvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgPC9zcGFuPlxuICAgIHtjaGlsZHJlbn1cbiAgPC9Db250ZXh0TWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0+XG4pKTtcbkNvbnRleHRNZW51Q2hlY2tib3hJdGVtLmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudVJhZGlvSXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlJhZGlvSXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuUmFkaW9JdGVtPlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLlJhZGlvSXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtc20gcHMtcHktMS41IHBzLXBsLTggcHMtcHItMiBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1iZy1hY2NlbnQgZm9jdXM6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cHMtcG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06cHMtb3BhY2l0eS01MFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtYWJzb2x1dGUgcHMtbGVmdC0yIHBzLWZsZXggcHMtaC0zLjUgcHMtdy0zLjUgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyXCI+XG4gICAgICA8Q29udGV4dE1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgPENpcmNsZSBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00IHBzLWZpbGwtY3VycmVudFwiIC8+XG4gICAgICA8L0NvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgPC9zcGFuPlxuICAgIHtjaGlsZHJlbn1cbiAgPC9Db250ZXh0TWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0+XG4pKTtcbkNvbnRleHRNZW51UmFkaW9JdGVtLmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuUmFkaW9JdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudUxhYmVsID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuTGFiZWw+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkxhYmVsPiAmIHtcbiAgICBpbnNldD86IGJvb2xlYW47XG4gIH1cbj4oKHsgY2xhc3NOYW1lLCBpbnNldCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5MYWJlbFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJwcy1weC0yIHBzLXB5LTEuNSBwcy10ZXh0LXNtIHBzLWZvbnQtc2VtaWJvbGQgcHMtdGV4dC1mb3JlZ3JvdW5kXCIsIGluc2V0ICYmIFwicHMtcGwtOFwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuQ29udGV4dE1lbnVMYWJlbC5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLkxhYmVsLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudVNlcGFyYXRvciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlNlcGFyYXRvcj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuU2VwYXJhdG9yPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuU2VwYXJhdG9yXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcInBzLS1teC0xIHBzLW15LTEgcHMtaC1weCBwcy1iZy1ib3JkZXJcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkNvbnRleHRNZW51U2VwYXJhdG9yLmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuU2VwYXJhdG9yLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudVNob3J0Y3V0ID0gKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MU3BhbkVsZW1lbnQ+KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPHNwYW4gY2xhc3NOYW1lPXtjbihcInBzLW1sLWF1dG8gcHMtdGV4dC14cyBwcy10cmFja2luZy13aWRlc3QgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbiAgKTtcbn07XG5Db250ZXh0TWVudVNob3J0Y3V0LmRpc3BsYXlOYW1lID0gXCJDb250ZXh0TWVudVNob3J0Y3V0XCI7XG5cbmV4cG9ydCB7XG4gIENvbnRleHRNZW51LFxuICBDb250ZXh0TWVudVRyaWdnZXIsXG4gIENvbnRleHRNZW51Q29udGVudCxcbiAgQ29udGV4dE1lbnVJdGVtLFxuICBDb250ZXh0TWVudUNoZWNrYm94SXRlbSxcbiAgQ29udGV4dE1lbnVSYWRpb0l0ZW0sXG4gIENvbnRleHRNZW51TGFiZWwsXG4gIENvbnRleHRNZW51U2VwYXJhdG9yLFxuICBDb250ZXh0TWVudVNob3J0Y3V0LFxuICBDb250ZXh0TWVudUdyb3VwLFxuICBDb250ZXh0TWVudVBvcnRhbCxcbiAgQ29udGV4dE1lbnVTdWIsXG4gIENvbnRleHRNZW51U3ViQ29udGVudCxcbiAgQ29udGV4dE1lbnVTdWJUcmlnZ2VyLFxuICBDb250ZXh0TWVudVJhZGlvR3JvdXAsXG59O1xuIiwgImltcG9ydCB7IHR5cGUgQ1NTUHJvcGVydGllcywgRGV0YWlsZWRIVE1MUHJvcHMsIHR5cGUgUHJvcHNXaXRoQ2hpbGRyZW4gfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgVGFibGVDZWxsIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvdGFibGVcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uLy4uL2xpYi91dGlsc1wiO1xuaW1wb3J0IHsgRGF0YUdyaWRDZWxsQ29udGV4dE1lbnUgfSBmcm9tIFwiLi4vZ3JpZC9EYXRhR3JpZENlbGxDb250ZXh0TWVudVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENlbGxQcm9wcyBleHRlbmRzIFByb3BzV2l0aENoaWxkcmVuLCBEZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczx1bmtub3duPiwgdW5rbm93bj4ge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHN0eWxlPzogQ1NTUHJvcGVydGllcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIENlbGwocHJvcHM6IENlbGxQcm9wcykge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHJlZiwgc3R5bGUsIC4uLmZvcndhcmRlZFByb3BzIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxUYWJsZUNlbGxcbiAgICAgIHsuLi5mb3J3YXJkZWRQcm9wc31cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtcC0wIHBzLWJvcmRlci1yIHBzLWJvcmRlci1iIHBzLWJvcmRlci10YWJsZS1ib3JkZXJcIixcbiAgICAgICAgLy8gVE9ETzogS2VlcGluZyB0aGlzIHRlbXBvcmFyaWx5OyBtaWdodCBuZWVkIGl0IGxhdGVyIGRlcGVuZGluZyBvbiBpbnB1dCB0eXBlc1xuICAgICAgICAvLyBcImRhdGEtW2ZvY3VzPXRydWVdOnBzLXJpbmctMiBkYXRhLVtmb2N1cz10cnVlXTpwcy1yaW5nLWluZGlnby00MDAgZGF0YS1bZm9jdXM9dHJ1ZV06cHMtcmluZy1pbnNldFwiLFxuICAgICAgICBcInBzLWN1cnNvci1wb2ludGVyXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICByZWY9e3JlZiBhcyBuZXZlcn1cbiAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICA+XG4gICAgICA8RGF0YUdyaWRDZWxsQ29udGV4dE1lbnU+e2NoaWxkcmVufTwvRGF0YUdyaWRDZWxsQ29udGV4dE1lbnU+XG4gICAgPC9UYWJsZUNlbGw+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgQ2VsbCB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IGlzT2JqZWN0VHlwZSB9IGZyb20gXCJyZW1lZGFcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBCb29sZWFuQ2VsbCB9IGZyb20gXCIuL0Jvb2xlYW5DZWxsXCI7XG5pbXBvcnQgeyBEYXRlQ2VsbCB9IGZyb20gXCIuL0RhdGVDZWxsXCI7XG5pbXBvcnQgeyBFbXB0eUNlbGwgfSBmcm9tIFwiLi9FbXB0eUNlbGxcIjtcbmltcG9ydCB7IEVudW1DZWxsIH0gZnJvbSBcIi4vRW51bUNlbGxcIjtcbmltcG9ydCB7IEpTT05DZWxsIH0gZnJvbSBcIi4vSlNPTkNlbGxcIjtcbmltcG9ydCB7IE51bGxDZWxsIH0gZnJvbSBcIi4vTnVsbENlbGxcIjtcbmltcG9ydCB7IE51bWVyaWNDZWxsIH0gZnJvbSBcIi4vTnVtZXJpY0NlbGxcIjtcbmltcG9ydCB7IFJhd0NlbGwgfSBmcm9tIFwiLi9SYXdDZWxsXCI7XG5pbXBvcnQgeyBUaW1lQ2VsbCB9IGZyb20gXCIuL1RpbWVDZWxsXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDZWxsKHsgY2VsbCwgY29sdW1uIH06IHsgY2VsbDogQ2VsbDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdW5rbm93bj47IGNvbHVtbjogQ29sdW1uIH0pIHtcbiAgY29uc3QgdmFsdWUgPSBjZWxsLmdldFZhbHVlKCk7XG5cbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gPEVtcHR5Q2VsbCAvPjtcbiAgfVxuXG4gIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiA8TnVsbENlbGwgLz47XG4gIH1cblxuICBjb25zdCB7IGdyb3VwLCBpc0FycmF5IH0gPSBjb2x1bW4uZGF0YXR5cGU7XG5cbiAgaWYgKGdyb3VwID09PSBcImpzb25cIiB8fCBpc0FycmF5KSB7XG4gICAgcmV0dXJuIDxKU09OQ2VsbCB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIDxSYXdDZWxsIHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwiZW51bVwiKSB7XG4gICAgcmV0dXJuIDxFbnVtQ2VsbCB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcImJvb2xlYW5cIikge1xuICAgIHJldHVybiA8Qm9vbGVhbkNlbGwgdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJkYXRldGltZVwiKSB7XG4gICAgcmV0dXJuIDxEYXRlQ2VsbCB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcInRpbWVcIikge1xuICAgIHJldHVybiA8VGltZUNlbGwgdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJudW1lcmljXCIpIHtcbiAgICByZXR1cm4gPE51bWVyaWNDZWxsIHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwicmF3XCIpIHtcbiAgICBpZiAoaXNPYmplY3RUeXBlKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIDxKU09OQ2VsbCB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICAgIH1cblxuICAgIHJldHVybiA8UmF3Q2VsbCB2YWx1ZT17dmFsdWV9IC8+O1xuICB9XG5cbiAgZ3JvdXAgc2F0aXNmaWVzIG5ldmVyO1xuICB0aHJvdyBuZXcgRXJyb3IoYERhdGF0eXBlIGdyb3VwIFwiJHtncm91cCBhcyBzdHJpbmd9XCIgd2FzIG5vdCBoYW5kbGVkIGluICcvY2VsbC9nZXQtY2VsbC50c3gnYCk7XG59XG4iLCAiZXhwb3J0IGludGVyZmFjZSBCb29sZWFuQ2VsbFByb3BzIHtcbiAgdmFsdWU6IHVua25vd247XG59XG5cbmNvbnN0IEJvb2xlYW5DZWxsID0gKHByb3BzOiBCb29sZWFuQ2VsbFByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdmFsdWUgfSA9IHByb3BzO1xuXG4gIHJldHVybiA8ZGl2IGRhdGEtY2VsbC10eXBlPVwiYm9vbGVhblwiPntTdHJpbmcoQm9vbGVhbih2YWx1ZSkpfTwvZGl2Pjtcbn07XG5Cb29sZWFuQ2VsbC5kaXNwbGF5TmFtZSA9IFwiQm9vbGVhbkNlbGxcIjtcblxuZXhwb3J0IHsgQm9vbGVhbkNlbGwgfTtcbiIsICJleHBvcnQgaW50ZXJmYWNlIERhdGVDZWxsUHJvcHMge1xuICB2YWx1ZTogc3RyaW5nIHwgRGF0ZSB8IG51bWJlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVDZWxsKHByb3BzOiBEYXRlQ2VsbFByb3BzKSB7XG4gIGNvbnN0IHsgdmFsdWUgfSA9IHByb3BzO1xuXG4gIHJldHVybiA8PntTdHJpbmcodmFsdWUpfTwvPjtcbn1cbiIsICIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LW9iamVjdC10eXBlXG5leHBvcnQgaW50ZXJmYWNlIEVtcHR5Q2VsbFByb3BzIHt9XG5cbmV4cG9ydCBmdW5jdGlvbiBFbXB0eUNlbGwoX3Byb3BzOiBFbXB0eUNlbGxQcm9wcykge1xuICByZXR1cm4gPD48Lz47XG59XG4iLCAiZXhwb3J0IGludGVyZmFjZSBFbnVtQ2VsbFByb3BzIHtcbiAgdmFsdWU6IHVua25vd247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBFbnVtQ2VsbChwcm9wczogRW51bUNlbGxQcm9wcykge1xuICBjb25zdCB7IHZhbHVlIH0gPSBwcm9wcztcblxuICByZXR1cm4gPD57U3RyaW5nKHZhbHVlKX08Lz47XG59XG4iLCAiZXhwb3J0IGludGVyZmFjZSBKU09OQ2VsbFByb3BzIHtcbiAgdmFsdWU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5rbm93bltdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gSlNPTkNlbGwocHJvcHM6IEpTT05DZWxsUHJvcHMpIHtcbiAgY29uc3QgeyB2YWx1ZSB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIDw+e0pTT04uc3RyaW5naWZ5KHZhbHVlLCBudWxsLCAyKX08Lz47XG59XG4iLCAiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1vYmplY3QtdHlwZVxuZXhwb3J0IGludGVyZmFjZSBOdWxsQ2VsbFByb3BzIHt9XG5cbmV4cG9ydCBmdW5jdGlvbiBOdWxsQ2VsbChfcHJvcHM6IE51bGxDZWxsUHJvcHMpIHtcbiAgcmV0dXJuIDxjb2RlIGNsYXNzTmFtZT1cInBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZC82MFwiPk5VTEw8L2NvZGU+O1xufVxuIiwgImV4cG9ydCBpbnRlcmZhY2UgTnVtZXJpY0NlbGxQcm9wcyB7XG4gIHZhbHVlOiB1bmtub3duO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gTnVtZXJpY0NlbGwocHJvcHM6IE51bWVyaWNDZWxsUHJvcHMpIHtcbiAgY29uc3QgeyB2YWx1ZSB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIDxkaXYgZGF0YS1jZWxsLXR5cGU9XCJudW1lcmljXCI+e3ZhbHVlID09PSBudWxsID8gXCJOVUxMXCIgOiBTdHJpbmcodmFsdWUpfTwvZGl2Pjtcbn1cbiIsICJleHBvcnQgaW50ZXJmYWNlIFJhd0NlbGxQcm9wcyB7XG4gIHZhbHVlOiB1bmtub3duO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gUmF3Q2VsbChwcm9wczogUmF3Q2VsbFByb3BzKSB7XG4gIGNvbnN0IHsgdmFsdWUgfSA9IHByb3BzO1xuXG4gIHJldHVybiA8PntTdHJpbmcodmFsdWUpfTwvPjtcbn1cbiIsICJleHBvcnQgaW50ZXJmYWNlIFRpbWVDZWxsUHJvcHMge1xuICB2YWx1ZTogc3RyaW5nIHwgRGF0ZSB8IG51bWJlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFRpbWVDZWxsKHByb3BzOiBUaW1lQ2VsbFByb3BzKSB7XG4gIGNvbnN0IHsgdmFsdWUgfSA9IHByb3BzO1xuXG4gIHJldHVybiA8PntTdHJpbmcodmFsdWUpfTwvPjtcbn1cbiIsICJpbXBvcnQgKiBhcyBDaGVja2JveFByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNoZWNrYm94XCI7XG5pbXBvcnQgeyBDaGVjayB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENoZWNrYm94UHJpbWl0aXZlLlJvb3Q+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENoZWNrYm94UHJpbWl0aXZlLlJvb3Q+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDaGVja2JveFByaW1pdGl2ZS5Sb290XG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcGVlciBwcy1oLTQgcHMtdy00IHBzLXNocmluay0wIHBzLXJvdW5kZWQtc20gcHMtYm9yZGVyIHBzLWJvcmRlci1wcmltYXJ5IHBzLXNoYWRvdyBmb2N1cy12aXNpYmxlOnBzLW91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnBzLXJpbmctMSBmb2N1cy12aXNpYmxlOnBzLXJpbmctcmluZyBkaXNhYmxlZDpwcy1jdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6cHMtb3BhY2l0eS01MCBkYXRhLVtzdGF0ZT1jaGVja2VkXTpwcy1iZy1wcmltYXJ5IGRhdGEtW3N0YXRlPWNoZWNrZWRdOnBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8Q2hlY2tib3hQcmltaXRpdmUuSW5kaWNhdG9yIGNsYXNzTmFtZT17Y24oXCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlciBwcy10ZXh0LWN1cnJlbnRcIil9PlxuICAgICAgPENoZWNrIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTRcIiAvPlxuICAgIDwvQ2hlY2tib3hQcmltaXRpdmUuSW5kaWNhdG9yPlxuICA8L0NoZWNrYm94UHJpbWl0aXZlLlJvb3Q+XG4pKTtcbkNoZWNrYm94LmRpc3BsYXlOYW1lID0gQ2hlY2tib3hQcmltaXRpdmUuUm9vdC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgQ2hlY2tib3ggfTtcbiIsICJpbXBvcnQgeyBUYWJsZSB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcblxuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL2NoZWNrYm94XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0SGVhZGVyQ2VsbFByb3BzIHtcbiAgdGFibGU6IFRhYmxlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTZWxlY3RIZWFkZXJDZWxsKHByb3BzOiBTZWxlY3RIZWFkZXJDZWxsUHJvcHMpIHtcbiAgY29uc3QgeyB0YWJsZSwgcmVhZG9ubHkgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPENoZWNrYm94XG4gICAgICBjaGVja2VkPXt0YWJsZS5nZXRJc0FsbFJvd3NTZWxlY3RlZCgpfVxuICAgICAgb25DaGVja2VkQ2hhbmdlPXsodmFsdWUpID0+IHRhYmxlLnRvZ2dsZUFsbFJvd3NTZWxlY3RlZCghIXZhbHVlKX1cbiAgICAgIGRpc2FibGVkPXtyZWFkb25seX1cbiAgICAvPlxuICApO1xufVxuIiwgImltcG9ydCB7IFJvdyB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcblxuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL2NoZWNrYm94XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0Um93Q2VsbFByb3BzIHtcbiAgcm93OiBSb3c8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuICByZWFkb25seTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNlbGVjdFJvd0NlbGwocHJvcHM6IFNlbGVjdFJvd0NlbGxQcm9wcykge1xuICBjb25zdCB7IHJvdywgcmVhZG9ubHkgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPENoZWNrYm94XG4gICAgICBjaGVja2VkPXtyb3cuZ2V0SXNTZWxlY3RlZCgpfVxuICAgICAgZGlzYWJsZWQ9eyFyb3cuZ2V0Q2FuU2VsZWN0KCkgfHwgcmVhZG9ubHl9XG4gICAgICBvbkNoZWNrZWRDaGFuZ2U9e3Jvdy5nZXRUb2dnbGVTZWxlY3RlZEhhbmRsZXIoKX1cbiAgICAvPlxuICApO1xufVxuIiwgImltcG9ydCAqIGFzIFBvcG92ZXJQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wb3BvdmVyXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuaW50ZXJmYWNlIFBvcG92ZXJDZWxsQ29udGV4dFZhbHVlIHtcbiAgb3BlbjogYm9vbGVhbjtcbiAgc2V0T3BlbjogKG9wZW46IGJvb2xlYW4pID0+IHZvaWQ7XG59XG5cbmNvbnN0IFBvcG92ZXJDZWxsQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQ8UG9wb3ZlckNlbGxDb250ZXh0VmFsdWUgfCBudWxsPihudWxsKTtcblxuY29uc3QgUG9wb3ZlckNlbGwgPSAoeyBjaGlsZHJlbiwgLi4ucHJvcHMgfTogUG9wb3ZlclByaW1pdGl2ZS5Qb3BvdmVyUHJvcHMpID0+IHtcbiAgY29uc3QgW29wZW4sIHNldE9wZW5dID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuXG4gIHJldHVybiAoXG4gICAgPFBvcG92ZXJDZWxsQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17eyBvcGVuLCBzZXRPcGVuIH19PlxuICAgICAgPFBvcG92ZXJQcmltaXRpdmUuUm9vdCBvcGVuPXtvcGVufSBvbk9wZW5DaGFuZ2U9e3NldE9wZW59IHsuLi5wcm9wc30+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvUG9wb3ZlclByaW1pdGl2ZS5Sb290PlxuICAgIDwvUG9wb3ZlckNlbGxDb250ZXh0LlByb3ZpZGVyPlxuICApO1xufTtcblBvcG92ZXJDZWxsLmRpc3BsYXlOYW1lID0gXCJQb3BvdmVyQ2VsbFwiO1xuXG5pbnRlcmZhY2UgUG9wb3ZlckNlbGxUcmlnZ2VyUHJvcHMgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFBvcG92ZXJQcmltaXRpdmUuVHJpZ2dlcj4ge1xuICBvbkRvdWJsZUNsaWNrPzogKCkgPT4gdm9pZDtcbn1cblxuY29uc3QgUG9wb3ZlckNlbGxUcmlnZ2VyID0gUmVhY3QuZm9yd2FyZFJlZjxSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBQb3BvdmVyUHJpbWl0aXZlLlRyaWdnZXI+LCBQb3BvdmVyQ2VsbFRyaWdnZXJQcm9wcz4oXG4gICh7IGNoaWxkcmVuLCBvbkRvdWJsZUNsaWNrLCBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIC8vIGNvbnN0IGNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KFBvcG92ZXJDZWxsQ29udGV4dCk7XG4gICAgLy8gY29uc3QgW2lzRm9jdXNlZCwgc2V0SXNGb2N1c2VkXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCB0cmlnZ2VyUmVmID0gUmVhY3QudXNlUmVmPEhUTUxCdXR0b25FbGVtZW50PihudWxsKTtcblxuICAgIC8vIFRPRE86IEtlZXBpbmcgdGhpcyB0ZW1wb3JhcmlseTsgbWlnaHQgbmVlZCBpdCBsYXRlciBkZXBlbmRpbmcgb24gaW5wdXQgdHlwZXNcbiAgICAvLyBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vICAgY29uc3QgaGFuZGxlRG9jdW1lbnRDbGljayA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgLy8gICAgIGNvbnN0IHRhcmdldCA9IGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIC8vICAgICBpZiAodHJpZ2dlclJlZi5jdXJyZW50ICYmICF0cmlnZ2VyUmVmLmN1cnJlbnQuY29udGFpbnModGFyZ2V0KSkge1xuICAgIC8vICAgICAgIC8vIGNvbnNvbGUubG9nKFwiT3V0c2lkZSBjbGljayAtIHJlbW92aW5nIGZvY3VzXCIpO1xuICAgIC8vICAgICAgIHNldElzRm9jdXNlZChmYWxzZSk7XG4gICAgLy8gICAgIH1cbiAgICAvLyAgIH07XG5cbiAgICAvLyAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVEb2N1bWVudENsaWNrKTtcbiAgICAvLyAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlRG9jdW1lbnRDbGljayk7XG4gICAgLy8gfSwgW10pO1xuXG4gICAgLy8gY29uc3QgaGFuZGxlQ2xpY2sgPSAoZTogUmVhY3QuTW91c2VFdmVudCkgPT4ge1xuICAgIC8vICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIC8vICAgc2V0SXNGb2N1c2VkKHRydWUpO1xuICAgIC8vICAgY29udGV4dD8uc2V0T3Blbih0cnVlKTtcblxuICAgIC8vICAgaWYgKGUuZGV0YWlsID09PSAyICYmIG9uRG91YmxlQ2xpY2spIHtcbiAgICAvLyAgICAgb25Eb3VibGVDbGljaygpO1xuICAgIC8vICAgfVxuICAgIC8vIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFBvcG92ZXJQcmltaXRpdmUuVHJpZ2dlclxuICAgICAgICByZWY9eyhub2RlKSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiByZWYgPT09IFwiZnVuY3Rpb25cIikgcmVmKG5vZGUpO1xuICAgICAgICAgIGVsc2UgaWYgKHJlZikgcmVmLmN1cnJlbnQgPSBub2RlO1xuICAgICAgICAgICh0cmlnZ2VyUmVmIGFzIFJlYWN0Lk11dGFibGVSZWZPYmplY3Q8SFRNTEJ1dHRvbkVsZW1lbnQgfCBudWxsPikuY3VycmVudCA9IG5vZGU7XG4gICAgICAgIH19XG4gICAgICAgIC8vIG9uQ2xpY2s9e2hhbmRsZUNsaWNrfVxuICAgICAgICAvLyBkYXRhLWZvY3VzPXtpc0ZvY3VzZWQudG9TdHJpbmcoKX1cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcInctZnVsbCBoLWZ1bGwgY3Vyc29yLXBvaW50ZXJcIiwgY2xhc3NOYW1lKX1cbiAgICAgICAgey4uLnByb3BzfVxuICAgICAgPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L1BvcG92ZXJQcmltaXRpdmUuVHJpZ2dlcj5cbiAgICApO1xuICB9LFxuKTtcblBvcG92ZXJDZWxsVHJpZ2dlci5kaXNwbGF5TmFtZSA9IFwiUG9wb3ZlckNlbGxUcmlnZ2VyXCI7XG5cbmNvbnN0IFBvcG92ZXJDZWxsQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFBvcG92ZXJQcmltaXRpdmUuQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgUG9wb3ZlclByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIGFsaWduID0gXCJjZW50ZXJcIiwgc2lkZU9mZnNldCA9IDQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8UG9wb3ZlclByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPFBvcG92ZXJQcmltaXRpdmUuQ29udGVudFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBhbGlnbj17YWxpZ259XG4gICAgICBzaWRlT2Zmc2V0PXtzaWRlT2Zmc2V0fVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC0yIHBzLXotNTAgcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYmctcG9wb3ZlciBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbWQgcHMtb3V0bGluZS1ub25lIGRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOmZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06ZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06em9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06em9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06c2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpzbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06c2xpZGUtaW4tZnJvbS1ib3R0b20tMlwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgLy8gd2UgYXJlIGhhbmRsaW5nIHRoaXMgb3Vyc2VsdmVzLCBkbyBub3QgbGV0IHJhZGl4IHRha2Ugb3ZlclxuICAgICAgb25Fc2NhcGVLZXlEb3duPXsoZXZlbnQpID0+IGV2ZW50LnByZXZlbnREZWZhdWx0KCl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgPC9Qb3BvdmVyUHJpbWl0aXZlLlBvcnRhbD5cbikpO1xuUG9wb3ZlckNlbGxDb250ZW50LmRpc3BsYXlOYW1lID0gUG9wb3ZlclByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlUG9wb3ZlckFjdGlvbnMoYWN0aW9uczoge1xuICBvblNhdmU/OiAoKSA9PiBib29sZWFuIHwgdm9pZDtcbiAgb25DYW5jZWw/OiAoKSA9PiB2b2lkO1xuICByZWFkb25seTogYm9vbGVhbjtcbn0pIHtcbiAgY29uc3QgY29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoUG9wb3ZlckNlbGxDb250ZXh0KTtcblxuICBjb25zdCBoYW5kbGVTYXZlID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChhY3Rpb25zLnJlYWRvbmx5KSB7XG4gICAgICBjb250ZXh0Py5zZXRPcGVuKGZhbHNlKTtcbiAgICB9XG4gICAgaWYgKGFjdGlvbnMub25TYXZlKSB7XG4gICAgICBhY3Rpb25zLm9uU2F2ZSgpO1xuICAgIH1cbiAgICBpZiAoY29udGV4dCkge1xuICAgICAgY29udGV4dC5zZXRPcGVuKGZhbHNlKTtcbiAgICB9XG4gIH0sIFthY3Rpb25zLm9uU2F2ZSwgY29udGV4dF0pO1xuXG4gIGNvbnN0IGhhbmRsZUNhbmNlbCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoYWN0aW9ucy5yZWFkb25seSkge1xuICAgICAgY29udGV4dD8uc2V0T3BlbihmYWxzZSk7XG4gICAgfVxuICAgIGlmIChhY3Rpb25zLm9uQ2FuY2VsKSB7XG4gICAgICBhY3Rpb25zLm9uQ2FuY2VsKCk7XG4gICAgfVxuICAgIGlmIChjb250ZXh0KSB7XG4gICAgICBjb250ZXh0LnNldE9wZW4oZmFsc2UpO1xuICAgIH1cbiAgfSwgW2FjdGlvbnMub25DYW5jZWwsIGNvbnRleHRdKTtcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgIC8vIGNoZWNrIGlmIGVudGVyIGlzIHByZXNzZWQgYW5kIHByZXNzZWQgd2l0aG91dCBzaGlmdFxuICAgICAgaWYgKChldmVudC5rZXkgPT09IFwiRW50ZXJcIiB8fCBldmVudC5rZXkgPT09IFwiUmV0dXJuXCIpICYmICFldmVudC5zaGlmdEtleSkge1xuICAgICAgICBoYW5kbGVTYXZlKCk7XG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gXCJFc2NhcGVcIikge1xuICAgICAgICBoYW5kbGVDYW5jZWwoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIGhhbmRsZUtleURvd24pO1xuICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlS2V5RG93bik7XG4gIH0sIFtoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWxdKTtcblxuICByZXR1cm4geyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfTtcbn1cblxuZXhwb3J0IHsgUG9wb3ZlckNlbGwsIFBvcG92ZXJDZWxsVHJpZ2dlciwgUG9wb3ZlckNlbGxDb250ZW50IH07XG4iLCAiaW1wb3J0IHR5cGUgeyBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgUG9wb3ZlckNlbGwsIFBvcG92ZXJDZWxsQ29udGVudCwgUG9wb3ZlckNlbGxUcmlnZ2VyIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi8uLi9saWIvdXRpbHNcIjtcbmltcG9ydCB7IENlbGwsIENlbGxQcm9wcyB9IGZyb20gXCIuL0NlbGxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBXcml0ZWFibGVDZWxsUHJvcHMge1xuICBjZWxsQ29tcG9uZW50OiBSZWFjdE5vZGU7XG4gIGlucHV0Q29tcG9uZW50OiBSZWFjdE5vZGU7XG4gIGxpbmtDb21wb25lbnQ6IFJlYWN0Tm9kZTtcbiAgY29udGFpbmVyUHJvcHM/OiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBXcml0ZWFibGVDZWxsKHByb3BzOiBXcml0ZWFibGVDZWxsUHJvcHMpIHtcbiAgY29uc3QgeyBjZWxsQ29tcG9uZW50LCBpbnB1dENvbXBvbmVudCwgbGlua0NvbXBvbmVudCwgY29udGFpbmVyUHJvcHMgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPFBvcG92ZXJDZWxsPlxuICAgICAgPFBvcG92ZXJDZWxsVHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICA8Q2VsbCB7Li4uY29udGFpbmVyUHJvcHN9PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy13LWZ1bGwgcHMtZ2FwLTIgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdj57Y2VsbENvbXBvbmVudH08L2Rpdj5cbiAgICAgICAgICAgIHtsaW5rQ29tcG9uZW50fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L0NlbGw+XG4gICAgICA8L1BvcG92ZXJDZWxsVHJpZ2dlcj5cbiAgICAgIDxQb3BvdmVyQ2VsbENvbnRlbnRcbiAgICAgICAgYWxpZ249XCJzdGFydFwiXG4gICAgICAgIGFsaWduT2Zmc2V0PXstMX1cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICBcInBzLXJvdW5kZWQtbm9uZSBwcy1iZy1tdXRlZFwiLFxuICAgICAgICAgIFwicHMtcC0wIHBzLXotMzAgcHMtZ2FwLTAgcHMtYm9yZGVyLXByaW1hcnlcIixcbiAgICAgICAgICBcInBzLXctW2NhbGModmFyKC0tcmFkaXgtcG9wb3Zlci10cmlnZ2VyLXdpZHRoKV8rXzFweCldIHBzLW1heC13LTcyIHBzLW1pbi13LW1heFwiLFxuICAgICAgICApfVxuICAgICAgICBzaWRlT2Zmc2V0PXstNDB9XG4gICAgICA+XG4gICAgICAgIHtpbnB1dENvbXBvbmVudH1cbiAgICAgIDwvUG9wb3ZlckNlbGxDb250ZW50PlxuICAgIDwvUG9wb3ZlckNlbGw+XG4gICk7XG59XG4iLCAiaW1wb3J0IHtcbiAgY2xvc2VzdENlbnRlcixcbiAgRG5kQ29udGV4dCxcbiAgdHlwZSBEcmFnRW5kRXZlbnQsXG4gIERyYWdPdmVybGF5LFxuICB0eXBlIERyYWdTdGFydEV2ZW50LFxuICBLZXlib2FyZFNlbnNvcixcbiAgUG9pbnRlclNlbnNvcixcbiAgdHlwZSBVbmlxdWVJZGVudGlmaWVyLFxuICB1c2VTZW5zb3IsXG4gIHVzZVNlbnNvcnMsXG59IGZyb20gXCJAZG5kLWtpdC9jb3JlXCI7XG5pbXBvcnQge1xuICBhcnJheU1vdmUsXG4gIFNvcnRhYmxlQ29udGV4dCxcbiAgc29ydGFibGVLZXlib2FyZENvb3JkaW5hdGVzLFxuICB1c2VTb3J0YWJsZSxcbiAgdmVydGljYWxMaXN0U29ydGluZ1N0cmF0ZWd5LFxufSBmcm9tIFwiQGRuZC1raXQvc29ydGFibGVcIjtcbmltcG9ydCB7IENTUyB9IGZyb20gXCJAZG5kLWtpdC91dGlsaXRpZXNcIjtcbmltcG9ydCB7IENoZXZyb25Eb3duLCBDaGV2cm9uUmlnaHQsIEdyaXBWZXJ0aWNhbCwgSGVscENpcmNsZSwgWCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB7IG1vdGlvbiB9IGZyb20gXCJtb3Rpb24vcmVhY3RcIjtcbmltcG9ydCB7IEFuaW1hdGVOdW1iZXIgfSBmcm9tIFwibW90aW9uLXBsdXMvcmVhY3RcIjtcbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgRnJhZ21lbnQgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gXCJyZWFjdC1kb21cIjtcbmltcG9ydCBzaG9ydCBmcm9tIFwic2hvcnQtdXVpZFwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbHVtbkZpbHRlciwgRmlsdGVyR3JvdXAsIEZpbHRlck9wZXJhdG9yLCBUYWJsZSB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgY29lcmNlVG9TdHJpbmcsIGNvZXJjZVRvVmFsdWUgfSBmcm9tIFwiLi4vLi4vbGliL2NvbnZlcnNpb25VdGlsc1wiO1xuaW1wb3J0IHsgQmFkZ2UgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9iYWRnZVwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvYnV0dG9uXCI7XG5pbXBvcnQgeyBEcm9wZG93bk1lbnUsIERyb3Bkb3duTWVudUNvbnRlbnQsIERyb3Bkb3duTWVudVRyaWdnZXIgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9kcm9wZG93bi1tZW51XCI7XG5pbXBvcnQgeyBJbnB1dCB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL2lucHV0XCI7XG5pbXBvcnQgeyBTZWxlY3QsIFNlbGVjdENvbnRlbnQsIFNlbGVjdEl0ZW0sIFNlbGVjdFRyaWdnZXIsIFNlbGVjdFZhbHVlIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvc2VsZWN0XCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi9saWIvdXRpbHNcIjtcblxuY29uc3QgTGVhZGluZ09wZXJhdG9yU2VsZWN0ID0gKHtcbiAgdmFsdWUsXG4gIG9uVmFsdWVDaGFuZ2UsXG4gIGRpc2FibGVkLFxuICB0cmlnZ2VyQ2xhc3NOYW1lID0gXCJwcy13LTIwIHBzLXRleHQteHMgcHMtaC04XCIsXG59OiB7XG4gIHZhbHVlPzogXCJhbmRcIiB8IFwib3JcIjtcbiAgb25WYWx1ZUNoYW5nZTogKHZhbHVlOiBcImFuZFwiIHwgXCJvclwiKSA9PiB2b2lkO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIHRyaWdnZXJDbGFzc05hbWU/OiBzdHJpbmc7XG59KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPFNlbGVjdCB2YWx1ZT17dmFsdWV9IG9uVmFsdWVDaGFuZ2U9e29uVmFsdWVDaGFuZ2V9IGRpc2FibGVkPXtkaXNhYmxlZH0+XG4gICAgICA8U2VsZWN0VHJpZ2dlciBjbGFzc05hbWU9e3RyaWdnZXJDbGFzc05hbWV9PlxuICAgICAgICA8U2VsZWN0VmFsdWUgcGxhY2Vob2xkZXI9XCJMb2dpY1wiIC8+XG4gICAgICA8L1NlbGVjdFRyaWdnZXI+XG4gICAgICA8U2VsZWN0Q29udGVudD5cbiAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJhbmRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZvbnQtc2VtaWJvbGRcIj5BTkQ8L2Rpdj5cbiAgICAgICAgPC9TZWxlY3RJdGVtPlxuICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIm9yXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mb250LXNlbWlib2xkXCI+T1I8L2Rpdj5cbiAgICAgICAgPC9TZWxlY3RJdGVtPlxuICAgICAgPC9TZWxlY3RDb250ZW50PlxuICAgIDwvU2VsZWN0PlxuICApO1xufTtcblxuLy8gUmVuZGVycyB0aGUgcHJldmlldyBvZiB0aGUgaXRlbSBiZWluZyBkcmFnZ2VkIGluIHRoZSBEcmFnT3ZlcmxheS5cbmNvbnN0IERyYWdnYWJsZUZpbHRlckl0ZW1QcmV2aWV3ID0gKHtcbiAgYWN0aXZlSWQsXG4gIGl0ZW1zLFxuICB0YWJsZSxcbn06IHtcbiAgYWN0aXZlSWQ6IFVuaXF1ZUlkZW50aWZpZXI7XG4gIGl0ZW1zOiBBcnJheTxDb2x1bW5GaWx0ZXIgfCBGaWx0ZXJHcm91cD47XG4gIHRhYmxlOiBUYWJsZTtcbn0pID0+IHtcbiAgY29uc3QgYWN0aXZlSXRlbSA9IGl0ZW1zLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGFjdGl2ZUlkKTtcbiAgaWYgKCFhY3RpdmVJdGVtKSByZXR1cm4gbnVsbDtcblxuICBsZXQgbGVhZGluZ09wZXJhdG9yVmFsdWU6IFwiYW5kXCIgfCBcIm9yXCIgPSBcImFuZFwiOyAvLyBEZWZhdWx0XG4gIGxldCBzaG93TGVhZGluZ09wRm9yT3ZlcmxheSA9IGZhbHNlO1xuICBjb25zdCBhY3RpdmVJdGVtSW5kZXggPSBpdGVtcy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGFjdGl2ZUlkKTtcblxuICBpZiAoYWN0aXZlSXRlbUluZGV4ID4gMCkge1xuICAgIGNvbnN0IHByZXZpb3VzSXRlbSA9IGl0ZW1zW2FjdGl2ZUl0ZW1JbmRleCAtIDFdO1xuICAgIGlmIChwcmV2aW91c0l0ZW0pIHtcbiAgICAgIC8vICdhZnRlcicgZnJvbSB0aGUgcHJldmlvdXMgaXRlbSBkZXRlcm1pbmVzIHRoZSBvcGVyYXRvciBsZWFkaW5nIGludG8gdGhlIGN1cnJlbnQgaXRlbVxuICAgICAgbGVhZGluZ09wZXJhdG9yVmFsdWUgPSBwcmV2aW91c0l0ZW0uYWZ0ZXI7XG4gICAgICBzaG93TGVhZGluZ09wRm9yT3ZlcmxheSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgaWYgKGFjdGl2ZUl0ZW0ua2luZCA9PT0gXCJDb2x1bW5GaWx0ZXJcIikge1xuICAgIHJldHVybiAoXG4gICAgICA8RmlsdGVyQ29uZGl0aW9uXG4gICAgICAgIGZpbHRlcj17YWN0aXZlSXRlbX1cbiAgICAgICAgb25VcGRhdGU9eygpID0+IHt9fSAvLyBPdmVybGF5IGlzIG5vbi1pbnRlcmFjdGl2ZSBmb3IgdXBkYXRlc1xuICAgICAgICBvbkRlbGV0ZT17KCkgPT4ge319IC8vIE92ZXJsYXkgaXMgbm9uLWludGVyYWN0aXZlIGZvciBkZWxldGVzXG4gICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgc2hvd0xlYWRpbmdPcGVyYXRvcj17c2hvd0xlYWRpbmdPcEZvck92ZXJsYXl9XG4gICAgICAgIGxlYWRpbmdPcGVyYXRvclZhbHVlPXtsZWFkaW5nT3BlcmF0b3JWYWx1ZX1cbiAgICAgICAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2U9eygpID0+IHt9fSAvLyBOb24taW50ZXJhY3RpdmVcbiAgICAgIC8+XG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEZpbHRlckdyb3VwQ29tcG9uZW50XG4gICAgICAgIGdyb3VwPXthY3RpdmVJdGVtfVxuICAgICAgICBvblVwZGF0ZT17KCkgPT4ge319XG4gICAgICAgIG9uRGVsZXRlPXsoKSA9PiB7fX1cbiAgICAgICAgaXNSb290PXtmYWxzZX0gLy8gRHJhZ2dlZCBpdGVtIGluIG92ZXJsYXkgaXMgbm90IHRoZSByb290XG4gICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgc2hvd0xlYWRpbmdPcGVyYXRvcj17c2hvd0xlYWRpbmdPcEZvck92ZXJsYXl9XG4gICAgICAgIGxlYWRpbmdPcGVyYXRvclZhbHVlPXtsZWFkaW5nT3BlcmF0b3JWYWx1ZX1cbiAgICAgICAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2U9eygpID0+IHt9fVxuICAgICAgICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3Q9e2ZhbHNlfSAvLyBOb24taW50ZXJhY3RpdmUgZm9yIHByZXZpZXdcbiAgICAgIC8+XG4gICAgKTtcbiAgfVxufTtcblxuLy8gTWFuYWdlcyBETkQgY29udGV4dCBhbmQgcmVuZGVyaW5nIG9mIHNvcnRhYmxlIGZpbHRlciBpdGVtcyBmb3IgYSBncm91cC5cbmNvbnN0IEZpbHRlckxpc3RJdGVtcyA9ICh7XG4gIGl0ZW1zLFxuICBwYXJlbnRHcm91cElkLFxuICB0YWJsZSxcbiAgb25VcGRhdGVJdGVtLFxuICBvbkRlbGV0ZUl0ZW0sXG4gIG9uUmVvcmRlckl0ZW1zLFxuICBhY3RpdmVEcmFnSWQsXG4gIG9uRHJhZ1N0YXJ0LFxuICBvbkRyYWdFbmRTaWduYWwsXG59OiB7XG4gIGl0ZW1zOiBBcnJheTxDb2x1bW5GaWx0ZXIgfCBGaWx0ZXJHcm91cD47XG4gIHBhcmVudEdyb3VwSWQ6IFVuaXF1ZUlkZW50aWZpZXI7XG4gIHRhYmxlOiBUYWJsZTtcbiAgb25VcGRhdGVJdGVtOiAoaW5kZXg6IG51bWJlciwgdXBkYXRlZEl0ZW06IENvbHVtbkZpbHRlciB8IEZpbHRlckdyb3VwKSA9PiB2b2lkO1xuICBvbkRlbGV0ZUl0ZW06IChpbmRleDogbnVtYmVyKSA9PiB2b2lkO1xuICBvblJlb3JkZXJJdGVtczogKG9sZEluZGV4OiBudW1iZXIsIG5ld0luZGV4OiBudW1iZXIpID0+IHZvaWQ7XG4gIGFjdGl2ZURyYWdJZDogVW5pcXVlSWRlbnRpZmllciB8IG51bGw7XG4gIG9uRHJhZ1N0YXJ0OiAoZXZlbnQ6IERyYWdTdGFydEV2ZW50KSA9PiB2b2lkO1xuICBvbkRyYWdFbmRTaWduYWw6ICgpID0+IHZvaWQ7IC8vIENhbGxiYWNrIHRvIHNpZ25hbCBkcmFnIG9wZXJhdGlvbiBjb21wbGV0aW9uXG59KSA9PiB7XG4gIGNvbnN0IHNvcnRhYmxlSXRlbUlkcyA9IHVzZU1lbW8oKCkgPT4gaXRlbXMubWFwKChpdGVtKSA9PiBpdGVtLmlkKSwgW2l0ZW1zXSk7XG4gIGNvbnN0IHNlbnNvcnMgPSB1c2VTZW5zb3JzKFxuICAgIHVzZVNlbnNvcihQb2ludGVyU2Vuc29yLCB7IGFjdGl2YXRpb25Db25zdHJhaW50OiB7IGRpc3RhbmNlOiA4IH0gfSksXG4gICAgdXNlU2Vuc29yKEtleWJvYXJkU2Vuc29yLCB7IGNvb3JkaW5hdGVHZXR0ZXI6IHNvcnRhYmxlS2V5Ym9hcmRDb29yZGluYXRlcyB9KSxcbiAgKTtcblxuICBjb25zdCBoYW5kbGVJbnRlcm5hbERyYWdFbmQgPSAoZXZlbnQ6IERyYWdFbmRFdmVudCkgPT4ge1xuICAgIGNvbnN0IHsgYWN0aXZlLCBvdmVyIH0gPSBldmVudDtcbiAgICBpZiAob3ZlciAmJiBhY3RpdmUuaWQgIT09IG92ZXIuaWQpIHtcbiAgICAgIGNvbnN0IG9sZEluZGV4ID0gaXRlbXMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLmlkID09PSBhY3RpdmUuaWQpO1xuICAgICAgY29uc3QgbmV3SW5kZXggPSBpdGVtcy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IG92ZXIuaWQpO1xuICAgICAgaWYgKG9sZEluZGV4ICE9PSAtMSAmJiBuZXdJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgb25SZW9yZGVySXRlbXMob2xkSW5kZXgsIG5ld0luZGV4KTtcbiAgICAgIH1cbiAgICB9XG4gICAgb25EcmFnRW5kU2lnbmFsKCk7IC8vIFNpZ25hbCB0byBwYXJlbnQgdGhhdCBkcmFnIGhhcyBlbmRlZCAoZS5nLiwgdG8gY2xlYXIgYWN0aXZlRHJhZ0lkKVxuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPERuZENvbnRleHRcbiAgICAgIHNlbnNvcnM9e3NlbnNvcnN9XG4gICAgICBjb2xsaXNpb25EZXRlY3Rpb249e2Nsb3Nlc3RDZW50ZXJ9XG4gICAgICBvbkRyYWdTdGFydD17b25EcmFnU3RhcnR9XG4gICAgICBvbkRyYWdFbmQ9e2hhbmRsZUludGVybmFsRHJhZ0VuZH1cbiAgICA+XG4gICAgICA8U29ydGFibGVDb250ZXh0IGl0ZW1zPXtzb3J0YWJsZUl0ZW1JZHN9IHN0cmF0ZWd5PXt2ZXJ0aWNhbExpc3RTb3J0aW5nU3RyYXRlZ3l9PlxuICAgICAgICB7aXRlbXMubWFwKChjdXJyZW50RmlsdGVySXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICBsZXQgc2hvd0xlYWRpbmdPcCA9IGZhbHNlO1xuICAgICAgICAgIGxldCBsZWFkaW5nT3BWYWw6IFwiYW5kXCIgfCBcIm9yXCIgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgbGV0IG9uTGVhZGluZ09wQ2hhbmdlRm46ICgodmFsdWU6IFwiYW5kXCIgfCBcIm9yXCIpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuICAgICAgICAgIGxldCBpc0xlYWRpbmdPcFRhcmdldExhc3QgPSBmYWxzZTtcblxuICAgICAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgICAgIHNob3dMZWFkaW5nT3AgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgcHJldkl0ZW0gPSBpdGVtc1tpbmRleCAtIDFdITtcbiAgICAgICAgICAgIGxlYWRpbmdPcFZhbCA9IHByZXZJdGVtLmFmdGVyO1xuICAgICAgICAgICAgb25MZWFkaW5nT3BDaGFuZ2VGbiA9IChuZXdWYWx1ZTogXCJhbmRcIiB8IFwib3JcIikgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkUHJldkl0ZW0gPSB7IC4uLnByZXZJdGVtLCBhZnRlcjogbmV3VmFsdWUgfTtcbiAgICAgICAgICAgICAgb25VcGRhdGVJdGVtKGluZGV4IC0gMSwgdXBkYXRlZFByZXZJdGVtKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpc0xlYWRpbmdPcFRhcmdldExhc3QgPSBpbmRleCAtIDEgPT09IGl0ZW1zLmxlbmd0aCAtIDE7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxTb3J0YWJsZUZpbHRlckl0ZW1cbiAgICAgICAgICAgICAga2V5PXtjdXJyZW50RmlsdGVySXRlbS5pZH1cbiAgICAgICAgICAgICAgZmlsdGVyPXtjdXJyZW50RmlsdGVySXRlbX1cbiAgICAgICAgICAgICAgb25VcGRhdGU9eyh1cGRhdGVkRmlsdGVyKSA9PiBvblVwZGF0ZUl0ZW0oaW5kZXgsIHVwZGF0ZWRGaWx0ZXIpfVxuICAgICAgICAgICAgICBvbkRlbGV0ZT17KCkgPT4gb25EZWxldGVJdGVtKGluZGV4KX1cbiAgICAgICAgICAgICAgcGFyZW50RG5kSWQ9e3BhcmVudEdyb3VwSWR9XG4gICAgICAgICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgICAgICAgc2hvd0xlYWRpbmdPcGVyYXRvcj17c2hvd0xlYWRpbmdPcH1cbiAgICAgICAgICAgICAgbGVhZGluZ09wZXJhdG9yVmFsdWU9e2xlYWRpbmdPcFZhbH1cbiAgICAgICAgICAgICAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2U9e29uTGVhZGluZ09wQ2hhbmdlRm59XG4gICAgICAgICAgICAgIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdD17aXNMZWFkaW5nT3BUYXJnZXRMYXN0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApO1xuICAgICAgICB9KX1cbiAgICAgIDwvU29ydGFibGVDb250ZXh0PlxuICAgICAge2NyZWF0ZVBvcnRhbChcbiAgICAgICAgPERyYWdPdmVybGF5PlxuICAgICAgICAgIHthY3RpdmVEcmFnSWQgPyAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLW9wYWNpdHktODBcIj5cbiAgICAgICAgICAgICAgPERyYWdnYWJsZUZpbHRlckl0ZW1QcmV2aWV3IGFjdGl2ZUlkPXthY3RpdmVEcmFnSWR9IGl0ZW1zPXtpdGVtc30gdGFibGU9e3RhYmxlfSAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDwvRHJhZ092ZXJsYXk+LFxuICAgICAgICBkb2N1bWVudC5ib2R5LFxuICAgICAgKX1cbiAgICA8L0RuZENvbnRleHQ+XG4gICk7XG59O1xuXG4vLyBDb21wb25lbnQgZm9yIGEgc29ydGFibGUgZmlsdGVyIGl0ZW1cbmNvbnN0IFNvcnRhYmxlRmlsdGVySXRlbSA9ICh7XG4gIGZpbHRlcixcbiAgb25VcGRhdGUsXG4gIG9uRGVsZXRlLFxuICBwYXJlbnREbmRJZCxcbiAgdGFibGUsXG4gIHNob3dMZWFkaW5nT3BlcmF0b3IsXG4gIGxlYWRpbmdPcGVyYXRvclZhbHVlLFxuICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZSxcbiAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0LFxufToge1xuICBmaWx0ZXI6IENvbHVtbkZpbHRlciB8IEZpbHRlckdyb3VwO1xuICBvblVwZGF0ZTogKHVwZGF0ZWRGaWx0ZXI6IENvbHVtbkZpbHRlciB8IEZpbHRlckdyb3VwKSA9PiB2b2lkO1xuICBvbkRlbGV0ZTogKCkgPT4gdm9pZDtcbiAgcGFyZW50RG5kSWQ6IFVuaXF1ZUlkZW50aWZpZXI7XG4gIHRhYmxlOiBUYWJsZTtcbiAgc2hvd0xlYWRpbmdPcGVyYXRvcj86IGJvb2xlYW47XG4gIGxlYWRpbmdPcGVyYXRvclZhbHVlPzogXCJhbmRcIiB8IFwib3JcIjtcbiAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2U/OiAodmFsdWU6IFwiYW5kXCIgfCBcIm9yXCIpID0+IHZvaWQ7XG4gIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdD86IGJvb2xlYW47XG59KSA9PiB7XG4gIGNvbnN0IHsgYXR0cmlidXRlcywgbGlzdGVuZXJzLCBzZXROb2RlUmVmLCB0cmFuc2Zvcm0sIHRyYW5zaXRpb24sIGlzRHJhZ2dpbmcgfSA9IHVzZVNvcnRhYmxlKHtcbiAgICBpZDogZmlsdGVyLmlkLFxuICAgIGRhdGE6IHtcbiAgICAgIHR5cGU6IGZpbHRlci5raW5kLFxuICAgICAgcGFyZW50SWQ6IHBhcmVudERuZElkLFxuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IHN0eWxlID0ge1xuICAgIHRyYW5zZm9ybTogQ1NTLlRyYW5zZm9ybS50b1N0cmluZyh0cmFuc2Zvcm0pLFxuICAgIHRyYW5zaXRpb24sXG4gICAgb3BhY2l0eTogaXNEcmFnZ2luZyA/IDAuNSA6IDEsXG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IHJlZj17c2V0Tm9kZVJlZn0gc3R5bGU9e3N0eWxlfSBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWp1c3RpZnktYmV0d2VlbiBwcy1nYXAtMlwiPlxuICAgICAge2ZpbHRlci5raW5kID09PSBcIkNvbHVtbkZpbHRlclwiID8gKFxuICAgICAgICA8RmlsdGVyQ29uZGl0aW9uXG4gICAgICAgICAgZmlsdGVyPXtmaWx0ZXJ9XG4gICAgICAgICAgb25VcGRhdGU9e29uVXBkYXRlfVxuICAgICAgICAgIG9uRGVsZXRlPXtvbkRlbGV0ZX1cbiAgICAgICAgICBkcmFnSGFuZGxlUHJvcHM9e3sgLi4uYXR0cmlidXRlcywgLi4ubGlzdGVuZXJzIH19XG4gICAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICAgIHNob3dMZWFkaW5nT3BlcmF0b3I9e3Nob3dMZWFkaW5nT3BlcmF0b3J9XG4gICAgICAgICAgbGVhZGluZ09wZXJhdG9yVmFsdWU9e2xlYWRpbmdPcGVyYXRvclZhbHVlfVxuICAgICAgICAgIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlPXtvbkxlYWRpbmdPcGVyYXRvckNoYW5nZX1cbiAgICAgICAgICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3Q9e2lzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdH1cbiAgICAgICAgLz5cbiAgICAgICkgOiAoXG4gICAgICAgIDxGaWx0ZXJHcm91cENvbXBvbmVudFxuICAgICAgICAgIGdyb3VwPXtmaWx0ZXJ9XG4gICAgICAgICAgb25VcGRhdGU9e29uVXBkYXRlfVxuICAgICAgICAgIG9uRGVsZXRlPXtvbkRlbGV0ZX1cbiAgICAgICAgICBkcmFnSGFuZGxlUHJvcHM9e3sgLi4uYXR0cmlidXRlcywgLi4ubGlzdGVuZXJzIH19XG4gICAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICAgIHNob3dMZWFkaW5nT3BlcmF0b3I9e3Nob3dMZWFkaW5nT3BlcmF0b3J9XG4gICAgICAgICAgbGVhZGluZ09wZXJhdG9yVmFsdWU9e2xlYWRpbmdPcGVyYXRvclZhbHVlfVxuICAgICAgICAgIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlPXtvbkxlYWRpbmdPcGVyYXRvckNoYW5nZX1cbiAgICAgICAgICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3Q9e2lzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdH1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG4vLyBDb21wb25lbnQgZm9yIGEgc2luZ2xlIGZpbHRlciBjb25kaXRpb25cbmNvbnN0IEZpbHRlckNvbmRpdGlvbiA9ICh7XG4gIGZpbHRlcixcbiAgb25VcGRhdGUsXG4gIG9uRGVsZXRlLFxuICBkcmFnSGFuZGxlUHJvcHMsXG4gIHRhYmxlLFxuICBzaG93TGVhZGluZ09wZXJhdG9yLFxuICBsZWFkaW5nT3BlcmF0b3JWYWx1ZSxcbiAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2UsXG4gIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdCxcbn06IHtcbiAgZmlsdGVyOiBDb2x1bW5GaWx0ZXI7XG4gIG9uVXBkYXRlOiAodXBkYXRlZEZpbHRlcjogQ29sdW1uRmlsdGVyKSA9PiB2b2lkO1xuICBvbkRlbGV0ZTogKCkgPT4gdm9pZDtcbiAgZHJhZ0hhbmRsZVByb3BzPzogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+O1xuICB0YWJsZTogVGFibGU7XG4gIHNob3dMZWFkaW5nT3BlcmF0b3I/OiBib29sZWFuO1xuICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT86IFwiYW5kXCIgfCBcIm9yXCI7XG4gIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlPzogKHZhbHVlOiBcImFuZFwiIHwgXCJvclwiKSA9PiB2b2lkO1xuICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3Q/OiBib29sZWFuO1xufSkgPT4ge1xuICBjb25zdCBoYW5kbGVDb2x1bW5DaGFuZ2UgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgIG9uVXBkYXRlKHsgLi4uZmlsdGVyLCBjb2x1bW46IHZhbHVlIH0pO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU9wZXJhdG9yQ2hhbmdlID0gKHZhbHVlOiBGaWx0ZXJPcGVyYXRvcikgPT4ge1xuICAgIG9uVXBkYXRlKHsgLi4uZmlsdGVyLCBvcGVyYXRvcjogdmFsdWUgfSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlVmFsdWVDaGFuZ2UgPSAoZTogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBjb25zdCByYXdWYWx1ZSA9IGUudGFyZ2V0LnZhbHVlO1xuICAgIGNvbnN0IGNvbHVtbkluZm8gPSB0YWJsZS5jb2x1bW5zW2ZpbHRlci5jb2x1bW5dO1xuXG4gICAgaWYgKGNvbHVtbkluZm8gIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgbmV3VmFsdWUgPSBjb2VyY2VUb1ZhbHVlKGNvbHVtbkluZm8sIGZpbHRlci5vcGVyYXRvciwgcmF3VmFsdWUpO1xuXG4gICAgICBvblVwZGF0ZSh7IC4uLmZpbHRlciwgdmFsdWU6IG5ld1ZhbHVlIH0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBbZWRpdGVkVmFsdWUsIHNldEVkaXRlZFZhbHVlXSA9IHVzZVN0YXRlKFxuICAgIGNvZXJjZVRvU3RyaW5nKHRhYmxlLmNvbHVtbnNbZmlsdGVyLmNvbHVtbl0sIGZpbHRlci5vcGVyYXRvciwgZmlsdGVyLnZhbHVlKSxcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxtb3Rpb24uZGl2XG4gICAgICBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMiBwcy13LWZ1bGxcIlxuICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwIH19XG4gICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEgfX1cbiAgICAgIGV4aXQ9e3sgb3BhY2l0eTogMCB9fVxuICAgICAgdHJhbnNpdGlvbj17eyBsYXlvdXQ6IHsgZHVyYXRpb246IDAuMTIgfSB9fVxuICAgID5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTIgcHMtdy1mdWxsXCI+XG4gICAgICAgIDxkaXYgey4uLmRyYWdIYW5kbGVQcm9wc30gY2xhc3NOYW1lPVwicHMtY3Vyc29yLWdyYWJcIj5cbiAgICAgICAgICA8R3JpcFZlcnRpY2FsIGNsYXNzTmFtZT1cInBzLXRleHQtZ3JheS01MDBcIiBzaXplPXsxNn0gLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICAgIHtzaG93TGVhZGluZ09wZXJhdG9yICYmIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlID8gKFxuICAgICAgICAgICAgPExlYWRpbmdPcGVyYXRvclNlbGVjdFxuICAgICAgICAgICAgICB2YWx1ZT17bGVhZGluZ09wZXJhdG9yVmFsdWV9XG4gICAgICAgICAgICAgIG9uVmFsdWVDaGFuZ2U9e29uTGVhZGluZ09wZXJhdG9yQ2hhbmdlfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17aXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogbnVsbH1cblxuICAgICAgICAgIDxTZWxlY3QgdmFsdWU9e2ZpbHRlci5jb2x1bW59IG9uVmFsdWVDaGFuZ2U9e2hhbmRsZUNvbHVtbkNoYW5nZX0+XG4gICAgICAgICAgICA8U2VsZWN0VHJpZ2dlciBjbGFzc05hbWU9XCJwcy13LTI4IHBzLXRleHQteHMgcHMtaC04XCI+XG4gICAgICAgICAgICAgIDxTZWxlY3RWYWx1ZSBwbGFjZWhvbGRlcj1cIlNlbGVjdCBjb2x1bW5cIiAvPlxuICAgICAgICAgICAgPC9TZWxlY3RUcmlnZ2VyPlxuICAgICAgICAgICAgPFNlbGVjdENvbnRlbnQ+XG4gICAgICAgICAgICAgIHtPYmplY3Qua2V5cyh0YWJsZS5jb2x1bW5zKS5tYXAoKGNvbHVtbikgPT4gKFxuICAgICAgICAgICAgICAgIDxTZWxlY3RJdGVtIGtleT17Y29sdW1ufSB2YWx1ZT17Y29sdW1ufT5cbiAgICAgICAgICAgICAgICAgIHtjb2x1bW59XG4gICAgICAgICAgICAgICAgPC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvU2VsZWN0Q29udGVudD5cbiAgICAgICAgICA8L1NlbGVjdD5cblxuICAgICAgICAgIDxTZWxlY3QgdmFsdWU9e2ZpbHRlci5vcGVyYXRvcn0gb25WYWx1ZUNoYW5nZT17KHZhbHVlKSA9PiBoYW5kbGVPcGVyYXRvckNoYW5nZSh2YWx1ZSBhcyBGaWx0ZXJPcGVyYXRvcil9PlxuICAgICAgICAgICAgPFNlbGVjdFRyaWdnZXIgY2xhc3NOYW1lPVwicHMtdy0yMCBwcy10ZXh0LXhzIHBzLWgtOFwiPlxuICAgICAgICAgICAgICA8U2VsZWN0VmFsdWUgcGxhY2Vob2xkZXI9XCJPcGVyYXRvclwiIC8+XG4gICAgICAgICAgICA8L1NlbGVjdFRyaWdnZXI+XG4gICAgICAgICAgICA8U2VsZWN0Q29udGVudD5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCI9XCI+PTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCIhPVwiPiE9PC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIj5cIj4mZ3Q7PC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIj49XCI+Jmd0Oz08L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiPFwiPiZsdDs8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiPD1cIj4mbHQ7PTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJpc1wiPmlzPC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cImlzIG5vdFwiPmlzIG5vdDwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJsaWtlXCI+bGlrZTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJub3QgbGlrZVwiPm5vdCBsaWtlPC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cImlsaWtlXCI+aWxpa2U8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwibm90IGlsaWtlXCI+bm90IGlsaWtlPC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgPC9TZWxlY3RDb250ZW50PlxuICAgICAgICAgIDwvU2VsZWN0PlxuXG4gICAgICAgICAgPElucHV0XG4gICAgICAgICAgICB2YWx1ZT17ZWRpdGVkVmFsdWV9XG4gICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcbiAgICAgICAgICAgICAgc2V0RWRpdGVkVmFsdWUoZS50YXJnZXQudmFsdWUpO1xuICAgICAgICAgICAgICBoYW5kbGVWYWx1ZUNoYW5nZShlKTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInZhbHVlXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLXctMjQgcHMtdGV4dC14cyBwcy1oLThcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwiZ2hvc3RcIiBzaXplPVwieHNcIiBvbkNsaWNrPXtvbkRlbGV0ZX0+XG4gICAgICAgICAgPFggc2l6ZT17MTR9IC8+XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9tb3Rpb24uZGl2PlxuICApO1xufTtcblxuLy8gQ29tcG9uZW50IGZvciBhIGZpbHRlciBncm91cCAoQU5EL09SKVxuY29uc3QgRmlsdGVyR3JvdXBDb21wb25lbnQgPSAoe1xuICBncm91cCxcbiAgb25VcGRhdGUsXG4gIG9uRGVsZXRlLFxuICBkcmFnSGFuZGxlUHJvcHMsXG4gIGlzUm9vdCA9IGZhbHNlLFxuICB0YWJsZSxcbiAgc2hvd0xlYWRpbmdPcGVyYXRvcixcbiAgbGVhZGluZ09wZXJhdG9yVmFsdWUsXG4gIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlLFxuICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3QsXG59OiB7XG4gIGdyb3VwOiBGaWx0ZXJHcm91cDtcbiAgb25VcGRhdGU6ICh1cGRhdGVkR3JvdXA6IEZpbHRlckdyb3VwKSA9PiB2b2lkO1xuICBvbkRlbGV0ZTogKCkgPT4gdm9pZDtcbiAgZHJhZ0hhbmRsZVByb3BzPzogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+O1xuICBpc1Jvb3Q/OiBib29sZWFuO1xuICB0YWJsZTogVGFibGU7XG4gIHNob3dMZWFkaW5nT3BlcmF0b3I/OiBib29sZWFuO1xuICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT86IFwiYW5kXCIgfCBcIm9yXCI7XG4gIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlPzogKHZhbHVlOiBcImFuZFwiIHwgXCJvclwiKSA9PiB2b2lkO1xuICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3Q/OiBib29sZWFuO1xufSkgPT4ge1xuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgY29uc3QgW2FjdGl2ZURyYWdJZCwgc2V0QWN0aXZlRHJhZ0lkXSA9IHVzZVN0YXRlPFVuaXF1ZUlkZW50aWZpZXIgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBoYW5kbGVBZGRGaWx0ZXIgPSAoKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVyOiBDb2x1bW5GaWx0ZXIgPSB7XG4gICAgICBpZDogc2hvcnQuZ2VuZXJhdGUoKSxcbiAgICAgIGtpbmQ6IFwiQ29sdW1uRmlsdGVyXCIsXG4gICAgICBjb2x1bW46IE9iamVjdC5rZXlzKHRhYmxlLmNvbHVtbnMpWzBdID8/IFwiXCIsIC8vIEFsd2F5cyBzZWxlY3QgZmlyc3QgY29sXG4gICAgICBvcGVyYXRvcjogXCI9XCIsXG4gICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgYWZ0ZXI6IFwiYW5kXCIsXG4gICAgfTtcblxuICAgIG9uVXBkYXRlKHsgLi4uZ3JvdXAsIGZpbHRlcnM6IFsuLi5ncm91cC5maWx0ZXJzLCBuZXdGaWx0ZXJdIH0pO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUFkZEdyb3VwID0gKCkgPT4ge1xuICAgIGNvbnN0IG5ld0dyb3VwOiBGaWx0ZXJHcm91cCA9IHtcbiAgICAgIGlkOiBzaG9ydC5nZW5lcmF0ZSgpLFxuICAgICAga2luZDogXCJGaWx0ZXJHcm91cFwiLFxuICAgICAgZmlsdGVyczogW10sXG4gICAgICBhZnRlcjogXCJhbmRcIixcbiAgICB9O1xuXG4gICAgb25VcGRhdGUoeyAuLi5ncm91cCwgZmlsdGVyczogWy4uLmdyb3VwLmZpbHRlcnMsIG5ld0dyb3VwXSB9KTtcbiAgfTtcblxuICBjb25zdCB1cGRhdGVJdGVtSW5Hcm91cCA9IChpbmRleDogbnVtYmVyLCB1cGRhdGVkRmlsdGVyT3JHcm91cDogQ29sdW1uRmlsdGVyIHwgRmlsdGVyR3JvdXApID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXJzID0gWy4uLmdyb3VwLmZpbHRlcnNdO1xuICAgIG5ld0ZpbHRlcnNbaW5kZXhdID0gdXBkYXRlZEZpbHRlck9yR3JvdXA7XG4gICAgb25VcGRhdGUoeyAuLi5ncm91cCwgZmlsdGVyczogbmV3RmlsdGVycyB9KTtcbiAgfTtcblxuICBjb25zdCBkZWxldGVJdGVtRnJvbUdyb3VwID0gKGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXJzID0gWy4uLmdyb3VwLmZpbHRlcnNdO1xuICAgIG5ld0ZpbHRlcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICBvblVwZGF0ZSh7IC4uLmdyb3VwLCBmaWx0ZXJzOiBuZXdGaWx0ZXJzIH0pO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZURyYWdTdGFydCA9IChldmVudDogRHJhZ1N0YXJ0RXZlbnQpID0+IHtcbiAgICBzZXRBY3RpdmVEcmFnSWQoZXZlbnQuYWN0aXZlLmlkKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVEcmFnRW5kU2lnbmFsID0gKCkgPT4ge1xuICAgIHNldEFjdGl2ZURyYWdJZChudWxsKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVSZW9yZGVySXRlbXMgPSAob2xkSW5kZXg6IG51bWJlciwgbmV3SW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGlmIChvbGRJbmRleCA9PT0gbmV3SW5kZXgpIHJldHVybjtcbiAgICBjb25zdCByZW9yZGVyZWRGaWx0ZXJzID0gYXJyYXlNb3ZlKGdyb3VwLmZpbHRlcnMsIG9sZEluZGV4LCBuZXdJbmRleCk7XG4gICAgb25VcGRhdGUoeyAuLi5ncm91cCwgZmlsdGVyczogcmVvcmRlcmVkRmlsdGVycyB9KTtcbiAgfTtcblxuICBjb25zdCByZW5kZXJHcm91cENvbnRlbnQgPSAoKSA9PiB7XG4gICAgaWYgKCFpc0V4cGFuZGVkKSByZXR1cm4gbnVsbDtcbiAgICBpZiAoIWdyb3VwLmZpbHRlcnMgfHwgZ3JvdXAuZmlsdGVycy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtcGwtNiBwcy10ZXh0LXNtIHBzLXRleHQtbmV1dHJhbC01MDAgcHMtaXRhbGljXCI+XG4gICAgICAgICAgVGhpcyBncm91cCBpcyBlbXB0eS4gQWRkIGEgZmlsdGVyIG9yIGFub3RoZXIgZ3JvdXAuXG4gICAgICAgIDwvZGl2PlxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPG1vdGlvbi5kaXYgdHJhbnNpdGlvbj17eyBsYXlvdXQ6IHsgZHVyYXRpb246IDAuMTIgfSB9fT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NuKFwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1yZWxhdGl2ZSBwcy1nYXAtMlwiLCBpc1Jvb3QgPyBcIlwiIDogXCJwcy1wYi0yXCIpfT5cbiAgICAgICAgICA8RmlsdGVyTGlzdEl0ZW1zXG4gICAgICAgICAgICBpdGVtcz17Z3JvdXAuZmlsdGVyc31cbiAgICAgICAgICAgIHBhcmVudEdyb3VwSWQ9e2dyb3VwLmlkfVxuICAgICAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICAgICAgb25VcGRhdGVJdGVtPXt1cGRhdGVJdGVtSW5Hcm91cH1cbiAgICAgICAgICAgIG9uRGVsZXRlSXRlbT17ZGVsZXRlSXRlbUZyb21Hcm91cH1cbiAgICAgICAgICAgIG9uUmVvcmRlckl0ZW1zPXtoYW5kbGVSZW9yZGVySXRlbXN9XG4gICAgICAgICAgICBhY3RpdmVEcmFnSWQ9e2FjdGl2ZURyYWdJZH1cbiAgICAgICAgICAgIG9uRHJhZ1N0YXJ0PXtoYW5kbGVEcmFnU3RhcnR9XG4gICAgICAgICAgICBvbkRyYWdFbmRTaWduYWw9e2hhbmRsZURyYWdFbmRTaWduYWx9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21vdGlvbi5kaXY+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxtb3Rpb24uZGl2IGNsYXNzTmFtZT1cInBzLXctZnVsbFwiIHRyYW5zaXRpb249e3sgbGF5b3V0OiB7IGR1cmF0aW9uOiAwLjEyIH0gfX0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Y24oXCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLXctZnVsbFwiLCBpc0V4cGFuZGVkID8gXCJwcy1nYXAtMlwiIDogXCJcIil9PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlbiBwcy13LWZ1bGxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICB7IWlzUm9vdCAmJiAoXG4gICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzLCBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnNcbiAgICAgICAgICAgICAgPGRpdiB7Li4uZHJhZ0hhbmRsZVByb3BzfSBjbGFzc05hbWU9XCJwcy1jdXJzb3ItZ3JhYlwiIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfT5cbiAgICAgICAgICAgICAgICB7aXNFeHBhbmRlZCA/IDxDaGV2cm9uRG93biBzaXplPXsxNn0gLz4gOiA8Q2hldnJvblJpZ2h0IHNpemU9ezE2fSAvPn1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7c2hvd0xlYWRpbmdPcGVyYXRvciAmJiBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZSAmJiAhaXNSb290ICYmIChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxMZWFkaW5nT3BlcmF0b3JTZWxlY3RcbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtsZWFkaW5nT3BlcmF0b3JWYWx1ZX1cbiAgICAgICAgICAgICAgICAgIG9uVmFsdWVDaGFuZ2U9e29uTGVhZGluZ09wZXJhdG9yQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVcIlxuICAgICAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVBZGRGaWx0ZXJ9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMiBvdmVyZmxvdy1oaWRkZW4gcHMtdHJhbnNpdGlvbi1hbGxcIil9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIEFkZCBGaWx0ZXJcbiAgICAgICAgICAgICAge2dyb3VwLmZpbHRlcnMubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgPEJhZGdlIGNsYXNzTmFtZT1cInBzLXRyYW5zaXRpb24tYWxsXCI+XG4gICAgICAgICAgICAgICAgICA8QW5pbWF0ZU51bWJlciB0cmFuc2l0aW9uPXt7IGxheW91dDogeyBkdXJhdGlvbjogMC4xMiB9IH19Pntncm91cC5maWx0ZXJzLmxlbmd0aH08L0FuaW1hdGVOdW1iZXI+XG4gICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuXG4gICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lXCIgc2l6ZT1cInNtXCIgb25DbGljaz17aGFuZGxlQWRkR3JvdXB9IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0xXCI+XG4gICAgICAgICAgICAgIEFkZCBHcm91cFxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICAgICAge2lzUm9vdCAmJiAoXG4gICAgICAgICAgICAgIDxEcm9wZG93bk1lbnU+XG4gICAgICAgICAgICAgICAgPERyb3Bkb3duTWVudVRyaWdnZXIgYXNDaGlsZD5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cImdob3N0XCIgc2l6ZT1cInNtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxIZWxwQ2lyY2xlIGNsYXNzTmFtZT1cInBzLXNpemUtNFwiIC8+XG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duTWVudVRyaWdnZXI+XG4gICAgICAgICAgICAgICAgPERyb3Bkb3duTWVudUNvbnRlbnQgYWxpZ249XCJjZW50ZXJcIiBjbGFzc05hbWU9XCJwcy13LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgIHtncm91cC5maWx0ZXJzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1wLTQgcHMtdGV4dC1jZW50ZXIgcHMtdGV4dC1zbSBwcy10ZXh0LW5ldXRyYWwtNjAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgTm8gZmlsdGVycyBhcHBsaWVkIHlldC4gQWRkIGZpbHRlcnMgdG8gcHJldmlldyB5b3VyIHF1ZXJ5LlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtcC0yIHBzLXRleHQtY2VudGVyIHBzLXRleHQtc20gcHMtYmctbmV1dHJhbC0xMDAgcHMtcm91bmRlZC1zbSBwcy1mb250LW1vbm9cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8UXVlcnlWaXN1YWxpemVyIGZpbHRlcj17Z3JvdXB9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duTWVudUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIHshaXNSb290ICYmIChcbiAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwiZ2hvc3RcIiBzaXplPVwieHNcIiBvbkNsaWNrPXtvbkRlbGV0ZX0+XG4gICAgICAgICAgICAgICAgPFggc2l6ZT17MTR9IC8+XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbihpc1Jvb3QgPyBcIlwiIDogXCJwcy1tbC02XCIpfT57cmVuZGVyR3JvdXBDb250ZW50KCl9PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L21vdGlvbi5kaXY+XG4gICk7XG59O1xuXG4vLyBDb21wb25lbnQgdG8gdmlzdWFsaXplIHRoZSBxdWVyeSBzdHJpbmdcbmNvbnN0IFF1ZXJ5VmlzdWFsaXplciA9ICh7IGZpbHRlciB9OiB7IGZpbHRlcjogRmlsdGVyR3JvdXAgfSk6IFJlYWN0Tm9kZSA9PiB7XG4gIGxldCBpc0FuZEdyb3VwT3BlbiA9IDA7XG5cbiAgaWYgKGZpbHRlci5maWx0ZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFwiKCApXCI7XG5cbiAgY29uc3QgZ3JvdXAgPSBmaWx0ZXIuZmlsdGVycy5tYXAoKGYsIGkpID0+IHtcbiAgICBsZXQgcmVzdWx0OiBSZWFjdE5vZGU7XG4gICAgY29uc3QgaXNMYXN0ID0gZmlsdGVyLmZpbHRlcnMubGVuZ3RoIC0gMSA9PT0gaTtcblxuICAgIGlmIChpc0FuZEdyb3VwT3BlbiA9PT0gLTEpIHtcbiAgICAgIGlzQW5kR3JvdXBPcGVuID0gMDtcbiAgICB9XG5cbiAgICBpZiAoZi5hZnRlciA9PT0gXCJhbmRcIiAmJiAhaXNMYXN0KSB7XG4gICAgICBpc0FuZEdyb3VwT3BlbiArPSAxO1xuICAgIH1cbiAgICBpZiAoaXNBbmRHcm91cE9wZW4gJiYgKGlzTGFzdCB8fCBmLmFmdGVyID09PSBcIm9yXCIpKSB7XG4gICAgICBpc0FuZEdyb3VwT3BlbiA9IC0xO1xuICAgIH1cblxuICAgIGlmIChmLmtpbmQgPT09IFwiQ29sdW1uRmlsdGVyXCIpIHtcbiAgICAgIGNvbnN0IHsgY29sdW1uLCBvcGVyYXRvciB9ID0gZjtcblxuICAgICAgcmVzdWx0ID0gKFxuICAgICAgICA8PlxuICAgICAgICAgIDxzcGFuPiB7Y29sdW1ufSA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4+IHtvcGVyYXRvcn0gPC9zcGFuPlxuICAgICAgICAgIDxzcGFuPiA/IDwvc3Bhbj5cbiAgICAgICAgPC8+XG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgPSA8UXVlcnlWaXN1YWxpemVyIGZpbHRlcj17Zn0gLz47XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxGcmFnbWVudCBrZXk9e2YuaWR9PlxuICAgICAgICB7aXNBbmRHcm91cE9wZW4gPT09IDEgPyA8c3BhbiBjbGFzc05hbWU9XCJwcy1mb250LXNlbWlib2xkXCI+KDwvc3Bhbj4gOiBcIlwifVxuICAgICAgICB7cmVzdWx0fVxuICAgICAgICB7aXNBbmRHcm91cE9wZW4gPT09IC0xID8gPHNwYW4gY2xhc3NOYW1lPVwicHMtZm9udC1zZW1pYm9sZFwiPik8L3NwYW4+IDogXCJcIn1cbiAgICAgICAgeyFpc0xhc3QgJiYgPHNwYW4gY2xhc3NOYW1lPVwicHMtdXBwZXJjYXNlIHBzLXRleHQtYmx1ZS01MDAgcHMtZm9udC1zZW1pYm9sZFwiPiB7Zi5hZnRlcn0gPC9zcGFuPn1cbiAgICAgIDwvRnJhZ21lbnQ+XG4gICAgKTtcbiAgfSk7XG5cbiAgcmV0dXJuIDxzcGFuPntncm91cH08L3NwYW4+O1xufTtcblxuLy8gTWFpbiBjb21wb25lbnRcbmV4cG9ydCBmdW5jdGlvbiBGaWx0ZXJUcmVlKHtcbiAgZmlsdGVyLFxuICBzZXRGaWx0ZXIsXG4gIHNldEFwcGxpZWRGaWx0ZXIsXG4gIHRhYmxlLFxufToge1xuICBmaWx0ZXI6IEZpbHRlckdyb3VwO1xuICBzZXRGaWx0ZXI6ICh1cGRhdGVkRmlsdGVyOiBGaWx0ZXJHcm91cCkgPT4gdm9pZDtcbiAgc2V0QXBwbGllZEZpbHRlcjogKGZpbHRlcjogRmlsdGVyR3JvdXApID0+IHZvaWQ7XG4gIHRhYmxlOiBUYWJsZTtcbn0pIHtcbiAgY29uc3QgaGFuZGxlQXBwbHlGaWx0ZXJzID0gKCkgPT4ge1xuICAgIHNldEFwcGxpZWRGaWx0ZXIoZmlsdGVyKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1nYXAtNFwiPlxuICAgICAgPEZpbHRlckdyb3VwQ29tcG9uZW50IGdyb3VwPXtmaWx0ZXJ9IG9uVXBkYXRlPXtzZXRGaWx0ZXJ9IG9uRGVsZXRlPXsoKSA9PiB7fX0gaXNSb290PXt0cnVlfSB0YWJsZT17dGFibGV9IC8+XG4gICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJkZWZhdWx0XCIgc2l6ZT1cInNtXCIgY2xhc3NOYW1lPVwicHMtc2VsZi1lbmRcIiBvbkNsaWNrPXtoYW5kbGVBcHBseUZpbHRlcnN9PlxuICAgICAgICBBcHBseSBGaWx0ZXJzXG4gICAgICA8L0J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IENvbHVtbiwgRmlsdGVyT3BlcmF0b3IgfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjb2VyY2VUb1ZhbHVlKGNvbHVtbjogQ29sdW1uIHwgdW5kZWZpbmVkLCBvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3IsIHZhbHVlOiBzdHJpbmcpOiB1bmtub3duIHtcbiAgY29uc3QgZGF0YVR5cGVHcm91cCA9IGNvbHVtbj8uZGF0YXR5cGUuZ3JvdXA7XG5cbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgaWYgKG9wZXJhdG9yID09PSBcImlzXCIgfHwgb3BlcmF0b3IgPT09IFwiaXMgbm90XCIpIHtcbiAgICByZXR1cm4gdmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gXCJudWxsXCIgPyBudWxsIDogdmFsdWU7XG4gIH1cblxuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJib29sZWFuXCIpIHJldHVybiB2YWx1ZSA9PT0gXCJ0cnVlXCI7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcImRhdGV0aW1lXCIpIHJldHVybiB2YWx1ZTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwiZW51bVwiKSByZXR1cm4gdmFsdWU7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcInJhd1wiKSByZXR1cm4gdmFsdWU7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcInN0cmluZ1wiKSByZXR1cm4gdmFsdWU7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcInRpbWVcIikgcmV0dXJuIHZhbHVlO1xuXG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcImpzb25cIikge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZSh2YWx1ZSkgYXMgdW5rbm93bjtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJudW1lcmljXCIpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IFwiXCIgPyBudWxsIDogTnVtYmVyKHZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvZXJjZVRvU3RyaW5nKFxuICBjb2x1bW46IENvbHVtbiB8IHVuZGVmaW5lZCxcbiAgb3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yIHwgdW5kZWZpbmVkLFxuICB2YWx1ZTogdW5rbm93bixcbik6IHN0cmluZyB7XG4gIGNvbnN0IGRhdGFUeXBlR3JvdXAgPSBjb2x1bW4/LmRhdGF0eXBlLmdyb3VwO1xuXG4gIGlmIChvcGVyYXRvciAmJiAob3BlcmF0b3IgPT09IFwiaXNcIiB8fCBvcGVyYXRvciA9PT0gXCJpcyBub3RcIikpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IG51bGwgPyBcIm51bGxcIiA6IFN0cmluZyh2YWx1ZSk7XG4gIH1cblxuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcImJvb2xlYW5cIikgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcImRhdGV0aW1lXCIpIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJlbnVtXCIpIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJudW1lcmljXCIpIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJyYXdcIikgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcInN0cmluZ1wiKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwidGltZVwiKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcblxuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJqc29uXCIpIHtcbiAgICBpZiAodmFsdWUgPT09IFwiXCIpIHJldHVybiBcIlwiO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG59XG4iLCAiaW1wb3J0ICogYXMgRHJvcGRvd25NZW51UHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtZHJvcGRvd24tbWVudVwiO1xuaW1wb3J0IHsgQ2hlY2ssIENoZXZyb25SaWdodCwgQ2lyY2xlIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IERyb3Bkb3duTWVudSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5Sb290O1xuXG5jb25zdCBEcm9wZG93bk1lbnVUcmlnZ2VyID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlRyaWdnZXI7XG5cbmNvbnN0IERyb3Bkb3duTWVudUdyb3VwID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLkdyb3VwO1xuXG5jb25zdCBEcm9wZG93bk1lbnVQb3J0YWwgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuUG9ydGFsO1xuXG5jb25zdCBEcm9wZG93bk1lbnVTdWIgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViO1xuXG5jb25zdCBEcm9wZG93bk1lbnVSYWRpb0dyb3VwID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlJhZGlvR3JvdXA7XG5cbmNvbnN0IERyb3Bkb3duTWVudVN1YlRyaWdnZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlcj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YlRyaWdnZXI+ICYge1xuICAgIGluc2V0PzogYm9vbGVhbjtcbiAgfVxuPigoeyBjbGFzc05hbWUsIGluc2V0LCBjaGlsZHJlbiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlclxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLXJvdW5kZWQtc20gcHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtYmctYWNjZW50IGRhdGEtW3N0YXRlPW9wZW5dOnBzLWJnLWFjY2VudCBbJl9zdmddOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgWyZfc3ZnXTpwcy1zaXplLTQgWyZfc3ZnXTpwcy1zaHJpbmstMFwiLFxuICAgICAgaW5zZXQgJiYgXCJwcy1wbC04XCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICB7Y2hpbGRyZW59XG4gICAgPENoZXZyb25SaWdodCBjbGFzc05hbWU9XCJwcy1tbC1hdXRvXCIgLz5cbiAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlcj5cbikpO1xuRHJvcGRvd25NZW51U3ViVHJpZ2dlci5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVTdWJDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJDb250ZW50PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YkNvbnRlbnRcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy16LTUwIHBzLW1pbi13LVs4cmVtXSBwcy1vdmVyZmxvdy1oaWRkZW4gcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYmctcG9wb3ZlciBwcy1wLTEgcHMtdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgcHMtc2hhZG93LWxnIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1hbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06cHMtZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtem9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06cHMtem9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06cHMtc2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnBzLXNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpwcy1zbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06cHMtc2xpZGUtaW4tZnJvbS1ib3R0b20tMiBwcy1vcmlnaW4tWy0tcmFkaXgtZHJvcGRvd24tbWVudS1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5dXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkRyb3Bkb3duTWVudVN1YkNvbnRlbnQuZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViQ29udGVudC5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51Q29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCBzaWRlT2Zmc2V0ID0gNCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuUG9ydGFsPlxuICAgIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuQ29udGVudFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBzaWRlT2Zmc2V0PXtzaWRlT2Zmc2V0fVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy16LTUwIHBzLW1heC1oLVt2YXIoLS1yYWRpeC1kcm9wZG93bi1tZW51LWNvbnRlbnQtYXZhaWxhYmxlLWhlaWdodCldIHBzLW1pbi13LVs4cmVtXSBwcy1vdmVyZmxvdy15LWF1dG8gcHMtb3ZlcmZsb3cteC1oaWRkZW4gcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYmctcG9wb3ZlciBwcy1wLTEgcHMtdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgcHMtc2hhZG93LW1kXCIsXG4gICAgICAgIFwiZGF0YS1bc3RhdGU9b3Blbl06cHMtYW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1mYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy16b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTpwcy16b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpwcy1zbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06cHMtc2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpwcy1zbGlkZS1pbi1mcm9tLWJvdHRvbS0yIHBzLW9yaWdpbi1bLS1yYWRpeC1kcm9wZG93bi1tZW51LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5Qb3J0YWw+XG4pKTtcbkRyb3Bkb3duTWVudUNvbnRlbnQuZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51SXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbT4gJiB7XG4gICAgaW5zZXQ/OiBib29sZWFuO1xuICB9XG4+KCh7IGNsYXNzTmFtZSwgaW5zZXQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW1cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMiBwcy1yb3VuZGVkLXNtIHBzLXB4LTIgcHMtcHktMS41IHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIHBzLXRyYW5zaXRpb24tY29sb3JzIGZvY3VzOnBzLWJnLWFjY2VudCBmb2N1czpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpwcy1vcGFjaXR5LTUwIFsmPnN2Z106cHMtc2l6ZS00IFsmPnN2Z106cHMtc2hyaW5rLTBcIixcbiAgICAgIGluc2V0ICYmIFwicHMtcGwtOFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5Ecm9wZG93bk1lbnVJdGVtLmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW0uZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudUNoZWNrYm94SXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0+XG4+KCh7IGNsYXNzTmFtZSwgY2hpbGRyZW4sIGNoZWNrZWQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtc20gcHMtcHktMS41IHBzLXBsLTggcHMtcHItMiBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBwcy10cmFuc2l0aW9uLWNvbG9ycyBmb2N1czpwcy1iZy1hY2NlbnQgZm9jdXM6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cHMtcG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06cHMtb3BhY2l0eS01MFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgY2hlY2tlZD17Y2hlY2tlZH1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1hYnNvbHV0ZSBwcy1sZWZ0LTIgcHMtZmxleCBwcy1oLTMuNSBwcy13LTMuNSBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgPENoZWNrIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTRcIiAvPlxuICAgICAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICA8L3NwYW4+XG4gICAge2NoaWxkcmVufVxuICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0+XG4pKTtcbkRyb3Bkb3duTWVudUNoZWNrYm94SXRlbS5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0uZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudVJhZGlvSXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0+XG4+KCh7IGNsYXNzTmFtZSwgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlJhZGlvSXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtc20gcHMtcHktMS41IHBzLXBsLTggcHMtcHItMiBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBwcy10cmFuc2l0aW9uLWNvbG9ycyBmb2N1czpwcy1iZy1hY2NlbnQgZm9jdXM6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cHMtcG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06cHMtb3BhY2l0eS01MFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtYWJzb2x1dGUgcHMtbGVmdC0yIHBzLWZsZXggcHMtaC0zLjUgcHMtdy0zLjUgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyXCI+XG4gICAgICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgICAgIDxDaXJjbGUgY2xhc3NOYW1lPVwicHMtaC0yIHBzLXctMiBwcy1maWxsLWN1cnJlbnRcIiAvPlxuICAgICAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICA8L3NwYW4+XG4gICAge2NoaWxkcmVufVxuICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0+XG4pKTtcbkRyb3Bkb3duTWVudVJhZGlvSXRlbS5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0uZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudUxhYmVsID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkxhYmVsPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuTGFiZWw+ICYge1xuICAgIGluc2V0PzogYm9vbGVhbjtcbiAgfVxuPigoeyBjbGFzc05hbWUsIGluc2V0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5MYWJlbFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJwcy1weC0yIHBzLXB5LTEuNSBwcy10ZXh0LXNtIHBzLWZvbnQtc2VtaWJvbGRcIiwgaW5zZXQgJiYgXCJwcy1wbC04XCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5Ecm9wZG93bk1lbnVMYWJlbC5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5MYWJlbC5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51U2VwYXJhdG9yID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlNlcGFyYXRvcj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlNlcGFyYXRvcj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5TZXBhcmF0b3JcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtLW14LTEgcHMtbXktMSBwcy1oLXB4IHBzLWJnLW11dGVkXCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5Ecm9wZG93bk1lbnVTZXBhcmF0b3IuZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuU2VwYXJhdG9yLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVTaG9ydGN1dCA9ICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFNwYW5FbGVtZW50PikgPT4ge1xuICByZXR1cm4gPHNwYW4gY2xhc3NOYW1lPXtjbihcInBzLW1sLWF1dG8gcHMtdGV4dC14cyBwcy10cmFja2luZy13aWRlc3QgcHMtb3BhY2l0eS02MFwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+O1xufTtcbkRyb3Bkb3duTWVudVNob3J0Y3V0LmRpc3BsYXlOYW1lID0gXCJEcm9wZG93bk1lbnVTaG9ydGN1dFwiO1xuXG5leHBvcnQge1xuICBEcm9wZG93bk1lbnUsXG4gIERyb3Bkb3duTWVudVRyaWdnZXIsXG4gIERyb3Bkb3duTWVudUNvbnRlbnQsXG4gIERyb3Bkb3duTWVudUl0ZW0sXG4gIERyb3Bkb3duTWVudUNoZWNrYm94SXRlbSxcbiAgRHJvcGRvd25NZW51UmFkaW9JdGVtLFxuICBEcm9wZG93bk1lbnVMYWJlbCxcbiAgRHJvcGRvd25NZW51U2VwYXJhdG9yLFxuICBEcm9wZG93bk1lbnVTaG9ydGN1dCxcbiAgRHJvcGRvd25NZW51R3JvdXAsXG4gIERyb3Bkb3duTWVudVBvcnRhbCxcbiAgRHJvcGRvd25NZW51U3ViLFxuICBEcm9wZG93bk1lbnVTdWJDb250ZW50LFxuICBEcm9wZG93bk1lbnVTdWJUcmlnZ2VyLFxuICBEcm9wZG93bk1lbnVSYWRpb0dyb3VwLFxufTtcbiIsICJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgSW5wdXQgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxJbnB1dEVsZW1lbnQsIFJlYWN0LkNvbXBvbmVudFByb3BzPFwiaW5wdXRcIj4+KFxuICAoeyBjbGFzc05hbWUsIHR5cGUsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICA8aW5wdXRcbiAgICAgICAgdHlwZT17dHlwZX1cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICBcInBzLWZsZXggcHMtaC05IHBzLXctZnVsbCBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1ib3JkZXItaW5wdXQgcHMtYmctdHJhbnNwYXJlbnQgcHMtcHgtMyBwcy1weS0xIHBzLXNoYWRvdy1zbSBwcy10cmFuc2l0aW9uLWNvbG9ycyBmaWxlOnBzLWJvcmRlci0wIGZpbGU6cHMtYmctdHJhbnNwYXJlbnQgZmlsZTpwcy10ZXh0LXNtIGZpbGU6cHMtZm9udC1tZWRpdW0gZmlsZTpwcy10ZXh0LWZvcmVncm91bmQgcGxhY2Vob2xkZXI6cHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGZvY3VzLXZpc2libGU6cHMtb3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0xIGZvY3VzLXZpc2libGU6cHMtcmluZy1yaW5nIGRpc2FibGVkOnBzLWN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpwcy1vcGFjaXR5LTUwXCIsXG4gICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICApfVxuICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgey4uLnByb3BzfVxuICAgICAgLz5cbiAgICApO1xuICB9LFxuKTtcbklucHV0LmRpc3BsYXlOYW1lID0gXCJJbnB1dFwiO1xuXG5leHBvcnQgeyBJbnB1dCB9O1xuIiwgImltcG9ydCAqIGFzIFNlbGVjdFByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXNlbGVjdFwiO1xuaW1wb3J0IHsgQ2hlY2ssIENoZXZyb25Eb3duLCBDaGV2cm9uVXAgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IENvbXBvbmVudFByb3BzV2l0aG91dFJlZiwgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IFNlbGVjdCA9IFNlbGVjdFByaW1pdGl2ZS5Sb290O1xuXG5jb25zdCBTZWxlY3RHcm91cCA9IFNlbGVjdFByaW1pdGl2ZS5Hcm91cDtcblxuY29uc3QgU2VsZWN0VmFsdWUgPSBTZWxlY3RQcmltaXRpdmUuVmFsdWU7XG5cbmNvbnN0IFNlbGVjdFRyaWdnZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuVHJpZ2dlcj4sXG4gIENvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlRyaWdnZXI+ICYgeyBsYWJlbD86IFJlYWN0Tm9kZSB9XG4+KCh7IGNsYXNzTmFtZSwgY2hpbGRyZW4sIGxhYmVsLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5UcmlnZ2VyXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtZmxleCBwcy1oLTkgcHMtdy1mdWxsIHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtd2hpdGVzcGFjZS1ub3dyYXAgcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYm9yZGVyLWlucHV0IHBzLWJnLXRyYW5zcGFyZW50IHBzLXB4LTMgcHMtcHktMiBwcy10ZXh0LXNtIHBzLXNoYWRvdy1zbSBwcy1yaW5nLW9mZnNldC1iYWNrZ3JvdW5kIGRhdGEtW3BsYWNlaG9sZGVyXTpwcy10ZXh0LW11dGVkLWZvcmVncm91bmQgZm9jdXM6cHMtb3V0bGluZS1ub25lIGZvY3VzOnBzLXJpbmctMSBmb2N1czpwcy1yaW5nLXJpbmcgZGlzYWJsZWQ6cHMtY3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOnBzLW9wYWNpdHktNTAgWyY+c3Bhbl06cHMtbGluZS1jbGFtcC0xXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0xXCI+XG4gICAgICB7bGFiZWwgJiYgPHNwYW4gY2xhc3NOYW1lPVwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+e2xhYmVsfTo8L3NwYW4+fVxuICAgICAge2NoaWxkcmVufVxuICAgIDwvZGl2PlxuICAgIDxTZWxlY3RQcmltaXRpdmUuSWNvbiBhc0NoaWxkPlxuICAgICAgPENoZXZyb25Eb3duIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTQgcHMtb3BhY2l0eS01MFwiIC8+XG4gICAgPC9TZWxlY3RQcmltaXRpdmUuSWNvbj5cbiAgPC9TZWxlY3RQcmltaXRpdmUuVHJpZ2dlcj5cbikpO1xuU2VsZWN0VHJpZ2dlci5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5UcmlnZ2VyLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RTY3JvbGxVcEJ1dHRvbiA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxVcEJ1dHRvbj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLXB5LTFcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8Q2hldnJvblVwIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTRcIiAvPlxuICA8L1NlbGVjdFByaW1pdGl2ZS5TY3JvbGxVcEJ1dHRvbj5cbikpO1xuU2VsZWN0U2Nyb2xsVXBCdXR0b24uZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsVXBCdXR0b24uZGlzcGxheU5hbWU7XG5cbmNvbnN0IFNlbGVjdFNjcm9sbERvd25CdXR0b24gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvbj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNjcm9sbERvd25CdXR0b24+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvblxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlciBwcy1weS0xXCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPENoZXZyb25Eb3duIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTRcIiAvPlxuICA8L1NlbGVjdFByaW1pdGl2ZS5TY3JvbGxEb3duQnV0dG9uPlxuKSk7XG5TZWxlY3RTY3JvbGxEb3duQnV0dG9uLmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLlNjcm9sbERvd25CdXR0b24uZGlzcGxheU5hbWU7XG5cbmNvbnN0IFNlbGVjdENvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgY2hpbGRyZW4sIHBvc2l0aW9uID0gXCJwb3BwZXJcIiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuUG9ydGFsPlxuICAgIDxTZWxlY3RQcmltaXRpdmUuQ29udGVudFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLXJlbGF0aXZlIHBzLXotNTAgcHMtbWF4LWgtWy0tcmFkaXgtc2VsZWN0LWNvbnRlbnQtYXZhaWxhYmxlLWhlaWdodF0gcHMtbWluLXctWzhyZW1dIHBzLW92ZXJmbG93LXktYXV0byBwcy1vdmVyZmxvdy14LWhpZGRlbiBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1tZCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1hbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtYW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1mYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLXpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnBzLXpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnBzLXNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpwcy1zbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06cHMtc2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnBzLXNsaWRlLWluLWZyb20tYm90dG9tLTIgcHMtb3JpZ2luLVstLXJhZGl4LXNlbGVjdC1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5dXCIsXG4gICAgICAgIHBvc2l0aW9uID09PSBcInBvcHBlclwiICYmXG4gICAgICAgICAgXCJkYXRhLVtzaWRlPWJvdHRvbV06cHMtdHJhbnNsYXRlLXktMSBkYXRhLVtzaWRlPWxlZnRdOnBzLS10cmFuc2xhdGUteC0xIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXRyYW5zbGF0ZS14LTEgZGF0YS1bc2lkZT10b3BdOnBzLS10cmFuc2xhdGUteS0xXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICBwb3NpdGlvbj17cG9zaXRpb259XG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAgPFNlbGVjdFNjcm9sbFVwQnV0dG9uIC8+XG4gICAgICA8U2VsZWN0UHJpbWl0aXZlLlZpZXdwb3J0XG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgXCJwcy1wLTFcIixcbiAgICAgICAgICBwb3NpdGlvbiA9PT0gXCJwb3BwZXJcIiAmJlxuICAgICAgICAgICAgXCJwcy1oLVt2YXIoLS1yYWRpeC1zZWxlY3QtdHJpZ2dlci1oZWlnaHQpXSBwcy13LWZ1bGwgcHMtbWluLXctW3ZhcigtLXJhZGl4LXNlbGVjdC10cmlnZ2VyLXdpZHRoKV1cIixcbiAgICAgICAgKX1cbiAgICAgID5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9TZWxlY3RQcmltaXRpdmUuVmlld3BvcnQ+XG4gICAgICA8U2VsZWN0U2Nyb2xsRG93bkJ1dHRvbiAvPlxuICAgIDwvU2VsZWN0UHJpbWl0aXZlLkNvbnRlbnQ+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLlBvcnRhbD5cbikpO1xuU2VsZWN0Q29udGVudC5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RMYWJlbCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5MYWJlbD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLkxhYmVsPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLkxhYmVsXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcInBzLXB4LTIgcHMtcHktMS41IHBzLXRleHQtc20gcHMtZm9udC1zZW1pYm9sZFwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuU2VsZWN0TGFiZWwuZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuTGFiZWwuZGlzcGxheU5hbWU7XG5cbmNvbnN0IFNlbGVjdEl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuSXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLkl0ZW0+XG4+KCh7IGNsYXNzTmFtZSwgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLkl0ZW1cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLXctZnVsbCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1zbSBwcy1weS0xLjUgcHMtcGwtMiBwcy1wci04IHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIGZvY3VzOnBzLWJnLWFjY2VudCBmb2N1czpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpwcy1vcGFjaXR5LTUwXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1hYnNvbHV0ZSBwcy1yaWdodC0yIHBzLWZsZXggcHMtaC0zLjUgcHMtdy0zLjUgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyXCI+XG4gICAgICA8U2VsZWN0UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgICAgIDxDaGVjayBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00XCIgLz5cbiAgICAgIDwvU2VsZWN0UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgPC9zcGFuPlxuICAgIDxTZWxlY3RQcmltaXRpdmUuSXRlbVRleHQ+e2NoaWxkcmVufTwvU2VsZWN0UHJpbWl0aXZlLkl0ZW1UZXh0PlxuICA8L1NlbGVjdFByaW1pdGl2ZS5JdGVtPlxuKSk7XG5TZWxlY3RJdGVtLmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLkl0ZW0uZGlzcGxheU5hbWU7XG5cbmNvbnN0IFNlbGVjdFNlcGFyYXRvciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5TZXBhcmF0b3I+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5TZXBhcmF0b3I+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuU2VwYXJhdG9yIHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKFwicHMtLW14LTEgcHMtbXktMSBwcy1oLXB4IHBzLWJnLW11dGVkXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbikpO1xuU2VsZWN0U2VwYXJhdG9yLmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLlNlcGFyYXRvci5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHtcbiAgU2VsZWN0LFxuICBTZWxlY3RHcm91cCxcbiAgU2VsZWN0VmFsdWUsXG4gIFNlbGVjdFRyaWdnZXIsXG4gIFNlbGVjdENvbnRlbnQsXG4gIFNlbGVjdExhYmVsLFxuICBTZWxlY3RJdGVtLFxuICBTZWxlY3RTZXBhcmF0b3IsXG4gIFNlbGVjdFNjcm9sbFVwQnV0dG9uLFxuICBTZWxlY3RTY3JvbGxEb3duQnV0dG9uLFxufTtcbiIsICJpbXBvcnQgeyBEbmRDb250ZXh0LCB0eXBlIERyYWdFbmRFdmVudCwgTW91c2VTZW5zb3IsIHVzZVNlbnNvciwgdXNlU2Vuc29ycyB9IGZyb20gXCJAZG5kLWtpdC9jb3JlXCI7XG5pbXBvcnQgeyBhcnJheU1vdmUsIGhvcml6b250YWxMaXN0U29ydGluZ1N0cmF0ZWd5LCBTb3J0YWJsZUNvbnRleHQgfSBmcm9tIFwiQGRuZC1raXQvc29ydGFibGVcIjtcbmltcG9ydCB0eXBlIHsgQWNjZXNzb3JLZXlDb2x1bW5EZWZCYXNlLCBSb3dTZWxlY3Rpb25TdGF0ZSB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7XG4gIHR5cGUgQ29sdW1uUGlubmluZ1N0YXRlLFxuICB0eXBlIENvbHVtblNpemluZ1N0YXRlLFxuICBnZXRDb3JlUm93TW9kZWwsXG4gIHR5cGUgT25DaGFuZ2VGbixcbiAgdHlwZSBQYWdpbmF0aW9uU3RhdGUsXG4gIHR5cGUgU29ydGluZ1N0YXRlLFxuICB0eXBlIFRhYmxlIGFzIFJlYWN0VGFibGUsXG4gIHVzZVJlYWN0VGFibGUsXG59IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IFJlYWN0VGFibGVEZXZ0b29scyB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHNcIjtcbmltcG9ydCB7IEFuaW1hdGVQcmVzZW5jZSwgbW90aW9uIH0gZnJvbSBcIm1vdGlvbi9yZWFjdFwiO1xuaW1wb3J0IHsgQ29tcG9uZW50VHlwZSwgdHlwZSBSZWFjdE5vZGUsIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHR5cGUgeyBTb3J0T3JkZXJJdGVtIH0gZnJvbSBcIi4uLy4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgU2tlbGV0b24gfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9za2VsZXRvblwiO1xuaW1wb3J0IHsgVGFibGUsIFRhYmxlQm9keSwgVGFibGVDZWxsLCBUYWJsZUhlYWRlciwgVGFibGVSb3cgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS90YWJsZVwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vbGliL3V0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IENlbGxQcm9wcyB9IGZyb20gXCIuLi9jZWxsL0NlbGxcIjtcbmltcG9ydCB7IERhdGFHcmlkTG9hZGluZ0JhciB9IGZyb20gXCIuL0RhdGFHcmlkTG9hZGluZ0JhclwiO1xuaW1wb3J0IHsgRGF0YUdyaWRQYWdpbmF0aW9uIH0gZnJvbSBcIi4vRGF0YUdyaWRQYWdpbmF0aW9uXCI7XG5pbXBvcnQgeyBnZXRDb2x1bW5QaW5uaW5nU3R5bGVzIH0gZnJvbSBcIi4vZmVhdHVyZXMvY29sdW1uLXBpbm5pbmdcIjtcblxuLy8gQWRkIHRoaXMgbmV3IGNvbXBvbmVudCBmb3IgZHJhZ2dhYmxlIGhlYWRlciBjZWxsc1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFHcmlkUHJvcHMge1xuICBjb2x1bW5EZWZzOiBBY2Nlc3NvcktleUNvbHVtbkRlZkJhc2U8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+W107XG4gIGdldEJlZm9yZVJvd3M/KHRoaXM6IHZvaWQsIHRhYmxlOiBSZWFjdFRhYmxlPFJlY29yZDxzdHJpbmcsIHVua25vd24+Pik6IFJlYWN0Tm9kZTtcbiAgaXNMb2FkaW5nOiBib29sZWFuO1xuICBpc1Byb2Nlc3Npbmc6IGJvb2xlYW47XG4gIG9uUGFnaW5hdGlvbkNoYW5nZTogT25DaGFuZ2VGbjxQYWdpbmF0aW9uU3RhdGU+O1xuICBvblJvd1NlbGVjdGlvbkNoYW5nZTogT25DaGFuZ2VGbjxSb3dTZWxlY3Rpb25TdGF0ZT47XG4gIG9uU29ydGluZ0NoYW5nZT86IE9uQ2hhbmdlRm48U29ydE9yZGVySXRlbVtdPjtcbiAgcGFnZUNvdW50OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIHBhZ2luYXRpb25TdGF0ZTogUGFnaW5hdGlvblN0YXRlO1xuICByb3dzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdO1xuICByb3dTZWxlY3Rpb25TdGF0ZTogUm93U2VsZWN0aW9uU3RhdGU7XG4gIHNvcnRpbmdTdGF0ZT86IFNvcnRPcmRlckl0ZW1bXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGFHcmlkKHByb3BzOiBEYXRhR3JpZFByb3BzKSB7XG4gIGNvbnN0IHtcbiAgICBjb2x1bW5EZWZzLFxuICAgIGdldEJlZm9yZVJvd3MsXG4gICAgaXNMb2FkaW5nLFxuICAgIGlzUHJvY2Vzc2luZyxcbiAgICBvblBhZ2luYXRpb25DaGFuZ2UsXG4gICAgb25Sb3dTZWxlY3Rpb25DaGFuZ2UsXG4gICAgb25Tb3J0aW5nQ2hhbmdlLFxuICAgIHBhZ2VDb3VudCxcbiAgICBwYWdpbmF0aW9uU3RhdGUsXG4gICAgcm93cyxcbiAgICByb3dTZWxlY3Rpb25TdGF0ZSxcbiAgICBzb3J0aW5nU3RhdGUsXG4gIH0gPSBwcm9wcztcblxuICBjb25zdCBbY29sdW1uT3JkZXIsIHNldENvbHVtbk9yZGVyXSA9IHVzZVN0YXRlPHN0cmluZ1tdPihbXSk7XG4gIGNvbnN0IFtjb2x1bW5QaW5uaW5nLCBzZXRDb2x1bW5QaW5uaW5nXSA9IHVzZVN0YXRlPENvbHVtblBpbm5pbmdTdGF0ZT4oeyBsZWZ0OiBbXCJfX3BzX3NlbGVjdFwiXSwgcmlnaHQ6IFtdIH0pO1xuICBjb25zdCBbY29sdW1uU2l6aW5nLCBzZXRDb2x1bW5TaXppbmddID0gdXNlU3RhdGU8Q29sdW1uU2l6aW5nU3RhdGU+KHt9KTtcbiAgY29uc3Qgc29ydGluZyA9IHVzZU1lbW8oKCkgPT4gdG9Tb3J0aW5nU3RhdGUoc29ydGluZ1N0YXRlKSwgW3NvcnRpbmdTdGF0ZV0pO1xuICBjb25zdCBkaXNwbGF5TG9hZGVyID0gaXNMb2FkaW5nIHx8IGlzUHJvY2Vzc2luZztcblxuICAvLyBSZXNldCBjb2x1bW4gb3JkZXIsIHBpbm5pbmcsIGFuZCBzaXppbmcgd2hlbiBjb2x1bW5EZWZzIGNoYW5nZSAod2hpY2ggaGFwcGVucyB3aGVuIHRhYmxlIGNoYW5nZXMpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0Q29sdW1uT3JkZXIoY29sdW1uRGVmcy5tYXAoKHsgYWNjZXNzb3JLZXkgfSkgPT4gYWNjZXNzb3JLZXkpKTtcbiAgICBzZXRDb2x1bW5QaW5uaW5nKHsgbGVmdDogW1wiX19wc19zZWxlY3RcIl0sIHJpZ2h0OiBbXSB9KTtcbiAgICBzZXRDb2x1bW5TaXppbmcoe30pO1xuICB9LCBbY29sdW1uRGVmc10pO1xuXG4gIC8vIGhhbmRsZXMgbW92aW5nIGFuZCByZS1vcmRlcmluZyBvZiB0aGUgY29sdW1ucyBhbmQgc3RhdGVcbiAgZnVuY3Rpb24gaGFuZGxlRHJhZ0VuZCh7IGFjdGl2ZSwgb3ZlciB9OiBEcmFnRW5kRXZlbnQpIHtcbiAgICBpZiAob3ZlciAmJiBhY3RpdmUuaWQgIT09IG92ZXIuaWQpIHtcbiAgICAgIHNldENvbHVtbk9yZGVyKChvcmRlcikgPT4ge1xuICAgICAgICBjb25zdCBhY3RpdmVJbmRleCA9IG9yZGVyLmluZGV4T2YoYWN0aXZlLmlkIGFzIHN0cmluZyk7XG4gICAgICAgIGNvbnN0IG92ZXJJbmRleCA9IG9yZGVyLmluZGV4T2Yob3Zlci5pZCBhcyBzdHJpbmcpO1xuICAgICAgICByZXR1cm4gYXJyYXlNb3ZlKG9yZGVyLCBhY3RpdmVJbmRleCwgb3ZlckluZGV4KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIENvbmZpZ3VyZSB0aGUgbW91c2Ugc2Vuc29yIGZvciBkcmFnIGFuZCBkcm9wXG4gIGNvbnN0IG1vdXNlU2Vuc29yID0gdXNlU2Vuc29yKE1vdXNlU2Vuc29yLCB7XG4gICAgLy8gUmVxdWlyZSB0aGUgbW91c2UgdG8gbW92ZSBieSAxMCBwaXhlbHMgYmVmb3JlIGFjdGl2YXRpbmdcbiAgICBhY3RpdmF0aW9uQ29uc3RyYWludDoge1xuICAgICAgZGlzdGFuY2U6IDEwLFxuICAgIH0sXG4gIH0pO1xuICBjb25zdCBzZW5zb3JzID0gdXNlU2Vuc29ycyhtb3VzZVNlbnNvcik7XG5cbiAgY29uc3QgdGFibGUgPSB1c2VSZWFjdFRhYmxlKHtcbiAgICBjb2x1bW5SZXNpemVNb2RlOiBcIm9uQ2hhbmdlXCIsXG4gICAgY29sdW1uczogY29sdW1uRGVmcyxcbiAgICBkYXRhOiByb3dzLFxuICAgIGRlZmF1bHRDb2x1bW46IHsgc2l6ZTogMjAwLCBtaW5TaXplOiA1MCwgbWF4U2l6ZTogNTAwIH0sXG4gICAgZW5hYmxlQ29sdW1uUGlubmluZzogdHJ1ZSxcbiAgICBlbmFibGVDb2x1bW5SZXNpemluZzogdHJ1ZSxcbiAgICBlbmFibGVSb3dTZWxlY3Rpb246IHRydWUsXG4gICAgZW5hYmxlU29ydGluZzogQm9vbGVhbihvblNvcnRpbmdDaGFuZ2UgJiYgc29ydGluZ1N0YXRlKSxcbiAgICBnZXRDb3JlUm93TW9kZWw6IGdldENvcmVSb3dNb2RlbCgpLFxuICAgIGdldFJvd0lkOiAoeyBfX3BzX3Jvd2lkIH0pID0+IF9fcHNfcm93aWQgYXMgc3RyaW5nLFxuICAgIG1hbnVhbFBhZ2luYXRpb246IHRydWUsXG4gICAgbWFudWFsU29ydGluZzogdHJ1ZSxcbiAgICBvbkNvbHVtbk9yZGVyQ2hhbmdlOiBzZXRDb2x1bW5PcmRlcixcbiAgICBvbkNvbHVtblBpbm5pbmdDaGFuZ2U6IHNldENvbHVtblBpbm5pbmcsXG4gICAgb25Db2x1bW5TaXppbmdDaGFuZ2U6IHNldENvbHVtblNpemluZyxcbiAgICBvblBhZ2luYXRpb25DaGFuZ2UsXG4gICAgb25Sb3dTZWxlY3Rpb25DaGFuZ2UsXG4gICAgb25Tb3J0aW5nQ2hhbmdlOiAodXBkYXRlck9yVmFsdWUpID0+XG4gICAgICBvblNvcnRpbmdDaGFuZ2U/Ligob2xkKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgdXBkYXRlck9yVmFsdWUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgIHVwZGF0ZXJPclZhbHVlID0gdXBkYXRlck9yVmFsdWUodG9Tb3J0aW5nU3RhdGUob2xkKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdG9Tb3J0T3JkZXJJdGVtcyh1cGRhdGVyT3JWYWx1ZSk7XG4gICAgICB9KSxcbiAgICBwYWdlQ291bnQsXG4gICAgc3RhdGU6IHtcbiAgICAgIGNvbHVtbk9yZGVyLFxuICAgICAgY29sdW1uUGlubmluZyxcbiAgICAgIGNvbHVtblNpemluZyxcbiAgICAgIHBhZ2luYXRpb246IHBhZ2luYXRpb25TdGF0ZSxcbiAgICAgIHJvd1NlbGVjdGlvbjogcm93U2VsZWN0aW9uU3RhdGUsXG4gICAgICBzb3J0aW5nLFxuICAgIH0sXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHsvKiBUT0RPOiBwYXRjaCBzbyBpdCBpcyBub3QgYnVuZGxlZCBsaWtlIHJlYWN0LXF1ZXJ5IGRldnRvb2xzLCBvciByZW1vdmUgY29tcGxldGVseSBvbmNlIGRhdGEgZ3JpZCBpcyBzdGFibGUgYW5kIHRlc3RlZC4gKi99XG4gICAgICB7cHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gbnVsbCA6IDxSZWFjdFRhYmxlRGV2dG9vbHMgdGFibGU9e3RhYmxlfSAvPn1cbiAgICAgIDxkaXYgZGF0YS1zdHVkaW89XCJjb250ZW50XCIgY2xhc3NOYW1lPVwicHMtZmxleC0xIHBzLXctMCBwcy1oLTAgcHMtbWluLXctZnVsbCBwcy1mbGV4IHBzLWZsZXgtY29sIHBzLXJlbGF0aXZlXCI+XG4gICAgICAgIDxkaXY+e2Rpc3BsYXlMb2FkZXIgJiYgPERhdGFHcmlkTG9hZGluZ0JhciBjbGFzc05hbWU9XCJwcy1hYnNvbHV0ZSAtcHMtdG9wLVsxcHhdIHBzLWxlZnQtMCBwcy1yaWdodC0wXCIgLz59PC9kaXY+XG4gICAgICAgIDxEbmRDb250ZXh0IHNlbnNvcnM9e3NlbnNvcnN9IG9uRHJhZ0VuZD17aGFuZGxlRHJhZ0VuZH0+XG4gICAgICAgICAgPFRhYmxlIGNsYXNzTmFtZT1cInBzLXRhYmxlLWZpeGVkIHBzLWJvcmRlci1zZXBhcmF0ZSBwcy1ib3JkZXItc3BhY2luZy0wIHBzLWJveC1ib3JkZXIgcHMtdy1hdXRvXCI+XG4gICAgICAgICAgICA8VGFibGVIZWFkZXI+XG4gICAgICAgICAgICAgIHt0YWJsZS5nZXRIZWFkZXJHcm91cHMoKS5tYXAoKGhlYWRlckdyb3VwKSA9PiAoXG4gICAgICAgICAgICAgICAgPFRhYmxlUm93IGtleT17aGVhZGVyR3JvdXAuaWR9PlxuICAgICAgICAgICAgICAgICAgPFNvcnRhYmxlQ29udGV4dFxuICAgICAgICAgICAgICAgICAgICBpdGVtcz17aGVhZGVyR3JvdXAuaGVhZGVycy5tYXAoKGhlYWRlcikgPT4gaGVhZGVyLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgc3RyYXRlZ3k9e2hvcml6b250YWxMaXN0U29ydGluZ1N0cmF0ZWd5fVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7aGVhZGVyR3JvdXAuaGVhZGVycy5tYXAoKGhlYWRlciwgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgaGVhZGVyLmNvbHVtbi5jb2x1bW5EZWYuaGVhZGVyID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgSGVhZGVyID0gQ29tcG9uZW50VHlwZTxPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj4+O1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSGVhZGVyID0gaGVhZGVyLmNvbHVtbi5jb2x1bW5EZWYuaGVhZGVyKGhlYWRlci5nZXRDb250ZXh0KCkpIGFzIEhlYWRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8SGVhZGVyIGtleT17aX0gey4uLmdldENvbHVtblBpbm5pbmdTdHlsZXMoaGVhZGVyLmNvbHVtbiwgXCJoZWFkZXJcIil9IC8+O1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgIDwvU29ydGFibGVDb250ZXh0PlxuICAgICAgICAgICAgICAgIDwvVGFibGVSb3c+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9UYWJsZUhlYWRlcj5cbiAgICAgICAgICAgIDxUYWJsZUJvZHk+XG4gICAgICAgICAgICAgIHtnZXRCZWZvcmVSb3dzPy4odGFibGUpfVxuICAgICAgICAgICAgICB7dGFibGUuZ2V0Um93TW9kZWwoKS5yb3dzPy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgICAgdGFibGUuZ2V0Um93TW9kZWwoKS5yb3dzLm1hcCgocm93KSA9PiAoXG4gICAgICAgICAgICAgICAgICA8VGFibGVSb3dcbiAgICAgICAgICAgICAgICAgICAga2V5PXtyb3cuaWR9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgICAgICAgXCJwcy1iZy10YWJsZS1yb3cgcHMtb2RkOmJnLXRhYmxlLXJvdy1vZGQgcHMtZ3JvdXAgWyY6bGFzdC1vZi10eXBlX3RkXTpwcy1ib3JkZXItYi0wIHBzLWdyb3VwXCIsXG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtyb3cuZ2V0VmlzaWJsZUNlbGxzKCkubWFwKChjZWxsLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjZWxsLmNvbHVtbi5jb2x1bW5EZWYuY2VsbCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlIENlbGwgPSBDb21wb25lbnRUeXBlPE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPj47XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDZWxsID0gY2VsbC5jb2x1bW4uY29sdW1uRGVmLmNlbGwoY2VsbC5nZXRDb250ZXh0KCkpIGFzIENlbGw7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPENlbGwga2V5PXtpfSB7Li4uZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyhjZWxsLmNvbHVtbiwgXCJjZWxsXCIpfSAvPjtcbiAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICA8L1RhYmxlUm93PlxuICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPFRhYmxlUm93PlxuICAgICAgICAgICAgICAgICAgPFRhYmxlQ2VsbFxuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuPXtjb2x1bW5EZWZzLmxlbmd0aH1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtaC0yNCBwcy10ZXh0LWxlZnQgcHMtcC1bdmFyKC0tc3R1ZGlvLWNlbGwtc3BhY2luZyldXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge2lzTG9hZGluZyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U2tlbGV0b24gY2xhc3NOYW1lPVwicHMtaC00IHBzLXctZnVsbFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U2tlbGV0b24gY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNC81XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTa2VsZXRvbiBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy0yLzNcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9UYWJsZUNlbGw+XG4gICAgICAgICAgICAgICAgPC9UYWJsZVJvdz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvVGFibGVCb2R5PlxuICAgICAgICAgIDwvVGFibGU+XG4gICAgICAgIDwvRG5kQ29udGV4dD5cbiAgICAgICAgeyFwYWdlQ291bnQgfHwgcGFnZUNvdW50IDwgMiA/IG51bGwgOiA8RGF0YUdyaWRQYWdpbmF0aW9uIHRhYmxlPXt0YWJsZX0gdmFyaWFudD1cIm51bWVyaWNcIiAvPn1cblxuICAgICAgICA8QW5pbWF0ZVByZXNlbmNlIG1vZGU9XCJ3YWl0XCI+XG4gICAgICAgICAge3RhYmxlLmdldFJvd01vZGVsKCkucm93cz8ubGVuZ3RoID09PSAwICYmICFpc0xvYWRpbmcgJiYgIWlzUHJvY2Vzc2luZyAmJiAoXG4gICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlciBwcy1hYnNvbHV0ZSAtcHMtaW5zZXQtMCBwcy1wb2ludGVyLWV2ZW50cy1ub25lXCJcbiAgICAgICAgICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwIH19XG4gICAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSB9fVxuICAgICAgICAgICAgICBleGl0PXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC0xIHBzLXRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy10ZXh0LXNtIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPk5vIHJlc3VsdHMgZm91bmQ8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgICAgICAgICAgICBJdCBkb2VzbiZhcG9zO3QgbG9vayBsaWtlIHlvdSBoYXZlIGFueSBkYXRhIGluIHRoaXMgdGFibGUuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvQW5pbWF0ZVByZXNlbmNlPlxuICAgICAgPC9kaXY+XG4gICAgPC8+XG4gICk7XG59XG5cbmZ1bmN0aW9uIHRvU29ydGluZ1N0YXRlKGZyb206IFNvcnRPcmRlckl0ZW1bXSB8IHVuZGVmaW5lZCk6IFNvcnRpbmdTdGF0ZSB7XG4gIHJldHVybiBmcm9tPy5tYXAoKGl0ZW0pID0+ICh7IGlkOiBpdGVtLmNvbHVtbiwgZGVzYzogaXRlbS5kaXJlY3Rpb24gPT09IFwiZGVzY1wiIH0pKSB8fCBbXTtcbn1cblxuZnVuY3Rpb24gdG9Tb3J0T3JkZXJJdGVtcyhmcm9tOiBTb3J0aW5nU3RhdGUpOiBTb3J0T3JkZXJJdGVtW10ge1xuICByZXR1cm4gZnJvbS5tYXAoKGl0ZW0pID0+ICh7XG4gICAgY29sdW1uOiBpdGVtLmlkLFxuICAgIGRpcmVjdGlvbjogaXRlbS5kZXNjID8gXCJkZXNjXCIgOiBcImFzY1wiLFxuICB9KSk7XG59XG4iLCAiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5jb25zdCBnZXRJdGVtID0gKGtleTogc3RyaW5nKTogdW5rbm93biA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgaXRlbVZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KVxuICAgIGlmICh0eXBlb2YgaXRlbVZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoaXRlbVZhbHVlKVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VMb2NhbFN0b3JhZ2U8VD4oXG4gIGtleTogc3RyaW5nLFxuICBkZWZhdWx0VmFsdWU6IFQgfCB1bmRlZmluZWRcbik6IFtUIHwgdW5kZWZpbmVkLCAobmV3VmFsOiBUIHwgKChwcmV2VmFsOiBUKSA9PiBUKSkgPT4gdm9pZF0ge1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IFJlYWN0LnVzZVN0YXRlPFQ+KClcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGluaXRpYWxWYWx1ZSA9IGdldEl0ZW0oa2V5KSBhcyBUIHwgdW5kZWZpbmVkXG5cbiAgICBpZiAodHlwZW9mIGluaXRpYWxWYWx1ZSA9PT0gJ3VuZGVmaW5lZCcgfHwgaW5pdGlhbFZhbHVlID09PSBudWxsKSB7XG4gICAgICBzZXRWYWx1ZShcbiAgICAgICAgdHlwZW9mIGRlZmF1bHRWYWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IGRlZmF1bHRWYWx1ZSgpIDogZGVmYXVsdFZhbHVlXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFZhbHVlKGluaXRpYWxWYWx1ZSlcbiAgICB9XG4gIH0sIFtkZWZhdWx0VmFsdWUsIGtleV0pXG5cbiAgY29uc3Qgc2V0dGVyID0gUmVhY3QudXNlQ2FsbGJhY2soXG4gICAgKHVwZGF0ZXI6IGFueSkgPT4ge1xuICAgICAgc2V0VmFsdWUob2xkID0+IHtcbiAgICAgICAgbGV0IG5ld1ZhbCA9IHVwZGF0ZXJcblxuICAgICAgICBpZiAodHlwZW9mIHVwZGF0ZXIgPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIG5ld1ZhbCA9IHVwZGF0ZXIob2xkKVxuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCBKU09OLnN0cmluZ2lmeShuZXdWYWwpKVxuICAgICAgICB9IGNhdGNoIHt9XG5cbiAgICAgICAgcmV0dXJuIG5ld1ZhbFxuICAgICAgfSlcbiAgICB9LFxuICAgIFtrZXldXG4gIClcblxuICByZXR1cm4gW3ZhbHVlLCBzZXR0ZXJdXG59XG4iLCAiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdFRoZW1lID0ge1xuICBiYWNrZ3JvdW5kOiAnIzBiMTUyMScsXG4gIGJhY2tncm91bmRBbHQ6ICcjMTMyMzM3JyxcbiAgZm9yZWdyb3VuZDogJ3doaXRlJyxcbiAgZ3JheTogJyMzZjRlNjAnLFxuICBncmF5QWx0OiAnIzIyMmUzZScsXG4gIGlucHV0QmFja2dyb3VuZENvbG9yOiAnI2ZmZicsXG4gIGlucHV0VGV4dENvbG9yOiAnIzAwMCcsXG4gIHN1Y2Nlc3M6ICcjMDBhYjUyJyxcbiAgZGFuZ2VyOiAnI2ZmMDA4NScsXG4gIGFjdGl2ZTogJyMwMDZiZmYnLFxuICB3YXJuaW5nOiAnI2ZmYjIwMCcsXG59IGFzIGNvbnN0XG5cbmV4cG9ydCB0eXBlIFRoZW1lID0gdHlwZW9mIGRlZmF1bHRUaGVtZVxuaW50ZXJmYWNlIFByb3ZpZGVyUHJvcHMge1xuICB0aGVtZTogVGhlbWVcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGVcbn1cblxuY29uc3QgVGhlbWVDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dChkZWZhdWx0VGhlbWUpXG5cbmV4cG9ydCBmdW5jdGlvbiBUaGVtZVByb3ZpZGVyKHsgdGhlbWUsIC4uLnJlc3QgfTogUHJvdmlkZXJQcm9wcykge1xuICByZXR1cm4gPFRoZW1lQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17dGhlbWV9IHsuLi5yZXN0fSAvPlxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlVGhlbWUoKSB7XG4gIHJldHVybiBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dClcbn1cbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZU1lZGlhUXVlcnkocXVlcnk6IHN0cmluZyk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAvLyBLZWVwIHRyYWNrIG9mIHRoZSBwcmVmZXJlbmNlIGluIHN0YXRlLCBzdGFydCB3aXRoIHRoZSBjdXJyZW50IG1hdGNoXG4gIGNvbnN0IFtpc01hdGNoLCBzZXRJc01hdGNoXSA9IFJlYWN0LnVzZVN0YXRlKCgpID0+IHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiB3aW5kb3cubWF0Y2hNZWRpYSAmJiB3aW5kb3cubWF0Y2hNZWRpYShxdWVyeSkubWF0Y2hlc1xuICAgIH1cbiAgfSlcblxuICAvLyBXYXRjaCBmb3IgY2hhbmdlc1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgaWYgKCF3aW5kb3cubWF0Y2hNZWRpYSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gQ3JlYXRlIGEgbWF0Y2hlclxuICAgICAgY29uc3QgbWF0Y2hlciA9IHdpbmRvdy5tYXRjaE1lZGlhKHF1ZXJ5KVxuXG4gICAgICAvLyBDcmVhdGUgb3VyIGhhbmRsZXJcbiAgICAgIGNvbnN0IG9uQ2hhbmdlID0gKHsgbWF0Y2hlcyB9OiB7IG1hdGNoZXM6IGJvb2xlYW4gfSkgPT5cbiAgICAgICAgc2V0SXNNYXRjaChtYXRjaGVzKVxuXG4gICAgICAvLyBMaXN0ZW4gZm9yIGNoYW5nZXNcbiAgICAgIG1hdGNoZXIuYWRkTGlzdGVuZXIob25DaGFuZ2UpXG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIC8vIFN0b3AgbGlzdGVuaW5nIGZvciBjaGFuZ2VzXG4gICAgICAgIG1hdGNoZXIucmVtb3ZlTGlzdGVuZXIob25DaGFuZ2UpXG4gICAgICB9XG4gICAgfVxuICB9LCBbaXNNYXRjaCwgcXVlcnksIHNldElzTWF0Y2hdKVxuXG4gIHJldHVybiBpc01hdGNoXG59XG4iLCAiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgeyBUaGVtZSwgdXNlVGhlbWUgfSBmcm9tICcuL3RoZW1lJ1xuaW1wb3J0IHVzZU1lZGlhUXVlcnkgZnJvbSAnLi91c2VNZWRpYVF1ZXJ5J1xuXG5jb25zdCBpc1NlcnZlciA9IHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnXG5cbnR5cGUgU3R5bGVkQ29tcG9uZW50PFQ+ID0gVCBleHRlbmRzICdidXR0b24nXG4gID8gUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8XG4gICAgICBSZWFjdC5CdXR0b25IVE1MQXR0cmlidXRlczxIVE1MQnV0dG9uRWxlbWVudD4sXG4gICAgICBIVE1MQnV0dG9uRWxlbWVudFxuICAgID5cbiAgOiBUIGV4dGVuZHMgJ2lucHV0J1xuICAgID8gUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8XG4gICAgICAgIFJlYWN0LklucHV0SFRNTEF0dHJpYnV0ZXM8SFRNTElucHV0RWxlbWVudD4sXG4gICAgICAgIEhUTUxJbnB1dEVsZW1lbnRcbiAgICAgID5cbiAgICA6IFQgZXh0ZW5kcyAnc2VsZWN0J1xuICAgICAgPyBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxcbiAgICAgICAgICBSZWFjdC5TZWxlY3RIVE1MQXR0cmlidXRlczxIVE1MU2VsZWN0RWxlbWVudD4sXG4gICAgICAgICAgSFRNTFNlbGVjdEVsZW1lbnRcbiAgICAgICAgPlxuICAgICAgOiBUIGV4dGVuZHMga2V5b2YgSFRNTEVsZW1lbnRUYWdOYW1lTWFwXG4gICAgICAgID8gUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnRUYWdOYW1lTWFwW1RdPlxuICAgICAgICA6IG5ldmVyXG5cbi8vIGV4cG9ydCBmdW5jdGlvbiBnZXRTdGF0dXNDb2xvcihtYXRjaDogUm91dGVNYXRjaCwgdGhlbWU6IFRoZW1lKSB7XG4vLyAgIHJldHVybiBtYXRjaC5pc0xvYWRpbmdcbi8vICAgICA/IHRoZW1lLmFjdGl2ZVxuLy8gICAgIDogbWF0Y2guc3RhdHVzID09PSAncmVqZWN0ZWQnXG4vLyAgICAgPyB0aGVtZS5kYW5nZXJcbi8vICAgICA6IG1hdGNoLnN0YXR1cyA9PT0gJ3BlbmRpbmcnXG4vLyAgICAgPyB0aGVtZS53YXJuaW5nXG4vLyAgICAgOiB0aGVtZS5zdWNjZXNzXG4vLyB9XG5cbi8vIGV4cG9ydCBmdW5jdGlvbiBnZXRRdWVyeVN0YXR1c0xhYmVsKHF1ZXJ5OiBRdWVyeSkge1xuLy8gICByZXR1cm4gcXVlcnkuc3RhdGUuaXNGZXRjaGluZ1xuLy8gICAgID8gJ2ZldGNoaW5nJ1xuLy8gICAgIDogIXF1ZXJ5LmdldE9ic2VydmVyc0NvdW50KClcbi8vICAgICA/ICdpbmFjdGl2ZSdcbi8vICAgICA6IHF1ZXJ5LmlzU3RhbGUoKVxuLy8gICAgID8gJ3N0YWxlJ1xuLy8gICAgIDogJ2ZyZXNoJ1xuLy8gfVxuXG50eXBlIFN0eWxlcyA9XG4gIHwgUmVhY3QuQ1NTUHJvcGVydGllc1xuICB8ICgocHJvcHM6IFJlY29yZDxzdHJpbmcsIGFueT4sIHRoZW1lOiBUaGVtZSkgPT4gUmVhY3QuQ1NTUHJvcGVydGllcylcblxuZXhwb3J0IGZ1bmN0aW9uIHN0eWxlZDxUIGV4dGVuZHMga2V5b2YgSFRNTEVsZW1lbnRUYWdOYW1lTWFwPihcbiAgdHlwZTogVCxcbiAgbmV3U3R5bGVzOiBTdHlsZXMsXG4gIHF1ZXJpZXM6IFJlY29yZDxzdHJpbmcsIFN0eWxlcz4gPSB7fVxuKSB7XG4gIHJldHVybiBSZWFjdC5mb3J3YXJkUmVmPEhUTUxFbGVtZW50VGFnTmFtZU1hcFtUXSwgU3R5bGVkQ29tcG9uZW50PFQ+PihcbiAgICAoeyBzdHlsZSwgLi4ucmVzdCB9LCByZWYpID0+IHtcbiAgICAgIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKVxuXG4gICAgICBjb25zdCBtZWRpYVN0eWxlcyA9IE9iamVjdC5lbnRyaWVzKHF1ZXJpZXMpLnJlZHVjZShcbiAgICAgICAgKGN1cnJlbnQsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rc1xuICAgICAgICAgIHJldHVybiB1c2VNZWRpYVF1ZXJ5KGtleSlcbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIC4uLmN1cnJlbnQsXG4gICAgICAgICAgICAgICAgLi4uKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IHZhbHVlKHJlc3QsIHRoZW1lKSA6IHZhbHVlKSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiBjdXJyZW50XG4gICAgICAgIH0sXG4gICAgICAgIHt9XG4gICAgICApXG5cbiAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KHR5cGUsIHtcbiAgICAgICAgLi4ucmVzdCxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAuLi4odHlwZW9mIG5ld1N0eWxlcyA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgPyBuZXdTdHlsZXMocmVzdCwgdGhlbWUpXG4gICAgICAgICAgICA6IG5ld1N0eWxlcyksXG4gICAgICAgICAgLi4uc3R5bGUsXG4gICAgICAgICAgLi4ubWVkaWFTdHlsZXMsXG4gICAgICAgIH0sXG4gICAgICAgIHJlZixcbiAgICAgIH0pXG4gICAgfVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VJc01vdW50ZWQoKSB7XG4gIGNvbnN0IG1vdW50ZWRSZWYgPSBSZWFjdC51c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGlzTW91bnRlZCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IG1vdW50ZWRSZWYuY3VycmVudCwgW10pXG5cbiAgUmVhY3RbaXNTZXJ2ZXIgPyAndXNlRWZmZWN0JyA6ICd1c2VMYXlvdXRFZmZlY3QnXSgoKSA9PiB7XG4gICAgbW91bnRlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBtb3VudGVkUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIH1cbiAgfSwgW10pXG5cbiAgcmV0dXJuIGlzTW91bnRlZFxufVxuXG4vKipcbiAqIFRoaXMgaG9vayBpcyBhIHNhZmUgdXNlU3RhdGUgdmVyc2lvbiB3aGljaCBzY2hlZHVsZXMgc3RhdGUgdXBkYXRlcyBpbiBtaWNyb3Rhc2tzXG4gKiB0byBwcmV2ZW50IHVwZGF0aW5nIGEgY29tcG9uZW50IHN0YXRlIHdoaWxlIFJlYWN0IGlzIHJlbmRlcmluZyBkaWZmZXJlbnQgY29tcG9uZW50c1xuICogb3Igd2hlbiB0aGUgY29tcG9uZW50IGlzIG5vdCBtb3VudGVkIGFueW1vcmUuXG4gKi9cbmZ1bmN0aW9uIHVzZVNhZmVTdGF0ZTxUPihpbml0aWFsU3RhdGU6IFQpOiBbVCwgKHZhbHVlOiBUKSA9PiB2b2lkXSB7XG4gIGNvbnN0IGlzTW91bnRlZCA9IHVzZUlzTW91bnRlZCgpXG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVdID0gUmVhY3QudXNlU3RhdGUoaW5pdGlhbFN0YXRlKVxuXG4gIGNvbnN0IHNhZmVTZXRTdGF0ZSA9IFJlYWN0LnVzZUNhbGxiYWNrKFxuICAgICh2YWx1ZTogVCkgPT4ge1xuICAgICAgc2NoZWR1bGVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICBpZiAoaXNNb3VudGVkKCkpIHtcbiAgICAgICAgICBzZXRTdGF0ZSh2YWx1ZSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9LFxuICAgIFtpc01vdW50ZWRdXG4gIClcblxuICByZXR1cm4gW3N0YXRlLCBzYWZlU2V0U3RhdGVdXG59XG5cbi8qKlxuICogU2NoZWR1bGVzIGEgbWljcm90YXNrLlxuICogVGhpcyBjYW4gYmUgdXNlZnVsIHRvIHNjaGVkdWxlIHN0YXRlIHVwZGF0ZXMgYWZ0ZXIgcmVuZGVyaW5nLlxuICovXG5mdW5jdGlvbiBzY2hlZHVsZU1pY3JvdGFzayhjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBQcm9taXNlLnJlc29sdmUoKVxuICAgIC50aGVuKGNhbGxiYWNrKVxuICAgIC5jYXRjaChlcnJvciA9PlxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRocm93IGVycm9yXG4gICAgICB9KVxuICAgIClcbn1cbiIsICJpbXBvcnQgeyBzdHlsZWQgfSBmcm9tICcuL3V0aWxzJ1xuXG5leHBvcnQgY29uc3QgUGFuZWwgPSBzdHlsZWQoXG4gICdkaXYnLFxuICAoX3Byb3BzLCB0aGVtZSkgPT4gKHtcbiAgICBmb250U2l6ZTogJ2NsYW1wKDEycHgsIDEuNXZ3LCAxNHB4KScsXG4gICAgZm9udEZhbWlseTogYHNhbnMtc2VyaWZgLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmJhY2tncm91bmQsXG4gICAgY29sb3I6IHRoZW1lLmZvcmVncm91bmQsXG4gIH0pLFxuICB7XG4gICAgJyhtYXgtd2lkdGg6IDcwMHB4KSc6IHtcbiAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgIH0sXG4gICAgJyhtYXgtd2lkdGg6IDYwMHB4KSc6IHtcbiAgICAgIGZvbnRTaXplOiAnLjllbScsXG4gICAgICAvLyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICB9LFxuICB9XG4pXG5cbmNvbnN0IEFjdGl2ZVBhbmVsID0gc3R5bGVkKFxuICAnZGl2JyxcbiAgKCkgPT4gKHtcbiAgICBmbGV4OiAnMSAxIDUwMHB4JyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgb3ZlcmZsb3c6ICdhdXRvJyxcbiAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgfSksXG4gIHtcbiAgICAnKG1heC13aWR0aDogNzAwcHgpJzogKF9wcm9wcywgdGhlbWUpID0+ICh7XG4gICAgICBib3JkZXJUb3A6IGAycHggc29saWQgJHt0aGVtZS5ncmF5fWAsXG4gICAgfSksXG4gIH1cbilcblxuZXhwb3J0IGNvbnN0IEJ1dHRvbiA9IHN0eWxlZCgnYnV0dG9uJywgKHByb3BzLCB0aGVtZSkgPT4gKHtcbiAgYXBwZWFyYW5jZTogJ25vbmUnLFxuICBmb250U2l6ZTogJy45ZW0nLFxuICBmb250V2VpZ2h0OiAnYm9sZCcsXG4gIGJhY2tncm91bmQ6IHRoZW1lLmdyYXksXG4gIGJvcmRlcjogJzAnLFxuICBib3JkZXJSYWRpdXM6ICcuM2VtJyxcbiAgY29sb3I6ICd3aGl0ZScsXG4gIHBhZGRpbmc6ICcuNWVtJyxcbiAgb3BhY2l0eTogcHJvcHMuZGlzYWJsZWQgPyAnLjUnIDogdW5kZWZpbmVkLFxuICBjdXJzb3I6ICdwb2ludGVyJyxcbn0pKVxuXG4vLyBleHBvcnQgY29uc3QgUXVlcnlLZXlzID0gc3R5bGVkKCdzcGFuJywge1xuLy8gICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbi8vICAgZm9udFNpemU6ICcwLjllbScsXG4vLyB9KVxuXG4vLyBleHBvcnQgY29uc3QgUXVlcnlLZXkgPSBzdHlsZWQoJ3NwYW4nLCB7XG4vLyAgIGRpc3BsYXk6ICdpbmxpbmUtZmxleCcsXG4vLyAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuLy8gICBwYWRkaW5nOiAnLjJlbSAuNGVtJyxcbi8vICAgZm9udFdlaWdodDogJ2JvbGQnLFxuLy8gICB0ZXh0U2hhZG93OiAnMCAwIDEwcHggYmxhY2snLFxuLy8gICBib3JkZXJSYWRpdXM6ICcuMmVtJyxcbi8vIH0pXG5cbmNvbnN0IENvZGUgPSBzdHlsZWQoJ2NvZGUnLCB7XG4gIGZvbnRTaXplOiAnLjllbScsXG59KVxuXG5jb25zdCBJbnB1dCA9IHN0eWxlZCgnaW5wdXQnLCAoX3Byb3BzLCB0aGVtZSkgPT4gKHtcbiAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5pbnB1dEJhY2tncm91bmRDb2xvcixcbiAgYm9yZGVyOiAwLFxuICBib3JkZXJSYWRpdXM6ICcuMmVtJyxcbiAgY29sb3I6IHRoZW1lLmlucHV0VGV4dENvbG9yLFxuICBmb250U2l6ZTogJy45ZW0nLFxuICBsaW5lSGVpZ2h0OiBgMS4zYCxcbiAgcGFkZGluZzogJy4zZW0gLjRlbScsXG59KSlcblxuY29uc3QgU2VsZWN0ID0gc3R5bGVkKFxuICAnc2VsZWN0JyxcbiAgKF9wcm9wcywgdGhlbWUpID0+ICh7XG4gICAgZGlzcGxheTogYGlubGluZS1ibG9ja2AsXG4gICAgZm9udFNpemU6IGAuOWVtYCxcbiAgICBmb250RmFtaWx5OiBgc2Fucy1zZXJpZmAsXG4gICAgZm9udFdlaWdodDogJ25vcm1hbCcsXG4gICAgbGluZUhlaWdodDogYDEuM2AsXG4gICAgcGFkZGluZzogYC4zZW0gMS41ZW0gLjNlbSAuNWVtYCxcbiAgICBoZWlnaHQ6ICdhdXRvJyxcbiAgICBib3JkZXI6IDAsXG4gICAgYm9yZGVyUmFkaXVzOiBgLjJlbWAsXG4gICAgYXBwZWFyYW5jZTogYG5vbmVgLFxuICAgIFdlYmtpdEFwcGVhcmFuY2U6ICdub25lJyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmlucHV0QmFja2dyb3VuZENvbG9yLFxuICAgIGJhY2tncm91bmRJbWFnZTogYHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMTAwJyBoZWlnaHQ9JzEwMCcgZmlsbD0nJTIzNDQ0NDQ0Jz48cG9seWdvbiBwb2ludHM9JzAsMjUgMTAwLDI1IDUwLDc1Jy8+PC9zdmc+XCIpYCxcbiAgICBiYWNrZ3JvdW5kUmVwZWF0OiBgbm8tcmVwZWF0YCxcbiAgICBiYWNrZ3JvdW5kUG9zaXRpb246IGByaWdodCAuNTVlbSBjZW50ZXJgLFxuICAgIGJhY2tncm91bmRTaXplOiBgLjY1ZW0gYXV0bywgMTAwJWAsXG4gICAgY29sb3I6IHRoZW1lLmlucHV0VGV4dENvbG9yLFxuICB9KSxcbiAge1xuICAgICcobWF4LXdpZHRoOiA1MDBweCknOiB7XG4gICAgICBkaXNwbGF5OiAnbm9uZScsXG4gICAgfSxcbiAgfVxuKVxuIiwgIi8vIEB0cy1ub2NoZWNrXG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSAnLi91dGlscydcblxuY29uc3QgRW50cnkgPSBzdHlsZWQoJ2RpdicsIHtcbiAgZm9udEZhbWlseTogJ01lbmxvLCBtb25vc3BhY2UnLFxuICBmb250U2l6ZTogJzAuN3JlbScsXG4gIGxpbmVIZWlnaHQ6ICcxLjcnLFxuICBvdXRsaW5lOiAnbm9uZScsXG4gIHdvcmRCcmVhazogJ2JyZWFrLXdvcmQnLFxufSlcblxuY29uc3QgTGFiZWwgPSBzdHlsZWQoJ3NwYW4nLCB7XG4gIGN1cnNvcjogJ3BvaW50ZXInLFxuICBjb2xvcjogJ3doaXRlJyxcbn0pXG5cbmNvbnN0IFZhbHVlID0gc3R5bGVkKCdzcGFuJywgKHByb3BzLCB0aGVtZSkgPT4gKHtcbiAgY29sb3I6IHRoZW1lLmRhbmdlcixcbn0pKVxuXG5jb25zdCBTdWJFbnRyaWVzID0gc3R5bGVkKCdkaXYnLCB7XG4gIG1hcmdpbkxlZnQ6ICcuMXJlbScsXG4gIHBhZGRpbmdMZWZ0OiAnMXJlbScsXG4gIGJvcmRlckxlZnQ6ICcycHggc29saWQgcmdiYSgwLDAsMCwuMTUpJyxcbn0pXG5cbmNvbnN0IEluZm8gPSBzdHlsZWQoJ3NwYW4nLCB7XG4gIGNvbG9yOiAnZ3JleScsXG4gIGZvbnRTaXplOiAnLjdyZW0nLFxufSlcblxuY29uc3QgRXhwYW5kZXIgPSAoeyBleHBhbmRlZCwgc3R5bGUgPSB7fSwgLi4ucmVzdCB9KSA9PiAoXG4gIDxzcGFuXG4gICAgc3R5bGU9e3tcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgdHJhbnNpdGlvbjogJ2FsbCAuMXMgZWFzZScsXG4gICAgICB0cmFuc2Zvcm06IGByb3RhdGUoJHtleHBhbmRlZCA/IDkwIDogMH1kZWcpICR7c3R5bGUudHJhbnNmb3JtIHx8ICcnfWAsXG4gICAgICAuLi5zdHlsZSxcbiAgICB9fVxuICA+XG4gICAg4pa2XG4gIDwvc3Bhbj5cbilcblxuY29uc3QgRGVmYXVsdFJlbmRlcmVyID0gKHtcbiAgaGFuZGxlRW50cnksXG4gIGxhYmVsLFxuICB2YWx1ZSxcbiAgLy8gcGF0aCxcbiAgc3ViRW50cmllcyxcbiAgc3ViRW50cnlQYWdlcyxcbiAgdHlwZSxcbiAgLy8gZGVwdGgsXG4gIGV4cGFuZGVkLFxuICB0b2dnbGUsXG4gIHBhZ2VTaXplLFxuICByZW5kZXJlcixcbn0pID0+IHtcbiAgY29uc3QgW3ZhbHVlU25hcHNob3QsIHNldFZhbHVlU25hcHNob3RdID0gUmVhY3QudXNlU3RhdGUodW5kZWZpbmVkKVxuICBjb25zdCBbZXhwYW5kZWRQYWdlcywgc2V0RXhwYW5kZWRQYWdlc10gPSBSZWFjdC51c2VTdGF0ZShbXSlcblxuICBjb25zdCByZWZyZXNoVmFsdWVTbmFwc2hvdCA9ICgpID0+IHtcbiAgICBzZXRWYWx1ZVNuYXBzaG90KHZhbHVlKCkpXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxFbnRyeSBrZXk9e2xhYmVsfT5cbiAgICAgIHtzdWJFbnRyeVBhZ2VzPy5sZW5ndGggPyAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPExhYmVsIG9uQ2xpY2s9eygpID0+IHRvZ2dsZSgpfT5cbiAgICAgICAgICAgIDxFeHBhbmRlciBleHBhbmRlZD17ZXhwYW5kZWR9IC8+IHtsYWJlbH17JyAnfVxuICAgICAgICAgICAgPEluZm8+XG4gICAgICAgICAgICAgIHtTdHJpbmcodHlwZSkudG9Mb3dlckNhc2UoKSA9PT0gJ2l0ZXJhYmxlJyA/ICcoSXRlcmFibGUpICcgOiAnJ31cbiAgICAgICAgICAgICAge3N1YkVudHJpZXMubGVuZ3RofSB7c3ViRW50cmllcy5sZW5ndGggPiAxID8gYGl0ZW1zYCA6IGBpdGVtYH1cbiAgICAgICAgICAgIDwvSW5mbz5cbiAgICAgICAgICA8L0xhYmVsPlxuICAgICAgICAgIHtleHBhbmRlZCA/IChcbiAgICAgICAgICAgIHN1YkVudHJ5UGFnZXMubGVuZ3RoID09PSAxID8gKFxuICAgICAgICAgICAgICA8U3ViRW50cmllcz5cbiAgICAgICAgICAgICAgICB7c3ViRW50cmllcy5tYXAoZW50cnkgPT4gaGFuZGxlRW50cnkoZW50cnkpKX1cbiAgICAgICAgICAgICAgPC9TdWJFbnRyaWVzPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPFN1YkVudHJpZXM+XG4gICAgICAgICAgICAgICAge3N1YkVudHJ5UGFnZXMubWFwKChlbnRyaWVzLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fT5cbiAgICAgICAgICAgICAgICAgICAgPEVudHJ5PlxuICAgICAgICAgICAgICAgICAgICAgIDxMYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RXhwYW5kZWRQYWdlcyhvbGQgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGQuaW5jbHVkZXMoaW5kZXgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG9sZC5maWx0ZXIoZCA9PiBkICE9PSBpbmRleClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogWy4uLm9sZCwgaW5kZXhdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8RXhwYW5kZXIgZXhwYW5kZWQ9e2V4cGFuZGVkfSAvPiBbe2luZGV4ICogcGFnZVNpemV9IC4uLnsnICd9XG4gICAgICAgICAgICAgICAgICAgICAgICB7aW5kZXggKiBwYWdlU2l6ZSArIHBhZ2VTaXplIC0gMX1dXG4gICAgICAgICAgICAgICAgICAgICAgPC9MYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICB7ZXhwYW5kZWRQYWdlcy5pbmNsdWRlcyhpbmRleCkgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8U3ViRW50cmllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge2VudHJpZXMubWFwKGVudHJ5ID0+IGhhbmRsZUVudHJ5KGVudHJ5KSl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N1YkVudHJpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgIDwvRW50cnk+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9TdWJFbnRyaWVzPlxuICAgICAgICAgICAgKVxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICA8Lz5cbiAgICAgICkgOiB0eXBlID09PSAnZnVuY3Rpb24nID8gKFxuICAgICAgICA8PlxuICAgICAgICAgIDxFeHBsb3JlclxuICAgICAgICAgICAgcmVuZGVyZXI9e3JlbmRlcmVyfVxuICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICA8YnV0dG9uIG9uQ2xpY2s9e3JlZnJlc2hWYWx1ZVNuYXBzaG90fT5cbiAgICAgICAgICAgICAgICA8TGFiZWw+e2xhYmVsfTwvTGFiZWw+IPCflIR7JyAnfVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhbHVlPXt2YWx1ZVNuYXBzaG90fVxuICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXt7fX1cbiAgICAgICAgICAvPlxuICAgICAgICA8Lz5cbiAgICAgICkgOiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPExhYmVsPntsYWJlbH06PC9MYWJlbD57JyAnfVxuICAgICAgICAgIDxWYWx1ZT5cbiAgICAgICAgICAgIHtKU09OLnN0cmluZ2lmeSh2YWx1ZSwgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoT2JqZWN0KHZhbHVlKSkpfVxuICAgICAgICAgIDwvVmFsdWU+XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICA8L0VudHJ5PlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEV4cGxvcmVyKHtcbiAgdmFsdWUsXG4gIGRlZmF1bHRFeHBhbmRlZCxcbiAgcmVuZGVyZXIgPSBEZWZhdWx0UmVuZGVyZXIsXG4gIHBhZ2VTaXplID0gMTAwLFxuICBkZXB0aCA9IDAsXG4gIC4uLnJlc3Rcbn0pIHtcbiAgY29uc3QgW2V4cGFuZGVkLCBzZXRFeHBhbmRlZF0gPSBSZWFjdC51c2VTdGF0ZShkZWZhdWx0RXhwYW5kZWQpXG5cbiAgY29uc3QgdG9nZ2xlID0gc2V0ID0+IHtcbiAgICBzZXRFeHBhbmRlZChvbGQgPT4gKHR5cGVvZiBzZXQgIT09ICd1bmRlZmluZWQnID8gc2V0IDogIW9sZCkpXG4gIH1cblxuICBjb25zdCBwYXRoID0gW11cblxuICBsZXQgdHlwZSA9IHR5cGVvZiB2YWx1ZVxuICBsZXQgc3ViRW50cmllc1xuICBjb25zdCBzdWJFbnRyeVBhZ2VzID0gW11cblxuICBjb25zdCBtYWtlUHJvcGVydHkgPSBzdWIgPT4ge1xuICAgIGNvbnN0IG5ld1BhdGggPSBwYXRoLmNvbmNhdChzdWIubGFiZWwpXG4gICAgY29uc3Qgc3ViRGVmYXVsdEV4cGFuZGVkID1cbiAgICAgIGRlZmF1bHRFeHBhbmRlZCA9PT0gdHJ1ZVxuICAgICAgICA/IHsgW3N1Yi5sYWJlbF06IHRydWUgfVxuICAgICAgICA6IGRlZmF1bHRFeHBhbmRlZD8uW3N1Yi5sYWJlbF1cbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3ViLFxuICAgICAgc3ViUGF0aDogc3ViLFxuICAgICAgcGF0aDogbmV3UGF0aCxcbiAgICAgIGRlcHRoOiBkZXB0aCArIDEsXG4gICAgICBkZWZhdWx0RXhwYW5kZWQ6IHN1YkRlZmF1bHRFeHBhbmRlZCxcbiAgICB9XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICB0eXBlID0gJ2FycmF5J1xuICAgIHN1YkVudHJpZXMgPSB2YWx1ZS5tYXAoKGQsIGkpID0+XG4gICAgICBtYWtlUHJvcGVydHkoe1xuICAgICAgICBsYWJlbDogaSxcbiAgICAgICAgdmFsdWU6IGQsXG4gICAgICB9KVxuICAgIClcbiAgfSBlbHNlIGlmIChcbiAgICB2YWx1ZSAhPT0gbnVsbCAmJlxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICB0eXBlb2YgdmFsdWVbU3ltYm9sLml0ZXJhdG9yXSA9PT0gJ2Z1bmN0aW9uJ1xuICApIHtcbiAgICB0eXBlID0gJ0l0ZXJhYmxlJ1xuICAgIHN1YkVudHJpZXMgPSBBcnJheS5mcm9tKHZhbHVlLCAodmFsLCBpKSA9PlxuICAgICAgbWFrZVByb3BlcnR5KHtcbiAgICAgICAgbGFiZWw6IGksXG4gICAgICAgIHZhbHVlOiB2YWwsXG4gICAgICB9KVxuICAgIClcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICB0eXBlID0gJ2Z1bmN0aW9uJ1xuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICB0eXBlID0gJ29iamVjdCdcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2hhZG93XG4gICAgc3ViRW50cmllcyA9IE9iamVjdC5lbnRyaWVzKHZhbHVlKS5tYXAoKFtsYWJlbCwgdmFsdWVdKSA9PlxuICAgICAgbWFrZVByb3BlcnR5KHtcbiAgICAgICAgbGFiZWwsXG4gICAgICAgIHZhbHVlLFxuICAgICAgfSlcbiAgICApXG4gIH1cblxuICBpZiAoc3ViRW50cmllcykge1xuICAgIGxldCBpID0gMFxuXG4gICAgd2hpbGUgKGkgPCBzdWJFbnRyaWVzLmxlbmd0aCkge1xuICAgICAgc3ViRW50cnlQYWdlcy5wdXNoKHN1YkVudHJpZXMuc2xpY2UoaSwgaSArIHBhZ2VTaXplKSlcbiAgICAgIGkgPSBpICsgcGFnZVNpemVcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVuZGVyZXIoe1xuICAgIGhhbmRsZUVudHJ5OiBlbnRyeSA9PiAoXG4gICAgICA8RXhwbG9yZXIga2V5PXtlbnRyeS5sYWJlbH0gcmVuZGVyZXI9e3JlbmRlcmVyfSB7Li4ucmVzdH0gey4uLmVudHJ5fSAvPlxuICAgICksXG4gICAgdHlwZSxcbiAgICBzdWJFbnRyaWVzLFxuICAgIHN1YkVudHJ5UGFnZXMsXG4gICAgZGVwdGgsXG4gICAgdmFsdWUsXG4gICAgcGF0aCxcbiAgICBleHBhbmRlZCxcbiAgICB0b2dnbGUsXG4gICAgcGFnZVNpemUsXG4gICAgLi4ucmVzdCxcbiAgfSlcbn1cbiIsICJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTG9nbyhwcm9wczogYW55KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgd2lkdGg9XCI0MHB4XCJcbiAgICAgIGhlaWdodD1cIjQwcHhcIlxuICAgICAgdmlld0JveD1cIjAgMCAxOTAgMTkwXCJcbiAgICAgIHZlcnNpb249XCIxLjFcIlxuICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgIDxnIHN0cm9rZT1cIm5vbmVcIiBzdHJva2VXaWR0aD1cIjFcIiBmaWxsPVwibm9uZVwiIGZpbGxSdWxlPVwiZXZlbm9kZFwiPlxuICAgICAgICA8ZyBpZD1cIm9nLXdoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC0yOC4wMDAwMDAsIC0yMS4wMDAwMDApXCI+XG4gICAgICAgICAgPGcgaWQ9XCJHcm91cC0yXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDI4LjAwMDAwMCwgMzEuMDAwMDAwKVwiPlxuICAgICAgICAgICAgPGcgaWQ9XCJHcm91cFwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwLjAwMDAwMCwgMTAuMDAwMDAwKVwiPlxuICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgIGQ9XCJNMzkuNzIzOTcxMiw1MS4zNDM2MjM3IEMzNi42MzEyMjQsMzYuMzYyODc3IDM1Ljk2NzUxMTIsMjQuODcyNzcyMiAzNy45NjY2MzMxLDE2LjUyOTM1NTEgQzM5LjE1NTU5NjUsMTEuNTY3MTY3OCA0MS4zMjkzMDg4LDcuNTE5MDg0NjIgNDQuNjM0NjA2NCw0LjU5ODQ2MzA1IEM0OC4xMjQxMzk0LDEuNTE1MDQ3NzcgNTIuNTM2MDMyNywwLjAwMjAxMjE2NjA2IDU3LjQ5MzI1NywwLjAwMjAxMjE2NjA2IEM2NS42NzEyMDEzLDAuMDAyMDEyMTY2MDYgNzQuMjY4MjYwMiwzLjcyNzMyMTQzIDgzLjQ1NTcyNDYsMTAuODA0NDI2NCBDODcuMjAzMTIwMywxMy42OTEwNDU4IDkxLjA5MjQzNjYsMTcuMTcwNDExIDk1LjEzMTY1MTUsMjEuMjQ0NDc0NiBDOTUuNDUzMTQwNCwyMC44MzEwMjY1IDk1LjgxNjU0MTYsMjAuNDQxMDQ1MyA5Ni4yMjE0MzAxLDIwLjA4MDYxNTIgQzEwNy42NDA5OCw5LjkxNDk3MTU4IDExNy4yNTUyNDUsMy41OTg5MjcxNiAxMjUuNDc4NDA4LDEuMTYzNjUwNjggQzEzMC4zNjc4OTksLTAuMjg0MzY0MDA1IDEzNC45NTg1MjYsLTAuNDIyMzE3OTc4IDEzOS4xMzg5MzYsMC45ODMwMzEwMjEgQzE0My41NTE2MzEsMi40NjY0Njg0NCAxNDcuMDY3NjYsNS41MzI5NDg4OCAxNDkuNTQ4MzE0LDkuODI4MTA5MTIgQzE1My42NDIyODgsMTYuOTE2NjczNSAxNTQuNzIxOTE4LDI2LjIzMTA5ODMgMTUzLjE5NTU5NSwzNy43MzIwMjQzIEMxNTIuNTczNDUxLDQyLjQxOTkxMTIgMTUxLjUwOTg1LDQ3LjUyNjM4MzEgMTUwLjAwNzA5NCw1My4wNTkzMTUzIEMxNTAuNTc0MDQ1LDUzLjEyNzcwODYgMTUxLjE0MjQxNiw1My4yNTMyODA4IDE1MS43MDUwNDEsNTMuNDM5NTI5NyBDMTY2LjE5MzkzMiw1OC4yMzU4Njc4IDE3Ni40NTM1ODIsNjMuMzkzNzQ2MiAxODIuNjY1MDIxLDY5LjI4ODI4MzkgQzE4Ni4zNjA2NjksNzIuNzk1MzgzMSAxODguNzczOTcyLDc2LjY5OTg0MzQgMTg5LjY0NjM2NSw4MS4wMjE4MjA0IEMxOTAuNTY3MTc2LDg1LjU4MzY3NDYgMTg5LjY2OTMxMyw5MC4xNTkzMzE2IDE4Ny4xOTE1NDgsOTQuNDUxMjk2NyBDMTgzLjEwNTIxMSwxMDEuNTI5NjE0IDE3NS41OTE2NDMsMTA3LjExMjIxIDE2NC44ODc1ODcsMTExLjUzNDAzMSBDMTYwLjU4OTU1MiwxMTMuMzA5NTM5IDE1NS43MjY1NzksMTE0LjkxNzU1OSAxNTAuMjkzMjU5LDExNi4zNjM3NDggQzE1MC41NDExNzYsMTE2LjkyMjkyIDE1MC43MzM1MjEsMTE3LjUxNjc1OSAxNTAuODYyMTM4LDExOC4xMzk3NTggQzE1My45NTQ4ODYsMTMzLjEyMDUwNSAxNTQuNjE4NTk4LDE0NC42MTA2MSAxNTIuNjE5NDc3LDE1Mi45NTQwMjcgQzE1MS40MzA1MTMsMTU3LjkxNjIxNCAxNDkuMjU2ODAxLDE2MS45NjQyOTcgMTQ1Ljk1MTUwMywxNjQuODg0OTE5IEMxNDIuNDYxOTcsMTY3Ljk2ODMzNCAxMzguMDUwMDc3LDE2OS40ODEzNyAxMzMuMDkyODUzLDE2OS40ODEzNyBDMTI0LjkxNDkwOCwxNjkuNDgxMzcgMTE2LjMxNzg1LDE2NS43NTYwNjEgMTA3LjEzMDM4NSwxNTguNjc4OTU2IEMxMDMuMzQzMTA0LDE1NS43NjE2MTMgOTkuNDEwODY1NSwxNTIuMjM4ODM5IDk1LjMyNTQzMzcsMTQ4LjEwODYxOSBDOTQuOTA1MDc1MywxNDguNzY1NDc0IDk0LjM4ODk2ODEsMTQ5LjM3NjAxMSA5My43Nzg1Njk5LDE0OS45MTkzODUgQzgyLjM1OTAxOTgsMTYwLjA4NTAyOCA3Mi43NDQ3NTUsMTY2LjQwMTA3MyA2NC41MjE1OTE1LDE2OC44MzYzNDkgQzU5LjYzMjEwMDksMTcwLjI4NDM2NCA1NS4wNDE0NzM2LDE3MC40MjIzMTggNTAuODYxMDYzNiwxNjkuMDE2OTY5IEM0Ni40NDgzNjg2LDE2Ny41MzM1MzIgNDIuOTMyMzQwNCwxNjQuNDY3MDUxIDQwLjQ1MTY4NjIsMTYwLjE3MTg5MSBDMzYuMzU3NzExNiwxNTMuMDgzMzI3IDM1LjI3ODA4MjMsMTQzLjc2ODkwMiAzNi44MDQ0MDUzLDEzMi4yNjc5NzYgQzM3LjQ0OTAzOCwxMjcuNDEwNjM0IDM4LjU2NzYyLDEyMi4xMDM4OTggNDAuMTU3NTg5MSwxMTYuMzM5MDA5IEMzOS41MzYxMDQxLDExNi4yNzYxMDQgMzguOTEyMDc1NCwxMTYuMTQ0ODE2IDM4LjI5NDk1OTEsMTE1Ljk0MDUyOSBDMjMuODA2MDY4NCwxMTEuMTQ0MTkxIDEzLjU0NjQxODQsMTA1Ljk4NjMxMiA3LjMzNDk3ODkyLDEwMC4wOTE3NzUgQzMuNjM5MzMxMjEsOTYuNTg0Njc1NCAxLjIyNjAyNzUyLDkyLjY4MDIxNTEgMC4zNTM2MzUyMzUsODguMzU4MjM4MSBDLTAuNTY3MTc2MzMzLDgzLjc5NjM4MzkgMC4zMzA2ODY1ODEsNzkuMjIwNzI2OSAyLjgwODQ1MjM2LDc0LjkyODc2MTggQzYuODk0Nzg4NjMsNjcuODUwNDQ0MyAxNC40MDgzNTY1LDYyLjI2Nzg0ODEgMjUuMTEyNDEzMyw1Ny44NDYwMjczIEMyOS41Mzg1MTQzLDU2LjAxNzYxNTQgMzQuNTYzNzIwOCw1NC4zNjY4MjIgNDAuMTkzOTM5NCw1Mi44ODc0Njc0IEMzOS45OTMzMzkzLDUyLjM5NjkxNzEgMzkuODM0OTM3NCw1MS44ODExMjM1IDM5LjcyMzk3MTIsNTEuMzQzNjIzNyBaXCJcbiAgICAgICAgICAgICAgICBpZD1cIlBhdGhcIlxuICAgICAgICAgICAgICAgIGZpbGw9XCIjMDAyQzRCXCJcbiAgICAgICAgICAgICAgICBmaWxsUnVsZT1cIm5vbnplcm9cIlxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSg5NS4wMDAwMDAsIDg1LjAwMDAwMCkgc2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtOTUuMDAwMDAwLCAtODUuMDAwMDAwKSBcIlxuICAgICAgICAgICAgICA+PC9wYXRoPlxuICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgIGQ9XCJNOTEuNzM1LDExMCBMOTEuNzM1LDExNiBMODAuNjMyMjA1MSwxMTYgQzc4Ljg0MTEyODYsMTE2IDc3LjE4Njg2MTQsMTE1LjA0MTk3NSA3Ni4yOTU0NDg5LDExMy40ODg0ODMgTDc0LjI5NCwxMTAgTDkxLjczNSwxMTAgWiBNMTE2LjE4MSwxMTAgTDExNC4xODAyNTYsMTEzLjQ4ODQ4MyBDMTEzLjI4ODg0NCwxMTUuMDQxOTc1IDExMS42MzQ1NzYsMTE2IDEwOS44NDM1LDExNiBMOTguNzM1LDExNiBMOTguNzM1LDExMCBMMTE2LjE4MSwxMTAgWiBNOTEuNzM1LDk2IEw5MS43MzUsMTAzIEw3MC4yNzcsMTAzIEw2Ni4yNiw5NiBMOTEuNzM1LDk2IFogTTEyNC4yMTUsOTYgTDEyMC4xOTgsMTAzIEw5OC43MzUsMTAzIEw5OC43MzUsOTYgTDEyNC4yMTUsOTYgWiBNOTEuNzM1LDgyIEw5MS43MzUsODkgTDYyLjI0NCw4OSBMNjEuNjYzMjQzOCw4Ny45ODg0ODI2IEM2MC43Nzg5MTg3LDg2LjQ0NzM0MTcgNjAuNzc4OTE4Nyw4NC41NTI2NTgzIDYxLjY2MzI0MzgsODMuMDExNTE3NCBMNjIuMjQzLDgyIEw5MS43MzUsODIgWiBNMTI4LjIzMiw4MiBMMTI4LjgxMjQ2MSw4My4wMTE1MTc0IEMxMjkuNjk2Nzg2LDg0LjU1MjY1ODMgMTI5LjY5Njc4Niw4Ni40NDczNDE3IDEyOC44MTI0NjEsODcuOTg4NDgyNiBMMTI4LjIzMSw4OSBMOTguNzM1LDg5IEw5OC43MzUsODIgTDEyOC4yMzIsODIgWiBNOTEuNzM1LDY4IEw5MS43MzUsNzUgTDY2LjI2LDc1IEw3MC4yNzcsNjggTDkxLjczNSw2OCBaIE0xMjAuMTk4LDY4IEwxMjQuMjE1LDc1IEw5OC43MzUsNzUgTDk4LjczNSw2OCBMMTIwLjE5OCw2OCBaIE05MS43MzUsNTUgTDkxLjczNSw2MSBMNzQuMjkzLDYxIEw3Ni4yOTU0NDg5LDU3LjUxMTUxNzQgQzc3LjE4Njg2MTQsNTUuOTU4MDI1IDc4Ljg0MTEyODYsNTUgODAuNjMyMjA1MSw1NSBMOTEuNzM1LDU1IFogTTEwOS44NDM1LDU1IEMxMTEuNjM0NTc2LDU1IDExMy4yODg4NDQsNTUuOTU4MDI1IDExNC4xODAyNTYsNTcuNTExNTE3NCBMMTE2LjE4Miw2MSBMOTguNzM1LDYxIEw5OC43MzUsNTUgTDEwOS44NDM1LDU1IFpcIlxuICAgICAgICAgICAgICAgIGlkPVwiUG9seWdvbi0yXCJcbiAgICAgICAgICAgICAgICBmaWxsPVwiI0ZGRDk0Q1wiXG4gICAgICAgICAgICAgID48L3BhdGg+XG4gICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgZD1cIk01NC44NjAxNzI5LDk4LjM1Nzc1NzggQzU2LjE3MTUyMjQsOTcuNjA4Mjg1NiA1Ny44MzYwMjQ2LDk4LjA3NDYwMTQgNTguNTc3OTQyNCw5OS4zOTkzMDM0IEw1OC41Nzc5NDI0LDk5LjM5OTMwMzQgTDU5LjA1MjU4NDMsMTAwLjI0MzUyIEM2Mi44NTYzMzkyLDEwNi45ODI5OTMgNjYuODE5MDExNiwxMTMuMzgwMTc2IDcwLjk0MDYwMTYsMTE5LjQzNTA2OCBDNzUuODA3ODgwOCwxMjYuNTg1NDI3IDgxLjI4MTg0LDEzMy44MjQxMSA4Ny4zNjI0NzkyLDE0MS4xNTExMTUgQzg4LjMxNjg3NzgsMTQyLjMwMTE0IDg4LjE4NDk0MzcsMTQ0LjAxMTE3NiA4Ny4wNjU2ODYsMTQ0Ljk5NzkzNyBMODcuMDY1Njg2LDE0NC45OTc5MzcgTDg2LjQ1NDIwODUsMTQ1LjUzNDYyNSBDNjYuMzQ2NTM4OSwxNjMuMTAzMzE0IDUzLjI3NzgxODgsMTY2LjYxMjU1MiA0Ny4yNDgwNDgyLDE1Ni4wNjIzNDEgQzQxLjM1MDA2NTIsMTQ1Ljc0MjcxNyA0My40ODQ0OTE1LDEyNi45ODI4ODggNTMuNjUxMzI3NCw5OS43ODI4NTI2IEM1My44NzY4MTgsOTkuMTc5NTgyMSA1NC4zMDQ1ODYxLDk4LjY3NTI5MSA1NC44NjAxNzI5LDk4LjM1Nzc1NzggWiBNMTQwLjUzNDE3NywxMTkuMDQxNTA0IEMxNDEuOTg2MTMxLDExOC43ODUxNzcgMTQzLjM3NTQ5NiwxMTkuNzQyMTM4IDE0My42NTk2MywxMjEuMTk0MjQyIEwxNDMuNjU5NjMsMTIxLjE5NDI0MiBMMTQzLjgxMjgxNSwxMjEuOTg2Mzc2IEMxNDguNzgyMzY1LDE0Ny45OTU0NTkgMTQ1LjI4MzM0OCwxNjEgMTMzLjMxNTc2NCwxNjEgQzEyMS42MDk3NDUsMTYxIDEwNi43MDg3MjQsMTQ5LjkwOTAwNyA4OC42MTI3MDE4LDEyNy43MjcwMjIgQzg4LjIxMTM0OTUsMTI3LjIzNTA0NyA4Ny45OTQ1NzIzLDEyNi42MTczNzEgODgsMTI1Ljk4MTUwOSBDODguMDEzMTU4LDEyNC40ODA2ODYgODkuMjM1Nzg1NCwxMjMuMjc0NjUxIDkwLjczMDkxOCwxMjMuMjg3NzU2IEw5MC43MzA5MTgsMTIzLjI4Nzc1NiBMOTEuNjg0NjU0NCwxMjMuMjk0NTMxIEM5OS4zMDU2OTc5LDEyMy4zMzU5OTQgMTA2LjcxNDM4NywxMjMuMDcxNTkxIDExMy45MTA3MjMsMTIyLjUwMTMyMyBDMTIyLjQwOTAzOSwxMjEuODI3ODggMTMxLjI4MzUyMywxMjAuNjc0NjA3IDE0MC41MzQxNzcsMTE5LjA0MTUwNCBaIE0xNDcuNDA4NzI2LDYzLjgxMTk2NjMgQzE0Ny45MzIxMzksNjIuNDAyNjkwMyAxNDkuNTA4Mzg2LDYxLjY2MzQ1MzcgMTUwLjk1NDU4MSw2Mi4xNDkwMTIgTDE1MC45NTQ1ODEsNjIuMTQ5MDEyIEwxNTEuNzQyNTUyLDYyLjQxNTQ4NTQgQzE3Ny41ODM3NjMsNzEuMjE3OTIyIDE4Ny40MDIzNTYsODAuODkxNjgwNSAxODEuMTk4MzMyLDkxLjQzNjc2MDkgQzE3NS4xMjk5MDQsMTAxLjc1MTM2NiAxNTcuNDg0MzQ3LDEwOS4yNjAzMzkgMTI4LjI2MTY2LDExMy45NjM2NzggQzEyNy42MTM1MjksMTE0LjA2Nzk5NCAxMjYuOTQ4NjQzLDExMy45NDU5NjkgMTI2LjM4MjczNSwxMTMuNjE4ODQzIEMxMjUuMDQ3MDI1LDExMi44NDY3MjkgMTI0LjYwMjA0NiwxMTEuMTU4MjE0IDEyNS4zODg4NDgsMTA5Ljg0NzQzOCBMMTI1LjM4ODg0OCwxMDkuODQ3NDM4IEwxMjUuODg5MzI4LDEwOS4wMTA1IEMxMjkuODc3MTgzLDEwMi4zMTYzMyAxMzMuNDgxMzU4LDk1LjY1NDI2MjEgMTM2LjcwMTg1NCw4OS4wMjQyOTU3IEMxNDAuNTA1MDEsODEuMTk0ODE3OSAxNDQuMDczOTY3LDcyLjc5MDcwODEgMTQ3LjQwODcyNiw2My44MTE5NjYzIFogTTYxLjczODMzOTgsNTYuMDM2MzIxOCBDNjIuMzg2NDcwOCw1NS45MzIwMDYzIDYzLjA1MTM1NjUsNTYuMDU0MDMxNSA2My42MTcyNjQ2LDU2LjM4MTE1NzMgQzY0Ljk1Mjk3NTQsNTcuMTUzMjcxIDY1LjM5Nzk1MzgsNTguODQxNzg2MiA2NC42MTExNTE3LDYwLjE1MjU2MTUgTDY0LjYxMTE1MTcsNjAuMTUyNTYxNSBMNjQuMTEwNjcxOCw2MC45ODk1MDAxIEM2MC4xMjI4MTY4LDY3LjY4MzY2OTkgNTYuNTE4NjQxNiw3NC4zNDU3Mzc5IDUzLjI5ODE0NjIsODAuOTc1NzA0MyBDNDkuNDk0OTksODguODA1MTgyMSA0NS45MjYwMzI4LDk3LjIwOTI5MTkgNDIuNTkxMjc0NCwxMDYuMTg4MDM0IEM0Mi4wNjc4NjA4LDEwNy41OTczMSA0MC40OTE2MTQyLDEwOC4zMzY1NDYgMzkuMDQ1NDE5LDEwNy44NTA5ODggTDM5LjA0NTQxOSwxMDcuODUwOTg4IEwzOC4yNTc0NDc1LDEwNy41ODQ1MTUgQzEyLjQxNjIzNzIsOTguNzgyMDc4IDIuNTk3NjQzOTgsODkuMTA4MzE5NSA4LjgwMTY2Nzg2LDc4LjU2MzIzOTEgQzE0Ljg3MDA5NTcsNjguMjQ4NjMzNSAzMi41MTU2NTMsNjAuNzM5NjYxMSA2MS43MzgzMzk4LDU2LjAzNjMyMTggWiBNMTAzLjU0NTc5MiwyNC40NjUzNzQ2IEMxMjMuNjUzNDYxLDYuODk2Njg2NDEgMTM2LjcyMjE4MSwzLjM4NzQ0Nzc4IDE0Mi43NTE5NTIsMTMuOTM3NjU4NyBDMTQ4LjY0OTkzNSwyNC4yNTcyODI2IDE0Ni41MTU1MDgsNDMuMDE3MTEyMiAxMzYuMzQ4NjczLDcwLjIxNzE0NzQgQzEzNi4xMjMxODIsNzAuODIwNDE3OSAxMzUuNjk1NDE0LDcxLjMyNDcwOSAxMzUuMTM5ODI3LDcxLjY0MjI0MjIgQzEzMy44Mjg0NzgsNzIuMzkxNzE0NCAxMzIuMTYzOTc1LDcxLjkyNTM5ODYgMTMxLjQyMjA1OCw3MC42MDA2OTY2IEwxMzEuNDIyMDU4LDcwLjYwMDY5NjYgTDEzMC45NDc0MTYsNjkuNzU2NDc5OCBDMTI3LjE0MzY2MSw2My4wMTcwMDY1IDEyMy4xODA5ODgsNTYuNjE5ODIzOSAxMTkuMDU5Mzk4LDUwLjU2NDkzMiBDMTE0LjE5MjExOSw0My40MTQ1NzI3IDEwOC43MTgxNiwzNi4xNzU4OTAzIDEwMi42Mzc1MjEsMjguODQ4ODg0NyBDMTAxLjY4MzEyMiwyNy42OTg4NjAyIDEwMS44MTUwNTYsMjUuOTg4ODI0MyAxMDIuOTM0MzE0LDI1LjAwMjA2MjkgTDEwMi45MzQzMTQsMjUuMDAyMDYyOSBaIE01Ny42ODQyMzYxLDggQzY5LjM5MDI1NTEsOCA4NC4yOTEyNzU4LDE5LjA5MDk5MjYgMTAyLjM4NzI5OCw0MS4yNzI5Nzc3IEMxMDIuNzg4NjUxLDQxLjc2NDk1MjcgMTAzLjAwNTQyOCw0Mi4zODI2Mjg4IDEwMyw0My4wMTg0OTExIEMxMDIuOTg2ODQyLDQ0LjUxOTMxNDQgMTAxLjc2NDIxNSw0NS43MjUzNDg5IDEwMC4yNjkwODIsNDUuNzEyMjQ0NSBMMTAwLjI2OTA4Miw0NS43MTIyNDQ1IEw5OS4zMTUzNDU2LDQ1LjcwNTQ2ODkgQzkxLjY5NDMwMjEsNDUuNjY0MDA2MyA4NC4yODU2MTI2LDQ1LjkyODQwOTEgNzcuMDg5Mjc3Miw0Ni40OTg2NzczIEM2OC41OTA5NjEyLDQ3LjE3MjEyIDU5LjcxNjQ3NjcsNDguMzI1MzkzIDUwLjQ2NTgyMzUsNDkuOTU4NDk2MiBDNDkuMDEzODY5MSw1MC4yMTQ4MjMxIDQ3LjYyNDUwNDQsNDkuMjU3ODYxOCA0Ny4zNDAzNjk3LDQ3LjgwNTc1OCBMNDcuMzQwMzY5Nyw0Ny44MDU3NTggTDQ3LjE4NzE4NDYsNDcuMDEzNjIzNSBDNDIuMjE3NjM0NywyMS4wMDQ1NDEyIDQ1LjcxNjY1MTksOCA1Ny42ODQyMzYxLDggWlwiXG4gICAgICAgICAgICAgICAgaWQ9XCJDb21iaW5lZC1TaGFwZVwiXG4gICAgICAgICAgICAgICAgZmlsbD1cIiNGRjQxNTRcIlxuICAgICAgICAgICAgICA+PC9wYXRoPlxuICAgICAgICAgICAgPC9nPlxuICAgICAgICAgIDwvZz5cbiAgICAgICAgPC9nPlxuICAgICAgPC9nPlxuICAgIDwvc3ZnPlxuICApXG59XG4iLCAiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgVGFibGUgfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtdGFibGUnXG5cbmltcG9ydCB1c2VMb2NhbFN0b3JhZ2UgZnJvbSAnLi91c2VMb2NhbFN0b3JhZ2UnXG5pbXBvcnQgeyB1c2VJc01vdW50ZWQgfSBmcm9tICcuL3V0aWxzJ1xuXG5pbXBvcnQgeyBQYW5lbCwgQnV0dG9uIH0gZnJvbSAnLi9zdHlsZWRDb21wb25lbnRzJ1xuaW1wb3J0IHsgVGhlbWVQcm92aWRlciwgZGVmYXVsdFRoZW1lIGFzIHRoZW1lIH0gZnJvbSAnLi90aGVtZSdcbi8vIGltcG9ydCB7IGdldFF1ZXJ5U3RhdHVzTGFiZWwsIGdldFF1ZXJ5U3RhdHVzQ29sb3IgfSBmcm9tICcuL3V0aWxzJ1xuaW1wb3J0IEV4cGxvcmVyIGZyb20gJy4vRXhwbG9yZXInXG5pbXBvcnQgTG9nbyBmcm9tICcuL0xvZ28nXG5cbmludGVyZmFjZSBEZXZ0b29sc09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHJlYWN0IHRhYmxlIHRvIGF0dGFjaCB0aGUgZGV2dG9vbHMgdG8uXG4gICAqL1xuICB0YWJsZTogYW55XG4gIC8qKlxuICAgKiBTZXQgdGhpcyB0cnVlIGlmIHlvdSB3YW50IHRoZSBkZXYgdG9vbHMgdG8gZGVmYXVsdCB0byBiZWluZyBvcGVuXG4gICAqL1xuICBpbml0aWFsSXNPcGVuPzogYm9vbGVhblxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gYWRkIHByb3BzIHRvIHRoZSBwYW5lbC4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gYWRkIGNsYXNzTmFtZSwgc3R5bGUgKG1lcmdlIGFuZCBvdmVycmlkZSBkZWZhdWx0IHN0eWxlKSwgZXRjLlxuICAgKi9cbiAgcGFuZWxQcm9wcz86IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFxuICAgIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PixcbiAgICBIVE1MRGl2RWxlbWVudFxuICA+XG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBhZGQgcHJvcHMgdG8gdGhlIGNsb3NlIGJ1dHRvbi4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gYWRkIGNsYXNzTmFtZSwgc3R5bGUgKG1lcmdlIGFuZCBvdmVycmlkZSBkZWZhdWx0IHN0eWxlKSwgb25DbGljayAoZXh0ZW5kIGRlZmF1bHQgaGFuZGxlciksIGV0Yy5cbiAgICovXG4gIGNsb3NlQnV0dG9uUHJvcHM/OiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxcbiAgICBSZWFjdC5CdXR0b25IVE1MQXR0cmlidXRlczxIVE1MQnV0dG9uRWxlbWVudD4sXG4gICAgSFRNTEJ1dHRvbkVsZW1lbnRcbiAgPlxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gYWRkIHByb3BzIHRvIHRoZSB0b2dnbGUgYnV0dG9uLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBhZGQgY2xhc3NOYW1lLCBzdHlsZSAobWVyZ2UgYW5kIG92ZXJyaWRlIGRlZmF1bHQgc3R5bGUpLCBvbkNsaWNrIChleHRlbmQgZGVmYXVsdCBoYW5kbGVyKSwgZXRjLlxuICAgKi9cbiAgdG9nZ2xlQnV0dG9uUHJvcHM/OiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxcbiAgICBSZWFjdC5CdXR0b25IVE1MQXR0cmlidXRlczxIVE1MQnV0dG9uRWxlbWVudD4sXG4gICAgSFRNTEJ1dHRvbkVsZW1lbnRcbiAgPlxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gcmVuZGVyIHRoZSBkZXZ0b29scyBpbnNpZGUgYSBkaWZmZXJlbnQgdHlwZSBvZiBjb250YWluZXIgZWxlbWVudCBmb3IgYTExeSBwdXJwb3Nlcy5cbiAgICogQW55IHN0cmluZyB3aGljaCBjb3JyZXNwb25kcyB0byBhIHZhbGlkIGludHJpbnNpYyBKU1ggZWxlbWVudCBpcyBhbGxvd2VkLlxuICAgKiBEZWZhdWx0cyB0byAnZm9vdGVyJy5cbiAgICovXG4gIGNvbnRhaW5lckVsZW1lbnQ/OiBzdHJpbmcgfCBhbnlcbn1cblxuaW50ZXJmYWNlIERldnRvb2xzUGFuZWxPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSByZWFjdCB0YWJsZSB0byBhdHRhY2ggdGhlIGRldnRvb2xzIHRvLlxuICAgKi9cbiAgdGFibGU6IGFueVxuICAvKipcbiAgICogVGhlIHN0YW5kYXJkIFJlYWN0IHN0eWxlIG9iamVjdCB1c2VkIHRvIHN0eWxlIGEgY29tcG9uZW50IHdpdGggaW5saW5lIHN0eWxlc1xuICAgKi9cbiAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzXG4gIC8qKlxuICAgKiBUaGUgc3RhbmRhcmQgUmVhY3QgY2xhc3NOYW1lIHByb3BlcnR5IHVzZWQgdG8gc3R5bGUgYSBjb21wb25lbnQgd2l0aCBjbGFzc2VzXG4gICAqL1xuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIEEgYm9vbGVhbiB2YXJpYWJsZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHBhbmVsIGlzIG9wZW4gb3IgY2xvc2VkXG4gICAqL1xuICBpc09wZW4/OiBib29sZWFuXG4gIC8qKlxuICAgKiBBIGZ1bmN0aW9uIHRoYXQgdG9nZ2xlcyB0aGUgb3BlbiBhbmQgY2xvc2Ugc3RhdGUgb2YgdGhlIHBhbmVsXG4gICAqL1xuICBzZXRJc09wZW46IChpc09wZW46IGJvb2xlYW4pID0+IHZvaWRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJlYWN0VGFibGVEZXZ0b29scyh7XG4gIGluaXRpYWxJc09wZW4sXG4gIHRhYmxlLFxuICBwYW5lbFByb3BzID0ge30sXG4gIHRvZ2dsZUJ1dHRvblByb3BzID0ge30sXG4gIGNvbnRhaW5lckVsZW1lbnQ6IENvbnRhaW5lciA9ICdmb290ZXInLFxufTogRGV2dG9vbHNPcHRpb25zKTogUmVhY3QuUmVhY3RFbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IHJvb3RSZWYgPSBSZWFjdC51c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHBhbmVsUmVmID0gUmVhY3QudXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gdXNlTG9jYWxTdG9yYWdlKFxuICAgICdyZWFjdFRhYmxlRGV2dG9vbHNPcGVuJyxcbiAgICBpbml0aWFsSXNPcGVuXG4gIClcbiAgY29uc3QgaXNNb3VudGVkID0gdXNlSXNNb3VudGVkKClcblxuICBjb25zdCB7IHN0eWxlOiBwYW5lbFN0eWxlID0ge30sIC4uLm90aGVyUGFuZWxQcm9wcyB9ID0gcGFuZWxQcm9wc1xuXG4gIGNvbnN0IHtcbiAgICBzdHlsZTogdG9nZ2xlQnV0dG9uU3R5bGUgPSB7fSxcbiAgICBvbkNsaWNrOiBvblRvZ2dsZUNsaWNrLFxuICAgIC4uLm90aGVyVG9nZ2xlQnV0dG9uUHJvcHNcbiAgfSA9IHRvZ2dsZUJ1dHRvblByb3BzXG5cbiAgLy8gRG8gbm90IHJlbmRlciBvbiB0aGUgc2VydmVyXG4gIGlmICghaXNNb3VudGVkKCkpIHJldHVybiBudWxsXG5cbiAgcmV0dXJuIChcbiAgICA8Q29udGFpbmVyIHJlZj17cm9vdFJlZn0gY2xhc3NOYW1lPVwiUmVhY3RUYWJsZURldnRvb2xzXCI+XG4gICAgICA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9PlxuICAgICAgICB7IWlzT3BlbiA/IChcbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIHsuLi5vdGhlclRvZ2dsZUJ1dHRvblByb3BzfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIk9wZW4gUmVhY3QgVGFibGUgRGV2dG9vbHNcIlxuICAgICAgICAgICAgb25DbGljaz17ZSA9PiB7XG4gICAgICAgICAgICAgIHNldElzT3Blbih0cnVlKVxuICAgICAgICAgICAgICBvblRvZ2dsZUNsaWNrICYmIG9uVG9nZ2xlQ2xpY2soZSlcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAnbm9uZScsXG4gICAgICAgICAgICAgIGJvcmRlcjogMCxcbiAgICAgICAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgICAgICAgbWFyZ2luOiAnLjVyZW0nLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnaW5saW5lLWZsZXgnLFxuICAgICAgICAgICAgICBmb250U2l6ZTogJzEuNWVtJyxcbiAgICAgICAgICAgICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgICAgICAgICAgIHdpZHRoOiAnZml0LWNvbnRlbnQnLFxuICAgICAgICAgICAgICAuLi50b2dnbGVCdXR0b25TdHlsZSxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPExvZ28gYXJpYS1oaWRkZW4gLz5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8UmVhY3RUYWJsZURldnRvb2xzUGFuZWxcbiAgICAgICAgICAgIHJlZj17cGFuZWxSZWYgYXMgYW55fVxuICAgICAgICAgICAgey4uLm90aGVyUGFuZWxQcm9wc31cbiAgICAgICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgICAgIGlzT3Blbj17aXNPcGVufVxuICAgICAgICAgICAgc2V0SXNPcGVuPXtzZXRJc09wZW59XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBtYXhIZWlnaHQ6ICc4MHZoJyxcbiAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgLi4ucGFuZWxTdHlsZSxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvVGhlbWVQcm92aWRlcj5cbiAgICA8L0NvbnRhaW5lcj5cbiAgKVxufVxuXG5leHBvcnQgY29uc3QgUmVhY3RUYWJsZURldnRvb2xzUGFuZWwgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MRGl2RWxlbWVudCxcbiAgRGV2dG9vbHNQYW5lbE9wdGlvbnNcbj4oZnVuY3Rpb24gUmVhY3RUYWJsZURldnRvb2xzUGFuZWwocHJvcHMsIHJlZik6IFJlYWN0LlJlYWN0RWxlbWVudCB7XG4gIGNvbnN0IHtcbiAgICB0YWJsZSxcbiAgICBpc09wZW4gPSB0cnVlLFxuICAgIHNldElzT3BlbixcbiAgICAuLi5wYW5lbFByb3BzXG4gIH0gPSBwcm9wcyBhcyBEZXZ0b29sc1BhbmVsT3B0aW9ucyAmIHtcbiAgICB0YWJsZTogVGFibGU8YW55PlxuICB9XG5cbiAgLy8gY29uc3QgW2FjdGl2ZU1hdGNoSWQsIHNldEFjdGl2ZVJvdXRlSWRdID0gdXNlTG9jYWxTdG9yYWdlKFxuICAvLyAgICdyZWFjdFRhYmxlRGV2dG9vbHNBY3RpdmVSb3V0ZUlkJyxcbiAgLy8gICAnJyxcbiAgLy8gKVxuXG4gIHJldHVybiAoXG4gICAgPFRoZW1lUHJvdmlkZXIgdGhlbWU9e3RoZW1lfT5cbiAgICAgIDxQYW5lbCByZWY9e3JlZn0gY2xhc3NOYW1lPVwiUmVhY3RUYWJsZURldnRvb2xzUGFuZWxcIiB7Li4ucGFuZWxQcm9wc30+XG4gICAgICAgIDxzdHlsZVxuICAgICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7XG4gICAgICAgICAgICBfX2h0bWw6IGBcbiAgICAgICAgICAgIC5SZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCAqIHtcbiAgICAgICAgICAgICAgc2Nyb2xsYmFyLWNvbG9yOiAke3RoZW1lLmJhY2tncm91bmRBbHR9ICR7dGhlbWUuZ3JheX07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5SZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCAqOjotd2Via2l0LXNjcm9sbGJhciwgLlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsIHNjcm9sbGJhciB7XG4gICAgICAgICAgICAgIHdpZHRoOiAxZW07XG4gICAgICAgICAgICAgIGhlaWdodDogMWVtO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuUmVhY3RUYWJsZURldnRvb2xzUGFuZWwgKjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2ssIC5SZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCBzY3JvbGxiYXItdHJhY2sge1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLmJhY2tncm91bmRBbHR9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuUmVhY3RUYWJsZURldnRvb2xzUGFuZWwgKjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIsIC5SZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCBzY3JvbGxiYXItdGh1bWIge1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLmdyYXl9O1xuICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAuNWVtO1xuICAgICAgICAgICAgICBib3JkZXI6IDNweCBzb2xpZCAke3RoZW1lLmJhY2tncm91bmRBbHR9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGAsXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICBmbGV4OiAnMSAxIDUwMHB4JyxcbiAgICAgICAgICAgIG1pbkhlaWdodDogJzQwJScsXG4gICAgICAgICAgICBtYXhIZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgIG92ZXJmbG93OiAnYXV0bycsXG4gICAgICAgICAgICBib3JkZXJSaWdodDogYDFweCBzb2xpZCAke3RoZW1lLmdyYXlBbHR9YCxcbiAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBwYWRkaW5nOiAnLjVlbScsXG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6IHRoZW1lLmJhY2tncm91bmRBbHQsXG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxMb2dvXG4gICAgICAgICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQ6ICcuNWVtJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNPcGVuKGZhbHNlKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQ6ICdhdXRvJyxcbiAgICAgICAgICAgICAgICBmb250U2l6ZTogJ2NsYW1wKC44cmVtLCAydncsIDEuM3JlbSknLFxuICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6ICdib2xkJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgUmVhY3QgVGFibGV7JyAnfVxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiAxMDAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIERldnRvb2xzXG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2lzT3BlbiA/IChcbiAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbG9zZSBSZWFjdCBUYWJsZSBEZXZ0b29sc1wiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHNldElzT3BlbihmYWxzZSlcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgQ2xvc2VcbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgIGZsZXhXcmFwOiAnd3JhcCcsXG4gICAgICAgICAgICAgIG92ZXJmbG93WTogJ2F1dG8nLFxuICAgICAgICAgICAgICBmbGV4OiAnMScsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBmbGV4OiAnMSAxIGF1dG8nLFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6ICcuNWVtJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJJbnN0YW5jZVwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnLjVyZW0nLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxFeHBsb3JlclxuICAgICAgICAgICAgICAgIGxhYmVsPVwiU3RhdGVcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXt0YWJsZS5nZXRTdGF0ZSgpfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnLjVyZW0nLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxFeHBsb3JlclxuICAgICAgICAgICAgICAgIGxhYmVsPVwiQ29sdW1uc1wiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldEFsbENvbHVtbnMoKX1cbiAgICAgICAgICAgICAgICBkZWZhdWx0RXhwYW5kZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgZmxleDogJzEgMSBhdXRvJyxcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAnLjVlbScsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxFeHBsb3JlclxuICAgICAgICAgICAgICAgIGxhYmVsPVwiQ29yZSBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldENvcmVSb3dNb2RlbCgpfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxFeHBsb3JlclxuICAgICAgICAgICAgICAgIGxhYmVsPVwiRmlsdGVyZWQgTW9kZWxcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXt0YWJsZS5nZXRGaWx0ZXJlZFJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJTb3J0ZWQgTW9kZWxcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXt0YWJsZS5nZXRTb3J0ZWRSb3dNb2RlbCgpfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxFeHBsb3JlclxuICAgICAgICAgICAgICAgIGxhYmVsPVwiR3JvdXBlZCBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldEdyb3VwZWRSb3dNb2RlbCgpfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxFeHBsb3JlclxuICAgICAgICAgICAgICAgIGxhYmVsPVwiRXhwYW5kZWQgTW9kZWxcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXt0YWJsZS5nZXRFeHBhbmRlZFJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgey8qIDxkaXZcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBmbGV4OiAnMSAxIGF1dG8nLFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6ICcuNWVtJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJSb3cgTW9kZWxcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXt0YWJsZS5nZXRSb3dNb2RlbCgpfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj4gKi99XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9QYW5lbD5cbiAgICA8L1RoZW1lUHJvdmlkZXI+XG4gIClcbn0pXG4iLCAiaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuZnVuY3Rpb24gU2tlbGV0b24oeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50Pikge1xuICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e2NuKFwicHMtYW5pbWF0ZS1wdWxzZSBwcy1yb3VuZGVkLW1kIHBzLWJnLWZvcmVncm91bmQvMTBcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPjtcbn1cblxuZXhwb3J0IHsgU2tlbGV0b24gfTtcbiIsICJpbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFHcmlkTG9hZGluZ0JhclByb3BzIHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGF0YUdyaWRMb2FkaW5nQmFyKHsgY2xhc3NOYW1lIH06IERhdGFHcmlkTG9hZGluZ0JhclByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgZGF0YS1sb2FkaW5nLWJhclxuICAgICAgY2xhc3NOYW1lPXtjbihcInBzLWgtWzJweF0gcHMtdy1mdWxsIHBzLW92ZXJmbG93LWhpZGRlbiBwcy1iZy10YWJsZS1ib3JkZXIgcHMtei01MFwiLCBjbGFzc05hbWUpfVxuICAgID5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtYW5pbWF0ZS1pbmRldGVybWluYXRlLWJhciBwcy1oLWZ1bGwgcHMtdy0xLzMgcHMtcm91bmRlZC1yLWZ1bGwgcHMtYmctcHJpbWFyeVwiIC8+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgVGFibGUgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBDaGV2cm9uTGVmdCwgQ2hldnJvblJpZ2h0LCBDaGV2cm9uc0xlZnQsIENoZXZyb25zUmlnaHQgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5cbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCJAL3VpL2NvbXBvbmVudHMvdWkvYnV0dG9uXCI7XG5pbXBvcnQgeyBJbnB1dCB9IGZyb20gXCJAL3VpL2NvbXBvbmVudHMvdWkvaW5wdXRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBEYXRhR3JpZFBhZ2luYXRpb25Qcm9wcyB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgdGFibGU6IFRhYmxlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgdmFyaWFudD86IFwiYmFzaWNcIiB8IFwibnVtZXJpY1wiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGF0YUdyaWRQYWdpbmF0aW9uKHByb3BzOiBEYXRhR3JpZFBhZ2luYXRpb25Qcm9wcykge1xuICBjb25zdCB7IHRhYmxlLCB2YXJpYW50ID0gXCJiYXNpY1wiIH0gPSBwcm9wcztcblxuICBjb25zdCB7IHBhZ2VJbmRleCB9ID0gdGFibGUuZ2V0U3RhdGUoKS5wYWdpbmF0aW9uO1xuICBjb25zdCBwYWdlQ291bnQgPSB0YWJsZS5nZXRQYWdlQ291bnQoKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtcm91bmRlZC1iLWxnIHBzLW92ZXJmbG93LWNsaXAgcHMtc3RpY2t5IHBzLWJvdHRvbS0wIHBzLWxlZnQtMCBwcy1ib3JkZXItdC0wIHctZnVsbCBwcy16LTIwIHBzLXAtMFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtc3BhY2UteC0yIHBzLXB5LTIgcHMtcHgtMiBwcy1ib3JkZXItdCBwcy1ib3JkZXItdGFibGUtYm9yZGVyIHBzLWJhY2tkcm9wLWJsdXItc20gcHMtYmctdGFibGUtaGVhZC85MFwiPlxuICAgICAgICB7dmFyaWFudCA9PT0gXCJiYXNpY1wiID8gKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtc3BhY2UteC0yXCI+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtaC05XCJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGFibGUucHJldmlvdXNQYWdlKCl9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXshdGFibGUuZ2V0Q2FuUHJldmlvdXNQYWdlKCl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFByZXZpb3VzXG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVcIlxuICAgICAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy1oLTlcIlxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0YWJsZS5uZXh0UGFnZSgpfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17IXRhYmxlLmdldENhbk5leHRQYWdlKCl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIE5leHRcbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtc3BhY2UteC0yXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLXNwYWNlLXgtMlwiPlxuICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lXCIgb25DbGljaz17KCkgPT4gdGFibGUuc2V0UGFnZUluZGV4KDApfSBkaXNhYmxlZD17IXRhYmxlLmdldENhblByZXZpb3VzUGFnZSgpfT5cbiAgICAgICAgICAgICAgICA8Q2hldnJvbnNMZWZ0IGNsYXNzTmFtZT1cInBzLXctNCBwcy1oLTRcIiAvPlxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIG9uQ2xpY2s9eygpID0+IHRhYmxlLnByZXZpb3VzUGFnZSgpfSBkaXNhYmxlZD17IXRhYmxlLmdldENhblByZXZpb3VzUGFnZSgpfT5cbiAgICAgICAgICAgICAgICA8Q2hldnJvbkxlZnQgY2xhc3NOYW1lPVwicHMtdy00IHBzLWgtNFwiIC8+XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0xIHBzLXRleHQteHMgcHMtZm9udC1tZWRpdW1cIj5cbiAgICAgICAgICAgICAgICBQYWdlXG4gICAgICAgICAgICAgICAgPElucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgIG1pbj17MX1cbiAgICAgICAgICAgICAgICAgIG1heD17cGFnZUNvdW50fVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e3BhZ2VJbmRleCArIDF9XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy13LTE2XCJcbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYWdlSW5kZXggPSBlLnRhcmdldC52YWx1ZSA/IE51bWJlcihlLnRhcmdldC52YWx1ZSkgLSAxIDogMDtcbiAgICAgICAgICAgICAgICAgICAgdGFibGUuc2V0UGFnZUluZGV4KHBhZ2VJbmRleCk7XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtc2hyaW5rLTAgcHMtdy1tYXhcIj5vZiB7cGFnZUNvdW50fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBvbkNsaWNrPXsoKSA9PiB0YWJsZS5uZXh0UGFnZSgpfSBkaXNhYmxlZD17IXRhYmxlLmdldENhbk5leHRQYWdlKCl9PlxuICAgICAgICAgICAgICAgIDxDaGV2cm9uUmlnaHQgY2xhc3NOYW1lPVwicHMtdy00IHBzLWgtNFwiIC8+XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVcIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRhYmxlLnNldFBhZ2VJbmRleChwYWdlQ291bnQgLSAxKX1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17IXRhYmxlLmdldENhbk5leHRQYWdlKCl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Q2hldnJvbnNSaWdodCBjbGFzc05hbWU9XCJwcy13LTQgcHMtaC00XCIgLz5cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuIiwgImltcG9ydCB7IENvbHVtbiB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB0eXBlIHsgQ1NTUHJvcGVydGllcyB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyhjb2x1bW46IENvbHVtbjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4sIGtpbmQ6IFwiaGVhZGVyXCIgfCBcImNlbGxcIikge1xuICBjb25zdCBpc1Bpbm5lZCA9IGNvbHVtbi5nZXRJc1Bpbm5lZCgpO1xuICBjb25zdCBpc0xlZnRQaW5uZWQgPSBpc1Bpbm5lZCA9PT0gXCJsZWZ0XCI7XG4gIGNvbnN0IGlzUmlnaHRQaW5uZWQgPSBpc1Bpbm5lZCA9PT0gXCJyaWdodFwiO1xuXG4gIHJldHVybiB7XG4gICAgY2xhc3NOYW1lOiBjbihcbiAgICAgIGtpbmQgPT09IFwiY2VsbFwiICYmIFwiZ3JvdXAtb2RkOnBzLWJnLW5ldXRyYWwtNTAgZ3JvdXAtZXZlbjpwcy1iZy13aGl0ZSBncm91cC1ob3Zlcjpwcy1iZy1uZXV0cmFsLTEwMFwiLFxuICAgICAga2luZCA9PT0gXCJoZWFkZXJcIiAmJiBcInBzLXNlbGVjdC1ub25lIHBzLXRvdWNoLW5vbmUgcHMtc3RpY2t5IHBzLXRvcC0wIHBzLWJnLXRhYmxlLWhlYWRcIixcbiAgICAgIFwicHMtZ3JvdXAgcHMtYm9yZGVyLXIgcHMtYm9yZGVyLWIgcHMtYm9yZGVyLXRhYmxlLWJvcmRlclwiLFxuICAgICAgXCJwcy1vdmVyZmxvdy1oaWRkZW4gcHMtd2hpdGVzcGFjZS1ub3dyYXAgcHMtdGV4dC1lbGxpcHNpc1wiLFxuICAgICAgaXNQaW5uZWQgJiYgXCJwcy1zdGlja3lcIixcbiAgICAgIChpc0xlZnRQaW5uZWQgfHwgaXNSaWdodFBpbm5lZCkgJiYga2luZCA9PT0gXCJoZWFkZXJcIiAmJiBcInBzLXotMjBcIixcbiAgICAgIChpc0xlZnRQaW5uZWQgfHwgaXNSaWdodFBpbm5lZCkgJiYga2luZCA9PT0gXCJjZWxsXCIgJiYgXCJwcy16LTBcIixcbiAgICApLFxuICAgIHN0eWxlOiB7XG4gICAgICBtaW5XaWR0aDogYCR7Y29sdW1uLmdldFNpemUoKX1weGAsXG4gICAgICB3aWR0aDogYCR7Y29sdW1uLmdldFNpemUoKX1weGAsXG4gICAgICBsZWZ0OiBpc0xlZnRQaW5uZWQgPyBgJHtjb2x1bW4uZ2V0U3RhcnQoXCJsZWZ0XCIpfXB4YCA6IHVuZGVmaW5lZCxcbiAgICAgIHJpZ2h0OiBpc1JpZ2h0UGlubmVkID8gYCR7Y29sdW1uLmdldEFmdGVyKFwicmlnaHRcIil9cHhgIDogdW5kZWZpbmVkLFxuICAgIH0gYXMgQ1NTUHJvcGVydGllcyxcbiAgfTtcbn1cbiIsICJpbXBvcnQgeyB1c2VTb3J0YWJsZSB9IGZyb20gXCJAZG5kLWtpdC9zb3J0YWJsZVwiO1xuaW1wb3J0IHsgQ1NTIH0gZnJvbSBcIkBkbmQta2l0L3V0aWxpdGllc1wiO1xuaW1wb3J0IHsgSGVhZGVyLCB1c2VSZWFjdFRhYmxlIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgQ1NTUHJvcGVydGllcywgUHJvcHNXaXRoQ2hpbGRyZW4gfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgVGFibGVIZWFkIH0gZnJvbSBcIkAvdWkvY29tcG9uZW50cy91aS90YWJsZVwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxudHlwZSBEcmFnZ2FibGVIZWFkZXJDZWxsUHJvcHMgPSBQcm9wc1dpdGhDaGlsZHJlbjx7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgaGVhZGVyOiBIZWFkZXI8UmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHVua25vd24+O1xuICBzdHlsZT86IENTU1Byb3BlcnRpZXM7XG4gIHRhYmxlOiBSZXR1cm5UeXBlPHR5cGVvZiB1c2VSZWFjdFRhYmxlPFJlY29yZDxzdHJpbmcsIHVua25vd24+Pj47XG59PjtcblxuZXhwb3J0IGNvbnN0IERhdGFHcmlkRHJhZ2dhYmxlSGVhZGVyQ2VsbCA9IChwcm9wczogRHJhZ2dhYmxlSGVhZGVyQ2VsbFByb3BzKSA9PiB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgaGVhZGVyLCBzdHlsZTogY29tbW9uU3R5bGUgfSA9IHByb3BzO1xuXG4gIGNvbnN0IHsgYXR0cmlidXRlcywgbGlzdGVuZXJzLCB0cmFuc2Zvcm0sIHRyYW5zaXRpb24sIHNldE5vZGVSZWYsIGlzRHJhZ2dpbmcgfSA9IHVzZVNvcnRhYmxlKHtcbiAgICBpZDogaGVhZGVyLmlkLFxuICB9KTtcblxuICBjb25zdCBzdHlsZSA9IHtcbiAgICAuLi5jb21tb25TdHlsZSxcbiAgICBjdXJzb3I6IFwiZ3JhYlwiLFxuICAgIHRvdWNoQWN0aW9uOiBcIm5vbmVcIixcbiAgICB0cmFuc2Zvcm06IENTUy5UcmFuc2Zvcm0udG9TdHJpbmcodHJhbnNmb3JtKSxcbiAgICB0cmFuc2l0aW9uLFxuICB9IGFzIENTU1Byb3BlcnRpZXM7XG5cbiAgY29uc3QgZHJhZ0NsYXNzID0gY24oY2xhc3NOYW1lLCBpc0RyYWdnaW5nICYmIFwiIXBzLXotNTAgcHMtYm9yZGVyLTIgcHMtYm9yZGVyLXZpb2xldC01MDBcIik7XG5cbiAgcmV0dXJuIChcbiAgICA8VGFibGVIZWFkIHJlZj17c2V0Tm9kZVJlZn0gey4uLmF0dHJpYnV0ZXN9IHsuLi5saXN0ZW5lcnN9IHN0eWxlPXtzdHlsZX0gY2xhc3NOYW1lPXtkcmFnQ2xhc3N9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy13LWZ1bGxcIj57Y2hpbGRyZW59PC9kaXY+XG4gICAgPC9UYWJsZUhlYWQ+XG4gICk7XG59O1xuIiwgImltcG9ydCB7IHR5cGUgSGVhZGVyIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgQXJyb3dEb3duV2lkZU5hcnJvdywgQXJyb3dVcFdpZGVOYXJyb3csIENoZXZyb25Eb3duLCBNb3ZlRG93biwgTW92ZVVwLCBQaW4sIFBpbk9mZiwgWCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB7IEFuaW1hdGVQcmVzZW5jZSwgbW90aW9uIH0gZnJvbSBcIm1vdGlvbi9yZWFjdFwiO1xuXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2J1dHRvblwiO1xuaW1wb3J0IHtcbiAgRHJvcGRvd25NZW51LFxuICBEcm9wZG93bk1lbnVDb250ZW50LFxuICBEcm9wZG93bk1lbnVJdGVtLFxuICBEcm9wZG93bk1lbnVUcmlnZ2VyLFxufSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9kcm9wZG93bi1tZW51XCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi8uLi9saWIvdXRpbHNcIjtcbmltcG9ydCB7IERhdGFHcmlkSGVhZGVyQ2VsbCB9IGZyb20gXCIuL0RhdGFHcmlkSGVhZGVyQ2VsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEhlYWRlclByb3BzPFREYXRhPiB7XG4gIGNvbHVtbjogQ29sdW1uO1xuICBoZWFkZXI6IEhlYWRlcjxURGF0YSwgdW5rbm93bj47XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGFHcmlkSGVhZGVyPFREYXRhPihwcm9wczogSGVhZGVyUHJvcHM8VERhdGE+KSB7XG4gIGNvbnN0IHsgY29sdW1uLCBoZWFkZXIsIGNsYXNzTmFtZSB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y24oXCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWJldHdlZW5cIiwgY2xhc3NOYW1lKX0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlbiBwcy13LWZ1bGxcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMiBwcy1vdmVyZmxvdy1oaWRkZW4gcHMtdGV4dC1lbGxpcHNpcyBwcy1mb250LW1vbm8gcHMtdGV4dC14c1wiPlxuICAgICAgICAgIHtoZWFkZXIuaXNQbGFjZWhvbGRlciA/IG51bGwgOiAoXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLW1pbi13LTBcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtbWluLXctMCBwcy1vdmVyZmxvdy1oaWRkZW4gcHMtdGV4dC1lbGxpcHNpcyBwcy10ZXh0LWZvcmVncm91bmQvOTBcIj5cbiAgICAgICAgICAgICAgICA8RGF0YUdyaWRIZWFkZXJDZWxsIGNvbHVtbj17Y29sdW1ufSAvPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy1zaHJpbmstMCBwcy1nYXAtMVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLW1sLTFcIj5cbiAgICAgICAgICAgIDxBbmltYXRlUHJlc2VuY2UgbW9kZT1cIndhaXRcIj5cbiAgICAgICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0SXNTb3J0ZWQoKSA9PT0gXCJkZXNjXCIgPyAoXG4gICAgICAgICAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICAgICAgICAgIGtleT1cImRlc2NcIlxuICAgICAgICAgICAgICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwLCB5OiAtNCB9fVxuICAgICAgICAgICAgICAgICAgYW5pbWF0ZT17eyBvcGFjaXR5OiAxLCB5OiAwIH19XG4gICAgICAgICAgICAgICAgICBleGl0PXt7IG9wYWNpdHk6IDAsIHk6IC00IH19XG4gICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uPXt7IGR1cmF0aW9uOiAwLjIgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8TW92ZURvd24gc2l6ZT17MTR9IGNsYXNzTmFtZT1cInBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgICAgICAgICApIDogaGVhZGVyLmNvbHVtbi5nZXRJc1NvcnRlZCgpID09PSBcImFzY1wiID8gKFxuICAgICAgICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICAgICAgICBrZXk9XCJhc2NcIlxuICAgICAgICAgICAgICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwLCB5OiA0IH19XG4gICAgICAgICAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEsIHk6IDAgfX1cbiAgICAgICAgICAgICAgICAgIGV4aXQ9e3sgb3BhY2l0eTogMCwgeTogNCB9fVxuICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbj17eyBkdXJhdGlvbjogMC4yIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPE1vdmVVcCBzaXplPXsxNH0gY2xhc3NOYW1lPVwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgPC9BbmltYXRlUHJlc2VuY2U+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIHtoZWFkZXIuY29sdW1uLmdldENhblBpbigpICYmIGhlYWRlci5jb2x1bW4uaWQgIT09IFwic2VsZWN0XCIgJiYgKFxuICAgICAgICAgICAgPERyb3Bkb3duTWVudT5cbiAgICAgICAgICAgICAgPERyb3Bkb3duTWVudVRyaWdnZXIgYXNDaGlsZD5cbiAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJnaG9zdFwiIHNpemU9XCJzbVwiIGNsYXNzTmFtZT1cInBzLXB4LTAgcHMtaC02IHBzLXctNlwiPlxuICAgICAgICAgICAgICAgICAgPENoZXZyb25Eb3duIHNpemU9ezEyfSAvPlxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICA8L0Ryb3Bkb3duTWVudVRyaWdnZXI+XG4gICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVDb250ZW50PlxuICAgICAgICAgICAgICAgIHtoZWFkZXIuY29sdW1uLmdldENhblNvcnQoKSAmJiAoXG4gICAgICAgICAgICAgICAgICA8RHJvcGRvd25NZW51SXRlbSBvbkNsaWNrPXsoKSA9PiBoZWFkZXIuY29sdW1uLnRvZ2dsZVNvcnRpbmcoKX0+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0TmV4dFNvcnRpbmdPcmRlcigpID09PSBcImRlc2NcIiA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJvd0Rvd25XaWRlTmFycm93IHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0IGRlc2NlbmRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICkgOiBoZWFkZXIuY29sdW1uLmdldE5leHRTb3J0aW5nT3JkZXIoKSA9PT0gXCJhc2NcIiA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJvd1VwV2lkZU5hcnJvdyBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgU29ydCBhc2NlbmRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8WCBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FuY2VsIHNvcnRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51SXRlbT5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVJdGVtIG9uQ2xpY2s9eygpID0+IGhlYWRlci5jb2x1bW4ucGluKGhlYWRlci5jb2x1bW4uZ2V0SXNQaW5uZWQoKSA/IGZhbHNlIDogXCJsZWZ0XCIpfT5cbiAgICAgICAgICAgICAgICAgIHtoZWFkZXIuY29sdW1uLmdldElzUGlubmVkKCkgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPFBpbk9mZiBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICBVbnBpbiBjb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8UGluIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgIFBpbiBjb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duTWVudUl0ZW0+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51Q29udGVudD5cbiAgICAgICAgICAgIDwvRHJvcGRvd25NZW51PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAge2hlYWRlci5jb2x1bW4uZ2V0Q2FuUmVzaXplKCkgJiYgKFxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgb25Nb3VzZURvd249eyhlKSA9PiB7XG4gICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgaGVhZGVyLmdldFJlc2l6ZUhhbmRsZXIoKShlKTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uVG91Y2hTdGFydD17KGUpID0+IHtcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBoZWFkZXIuZ2V0UmVzaXplSGFuZGxlcigpKGUpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgb25DbGljaz17KGUpID0+IGUuc3RvcFByb3BhZ2F0aW9uKCl9XG4gICAgICAgICAgb25LZXlEb3duPXsoZSkgPT4ge1xuICAgICAgICAgICAgaWYgKGUua2V5ID09PSBcIkVudGVyXCIgfHwgZS5rZXkgPT09IFwiIFwiKSB7XG4gICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgaGVhZGVyLmdldFJlc2l6ZUhhbmRsZXIoKShlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICBcInBzLWFic29sdXRlIHBzLXJpZ2h0LTAgcHMtdG9wLTAgcHMtaC1mdWxsIHBzLXctcHggcHMtY3Vyc29yLWNvbC1yZXNpemUgcHMtYm9yZGVyIHBzLWJvcmRlci10cmFuc3BhcmVudCBob3Zlcjpwcy1ib3JkZXItdGFibGUtYm9yZGVyXCIsXG4gICAgICAgICAgKX1cbiAgICAgICAgICBhcmlhLWxhYmVsPVwiUmVzaXplIGNvbHVtblwiXG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufVxuIiwgImltcG9ydCAqIGFzIFRvb2x0aXBQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC10b29sdGlwXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgVG9vbHRpcFByb3ZpZGVyID0gVG9vbHRpcFByaW1pdGl2ZS5Qcm92aWRlcjtcblxuY29uc3QgVG9vbHRpcCA9IFRvb2x0aXBQcmltaXRpdmUuUm9vdDtcblxuY29uc3QgVG9vbHRpcFRyaWdnZXIgPSBUb29sdGlwUHJpbWl0aXZlLlRyaWdnZXI7XG5cbmNvbnN0IFRvb2x0aXBDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgVG9vbHRpcFByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBUb29sdGlwUHJpbWl0aXZlLkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgc2lkZU9mZnNldCA9IDQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8VG9vbHRpcFByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPFRvb2x0aXBQcmltaXRpdmUuQ29udGVudFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBzaWRlT2Zmc2V0PXtzaWRlT2Zmc2V0fVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy16LTUwIHBzLW92ZXJmbG93LWhpZGRlbiBwcy1yb3VuZGVkLW1kIHBzLWJnLXByaW1hcnkgcHMtcHgtMyBwcy1weS0xLjUgcHMtdGV4dC14cyBwcy10ZXh0LXByaW1hcnktZm9yZWdyb3VuZCBwcy1hbmltYXRlLWluIHBzLWZhZGUtaW4tMCBwcy16b29tLWluLTk1IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtYW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1mYWRlLW91dC0wIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtem9vbS1vdXQtOTUgZGF0YS1bc2lkZT1ib3R0b21dOnBzLXNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpwcy1zbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06cHMtc2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnBzLXNsaWRlLWluLWZyb20tYm90dG9tLTIgcHMtb3JpZ2luLVstLXJhZGl4LXRvb2x0aXAtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXVwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIDwvVG9vbHRpcFByaW1pdGl2ZS5Qb3J0YWw+XG4pKTtcblRvb2x0aXBDb250ZW50LmRpc3BsYXlOYW1lID0gVG9vbHRpcFByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgeyBUb29sdGlwLCBUb29sdGlwVHJpZ2dlciwgVG9vbHRpcENvbnRlbnQsIFRvb2x0aXBQcm92aWRlciB9O1xuIiwgImltcG9ydCB7IEtleVJvdW5kIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBUb29sdGlwLCBUb29sdGlwQ29udGVudCwgVG9vbHRpcFByb3ZpZGVyLCBUb29sdGlwVHJpZ2dlciB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3Rvb2x0aXBcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIERhdGFHcmlkSGVhZGVyQ2VsbCh7IGNvbHVtbiB9OiB7IGNvbHVtbjogQ29sdW1uIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtZ2FwLTEgcHMtaXRlbXMtY2VudGVyXCI+XG4gICAgICB7Y29sdW1uLmlzSW5QcmltYXJ5S2V5ICYmIChcbiAgICAgICAgPFRvb2x0aXBQcm92aWRlciBkZWxheUR1cmF0aW9uPXsxMjB9PlxuICAgICAgICAgIDxUb29sdGlwPlxuICAgICAgICAgICAgPFRvb2x0aXBUcmlnZ2VyIGFzQ2hpbGQ+XG4gICAgICAgICAgICAgIDxLZXlSb3VuZCBzaXplPXsxMn0gY2xhc3NOYW1lPVwicHMtdGV4dC1wcmltYXJ5XCIgLz5cbiAgICAgICAgICAgIDwvVG9vbHRpcFRyaWdnZXI+XG4gICAgICAgICAgICA8VG9vbHRpcENvbnRlbnQgc2lkZT1cImJvdHRvbVwiIGNsYXNzTmFtZT1cInRleHQteHNcIj5cbiAgICAgICAgICAgICAgPHNwYW4+UHJpbWFyeSBLZXk8L3NwYW4+XG4gICAgICAgICAgICA8L1Rvb2x0aXBDb250ZW50PlxuICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgPC9Ub29sdGlwUHJvdmlkZXI+XG4gICAgICApfVxuICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZm9udC1tZWRpdW0gcHMtdHJ1bmNhdGVcIj57Y29sdW1uLm5hbWV9PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtb3ZlcmZsb3ctaGlkZGVuIHBzLXRleHQtZWxsaXBzaXMgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kLzcwIHBzLWxvd2VyY2FzZSBwcy10cnVuY2F0ZVwiPlxuICAgICAgICB7Y29sdW1uLmRhdGF0eXBlLm5hbWV9XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBDZWxsIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgaXNPYmplY3RUeXBlIH0gZnJvbSBcInJlbWVkYVwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbHVtbiB9IGZyb20gXCIuLi8uLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCB9IGZyb20gXCIuL0Jvb2xlYW5JbnB1dFwiO1xuaW1wb3J0IHsgRGF0ZUlucHV0IH0gZnJvbSBcIi4vRGF0ZUlucHV0XCI7XG5pbXBvcnQgeyBFbnVtSW5wdXQgfSBmcm9tIFwiLi9FbnVtSW5wdXRcIjtcbmltcG9ydCB7IEpzb25JbnB1dCB9IGZyb20gXCIuL0pzb25JbnB1dFwiO1xuaW1wb3J0IHsgTnVtZXJpY0lucHV0IH0gZnJvbSBcIi4vTnVtZXJpY0lucHV0XCI7XG5pbXBvcnQgeyBSYXdJbnB1dCB9IGZyb20gXCIuL1Jhd0lucHV0XCI7XG5pbXBvcnQgeyBUaW1lSW5wdXQgfSBmcm9tIFwiLi9UaW1lSW5wdXRcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldElucHV0KHByb3BzOiB7XG4gIGNlbGw6IENlbGw8UmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHVua25vd24+O1xuICBjb2x1bW46IENvbHVtbjtcbiAgb25TdWJtaXQ6ICh2YWx1ZTogdW5rbm93bikgPT4gdm9pZDtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59KSB7XG4gIGNvbnN0IHsgY2VsbCwgY29sdW1uLCBvblN1Ym1pdCB9ID0gcHJvcHM7XG4gIGNvbnN0IHsgZ3JvdXAsIG9wdGlvbnMsIGlzQXJyYXkgfSA9IGNvbHVtbi5kYXRhdHlwZTtcbiAgY29uc3QgcmVhZG9ubHkgPSBjb2x1bW4uaXNDb21wdXRlZCB8fCBwcm9wcy5yZWFkb25seTtcblxuICBjb25zdCBjZWxsVmFsdWUgPSBjZWxsLmdldFZhbHVlKCk7XG5cbiAgLy8gb24gcm93IGluc2VydGlvbnMsIHdlIHRyZWF0IHVuZGVmaW5lZCBhcyBlbXB0eSBpbnB1dFxuICBjb25zdCB2YWx1ZSA9IGNlbGxWYWx1ZSA9PT0gdW5kZWZpbmVkID8gXCJcIiA6IGNlbGxWYWx1ZTtcblxuICBpZiAoZ3JvdXAgPT09IFwiZGF0ZXRpbWVcIikge1xuICAgIHJldHVybiA8RGF0ZUlucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e3ZhbHVlfSBjb2x1bW49e2NvbHVtbn0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJ0aW1lXCIpIHtcbiAgICByZXR1cm4gPFRpbWVJbnB1dCBvblN1Ym1pdD17b25TdWJtaXR9IHZhbHVlPXt2YWx1ZX0gY29sdW1uPXtjb2x1bW59IHJlYWRvbmx5PXtyZWFkb25seX0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwianNvblwiIHx8IGlzQXJyYXkpIHtcbiAgICByZXR1cm4gPEpzb25JbnB1dCBvblN1Ym1pdD17b25TdWJtaXR9IHZhbHVlPXt2YWx1ZX0gY29sdW1uPXtjb2x1bW59IHJlYWRvbmx5PXtyZWFkb25seX0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgcmV0dXJuIDxCb29sZWFuSW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17dmFsdWV9IGNvbHVtbj17Y29sdW1ufSByZWFkb25seT17cmVhZG9ubHl9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcImVudW1cIikge1xuICAgIHJldHVybiA8RW51bUlucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e3ZhbHVlfSBvcHRpb25zPXtvcHRpb25zfSBjb2x1bW49e2NvbHVtbn0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJudW1lcmljXCIpIHtcbiAgICByZXR1cm4gPE51bWVyaWNJbnB1dCBvblN1Ym1pdD17b25TdWJtaXR9IHZhbHVlPXt2YWx1ZX0gY29sdW1uPXtjb2x1bW59IHJlYWRvbmx5PXtyZWFkb25seX0gLz47XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxSYXdJbnB1dCBvblN1Ym1pdD17b25TdWJtaXR9IHZhbHVlPXtpc09iamVjdFR5cGUodmFsdWUpID8gSlNPTi5zdHJpbmdpZnkodmFsdWUpIDogdmFsdWV9IHJlYWRvbmx5PXtyZWFkb25seX0gLz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyBtb3Rpb24gfSBmcm9tIFwibW90aW9uL3JlYWN0XCI7XG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBMYWJlbCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2xhYmVsXCI7XG5pbXBvcnQgeyB1c2VQb3BvdmVyQWN0aW9ucyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbFwiO1xuaW1wb3J0IHsgU3dpdGNoIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvc3dpdGNoXCI7XG5pbXBvcnQgeyBJbnB1dEFjdGlvbnMgfSBmcm9tIFwiLi9pbnB1dC1hY3Rpb25zXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQm9vbGVhbklucHV0UHJvcHMge1xuICBjb2x1bW46IENvbHVtbjtcbiAgb25TdWJtaXQodGhpczogdm9pZCwgdmFsdWU6IHVua25vd24pOiB2b2lkO1xuICB2YWx1ZTogdW5rbm93bjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBCb29sZWFuSW5wdXQocHJvcHM6IEJvb2xlYW5JbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgdmFsdWUsIG9uU3VibWl0LCBjb2x1bW4sIHJlYWRvbmx5IH0gPSBwcm9wcztcbiAgY29uc3QgaXNOdWxsYWJsZSA9IGNvbHVtbi5udWxsYWJsZSA9PT0gdHJ1ZTtcbiAgY29uc3QgW2N1cnJlbnRWYWx1ZSwgc2V0Q3VycmVudFZhbHVlXSA9IHVzZVN0YXRlPGJvb2xlYW4+KHZhbHVlID09PSBudWxsID8gZmFsc2UgOiAodmFsdWUgYXMgYm9vbGVhbikpO1xuICBjb25zdCBbc2V0VG9OdWxsLCBzZXRTZXRUb051bGxdID0gdXNlU3RhdGU8Ym9vbGVhbj4odmFsdWUgPT09IG51bGwpO1xuICBjb25zdCBpbml0aWFsVmFsdWUgPSB2YWx1ZSA9PT0gbnVsbCA/IGZhbHNlIDogKHZhbHVlIGFzIGJvb2xlYW4pO1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChjaGVja2VkOiBib29sZWFuKSA9PiB7XG4gICAgc2V0Q3VycmVudFZhbHVlKGNoZWNrZWQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU51bGxDaGFuZ2UgPSAoY2hlY2tlZDogYm9vbGVhbikgPT4ge1xuICAgIHNldFNldFRvTnVsbChjaGVja2VkKTtcbiAgfTtcblxuICAvLyBTdWJtaXQgaGFuZGxlciB0aGF0IG9ubHkgc3VibWl0cyBpZiB0aGUgdmFsdWUgaGFzIGNoYW5nZWRcbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgdmFsdWVUb1N1Ym1pdCA9IHNldFRvTnVsbCA/IG51bGwgOiBjdXJyZW50VmFsdWU7XG4gICAgaWYgKHZhbHVlVG9TdWJtaXQgIT09IHZhbHVlKSB7XG4gICAgICBvblN1Ym1pdCh2YWx1ZVRvU3VibWl0KTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sIFtjdXJyZW50VmFsdWUsIHZhbHVlLCBvblN1Ym1pdCwgc2V0VG9OdWxsXSk7XG5cbiAgY29uc3QgY2FuY2VsQWN0aW9uID0gKCkgPT4ge1xuICAgIC8vIFJlc2V0IHRoZSBpbnRlcm5hbCBzdGF0ZSB0byBtYXRjaCB0aGUgb3JpZ2luYWwgdmFsdWVcbiAgICBzZXRDdXJyZW50VmFsdWUoaW5pdGlhbFZhbHVlKTtcbiAgICBzZXRTZXRUb051bGwodmFsdWUgPT09IG51bGwpO1xuICB9O1xuXG4gIC8vIFVzZSBvdXIgaG9vayB0byBnZXQgaGFuZGxlcnMgdGhhdCBpbmNsdWRlIHBvcG92ZXIgY2xvc2luZ1xuICBjb25zdCB7IGhhbmRsZVNhdmUsIGhhbmRsZUNhbmNlbCB9ID0gdXNlUG9wb3ZlckFjdGlvbnMoe1xuICAgIG9uU2F2ZTogaGFuZGxlSW5wdXRTdWJtaXQsXG4gICAgb25DYW5jZWw6IGNhbmNlbEFjdGlvbixcbiAgICByZWFkb25seSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWl0ZW1zLWNlbnRlciBwcy1oLVt2YXIoLS1zdHVkaW8tY2VsbC1oZWlnaHQpXSBwcy1nYXAtNCBwcy1weS0wIHBzLXB4LTJcIj5cbiAgICAgICAgPExhYmVsIGh0bWxGb3I9XCJib29sZWFuLWlucHV0XCIgY2xhc3NOYW1lPVwicHMtc3Itb25seVwiPlxuICAgICAgICAgIEJvb2xlYW5cbiAgICAgICAgPC9MYWJlbD5cbiAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwIH19XG4gICAgICAgICAgYW5pbWF0ZT17eyBvcGFjaXR5OiAxIH19XG4gICAgICAgICAgdHJhbnNpdGlvbj17eyBkdXJhdGlvbjogMC4yNCB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFN3aXRjaFxuICAgICAgICAgICAgaWQ9XCJib29sZWFuLWlucHV0XCJcbiAgICAgICAgICAgIGNoZWNrZWQ9e2N1cnJlbnRWYWx1ZX1cbiAgICAgICAgICAgIG9uQ2hlY2tlZENoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e3NldFRvTnVsbCB8fCByZWFkb25seX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgZGF0YS12YWx1ZVxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWlubGluZS1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy10ZXh0LXhzIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZCBwcy1mb250LW1vbm9cIlxuICAgICAgICAgIGluaXRpYWw9e3sgeDogLTQwLCBvcGFjaXR5OiAxIH19XG4gICAgICAgICAgYW5pbWF0ZT17eyB4OiAwLCBvcGFjaXR5OiAxIH19XG4gICAgICAgICAgdHJhbnNpdGlvbj17eyBkdXJhdGlvbjogMC4xMiwgZGVsYXk6IDAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtzZXRUb051bGwgPyBcIk5VTExcIiA6IFN0cmluZyhjdXJyZW50VmFsdWUpfVxuICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxJbnB1dEFjdGlvbnNcbiAgICAgICAgb25TYXZlPXtoYW5kbGVTYXZlfVxuICAgICAgICBvbkNhbmNlbD17aGFuZGxlQ2FuY2VsfVxuICAgICAgICBvbk51bGxDaGFuZ2U9e2lzTnVsbGFibGUgPyBoYW5kbGVOdWxsQ2hhbmdlIDogdW5kZWZpbmVkfVxuICAgICAgICBpc051bGw9e3NldFRvTnVsbH1cbiAgICAgICAgcmVhZG9ubHk9e3JlYWRvbmx5fVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgKiBhcyBMYWJlbFByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWxhYmVsXCI7XG5pbXBvcnQgeyBjdmEsIHR5cGUgVmFyaWFudFByb3BzIH0gZnJvbSBcImNsYXNzLXZhcmlhbmNlLWF1dGhvcml0eVwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IGxhYmVsVmFyaWFudHMgPSBjdmEoXG4gIFwicHMtdGV4dC1zbSBwcy1mb250LW1lZGl1bSBwcy1sZWFkaW5nLW5vbmUgcGVlci1kaXNhYmxlZDpwcy1jdXJzb3Itbm90LWFsbG93ZWQgcGVlci1kaXNhYmxlZDpwcy1vcGFjaXR5LTcwXCIsXG4pO1xuXG5jb25zdCBMYWJlbCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIExhYmVsUHJpbWl0aXZlLlJvb3Q+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIExhYmVsUHJpbWl0aXZlLlJvb3Q+ICYgVmFyaWFudFByb3BzPHR5cGVvZiBsYWJlbFZhcmlhbnRzPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8TGFiZWxQcmltaXRpdmUuUm9vdCByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihsYWJlbFZhcmlhbnRzKCksIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbikpO1xuTGFiZWwuZGlzcGxheU5hbWUgPSBMYWJlbFByaW1pdGl2ZS5Sb290LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgeyBMYWJlbCB9O1xuIiwgImltcG9ydCAqIGFzIFN3aXRjaFByaW1pdGl2ZXMgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zd2l0Y2hcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBTd2l0Y2ggPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTd2l0Y2hQcmltaXRpdmVzLlJvb3Q+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFN3aXRjaFByaW1pdGl2ZXMuUm9vdD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFN3aXRjaFByaW1pdGl2ZXMuUm9vdFxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXBlZXIgcHMtaW5saW5lLWZsZXggcHMtaC01IHBzLXctOSBwcy1zaHJpbmstMCBwcy1jdXJzb3ItcG9pbnRlciBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1mdWxsIHBzLWJvcmRlci0yIHBzLWJvcmRlci10cmFuc3BhcmVudCBwcy1zaGFkb3ctc20gcHMtdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXMtdmlzaWJsZTpwcy1vdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTIgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLXJpbmcgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLW9mZnNldC0yIGZvY3VzLXZpc2libGU6cHMtcmluZy1vZmZzZXQtYmFja2dyb3VuZCBkaXNhYmxlZDpwcy1jdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6cHMtb3BhY2l0eS01MCBkYXRhLVtzdGF0ZT1jaGVja2VkXTpwcy1iZy1wcmltYXJ5IGRhdGEtW3N0YXRlPXVuY2hlY2tlZF06cHMtYmctaW5wdXRcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgICByZWY9e3JlZn1cbiAgPlxuICAgIDxTd2l0Y2hQcmltaXRpdmVzLlRodW1iXG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLXBvaW50ZXItZXZlbnRzLW5vbmUgcHMtYmxvY2sgcHMtaC00IHBzLXctNCBwcy1yb3VuZGVkLWZ1bGwgcHMtYmctYmFja2dyb3VuZCBwcy1zaGFkb3ctbGcgcHMtcmluZy0wIHBzLXRyYW5zaXRpb24tdHJhbnNmb3JtIGRhdGEtW3N0YXRlPWNoZWNrZWRdOnBzLXRyYW5zbGF0ZS14LTQgZGF0YS1bc3RhdGU9dW5jaGVja2VkXTpwcy10cmFuc2xhdGUteC0wXCIsXG4gICAgICApfVxuICAgIC8+XG4gIDwvU3dpdGNoUHJpbWl0aXZlcy5Sb290PlxuKSk7XG5Td2l0Y2guZGlzcGxheU5hbWUgPSBTd2l0Y2hQcmltaXRpdmVzLlJvb3QuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7IFN3aXRjaCB9O1xuIiwgImltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcbmltcG9ydCB7IENvcm5lckRvd25MZWZ0IH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuXG5pbXBvcnQgeyBTd2l0Y2ggfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9zd2l0Y2hcIjtcbmltcG9ydCB7IFRvb2x0aXAsIFRvb2x0aXBDb250ZW50LCBUb29sdGlwUHJvdmlkZXIsIFRvb2x0aXBUcmlnZ2VyIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvdG9vbHRpcFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIElucHV0QWN0aW9uc1Byb3BzIHtcbiAgb25TYXZlPzogKCkgPT4gdm9pZDtcbiAgb25DYW5jZWw/OiAoKSA9PiB2b2lkO1xuICBvbkNsb3NlPzogKCkgPT4gdm9pZDtcbiAgb25OdWxsQ2hhbmdlPzogKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIGlzTnVsbD86IGJvb2xlYW47XG4gIHJlYWRvbmx5OiBib29sZWFuO1xuICBvblNldE5vdz86IChlOiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB2b2lkO1xuICBzaG93U2V0Tm93PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IElucHV0QWN0aW9ucyA9ICh7XG4gIG9uU2F2ZSxcbiAgb25DYW5jZWwsXG4gIG9uQ2xvc2UsXG4gIG9uTnVsbENoYW5nZSxcbiAgaXNOdWxsID0gZmFsc2UsXG4gIHJlYWRvbmx5LFxuICBvblNldE5vdyxcbiAgc2hvd1NldE5vdyxcbn06IElucHV0QWN0aW9uc1Byb3BzKSA9PiB7XG4gIGNvbnN0IGhhbmRsZU51bGxDaGFuZ2UgPSAoY2hlY2tlZDogYm9vbGVhbikgPT4ge1xuICAgIGlmIChvbk51bGxDaGFuZ2UpIG9uTnVsbENoYW5nZShjaGVja2VkKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVTYXZlID0gKCkgPT4ge1xuICAgIGlmIChvblNhdmUpIG9uU2F2ZSgpO1xuICAgIGlmIChvbkNsb3NlKSBvbkNsb3NlKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQ2FuY2VsID0gKCkgPT4ge1xuICAgIGlmIChvbkNhbmNlbCkgb25DYW5jZWwoKTtcbiAgICBpZiAob25DbG9zZSkgb25DbG9zZSgpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWJvcmRlci10IHBzLWJvcmRlci10YWJsZS1ib3JkZXIgcHMtdGV4dC14cyBwcy1wLTJcIj5cbiAgICAgIHshcmVhZG9ubHkgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1nYXAtMSBwcy13LWZ1bGxcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZ3JpZCBwcy1ncmlkLWNvbHMtMiBwcy1nYXAtMSBwcy1pdGVtcy1zdGFydCBwcy1qdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC0xXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1nYXAtMSBwcy1pdGVtcy1jZW50ZXIgcHMtY3Vyc29yLXBvaW50ZXIgcHMtc2hyaW5rLTBcIlxuICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlU2F2ZX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8a2JkIGNsYXNzTmFtZT1cInBzLWlubGluZS1mbGV4IHBzLWp1c3RpZnktY2VudGVyIHBzLWl0ZW1zLWNlbnRlciBwcy1oLTYgcHMtdy02IHBzLXJvdW5kZWQtbWQgcHMtYmctbXV0ZWQgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgICAgICAgICAgICAgIDxDb3JuZXJEb3duTGVmdCBzaXplPXsxMn0gc3Ryb2tlV2lkdGg9ezJ9IC8+XG4gICAgICAgICAgICAgICAgICA8L2tiZD57XCIgXCJ9XG4gICAgICAgICAgICAgICAgICBTYXZlIGNoYW5nZXNcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWl0ZW1zLWNlbnRlciBwcy1jdXJzb3ItcG9pbnRlciBwcy1zaHJpbmstMFwiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGtiZCBjbGFzc05hbWU9XCJwcy1pbmxpbmUtZmxleCBwcy1qdXN0aWZ5LWNlbnRlciBwcy1pdGVtcy1jZW50ZXIgcHMtaC02IHBzLXctNiBwcy1yb3VuZGVkLW1kIHBzLWJnLW11dGVkIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZCBwcy10ZXh0LVs4cHhdIHBzLWxlYWRpbmctbm9uZSBwcy1mb250LXNlbWlib2xkXCI+XG4gICAgICAgICAgICAgICAgICAgIEVzY1xuICAgICAgICAgICAgICAgICAgPC9rYmQ+e1wiIFwifVxuICAgICAgICAgICAgICAgICAgQ2FuY2VsIGNoYW5nZXNcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1nYXAtMSBwcy1pdGVtcy1lbmRcIj5cbiAgICAgICAgICAgICAgICB7b25OdWxsQ2hhbmdlICYmIChcbiAgICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWl0ZW1zLWNlbnRlciBwcy1jdXJzb3ItcG9pbnRlciBwcy1zaHJpbmstMCBwcy1oLTZcIlxuICAgICAgICAgICAgICAgICAgICBodG1sRm9yPVwic2V0LW51bGxhYmxlXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPFN3aXRjaCBpZD1cInNldC1udWxsYWJsZVwiIGNoZWNrZWQ9e2lzTnVsbH0gb25DaGVja2VkQ2hhbmdlPXtoYW5kbGVOdWxsQ2hhbmdlfSAvPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5TZXQgdG8gTlVMTDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgIHtzaG93U2V0Tm93ICYmIChcbiAgICAgICAgICAgICAgICAgIDxUb29sdGlwUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgIDxUb29sdGlwPlxuICAgICAgICAgICAgICAgICAgICAgIDxUb29sdGlwVHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtvblNldE5vd31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1nYXAtMSBwcy1pdGVtcy1jZW50ZXIgcHMtY3Vyc29yLXBvaW50ZXIgcHMtc2hyaW5rLTAgcHMtaC02XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzTnVsbCB8fCByZWFkb25seX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0IHRvIE5PV1xuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9Ub29sdGlwVHJpZ2dlcj5cbiAgICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcENvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cD5TZXQgdG8ge2RheWpzKCkuZm9ybWF0KFwiTExMXCIpfTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICA8L1Rvb2x0aXBDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgICAgICA8L1Rvb2x0aXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuIiwgImltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcbmltcG9ydCBsb2NhbGl6ZWRGb3JtYXQgZnJvbSBcImRheWpzL3BsdWdpbi9sb2NhbGl6ZWRGb3JtYXRcIjtcbmltcG9ydCB7IHR5cGUgRm9ybUV2ZW50LCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmltcG9ydCB7IENhbGVuZGFyIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvY2FsZW5kYXJcIjtcbmltcG9ydCB7IElucHV0IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvaW5wdXRcIjtcbmltcG9ydCB7IHVzZVBvcG92ZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBTZWxlY3QsIFNlbGVjdENvbnRlbnQsIFNlbGVjdEl0ZW0sIFNlbGVjdFRyaWdnZXIsIFNlbGVjdFZhbHVlIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvc2VsZWN0XCI7XG5pbXBvcnQgeyBJbnB1dEFjdGlvbnMgfSBmcm9tIFwiLi9pbnB1dC1hY3Rpb25zXCI7XG5pbXBvcnQgeyB1c2VJbnB1dCB9IGZyb20gXCIuL3VzZS1pbnB1dFwiO1xuXG4vLyBJbml0aWFsaXplIGRheWpzIHBsdWdpbnNcbmRheWpzLmV4dGVuZChsb2NhbGl6ZWRGb3JtYXQpO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVJbnB1dFByb3BzIHtcbiAgb25TdWJtaXQodGhpczogdm9pZCwgdmFsdWU6IHN0cmluZyk6IHZvaWQ7XG4gIHZhbHVlOiB1bmtub3duO1xuICBjb2x1bW46IENvbHVtbjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRlSW5wdXQocHJvcHM6IERhdGVJbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgb25TdWJtaXQsIHZhbHVlLCByZWFkb25seSwgY29sdW1uIH0gPSBwcm9wcztcblxuICBjb25zdCBpbml0aWFsVmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuXG4gIGNvbnN0IHBhcnNlZEluaXRpYWxEYXRlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgcGFyc2VkID0gZGF5anMoaW5pdGlhbFZhbHVlKTtcbiAgICByZXR1cm4gcGFyc2VkLmlzVmFsaWQoKSA/IHBhcnNlZC50b0RhdGUoKSA6IG5ldyBEYXRlKCk7XG4gIH0sIFtpbml0aWFsVmFsdWVdKTtcblxuICBjb25zdCBnZXRGb3JtYXRGb3JUeXBlID0gKHR5cGU6IHN0cmluZykgPT4ge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBcImRhdGVcIjpcbiAgICAgICAgcmV0dXJuIFwiWVlZWS1NTS1ERFwiO1xuICAgICAgY2FzZSBcInRpbWVcIjpcbiAgICAgICAgcmV0dXJuIFwiSEg6bW06c3MuU1NTU1NcIjtcbiAgICAgIGNhc2UgXCJ0aW1lc3RhbXBcIjpcbiAgICAgICAgcmV0dXJuIFwiWVlZWS1NTS1ERCBISDptbTpzcy5TU1NTU1NcIjtcbiAgICAgIGNhc2UgXCJ0aW1lc3RhbXB0elwiOlxuICAgICAgICByZXR1cm4gXCJZWVlZLU1NLUREIEhIOm1tOnNzLlNTU1NTU1pcIjtcbiAgICAgIGNhc2UgXCJ0aW1ldHpcIjpcbiAgICAgICAgcmV0dXJuIFwiSEg6bW06c3MuU1NTU1NTWlwiO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH07XG5cbiAgLy8gSW5pdGlhbGl6ZSBzdGF0ZXMgd2l0aCB0aGUgcGFyc2VkIGRhdGVcbiAgY29uc3QgW3NlbGVjdGVkRGF0ZSwgc2V0U2VsZWN0ZWREYXRlXSA9IHVzZVN0YXRlPERhdGUgfCB1bmRlZmluZWQ+KHBhcnNlZEluaXRpYWxEYXRlKTtcbiAgY29uc3QgW2N1cnJlbnRNb250aCwgc2V0Q3VycmVudE1vbnRoXSA9IHVzZVN0YXRlPERhdGU+KHBhcnNlZEluaXRpYWxEYXRlKTtcbiAgY29uc3QgW2hvdXJWYWx1ZSwgc2V0SG91clZhbHVlXSA9IHVzZVN0YXRlKCgpID0+IGRheWpzKHBhcnNlZEluaXRpYWxEYXRlKS5mb3JtYXQoXCJISFwiKSk7XG4gIGNvbnN0IFttaW51dGVWYWx1ZSwgc2V0TWludXRlVmFsdWVdID0gdXNlU3RhdGUoKCkgPT4gZGF5anMocGFyc2VkSW5pdGlhbERhdGUpLmZvcm1hdChcIm1tXCIpKTtcbiAgY29uc3QgW3NlY29uZFZhbHVlLCBzZXRTZWNvbmRWYWx1ZV0gPSB1c2VTdGF0ZSgoKSA9PiBkYXlqcyhwYXJzZWRJbml0aWFsRGF0ZSkuZm9ybWF0KFwic3NcIikpO1xuXG4gIGNvbnN0IHsgaGFuZGxlT25DaGFuZ2U6IGJhc2VIYW5kbGVPbkNoYW5nZSwgdmFsdWU6IGlucHV0VmFsdWUsIHNldFZhbHVlIH0gPSB1c2VJbnB1dCh7IGluaXRpYWxWYWx1ZSB9KTtcblxuICBjb25zdCBjb2x1bW5UeXBlID0gdXNlTWVtbygoKSA9PiBjb2x1bW4/LmRhdGF0eXBlPy5uYW1lIHx8IChjb2x1bW4/LmRhdGF0eXBlIGFzIHVua25vd24gYXMgc3RyaW5nKSwgW2NvbHVtbl0pO1xuICBjb25zdCBkYkZvcm1hdCA9IHVzZU1lbW8oKCkgPT4gZ2V0Rm9ybWF0Rm9yVHlwZShjb2x1bW5UeXBlKSwgW2NvbHVtblR5cGVdKTtcblxuICBjb25zdCBoYXNUaW1lUHJlY2lzaW9uID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIFtcInRpbWVcIiwgXCJ0aW1lc3RhbXBcIiwgXCJ0aW1lc3RhbXB0elwiLCBcInRpbWV0elwiXS5pbmNsdWRlcyhjb2x1bW5UeXBlKTtcbiAgfSwgW2NvbHVtblR5cGVdKTtcblxuICAvLyBDdXN0b20gb25DaGFuZ2UgaGFuZGxlclxuICBjb25zdCBoYW5kbGVPbkNoYW5nZSA9IChldmVudDogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBiYXNlSGFuZGxlT25DaGFuZ2UoZXZlbnQpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgY29uc3QgcGFyc2VkID0gZGF5anMobmV3VmFsdWUpO1xuICAgICAgaWYgKHBhcnNlZC5pc1ZhbGlkKCkpIHtcbiAgICAgICAgY29uc3QgbmV3RGF0ZSA9IHBhcnNlZC50b0RhdGUoKTtcbiAgICAgICAgc2V0U2VsZWN0ZWREYXRlKG5ld0RhdGUpO1xuICAgICAgICBzZXRDdXJyZW50TW9udGgobmV3RGF0ZSk7XG4gICAgICAgIGlmIChoYXNUaW1lUHJlY2lzaW9uKSB7XG4gICAgICAgICAgc2V0SG91clZhbHVlKHBhcnNlZC5mb3JtYXQoXCJISFwiKSk7XG4gICAgICAgICAgc2V0TWludXRlVmFsdWUocGFyc2VkLmZvcm1hdChcIm1tXCIpKTtcbiAgICAgICAgICBzZXRTZWNvbmRWYWx1ZShwYXJzZWQuZm9ybWF0KFwic3NcIikpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoX2Vycm9yKSB7XG4gICAgICAvLyBJbnZhbGlkIGRhdGUgZm9ybWF0XG4gICAgfVxuICB9O1xuXG4gIC8vIFVwZGF0ZSBpbnB1dFZhbHVlIHdoZW4gY2FsZW5kYXIgc2VsZWN0aW9uIGNoYW5nZXNcbiAgY29uc3QgaGFuZGxlQ2FsZW5kYXJTZWxlY3QgPSAoZGF0ZTogRGF0ZSB8IHVuZGVmaW5lZCkgPT4ge1xuICAgIGlmICghZGF0ZSkgcmV0dXJuO1xuXG4gICAgY29uc3QgbmV3U2VsZWN0ZWREYXRlID0gZGF5anMoZGF0ZSk7XG4gICAgbGV0IGZpbmFsRGF0ZSA9IG5ld1NlbGVjdGVkRGF0ZTtcblxuICAgIGlmIChoYXNUaW1lUHJlY2lzaW9uICYmIHNlbGVjdGVkRGF0ZSkge1xuICAgICAgLy8gUHJlc2VydmUgZXhpc3RpbmcgdGltZVxuICAgICAgZmluYWxEYXRlID0gbmV3U2VsZWN0ZWREYXRlXG4gICAgICAgIC5ob3VyKGRheWpzKHNlbGVjdGVkRGF0ZSkuaG91cigpKVxuICAgICAgICAubWludXRlKGRheWpzKHNlbGVjdGVkRGF0ZSkubWludXRlKCkpXG4gICAgICAgIC5zZWNvbmQoZGF5anMoc2VsZWN0ZWREYXRlKS5zZWNvbmQoKSk7XG4gICAgfSBlbHNlIGlmIChoYXNUaW1lUHJlY2lzaW9uKSB7XG4gICAgICAvLyBEZWZhdWx0IHRvIGN1cnJlbnQgdGltZSBpZiBubyBwcmV2aW91cyB0aW1lXG4gICAgICBjb25zdCBub3cgPSBkYXlqcygpO1xuICAgICAgZmluYWxEYXRlID0gbmV3U2VsZWN0ZWREYXRlLmhvdXIobm93LmhvdXIoKSkubWludXRlKG5vdy5taW51dGUoKSkuc2Vjb25kKG5vdy5zZWNvbmQoKSk7XG4gICAgICBzZXRIb3VyVmFsdWUobm93LmZvcm1hdChcIkhIXCIpKTtcbiAgICAgIHNldE1pbnV0ZVZhbHVlKG5vdy5mb3JtYXQoXCJtbVwiKSk7XG4gICAgICBzZXRTZWNvbmRWYWx1ZShub3cuZm9ybWF0KFwic3NcIikpO1xuICAgIH1cblxuICAgIHNldFNlbGVjdGVkRGF0ZShmaW5hbERhdGUudG9EYXRlKCkpO1xuICAgIHNldEN1cnJlbnRNb250aChmaW5hbERhdGUudG9EYXRlKCkpO1xuICAgIHNldFZhbHVlKGRiRm9ybWF0ID8gZmluYWxEYXRlLmZvcm1hdChkYkZvcm1hdCkgOiBmaW5hbERhdGUudG9JU09TdHJpbmcoKSk7XG4gIH07XG5cbiAgLy8gRm9ybWF0IHRoZSBkYXRlIHVzaW5nIGRheWpzIGJhc2VkIG9uIGRldGVjdGVkIGZvcm1hdFxuICBjb25zdCBmb3JtYXR0ZWREYXRlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRhdGUgPSBkYXlqcyhpbnB1dFZhbHVlKTtcbiAgICAgIGlmICghZGF0ZS5pc1ZhbGlkKCkpIHJldHVybiBpbnB1dFZhbHVlO1xuICAgICAgY29uc3QgaGFzVGltZSA9IGlucHV0VmFsdWUuaW5jbHVkZXMoXCI6XCIpO1xuXG4gICAgICAvLyBIdW1hbi1yZWFkYWJsZSBmb3JtYXQgKGxvY2FsaXplZClcbiAgICAgIGlmIChoYXNUaW1lKSB7XG4gICAgICAgIHJldHVybiBkYXRlLmZvcm1hdChcIkxMIExUU1wiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBkYXRlLmZvcm1hdChcIkxMXCIpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKF9lcnJvcikge1xuICAgICAgcmV0dXJuIGlucHV0VmFsdWU7XG4gICAgfVxuICB9LCBbaW5wdXRWYWx1ZV0pO1xuXG4gIGZ1bmN0aW9uIGhhbmRsZU9uU3VibWl0KGV2ZW50OiBGb3JtRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmIChpbnB1dFZhbHVlICE9PSBpbml0aWFsVmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KGlucHV0VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUlucHV0U3VibWl0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChpbnB1dFZhbHVlICE9PSBpbml0aWFsVmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KGlucHV0VmFsdWUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSwgW2lucHV0VmFsdWUsIGluaXRpYWxWYWx1ZSwgb25TdWJtaXRdKTtcblxuICBjb25zdCBjYW5jZWxBY3Rpb24gPSAoKSA9PiB7fTtcblxuICBjb25zdCB7IGhhbmRsZVNhdmUsIGhhbmRsZUNhbmNlbCB9ID0gdXNlUG9wb3ZlckFjdGlvbnMoe1xuICAgIG9uU2F2ZTogaGFuZGxlSW5wdXRTdWJtaXQsXG4gICAgb25DYW5jZWw6IGNhbmNlbEFjdGlvbixcbiAgICByZWFkb25seSxcbiAgfSk7XG5cbiAgY29uc3QgaGFuZGxlU2V0Tm93ID0gKGU6IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGNvbnN0IG5vdyA9IGRheWpzKCk7XG4gICAgc2V0U2VsZWN0ZWREYXRlKG5vdy50b0RhdGUoKSk7XG4gICAgc2V0Q3VycmVudE1vbnRoKG5vdy50b0RhdGUoKSk7IC8vIEVuc3VyZSBjYWxlbmRhciB2aWV3IHVwZGF0ZXNcbiAgICBzZXRWYWx1ZShkYkZvcm1hdCA/IG5vdy5mb3JtYXQoZGJGb3JtYXQpIDogbm93LnRvSVNPU3RyaW5nKCkpO1xuXG4gICAgLy8gVXBkYXRlIGlucHV0IGZpZWxkc1xuICAgIHNldFllYXJWYWx1ZShub3cueWVhcigpLnRvU3RyaW5nKCkpO1xuICAgIGlmIChoYXNUaW1lUHJlY2lzaW9uKSB7XG4gICAgICBzZXRIb3VyVmFsdWUobm93LmZvcm1hdChcIkhIXCIpKTtcbiAgICAgIHNldE1pbnV0ZVZhbHVlKG5vdy5mb3JtYXQoXCJtbVwiKSk7XG4gICAgICBzZXRTZWNvbmRWYWx1ZShub3cuZm9ybWF0KFwic3NcIikpO1xuICAgIH1cbiAgfTtcblxuICAvLyBHZW5lcmF0ZSBtb250aCBvcHRpb25zIGZvciB0aGUgc2VsZWN0XG4gIGNvbnN0IG1vbnRocyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gW1xuICAgICAgeyB2YWx1ZTogXCIwXCIsIGxhYmVsOiBcIkphbnVhcnlcIiB9LFxuICAgICAgeyB2YWx1ZTogXCIxXCIsIGxhYmVsOiBcIkZlYnJ1YXJ5XCIgfSxcbiAgICAgIHsgdmFsdWU6IFwiMlwiLCBsYWJlbDogXCJNYXJjaFwiIH0sXG4gICAgICB7IHZhbHVlOiBcIjNcIiwgbGFiZWw6IFwiQXByaWxcIiB9LFxuICAgICAgeyB2YWx1ZTogXCI0XCIsIGxhYmVsOiBcIk1heVwiIH0sXG4gICAgICB7IHZhbHVlOiBcIjVcIiwgbGFiZWw6IFwiSnVuZVwiIH0sXG4gICAgICB7IHZhbHVlOiBcIjZcIiwgbGFiZWw6IFwiSnVseVwiIH0sXG4gICAgICB7IHZhbHVlOiBcIjdcIiwgbGFiZWw6IFwiQXVndXN0XCIgfSxcbiAgICAgIHsgdmFsdWU6IFwiOFwiLCBsYWJlbDogXCJTZXB0ZW1iZXJcIiB9LFxuICAgICAgeyB2YWx1ZTogXCI5XCIsIGxhYmVsOiBcIk9jdG9iZXJcIiB9LFxuICAgICAgeyB2YWx1ZTogXCIxMFwiLCBsYWJlbDogXCJOb3ZlbWJlclwiIH0sXG4gICAgICB7IHZhbHVlOiBcIjExXCIsIGxhYmVsOiBcIkRlY2VtYmVyXCIgfSxcbiAgICBdLFxuICAgIFtdLFxuICApO1xuXG4gIC8vIEdldCB0aGUgY3VycmVudCBtb250aCBhbmQgeWVhciB2YWx1ZXNcbiAgY29uc3QgY3VycmVudE1vbnRoVmFsdWUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gY3VycmVudE1vbnRoLmdldE1vbnRoKCkudG9TdHJpbmcoKTtcbiAgfSwgW2N1cnJlbnRNb250aF0pO1xuXG4gIGNvbnN0IFt5ZWFyVmFsdWUsIHNldFllYXJWYWx1ZV0gPSB1c2VTdGF0ZSgoKSA9PiB7XG4gICAgcmV0dXJuIGN1cnJlbnRNb250aC5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCk7XG4gIH0pO1xuXG4gIGNvbnN0IHVwZGF0ZURhdGVGcm9tSW5wdXRzID0gKFxuICAgIG5ld0RhdGVQYXJ0czogUGFydGlhbDx7IHllYXI6IG51bWJlcjsgbW9udGg6IG51bWJlcjsgZGF5OiBudW1iZXI7IGhvdXI6IG51bWJlcjsgbWludXRlOiBudW1iZXI7IHNlY29uZDogbnVtYmVyIH0+LFxuICApID0+IHtcbiAgICBsZXQgYmFzZURhdGUgPSBzZWxlY3RlZERhdGUgPyBkYXlqcyhzZWxlY3RlZERhdGUpIDogZGF5anMoKTsgLy8gVXNlIGN1cnJlbnQgZGF0ZS90aW1lIGFzIGJhc2UgaWYgbm90aGluZyBpcyBzZWxlY3RlZFxuXG4gICAgLy8gSWYgb25seSB0aW1lIGlzIGNoYW5naW5nLCBlbnN1cmUgdGhlIGRhdGUgcGFydCBpcyBmcm9tIHNlbGVjdGVkRGF0ZSBvciBjdXJyZW50TW9udGggdmlld1xuICAgIGlmIChcbiAgICAgIHNlbGVjdGVkRGF0ZSAmJlxuICAgICAgKG5ld0RhdGVQYXJ0cy5ob3VyICE9PSB1bmRlZmluZWQgfHwgbmV3RGF0ZVBhcnRzLm1pbnV0ZSAhPT0gdW5kZWZpbmVkIHx8IG5ld0RhdGVQYXJ0cy5zZWNvbmQgIT09IHVuZGVmaW5lZCkgJiZcbiAgICAgIG5ld0RhdGVQYXJ0cy55ZWFyID09PSB1bmRlZmluZWQgJiZcbiAgICAgIG5ld0RhdGVQYXJ0cy5tb250aCA9PT0gdW5kZWZpbmVkICYmXG4gICAgICBuZXdEYXRlUGFydHMuZGF5ID09PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGJhc2VEYXRlID0gZGF5anMoc2VsZWN0ZWREYXRlKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgIXNlbGVjdGVkRGF0ZSAmJlxuICAgICAgKG5ld0RhdGVQYXJ0cy5ob3VyICE9PSB1bmRlZmluZWQgfHwgbmV3RGF0ZVBhcnRzLm1pbnV0ZSAhPT0gdW5kZWZpbmVkIHx8IG5ld0RhdGVQYXJ0cy5zZWNvbmQgIT09IHVuZGVmaW5lZClcbiAgICApIHtcbiAgICAgIC8vIGlmIG5vIGRhdGUgaXMgc2VsZWN0ZWQsIGJ1dCB0aW1lIGlzIGNoYW5nZWQsIHVzZSB0aGUgY3VycmVudCB2aWV3IG9mIHRoZSBjYWxlbmRhciBmb3IgZGF0ZSBwYXJ0XG4gICAgICBiYXNlRGF0ZSA9IGRheWpzKGN1cnJlbnRNb250aCk7XG4gICAgfVxuXG4gICAgY29uc3QgbmV3RGF0ZSA9IGJhc2VEYXRlXG4gICAgICAuc2V0KFwieWVhclwiLCBuZXdEYXRlUGFydHMueWVhciA/PyBiYXNlRGF0ZS55ZWFyKCkpXG4gICAgICAuc2V0KFwibW9udGhcIiwgbmV3RGF0ZVBhcnRzLm1vbnRoID8/IGJhc2VEYXRlLm1vbnRoKCkpIC8vIG1vbnRoIGlzIDAtaW5kZXhlZCBmb3IgZGF5anNcbiAgICAgIC5zZXQoXCJkYXRlXCIsIG5ld0RhdGVQYXJ0cy5kYXkgPz8gYmFzZURhdGUuZGF0ZSgpKVxuICAgICAgLnNldChcImhvdXJcIiwgbmV3RGF0ZVBhcnRzLmhvdXIgPz8gKGhhc1RpbWVQcmVjaXNpb24gPyBiYXNlRGF0ZS5ob3VyKCkgOiAwKSlcbiAgICAgIC5zZXQoXCJtaW51dGVcIiwgbmV3RGF0ZVBhcnRzLm1pbnV0ZSA/PyAoaGFzVGltZVByZWNpc2lvbiA/IGJhc2VEYXRlLm1pbnV0ZSgpIDogMCkpXG4gICAgICAuc2V0KFwic2Vjb25kXCIsIG5ld0RhdGVQYXJ0cy5zZWNvbmQgPz8gKGhhc1RpbWVQcmVjaXNpb24gPyBiYXNlRGF0ZS5zZWNvbmQoKSA6IDApKTtcblxuICAgIHNldFNlbGVjdGVkRGF0ZShuZXdEYXRlLnRvRGF0ZSgpKTtcbiAgICAvLyBzZXRDdXJyZW50TW9udGggc2hvdWxkIG9ubHkgYmUgdXBkYXRlZCBpZiB5ZWFyIG9yIG1vbnRoIGNoYW5nZXMsIG5vdCBqdXN0IHRpbWVcbiAgICBpZiAobmV3RGF0ZVBhcnRzLnllYXIgIT09IHVuZGVmaW5lZCB8fCBuZXdEYXRlUGFydHMubW9udGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgc2V0Q3VycmVudE1vbnRoKG5ld0RhdGUudG9EYXRlKCkpO1xuICAgIH1cblxuICAgIHNldFZhbHVlKGRiRm9ybWF0ID8gbmV3RGF0ZS5mb3JtYXQoZGJGb3JtYXQpIDogbmV3RGF0ZS50b0lTT1N0cmluZygpKTtcblxuICAgIC8vIFVwZGF0ZSBpbmRpdmlkdWFsIGlucHV0IGZpZWxkc1xuICAgIGlmIChuZXdEYXRlUGFydHMueWVhciAhPT0gdW5kZWZpbmVkKSBzZXRZZWFyVmFsdWUoU3RyaW5nKG5ld0RhdGVQYXJ0cy55ZWFyKSk7XG4gICAgaWYgKGhhc1RpbWVQcmVjaXNpb24pIHtcbiAgICAgIGlmIChuZXdEYXRlUGFydHMuaG91ciAhPT0gdW5kZWZpbmVkKSBzZXRIb3VyVmFsdWUoU3RyaW5nKG5ld0RhdGVQYXJ0cy5ob3VyKS5wYWRTdGFydCgyLCBcIjBcIikpO1xuICAgICAgaWYgKG5ld0RhdGVQYXJ0cy5taW51dGUgIT09IHVuZGVmaW5lZCkgc2V0TWludXRlVmFsdWUoU3RyaW5nKG5ld0RhdGVQYXJ0cy5taW51dGUpLnBhZFN0YXJ0KDIsIFwiMFwiKSk7XG4gICAgICBpZiAobmV3RGF0ZVBhcnRzLnNlY29uZCAhPT0gdW5kZWZpbmVkKSBzZXRTZWNvbmRWYWx1ZShTdHJpbmcobmV3RGF0ZVBhcnRzLnNlY29uZCkucGFkU3RhcnQoMiwgXCIwXCIpKTtcbiAgICB9XG4gIH07XG5cbiAgLy8gSGFuZGxlIG1vbnRoIHNlbGVjdGlvbiBjaGFuZ2VcbiAgY29uc3QgaGFuZGxlTW9udGhDaGFuZ2UgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IG1vbnRoSW5kZXggPSBwYXJzZUludCh2YWx1ZSk7XG4gICAgdXBkYXRlRGF0ZUZyb21JbnB1dHMoeyBtb250aDogbW9udGhJbmRleCB9KTtcbiAgfTtcblxuICAvLyBIYW5kbGUgeWVhciBpbnB1dCBjaGFuZ2VcbiAgY29uc3QgaGFuZGxlWWVhckNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIGNvbnN0IG5ld1llYXJTdHIgPSBlLnRhcmdldC52YWx1ZTtcbiAgICBzZXRZZWFyVmFsdWUobmV3WWVhclN0cik7XG4gICAgaWYgKC9eXFxkezEsNH0kLy50ZXN0KG5ld1llYXJTdHIpKSB7XG4gICAgICBjb25zdCB5ZWFyID0gcGFyc2VJbnQobmV3WWVhclN0cik7XG4gICAgICBpZiAobmV3WWVhclN0ci5sZW5ndGggPT09IDQpIHtcbiAgICAgICAgdXBkYXRlRGF0ZUZyb21JbnB1dHMoeyB5ZWFyIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVUaW1lQ2hhbmdlID0gKHBhcnQ6IFwiaG91clwiIHwgXCJtaW51dGVcIiB8IFwic2Vjb25kXCIsIHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBudW1lcmljVmFsdWUgPSBwYXJzZUludCh2YWx1ZSk7XG4gICAgaWYgKGlzTmFOKG51bWVyaWNWYWx1ZSkpIHJldHVybjtcblxuICAgIGNvbnN0IG5ld0hvdXIgPSBwYXJ0ID09PSBcImhvdXJcIiA/IG51bWVyaWNWYWx1ZSA6IHBhcnNlSW50KGhvdXJWYWx1ZSk7XG4gICAgY29uc3QgbmV3TWludXRlID0gcGFydCA9PT0gXCJtaW51dGVcIiA/IG51bWVyaWNWYWx1ZSA6IHBhcnNlSW50KG1pbnV0ZVZhbHVlKTtcbiAgICBjb25zdCBuZXdTZWNvbmQgPSBwYXJ0ID09PSBcInNlY29uZFwiID8gbnVtZXJpY1ZhbHVlIDogcGFyc2VJbnQoc2Vjb25kVmFsdWUpO1xuXG4gICAgaWYgKHBhcnQgPT09IFwiaG91clwiKSBzZXRIb3VyVmFsdWUodmFsdWUucGFkU3RhcnQoMiwgXCIwXCIpKTtcbiAgICBpZiAocGFydCA9PT0gXCJtaW51dGVcIikgc2V0TWludXRlVmFsdWUodmFsdWUucGFkU3RhcnQoMiwgXCIwXCIpKTtcbiAgICBpZiAocGFydCA9PT0gXCJzZWNvbmRcIikgc2V0U2Vjb25kVmFsdWUodmFsdWUucGFkU3RhcnQoMiwgXCIwXCIpKTtcblxuICAgIC8vIFVwZGF0ZSBvbmx5IGlmIHRoZSB2YWx1ZSBpcyBhIGNvbXBsZXRlIG51bWJlciBmb3IgdGhhdCBwYXJ0XG4gICAgY29uc3QgaXNDb21wbGV0ZUhvdXIgPSBwYXJ0ID09PSBcImhvdXJcIiAmJiB2YWx1ZS5sZW5ndGggPj0gMSAmJiBudW1lcmljVmFsdWUgPj0gMCAmJiBudW1lcmljVmFsdWUgPD0gMjM7XG4gICAgY29uc3QgaXNDb21wbGV0ZU1pbnV0ZSA9IHBhcnQgPT09IFwibWludXRlXCIgJiYgdmFsdWUubGVuZ3RoID49IDEgJiYgbnVtZXJpY1ZhbHVlID49IDAgJiYgbnVtZXJpY1ZhbHVlIDw9IDU5O1xuICAgIGNvbnN0IGlzQ29tcGxldGVTZWNvbmQgPSBwYXJ0ID09PSBcInNlY29uZFwiICYmIHZhbHVlLmxlbmd0aCA+PSAxICYmIG51bWVyaWNWYWx1ZSA+PSAwICYmIG51bWVyaWNWYWx1ZSA8PSA1OTtcblxuICAgIGlmIChcbiAgICAgIChwYXJ0ID09PSBcImhvdXJcIiAmJiBpc0NvbXBsZXRlSG91cikgfHxcbiAgICAgIChwYXJ0ID09PSBcIm1pbnV0ZVwiICYmIGlzQ29tcGxldGVNaW51dGUpIHx8XG4gICAgICAocGFydCA9PT0gXCJzZWNvbmRcIiAmJiBpc0NvbXBsZXRlU2Vjb25kKVxuICAgICkge1xuICAgICAgdXBkYXRlRGF0ZUZyb21JbnB1dHMoeyBob3VyOiBuZXdIb3VyLCBtaW51dGU6IG5ld01pbnV0ZSwgc2Vjb25kOiBuZXdTZWNvbmQgfSk7XG4gICAgfVxuICB9O1xuXG4gIC8vIFVwZGF0ZSB5ZWFyIHZhbHVlIHdoZW4gc2VsZWN0ZWREYXRlIGNoYW5nZXNcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoc2VsZWN0ZWREYXRlKSB7XG4gICAgICBjb25zdCBkanNEYXRlID0gZGF5anMoc2VsZWN0ZWREYXRlKTtcbiAgICAgIHNldFllYXJWYWx1ZShkanNEYXRlLnllYXIoKS50b1N0cmluZygpKTtcbiAgICAgIGlmIChoYXNUaW1lUHJlY2lzaW9uKSB7XG4gICAgICAgIHNldEhvdXJWYWx1ZShkanNEYXRlLmZvcm1hdChcIkhIXCIpKTtcbiAgICAgICAgc2V0TWludXRlVmFsdWUoZGpzRGF0ZS5mb3JtYXQoXCJtbVwiKSk7XG4gICAgICAgIHNldFNlY29uZFZhbHVlKGRqc0RhdGUuZm9ybWF0KFwic3NcIikpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW3NlbGVjdGVkRGF0ZSwgaGFzVGltZVByZWNpc2lvbl0pO1xuXG4gIC8vIFVwZGF0ZSBtb250aCBhbmQgeWVhciB3aGVuIGNhbGVuZGFyIG1vbnRoIGNoYW5nZXMgKGUuZy4gYnkgYXJyb3cgbmF2aWdhdGlvbiBpbiBjYWxlbmRhcilcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoY3VycmVudE1vbnRoKSB7XG4gICAgICAvLyBEbyBub3QgdXBkYXRlIHllYXJWYWx1ZSBpZiBzZWxlY3RlZERhdGUgaXMgcHJlc2VudCwgYXMgaXQncyB0aGUgc291cmNlIG9mIHRydXRoIGZvciB5ZWFyVmFsdWVcbiAgICAgIGlmICghc2VsZWN0ZWREYXRlKSB7XG4gICAgICAgIHNldFllYXJWYWx1ZShjdXJyZW50TW9udGguZ2V0RnVsbFllYXIoKS50b1N0cmluZygpKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtjdXJyZW50TW9udGgsIHNlbGVjdGVkRGF0ZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxmb3JtIG9uU3VibWl0PXtoYW5kbGVPblN1Ym1pdH0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtcHItW3ZhcigtLXN0dWRpby1jZWxsLXNwYWNpbmcpXVwiPlxuICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtY2VsbC1pbnB1dC1sZWFkaW5nIHBzLWZvbnQtbW9ubyBwcy1ib3JkZXItbm9uZSBwcy1zaGFkb3ctbm9uZSBmb2N1cy12aXNpYmxlOnBzLXJpbmctMCBwcy1yZXNpemUtbm9uZSBwcy1weC1bdmFyKC0tc3R1ZGlvLWNlbGwtc3BhY2luZyldXCJcbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVPbkNoYW5nZX1cbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIHZhbHVlPXtpbnB1dFZhbHVlfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJzdWJtaXRcIiBjbGFzc05hbWU9XCJwcy1zci1vbmx5XCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Zvcm0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTAgcHMtcC0yIHBzLWJvcmRlci10IHBzLWJvcmRlci10YWJsZS1ib3JkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtbWItMSBwcy1nYXAtMlwiPlxuICAgICAgICAgIDxTZWxlY3QgdmFsdWU9e2N1cnJlbnRNb250aFZhbHVlfSBvblZhbHVlQ2hhbmdlPXtoYW5kbGVNb250aENoYW5nZX0+XG4gICAgICAgICAgICA8U2VsZWN0VHJpZ2dlciBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLWJvcmRlci10cmFuc3BhcmVudCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1ib3JkZXItcHJpbWFyeSBwcy1zaGFkb3ctbm9uZSBwcy1iZy1uZXV0cmFsLTIwMC80MFwiPlxuICAgICAgICAgICAgICA8U2VsZWN0VmFsdWUgcGxhY2Vob2xkZXI9XCJNb250aFwiIC8+XG4gICAgICAgICAgICA8L1NlbGVjdFRyaWdnZXI+XG4gICAgICAgICAgICA8U2VsZWN0Q29udGVudD5cbiAgICAgICAgICAgICAge21vbnRocy5tYXAoKG1vbnRoKSA9PiAoXG4gICAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0ga2V5PXttb250aC52YWx1ZX0gdmFsdWU9e21vbnRoLnZhbHVlfT5cbiAgICAgICAgICAgICAgICAgIHttb250aC5sYWJlbH1cbiAgICAgICAgICAgICAgICA8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9TZWxlY3RDb250ZW50PlxuICAgICAgICAgIDwvU2VsZWN0PlxuXG4gICAgICAgICAgPElucHV0XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLXctMjAgcHMtdGV4dC1yaWdodCBwcy1ib3JkZXItdHJhbnNwYXJlbnQgcHMtc2hhZG93LW5vbmUgcHMtYmctbmV1dHJhbC0yMDAvNDBcIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgdmFsdWU9e3llYXJWYWx1ZX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVZZWFyQ2hhbmdlfVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJZZWFyXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8RGF5UGlja2VyV3JhcHBlclxuICAgICAgICAgIHNlbGVjdGVkPXtzZWxlY3RlZERhdGV9XG4gICAgICAgICAgbW9udGg9e2N1cnJlbnRNb250aH1cbiAgICAgICAgICBvblNlbGVjdD17aGFuZGxlQ2FsZW5kYXJTZWxlY3R9XG4gICAgICAgICAgb25Nb250aENoYW5nZT17c2V0Q3VycmVudE1vbnRofVxuICAgICAgICAgIGRpc2FibGVkPXtyZWFkb25seX1cbiAgICAgICAgLz5cbiAgICAgICAge2hhc1RpbWVQcmVjaXNpb24gJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1zdGFydCBwcy1nYXAtMSBwcy1tdC0xXCI+XG4gICAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtdGV4dC14cyBwcy13LTE2IHBzLXRleHQtcmlnaHQgcHMtYm9yZGVyLXRyYW5zcGFyZW50IHBzLXNoYWRvdy1ub25lIHBzLWJnLW5ldXRyYWwtMjAwLzQwXCJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgIHZhbHVlPXtob3VyVmFsdWV9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlVGltZUNoYW5nZShcImhvdXJcIiwgZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkhIXCJcbiAgICAgICAgICAgICAgbWluPXswfVxuICAgICAgICAgICAgICBtYXg9ezIzfVxuICAgICAgICAgICAgICBtYXhMZW5ndGg9ezJ9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtyZWFkb25seX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPjo8L3NwYW4+XG4gICAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtdGV4dC14cyBwcy13LTE2IHBzLXRleHQtcmlnaHQgcHMtYm9yZGVyLXRyYW5zcGFyZW50IHBzLXNoYWRvdy1ub25lIHBzLWJnLW5ldXRyYWwtMjAwLzQwXCJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgIHZhbHVlPXttaW51dGVWYWx1ZX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVUaW1lQ2hhbmdlKFwibWludXRlXCIsIGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJtbVwiXG4gICAgICAgICAgICAgIG1pbj17MH1cbiAgICAgICAgICAgICAgbWF4PXs1OX1cbiAgICAgICAgICAgICAgbWF4TGVuZ3RoPXsyfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17cmVhZG9ubHl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtdGV4dC14cyBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIj46PC9zcGFuPlxuICAgICAgICAgICAgPElucHV0XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtdy0xNiBwcy10ZXh0LXJpZ2h0IHBzLWJvcmRlci10cmFuc3BhcmVudCBwcy1zaGFkb3ctbm9uZSBwcy1iZy1uZXV0cmFsLTIwMC80MFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICB2YWx1ZT17c2Vjb25kVmFsdWV9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlVGltZUNoYW5nZShcInNlY29uZFwiLCBlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwic3NcIlxuICAgICAgICAgICAgICBtaW49ezB9XG4gICAgICAgICAgICAgIG1heD17NTl9XG4gICAgICAgICAgICAgIG1heExlbmd0aD17Mn1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e3JlYWRvbmx5fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgICAgPGNvZGUgY2xhc3NOYW1lPVwicHMtc3Itb25seVwiPntmb3JtYXR0ZWREYXRlfTwvY29kZT5cbiAgICAgIDwvZGl2PlxuICAgICAgPElucHV0QWN0aW9uc1xuICAgICAgICBvblNhdmU9e2hhbmRsZVNhdmV9XG4gICAgICAgIG9uQ2FuY2VsPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgIHJlYWRvbmx5PXtyZWFkb25seX1cbiAgICAgICAgb25TZXROb3c9e2hhbmRsZVNldE5vd31cbiAgICAgICAgc2hvd1NldE5vdz17dHJ1ZX1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG5cbi8vIEEgd3JhcHBlciBjb21wb25lbnQgdG8gZW5zdXJlIHByb3BlciBwcm9wcyBhcmUgcGFzc2VkIHRvIERheVBpY2tlclxuZnVuY3Rpb24gRGF5UGlja2VyV3JhcHBlcih7XG4gIHNlbGVjdGVkLFxuICBtb250aCxcbiAgb25TZWxlY3QsXG4gIG9uTW9udGhDaGFuZ2UsXG4gIGRpc2FibGVkLFxufToge1xuICBzZWxlY3RlZD86IERhdGU7XG4gIG1vbnRoOiBEYXRlO1xuICBvblNlbGVjdDogKGRhdGU6IERhdGUgfCB1bmRlZmluZWQpID0+IHZvaWQ7XG4gIG9uTW9udGhDaGFuZ2U6IChkYXRlOiBEYXRlKSA9PiB2b2lkO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG59KSB7XG4gIHJldHVybiAoXG4gICAgPENhbGVuZGFyXG4gICAgICBtb2RlPVwic2luZ2xlXCJcbiAgICAgIHNlbGVjdGVkPXtzZWxlY3RlZH1cbiAgICAgIG9uU2VsZWN0PXtvblNlbGVjdH1cbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgIG1vbnRoPXttb250aH1cbiAgICAgIG9uTW9udGhDaGFuZ2U9e29uTW9udGhDaGFuZ2V9XG4gICAgICBjbGFzc05hbWU9XCJwcy13LWZ1bGxcIlxuICAgICAgY2FwdGlvbkxheW91dD1cImRyb3Bkb3duXCJcbiAgICAvPlxuICApO1xufVxuIiwgImltcG9ydCB7IERheVBpY2tlciB9IGZyb20gXCJyZWFjdC1kYXktcGlja2VyXCI7XG5cbmltcG9ydCB7IGJ1dHRvblZhcmlhbnRzIH0gZnJvbSBcIkAvdWkvY29tcG9uZW50cy91aS9idXR0b25cIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmV4cG9ydCB0eXBlIENhbGVuZGFyUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgRGF5UGlja2VyPiAmIHtcbiAgY2FwdGlvbkxhYmVsQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBkYXlDbGFzc05hbWU/OiBzdHJpbmc7XG4gIGRheUJ1dHRvbkNsYXNzTmFtZT86IHN0cmluZztcbiAgZHJvcGRvd25zQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBmb290ZXJDbGFzc05hbWU/OiBzdHJpbmc7XG4gIG1vbnRoQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBtb250aENhcHRpb25DbGFzc05hbWU/OiBzdHJpbmc7XG4gIG1vbnRoR3JpZENsYXNzTmFtZT86IHN0cmluZztcbiAgbW9udGhzQ2xhc3NOYW1lPzogc3RyaW5nO1xuICB3ZWVrQ2xhc3NOYW1lPzogc3RyaW5nO1xuICB3ZWVrZGF5Q2xhc3NOYW1lPzogc3RyaW5nO1xuICB3ZWVrZGF5c0NsYXNzTmFtZT86IHN0cmluZztcbiAgcmFuZ2VFbmRDbGFzc05hbWU/OiBzdHJpbmc7XG4gIHJhbmdlTWlkZGxlQ2xhc3NOYW1lPzogc3RyaW5nO1xuICByYW5nZVN0YXJ0Q2xhc3NOYW1lPzogc3RyaW5nO1xuICBzZWxlY3RlZENsYXNzTmFtZT86IHN0cmluZztcbiAgZGlzYWJsZWRDbGFzc05hbWU/OiBzdHJpbmc7XG4gIGhpZGRlbkNsYXNzTmFtZT86IHN0cmluZztcbiAgb3V0c2lkZUNsYXNzTmFtZT86IHN0cmluZztcbiAgdG9kYXlDbGFzc05hbWU/OiBzdHJpbmc7XG4gIHNlbGVjdFRyaWdnZXJDbGFzc05hbWU/OiBzdHJpbmc7XG59O1xuXG5mdW5jdGlvbiBDYWxlbmRhcih7IGNsYXNzTmFtZSwgY2xhc3NOYW1lcywgc2hvd091dHNpZGVEYXlzID0gdHJ1ZSwgaGlkZU5hdmlnYXRpb24sIC4uLnByb3BzIH06IENhbGVuZGFyUHJvcHMpIHtcbiAgY29uc3QgX21vbnRoc0NsYXNzTmFtZSA9IGNuKFwicmVsYXRpdmUgZmxleCBmbGV4LWNvbCBnYXAtNCBzbTpmbGV4LXJvd1wiLCBwcm9wcy5tb250aHNDbGFzc05hbWUpO1xuICBjb25zdCBfbW9udGhDYXB0aW9uQ2xhc3NOYW1lID0gY24oXCJyZWxhdGl2ZSBmbGV4IGgtNyBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIiwgcHJvcHMubW9udGhDYXB0aW9uQ2xhc3NOYW1lKTtcbiAgY29uc3QgX2Ryb3Bkb3duc0NsYXNzTmFtZSA9IGNuKFxuICAgIFwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXIgcHMtZ2FwLTIgcHMtdy1mdWxsXCIsXG4gICAgaGlkZU5hdmlnYXRpb24gPyBcInBzLXctZnVsbFwiIDogXCJwcy1oaWRkZW5cIixcbiAgICBwcm9wcy5kcm9wZG93bnNDbGFzc05hbWUsXG4gICk7XG4gIGNvbnN0IF9mb290ZXJDbGFzc05hbWUgPSBjbihcInBzLXB0LTMgcHMtdGV4dC14c1wiLCBwcm9wcy5mb290ZXJDbGFzc05hbWUpO1xuICBjb25zdCBfd2Vla2RheXNDbGFzc05hbWUgPSBjbihcInBzLWZsZXhcIiwgcHJvcHMud2Vla2RheXNDbGFzc05hbWUpO1xuICBjb25zdCBfd2Vla2RheUNsYXNzTmFtZSA9IGNuKFwicHMtdy05IHBzLXRleHQteHMgcHMtZm9udC1ub3JtYWwgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsIHByb3BzLndlZWtkYXlDbGFzc05hbWUpO1xuICBjb25zdCBfY2FwdGlvbkxhYmVsQ2xhc3NOYW1lID0gY24oXCJwcy10cnVuY2F0ZSBwcy10ZXh0LXhzIHBzLWZvbnQtbWVkaXVtXCIsIHByb3BzLmNhcHRpb25MYWJlbENsYXNzTmFtZSk7XG5cbiAgY29uc3QgX21vbnRoR3JpZENsYXNzTmFtZSA9IGNuKFwicHMtbXgtYXV0byBwcy1tdC00XCIsIHByb3BzLm1vbnRoR3JpZENsYXNzTmFtZSk7XG4gIGNvbnN0IF93ZWVrQ2xhc3NOYW1lID0gY24oXCJwcy1tdC0wIHBzLWZsZXggcHMtdy1tYXggcHMtaXRlbXMtc3RhcnRcIiwgcHJvcHMud2Vla0NsYXNzTmFtZSk7XG4gIGNvbnN0IF9kYXlDbGFzc05hbWUgPSBjbihcbiAgICBcInBzLWZsZXggcHMtc2l6ZS05IHBzLWZsZXgtMSBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXIgcHMtcC0wIHBzLXRleHQteHNcIixcbiAgICBwcm9wcy5kYXlDbGFzc05hbWUsXG4gICk7XG4gIGNvbnN0IF9kYXlCdXR0b25DbGFzc05hbWUgPSBjbihcbiAgICBidXR0b25WYXJpYW50cyh7IHZhcmlhbnQ6IFwiZ2hvc3RcIiB9KSxcbiAgICBcInBzLXNpemUtOCBwcy1yb3VuZGVkLW1kIHBzLXAtMCBwcy1mb250LW5vcm1hbCBwcy10ZXh0LXhzIHBzLXRyYW5zaXRpb24tbm9uZSBhcmlhLXNlbGVjdGVkOnBzLW9wYWNpdHktMTAwXCIsXG4gICAgcHJvcHMuZGF5QnV0dG9uQ2xhc3NOYW1lLFxuICApO1xuXG4gIGNvbnN0IGJ1dHRvblJhbmdlQ2xhc3NOYW1lID1cbiAgICBcInBzLWJnLWFjY2VudCBwcy1bJj5idXR0b25dOnBzLWJnLXByaW1hcnkgWyY+YnV0dG9uXTpwcy10ZXh0LXByaW1hcnktZm9yZWdyb3VuZCBbJj5idXR0b25dOnBzLWhvdmVyOnBzLWJnLXByaW1hcnkgWyY+YnV0dG9uXTpwcy1ob3Zlcjpwcy10ZXh0LXByaW1hcnktZm9yZWdyb3VuZFwiO1xuICBjb25zdCBfcmFuZ2VTdGFydENsYXNzTmFtZSA9IGNuKGJ1dHRvblJhbmdlQ2xhc3NOYW1lLCBcInBzLXJvdW5kZWQtcy1tZFwiLCBwcm9wcy5yYW5nZVN0YXJ0Q2xhc3NOYW1lKTtcbiAgY29uc3QgX3JhbmdlRW5kQ2xhc3NOYW1lID0gY24oYnV0dG9uUmFuZ2VDbGFzc05hbWUsIFwicHMtcm91bmRlZC1lLW1kXCIsIHByb3BzLnJhbmdlRW5kQ2xhc3NOYW1lKTtcbiAgY29uc3QgX3JhbmdlTWlkZGxlQ2xhc3NOYW1lID0gY24oXG4gICAgXCJwcy1iZy1hY2NlbnQgIXBzLXRleHQtZm9yZWdyb3VuZCBbJj5idXR0b25dOnBzLWJnLXRyYW5zcGFyZW50IFsmPmJ1dHRvbl06IXBzLXRleHQtZm9yZWdyb3VuZCBbJj5idXR0b25dOmhvdmVyOnBzLWJnLXRyYW5zcGFyZW50IFsmPmJ1dHRvbl06aG92ZXI6IXBzLXRleHQtZm9yZWdyb3VuZFwiLFxuICAgIHByb3BzLnJhbmdlTWlkZGxlQ2xhc3NOYW1lLFxuICApO1xuICBjb25zdCBfc2VsZWN0ZWRDbGFzc05hbWUgPSBjbihcbiAgICBcIlsmPmJ1dHRvbl06cHMtYmctcHJpbWFyeSBbJj5idXR0b25dOnBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIFsmPmJ1dHRvbl06cHMtaG92ZXI6cHMtYmctcHJpbWFyeSBbJj5idXR0b25dOnBzLWhvdmVyOnBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kXCIsXG4gICAgXCJbJlthcmlhLXNlbGVjdGVkXT5idXR0b25dOnBzLWJnLXByaW1hcnkgWyZbYXJpYS1zZWxlY3RlZF0+YnV0dG9uXTpwcy10ZXh0LXByaW1hcnktZm9yZWdyb3VuZFwiLFxuICAgIHByb3BzLnNlbGVjdGVkQ2xhc3NOYW1lLFxuICApO1xuICBjb25zdCBfdG9kYXlDbGFzc05hbWUgPSBjbihcIlsmPmJ1dHRvbl06cHMtZm9udC1ib2xkIFsmPmJ1dHRvbl06cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZFwiLCBwcm9wcy50b2RheUNsYXNzTmFtZSk7XG4gIGNvbnN0IF9vdXRzaWRlQ2xhc3NOYW1lID0gY24oXG4gICAgXCJwcy10ZXh0LW11dGVkLWZvcmVncm91bmQgcHMtb3BhY2l0eS01MCBhcmlhLXNlbGVjdGVkOnBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZCBhcmlhLXNlbGVjdGVkOnBzLW9wYWNpdHktMzBcIixcbiAgICBwcm9wcy5vdXRzaWRlQ2xhc3NOYW1lLFxuICApO1xuICBjb25zdCBfZGlzYWJsZWRDbGFzc05hbWUgPSBjbihcInBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZCBwcy1vcGFjaXR5LTUwXCIsIHByb3BzLmRpc2FibGVkQ2xhc3NOYW1lKTtcbiAgY29uc3QgX2hpZGRlbkNsYXNzTmFtZSA9IGNuKFwicHMtaW52aXNpYmxlIHBzLWZsZXgtMVwiLCBwcm9wcy5oaWRkZW5DbGFzc05hbWUpO1xuXG4gIHJldHVybiAoXG4gICAgPERheVBpY2tlclxuICAgICAgbW9kZT1cInNpbmdsZVwiXG4gICAgICBjYXB0aW9uTGF5b3V0PVwibGFiZWxcIlxuICAgICAgaGlkZU5hdmlnYXRpb25cbiAgICAgIHNob3dPdXRzaWRlRGF5cz17c2hvd091dHNpZGVEYXlzfVxuICAgICAgY2xhc3NOYW1lPXtjbihcInBzLXAtMFwiLCBjbGFzc05hbWUpfVxuICAgICAgY2xhc3NOYW1lcz17e1xuICAgICAgICBjYXB0aW9uX2xhYmVsOiBfY2FwdGlvbkxhYmVsQ2xhc3NOYW1lLFxuICAgICAgICBkYXk6IF9kYXlDbGFzc05hbWUsXG4gICAgICAgIGRheV9idXR0b246IF9kYXlCdXR0b25DbGFzc05hbWUsXG4gICAgICAgIGRyb3Bkb3duczogX2Ryb3Bkb3duc0NsYXNzTmFtZSxcbiAgICAgICAgZm9vdGVyOiBfZm9vdGVyQ2xhc3NOYW1lLFxuICAgICAgICBtb250aDogcHJvcHMubW9udGhDbGFzc05hbWUsXG4gICAgICAgIG1vbnRoX2NhcHRpb246IF9tb250aENhcHRpb25DbGFzc05hbWUsXG4gICAgICAgIG1vbnRoX2dyaWQ6IF9tb250aEdyaWRDbGFzc05hbWUsXG4gICAgICAgIG1vbnRoczogX21vbnRoc0NsYXNzTmFtZSxcbiAgICAgICAgd2VlazogX3dlZWtDbGFzc05hbWUsXG4gICAgICAgIHdlZWtkYXk6IF93ZWVrZGF5Q2xhc3NOYW1lLFxuICAgICAgICB3ZWVrZGF5czogX3dlZWtkYXlzQ2xhc3NOYW1lLFxuICAgICAgICByYW5nZV9lbmQ6IF9yYW5nZUVuZENsYXNzTmFtZSxcbiAgICAgICAgcmFuZ2VfbWlkZGxlOiBfcmFuZ2VNaWRkbGVDbGFzc05hbWUsXG4gICAgICAgIHJhbmdlX3N0YXJ0OiBfcmFuZ2VTdGFydENsYXNzTmFtZSxcbiAgICAgICAgc2VsZWN0ZWQ6IF9zZWxlY3RlZENsYXNzTmFtZSxcbiAgICAgICAgZGlzYWJsZWQ6IF9kaXNhYmxlZENsYXNzTmFtZSxcbiAgICAgICAgaGlkZGVuOiBfaGlkZGVuQ2xhc3NOYW1lLFxuICAgICAgICBvdXRzaWRlOiBfb3V0c2lkZUNsYXNzTmFtZSxcbiAgICAgICAgdG9kYXk6IF90b2RheUNsYXNzTmFtZSxcbiAgICAgICAgbmF2OiBcInBzLWhpZGRlblwiLFxuICAgICAgICAuLi5jbGFzc05hbWVzLFxuICAgICAgfX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApO1xufVxuQ2FsZW5kYXIuZGlzcGxheU5hbWUgPSBcIkNhbGVuZGFyXCI7XG5cbmV4cG9ydCB7IENhbGVuZGFyIH07XG4iLCAiaW1wb3J0IHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IGludGVyZmFjZSBVc2VJbnB1dFByb3BzIHtcbiAgaW5pdGlhbFZhbHVlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlSW5wdXQocHJvcHM6IFVzZUlucHV0UHJvcHMpIHtcbiAgY29uc3QgeyBpbml0aWFsVmFsdWUgfSA9IHByb3BzO1xuXG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGU8c3RyaW5nPihpbml0aWFsVmFsdWUgPz8gXCJcIik7XG5cbiAgY29uc3QgaGFuZGxlT25DaGFuZ2UgPSAoZXZlbnQ6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgc2V0VmFsdWUoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgfTtcblxuICByZXR1cm4geyBoYW5kbGVPbkNoYW5nZSwgdmFsdWUsIHNldFZhbHVlIH07XG59XG4iLCAiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgYmFkZ2VWYXJpYW50cyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2JhZGdlXCI7XG5pbXBvcnQgeyB1c2VQb3BvdmVyQWN0aW9ucyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbFwiO1xuaW1wb3J0IHsgSW5wdXRBY3Rpb25zIH0gZnJvbSBcIi4vaW5wdXQtYWN0aW9uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVudW1JbnB1dFByb3BzIHtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiBzdHJpbmcgfCBudWxsKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIG9wdGlvbnM/OiBzdHJpbmdbXTtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBFbnVtSW5wdXQocHJvcHM6IEVudW1JbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgb25TdWJtaXQsIGNvbHVtbiwgdmFsdWUsIG9wdGlvbnMgPSBbXSwgcmVhZG9ubHkgfSA9IHByb3BzO1xuICBjb25zdCBpc051bGxhYmxlID0gY29sdW1uLm51bGxhYmxlID09PSB0cnVlO1xuICBjb25zdCBpbml0aWFsVmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuICBjb25zdCBbY3VycmVudFZhbHVlLCBzZXRDdXJyZW50VmFsdWVdID0gdXNlU3RhdGUoaW5pdGlhbFZhbHVlKTtcbiAgY29uc3QgW3NldFRvTnVsbCwgc2V0U2V0VG9OdWxsXSA9IHVzZVN0YXRlPGJvb2xlYW4+KHZhbHVlID09PSBudWxsKTtcblxuICBjb25zdCBoYW5kbGVTZWxlY3RPcHRpb24gPSAob3B0aW9uOiBzdHJpbmcpID0+IHtcbiAgICBzZXRDdXJyZW50VmFsdWUob3B0aW9uKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVOdWxsQ2hhbmdlID0gKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBzZXRTZXRUb051bGwoY2hlY2tlZCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHNldFRvTnVsbCkge1xuICAgICAgaWYgKHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgIG9uU3VibWl0KG51bGwpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudFZhbHVlICE9PSBpbml0aWFsVmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KGN1cnJlbnRWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbY3VycmVudFZhbHVlLCBpbml0aWFsVmFsdWUsIG9uU3VibWl0LCBzZXRUb051bGwsIHZhbHVlXSk7XG5cbiAgY29uc3QgY2FuY2VsQWN0aW9uID0gKCkgPT4ge1xuICAgIHNldEN1cnJlbnRWYWx1ZShpbml0aWFsVmFsdWUpO1xuICAgIHNldFNldFRvTnVsbCh2YWx1ZSA9PT0gbnVsbCk7IC8vIFJlc2V0IG51bGwgc3RhdGUgYXMgd2VsbFxuICB9O1xuXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLWZvbnQtbW9ubyBwcy1oLVt2YXIoLS1zdHVkaW8tY2VsbC1oZWlnaHQpXSBwcy1weC0yIHBzLXB5LTAgcHMtdy1mdWxsIHBzLXRleHQteHMgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgIHtjdXJyZW50VmFsdWV9XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1mbGV4LXdyYXAgcHMtZ2FwLTIgcHMtcC0yIHBzLW1pbi13LVt2YXIoLS1yYWRpeC1wb3BvdmVyLXRyaWdnZXItd2lkdGgpXSBwcy1tYXgtdy1bNTAwcHhdIHctZnVsbCBwcy1ib3JkZXItdCBwcy1ib3JkZXItdGFibGUtYm9yZGVyIHBzLW92ZXJmbG93LXktc2Nyb2xsIHBzLW1heC1oLTMyXCI+XG4gICAgICAgIHtvcHRpb25zLm1hcCgob3B0aW9uKSA9PiAoXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAga2V5PXtvcHRpb259XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVTZWxlY3RPcHRpb24ob3B0aW9uKX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17YmFkZ2VWYXJpYW50cyh7IHZhcmlhbnQ6IG9wdGlvbiA9PT0gY3VycmVudFZhbHVlID8gXCJkZWZhdWx0XCIgOiBcIm91dGxpbmVcIiB9KX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtzZXRUb051bGwgfHwgcmVhZG9ubHl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge29wdGlvbn1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgKSl9XG4gICAgICA8L2Rpdj5cbiAgICAgIDxJbnB1dEFjdGlvbnNcbiAgICAgICAgb25TYXZlPXtoYW5kbGVTYXZlfVxuICAgICAgICBvbkNhbmNlbD17aGFuZGxlQ2FuY2VsfVxuICAgICAgICBvbk51bGxDaGFuZ2U9e2lzTnVsbGFibGUgPyBoYW5kbGVOdWxsQ2hhbmdlIDogdW5kZWZpbmVkfVxuICAgICAgICBpc051bGw9e3NldFRvTnVsbH1cbiAgICAgICAgcmVhZG9ubHk9e3JlYWRvbmx5fVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VQb3BvdmVyQWN0aW9ucyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbFwiO1xuaW1wb3J0IHsgSW5wdXRBY3Rpb25zIH0gZnJvbSBcIi4vaW5wdXQtYWN0aW9uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEpzb25JbnB1dFByb3BzIHtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiB1bmtub3duKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gSnNvbklucHV0KHByb3BzOiBKc29uSW5wdXRQcm9wcykge1xuICBjb25zdCB7IHZhbHVlLCBvblN1Ym1pdCwgY29sdW1uLCByZWFkb25seSB9ID0gcHJvcHM7XG4gIGNvbnN0IGlzTnVsbGFibGUgPSBjb2x1bW4ubnVsbGFibGUgPT09IHRydWU7XG4gIGNvbnN0IGluaXRpYWxWYWx1ZSA9IHZhbHVlID09PSBudWxsID8gXCJcIiA6IEpTT04uc3RyaW5naWZ5KHZhbHVlLCBudWxsLCAyKTtcbiAgY29uc3QgW2N1cnJlbnRWYWx1ZSwgc2V0Q3VycmVudFZhbHVlXSA9IHVzZVN0YXRlPHN0cmluZz4oaW5pdGlhbFZhbHVlKTtcbiAgY29uc3QgW3NldFRvTnVsbCwgc2V0U2V0VG9OdWxsXSA9IHVzZVN0YXRlPGJvb2xlYW4+KHZhbHVlID09PSBudWxsKTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoZTogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTFRleHRBcmVhRWxlbWVudD4pID0+IHtcbiAgICBzZXRDdXJyZW50VmFsdWUoZS50YXJnZXQudmFsdWUpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU51bGxDaGFuZ2UgPSAoY2hlY2tlZDogYm9vbGVhbikgPT4ge1xuICAgIHNldFNldFRvTnVsbChjaGVja2VkKTtcbiAgfTtcblxuICAvLyBTdWJtaXQgaGFuZGxlciB0aGF0IG9ubHkgc3VibWl0cyBpZiB0aGUgdmFsdWUgaGFzIGNoYW5nZWRcbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHNldFRvTnVsbCkge1xuICAgICAgaWYgKHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgIG9uU3VibWl0KG51bGwpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBqc29uVmFsdWUgPSBjdXJyZW50VmFsdWUgPT09IFwiXCIgPyBudWxsIDogKEpTT04ucGFyc2UoY3VycmVudFZhbHVlKSBhcyBvYmplY3QpO1xuXG4gICAgLy8gT25seSBzdWJtaXQgaWYgdGhlIHZhbHVlIGhhcyBjaGFuZ2VkXG4gICAgaWYgKGpzb25WYWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KGpzb25WYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbY3VycmVudFZhbHVlLCB2YWx1ZSwgb25TdWJtaXQsIHNldFRvTnVsbF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHtcbiAgICAvLyBSZXNldCB0aGUgaW50ZXJuYWwgc3RhdGUgdG8gbWF0Y2ggdGhlIG9yaWdpbmFsIHZhbHVlXG4gICAgc2V0Q3VycmVudFZhbHVlKGluaXRpYWxWYWx1ZSk7XG4gICAgc2V0U2V0VG9OdWxsKHZhbHVlID09PSBudWxsKTtcbiAgfTtcblxuICAvLyBVc2Ugb3VyIGhvb2sgdG8gZ2V0IGhhbmRsZXJzIHRoYXQgaW5jbHVkZSBwb3BvdmVyIGNsb3NpbmdcbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTQgcHMtcHktMFwiPlxuICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICByb3dzPXs1fVxuICAgICAgICAgIHZhbHVlPXtjdXJyZW50VmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICBkaXNhYmxlZD17c2V0VG9OdWxsIHx8IHJlYWRvbmx5fVxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWNlbGwtaW5wdXQtYmFzZSBwcy1hcHBlYXJhbmNlLW5vbmUgcHMtdy1mdWxsIHBzLWZvbnQtbW9ubyBwcy1ib3JkZXItbm9uZSBwcy1vdXRsaW5lLW5vbmUgcHMtc2hhZG93LW5vbmUgcHMtYmctdHJhbnNwYXJlbnQgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTAgcHMtcmVzaXplIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgIGxhbmc9XCJlbl9FTlwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxJbnB1dEFjdGlvbnNcbiAgICAgICAgb25TYXZlPXtoYW5kbGVTYXZlfVxuICAgICAgICBvbkNhbmNlbD17aGFuZGxlQ2FuY2VsfVxuICAgICAgICBvbk51bGxDaGFuZ2U9e2lzTnVsbGFibGUgPyBoYW5kbGVOdWxsQ2hhbmdlIDogdW5kZWZpbmVkfVxuICAgICAgICBpc051bGw9e3NldFRvTnVsbH1cbiAgICAgICAgcmVhZG9ubHk9e3JlYWRvbmx5fVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBMYWJlbCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2xhYmVsXCI7XG5pbXBvcnQgeyB1c2VQb3BvdmVyQWN0aW9ucyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbFwiO1xuaW1wb3J0IHsgSW5wdXRBY3Rpb25zIH0gZnJvbSBcIi4vaW5wdXQtYWN0aW9uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE51bWVyaWNJbnB1dFByb3BzIHtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiB1bmtub3duKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gTnVtZXJpY0lucHV0KHByb3BzOiBOdW1lcmljSW5wdXRQcm9wcykge1xuICBjb25zdCB7IHZhbHVlLCBvblN1Ym1pdCwgY29sdW1uLCByZWFkb25seSB9ID0gcHJvcHM7XG4gIGNvbnN0IGlzTnVsbGFibGUgPSBjb2x1bW4ubnVsbGFibGUgPT09IHRydWU7XG4gIGNvbnN0IFtjdXJyZW50VmFsdWUsIHNldEN1cnJlbnRWYWx1ZV0gPSB1c2VTdGF0ZTxzdHJpbmc+KHZhbHVlID09PSBudWxsID8gXCJcIiA6IFN0cmluZyh2YWx1ZSkpO1xuICBjb25zdCBbc2V0VG9OdWxsLCBzZXRTZXRUb051bGxdID0gdXNlU3RhdGU8Ym9vbGVhbj4odmFsdWUgPT09IG51bGwpO1xuICBjb25zdCBpbml0aWFsVmFsdWUgPSB2YWx1ZSA9PT0gbnVsbCA/IFwiXCIgOiBTdHJpbmcodmFsdWUpO1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIHNldEN1cnJlbnRWYWx1ZShlLnRhcmdldC52YWx1ZSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlTnVsbENoYW5nZSA9IChjaGVja2VkOiBib29sZWFuKSA9PiB7XG4gICAgc2V0U2V0VG9OdWxsKGNoZWNrZWQpO1xuICB9O1xuXG4gIC8vIFN1Ym1pdCBoYW5kbGVyIHRoYXQgb25seSBzdWJtaXRzIGlmIHRoZSB2YWx1ZSBoYXMgY2hhbmdlZFxuICBjb25zdCBoYW5kbGVJbnB1dFN1Ym1pdCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoc2V0VG9OdWxsKSB7XG4gICAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgb25TdWJtaXQobnVsbCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIENvbnZlcnQgdG8gbnVtYmVyXG4gICAgY29uc3QgbnVtZXJpY1ZhbHVlID0gY3VycmVudFZhbHVlID09PSBcIlwiID8gbnVsbCA6IE51bWJlcihjdXJyZW50VmFsdWUpO1xuXG4gICAgLy8gT25seSBzdWJtaXQgaWYgdGhlIHZhbHVlIGhhcyBjaGFuZ2VkXG4gICAgaWYgKGN1cnJlbnRWYWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KG51bWVyaWNWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbY3VycmVudFZhbHVlLCB2YWx1ZSwgb25TdWJtaXQsIHNldFRvTnVsbF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHtcbiAgICAvLyBSZXNldCB0aGUgaW50ZXJuYWwgc3RhdGUgdG8gbWF0Y2ggdGhlIG9yaWdpbmFsIHZhbHVlXG4gICAgc2V0Q3VycmVudFZhbHVlKGluaXRpYWxWYWx1ZSk7XG4gICAgc2V0U2V0VG9OdWxsKHZhbHVlID09PSBudWxsKTtcbiAgfTtcblxuICAvLyBVc2Ugb3VyIGhvb2sgdG8gZ2V0IGhhbmRsZXJzIHRoYXQgaW5jbHVkZSBwb3BvdmVyIGNsb3NpbmdcbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1pdGVtcy1jZW50ZXIgcHMtaC1bdmFyKC0tc3R1ZGlvLWNlbGwtaGVpZ2h0KV0gcHMtZ2FwLTQgcHMtcHktMFwiPlxuICAgICAgICA8TGFiZWwgaHRtbEZvcj1cIm51bWVyaWMtaW5wdXRcIiBjbGFzc05hbWU9XCJwcy1zci1vbmx5XCI+XG4gICAgICAgICAgTnVtZXJpY1xuICAgICAgICA8L0xhYmVsPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgaW5wdXRNb2RlPVwibnVtZXJpY1wiXG4gICAgICAgICAgcGF0dGVybj1cIlxcZCpcIlxuICAgICAgICAgIHZhbHVlPXtjdXJyZW50VmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICBkaXNhYmxlZD17c2V0VG9OdWxsIHx8IHJlYWRvbmx5fVxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWNlbGwtaW5wdXQtbGVhZGluZyBwcy1hcHBlYXJhbmNlLW5vbmUgcHMtdy1mdWxsIHBzLWZvbnQtbW9ubyBwcy1ib3JkZXItbm9uZSBwcy1vdXRsaW5lLW5vbmUgcHMtc2hhZG93LW5vbmUgcHMtYmctdHJhbnNwYXJlbnQgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTAgcHMtcmVzaXplLW5vbmUgcHMtcHgtW3ZhcigtLXN0dWRpby1jZWxsLXNwYWNpbmcpXVwiXG4gICAgICAgICAgc3RlcD1cImFueVwiXG4gICAgICAgICAgbGFuZz1cImVuX0VOXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPElucHV0QWN0aW9uc1xuICAgICAgICBvblNhdmU9e2hhbmRsZVNhdmV9XG4gICAgICAgIG9uQ2FuY2VsPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgIG9uTnVsbENoYW5nZT17aXNOdWxsYWJsZSA/IGhhbmRsZU51bGxDaGFuZ2UgOiB1bmRlZmluZWR9XG4gICAgICAgIGlzTnVsbD17c2V0VG9OdWxsfVxuICAgICAgICByZWFkb25seT17cmVhZG9ubHl9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCB0eXBlIHsgRm9ybUV2ZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IElucHV0IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvaW5wdXRcIjtcbmltcG9ydCB7IHVzZVBvcG92ZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBJbnB1dEFjdGlvbnMgfSBmcm9tIFwiLi9pbnB1dC1hY3Rpb25zXCI7XG5pbXBvcnQgeyB1c2VJbnB1dCB9IGZyb20gXCIuL3VzZS1pbnB1dFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJhd0lucHV0UHJvcHMge1xuICBvblN1Ym1pdCh0aGlzOiB2b2lkLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gUmF3SW5wdXQocHJvcHM6IFJhd0lucHV0UHJvcHMpIHtcbiAgY29uc3QgeyBvblN1Ym1pdCwgdmFsdWUsIHJlYWRvbmx5IH0gPSBwcm9wcztcblxuICBjb25zdCBpbml0aWFsVmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuXG4gIGNvbnN0IHsgaGFuZGxlT25DaGFuZ2UsIHZhbHVlOiBpbnB1dFZhbHVlIH0gPSB1c2VJbnB1dCh7IGluaXRpYWxWYWx1ZSB9KTtcblxuICBmdW5jdGlvbiBoYW5kbGVPblN1Ym1pdChldmVudDogRm9ybUV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gaW5pdGlhbFZhbHVlKSB7XG4gICAgICBvblN1Ym1pdChpbnB1dFZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVJbnB1dFN1Ym1pdCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gaW5pdGlhbFZhbHVlKSB7XG4gICAgICBvblN1Ym1pdChpbnB1dFZhbHVlKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sIFtpbnB1dFZhbHVlLCBpbml0aWFsVmFsdWUsIG9uU3VibWl0XSk7XG5cbiAgY29uc3QgY2FuY2VsQWN0aW9uID0gKCkgPT4ge307XG5cbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxmb3JtIG9uU3VibWl0PXtoYW5kbGVPblN1Ym1pdH0+XG4gICAgICAgIDxJbnB1dFxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWNlbGwtaW5wdXQtbGVhZGluZyBwcy1mb250LW1vbm8gcHMtYm9yZGVyLW5vbmUgcHMtc2hhZG93LW5vbmUgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTAgcHMtcmVzaXplLW5vbmUgcHMtcHgtW3ZhcigtLXN0dWRpby1jZWxsLXNwYWNpbmcpXVwiXG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZU9uQ2hhbmdlfVxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICB2YWx1ZT17aW5wdXRWYWx1ZX1cbiAgICAgICAgICBkaXNhYmxlZD17cmVhZG9ubHl9XG4gICAgICAgIC8+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwic3VibWl0XCIgY2xhc3NOYW1lPVwicHMtc3Itb25seVwiIC8+XG4gICAgICA8L2Zvcm0+XG4gICAgICA8SW5wdXRBY3Rpb25zIG9uU2F2ZT17aGFuZGxlU2F2ZX0gb25DYW5jZWw9e2hhbmRsZUNhbmNlbH0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcbmltcG9ydCBsb2NhbGl6ZWRGb3JtYXQgZnJvbSBcImRheWpzL3BsdWdpbi9sb2NhbGl6ZWRGb3JtYXRcIjtcbmltcG9ydCB0eXBlIHsgRm9ybUV2ZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmltcG9ydCB7IElucHV0IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvaW5wdXRcIjtcbmltcG9ydCB7IHVzZVBvcG92ZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBJbnB1dEFjdGlvbnMgfSBmcm9tIFwiLi9pbnB1dC1hY3Rpb25zXCI7XG5pbXBvcnQgeyB1c2VJbnB1dCB9IGZyb20gXCIuL3VzZS1pbnB1dFwiO1xuXG4vLyBJbml0aWFsaXplIGRheWpzIHBsdWdpbnNcbmRheWpzLmV4dGVuZChsb2NhbGl6ZWRGb3JtYXQpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRpbWVJbnB1dFByb3BzIHtcbiAgb25TdWJtaXQodGhpczogdm9pZCwgdmFsdWU6IHN0cmluZyk6IHZvaWQ7XG4gIHZhbHVlOiB1bmtub3duO1xuICBjb2x1bW46IENvbHVtbjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBUaW1lSW5wdXQocHJvcHM6IFRpbWVJbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgb25TdWJtaXQsIHZhbHVlLCByZWFkb25seSB9ID0gcHJvcHM7XG5cbiAgY29uc3QgaW5pdGlhbFZhbHVlID0gU3RyaW5nKHZhbHVlKTtcblxuICBjb25zdCB7IGhhbmRsZU9uQ2hhbmdlLCB2YWx1ZTogaW5wdXRWYWx1ZSB9ID0gdXNlSW5wdXQoeyBpbml0aWFsVmFsdWUgfSk7XG5cbiAgLy8gRm9ybWF0IHRpbWUgdmFsdWVzIGluIGEgaHVtYW4tcmVhZGFibGUgbWFubmVyXG4gIGNvbnN0IGZvcm1hdHRlZFRpbWUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFpbnB1dFZhbHVlLmluY2x1ZGVzKFwiOlwiKSkgcmV0dXJuIGlucHV0VmFsdWU7XG5cbiAgICAgIGNvbnN0IGhhc1RpbWV6b25lID0gL1srLV1cXGR7Mn0oOlxcZHsyfSk/JC8udGVzdChpbnB1dFZhbHVlKTtcbiAgICAgIGNvbnN0IGRhdGUgPSBkYXlqcyhgMjAwMC0wMS0wMSAke2lucHV0VmFsdWV9YCk7XG4gICAgICBpZiAoZGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgcmV0dXJuIGRhdGUuZm9ybWF0KFwiaDptbSBBXCIpICsgKGhhc1RpbWV6b25lID8gYCAoJHtkYXRlLmZvcm1hdChcIlpcIil9KWAgOiBcIlwiKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdGltZVJlZ2V4ID0gLyhcXGR7MSwyfSk6KFxcZHsyfSk6KFxcZHsyfSkoPzpcXC5cXGQrKT8oWystXVxcZHsyfSg/OjpcXGR7Mn0pPyk/LztcbiAgICAgIGNvbnN0IG1hdGNoID0gaW5wdXRWYWx1ZS5tYXRjaCh0aW1lUmVnZXgpO1xuICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIGNvbnN0IGhvdXJzID0gcGFyc2VJbnQobWF0Y2hbMV0gfHwgXCIxMlwiLCAxMCk7XG4gICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBtYXRjaFsyXSB8fCBcIjAwXCI7XG4gICAgICAgIGNvbnN0IHR6T2Zmc2V0ID0gbWF0Y2hbNF0gfHwgXCJcIjtcbiAgICAgICAgY29uc3QgcGVyaW9kID0gaG91cnMgPj0gMTIgPyBcIlBNXCIgOiBcIkFNXCI7XG4gICAgICAgIGNvbnN0IGhvdXIxMiA9IGhvdXJzICUgMTIgPT09IDAgPyAxMiA6IGhvdXJzICUgMTI7XG5cbiAgICAgICAgcmV0dXJuIGAke2hvdXIxMn06JHttaW51dGVzfSAke3BlcmlvZH0ke3R6T2Zmc2V0ID8gYCAoJHt0ek9mZnNldH0pYCA6IFwiXCJ9YDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGlucHV0VmFsdWU7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gaW5wdXRWYWx1ZTtcbiAgICB9XG4gIH0sIFtpbnB1dFZhbHVlXSk7XG5cbiAgZnVuY3Rpb24gaGFuZGxlT25TdWJtaXQoZXZlbnQ6IEZvcm1FdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbaW5wdXRWYWx1ZSwgaW5pdGlhbFZhbHVlLCBvblN1Ym1pdF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHt9O1xuXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Zm9ybSBvblN1Ym1pdD17aGFuZGxlT25TdWJtaXR9PlxuICAgICAgICA8SW5wdXRcbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1jZWxsLWlucHV0LWxlYWRpbmcgcHMtZm9udC1tb25vIHBzLWJvcmRlci1ub25lIHBzLXNoYWRvdy1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0wIHBzLXJlc2l6ZS1ub25lIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVPbkNoYW5nZX1cbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgdmFsdWU9e2lucHV0VmFsdWV9XG4gICAgICAgIC8+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwic3VibWl0XCIgY2xhc3NOYW1lPVwicHMtc3Itb25seVwiIC8+XG4gICAgICA8L2Zvcm0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTEgcHMtcC0yIHBzLWJvcmRlci10IHBzLWJvcmRlci10YWJsZS1ib3JkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPkZvcm1hdHRlZCB2YWx1ZTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtZm9udC1tb25vIHBzLXRleHQtZm9yZWdyb3VuZFwiPntmb3JtYXR0ZWRUaW1lfTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8SW5wdXRBY3Rpb25zIG9uU2F2ZT17aGFuZGxlU2F2ZX0gb25DYW5jZWw9e2hhbmRsZUNhbmNlbH0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCB7IENlbGwgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBBcnJvd1JpZ2h0IH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0IHV1aWQgZnJvbSBcInNob3J0LXV1aWRcIjtcblxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSBcIkAvZGF0YVwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkAvdWkvY29tcG9uZW50cy91aS9idXR0b25cIjtcbmltcG9ydCB7IHVzZUFjdGl2ZVRhYmxlIH0gZnJvbSBcIkAvdWkvaG9va3MvdXNlLWFjdGl2ZS10YWJsZVwiO1xuaW1wb3J0IHsgdXNlRmlsdGVyaW5nIH0gZnJvbSBcIkAvdWkvaG9va3MvdXNlLWZpbHRlcmluZ1wiO1xuaW1wb3J0IHsgdXNlSW50cm9zcGVjdGlvbiB9IGZyb20gXCJAL3VpL2hvb2tzL3VzZS1pbnRyb3NwZWN0aW9uXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBMaW5rKHByb3BzOiB7IGNlbGw6IENlbGw8UmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHVua25vd24+OyBjb2x1bW46IENvbHVtbiB9KSB7XG4gIGNvbnN0IHsgY2VsbCwgY29sdW1uIH0gPSBwcm9wcztcbiAgY29uc3QgeyBma1NjaGVtYSwgZmtUYWJsZSwgZmtDb2x1bW4gfSA9IGNvbHVtbjtcbiAgY29uc3QgeyBoYW5kbGVTY2hlbWFDaGFuZ2UsIGhhbmRsZVRhYmxlQ2hhbmdlIH0gPSB1c2VBY3RpdmVUYWJsZSgpO1xuICBjb25zdCB7IHNldEFwcGxpZWRGaWx0ZXIgfSA9IHVzZUZpbHRlcmluZygpO1xuICBjb25zdCB7IGRhdGE6IGludHJvc3BlY3Rpb24gfSA9IHVzZUludHJvc3BlY3Rpb24oKTtcblxuICBpZiAoZmtTY2hlbWEgIT09IG51bGwgJiYgZmtUYWJsZSAhPT0gbnVsbCAmJiBma0NvbHVtbiAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHRhYmxlID0gaW50cm9zcGVjdGlvbi5zY2hlbWFzW2ZrU2NoZW1hXT8udGFibGVzW2ZrVGFibGVdO1xuXG4gICAgaWYgKHRhYmxlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBzaXplPXtcInhzXCJ9XG4gICAgICAgICAgdmFyaWFudD17XCJvdXRsaW5lXCJ9XG4gICAgICAgICAgb25DbGljaz17KGUpID0+IHtcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBoYW5kbGVTY2hlbWFDaGFuZ2UoZmtTY2hlbWEpO1xuICAgICAgICAgICAgaGFuZGxlVGFibGVDaGFuZ2UodGFibGUpO1xuICAgICAgICAgICAgc2V0QXBwbGllZEZpbHRlcih7XG4gICAgICAgICAgICAgIGtpbmQ6IFwiRmlsdGVyR3JvdXBcIixcbiAgICAgICAgICAgICAgaWQ6IHV1aWQuZ2VuZXJhdGUoKSxcbiAgICAgICAgICAgICAgYWZ0ZXI6IFwiYW5kXCIsXG4gICAgICAgICAgICAgIGZpbHRlcnM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBraW5kOiBcIkNvbHVtbkZpbHRlclwiLFxuICAgICAgICAgICAgICAgICAgaWQ6IHV1aWQuZ2VuZXJhdGUoKSxcbiAgICAgICAgICAgICAgICAgIGNvbHVtbjogZmtDb2x1bW4sXG4gICAgICAgICAgICAgICAgICBvcGVyYXRvcjogXCI9XCIsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogY2VsbC5nZXRWYWx1ZSgpLFxuICAgICAgICAgICAgICAgICAgYWZ0ZXI6IFwiYW5kXCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8QXJyb3dSaWdodCBzaXplPXsxMn0gLz5cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuIiwgImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gXCJ1dWlkXCI7XG5cbmltcG9ydCB0eXBlIHsgVGFibGUgfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcbmltcG9ydCB7IGtleU1hcCwgdXNlUXVlcnlTdGF0ZSwgdXNlUXVlcnlTdGF0ZXMgfSBmcm9tIFwiLi9udXFzXCI7XG5pbXBvcnQgeyBJTklUSUFMX0RBVEFfVVBEQVRFRF9BVCwgdXNlSW50cm9zcGVjdGlvbiB9IGZyb20gXCIuL3VzZS1pbnRyb3NwZWN0aW9uXCI7XG5cbi8qKlxuICogSG9vayB0byBlbmNhcHN1bGF0ZSBhbGwgbG9naWMgZm9yIG1hbmFnaW5nIHRoZSBhY3RpdmUgdGFibGUgc2VsZWN0aW9uLlxuICogSGFuZGxlcyBzeW5jaW5nIHdpdGggVVJMIHBhcmFtcywgZGVmYXVsdCBzZWxlY3Rpb24sIGFuZCBleHBvc2VzIGEgc2ltcGxlIEFQSSBmb3IgY29uc3VtZXJzLlxuICogU2hvdWxkIG9ubHkgYmUgdXNlZCB3aXRoaW4gU3R1ZGlvIGNvbnRleHQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VBY3RpdmVUYWJsZSgpIHtcbiAgY29uc3QgeyBhY3RpdmVUYWJsZSwgc2V0QWN0aXZlVGFibGUsIGFjdGl2ZVNjaGVtYSwgc2V0QWN0aXZlU2NoZW1hLCBhZGFwdGVyLCBlbWl0VGVsZW1ldHJ5RXZlbnQgfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCB7IGRhdGE6IGludHJvc3BlY3Rpb24sIGRhdGFVcGRhdGVkQXQgfSA9IHVzZUludHJvc3BlY3Rpb24oKTtcbiAgY29uc3QgaXNMb2FkaW5nID0gZGF0YVVwZGF0ZWRBdCA9PT0gSU5JVElBTF9EQVRBX1VQREFURURfQVQ7XG5cbiAgY29uc3QgW2N1cnJlbnRWaWV3VmFsdWVdID0gdXNlUXVlcnlTdGF0ZShcInZpZXdcIik7IC8vIFJlYWQgdGhlIGN1cnJlbnQgdmlld1xuXG4gIGNvbnN0IFt0YWJsZUFuZFNjaGVtYSwgc2V0VGFibGVBbmRTY2hlbWFdID0gdXNlUXVlcnlTdGF0ZXMoXG4gICAga2V5TWFwKHtcbiAgICAgIHRhYmxlOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgICAgICAgcGFyc2U6ICh2OiBzdHJpbmcgfCBudWxsKSA9PiB2LFxuICAgICAgICBzZXJpYWxpemU6ICh2OiBzdHJpbmcgfCBudWxsKSA9PiB2ID8/IFwiXCIsXG4gICAgICB9LFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgICAgICAgcGFyc2U6ICh2OiBzdHJpbmcgfCBudWxsKSA9PiB2IHx8IGFkYXB0ZXIuZGVmYXVsdFNjaGVtYSB8fCBcInB1YmxpY1wiLFxuICAgICAgICBzZXJpYWxpemU6ICh2OiBzdHJpbmcgfCBudWxsKSA9PiB2IHx8IGFkYXB0ZXIuZGVmYXVsdFNjaGVtYSB8fCBcInB1YmxpY1wiLFxuICAgICAgfSxcbiAgICB9KSxcbiAgKTtcblxuICAvLyBBZGQgcXVlcnkgc3RhdGUgZm9yIHBhZ2luYXRpb24gYW5kIHNvcnRpbmcgcGFyYW1zXG4gIGNvbnN0IFssIHNldFBhZ2VQYXJhbV0gPSB1c2VRdWVyeVN0YXRlPHN0cmluZyB8IG51bGw+KFwicGFnZUluZGV4XCIsIHtcbiAgICBwYXJzZTogKHYpID0+IHYsXG4gICAgc2VyaWFsaXplOiAodikgPT4gdiA/PyBcIlwiLFxuICB9KTtcbiAgY29uc3QgWywgc2V0U29ydFBhcmFtXSA9IHVzZVF1ZXJ5U3RhdGU8c3RyaW5nIHwgbnVsbD4oXCJzb3J0XCIsIHtcbiAgICBwYXJzZTogKHYpID0+IHYsXG4gICAgc2VyaWFsaXplOiAodikgPT4gdiA/PyBcIlwiLFxuICB9KTtcbiAgY29uc3QgWywgc2V0Vmlld10gPSB1c2VRdWVyeVN0YXRlPHN0cmluZyB8IG51bGw+KFwidmlld1wiLCB7XG4gICAgcGFyc2U6ICh2KSA9PiB2LFxuICAgIHNlcmlhbGl6ZTogKHYpID0+IHYgPz8gXCJcIixcbiAgfSk7XG5cbiAgLy8gR2V0IGFsbCB0YWJsZXMgZm9yIHRoZSBjdXJyZW50IHNjaGVtYSBmcm9tIFVSTCBvciBkZWZhdWx0XG4gIGNvbnN0IHRhYmxlczogVGFibGVbXSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIC8vIEFsd2F5cyB1c2UgdGhlIGFjdGl2ZVNjaGVtYSBmcm9tIGNvbnRleHRcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhpbnRyb3NwZWN0aW9uLnNjaGVtYXNbYWN0aXZlU2NoZW1hXT8udGFibGVzIHx8IHt9KTtcbiAgfSwgW2ludHJvc3BlY3Rpb24uc2NoZW1hcywgYWN0aXZlU2NoZW1hXSk7XG5cbiAgLy8gQ291bnQgdGhlIHRvdGFsIG51bWJlciBvZiB0YWJsZXMgYWNyb3NzIGFsbCBzY2hlbWFzXG4gIGNvbnN0IHRvdGFsVGFibGVDb3VudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKGludHJvc3BlY3Rpb24uc2NoZW1hcykucmVkdWNlKChzdW0sIHNjaGVtYSkgPT4ge1xuICAgICAgcmV0dXJuIHN1bSArIE9iamVjdC5rZXlzKHNjaGVtYS50YWJsZXMpLmxlbmd0aDtcbiAgICB9LCAwKTtcbiAgfSwgW2ludHJvc3BlY3Rpb24uc2NoZW1hc10pO1xuXG4gIGNvbnN0IFtmaXJzdFRhYmxlXSA9IHRhYmxlcztcblxuICAvLyBFZmZlY3QgdG8gc3luYyBhY3RpdmUgdGFibGUgd2l0aCBVUkwgcGFyYW0gYW5kIGRlZmF1bHRzXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGN1cnJlbnRWaWV3VmFsdWUgPT09IFwic2NoZW1hXCIpIHtcbiAgICAgIHJldHVybjsgLy8gRG8gbm90IGludGVyZmVyZSBpZiBvbiBzY2hlbWEgdmlld1xuICAgIH1cbiAgICBpZiAoaXNMb2FkaW5nKSByZXR1cm47XG5cbiAgICBjb25zdCBjdXJyZW50VVJMUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uaGFzaC5zbGljZSgxKSk7XG4gICAgY29uc3Qgdmlld1BhcmFtRXhpc3RzID0gY3VycmVudFVSTFBhcmFtcy5oYXMoXCJ2aWV3XCIpO1xuXG4gICAgLy8gU2NlbmFyaW8gMTogVVJMIGhhcyB0YWJsZSBhbmQgc2NoZW1hLCBhbmQgVVJMJ3Mgc2NoZW1hIG1hdGNoZXMgY29udGV4dCdzIGFjdGl2ZVNjaGVtYS5cbiAgICBpZiAodGFibGVBbmRTY2hlbWE/LnRhYmxlICYmIHRhYmxlQW5kU2NoZW1hLnNjaGVtYSA9PT0gYWN0aXZlU2NoZW1hKSB7XG4gICAgICBjb25zdCB0YWJsZUZyb21QYXJhbSA9IHRhYmxlcy5maW5kKCh0KSA9PiB0Lm5hbWUgPT09IHRhYmxlQW5kU2NoZW1hLnRhYmxlKTsgLy8gdGFibGVzIGFyZSBhbHJlYWR5IGZpbHRlcmVkIGJ5IGFjdGl2ZVNjaGVtYVxuXG4gICAgICBpZiAodGFibGVGcm9tUGFyYW0pIHtcbiAgICAgICAgaWYgKGFjdGl2ZVRhYmxlICE9PSB0YWJsZUZyb21QYXJhbSkge1xuICAgICAgICAgIHNldEFjdGl2ZVRhYmxlKHRhYmxlRnJvbVBhcmFtKTsgLy8gU3luYyBjb250ZXh0IGFjdGl2ZVRhYmxlXG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF2aWV3UGFyYW1FeGlzdHMpIHtcbiAgICAgICAgICB2b2lkIHNldFZpZXcoXCJ0YWJsZVwiKTsgLy8gRW5zdXJlIHZpZXc9dGFibGUgaWYgbWlzc2luZ1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjsgLy8gVGFibGUgc3VjY2Vzc2Z1bGx5IHN5bmNlZCBmcm9tIFVSTCBmb3IgdGhlIGN1cnJlbnQgYWN0aXZlU2NoZW1hLlxuICAgICAgfVxuICAgICAgLy8gSWYgdGFibGUgc3BlY2lmaWVkIGluIFVSTCBub3QgZm91bmQgaW4gY3VycmVudCBhY3RpdmVTY2hlbWEncyB0YWJsZXMsIGZhbGwgdGhyb3VnaCB0byBkZWZhdWx0LlxuICAgIH1cblxuICAgIC8vIFNjZW5hcmlvIDI6IERlZmF1bHRpbmcgbG9naWMgb3IgY29udGV4dC9VUkwgc2NoZW1hIG1pc21hdGNoIHJlcXVpcmluZyByZXNldC5cbiAgICAvLyBUaGlzIGNvdmVyczpcbiAgICAvLyAtIE5vIHRhYmxlIGluIFVSTCBmb3IgdGhlIGFjdGl2ZVNjaGVtYS5cbiAgICAvLyAtIFVSTCBzY2hlbWEgZGlmZmVycyBmcm9tIGNvbnRleHQgYWN0aXZlU2NoZW1hLlxuICAgIC8vIC0gQ29udGV4dCBhY3RpdmVUYWJsZSBpcyBub3Qgc2V0IG9yIGlzIG5vdCB2YWxpZCBmb3IgdGhlIGN1cnJlbnQgYWN0aXZlU2NoZW1hLlxuICAgIGlmICh0YWJsZXMubGVuZ3RoID4gMCkge1xuICAgICAgLy8gSWYgY3VycmVudCBhY3RpdmVTY2hlbWEgaGFzIGFueSB0YWJsZXNcbiAgICAgIGNvbnN0IGlzQ29udGV4dFRhYmxlVmFsaWRGb3JDdXJyZW50U2NoZW1hID1cbiAgICAgICAgYWN0aXZlVGFibGUgJiYgYWN0aXZlVGFibGUuc2NoZW1hID09PSBhY3RpdmVTY2hlbWEgJiYgdGFibGVzLnNvbWUoKHQpID0+IHQubmFtZSA9PT0gYWN0aXZlVGFibGUubmFtZSk7XG5cbiAgICAgIGlmICghaXNDb250ZXh0VGFibGVWYWxpZEZvckN1cnJlbnRTY2hlbWEgJiYgZmlyc3RUYWJsZSkge1xuICAgICAgICAvLyBDb250ZXh0IGFjdGl2ZVRhYmxlIGlzIG5vdCBzZXQsIG9yIGlzIGZvciBhIGRpZmZlcmVudCBzY2hlbWEsIG9yIG5vdCBpbiBjdXJyZW50IHNjaGVtYSdzIHRhYmxlcy5cbiAgICAgICAgLy8gU2V0IHRvIHRoZSBmaXJzdCB0YWJsZSBvZiB0aGUgY3VycmVudCBhY3RpdmVTY2hlbWEuXG4gICAgICAgIHNldEFjdGl2ZVRhYmxlKGZpcnN0VGFibGUpOyAvLyBVcGRhdGUgY29udGV4dFxuICAgICAgICB2b2lkIHNldFRhYmxlQW5kU2NoZW1hKHsgdGFibGU6IGZpcnN0VGFibGUubmFtZSwgc2NoZW1hOiBhY3RpdmVTY2hlbWEgfSk7IC8vIFVwZGF0ZSBVUkwgZm9yIHRhYmxlIGFuZCBzY2hlbWFcbiAgICAgICAgdm9pZCBzZXRWaWV3KFwidGFibGVcIik7IC8vIEV4cGxpY2l0bHkgc2V0IHZpZXc9dGFibGUgd2hlbiBkZWZhdWx0aW5nIFVSTFxuICAgICAgfSBlbHNlIGlmIChpc0NvbnRleHRUYWJsZVZhbGlkRm9yQ3VycmVudFNjaGVtYSAmJiAhdmlld1BhcmFtRXhpc3RzKSB7XG4gICAgICAgIC8vIENvbnRleHQgYWN0aXZlVGFibGUgaXMgdmFsaWQgZm9yIGN1cnJlbnQgc2NoZW1hLCBidXQgVVJMIGlzIG1pc3Npbmcgdmlldy4gQWRkIGl0LlxuICAgICAgICB2b2lkIHNldFZpZXcoXCJ0YWJsZVwiKTtcbiAgICAgIH0gZWxzZSBpZiAoIWZpcnN0VGFibGUgJiYgdGFibGVBbmRTY2hlbWE/LnRhYmxlKSB7XG4gICAgICAgIC8vIFRoaXMgY2FzZSBzaG91bGQgYmUgcmFyZSBpZiB0YWJsZXMubGVuZ3RoID4gMCwgbWVhbnMgZmlyc3RUYWJsZSBpcyBudWxsIGJ1dCBVUkwgaGFzIGEgdGFibGUuXG4gICAgICAgIC8vIFRoaXMgaW1wbGllcyBhbiBpbmNvbnNpc3RlbmN5OyBzYWZlciB0byBjbGVhciBVUkwgdGFibGUgZm9yIHRoaXMgc2NoZW1hLlxuICAgICAgICB2b2lkIHNldFRhYmxlQW5kU2NoZW1hKHsgdGFibGU6IG51bGwsIHNjaGVtYTogYWN0aXZlU2NoZW1hIH0pO1xuICAgICAgICBpZiAoIXZpZXdQYXJhbUV4aXN0cykge1xuICAgICAgICAgIC8vIFN0aWxsIGVuc3VyZSB2aWV3IHBhcmFtXG4gICAgICAgICAgdm9pZCBzZXRWaWV3KFwidGFibGVcIik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoIXZpZXdQYXJhbUV4aXN0cykge1xuICAgICAgICAvLyBDYXRjaC1hbGwgaWYgZm9yIHNvbWUgcmVhc29uIHZpZXcgaXMgc3RpbGwgbWlzc2luZyBhbmQgd2UgaGF2ZSB0YWJsZXNcbiAgICAgICAgdm9pZCBzZXRWaWV3KFwidGFibGVcIik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE5vIHRhYmxlcyBpbiB0aGUgY3VycmVudCBhY3RpdmVTY2hlbWEuXG4gICAgICBpZiAoYWN0aXZlVGFibGUpIHtcbiAgICAgICAgLy8gSWYgY29udGV4dCBzdGlsbCBob2xkcyBhbiBhY3RpdmUgdGFibGUgKGUuZy4gZnJvbSBhIHByZXZpb3VzIHNjaGVtYSlcbiAgICAgICAgc2V0QWN0aXZlVGFibGUobnVsbCk7IC8vIENsZWFyIGl0XG4gICAgICB9XG4gICAgICBpZiAodGFibGVBbmRTY2hlbWE/LnRhYmxlKSB7XG4gICAgICAgIC8vIElmIFVSTCBzdGlsbCBoYXMgYSB0YWJsZSBwYXJhbSBmb3IgdGhpcyAobm93IGVtcHR5KSBzY2hlbWFcbiAgICAgICAgdm9pZCBzZXRUYWJsZUFuZFNjaGVtYSh7IHRhYmxlOiBudWxsLCBzY2hlbWE6IGFjdGl2ZVNjaGVtYSB9KTsgLy8gQ2xlYXIgaXQgZnJvbSBVUkxcbiAgICAgIH1cbiAgICAgIC8vIEV2ZW4gaWYgbm8gdGFibGVzLCBlbnN1cmUgdmlldyBwYXJhbWV0ZXIgaXMgcHJlc2VudCAoZS5nLiwgdmlldz10YWJsZSBvciBhIHNwZWNpZmljIFwibm9fdGFibGVzX3ZpZXdcIilcbiAgICAgIC8vIEZvciBub3csIGNvbnNpc3RlbnRseSBzZXR0aW5nIHRvIFwidGFibGVcIi4gU3R1ZGlvQ29udGVudCB3aWxsIGRlY2lkZSBhY3R1YWwgcmVuZGVyaW5nLlxuICAgICAgaWYgKCF2aWV3UGFyYW1FeGlzdHMpIHtcbiAgICAgICAgdm9pZCBzZXRWaWV3KFwidGFibGVcIik7XG4gICAgICB9XG4gICAgfVxuICB9LCBbXG4gICAgaXNMb2FkaW5nLFxuICAgIHRhYmxlQW5kU2NoZW1hLFxuICAgIHRhYmxlcyxcbiAgICBmaXJzdFRhYmxlLFxuICAgIGFjdGl2ZVRhYmxlLFxuICAgIGFjdGl2ZVNjaGVtYSxcbiAgICBzZXRBY3RpdmVUYWJsZSxcbiAgICBzZXRUYWJsZUFuZFNjaGVtYSxcbiAgICBzZXRWaWV3LCAvLyBBZGRlZCBzZXRWaWV3IHRvIGRlcGVuZGVuY3kgYXJyYXlcbiAgICBjdXJyZW50Vmlld1ZhbHVlLCAvLyBBZGRlZCBjdXJyZW50Vmlld1ZhbHVlIHRvIGRlcGVuZGVuY3kgYXJyYXlcbiAgXSk7XG5cbiAgLyoqXG4gICAqIENoYW5nZSB0aGUgYWN0aXZlIHRhYmxlIGFuZCB1cGRhdGUgdGhlIFVSTCBwYXJhbS5cbiAgICogQWxzbyBjbGVhcnMgcGFnaW5hdGlvbiBhbmQgc29ydGluZyBwYXJhbXMgd2hlbiBzd2l0Y2hpbmcgdGFibGVzLlxuICAgKi9cbiAgY29uc3QgaGFuZGxlVGFibGVDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAobmV3VGFibGU6IFRhYmxlKSA9PiB7XG4gICAgICBpZiAoYWN0aXZlVGFibGUgIT09IG5ld1RhYmxlKSB7XG4gICAgICAgIHNldEFjdGl2ZVRhYmxlKG5ld1RhYmxlKTtcbiAgICAgICAgLy8gRW5zdXJlIGJvdGggdGFibGUgYW5kIHNjaGVtYSBhcmUgYWx3YXlzIGluY2x1ZGVkIGluIHRoZSBVUkxcbiAgICAgICAgdm9pZCBzZXRUYWJsZUFuZFNjaGVtYSh7XG4gICAgICAgICAgdGFibGU6IG5ld1RhYmxlLm5hbWUsXG4gICAgICAgICAgc2NoZW1hOiBuZXdUYWJsZS5zY2hlbWEsXG4gICAgICAgIH0pO1xuICAgICAgICB2b2lkIHNldFZpZXcoXCJ0YWJsZVwiKTtcbiAgICAgICAgLy8gQ2xlYXIgcGFnaW5hdGlvbiBhbmQgc29ydGluZyBwYXJhbXMgd2hlbiBzd2l0Y2hpbmcgdGFibGVzXG4gICAgICAgIHZvaWQgc2V0UGFnZVBhcmFtKG51bGwpO1xuICAgICAgICB2b2lkIHNldFNvcnRQYXJhbShudWxsKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFthY3RpdmVUYWJsZSwgc2V0QWN0aXZlVGFibGUsIHNldFRhYmxlQW5kU2NoZW1hLCBzZXRQYWdlUGFyYW0sIHNldFNvcnRQYXJhbSwgc2V0Vmlld10sXG4gICk7XG5cbiAgLy8gSGFuZGxlIHNjaGVtYSBjaGFuZ2VcbiAgY29uc3QgaGFuZGxlU2NoZW1hQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKG5ld1NjaGVtYTogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAobmV3U2NoZW1hICE9PSBhY3RpdmVTY2hlbWEpIHtcbiAgICAgICAgc2V0QWN0aXZlVGFibGUobnVsbCk7IC8vIENsZWFyIGFjdGl2ZSB0YWJsZSB3aGVuIHNjaGVtYSBjaGFuZ2VzXG4gICAgICAgIHNldEFjdGl2ZVNjaGVtYShuZXdTY2hlbWEpOyAvLyBVcGRhdGUgY29udGV4dCBhY3RpdmUgc2NoZW1hXG4gICAgICAgIHZvaWQgc2V0VGFibGVBbmRTY2hlbWEoeyB0YWJsZTogbnVsbCwgc2NoZW1hOiBuZXdTY2hlbWEgfSk7IC8vIFVwZGF0ZSBVUkwgZm9yIHNjaGVtYSwgY2xlYXIgdGFibGVcblxuICAgICAgICAvLyBPbmx5IHNldCB2aWV3IHRvIFwidGFibGVcIiBpZiBub3QgY3VycmVudGx5IG9uIFwic2NoZW1hXCIgdmlld1xuICAgICAgICBpZiAoY3VycmVudFZpZXdWYWx1ZSAhPT0gXCJzY2hlbWFcIikge1xuICAgICAgICAgIHZvaWQgc2V0VmlldyhcInRhYmxlXCIpO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIGN1cnJlbnRWaWV3VmFsdWUgaXMgXCJzY2hlbWFcIiwgaXQgcmVtYWlucyBcInNjaGVtYVwiXG5cbiAgICAgICAgLy8gQ2xlYXIgcGFnaW5hdGlvbiBhbmQgc29ydGluZyBwYXJhbXNcbiAgICAgICAgdm9pZCBzZXRQYWdlUGFyYW0obnVsbCk7XG4gICAgICAgIHZvaWQgc2V0U29ydFBhcmFtKG51bGwpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgYWN0aXZlU2NoZW1hLFxuICAgICAgc2V0QWN0aXZlU2NoZW1hLFxuICAgICAgc2V0QWN0aXZlVGFibGUsXG4gICAgICBzZXRUYWJsZUFuZFNjaGVtYSxcbiAgICAgIHNldFBhZ2VQYXJhbSxcbiAgICAgIHNldFNvcnRQYXJhbSxcbiAgICAgIHNldFZpZXcsXG4gICAgICBjdXJyZW50Vmlld1ZhbHVlLCAvLyBBZGRlZCBjdXJyZW50Vmlld1ZhbHVlIHRvIGRlcGVuZGVuY3kgYXJyYXlcbiAgICBdLFxuICApO1xuXG4gIC8vIFN5bmMgVVJMIHNjaGVtYSBwYXJhbWV0ZXIgd2l0aCBhY3RpdmVTY2hlbWEgZnJvbSBjb250ZXh0XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gT25seSB1cGRhdGUgVVJMIGlmIHRoZSBzY2hlbWEgZnJvbSBVUkwgaXMgZGlmZmVyZW50IGZyb20gdGhlIGFjdGl2ZVNjaGVtYVxuICAgIGlmICh0YWJsZUFuZFNjaGVtYT8uc2NoZW1hICE9PSBhY3RpdmVTY2hlbWEgJiYgIWlzTG9hZGluZykge1xuICAgICAgdm9pZCBzZXRUYWJsZUFuZFNjaGVtYSgocHJldikgPT4gKHsgLi4ucHJldiwgc2NoZW1hOiBhY3RpdmVTY2hlbWEgfSkpO1xuICAgIH1cbiAgfSwgW2FjdGl2ZVNjaGVtYSwgdGFibGVBbmRTY2hlbWE/LnNjaGVtYSwgc2V0VGFibGVBbmRTY2hlbWEsIGlzTG9hZGluZ10pO1xuXG4gIC8vIFN5bmMgYWN0aXZlU2NoZW1hIGluIGNvbnRleHQgd2l0aCBVUkwgc2NoZW1hIHBhcmFtZXRlclxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIFVwZGF0ZSB0aGUgYWN0aXZlU2NoZW1hIGluIGNvbnRleHQgd2hlbiBVUkwgc2NoZW1hIHBhcmFtIGNoYW5nZXNcbiAgICBpZiAodGFibGVBbmRTY2hlbWE/LnNjaGVtYSAmJiB0YWJsZUFuZFNjaGVtYS5zY2hlbWEgIT09IGFjdGl2ZVNjaGVtYSkge1xuICAgICAgc2V0QWN0aXZlU2NoZW1hKHRhYmxlQW5kU2NoZW1hLnNjaGVtYSk7XG4gICAgfVxuICB9LCBbdGFibGVBbmRTY2hlbWE/LnNjaGVtYSwgYWN0aXZlU2NoZW1hLCBzZXRBY3RpdmVTY2hlbWFdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChkYXRhVXBkYXRlZEF0ICE9PSAtMSkge1xuICAgICAgZW1pdFRlbGVtZXRyeUV2ZW50KHtcbiAgICAgICAgZXZlbnQ6IFwic3R1ZGlvX2xhdW5jaGVkXCIsXG4gICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICBldmVudF9pZDogdXVpZHY0KCksXG4gICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgdGFibGVfY291bnQ6IHRvdGFsVGFibGVDb3VudCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW3RhYmxlcywgZW1pdFRlbGVtZXRyeUV2ZW50LCBkYXRhVXBkYXRlZEF0LCB0b3RhbFRhYmxlQ291bnRdKTtcblxuICByZXR1cm4ge1xuICAgIHRhYmxlcyxcbiAgICBhY3RpdmVUYWJsZSxcbiAgICBhY3RpdmVTY2hlbWEsXG4gICAgaXNMb2FkaW5nLFxuICAgIGhhbmRsZVRhYmxlQ2hhbmdlLFxuICAgIGhhbmRsZVNjaGVtYUNoYW5nZSxcbiAgfTtcbn1cbiIsICJpbXBvcnQgeyBDb2x1bW5EZWYsIFRhYmxlLCB1c2VSZWFjdFRhYmxlIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBDb21wb25lbnRUeXBlLCBEaXNwYXRjaCwgU2V0U3RhdGVBY3Rpb24gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IG9taXQgfSBmcm9tIFwicmVtZWRhXCI7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCJAL2RhdGFcIjtcbmltcG9ydCB7IFRhYmxlUm93IH0gZnJvbSBcIkAvdWkvY29tcG9uZW50cy91aS90YWJsZVwiO1xuXG5pbXBvcnQgeyB1c2VJc0luc2VydGluZyB9IGZyb20gXCIuLi9ob29rcy91c2UtaXMtaW5zZXJ0aW5nXCI7XG5pbXBvcnQgeyBDZWxsUHJvcHMgfSBmcm9tIFwiLi9jZWxsL0NlbGxcIjtcbmltcG9ydCB7IEVtcHR5Q2VsbCB9IGZyb20gXCIuL2NlbGwvRW1wdHlDZWxsXCI7XG5pbXBvcnQgeyBnZXRDZWxsIH0gZnJvbSBcIi4vY2VsbC9nZXQtY2VsbFwiO1xuaW1wb3J0IHsgV3JpdGVhYmxlQ2VsbCB9IGZyb20gXCIuL2NlbGwvV3JpdGVhYmxlQ2VsbFwiO1xuaW1wb3J0IHsgZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyB9IGZyb20gXCIuL2dyaWQvZmVhdHVyZXMvY29sdW1uLXBpbm5pbmdcIjtcbmltcG9ydCB7IGdldElucHV0IH0gZnJvbSBcIi4vaW5wdXQvZ2V0LWlucHV0XCI7XG5cbnR5cGUgUHJvcHMgPSB7XG4gIHRhYmxlOiBUYWJsZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIHN0YWdlZFJvd3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W107XG4gIHNldFN0YWdlZFJvd3M6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPFJlY29yZDxzdHJpbmcsIHVua25vd24+W10+Pjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBTdGFnZWRSb3dzKHByb3BzOiBQcm9wcykge1xuICBjb25zdCB7IHRhYmxlOiBwYXJlbnRUYWJsZSwgc3RhZ2VkUm93cywgc2V0U3RhZ2VkUm93cyB9ID0gcHJvcHM7XG4gIGNvbnN0IHJlYWRvbmx5ID0gQm9vbGVhbih1c2VJc0luc2VydGluZygpKTtcblxuICBmdW5jdGlvbiB1cGRhdGVTdGFnZWRSb3cocm93SW5kZXg6IG51bWJlciwgcGFydGlhbFJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIHtcbiAgICBzZXRTdGFnZWRSb3dzKChwcmV2Um93cykgPT4ge1xuICAgICAgY29uc3QgbmV3Um93cyA9IFsuLi5wcmV2Um93c107XG4gICAgICBuZXdSb3dzW3Jvd0luZGV4XSA9IHsgLi4ubmV3Um93c1tyb3dJbmRleF0sIC4uLnBhcnRpYWxSb3cgfTtcblxuICAgICAgcmV0dXJuIG5ld1Jvd3M7XG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBjb2x1bW5EZWZzID0gT2JqZWN0LnZhbHVlcyhwYXJlbnRUYWJsZS5vcHRpb25zLmNvbHVtbnMpLm1hcCgoY29sdW1uKSA9PiB7XG4gICAgaWYgKGNvbHVtbi5pZCA9PT0gXCJfX3BzX3NlbGVjdFwiKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5jb2x1bW4sXG4gICAgICAgIGNlbGwoKSB7XG4gICAgICAgICAgcmV0dXJuICgpID0+IDxFbXB0eUNlbGwgLz47XG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi5jb2x1bW4sXG4gICAgICBjZWxsKHsgY2VsbCB9KSB7XG4gICAgICAgIHJldHVybiAocHJvcHM6IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPiAmIHsgcm93SW5kZXg6IG51bWJlciB9KSA9PiAoXG4gICAgICAgICAgPFdyaXRlYWJsZUNlbGxcbiAgICAgICAgICAgIGNlbGxDb21wb25lbnQ9e2dldENlbGwoeyBjZWxsLCBjb2x1bW46IGNvbHVtbi5tZXRhIGFzIENvbHVtbiB9KX1cbiAgICAgICAgICAgIGxpbmtDb21wb25lbnQ9e251bGx9XG4gICAgICAgICAgICBpbnB1dENvbXBvbmVudD17Z2V0SW5wdXQoe1xuICAgICAgICAgICAgICBjZWxsLFxuICAgICAgICAgICAgICBjb2x1bW46IGNvbHVtbi5tZXRhIGFzIENvbHVtbixcbiAgICAgICAgICAgICAgb25TdWJtaXQodmFsdWUpIHtcbiAgICAgICAgICAgICAgICB1cGRhdGVTdGFnZWRSb3cocHJvcHMucm93SW5kZXgsIHsgW2NvbHVtbi5pZCFdOiB2YWx1ZSB9KTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgcmVhZG9ubHksXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICAvPlxuICAgICAgICApO1xuICAgICAgfSxcbiAgICB9IHNhdGlzZmllcyBDb2x1bW5EZWY8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuICB9KTtcblxuICBjb25zdCB0YWJsZSA9IHVzZVJlYWN0VGFibGUoe1xuICAgIC4uLnBhcmVudFRhYmxlLm9wdGlvbnMsXG4gICAgY29sdW1uczogY29sdW1uRGVmcyxcbiAgICBlbmFibGVTb3J0aW5nOiBmYWxzZSxcbiAgICBvblBhZ2luYXRpb25DaGFuZ2U6IHVuZGVmaW5lZCxcbiAgICBvblNvcnRpbmdDaGFuZ2U6IHVuZGVmaW5lZCxcbiAgICBkYXRhOiBzdGFnZWRSb3dzLFxuICAgIHN0YXRlOiBvbWl0KHBhcmVudFRhYmxlLm9wdGlvbnMuc3RhdGUsIFtcInBhZ2luYXRpb25cIiwgXCJzb3J0aW5nXCJdKSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge3RhYmxlLmdldFJvd01vZGVsKCkucm93cy5tYXAoKHJvdywgaSkgPT4gKFxuICAgICAgICA8VGFibGVSb3cga2V5PXtpfT5cbiAgICAgICAgICB7cm93LmdldFZpc2libGVDZWxscygpLm1hcCgoY2VsbCwgaikgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjZWxsLmNvbHVtbi5jb2x1bW5EZWYuY2VsbCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgIHR5cGUgQ2VsbCA9IENvbXBvbmVudFR5cGU8T21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+ICYgeyByb3dJbmRleDogbnVtYmVyIH0+O1xuICAgICAgICAgICAgICBjb25zdCBDZWxsID0gY2VsbC5jb2x1bW4uY29sdW1uRGVmLmNlbGwoY2VsbC5nZXRDb250ZXh0KCkpIGFzIENlbGw7XG4gICAgICAgICAgICAgIHJldHVybiA8Q2VsbCBrZXk9e2p9IHsuLi5nZXRDb2x1bW5QaW5uaW5nU3R5bGVzKGNlbGwuY29sdW1uLCBcImNlbGxcIil9IHJvd0luZGV4PXtpfSAvPjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvVGFibGVSb3c+XG4gICAgICApKX1cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyBNYXhpbWl6ZSwgTWluaW1pemUsIFBhbmVsTGVmdENsb3NlLCBQYW5lbExlZnRPcGVuIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuXG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9idXR0b25cIjtcbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuL2NvbnRleHRcIjtcblxuaW50ZXJmYWNlIFN0dWRpb0hlYWRlclByb3BzIHtcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XG4gIGVuZENvbnRlbnQ/OiBSZWFjdC5SZWFjdE5vZGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTdHVkaW9IZWFkZXIocHJvcHM6IFN0dWRpb0hlYWRlclByb3BzKSB7XG4gIGNvbnN0IHsgaXNGdWxsc2NyZWVuLCB0b2dnbGVGdWxsc2NyZWVuLCB0b2dnbGVOYXZpZ2F0aW9uLCBpc05hdmlnYXRpb25PcGVuIH0gPSB1c2VTdHVkaW8oKTtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWJnLXN0dWRpby1oZWFkZXItYmFja2dyb3VuZCBwcy1mbGV4IHBzLXctZnVsbCBwcy1wLTIgcHMtcHktMyBwcy1ib3JkZXItYiBwcy1iZy1jYXJkIHBzLXJvdW5kZWQtdC1sZ1wiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtdy1mdWxsIHBzLWdhcC0yXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWdyb3cgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBzaXplPVwic21cIiBvbkNsaWNrPXt0b2dnbGVOYXZpZ2F0aW9ufT5cbiAgICAgICAgICAgICAge2lzTmF2aWdhdGlvbk9wZW4gPyA8UGFuZWxMZWZ0Q2xvc2UgLz4gOiA8UGFuZWxMZWZ0T3BlbiAvPn1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICAgICAge3Byb3BzLmVuZENvbnRlbnR9XG4gICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lXCIgc2l6ZT1cImljb25cIiBvbkNsaWNrPXt0b2dnbGVGdWxsc2NyZWVufT5cbiAgICAgICAgICAgICAge2lzRnVsbHNjcmVlbiA/IDxNaW5pbWl6ZSAvPiA6IDxNYXhpbWl6ZSAvPn1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuIiwgImV4cG9ydCBmdW5jdGlvbiBCYXNpY1ZpZXcoKSB7XG4gIHJldHVybiA8ZGl2PkJhc2ljVmlldzwvZGl2Pjtcbn1cbiIsICJpbXBvcnQgeyBTbG90IH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zbG90XCI7XG5pbXBvcnQgeyBUYWJsZTIgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5cbmltcG9ydCB7IFNlbGVjdCwgU2VsZWN0Q29udGVudCwgU2VsZWN0SXRlbSwgU2VsZWN0VHJpZ2dlciwgU2VsZWN0VmFsdWUgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9zZWxlY3RcIjtcbmltcG9ydCB7IFNrZWxldG9uIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvc2tlbGV0b25cIjtcbmltcG9ydCB7IHVzZVF1ZXJ5U3RhdGUgfSBmcm9tIFwiLi4vaG9va3MvbnVxc1wiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGUgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZVwiO1xuaW1wb3J0IHsgdXNlSW50cm9zcGVjdGlvbiB9IGZyb20gXCIuLi9ob29rcy91c2UtaW50cm9zcGVjdGlvblwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vbGliL3V0aWxzXCI7XG5cbnR5cGUgTmF2aWdhdGlvblByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59ICYgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+O1xuXG5leHBvcnQgZnVuY3Rpb24gTmF2aWdhdGlvbih7IGNsYXNzTmFtZSB9OiBOYXZpZ2F0aW9uUHJvcHMpIHtcbiAgLy8gVXNlIHRoZSBjdXN0b20gaG9vayB0byBnZXQgYWxsIG5lY2Vzc2FyeSBzdGF0ZSBhbmQgaGFuZGxlcnNcbiAgY29uc3QgeyB0YWJsZXMsIGFjdGl2ZVRhYmxlLCBpc0xvYWRpbmcsIGhhbmRsZVRhYmxlQ2hhbmdlIH0gPSB1c2VBY3RpdmVUYWJsZSgpO1xuICBjb25zdCBbdmlldywgc2V0Vmlld10gPSB1c2VRdWVyeVN0YXRlKFwidmlld1wiKTtcbiAgLy8gUHJvdmlkZSBwYXJzZS9zZXJpYWxpemUgZm9yIHRhYmxlIGFuZCBzY2hlbWEgdG8gaGFuZGxlIG51bGwgY29ycmVjdGx5XG4gIGNvbnN0IFssIHNldFVybFRhYmxlXSA9IHVzZVF1ZXJ5U3RhdGU8c3RyaW5nIHwgbnVsbD4oXCJ0YWJsZVwiLCB7XG4gICAgcGFyc2U6ICh2KSA9PiB2LFxuICAgIHNlcmlhbGl6ZTogKHYpID0+IHYgPz8gXCJcIiwgLy8gU2VyaWFsaXplIG51bGwgdG8gZW1wdHkgc3RyaW5nLCBudXFzIG1pZ2h0IHJlbW92ZSBwYXJhbVxuICB9KTtcbiAgY29uc3QgWywgc2V0VXJsU2NoZW1hXSA9IHVzZVF1ZXJ5U3RhdGU8c3RyaW5nIHwgbnVsbD4oXCJzY2hlbWFcIiwge1xuICAgIHBhcnNlOiAodikgPT4gdixcbiAgICBzZXJpYWxpemU6ICh2KSA9PiB2ID8/IFwiXCIsIC8vIFNlcmlhbGl6ZSBudWxsIHRvIGVtcHR5IHN0cmluZ1xuICB9KTtcblxuICBjb25zdCBzaWRlQmFyQ2xhc3NlcyA9IGNuKFxuICAgIFwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy13LTQ4IHBzLW92ZXJmbG93LXktYXV0byBwcy1tYXgtaC1mdWxsIHBzLW1pbi1oLTAgcHMtdGV4dC1jYXJkLWZvcmVncm91bmQgcHMtc2hhZG93LXhzXCIsXG4gICAgY2xhc3NOYW1lLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e3NpZGVCYXJDbGFzc2VzfT5cbiAgICAgIDxOYXZpZ2F0aW9uLlNjaGVtYVNlbGVjdG9yIC8+XG5cbiAgICAgIDxOYXZpZ2F0aW9uLkJsb2NrIGxhYmVsPVwiU3R1ZGlvXCI+XG4gICAgICAgIDxOYXZpZ2F0aW9uLkl0ZW1cbiAgICAgICAgICBhc0NoaWxkXG4gICAgICAgICAgaXNBY3RpdmU9e3ZpZXcgPT09IFwic2NoZW1hXCJ9XG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgdm9pZCBzZXRVcmxUYWJsZShudWxsKTtcbiAgICAgICAgICAgIHZvaWQgc2V0VXJsU2NoZW1hKG51bGwpO1xuICAgICAgICAgICAgdm9pZCBzZXRWaWV3KFwic2NoZW1hXCIpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgY2xhc3NOYW1lPXtgcHMtcHktMSBwcy1mb250LW1vbm8gcHMtdGV4dC14cyBwcy10ZXh0LWZvcmVncm91bmQvNjAgaG92ZXI6cHMtdGV4dC1mb3JlZ3JvdW5kIHBzLXRyYW5zaXRpb24tYWxsIHBzLWN1cnNvci1wb2ludGVyIGRhdGEtW2FjdGl2ZT10cnVlXTpwcy1iZy1zbGF0ZS0yMDAgZGF0YS1bYWN0aXZlPXRydWVdOnBzLWZvcmVncm91bmQgZGF0YS1bYWN0aXZlPXRydWVdOnBzLXRleHQtZm9yZWdyb3VuZGB9XG4gICAgICAgID5cbiAgICAgICAgICA8YSBocmVmPXtgI3ZpZXc9c2NoZW1hYH0+U2NoZW1hIHZpc3VhbGlzYXRpb248L2E+XG4gICAgICAgIDwvTmF2aWdhdGlvbi5JdGVtPlxuICAgICAgPC9OYXZpZ2F0aW9uLkJsb2NrPlxuXG4gICAgICA8TmF2aWdhdGlvbi5CbG9jayBsYWJlbD1cIlRhYmxlc1wiPlxuICAgICAgICB7dGFibGVzLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgdGFibGVzLm1hcCgodGFibGUpID0+IChcbiAgICAgICAgICAgIDxOYXZpZ2F0aW9uLkl0ZW1cbiAgICAgICAgICAgICAga2V5PXtgJHt0YWJsZS5zY2hlbWF9LSR7dGFibGUubmFtZX1gfVxuICAgICAgICAgICAgICBhc0NoaWxkXG4gICAgICAgICAgICAgIGlzQWN0aXZlPXthY3RpdmVUYWJsZSA9PT0gdGFibGUgJiYgdmlldyA9PT0gXCJ0YWJsZVwifVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgaGFuZGxlVGFibGVDaGFuZ2UodGFibGUpO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Bwcy1weS0xIHBzLWZvbnQtbW9ubyBwcy10ZXh0LXhzIHBzLXRleHQtZm9yZWdyb3VuZC82MCBob3Zlcjpwcy10ZXh0LWZvcmVncm91bmQgcHMtdHJhbnNpdGlvbi1hbGwgcHMtY3Vyc29yLXBvaW50ZXIgZGF0YS1bYWN0aXZlPXRydWVdOnBzLWJnLXNsYXRlLTIwMCBkYXRhLVthY3RpdmU9dHJ1ZV06cHMtZm9yZWdyb3VuZCBkYXRhLVthY3RpdmU9dHJ1ZV06cHMtdGV4dC1mb3JlZ3JvdW5kYH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGEgaHJlZj17YCN0YWJsZT0ke3RhYmxlLm5hbWV9JnNjaGVtYT0ke3RhYmxlLnNjaGVtYX0mdmlldz10YWJsZWB9Pnt0YWJsZS5uYW1lfTwvYT5cbiAgICAgICAgICAgIDwvTmF2aWdhdGlvbi5JdGVtPlxuICAgICAgICAgICkpXG4gICAgICAgICkgOiBpc0xvYWRpbmcgPyAoXG4gICAgICAgICAgQXJyYXkoNClcbiAgICAgICAgICAgIC5maWxsKG51bGwpXG4gICAgICAgICAgICAubWFwKChfLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICA8TmF2aWdhdGlvbi5JdGVtIGtleT17aW5kZXh9IHdyYXBDaGlsZHJlbkluU3Bhbj17ZmFsc2V9PlxuICAgICAgICAgICAgICAgIDxTa2VsZXRvbiBjbGFzc05hbWU9XCJwcy1oLTMgcHMtdy1mdWxsXCIgLz5cbiAgICAgICAgICAgICAgPC9OYXZpZ2F0aW9uLkl0ZW0+XG4gICAgICAgICAgICApKVxuICAgICAgICApIDogKFxuICAgICAgICAgIDxOYXZpZ2F0aW9uLkl0ZW0+Tm8gdGFibGVzIGZvdW5kPC9OYXZpZ2F0aW9uLkl0ZW0+XG4gICAgICAgICl9XG4gICAgICA8L05hdmlnYXRpb24uQmxvY2s+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmNvbnN0IEJsb2NrID0gKHsgY2xhc3NOYW1lLCBsYWJlbCwgY2hpbGRyZW4sIC4uLnByb3BzIH06IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PiAmIHsgbGFiZWw6IHN0cmluZyB9KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZX0gey4uLnByb3BzfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTEgcHMtcHQtNCBwcy1wYi0yIHBzLXB4LTQgcHMtc3RpY2t5IHBzLXRvcC0wIHBzLWJnLXNsYXRlLTUwLzUwIHBzLWJhY2tkcm9wLWJsdXItc21cIj5cbiAgICAgICAgPFRhYmxlMiBzaXplPXsxNn0gY2xhc3NOYW1lPVwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kLzYwXCIgLz5cbiAgICAgICAgPGgyIGNsYXNzTmFtZT1cInBzLXRleHQtc20gcHMtZm9udC1tZWRpdW1cIj57bGFiZWx9PC9oMj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5hdiBhcmlhLWxhYmVsPXtsYWJlbH0gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1nYXAtcHggcHMtcGItMyBwcy1wLTJcIj5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9uYXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5jb25zdCBJdGVtID0gKHtcbiAgY2xhc3NOYW1lLFxuICBhc0NoaWxkID0gZmFsc2UsXG4gIGlzQWN0aXZlLFxuICBzaXplLFxuICBjaGlsZHJlbixcbiAgd3JhcENoaWxkcmVuSW5TcGFuID0gdHJ1ZSxcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPFwiYnV0dG9uXCI+ICYge1xuICBhc0NoaWxkPzogYm9vbGVhbjtcbiAgaXNBY3RpdmU/OiBib29sZWFuO1xuICBzaXplPzogXCJkZWZhdWx0XCIgfCBcInNtXCI7XG4gIHdyYXBDaGlsZHJlbkluU3Bhbj86IGJvb2xlYW47XG59KSA9PiB7XG4gIGNvbnN0IENvbXAgPSBhc0NoaWxkID8gU2xvdCA6IFwiYnV0dG9uXCI7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29tcFxuICAgICAgZGF0YS1zaWRlYmFyPVwibWVudS1idXR0b25cIlxuICAgICAgZGF0YS1zaXplPXtzaXplfVxuICAgICAgZGF0YS1hY3RpdmU9e2lzQWN0aXZlfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy1weS0xLjUgcHMtcHgtMiBwcy10ZXh0LXNtIHBzLWZvbnQtbWVkaXVtIHBzLXJvdW5kZWQtbWQgcHMtZmxleCBwcy1nYXAtMiBwcy1pdGVtcy1jZW50ZXIgcHMtYm9yZGVyIHBzLWJvcmRlci10cmFuc3BhcmVudCBwcy1iZy10cmFuc3BhcmVudFwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgIHt3cmFwQ2hpbGRyZW5JblNwYW4gPyA8c3BhbiBjbGFzc05hbWU9XCJwcy10cnVuY2F0ZVwiPntjaGlsZHJlbn08L3NwYW4+IDogPD5jaGlsZHJlbjwvPn1cbiAgICA8L0NvbXA+XG4gICk7XG59O1xuXG5jb25zdCBTY2hlbWFTZWxlY3RvciA9ICgpID0+IHtcbiAgLy8gR2V0IHNjaGVtYXMgZnJvbSBpbnRyb3NwZWN0aW9uIGFuZCBhY3RpdmUgc2NoZW1hIG1hbmFnZW1lbnRcbiAgY29uc3QgeyBkYXRhOiBpbnRyb3NwZWN0aW9uLCBpc0xvYWRpbmc6IGlzSW50cm9zcGVjdGlvbkxvYWRpbmcgfSA9IHVzZUludHJvc3BlY3Rpb24oKTtcbiAgY29uc3QgeyBhY3RpdmVTY2hlbWEsIGhhbmRsZVNjaGVtYUNoYW5nZSB9ID0gdXNlQWN0aXZlVGFibGUoKTtcblxuICAvLyBFeHRyYWN0IHNjaGVtYSBuYW1lcyBmcm9tIGludHJvc3BlY3Rpb24gZGF0YVxuICBjb25zdCBzY2hlbWFOYW1lcyA9IE9iamVjdC5rZXlzKGludHJvc3BlY3Rpb24uc2NoZW1hcyB8fCB7fSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0xIHBzLXB0LTQgcHMtcGItMiBwcy1weC00IHBzLXN0aWNreSBwcy10b3AtMCBwcy1iZy1zbGF0ZS01MC81MCBwcy1iYWNrZHJvcC1ibHVyLXNtXCI+XG4gICAgICA8U2VsZWN0IHZhbHVlPXthY3RpdmVTY2hlbWF9IG9uVmFsdWVDaGFuZ2U9e2hhbmRsZVNjaGVtYUNoYW5nZX0+XG4gICAgICAgIDxTZWxlY3RUcmlnZ2VyIGNsYXNzTmFtZT1cInBzLXRleHQteHNcIiBsYWJlbD1cIlNjaGVtYVwiPlxuICAgICAgICAgIDxTZWxlY3RWYWx1ZSBwbGFjZWhvbGRlcj1cIlNlbGVjdCBzY2hlbWFcIiAvPlxuICAgICAgICA8L1NlbGVjdFRyaWdnZXI+XG4gICAgICAgIDxTZWxlY3RDb250ZW50PlxuICAgICAgICAgIHtpc0ludHJvc3BlY3Rpb25Mb2FkaW5nID8gKFxuICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJsb2FkaW5nXCI+TG9hZGluZyBzY2hlbWFzLi4uPC9TZWxlY3RJdGVtPlxuICAgICAgICAgICkgOiBzY2hlbWFOYW1lcy5sZW5ndGggPiAwID8gKFxuICAgICAgICAgICAgc2NoZW1hTmFtZXMubWFwKChzY2hlbWEpID0+IChcbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0ga2V5PXtzY2hlbWF9IHZhbHVlPXtzY2hlbWF9IGNsYXNzTmFtZT1cInBzLXRleHQteHNcIj5cbiAgICAgICAgICAgICAgICB7c2NoZW1hfVxuICAgICAgICAgICAgICA8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICApKVxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIm5vLXNjaGVtYXNcIj5ObyBzY2hlbWFzIGZvdW5kPC9TZWxlY3RJdGVtPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvU2VsZWN0Q29udGVudD5cbiAgICAgIDwvU2VsZWN0PlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuTmF2aWdhdGlvbi5CbG9jayA9IEJsb2NrO1xuTmF2aWdhdGlvbi5JdGVtID0gSXRlbTtcbk5hdmlnYXRpb24uU2NoZW1hU2VsZWN0b3IgPSBTY2hlbWFTZWxlY3RvcjtcbiIsICJpbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuLi9zdHVkaW8vY29udGV4dFwiO1xuaW1wb3J0IHsgdXNlSW50cm9zcGVjdGlvbiB9IGZyb20gXCIuL3VzZS1pbnRyb3NwZWN0aW9uXCI7XG5cbi8vIFR5cGVzIG1hdGNoaW5nIHRoZSBzY2hlbWEgdmlzdWFsaXplcidzIGV4cGVjdGVkIGZvcm1hdFxuZXhwb3J0IHR5cGUgRmllbGQgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xuICBpc1ByaW1hcnk/OiBib29sZWFuO1xuICBpc1JlcXVpcmVkPzogYm9vbGVhbjtcbiAgaXNOdWxsYWJsZT86IGJvb2xlYW47XG4gIGlzRm9yZWlnbktleT86IGJvb2xlYW47XG4gIGZvcmVpZ25LZXlUbz86IHsgdGFibGU6IHN0cmluZzsgY29sdW1uOiBzdHJpbmcgfTtcbn07XG5cbmV4cG9ydCB0eXBlIFRhYmxlID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGZpZWxkczogRmllbGRbXTtcbn07XG5cbmV4cG9ydCB0eXBlIFJlbGF0aW9uc2hpcCA9IHtcbiAgZnJvbTogc3RyaW5nO1xuICB0bzogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBTY2hlbWFWaXN1YWxpemF0aW9uRGF0YSA9IHtcbiAgdGFibGVzOiBUYWJsZVtdO1xuICByZWxhdGlvbnNoaXBzOiBSZWxhdGlvbnNoaXBbXTtcbn07XG5cbmNvbnN0IE5PX1RBQkxFU19OT0RFOiBUYWJsZSA9IHtcbiAgbmFtZTogXCJObyBUYWJsZXMgRm91bmRcIixcbiAgZmllbGRzOiBbeyBuYW1lOiBcIm1lc3NhZ2VcIiwgdHlwZTogXCJpbmZvXCIsIGlzUmVxdWlyZWQ6IHRydWUgfV0sXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlU2NoZW1hVmlzdWFsaXphdGlvbigpOiBTY2hlbWFWaXN1YWxpemF0aW9uRGF0YSB7XG4gIGNvbnN0IHsgZGF0YTogaW50cm9zcGVjdGlvbiwgaXNMb2FkaW5nIH0gPSB1c2VJbnRyb3NwZWN0aW9uKCk7XG4gIGNvbnN0IHsgYWN0aXZlU2NoZW1hIH0gPSB1c2VTdHVkaW8oKTtcblxuICByZXR1cm4gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGlzTG9hZGluZyB8fCAhaW50cm9zcGVjdGlvbiB8fCAhYWN0aXZlU2NoZW1hKSB7XG4gICAgICByZXR1cm4geyB0YWJsZXM6IFtOT19UQUJMRVNfTk9ERV0sIHJlbGF0aW9uc2hpcHM6IFtdIH07XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudFNjaGVtYURhdGEgPSBpbnRyb3NwZWN0aW9uLnNjaGVtYXNbYWN0aXZlU2NoZW1hXTtcblxuICAgIGlmICghY3VycmVudFNjaGVtYURhdGEgfHwgT2JqZWN0LmtleXMoY3VycmVudFNjaGVtYURhdGEudGFibGVzKS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB7IHRhYmxlczogW05PX1RBQkxFU19OT0RFXSwgcmVsYXRpb25zaGlwczogW10gfTtcbiAgICB9XG5cbiAgICBjb25zdCB0YWJsZXM6IFRhYmxlW10gPSBbXTtcbiAgICBjb25zdCB0YWJsZU1hcDogUmVjb3JkPHN0cmluZywgVGFibGU+ID0ge307XG5cbiAgICBPYmplY3QudmFsdWVzKGN1cnJlbnRTY2hlbWFEYXRhLnRhYmxlcykuZm9yRWFjaCgodGFibGUpID0+IHtcbiAgICAgIGNvbnN0IGZpZWxkczogRmllbGRbXSA9IFtdO1xuXG4gICAgICBPYmplY3QudmFsdWVzKHRhYmxlLmNvbHVtbnMpLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgICBjb25zdCBmaWVsZERhdGE6IEZpZWxkID0ge1xuICAgICAgICAgIG5hbWU6IGNvbHVtbi5uYW1lLFxuICAgICAgICAgIHR5cGU6IGNvbHVtbi5kYXRhdHlwZS5uYW1lLFxuICAgICAgICAgIGlzUHJpbWFyeTogY29sdW1uLmlzSW5QcmltYXJ5S2V5LFxuICAgICAgICAgIGlzUmVxdWlyZWQ6ICFjb2x1bW4ubnVsbGFibGUsXG4gICAgICAgICAgaXNOdWxsYWJsZTogY29sdW1uLm51bGxhYmxlLFxuICAgICAgICAgIGlzRm9yZWlnbktleTogISFjb2x1bW4uZmtUYWJsZSwgLy8gVHJ1ZSBpZiBma1RhYmxlIGlzIHByZXNlbnRcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGNvbHVtbi5ma1RhYmxlICYmIGNvbHVtbi5ma0NvbHVtbikge1xuICAgICAgICAgIGZpZWxkRGF0YS5mb3JlaWduS2V5VG8gPSB7IHRhYmxlOiBjb2x1bW4uZmtUYWJsZSwgY29sdW1uOiBjb2x1bW4uZmtDb2x1bW4gfTtcbiAgICAgICAgfVxuICAgICAgICBmaWVsZHMucHVzaChmaWVsZERhdGEpO1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHRhYmxlT2JqZWN0OiBUYWJsZSA9IHtcbiAgICAgICAgbmFtZTogdGFibGUubmFtZSxcbiAgICAgICAgZmllbGRzLFxuICAgICAgfTtcblxuICAgICAgdGFibGVzLnB1c2godGFibGVPYmplY3QpO1xuICAgICAgdGFibGVNYXBbdGFibGUubmFtZV0gPSB0YWJsZU9iamVjdDtcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlbGF0aW9uc2hpcHM6IFJlbGF0aW9uc2hpcFtdID0gW107XG5cbiAgICB0YWJsZXMuZm9yRWFjaCgoc291cmNlVGFibGUpID0+IHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsVGFibGVEYXRhID0gY3VycmVudFNjaGVtYURhdGEudGFibGVzW3NvdXJjZVRhYmxlLm5hbWVdO1xuICAgICAgaWYgKG9yaWdpbmFsVGFibGVEYXRhKSB7XG4gICAgICAgIE9iamVjdC52YWx1ZXMob3JpZ2luYWxUYWJsZURhdGEuY29sdW1ucykuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgICAgaWYgKGNvbHVtbi5ma1RhYmxlICYmIGNvbHVtbi5ma0NvbHVtbikge1xuICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBGSyBjb2x1bW4gaW4gdGhlIHNvdXJjZVRhYmxlIGlzIGFsc28gcGFydCBvZiBpdHMgb3duIFByaW1hcnkgS2V5XG4gICAgICAgICAgICBjb25zdCBpc09uZVRvT25lID0gY29sdW1uLmlzSW5QcmltYXJ5S2V5OyAvLyBJZiB0aGUgRksgY29sdW1uIGl0c2VsZiBpcyBhIFBLIGNvbXBvbmVudFxuXG4gICAgICAgICAgICByZWxhdGlvbnNoaXBzLnB1c2goe1xuICAgICAgICAgICAgICBmcm9tOiBjb2x1bW4uZmtUYWJsZSwgLy8gVGhlIHRhYmxlIGJlaW5nIHJlZmVyZW5jZWQgKHBvdGVudGlhbGx5IDEgc2lkZSlcbiAgICAgICAgICAgICAgdG86IHNvdXJjZVRhYmxlLm5hbWUsIC8vIFRoZSB0YWJsZSB3aXRoIHRoZSBmb3JlaWduIGtleSAoTiBzaWRlIG9yIDEgc2lkZSBpZiBGSyBpcyBQSylcbiAgICAgICAgICAgICAgdHlwZTogaXNPbmVUb09uZSA/IFwiMToxXCIgOiBcIjE6blwiLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB7IHRhYmxlcywgcmVsYXRpb25zaGlwcyB9O1xuICB9LCBbaW50cm9zcGVjdGlvbiwgaXNMb2FkaW5nLCBhY3RpdmVTY2hlbWFdKTtcbn1cbiIsICJpbXBvcnQgXCJyZWFjdGZsb3cvZGlzdC9zdHlsZS5jc3NcIjtcblxuaW1wb3J0IHsgQWxlcnRDaXJjbGUsIEtleSwgU3F1YXJlQXJyb3dSaWdodCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB7IHR5cGUgRkMsIG1lbW8sIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBSZWFjdEZsb3csIHtcbiAgYWRkRWRnZSxcbiAgQmFja2dyb3VuZCxcbiAgdHlwZSBDb25uZWN0aW9uLFxuICBDb25uZWN0aW9uTGluZVR5cGUsXG4gIENvbnRyb2xzLFxuICB0eXBlIEVkZ2UsXG4gIEhhbmRsZSxcbiAgTWluaU1hcCxcbiAgdHlwZSBOb2RlLFxuICB0eXBlIE5vZGVQcm9wcyxcbiAgdHlwZSBOb2RlVHlwZXMsXG4gIFBvc2l0aW9uLFxuICB1c2VFZGdlc1N0YXRlLFxuICB1c2VOb2Rlc1N0YXRlLFxufSBmcm9tIFwicmVhY3RmbG93XCI7XG5cbmltcG9ydCB7IFRvb2x0aXAsIFRvb2x0aXBDb250ZW50LCBUb29sdGlwUHJvdmlkZXIsIFRvb2x0aXBUcmlnZ2VyIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvdG9vbHRpcFwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vbGliL3V0aWxzXCI7XG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vY29udGV4dFwiO1xuXG50eXBlIEZpZWxkID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgaXNQcmltYXJ5PzogYm9vbGVhbjtcbiAgaXNSZXF1aXJlZD86IGJvb2xlYW47XG4gIGlzTnVsbGFibGU/OiBib29sZWFuO1xuICBpc0ZvcmVpZ25LZXk/OiBib29sZWFuO1xuICBmb3JlaWduS2V5VG8/OiB7IHRhYmxlOiBzdHJpbmc7IGNvbHVtbjogc3RyaW5nIH07XG59O1xuXG50eXBlIFRhYmxlID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGZpZWxkczogRmllbGRbXTtcbn07XG5cbnR5cGUgU2NoZW1hVmlzdWFsaXphdGlvblByb3BzID0ge1xuICB0YWJsZXM6IFRhYmxlW107XG4gIHJlbGF0aW9uc2hpcHM6IHsgZnJvbTogc3RyaW5nOyB0bzogc3RyaW5nOyB0eXBlOiBzdHJpbmcgfVtdO1xufTtcblxuaW50ZXJmYWNlIFRhYmxlTm9kZURhdGEge1xuICBsYWJlbDogc3RyaW5nO1xuICBmaWVsZHM6IEZpZWxkW107XG59XG5cbi8vIEhlbHBlciBjb21wb25lbnQgZm9yIHJlbmRlcmluZyBhbiBpY29uIHdpdGggYSB0b29sdGlwXG5jb25zdCBJY29uV2l0aFRvb2x0aXA6IEZDPHtcbiAgaWNvbkVsZW1lbnQ6IEpTWC5FbGVtZW50O1xuICB0b29sdGlwVGV4dDogc3RyaW5nO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59PiA9ICh7IGljb25FbGVtZW50LCB0b29sdGlwVGV4dCwgY2xhc3NOYW1lIH0pID0+IChcbiAgPFRvb2x0aXA+XG4gICAgPFRvb2x0aXBUcmlnZ2VyIGFzQ2hpbGQ+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e2NsYXNzTmFtZX0+e2ljb25FbGVtZW50fTwvc3Bhbj5cbiAgICA8L1Rvb2x0aXBUcmlnZ2VyPlxuICAgIDxUb29sdGlwQ29udGVudD5cbiAgICAgIDxwPnt0b29sdGlwVGV4dH08L3A+XG4gICAgPC9Ub29sdGlwQ29udGVudD5cbiAgPC9Ub29sdGlwPlxuKTtcblxuY29uc3QgVGFibGVOb2RlOiBGQzxOb2RlUHJvcHM8VGFibGVOb2RlRGF0YT4+ID0gbWVtbygoeyBkYXRhIH0pID0+IHtcbiAgY29uc3QgeyBhY3RpdmVTY2hlbWEgfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCBpc05vVGFibGVzTm9kZSA9IGRhdGEubGFiZWwgPT09IFwiTm8gVGFibGVzIEZvdW5kXCI7XG5cbiAgLy8gVGhpcyBmdW5jdGlvbiBub3cgcmV0dXJucyBhbiBhcnJheSBvZiBpY29uIGNvbXBvbmVudHMgdG8gcmVuZGVyIGZvciBhIGZpZWxkXG4gIGNvbnN0IGdldEZpZWxkSWNvbnMgPSAoZmllbGQ6IEZpZWxkKTogSlNYLkVsZW1lbnRbXSA9PiB7XG4gICAgY29uc3QgaWNvbnM6IEpTWC5FbGVtZW50W10gPSBbXTtcblxuICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgdGhlIFwiTm8gVGFibGVzIEZvdW5kXCIgbm9kZSBtZXNzYWdlXG4gICAgaWYgKGlzTm9UYWJsZXNOb2RlICYmIGZpZWxkLnR5cGUgPT09IFwiaW5mb1wiKSB7XG4gICAgICBpY29ucy5wdXNoKFxuICAgICAgICA8SWNvbldpdGhUb29sdGlwIGtleT1cImluZm9cIiBpY29uRWxlbWVudD17PEFsZXJ0Q2lyY2xlIHNpemU9ezE2fSAvPn0gdG9vbHRpcFRleHQ9XCJJbmZvcm1hdGlvbmFsIG1lc3NhZ2VcIiAvPixcbiAgICAgICk7XG4gICAgICByZXR1cm4gaWNvbnM7XG4gICAgfVxuXG4gICAgLy8gSWNvbiBmb3IgUHJpbWFyeSBLZXlcbiAgICBpZiAoZmllbGQuaXNQcmltYXJ5KSB7XG4gICAgICBpY29ucy5wdXNoKFxuICAgICAgICA8SWNvbldpdGhUb29sdGlwXG4gICAgICAgICAga2V5PVwicGtcIlxuICAgICAgICAgIGljb25FbGVtZW50PXs8S2V5IHNpemU9ezEyfSBjbGFzc05hbWU9XCJwcy10ZXh0LXByaW1hcnlcIiAvPn1cbiAgICAgICAgICB0b29sdGlwVGV4dD1cIlByaW1hcnkgS2V5XCJcbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1iZy1tdXRlZCBwcy10ZXh0LW11dGVkLWZvcmVncm91bmQgcHMtcm91bmRlZC1mdWxsIHBzLXAtMC41IHBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLXctNSBwcy1oLTVcIlxuICAgICAgICAvPixcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChmaWVsZC5pc051bGxhYmxlKSB7XG4gICAgICAvLyBJY29uIGZvciBOdWxsYWJsZSAob25seSBpZiBub3QgYSBQcmltYXJ5IEtleSwgYXMgUEtzIHVzdWFsbHkgYXJlbid0IG51bGxhYmxlKVxuICAgICAgaWNvbnMucHVzaChcbiAgICAgICAgPEljb25XaXRoVG9vbHRpcFxuICAgICAgICAgIGtleT1cIm51bGxhYmxlXCJcbiAgICAgICAgICBpY29uRWxlbWVudD17PHNwYW4gY2xhc3NOYW1lPVwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHBzLXRleHQtY2VudGVyIHBzLWlubGluZS1ibG9jayBwcy13LTRcIj4/PC9zcGFuPn1cbiAgICAgICAgICB0b29sdGlwVGV4dD1cIk51bGxhYmxlXCJcbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1iZy1tdXRlZCBwcy10ZXh0LW11dGVkLWZvcmVncm91bmQgcHMtcm91bmRlZC1mdWxsIHBzLXAtMC41IHBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLXctNSBwcy1oLTVcIlxuICAgICAgICAvPixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gQWRkaXRpb25hbCBJY29uIGZvciBGb3JlaWduIEtleVxuICAgIGlmIChmaWVsZC5pc0ZvcmVpZ25LZXkpIHtcbiAgICAgIGNvbnN0IGZrVG9vbHRpcCA9IGZpZWxkLmZvcmVpZ25LZXlUb1xuICAgICAgICA/IGBGb3JlaWduIEtleSB0byAke2ZpZWxkLmZvcmVpZ25LZXlUby50YWJsZX0uJHtmaWVsZC5mb3JlaWduS2V5VG8uY29sdW1ufWBcbiAgICAgICAgOiBcIkZvcmVpZ24gS2V5XCI7XG4gICAgICBpY29ucy5wdXNoKFxuICAgICAgICA8SWNvbldpdGhUb29sdGlwXG4gICAgICAgICAga2V5PVwiZmtcIlxuICAgICAgICAgIGljb25FbGVtZW50PXs8S2V5IHNpemU9ezEyfSAvPn1cbiAgICAgICAgICB0b29sdGlwVGV4dD17ZmtUb29sdGlwfVxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWJnLXByaW1hcnkgcHMtdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgcHMtcm91bmRlZC1mdWxsIHBzLXAtMC41IHBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLXctNSBwcy1oLTVcIlxuICAgICAgICAvPixcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBpY29ucztcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxUb29sdGlwUHJvdmlkZXIgZGVsYXlEdXJhdGlvbj17MzAwfT5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICBcInBzLW1pbi13LVsyNTBweF0gcHMtc2hhZG93LXhsIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJvcmRlci1ib3JkZXIgcHMtYmctY2FyZFwiLFxuICAgICAgICAgIGlzTm9UYWJsZXNOb2RlICYmIFwicHMtYm9yZGVyLW9yYW5nZS00MDBcIixcbiAgICAgICAgKX1cbiAgICAgID5cbiAgICAgICAgPEhhbmRsZSB0eXBlPVwidGFyZ2V0XCIgcG9zaXRpb249e1Bvc2l0aW9uLlRvcH0gc3R5bGU9e3sgb3BhY2l0eTogMCB9fSAvPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgIFwicHMtcHgtNCBwcy1weS0zIHBzLWJvcmRlci1iIHBzLWZsZXggcHMtanVzdGlmeS1iZXR3ZWVuIHBzLWl0ZW1zLWNlbnRlclwiLFxuICAgICAgICAgICAgaXNOb1RhYmxlc05vZGUgJiYgXCJwcy1iZy1vcmFuZ2UtMTAwIGRhcms6cHMtYmctb3JhbmdlLTk1MCBwcy10ZXh0LW9yYW5nZS03MDAgZGFyazpwcy10ZXh0LW9yYW5nZS0zMDBcIixcbiAgICAgICAgICApfVxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mb250LXNlbWlib2xkXCI+e2RhdGEubGFiZWx9PC9kaXY+XG4gICAgICAgICAgeyFpc05vVGFibGVzTm9kZSAmJiAoXG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBocmVmPXtgLyN2aWV3PXRhYmxlJnRhYmxlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGRhdGEubGFiZWwpfSZzY2hlbWE9JHtlbmNvZGVVUklDb21wb25lbnQoYWN0aXZlU2NoZW1hKX1gfVxuICAgICAgICAgICAgICAvLyB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGhvdmVyOnBzLXRleHQtcHJpbWFyeVwiXG4gICAgICAgICAgICAgIHRpdGxlPXtgT3BlbiB0YWJsZSAke2RhdGEubGFiZWx9YH1cbiAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IGUuc3RvcFByb3BhZ2F0aW9uKCl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxTcXVhcmVBcnJvd1JpZ2h0IGNsYXNzTmFtZT1cInBzLXctNCBwcy1oLTRcIiAvPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXB4LTQgcHMtcHktMlwiPlxuICAgICAgICAgIHtpc05vVGFibGVzTm9kZSA/IChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTIgcHMtcHktOCBwcy10ZXh0LXNtIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPlxuICAgICAgICAgICAgICB7Z2V0RmllbGRJY29ucyh7XG4gICAgICAgICAgICAgICAgbmFtZTogXCJtZXNzYWdlXCIsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJpbmZvXCIsXG4gICAgICAgICAgICAgICAgaXNOdWxsYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgaXNQcmltYXJ5OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBpc0ZvcmVpZ25LZXk6IGZhbHNlLFxuICAgICAgICAgICAgICB9KS5tYXAoKGljb24sIGlkeCkgPT4gKFxuICAgICAgICAgICAgICAgIDxkaXYga2V5PXtpZHh9PntpY29ufTwvZGl2PlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleC0xXCI+Tm8gZGF0YWJhc2UgdGFibGVzIGZvdW5kLiBDb25uZWN0IHRvIGEgZGF0YWJhc2UgdG8gc2VlIHlvdXIgc2NoZW1hLjwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICBkYXRhLmZpZWxkcy5tYXAoKGZpZWxkLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgXCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMiBwcy1weS0yIHBzLXRleHQtc21cIixcbiAgICAgICAgICAgICAgICAgIGZpZWxkLmlzUHJpbWFyeSAmJiBcInBzLXRleHQtcHJpbWFyeVwiLFxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7LyogQ29udGFpbmVyIGZvciBpY29ucywgYWxsb3dzIG11bHRpcGxlIGljb25zIHNpZGUtYnktc2lkZSAqL31cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0xIHBzLW1pbi13LVtjYWxjKDEuMjVyZW0qMiswLjI1cmVtKV1cIj5cbiAgICAgICAgICAgICAgICAgIHtnZXRGaWVsZEljb25zKGZpZWxkKS5tYXAoKGljb25Db21wb25lbnQsIGlkeCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aWR4fT57aWNvbkNvbXBvbmVudH08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZsZXgtMSBwcy10cnVuY2F0ZSBwcy1tYXgtdy00NFwiPntmaWVsZC5uYW1lfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZCBwcy1mb250LW1vbm8gcHMtdHJ1bmNhdGVcIj57ZmllbGQudHlwZX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSlcbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPEhhbmRsZSB0eXBlPVwic291cmNlXCIgcG9zaXRpb249e1Bvc2l0aW9uLkJvdHRvbX0gc3R5bGU9e3sgb3BhY2l0eTogMCB9fSAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9Ub29sdGlwUHJvdmlkZXI+XG4gICk7XG59KTtcblxuVGFibGVOb2RlLmRpc3BsYXlOYW1lID0gXCJUYWJsZU5vZGVcIjtcblxuY29uc3Qgbm9kZVR5cGVzID0ge1xuICB0YWJsZU5vZGU6IFRhYmxlTm9kZSxcbn0gYXMgTm9kZVR5cGVzO1xuXG4vKipcbiAqIENyZWF0ZSBhIGxheW91dCBmb3IgdGhlIG5vZGVzIHdpdGggdGFibGVzIHBsYWNlZCBpbiBhIGdyaWQgZm9ybWF0aW9uXG4gKiB3aXRoIHJlbGF0ZWQgdGFibGVzIHBsYWNlZCBjbG9zZXIgdG8gZWFjaCBvdGhlci5cbiAqL1xuZnVuY3Rpb24gZ2V0TGF5b3V0ZWROb2Rlcyh0YWJsZXM6IFRhYmxlW10sIF9yZWxhdGlvbnNoaXBzOiB7IGZyb206IHN0cmluZzsgdG86IHN0cmluZzsgdHlwZTogc3RyaW5nIH1bXSk6IE5vZGVbXSB7XG4gIC8vIElmIHRoZXJlIGFyZSBvbmx5IGEgZmV3IHRhYmxlcywgdXNlIGEgc2ltcGxlIGhvcml6b250YWwgbGF5b3V0XG4gIGlmICh0YWJsZXMubGVuZ3RoIDw9IDMpIHtcbiAgICByZXR1cm4gdGFibGVzLm1hcCgodGFibGUsIGluZGV4KSA9PiAoe1xuICAgICAgaWQ6IHRhYmxlLm5hbWUsXG4gICAgICB0eXBlOiBcInRhYmxlTm9kZVwiLFxuICAgICAgZGF0YToge1xuICAgICAgICBsYWJlbDogdGFibGUubmFtZSxcbiAgICAgICAgZmllbGRzOiB0YWJsZS5maWVsZHMsXG4gICAgICB9LFxuICAgICAgcG9zaXRpb246IHsgeDogMzUwICogaW5kZXgsIHk6IDUwIH0sXG4gICAgfSkpO1xuICB9XG5cbiAgLy8gRm9yIG1vcmUgdGFibGVzLCB1c2UgYSBncmlkIGxheW91dFxuICBjb25zdCBHUklEX0dBUF9YID0gMzUwO1xuICBjb25zdCBHUklEX0dBUF9ZID0gMzAwO1xuICBjb25zdCBDT0xVTU5TID0gTWF0aC5jZWlsKE1hdGguc3FydCh0YWJsZXMubGVuZ3RoKSk7XG5cbiAgcmV0dXJuIHRhYmxlcy5tYXAoKHRhYmxlLCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IGNvbHVtbiA9IGluZGV4ICUgQ09MVU1OUztcbiAgICBjb25zdCByb3cgPSBNYXRoLmZsb29yKGluZGV4IC8gQ09MVU1OUyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHRhYmxlLm5hbWUsXG4gICAgICB0eXBlOiBcInRhYmxlTm9kZVwiLFxuICAgICAgZGF0YToge1xuICAgICAgICBsYWJlbDogdGFibGUubmFtZSxcbiAgICAgICAgZmllbGRzOiB0YWJsZS5maWVsZHMsXG4gICAgICB9LFxuICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgeDogY29sdW1uICogR1JJRF9HQVBfWCxcbiAgICAgICAgeTogcm93ICogR1JJRF9HQVBfWSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTY2hlbWFWaXN1YWxpemF0aW9uKHsgdGFibGVzLCByZWxhdGlvbnNoaXBzIH06IFNjaGVtYVZpc3VhbGl6YXRpb25Qcm9wcykge1xuICAvLyBDcmVhdGUgYSBtYXAgb2Ygbm9kZSBJRHMgZm9yIHF1aWNrIGxvb2t1cFxuICBjb25zdCBub2RlSWRTZXQgPSB1c2VNZW1vKCgpID0+IG5ldyBTZXQodGFibGVzLm1hcCgodGFibGUpID0+IHRhYmxlLm5hbWUpKSwgW3RhYmxlc10pO1xuXG4gIC8vIEZpbHRlciBvdXQgcmVsYXRpb25zaGlwcyB3aGVyZSBlaXRoZXIgc291cmNlIG9yIHRhcmdldCBkb2Vzbid0IGV4aXN0XG4gIGNvbnN0IHZhbGlkUmVsYXRpb25zaGlwcyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gcmVsYXRpb25zaGlwcy5maWx0ZXIoKHJlbCkgPT4gbm9kZUlkU2V0LmhhcyhyZWwuZnJvbSkgJiYgbm9kZUlkU2V0LmhhcyhyZWwudG8pKSxcbiAgICBbcmVsYXRpb25zaGlwcywgbm9kZUlkU2V0XSxcbiAgKTtcblxuICAvLyBDcmVhdGUgYW4gb3JnYW5pemVkIGxheW91dCBmb3Igbm9kZXNcbiAgY29uc3QgaW5pdGlhbE5vZGVzID0gdXNlTWVtbygoKSA9PiBnZXRMYXlvdXRlZE5vZGVzKHRhYmxlcywgdmFsaWRSZWxhdGlvbnNoaXBzKSwgW3RhYmxlcywgdmFsaWRSZWxhdGlvbnNoaXBzXSk7XG5cbiAgLy8gQ3JlYXRlIGVkZ2VzIHdpdGggYXBwcm9wcmlhdGUgc3R5bGluZ1xuICBjb25zdCBpbml0aWFsRWRnZXM6IEVkZ2VbXSA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIHZhbGlkUmVsYXRpb25zaGlwcy5tYXAoKHJlbCwgaW5kZXgpID0+ICh7XG4gICAgICAgIGlkOiBgZSR7aW5kZXh9YCxcbiAgICAgICAgc291cmNlOiByZWwuZnJvbSxcbiAgICAgICAgdGFyZ2V0OiByZWwudG8sXG4gICAgICAgIGFuaW1hdGVkOiB0cnVlLFxuICAgICAgICBsYWJlbDogcmVsLnR5cGUsXG4gICAgICAgIHR5cGU6IFwic21vb3Roc3RlcFwiLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgIHN0cm9rZTogXCJoc2wodmFyKC0tcHJpbWFyeSkpXCIsXG4gICAgICAgICAgc3Ryb2tlV2lkdGg6IDEsXG4gICAgICAgICAgc3Ryb2tlRGFzaGFycmF5OiBcIjUgNVwiLFxuICAgICAgICB9LFxuICAgICAgICBsYWJlbFN0eWxlOiB7XG4gICAgICAgICAgZmlsbDogXCJoc2wodmFyKC0tcHJpbWFyeSkpXCIsXG4gICAgICAgICAgZm9udFNpemU6IDEyLFxuICAgICAgICB9LFxuICAgICAgfSkpLFxuICAgIFt2YWxpZFJlbGF0aW9uc2hpcHNdLFxuICApO1xuXG4gIGNvbnN0IFtub2Rlcywgc2V0Tm9kZXMsIG9uTm9kZXNDaGFuZ2VdID0gdXNlTm9kZXNTdGF0ZShpbml0aWFsTm9kZXMpO1xuICBjb25zdCBbZWRnZXMsIHNldEVkZ2VzLCBvbkVkZ2VzQ2hhbmdlXSA9IHVzZUVkZ2VzU3RhdGUoaW5pdGlhbEVkZ2VzKTtcblxuICAvLyBVcGRhdGUgbm9kZXMgd2hlbiB0YWJsZXMgY2hhbmdlXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0Tm9kZXMoZ2V0TGF5b3V0ZWROb2Rlcyh0YWJsZXMsIHZhbGlkUmVsYXRpb25zaGlwcykpO1xuICB9LCBbdGFibGVzLCB2YWxpZFJlbGF0aW9uc2hpcHMsIHNldE5vZGVzXSk7XG5cbiAgLy8gVXBkYXRlIGVkZ2VzIHdoZW4gcmVsYXRpb25zaGlwcyBjaGFuZ2VcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRFZGdlcyhcbiAgICAgIHZhbGlkUmVsYXRpb25zaGlwcy5tYXAoKHJlbCwgaW5kZXgpID0+ICh7XG4gICAgICAgIGlkOiBgZSR7aW5kZXh9YCxcbiAgICAgICAgc291cmNlOiByZWwuZnJvbSxcbiAgICAgICAgdGFyZ2V0OiByZWwudG8sXG4gICAgICAgIGFuaW1hdGVkOiB0cnVlLFxuICAgICAgICBsYWJlbDogcmVsLnR5cGUsXG4gICAgICAgIHR5cGU6IFwic21vb3Roc3RlcFwiLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgIHN0cm9rZTogXCJoc2wodmFyKC0tcHJpbWFyeSkpXCIsXG4gICAgICAgICAgc3Ryb2tlV2lkdGg6IDEsXG4gICAgICAgICAgc3Ryb2tlRGFzaGFycmF5OiBcIjUgNVwiLFxuICAgICAgICB9LFxuICAgICAgICBsYWJlbFN0eWxlOiB7XG4gICAgICAgICAgZmlsbDogXCJoc2wodmFyKC0tcHJpbWFyeSkpXCIsXG4gICAgICAgICAgZm9udFNpemU6IDEyLFxuICAgICAgICB9LFxuICAgICAgfSkpLFxuICAgICk7XG4gIH0sIFt2YWxpZFJlbGF0aW9uc2hpcHMsIHNldEVkZ2VzXSk7XG5cbiAgY29uc3Qgb25Db25uZWN0ID0gdXNlQ2FsbGJhY2soKHBhcmFtczogRWRnZSB8IENvbm5lY3Rpb24pID0+IHNldEVkZ2VzKChlZHMpID0+IGFkZEVkZ2UocGFyYW1zLCBlZHMpKSwgW3NldEVkZ2VzXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy13LWZ1bGwgcHMtaC1mdWxsIHBzLWJnLWNhcmRcIj5cbiAgICAgICAgPFJlYWN0Rmxvd1xuICAgICAgICAgIG5vZGVzPXtub2Rlc31cbiAgICAgICAgICBlZGdlcz17ZWRnZXN9XG4gICAgICAgICAgb25Ob2Rlc0NoYW5nZT17b25Ob2Rlc0NoYW5nZX1cbiAgICAgICAgICBvbkVkZ2VzQ2hhbmdlPXtvbkVkZ2VzQ2hhbmdlfVxuICAgICAgICAgIG9uQ29ubmVjdD17b25Db25uZWN0fVxuICAgICAgICAgIGNvbm5lY3Rpb25MaW5lVHlwZT17Q29ubmVjdGlvbkxpbmVUeXBlLlNtb290aFN0ZXB9XG4gICAgICAgICAgbm9kZVR5cGVzPXtub2RlVHlwZXN9XG4gICAgICAgICAgZml0Vmlld1xuICAgICAgICAgIGZpdFZpZXdPcHRpb25zPXt7IHBhZGRpbmc6IDAuMiB9fVxuICAgICAgICA+XG4gICAgICAgICAgPEJhY2tncm91bmQgY2xhc3NOYW1lPVwicHMtYmctbXV0ZWRcIiBnYXA9ezE2fSAvPlxuICAgICAgICAgIDxDb250cm9sc1xuICAgICAgICAgICAgc2hvd0ludGVyYWN0aXZlPXtmYWxzZX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cIiFwcy1iZy1baHNsKHZhcigtLXN0dWRpby1iYWNrZ3JvdW5kKSldICFwcy1ib3JkZXItW2hzbCh2YXIoLS1zdHVkaW8tYm9yZGVyKSldICFwcy10ZXh0LVtoc2wodmFyKC0tc3R1ZGlvLWZvcmVncm91bmQpKV1cIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPE1pbmlNYXAgcGFubmFibGUgLz5cbiAgICAgICAgPC9SZWFjdEZsb3c+XG4gICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyBLZXkgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5cbmltcG9ydCB7IHVzZVNjaGVtYVZpc3VhbGl6YXRpb24gfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlLXNjaGVtYS12aXN1YWxpemF0aW9uXCI7XG5pbXBvcnQgeyBTdHVkaW9IZWFkZXIgfSBmcm9tIFwiLi4vU3R1ZGlvSGVhZGVyXCI7XG5pbXBvcnQgeyBTY2hlbWFWaXN1YWxpemF0aW9uIH0gZnJvbSBcIi4vVmlzdWFsaXNlclwiO1xuXG5leHBvcnQgZnVuY3Rpb24gU2NoZW1hVmlldygpIHtcbiAgY29uc3QgeyB0YWJsZXMsIHJlbGF0aW9uc2hpcHMgfSA9IHVzZVNjaGVtYVZpc3VhbGl6YXRpb24oKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8U3R1ZGlvSGVhZGVyIC8+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXAtNCBwcy1mbGV4IHBzLWdhcC02IHBzLWl0ZW1zLWNlbnRlciBwcy1ib3JkZXItYiBwcy1iZy1jYXJkXCI+XG4gICAgICAgIHsvKiBMZWdlbmQgSXRlbTogUHJpbWFyeSBLZXkgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1iZy1tdXRlZCBwcy10ZXh0LW11dGVkLWZvcmVncm91bmQgcHMtcm91bmRlZC1mdWxsIHBzLXAtMC41IHBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLXctNSBwcy1oLTVcIj5cbiAgICAgICAgICAgIDxLZXkgc2l6ZT17MTJ9IGNsYXNzTmFtZT1cInBzLXRleHQtcHJpbWFyeVwiIC8+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+UHJpbWFyeSBLZXk8L3A+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIHsvKiBMZWdlbmQgSXRlbTogTnVsbGFibGUgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1iZy1tdXRlZCBwcy10ZXh0LW11dGVkLWZvcmVncm91bmQgcHMtcm91bmRlZC1mdWxsIHBzLXAtMC41IHBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLXctNSBwcy1oLTVcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLXRleHQtY2VudGVyIHBzLWxlYWRpbmctbm9uZVwiPj88L3NwYW4+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+TnVsbGFibGU8L3A+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIHsvKiBMZWdlbmQgSXRlbTogRm9yZWlnbiBLZXkgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1iZy1wcmltYXJ5IHBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIHBzLXJvdW5kZWQtZnVsbCBwcy1wLTAuNSBwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlciBwcy13LTUgcHMtaC01XCI+XG4gICAgICAgICAgICA8S2V5IHNpemU9ezEyfSAvPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8cCBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPkZvcmVpZ24gS2V5PC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy13LWZ1bGwgcHMtaC1bY2FsYygxMDAlLXRoZW1lKHNwYWNlLjI4KSldXCI+XG4gICAgICAgIDxTY2hlbWFWaXN1YWxpemF0aW9uIHRhYmxlcz17dGFibGVzfSByZWxhdGlvbnNoaXBzPXtyZWxhdGlvbnNoaXBzfSAvPlxuICAgICAgPC9kaXY+XG4gICAgPC8+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QUFVLEVBQ3JHLEdBQ0YsRUFDRixDQUVKIiwKICAibmFtZXMiOiBbIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAibnVxc19leHBvcnRzIiwgIl9fZXhwb3J0IiwgImtleU1hcCIsICJ1cmxLZXlzIiwgInVzZVF1ZXJ5U3RhdGUiLCAidXNlUXVlcnlTdGF0ZXMiLCAiX19yZUV4cG9ydCIsICJudXFzX2V4cG9ydHMiLCAibnVxc19zdGFyIiwgInVzZVF1ZXJ5U3RhdGVPcmlnaW5hbCIsICJ1c2VRdWVyeVN0YXRlc09yaWdpbmFsIiwgImtleU1hcCIsICJ1cmxLZXlzIiwgIl9CUkFORF9TWU1CT0wiLCAidXNlUXVlcnlTdGF0ZSIsICJrZXkiLCAib3B0aW9ucyIsICJ1c2VRdWVyeVN0YXRlcyIsICJjbHN4IiwgIkNMQVNTX1BBUlRfU0VQQVJBVE9SIiwgImNyZWF0ZUNsYXNzR3JvdXBVdGlscyIsICJjb25maWciLCAiY2xhc3NNYXAiLCAiY3JlYXRlQ2xhc3NNYXAiLCAiY29uZmxpY3RpbmdDbGFzc0dyb3VwcyIsICJjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnMiLCAiZ2V0Q2xhc3NHcm91cElkIiwgImNsYXNzTmFtZSIsICJjbGFzc1BhcnRzIiwgInNwbGl0IiwgImxlbmd0aCIsICJzaGlmdCIsICJnZXRHcm91cFJlY3Vyc2l2ZSIsICJnZXRHcm91cElkRm9yQXJiaXRyYXJ5UHJvcGVydHkiLCAiZ2V0Q29uZmxpY3RpbmdDbGFzc0dyb3VwSWRzIiwgImNsYXNzR3JvdXBJZCIsICJoYXNQb3N0Zml4TW9kaWZpZXIiLCAiY29uZmxpY3RzIiwgImNsYXNzUGFydE9iamVjdCIsICJjdXJyZW50Q2xhc3NQYXJ0IiwgIm5leHRDbGFzc1BhcnRPYmplY3QiLCAibmV4dFBhcnQiLCAiZ2V0IiwgImNsYXNzR3JvdXBGcm9tTmV4dENsYXNzUGFydCIsICJzbGljZSIsICJ1bmRlZmluZWQiLCAidmFsaWRhdG9ycyIsICJjbGFzc1Jlc3QiLCAiam9pbiIsICJmaW5kIiwgInZhbGlkYXRvciIsICJhcmJpdHJhcnlQcm9wZXJ0eVJlZ2V4IiwgInRlc3QiLCAiYXJiaXRyYXJ5UHJvcGVydHlDbGFzc05hbWUiLCAiZXhlYyIsICJwcm9wZXJ0eSIsICJzdWJzdHJpbmciLCAiaW5kZXhPZiIsICJ0aGVtZSIsICJwcmVmaXgiLCAiTWFwIiwgInByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMiLCAiZ2V0UHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcyIsICJPYmplY3QiLCAiZW50cmllcyIsICJjbGFzc0dyb3VwcyIsICJmb3JFYWNoIiwgImNsYXNzR3JvdXAiLCAicHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseSIsICJjbGFzc0RlZmluaXRpb24iLCAiY2xhc3NQYXJ0T2JqZWN0VG9FZGl0IiwgImdldFBhcnQiLCAiaXNUaGVtZUdldHRlciIsICJwdXNoIiwgImtleSIsICJwYXRoIiwgImN1cnJlbnRDbGFzc1BhcnRPYmplY3QiLCAicGF0aFBhcnQiLCAiaGFzIiwgInNldCIsICJmdW5jIiwgImNsYXNzR3JvdXBFbnRyaWVzIiwgIm1hcCIsICJwcmVmaXhlZENsYXNzR3JvdXAiLCAiZnJvbUVudHJpZXMiLCAidmFsdWUiLCAiY3JlYXRlTHJ1Q2FjaGUiLCAibWF4Q2FjaGVTaXplIiwgImNhY2hlU2l6ZSIsICJjYWNoZSIsICJwcmV2aW91c0NhY2hlIiwgInVwZGF0ZSIsICJJTVBPUlRBTlRfTU9ESUZJRVIiLCAiY3JlYXRlUGFyc2VDbGFzc05hbWUiLCAic2VwYXJhdG9yIiwgImV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lIiwgImlzU2VwYXJhdG9yU2luZ2xlQ2hhcmFjdGVyIiwgImZpcnN0U2VwYXJhdG9yQ2hhcmFjdGVyIiwgInNlcGFyYXRvckxlbmd0aCIsICJwYXJzZUNsYXNzTmFtZSIsICJtb2RpZmllcnMiLCAiYnJhY2tldERlcHRoIiwgIm1vZGlmaWVyU3RhcnQiLCAicG9zdGZpeE1vZGlmaWVyUG9zaXRpb24iLCAiaW5kZXgiLCAiY3VycmVudENoYXJhY3RlciIsICJiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyIiwgImhhc0ltcG9ydGFudE1vZGlmaWVyIiwgInN0YXJ0c1dpdGgiLCAiYmFzZUNsYXNzTmFtZSIsICJtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uIiwgInNvcnRNb2RpZmllcnMiLCAic29ydGVkTW9kaWZpZXJzIiwgInVuc29ydGVkTW9kaWZpZXJzIiwgIm1vZGlmaWVyIiwgInNvcnQiLCAiY3JlYXRlQ29uZmlnVXRpbHMiLCAiU1BMSVRfQ0xBU1NFU19SRUdFWCIsICJtZXJnZUNsYXNzTGlzdCIsICJjbGFzc0xpc3QiLCAiY29uZmlnVXRpbHMiLCAiY2xhc3NHcm91cHNJbkNvbmZsaWN0IiwgImNsYXNzTmFtZXMiLCAidHJpbSIsICJyZXN1bHQiLCAib3JpZ2luYWxDbGFzc05hbWUiLCAiQm9vbGVhbiIsICJ2YXJpYW50TW9kaWZpZXIiLCAibW9kaWZpZXJJZCIsICJjbGFzc0lkIiwgImluY2x1ZGVzIiwgImNvbmZsaWN0R3JvdXBzIiwgImkiLCAiZ3JvdXAiLCAidHdKb2luIiwgImFyZ3VtZW50IiwgInJlc29sdmVkVmFsdWUiLCAic3RyaW5nIiwgImFyZ3VtZW50cyIsICJ0b1ZhbHVlIiwgIm1peCIsICJrIiwgImNyZWF0ZVRhaWx3aW5kTWVyZ2UiLCAiY3JlYXRlQ29uZmlnRmlyc3QiLCAiY3JlYXRlQ29uZmlnUmVzdCIsICJjYWNoZUdldCIsICJjYWNoZVNldCIsICJmdW5jdGlvblRvQ2FsbCIsICJpbml0VGFpbHdpbmRNZXJnZSIsICJyZWR1Y2UiLCAicHJldmlvdXNDb25maWciLCAiY3JlYXRlQ29uZmlnQ3VycmVudCIsICJ0YWlsd2luZE1lcmdlIiwgImNhY2hlZFJlc3VsdCIsICJhcHBseSIsICJmcm9tVGhlbWUiLCAidGhlbWVHZXR0ZXIiLCAiYXJiaXRyYXJ5VmFsdWVSZWdleCIsICJmcmFjdGlvblJlZ2V4IiwgInN0cmluZ0xlbmd0aHMiLCAiU2V0IiwgInRzaGlydFVuaXRSZWdleCIsICJsZW5ndGhVbml0UmVnZXgiLCAiY29sb3JGdW5jdGlvblJlZ2V4IiwgInNoYWRvd1JlZ2V4IiwgImltYWdlUmVnZXgiLCAiaXNMZW5ndGgiLCAiaXNOdW1iZXIiLCAiaXNBcmJpdHJhcnlMZW5ndGgiLCAiZ2V0SXNBcmJpdHJhcnlWYWx1ZSIsICJpc0xlbmd0aE9ubHkiLCAiTnVtYmVyIiwgImlzTmFOIiwgImlzQXJiaXRyYXJ5TnVtYmVyIiwgImlzSW50ZWdlciIsICJpc1BlcmNlbnQiLCAiZW5kc1dpdGgiLCAiaXNBcmJpdHJhcnlWYWx1ZSIsICJpc1RzaGlydFNpemUiLCAic2l6ZUxhYmVscyIsICJpc0FyYml0cmFyeVNpemUiLCAiaXNOZXZlciIsICJpc0FyYml0cmFyeVBvc2l0aW9uIiwgImltYWdlTGFiZWxzIiwgImlzQXJiaXRyYXJ5SW1hZ2UiLCAiaXNJbWFnZSIsICJpc0FyYml0cmFyeVNoYWRvdyIsICJpc1NoYWRvdyIsICJpc0FueSIsICJsYWJlbCIsICJ0ZXN0VmFsdWUiLCAiZ2V0RGVmYXVsdENvbmZpZyIsICJjb2xvcnMiLCAiZnJvbVRoZW1lIiwgInNwYWNpbmciLCAiYmx1ciIsICJicmlnaHRuZXNzIiwgImJvcmRlckNvbG9yIiwgImJvcmRlclJhZGl1cyIsICJib3JkZXJTcGFjaW5nIiwgImJvcmRlcldpZHRoIiwgImNvbnRyYXN0IiwgImdyYXlzY2FsZSIsICJodWVSb3RhdGUiLCAiaW52ZXJ0IiwgImdhcCIsICJncmFkaWVudENvbG9yU3RvcHMiLCAiZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnMiLCAiaW5zZXQiLCAibWFyZ2luIiwgIm9wYWNpdHkiLCAicGFkZGluZyIsICJzYXR1cmF0ZSIsICJzY2FsZSIsICJzZXBpYSIsICJza2V3IiwgInNwYWNlIiwgInRyYW5zbGF0ZSIsICJnZXRPdmVyc2Nyb2xsIiwgImdldE92ZXJmbG93IiwgImdldFNwYWNpbmdXaXRoQXV0b0FuZEFyYml0cmFyeSIsICJpc0FyYml0cmFyeVZhbHVlIiwgImdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5IiwgImdldExlbmd0aFdpdGhFbXB0eUFuZEFyYml0cmFyeSIsICJpc0xlbmd0aCIsICJpc0FyYml0cmFyeUxlbmd0aCIsICJnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSIsICJpc051bWJlciIsICJnZXRQb3NpdGlvbnMiLCAiZ2V0TGluZVN0eWxlcyIsICJnZXRCbGVuZE1vZGVzIiwgImdldEFsaWduIiwgImdldFplcm9BbmRFbXB0eSIsICJnZXRCcmVha3MiLCAiZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5IiwgImNhY2hlU2l6ZSIsICJzZXBhcmF0b3IiLCAidGhlbWUiLCAiaXNBbnkiLCAiaXNUc2hpcnRTaXplIiwgImlzUGVyY2VudCIsICJjbGFzc0dyb3VwcyIsICJhc3BlY3QiLCAiY29udGFpbmVyIiwgImNvbHVtbnMiLCAiYm94IiwgImRpc3BsYXkiLCAiZmxvYXQiLCAiY2xlYXIiLCAiaXNvbGF0aW9uIiwgIm9iamVjdCIsICJvdmVyZmxvdyIsICJvdmVyc2Nyb2xsIiwgInBvc2l0aW9uIiwgInN0YXJ0IiwgImVuZCIsICJ0b3AiLCAicmlnaHQiLCAiYm90dG9tIiwgImxlZnQiLCAidmlzaWJpbGl0eSIsICJ6IiwgImlzSW50ZWdlciIsICJiYXNpcyIsICJmbGV4IiwgImdyb3ciLCAic2hyaW5rIiwgIm9yZGVyIiwgImNvbCIsICJzcGFuIiwgInJvdyIsICJqdXN0aWZ5IiwgImNvbnRlbnQiLCAiaXRlbXMiLCAic2VsZiIsICJwIiwgInB4IiwgInB5IiwgInBzIiwgInBlIiwgInB0IiwgInByIiwgInBiIiwgInBsIiwgIm0iLCAibXgiLCAibXkiLCAibXMiLCAibWUiLCAibXQiLCAibXIiLCAibWIiLCAibWwiLCAidyIsICJzY3JlZW4iLCAiaCIsICJzaXplIiwgInRleHQiLCAiZm9udCIsICJpc0FyYml0cmFyeU51bWJlciIsICJ0cmFja2luZyIsICJsZWFkaW5nIiwgImxpc3QiLCAicGxhY2Vob2xkZXIiLCAiZGVjb3JhdGlvbiIsICJpbmRlbnQiLCAiYWxpZ24iLCAid2hpdGVzcGFjZSIsICJicmVhayIsICJoeXBoZW5zIiwgImJnIiwgImlzQXJiaXRyYXJ5UG9zaXRpb24iLCAicmVwZWF0IiwgImlzQXJiaXRyYXJ5U2l6ZSIsICJpc0FyYml0cmFyeUltYWdlIiwgImZyb20iLCAidmlhIiwgInRvIiwgInJvdW5kZWQiLCAiYm9yZGVyIiwgImRpdmlkZSIsICJvdXRsaW5lIiwgInJpbmciLCAic2hhZG93IiwgImlzQXJiaXRyYXJ5U2hhZG93IiwgImZpbHRlciIsICJ0YWJsZSIsICJjYXB0aW9uIiwgInRyYW5zaXRpb24iLCAiZHVyYXRpb24iLCAiZWFzZSIsICJkZWxheSIsICJhbmltYXRlIiwgInRyYW5zZm9ybSIsICJyb3RhdGUiLCAib3JpZ2luIiwgImFjY2VudCIsICJhcHBlYXJhbmNlIiwgImN1cnNvciIsICJjYXJldCIsICJyZXNpemUiLCAic2Nyb2xsIiwgInNuYXAiLCAidG91Y2giLCAic2VsZWN0IiwgImZpbGwiLCAic3Ryb2tlIiwgInNyIiwgImNvbmZsaWN0aW5nQ2xhc3NHcm91cHMiLCAiY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzIiwgIm1lcmdlQ29uZmlncyIsICJiYXNlQ29uZmlnIiwgInByZWZpeCIsICJleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSIsICJleHRlbmQiLCAib3ZlcnJpZGUiLCAib3ZlcnJpZGVQcm9wZXJ0eSIsICJjb25maWdLZXkiLCAib3ZlcnJpZGVDb25maWdQcm9wZXJ0aWVzIiwgImtleSIsICJtZXJnZUNvbmZpZ1Byb3BlcnRpZXMiLCAiYmFzZU9iamVjdCIsICJvdmVycmlkZUtleSIsICJvdmVycmlkZVZhbHVlIiwgInVuZGVmaW5lZCIsICJvdmVycmlkZU9iamVjdCIsICJtZXJnZU9iamVjdCIsICJtZXJnZVZhbHVlIiwgImNvbmNhdCIsICJleHRlbmRUYWlsd2luZE1lcmdlIiwgImNvbmZpZ0V4dGVuc2lvbiIsICJjcmVhdGVDb25maWciLCAiY3JlYXRlVGFpbHdpbmRNZXJnZSIsICJ0d01lcmdlIiwgImV4dGVuZFRhaWx3aW5kTWVyZ2UiLCAiY24iLCAiaW5wdXRzIiwgImNsc3giLCAidXNlSXNNdXRhdGluZyIsICJ0b0tlYmFiQ2FzZSIsICJzdHJpbmciLCAibWVyZ2VDbGFzc2VzIiwgImNsYXNzZXMiLCAiY2xhc3NOYW1lIiwgImluZGV4IiwgImFycmF5IiwgImRlZmF1bHRBdHRyaWJ1dGVzIiwgIkljb24iLCAiZm9yd2FyZFJlZiIsICJjb2xvciIsICJzaXplIiwgInN0cm9rZVdpZHRoIiwgImFic29sdXRlU3Ryb2tlV2lkdGgiLCAiY2xhc3NOYW1lIiwgImNoaWxkcmVuIiwgImljb25Ob2RlIiwgInJlc3QiLCAicmVmIiwgImNyZWF0ZUVsZW1lbnQiLCAiZGVmYXVsdEF0dHJpYnV0ZXMiLCAibWVyZ2VDbGFzc2VzIiwgInRhZyIsICJhdHRycyIsICJjcmVhdGVMdWNpZGVJY29uIiwgImljb25OYW1lIiwgImljb25Ob2RlIiwgIkNvbXBvbmVudCIsICJmb3J3YXJkUmVmIiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJyZWYiLCAiY3JlYXRlRWxlbWVudCIsICJJY29uIiwgIm1lcmdlQ2xhc3NlcyIsICJ0b0tlYmFiQ2FzZSIsICJBcnJvd0Rvd25XaWRlTmFycm93IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQXJyb3dSaWdodCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkFycm93VXBXaWRlTmFycm93IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hlY2siLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uRG93biIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNoZXZyb25MZWZ0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hldnJvblJpZ2h0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hldnJvblVwIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hldnJvbnNMZWZ0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hldnJvbnNSaWdodCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNpcmNsZUFsZXJ0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2lyY2xlSGVscCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNpcmNsZSIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNvcHkiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDb3JuZXJEb3duTGVmdCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkZpbHRlciIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkdyaXBWZXJ0aWNhbCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIktleVJvdW5kIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiS2V5IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiTWF4aW1pemUiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJNaW5pbWl6ZSIsICJjcmVhdGVMdWNpZGVJY29uIiwgIk1vdmVEb3duIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiTW92ZVVwIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUGFuZWxMZWZ0Q2xvc2UiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJQYW5lbExlZnRPcGVuIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUGluT2ZmIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUGluIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUmVmcmVzaEN3IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiU3F1YXJlQXJyb3dSaWdodCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIlRhYmxlMiIsICJjcmVhdGVMdWNpZGVJY29uIiwgIlgiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJBbmltYXRlTnVtYmVyIiwgInVzZUVmZmVjdCIsICJ1c2VTdGF0ZSIsICJ0b2FzdCIsICJjdmEiLCAianN4IiwgImJhZGdlVmFyaWFudHMiLCAiY3ZhIiwgIkJhZGdlIiwgImNsYXNzTmFtZSIsICJ2YXJpYW50IiwgInByb3BzIiwgImNuIiwgIlNsb3QiLCAiY3ZhIiwgIlJlYWN0IiwgImpzeCIsICJidXR0b25WYXJpYW50cyIsICJjdmEiLCAiQnV0dG9uIiwgImNsYXNzTmFtZSIsICJ2YXJpYW50IiwgInNpemUiLCAiYXNDaGlsZCIsICJwcm9wcyIsICJyZWYiLCAiU2xvdCIsICJjbiIsICJQb3BvdmVyUHJpbWl0aXZlIiwgIlJlYWN0IiwgImpzeCIsICJQb3BvdmVyIiwgIlBvcG92ZXJUcmlnZ2VyIiwgIlBvcG92ZXJDb250ZW50IiwgImNsYXNzTmFtZSIsICJhbGlnbiIsICJzaWRlT2Zmc2V0IiwgInByb3BzIiwgInJlZiIsICJqc3giLCAiY24iLCAiUmVhY3QiLCAianN4IiwgIlRhYmxlIiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiVGFibGVIZWFkZXIiLCAiVGFibGVCb2R5IiwgIlRhYmxlRm9vdGVyIiwgIlRhYmxlUm93IiwgIlRhYmxlSGVhZCIsICJUYWJsZUNlbGwiLCAiVGFibGVDYXB0aW9uIiwgInVzZU11dGF0aW9uIiwgInVzZVF1ZXJ5Q2xpZW50IiwgIlF1ZXJ5Q2xpZW50IiwgIlF1ZXJ5Q2xpZW50UHJvdmlkZXIiLCAiUmVhY3QiLCAib25saW5lTWFuYWdlciIsICJ1c2VRdWVyeUNsaWVudCIsICJUYW5zdGFja1F1ZXJ5RGV2dG9vbHMiLCAiI2NsaWVudCIsICIjb25saW5lTWFuYWdlciIsICIjcXVlcnlGbGF2b3IiLCAiI3ZlcnNpb24iLCAiI2lzTW91bnRlZCIsICIjc3R5bGVOb25jZSIsICIjc2hhZG93RE9NVGFyZ2V0IiwgIiNidXR0b25Qb3NpdGlvbiIsICIjcG9zaXRpb24iLCAiI2luaXRpYWxJc09wZW4iLCAiI2Vycm9yVHlwZXMiLCAiI0NvbXBvbmVudCIsICIjZGlzcG9zZSIsICJjb25maWciLCAiY2xpZW50IiwgInF1ZXJ5Rmxhdm9yIiwgInZlcnNpb24iLCAib25saW5lTWFuYWdlciIsICJidXR0b25Qb3NpdGlvbiIsICJwb3NpdGlvbiIsICJpbml0aWFsSXNPcGVuIiwgImVycm9yVHlwZXMiLCAic3R5bGVOb25jZSIsICJzaGFkb3dET01UYXJnZXQiLCAiY3JlYXRlU2lnbmFsIiwgImlzT3BlbiIsICJlbCIsICJkaXNwb3NlIiwgInJlbmRlciIsICJfc2VsZiQiLCAiYnRuUG9zaXRpb24iLCAicG9zIiwgImVycm9ycyIsICJxdWVyeUNsaWVudCIsICJEZXZ0b29scyIsICJsYXp5IiwgInNldHVwU3R5bGVTaGVldCIsICJjcmVhdGVDb21wb25lbnQiLCAibWVyZ2VQcm9wcyIsICJUYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbCIsICIjb25DbG9zZSIsICJvbkNsb3NlIiwgImpzeCIsICJSZWFjdFF1ZXJ5RGV2dG9vbHMiLCAicHJvcHMiLCAicXVlcnlDbGllbnQiLCAidXNlUXVlcnlDbGllbnQiLCAicmVmIiwgImJ1dHRvblBvc2l0aW9uIiwgInBvc2l0aW9uIiwgImluaXRpYWxJc09wZW4iLCAiZXJyb3JUeXBlcyIsICJzdHlsZU5vbmNlIiwgInNoYWRvd0RPTVRhcmdldCIsICJkZXZ0b29scyIsICJUYW5zdGFja1F1ZXJ5RGV2dG9vbHMiLCAib25saW5lTWFuYWdlciIsICJSZWFjdCIsICJvbmxpbmVNYW5hZ2VyIiwgInVzZVF1ZXJ5Q2xpZW50IiwgImpzeCIsICJSZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbCIsICJwcm9wcyIsICJxdWVyeUNsaWVudCIsICJ1c2VRdWVyeUNsaWVudCIsICJyZWYiLCAiZXJyb3JUeXBlcyIsICJzdHlsZU5vbmNlIiwgInNoYWRvd0RPTVRhcmdldCIsICJkZXZ0b29scyIsICJUYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbCIsICJvbmxpbmVNYW5hZ2VyIiwgIlJlYWN0UXVlcnlEZXZ0b29scyIsICJSZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbCIsICJjcmVhdGVDb250ZXh0IiwgInVzZUNvbnRleHQiLCAidXNlTWVtbyIsICJ1c2VTdGF0ZSIsICJ0b2FzdCIsICJTb25uZXIiLCAianN4IiwgIlRvYXN0ZXIiLCAicHJvcHMiLCAiY3JlYXRlQWRhcHRlclByb3ZpZGVyIiwgInVzZUVmZmVjdCIsICJ1c2VTdGF0ZSIsICJ1c2VIYXNoQWRhcHRlciIsICJyYXdIYXNoIiwgImhhc2hQYXJhbXMiLCAic2V0SGFzaFBhcmFtcyIsICJ1cGRhdGVVcmwiLCAidXBkYXRlZCIsICJoaXN0b3J5IiwgInBhdGhuYW1lIiwgInNlYXJjaCIsICJoYXNoIiwgInVybCIsICJnZXRTZWFyY2hQYXJhbXNTbmFwc2hvdCIsICJyYXciLCAiaGFuZGxlSGFzaENoYW5nZSIsICJOdXFzSGFzaEFkYXB0ZXIiLCAidXNlRWZmZWN0IiwgInVzZVF1ZXJ5IiwgIklOSVRJQUxfREFUQV9VUERBVEVEX0FUIiwgInVzZUludHJvc3BlY3Rpb24iLCAiYWRhcHRlciIsICJ1c2VTdHVkaW8iLCAidXNlUXVlcnkiLCAic2lnbmFsIiwgImVycm9yIiwgImludHJvc3BlY3Rpb24iLCAiY3R4IiwgIlVSTERlZmF1bHRzSGFuZGxlciIsICJfdGFibGUiLCAic2V0VGFibGUiLCAidXNlUXVlcnlTdGF0ZSIsICJfc2NoZW1hIiwgInNldFNjaGVtYSIsICJfdmlldyIsICJzZXRWaWV3IiwgImludHJvc3BlY3Rpb24iLCAiaXNJbnRyb3NwZWN0aW9uTG9hZGluZyIsICJ1c2VJbnRyb3NwZWN0aW9uIiwgInVzZUVmZmVjdCIsICJpc1RhYmxlU2V0IiwgImlzU2NoZW1hU2V0IiwgImlzVmlld1NldCIsICJmaXJzdFNjaGVtYU5hbWUiLCAiZmlyc3RUYWJsZSIsICJqc3giLCAianN4cyIsICJxdWVyeUNsaWVudCIsICJRdWVyeUNsaWVudCIsICJTdHVkaW9Db250ZXh0IiwgImNyZWF0ZUNvbnRleHQiLCAiU3R1ZGlvQ29udGV4dFByb3ZpZGVyIiwgInByb3BzIiwgImNoaWxkcmVuIiwgIm90aGVyUHJvcHMiLCAiYWN0aXZlVGFibGUiLCAic2V0QWN0aXZlVGFibGUiLCAidXNlU3RhdGUiLCAiYWN0aXZlU2NoZW1hIiwgInNldEFjdGl2ZVNjaGVtYSIsICJpc0Z1bGxzY3JlZW4iLCAic2V0SXNGdWxsc2NyZWVuIiwgImlzTmF2aWdhdGlvbk9wZW4iLCAic2V0SXNOYXZpZ2F0aW9uT3BlbiIsICJvbkVycm9yIiwgImVycm9yIiwgInRvYXN0IiwgImVtaXRUZWxlbWV0cnlFdmVudCIsICJ1c2VNZW1vIiwgInRvZ2dsZUZ1bGxzY3JlZW4iLCAicHJldiIsICJ0b2dnbGVOYXZpZ2F0aW9uIiwgIlF1ZXJ5Q2xpZW50UHJvdmlkZXIiLCAiUmVhY3RRdWVyeURldnRvb2xzMiIsICJUb2FzdGVyIiwgIk51cXNIYXNoQWRhcHRlciIsICJVUkxEZWZhdWx0c0hhbmRsZXIiLCAidXNlU3R1ZGlvIiwgImNvbnRleHQiLCAidXNlQ29udGV4dCIsICJnZXRSb3dJZCIsICJyb3ciLCAidGFibGUiLCAiaWQiLCAiaW5mZXJSb3dGaWx0ZXIiLCAiYWRkUm93SWRUb1JvdyIsICJhZGRSb3dJZFRvUmVzdWx0IiwgInJlc3VsdCIsICJyb3dzIiwgInVzZUFjdGl2ZVRhYmxlSW5zZXJ0IiwgImFjdGl2ZVRhYmxlIiwgImFkYXB0ZXIiLCAidXNlU3R1ZGlvIiwgInF1ZXJ5Q2xpZW50IiwgInVzZVF1ZXJ5Q2xpZW50IiwgInNjaGVtYSIsICJ0YWJsZSIsICJ1c2VNdXRhdGlvbiIsICJyb3dzIiwgImVycm9yIiwgInJlc3VsdCIsICJhZGRSb3dJZFRvUmVzdWx0IiwgIm5ld0RhdGEiLCAib2xkRGF0YSIsICJ1c2VRdWVyeSIsICJ1c2VBY3RpdmVUYWJsZVF1ZXJ5IiwgInByb3BzIiwgInBhZ2VJbmRleCIsICJwYWdlU2l6ZSIsICJzb3J0T3JkZXIiLCAiZmlsdGVyIiwgImFjdGl2ZVRhYmxlIiwgImFkYXB0ZXIiLCAidXNlU3R1ZGlvIiwgInVzZVF1ZXJ5IiwgInByZXZpb3VzRGF0YSIsICJwcmV2aW91c1F1ZXJ5IiwgInNjaGVtYSIsICJ0YWJsZSIsICJzaWduYWwiLCAiZXJyb3IiLCAicmVzdWx0cyIsICJhZGRSb3dJZFRvUmVzdWx0IiwgIml0ZW0iLCAidXNlTXV0YXRpb24iLCAidXNlUXVlcnlDbGllbnQiLCAidXNlQWN0aXZlVGFibGVVcGRhdGUiLCAiYWN0aXZlVGFibGUiLCAiYWRhcHRlciIsICJvbkVycm9yIiwgInVzZVN0dWRpbyIsICJxdWVyeUNsaWVudCIsICJ1c2VRdWVyeUNsaWVudCIsICJxdWVyeUtleVByZWZpeCIsICJ1c2VNdXRhdGlvbiIsICJwYXJhbXMiLCAiZXJyb3IiLCAicmVzdWx0IiwgImNoYW5nZXMiLCAicm93IiwgIm92ZXJ3cml0ZUNhY2hlZFJvdyIsICJjaGFuZ2VkUm93IiwgInJvd0ZpbHRlciIsICJpbmZlclJvd0ZpbHRlciIsICJjYWNoZWRSb3ciLCAiY29sdW1uTmFtZSIsICJ2YWx1ZSIsICJvcmlnaW5hbFZhbHVlcyIsICJkZXRhaWxzIiwgInVuY2hhbmdlZFJvdyIsICJfX3BzX3VwZGF0ZWRfYXRfXyIsICJnZXRGaW5kZXJGbiIsICJ0YWJsZSIsICJ1cGRhdGVyRm4iLCAiZmluZGVyIiwgImNhY2hlZFJlc3VsdCIsICJjYWNoZWRSb3dzIiwgImNhY2hlZFJvd0luZGV4IiwgIm5ld1JvdyIsICJ1c2VFZmZlY3QiLCAidXNlTWVtbyIsICJ1c2VTdGF0ZSIsICJzaG9ydCIsICJkZWZhdWx0RmlsdGVyIiwgInNob3J0IiwgImNvdW50RmlsdGVyc1JlY3Vyc2l2ZSIsICJmaWx0ZXJHcm91cCIsICJjb3VudCIsICJmaWx0ZXIiLCAidXNlRmlsdGVyaW5nIiwgImZpbHRlclBhcmFtIiwgInNldEZpbHRlclBhcmFtIiwgInVzZVF1ZXJ5U3RhdGUiLCAiYXBwbGllZEZpbHRlciIsICJ1c2VNZW1vIiwgInNldEFwcGxpZWRGaWx0ZXIiLCAiZWRpdGluZ0ZpbHRlciIsICJzZXRFZGl0aW5nRmlsdGVyIiwgInVzZVN0YXRlIiwgInVzZUVmZmVjdCIsICJ0b3RhbEVkaXRpbmdGaWx0ZXJzIiwgInVzZUlzTXV0YXRpbmciLCAidXNlSXNJbnNlcnRpbmciLCAibXV0YXRpb25LZXkiLCAidXNlQ2FsbGJhY2siLCAiREVGQVVMVF9QQUdFX1NJWkUiLCAicGFnaW5hdGlvblBhcnNlcnMiLCAidXNlUGFnaW5hdGlvbiIsICJwYWdlSW5kZXgiLCAicGFnZVNpemUiLCAic2V0UGFnaW5hdGlvbiIsICJ1c2VRdWVyeVN0YXRlcyIsICJzZXRQYWdpbmF0aW9uU3RhdGUiLCAidXNlQ2FsbGJhY2siLCAidXBkYXRlck9yVmFsdWUiLCAib2xkIiwgIm5ld1N0YXRlIiwgInVzZUVmZmVjdCIsICJ1c2VTdGF0ZSIsICJ1c2VNdXRhdGlvbiIsICJ1c2VRdWVyeUNsaWVudCIsICJ1c2VBY3RpdmVUYWJsZURlbGV0ZSIsICJhY3RpdmVUYWJsZSIsICJhZGFwdGVyIiwgInVzZVN0dWRpbyIsICJxdWVyeUNsaWVudCIsICJ1c2VRdWVyeUNsaWVudCIsICJzY2hlbWEiLCAidGFibGUiLCAidXNlTXV0YXRpb24iLCAicm93cyIsICJlcnJvciIsICJyZXN1bHQiLCAidXNlU2VsZWN0aW9uIiwgImRhdGEiLCAiYWN0aXZlVGFibGUiLCAib25FcnJvciIsICJ1c2VTdHVkaW8iLCAicGFnaW5hdGlvblN0YXRlIiwgInVzZVBhZ2luYXRpb24iLCAicm93U2VsZWN0aW9uU3RhdGUiLCAic2V0Um93U2VsZWN0aW9uU3RhdGUiLCAidXNlU3RhdGUiLCAiaXNTZWxlY3RpbmciLCAibXV0YXRlIiwgInVzZUFjdGl2ZVRhYmxlRGVsZXRlIiwgInVzZUVmZmVjdCIsICJkZWxldGVTZWxlY3Rpb24iLCAicm93cyIsICJyb3ciLCAidXNlRWZmZWN0IiwgInVzZVN0YXRlIiwgInVzZVNvcnRpbmciLCAic29ydFBhcmFtIiwgInNldFNvcnRQYXJhbSIsICJ1c2VRdWVyeVN0YXRlIiwgInBhcnNlU29ydGluZyIsICJpdGVtIiwgImNvbHVtbiIsICJkaXJlY3Rpb24iLCAiZSIsICJzb3J0aW5nU3RhdGUiLCAic2V0U29ydGluZ1N0YXRlIiwgInVzZVN0YXRlIiwgInVzZUVmZmVjdCIsICJuZXdTb3J0aW5nU3RhdGUiLCAibmV3U3RhdGUiLCAicmVzb2x2ZWRTdGF0ZSIsICJzb3J0U3RyaW5nIiwgImlzVmFsaWRFbGVtZW50IiwgIkNvbnRleHRNZW51UHJpbWl0aXZlIiwgIlJlYWN0IiwgImpzeCIsICJqc3hzIiwgIkNvbnRleHRNZW51IiwgIkNvbnRleHRNZW51VHJpZ2dlciIsICJDb250ZXh0TWVudVN1YlRyaWdnZXIiLCAiY2xhc3NOYW1lIiwgImluc2V0IiwgImNoaWxkcmVuIiwgInByb3BzIiwgInJlZiIsICJqc3hzIiwgImNuIiwgImpzeCIsICJDaGV2cm9uUmlnaHQiLCAiQ29udGV4dE1lbnVTdWJDb250ZW50IiwgIkNvbnRleHRNZW51Q29udGVudCIsICJDb250ZXh0TWVudUl0ZW0iLCAiQ29udGV4dE1lbnVDaGVja2JveEl0ZW0iLCAiY2hlY2tlZCIsICJDaGVjayIsICJDb250ZXh0TWVudVJhZGlvSXRlbSIsICJDaXJjbGUiLCAiQ29udGV4dE1lbnVMYWJlbCIsICJDb250ZXh0TWVudVNlcGFyYXRvciIsICJDb250ZXh0TWVudVNob3J0Y3V0IiwgImpzeCIsICJqc3hzIiwgIkRhdGFHcmlkQ2VsbENvbnRleHRNZW51IiwgInByb3BzIiwgImNoaWxkcmVuIiwgIkNvbnRleHRNZW51IiwgIkNvbnRleHRNZW51VHJpZ2dlciIsICJDb250ZXh0TWVudUNvbnRlbnQiLCAiQ29udGV4dE1lbnVJdGVtIiwgImNvbnRlbnQiLCAiZXh0cmFjdFRleHRDb250ZW50IiwgImVycm9yIiwgIkNvcHkiLCAibm9kZSIsICJpc1ZhbGlkRWxlbWVudCIsICJqc3giLCAiQ2VsbCIsICJwcm9wcyIsICJjaGlsZHJlbiIsICJjbGFzc05hbWUiLCAicmVmIiwgInN0eWxlIiwgImZvcndhcmRlZFByb3BzIiwgIlRhYmxlQ2VsbCIsICJjbiIsICJEYXRhR3JpZENlbGxDb250ZXh0TWVudSIsICJpc09iamVjdFR5cGUiLCAianN4IiwgIkJvb2xlYW5DZWxsIiwgInByb3BzIiwgInZhbHVlIiwgIkZyYWdtZW50IiwgImpzeCIsICJEYXRlQ2VsbCIsICJwcm9wcyIsICJ2YWx1ZSIsICJGcmFnbWVudCIsICJqc3giLCAiRW1wdHlDZWxsIiwgIl9wcm9wcyIsICJGcmFnbWVudCIsICJqc3giLCAiRW51bUNlbGwiLCAicHJvcHMiLCAidmFsdWUiLCAiRnJhZ21lbnQiLCAianN4IiwgIkpTT05DZWxsIiwgInByb3BzIiwgInZhbHVlIiwgImpzeCIsICJOdWxsQ2VsbCIsICJfcHJvcHMiLCAianN4IiwgIk51bWVyaWNDZWxsIiwgInByb3BzIiwgInZhbHVlIiwgIkZyYWdtZW50IiwgImpzeCIsICJSYXdDZWxsIiwgInByb3BzIiwgInZhbHVlIiwgIkZyYWdtZW50IiwgImpzeCIsICJUaW1lQ2VsbCIsICJwcm9wcyIsICJ2YWx1ZSIsICJqc3giLCAiZ2V0Q2VsbCIsICJjZWxsIiwgImNvbHVtbiIsICJ2YWx1ZSIsICJFbXB0eUNlbGwiLCAiTnVsbENlbGwiLCAiZ3JvdXAiLCAiaXNBcnJheSIsICJKU09OQ2VsbCIsICJSYXdDZWxsIiwgIkVudW1DZWxsIiwgIkJvb2xlYW5DZWxsIiwgIkRhdGVDZWxsIiwgIlRpbWVDZWxsIiwgIk51bWVyaWNDZWxsIiwgImlzT2JqZWN0VHlwZSIsICJDaGVja2JveFByaW1pdGl2ZSIsICJSZWFjdCIsICJqc3giLCAiQ2hlY2tib3giLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgInJlZiIsICJjbiIsICJDaGVjayIsICJqc3giLCAiU2VsZWN0SGVhZGVyQ2VsbCIsICJwcm9wcyIsICJ0YWJsZSIsICJyZWFkb25seSIsICJDaGVja2JveCIsICJ2YWx1ZSIsICJqc3giLCAiU2VsZWN0Um93Q2VsbCIsICJwcm9wcyIsICJyb3ciLCAicmVhZG9ubHkiLCAiQ2hlY2tib3giLCAiUG9wb3ZlclByaW1pdGl2ZSIsICJSZWFjdCIsICJqc3giLCAiUG9wb3ZlckNlbGxDb250ZXh0IiwgIlBvcG92ZXJDZWxsIiwgImNoaWxkcmVuIiwgInByb3BzIiwgIm9wZW4iLCAic2V0T3BlbiIsICJQb3BvdmVyQ2VsbFRyaWdnZXIiLCAib25Eb3VibGVDbGljayIsICJjbGFzc05hbWUiLCAicmVmIiwgInRyaWdnZXJSZWYiLCAibm9kZSIsICJjbiIsICJQb3BvdmVyQ2VsbENvbnRlbnQiLCAiYWxpZ24iLCAic2lkZU9mZnNldCIsICJldmVudCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJhY3Rpb25zIiwgImNvbnRleHQiLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAiaGFuZGxlS2V5RG93biIsICJqc3giLCAianN4cyIsICJXcml0ZWFibGVDZWxsIiwgInByb3BzIiwgImNlbGxDb21wb25lbnQiLCAiaW5wdXRDb21wb25lbnQiLCAibGlua0NvbXBvbmVudCIsICJjb250YWluZXJQcm9wcyIsICJQb3BvdmVyQ2VsbCIsICJQb3BvdmVyQ2VsbFRyaWdnZXIiLCAiQ2VsbCIsICJQb3BvdmVyQ2VsbENvbnRlbnQiLCAiY24iLCAiY2xvc2VzdENlbnRlciIsICJEbmRDb250ZXh0IiwgIkRyYWdPdmVybGF5IiwgIktleWJvYXJkU2Vuc29yIiwgIlBvaW50ZXJTZW5zb3IiLCAidXNlU2Vuc29yIiwgInVzZVNlbnNvcnMiLCAiYXJyYXlNb3ZlIiwgIlNvcnRhYmxlQ29udGV4dCIsICJzb3J0YWJsZUtleWJvYXJkQ29vcmRpbmF0ZXMiLCAidXNlU29ydGFibGUiLCAidmVydGljYWxMaXN0U29ydGluZ1N0cmF0ZWd5IiwgIkNTUyIsICJtb3Rpb24iLCAiQW5pbWF0ZU51bWJlciIsICJ1c2VNZW1vIiwgInVzZVN0YXRlIiwgIkZyYWdtZW50IiwgImNyZWF0ZVBvcnRhbCIsICJzaG9ydCIsICJjb2VyY2VUb1ZhbHVlIiwgImNvbHVtbiIsICJvcGVyYXRvciIsICJ2YWx1ZSIsICJkYXRhVHlwZUdyb3VwIiwgImNvZXJjZVRvU3RyaW5nIiwgIkRyb3Bkb3duTWVudVByaW1pdGl2ZSIsICJSZWFjdCIsICJqc3giLCAianN4cyIsICJEcm9wZG93bk1lbnUiLCAiRHJvcGRvd25NZW51VHJpZ2dlciIsICJEcm9wZG93bk1lbnVTdWJUcmlnZ2VyIiwgImNsYXNzTmFtZSIsICJpbnNldCIsICJjaGlsZHJlbiIsICJwcm9wcyIsICJyZWYiLCAianN4cyIsICJjbiIsICJqc3giLCAiQ2hldnJvblJpZ2h0IiwgIkRyb3Bkb3duTWVudVN1YkNvbnRlbnQiLCAiRHJvcGRvd25NZW51Q29udGVudCIsICJzaWRlT2Zmc2V0IiwgIkRyb3Bkb3duTWVudUl0ZW0iLCAiRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtIiwgImNoZWNrZWQiLCAiQ2hlY2siLCAiRHJvcGRvd25NZW51UmFkaW9JdGVtIiwgIkNpcmNsZSIsICJEcm9wZG93bk1lbnVMYWJlbCIsICJEcm9wZG93bk1lbnVTZXBhcmF0b3IiLCAiRHJvcGRvd25NZW51U2hvcnRjdXQiLCAiUmVhY3QiLCAianN4IiwgIklucHV0IiwgImNsYXNzTmFtZSIsICJ0eXBlIiwgInByb3BzIiwgInJlZiIsICJjbiIsICJTZWxlY3RQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgImpzeHMiLCAiU2VsZWN0IiwgIlNlbGVjdFZhbHVlIiwgIlNlbGVjdFRyaWdnZXIiLCAiY2xhc3NOYW1lIiwgImNoaWxkcmVuIiwgImxhYmVsIiwgInByb3BzIiwgInJlZiIsICJqc3hzIiwgImNuIiwgImpzeCIsICJDaGV2cm9uRG93biIsICJTZWxlY3RTY3JvbGxVcEJ1dHRvbiIsICJDaGV2cm9uVXAiLCAiU2VsZWN0U2Nyb2xsRG93bkJ1dHRvbiIsICJTZWxlY3RDb250ZW50IiwgInBvc2l0aW9uIiwgIlNlbGVjdExhYmVsIiwgIlNlbGVjdEl0ZW0iLCAiQ2hlY2siLCAiU2VsZWN0U2VwYXJhdG9yIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkxlYWRpbmdPcGVyYXRvclNlbGVjdCIsICJ2YWx1ZSIsICJvblZhbHVlQ2hhbmdlIiwgImRpc2FibGVkIiwgInRyaWdnZXJDbGFzc05hbWUiLCAiU2VsZWN0IiwgIlNlbGVjdFRyaWdnZXIiLCAiU2VsZWN0VmFsdWUiLCAiU2VsZWN0Q29udGVudCIsICJTZWxlY3RJdGVtIiwgIkRyYWdnYWJsZUZpbHRlckl0ZW1QcmV2aWV3IiwgImFjdGl2ZUlkIiwgIml0ZW1zIiwgInRhYmxlIiwgImFjdGl2ZUl0ZW0iLCAiaXRlbSIsICJsZWFkaW5nT3BlcmF0b3JWYWx1ZSIsICJzaG93TGVhZGluZ09wRm9yT3ZlcmxheSIsICJhY3RpdmVJdGVtSW5kZXgiLCAicHJldmlvdXNJdGVtIiwgIkZpbHRlckNvbmRpdGlvbiIsICJGaWx0ZXJHcm91cENvbXBvbmVudCIsICJGaWx0ZXJMaXN0SXRlbXMiLCAicGFyZW50R3JvdXBJZCIsICJvblVwZGF0ZUl0ZW0iLCAib25EZWxldGVJdGVtIiwgIm9uUmVvcmRlckl0ZW1zIiwgImFjdGl2ZURyYWdJZCIsICJvbkRyYWdTdGFydCIsICJvbkRyYWdFbmRTaWduYWwiLCAic29ydGFibGVJdGVtSWRzIiwgInVzZU1lbW8iLCAic2Vuc29ycyIsICJ1c2VTZW5zb3JzIiwgInVzZVNlbnNvciIsICJQb2ludGVyU2Vuc29yIiwgIktleWJvYXJkU2Vuc29yIiwgInNvcnRhYmxlS2V5Ym9hcmRDb29yZGluYXRlcyIsICJEbmRDb250ZXh0IiwgImNsb3Nlc3RDZW50ZXIiLCAiZXZlbnQiLCAiYWN0aXZlIiwgIm92ZXIiLCAib2xkSW5kZXgiLCAibmV3SW5kZXgiLCAiU29ydGFibGVDb250ZXh0IiwgInZlcnRpY2FsTGlzdFNvcnRpbmdTdHJhdGVneSIsICJjdXJyZW50RmlsdGVySXRlbSIsICJpbmRleCIsICJzaG93TGVhZGluZ09wIiwgImxlYWRpbmdPcFZhbCIsICJvbkxlYWRpbmdPcENoYW5nZUZuIiwgImlzTGVhZGluZ09wVGFyZ2V0TGFzdCIsICJwcmV2SXRlbSIsICJuZXdWYWx1ZSIsICJ1cGRhdGVkUHJldkl0ZW0iLCAiU29ydGFibGVGaWx0ZXJJdGVtIiwgInVwZGF0ZWRGaWx0ZXIiLCAiY3JlYXRlUG9ydGFsIiwgIkRyYWdPdmVybGF5IiwgImZpbHRlciIsICJvblVwZGF0ZSIsICJvbkRlbGV0ZSIsICJwYXJlbnREbmRJZCIsICJzaG93TGVhZGluZ09wZXJhdG9yIiwgIm9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlIiwgImlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdCIsICJhdHRyaWJ1dGVzIiwgImxpc3RlbmVycyIsICJzZXROb2RlUmVmIiwgInRyYW5zZm9ybSIsICJ0cmFuc2l0aW9uIiwgImlzRHJhZ2dpbmciLCAidXNlU29ydGFibGUiLCAic3R5bGUiLCAiQ1NTIiwgImRyYWdIYW5kbGVQcm9wcyIsICJoYW5kbGVDb2x1bW5DaGFuZ2UiLCAiaGFuZGxlT3BlcmF0b3JDaGFuZ2UiLCAiaGFuZGxlVmFsdWVDaGFuZ2UiLCAiZSIsICJyYXdWYWx1ZSIsICJjb2x1bW5JbmZvIiwgImNvZXJjZVRvVmFsdWUiLCAiZWRpdGVkVmFsdWUiLCAic2V0RWRpdGVkVmFsdWUiLCAidXNlU3RhdGUiLCAiY29lcmNlVG9TdHJpbmciLCAibW90aW9uIiwgIkdyaXBWZXJ0aWNhbCIsICJjb2x1bW4iLCAiSW5wdXQiLCAiQnV0dG9uIiwgIlgiLCAiZ3JvdXAiLCAiaXNSb290IiwgImlzRXhwYW5kZWQiLCAic2V0SXNFeHBhbmRlZCIsICJzZXRBY3RpdmVEcmFnSWQiLCAiaGFuZGxlQWRkRmlsdGVyIiwgIm5ld0ZpbHRlciIsICJzaG9ydCIsICJoYW5kbGVBZGRHcm91cCIsICJuZXdHcm91cCIsICJ1cGRhdGVJdGVtSW5Hcm91cCIsICJ1cGRhdGVkRmlsdGVyT3JHcm91cCIsICJuZXdGaWx0ZXJzIiwgImRlbGV0ZUl0ZW1Gcm9tR3JvdXAiLCAiaGFuZGxlRHJhZ1N0YXJ0IiwgImhhbmRsZURyYWdFbmRTaWduYWwiLCAiaGFuZGxlUmVvcmRlckl0ZW1zIiwgInJlb3JkZXJlZEZpbHRlcnMiLCAiYXJyYXlNb3ZlIiwgInJlbmRlckdyb3VwQ29udGVudCIsICJjbiIsICJDaGV2cm9uRG93biIsICJDaGV2cm9uUmlnaHQiLCAiQmFkZ2UiLCAiQW5pbWF0ZU51bWJlciIsICJEcm9wZG93bk1lbnUiLCAiRHJvcGRvd25NZW51VHJpZ2dlciIsICJDaXJjbGVIZWxwIiwgIkRyb3Bkb3duTWVudUNvbnRlbnQiLCAiUXVlcnlWaXN1YWxpemVyIiwgImlzQW5kR3JvdXBPcGVuIiwgImYiLCAiaSIsICJyZXN1bHQiLCAiaXNMYXN0IiwgIm9wZXJhdG9yIiwgIkZpbHRlclRyZWUiLCAic2V0RmlsdGVyIiwgInNldEFwcGxpZWRGaWx0ZXIiLCAiRG5kQ29udGV4dCIsICJNb3VzZVNlbnNvciIsICJ1c2VTZW5zb3IiLCAidXNlU2Vuc29ycyIsICJhcnJheU1vdmUiLCAiaG9yaXpvbnRhbExpc3RTb3J0aW5nU3RyYXRlZ3kiLCAiU29ydGFibGVDb250ZXh0IiwgImdldENvcmVSb3dNb2RlbCIsICJ1c2VSZWFjdFRhYmxlIiwgImdldEl0ZW0iLCAia2V5IiwgIml0ZW1WYWx1ZSIsICJsb2NhbFN0b3JhZ2UiLCAiSlNPTiIsICJwYXJzZSIsICJ1c2VMb2NhbFN0b3JhZ2UiLCAiZGVmYXVsdFZhbHVlIiwgInZhbHVlIiwgInNldFZhbHVlIiwgIlJlYWN0IiwgInVzZVN0YXRlIiwgInVzZUVmZmVjdCIsICJpbml0aWFsVmFsdWUiLCAic2V0dGVyIiwgInVzZUNhbGxiYWNrIiwgInVwZGF0ZXIiLCAib2xkIiwgIm5ld1ZhbCIsICJzZXRJdGVtIiwgInN0cmluZ2lmeSIsICJkZWZhdWx0VGhlbWUiLCAiYmFja2dyb3VuZCIsICJiYWNrZ3JvdW5kQWx0IiwgImZvcmVncm91bmQiLCAiZ3JheSIsICJncmF5QWx0IiwgImlucHV0QmFja2dyb3VuZENvbG9yIiwgImlucHV0VGV4dENvbG9yIiwgInN1Y2Nlc3MiLCAiZGFuZ2VyIiwgImFjdGl2ZSIsICJ3YXJuaW5nIiwgIlRoZW1lQ29udGV4dCIsICJjcmVhdGVDb250ZXh0IiwgIlRoZW1lUHJvdmlkZXIiLCAiX3JlZiIsICJ0aGVtZSIsICJyZXN0IiwgImNyZWF0ZUVsZW1lbnQiLCAiUHJvdmlkZXIiLCAiX2V4dGVuZHMiLCAidXNlVGhlbWUiLCAidXNlQ29udGV4dCIsICJ1c2VNZWRpYVF1ZXJ5IiwgInF1ZXJ5IiwgImlzTWF0Y2giLCAic2V0SXNNYXRjaCIsICJ3aW5kb3ciLCAibWF0Y2hNZWRpYSIsICJtYXRjaGVzIiwgIm1hdGNoZXIiLCAib25DaGFuZ2UiLCAiYWRkTGlzdGVuZXIiLCAicmVtb3ZlTGlzdGVuZXIiLCAiaXNTZXJ2ZXIiLCAic3R5bGVkIiwgInR5cGUiLCAibmV3U3R5bGVzIiwgInF1ZXJpZXMiLCAiZm9yd2FyZFJlZiIsICJyZWYiLCAic3R5bGUiLCAibWVkaWFTdHlsZXMiLCAiT2JqZWN0IiwgImVudHJpZXMiLCAicmVkdWNlIiwgImN1cnJlbnQiLCAiX3JlZjIiLCAidXNlSXNNb3VudGVkIiwgIm1vdW50ZWRSZWYiLCAidXNlUmVmIiwgImlzTW91bnRlZCIsICJQYW5lbCIsICJfcHJvcHMiLCAiZm9udFNpemUiLCAiZm9udEZhbWlseSIsICJkaXNwbGF5IiwgImJhY2tncm91bmRDb2xvciIsICJjb2xvciIsICJmbGV4RGlyZWN0aW9uIiwgImZsZXgiLCAib3ZlcmZsb3ciLCAiaGVpZ2h0IiwgIihtYXgtd2lkdGg6IDcwMHB4KSIsICJib3JkZXJUb3AiLCAiQnV0dG9uIiwgInByb3BzIiwgImFwcGVhcmFuY2UiLCAiZm9udFdlaWdodCIsICJib3JkZXIiLCAiYm9yZGVyUmFkaXVzIiwgInBhZGRpbmciLCAib3BhY2l0eSIsICJkaXNhYmxlZCIsICJ1bmRlZmluZWQiLCAiY3Vyc29yIiwgImxpbmVIZWlnaHQiLCAiV2Via2l0QXBwZWFyYW5jZSIsICJiYWNrZ3JvdW5kSW1hZ2UiLCAiYmFja2dyb3VuZFJlcGVhdCIsICJiYWNrZ3JvdW5kUG9zaXRpb24iLCAiYmFja2dyb3VuZFNpemUiLCAiRW50cnkiLCAib3V0bGluZSIsICJ3b3JkQnJlYWsiLCAiTGFiZWwiLCAiVmFsdWUiLCAiU3ViRW50cmllcyIsICJtYXJnaW5MZWZ0IiwgInBhZGRpbmdMZWZ0IiwgImJvcmRlckxlZnQiLCAiSW5mbyIsICJFeHBhbmRlciIsICJleHBhbmRlZCIsICJ0cmFuc2l0aW9uIiwgInRyYW5zZm9ybSIsICJEZWZhdWx0UmVuZGVyZXIiLCAiaGFuZGxlRW50cnkiLCAibGFiZWwiLCAic3ViRW50cmllcyIsICJzdWJFbnRyeVBhZ2VzIiwgInRvZ2dsZSIsICJwYWdlU2l6ZSIsICJyZW5kZXJlciIsICJ2YWx1ZVNuYXBzaG90IiwgInNldFZhbHVlU25hcHNob3QiLCAiZXhwYW5kZWRQYWdlcyIsICJzZXRFeHBhbmRlZFBhZ2VzIiwgInJlZnJlc2hWYWx1ZVNuYXBzaG90IiwgImxlbmd0aCIsICJGcmFnbWVudCIsICJvbkNsaWNrIiwgIlN0cmluZyIsICJ0b0xvd2VyQ2FzZSIsICJtYXAiLCAiZW50cnkiLCAiaW5kZXgiLCAiaW5jbHVkZXMiLCAiZmlsdGVyIiwgImQiLCAiRXhwbG9yZXIiLCAiZGVmYXVsdEV4cGFuZGVkIiwgImdldE93blByb3BlcnR5TmFtZXMiLCAiX3JlZjMiLCAiZGVwdGgiLCAic2V0RXhwYW5kZWQiLCAic2V0IiwgInBhdGgiLCAibWFrZVByb3BlcnR5IiwgInN1YiIsICJuZXdQYXRoIiwgImNvbmNhdCIsICJzdWJEZWZhdWx0RXhwYW5kZWQiLCAic3ViUGF0aCIsICJBcnJheSIsICJpc0FycmF5IiwgImkiLCAiU3ltYm9sIiwgIml0ZXJhdG9yIiwgImZyb20iLCAidmFsIiwgIl9yZWY0IiwgInB1c2giLCAic2xpY2UiLCAiTG9nbyIsICJ3aWR0aCIsICJ2aWV3Qm94IiwgInZlcnNpb24iLCAic3Ryb2tlIiwgInN0cm9rZVdpZHRoIiwgImZpbGwiLCAiZmlsbFJ1bGUiLCAiaWQiLCAiUmVhY3RUYWJsZURldnRvb2xzIiwgImluaXRpYWxJc09wZW4iLCAidGFibGUiLCAicGFuZWxQcm9wcyIsICJ0b2dnbGVCdXR0b25Qcm9wcyIsICJjb250YWluZXJFbGVtZW50IiwgIkNvbnRhaW5lciIsICJyb290UmVmIiwgInBhbmVsUmVmIiwgImlzT3BlbiIsICJzZXRJc09wZW4iLCAicGFuZWxTdHlsZSIsICJvdGhlclBhbmVsUHJvcHMiLCAidG9nZ2xlQnV0dG9uU3R5bGUiLCAib25Ub2dnbGVDbGljayIsICJvdGhlclRvZ2dsZUJ1dHRvblByb3BzIiwgImNsYXNzTmFtZSIsICJSZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCIsICJtYXhIZWlnaHQiLCAiZSIsICJtYXJnaW4iLCAiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiLCAiX19odG1sIiwgIm1pbkhlaWdodCIsICJib3JkZXJSaWdodCIsICJqdXN0aWZ5Q29udGVudCIsICJhbGlnbkl0ZW1zIiwgIm1hcmdpblJpZ2h0IiwgImZsZXhXcmFwIiwgIm92ZXJmbG93WSIsICJnZXRTdGF0ZSIsICJnZXRBbGxDb2x1bW5zIiwgImdldENvcmVSb3dNb2RlbCIsICJnZXRGaWx0ZXJlZFJvd01vZGVsIiwgImdldFNvcnRlZFJvd01vZGVsIiwgImdldEdyb3VwZWRSb3dNb2RlbCIsICJnZXRFeHBhbmRlZFJvd01vZGVsIiwgIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAidXNlRWZmZWN0IiwgInVzZU1lbW8iLCAidXNlU3RhdGUiLCAianN4IiwgIlNrZWxldG9uIiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJjbiIsICJqc3giLCAiRGF0YUdyaWRMb2FkaW5nQmFyIiwgImNsYXNzTmFtZSIsICJjbiIsICJqc3giLCAianN4cyIsICJEYXRhR3JpZFBhZ2luYXRpb24iLCAicHJvcHMiLCAidGFibGUiLCAidmFyaWFudCIsICJwYWdlSW5kZXgiLCAicGFnZUNvdW50IiwgIkJ1dHRvbiIsICJDaGV2cm9uc0xlZnQiLCAiQ2hldnJvbkxlZnQiLCAiSW5wdXQiLCAiZSIsICJDaGV2cm9uUmlnaHQiLCAiQ2hldnJvbnNSaWdodCIsICJnZXRDb2x1bW5QaW5uaW5nU3R5bGVzIiwgImNvbHVtbiIsICJraW5kIiwgImlzUGlubmVkIiwgImlzTGVmdFBpbm5lZCIsICJpc1JpZ2h0UGlubmVkIiwgImNuIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkRhdGFHcmlkIiwgInByb3BzIiwgImNvbHVtbkRlZnMiLCAiZ2V0QmVmb3JlUm93cyIsICJpc0xvYWRpbmciLCAiaXNQcm9jZXNzaW5nIiwgIm9uUGFnaW5hdGlvbkNoYW5nZSIsICJvblJvd1NlbGVjdGlvbkNoYW5nZSIsICJvblNvcnRpbmdDaGFuZ2UiLCAicGFnZUNvdW50IiwgInBhZ2luYXRpb25TdGF0ZSIsICJyb3dzIiwgInJvd1NlbGVjdGlvblN0YXRlIiwgInNvcnRpbmdTdGF0ZSIsICJjb2x1bW5PcmRlciIsICJzZXRDb2x1bW5PcmRlciIsICJ1c2VTdGF0ZSIsICJjb2x1bW5QaW5uaW5nIiwgInNldENvbHVtblBpbm5pbmciLCAiY29sdW1uU2l6aW5nIiwgInNldENvbHVtblNpemluZyIsICJzb3J0aW5nIiwgInVzZU1lbW8iLCAidG9Tb3J0aW5nU3RhdGUiLCAiZGlzcGxheUxvYWRlciIsICJ1c2VFZmZlY3QiLCAiYWNjZXNzb3JLZXkiLCAiaGFuZGxlRHJhZ0VuZCIsICJhY3RpdmUiLCAib3ZlciIsICJvcmRlciIsICJhY3RpdmVJbmRleCIsICJvdmVySW5kZXgiLCAiYXJyYXlNb3ZlIiwgIm1vdXNlU2Vuc29yIiwgInVzZVNlbnNvciIsICJNb3VzZVNlbnNvciIsICJzZW5zb3JzIiwgInVzZVNlbnNvcnMiLCAidGFibGUiLCAidXNlUmVhY3RUYWJsZSIsICJnZXRDb3JlUm93TW9kZWwiLCAiX19wc19yb3dpZCIsICJ1cGRhdGVyT3JWYWx1ZSIsICJvbGQiLCAidG9Tb3J0T3JkZXJJdGVtcyIsICJSZWFjdFRhYmxlRGV2dG9vbHMiLCAiRGF0YUdyaWRMb2FkaW5nQmFyIiwgIkRuZENvbnRleHQiLCAiVGFibGUiLCAiVGFibGVIZWFkZXIiLCAiaGVhZGVyR3JvdXAiLCAiVGFibGVSb3ciLCAiU29ydGFibGVDb250ZXh0IiwgImhlYWRlciIsICJob3Jpem9udGFsTGlzdFNvcnRpbmdTdHJhdGVneSIsICJpIiwgIkhlYWRlciIsICJnZXRDb2x1bW5QaW5uaW5nU3R5bGVzIiwgIlRhYmxlQm9keSIsICJyb3ciLCAiY24iLCAiY2VsbCIsICJDZWxsIiwgIlRhYmxlQ2VsbCIsICJTa2VsZXRvbiIsICJEYXRhR3JpZFBhZ2luYXRpb24iLCAiQW5pbWF0ZVByZXNlbmNlIiwgIm1vdGlvbiIsICJmcm9tIiwgIml0ZW0iLCAidXNlU29ydGFibGUiLCAiQ1NTIiwgImpzeCIsICJEYXRhR3JpZERyYWdnYWJsZUhlYWRlckNlbGwiLCAicHJvcHMiLCAiY2hpbGRyZW4iLCAiY2xhc3NOYW1lIiwgImhlYWRlciIsICJjb21tb25TdHlsZSIsICJhdHRyaWJ1dGVzIiwgImxpc3RlbmVycyIsICJ0cmFuc2Zvcm0iLCAidHJhbnNpdGlvbiIsICJzZXROb2RlUmVmIiwgImlzRHJhZ2dpbmciLCAidXNlU29ydGFibGUiLCAic3R5bGUiLCAiQ1NTIiwgImRyYWdDbGFzcyIsICJjbiIsICJUYWJsZUhlYWQiLCAiQW5pbWF0ZVByZXNlbmNlIiwgIm1vdGlvbiIsICJUb29sdGlwUHJpbWl0aXZlIiwgIlJlYWN0IiwgImpzeCIsICJUb29sdGlwUHJvdmlkZXIiLCAiVG9vbHRpcCIsICJUb29sdGlwVHJpZ2dlciIsICJUb29sdGlwQ29udGVudCIsICJjbGFzc05hbWUiLCAic2lkZU9mZnNldCIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAianN4IiwgImpzeHMiLCAiRGF0YUdyaWRIZWFkZXJDZWxsIiwgImNvbHVtbiIsICJUb29sdGlwUHJvdmlkZXIiLCAiVG9vbHRpcCIsICJUb29sdGlwVHJpZ2dlciIsICJLZXlSb3VuZCIsICJUb29sdGlwQ29udGVudCIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJEYXRhR3JpZEhlYWRlciIsICJwcm9wcyIsICJjb2x1bW4iLCAiaGVhZGVyIiwgImNsYXNzTmFtZSIsICJjbiIsICJEYXRhR3JpZEhlYWRlckNlbGwiLCAiQW5pbWF0ZVByZXNlbmNlIiwgIm1vdGlvbiIsICJNb3ZlRG93biIsICJNb3ZlVXAiLCAiRHJvcGRvd25NZW51IiwgIkRyb3Bkb3duTWVudVRyaWdnZXIiLCAiQnV0dG9uIiwgIkNoZXZyb25Eb3duIiwgIkRyb3Bkb3duTWVudUNvbnRlbnQiLCAiRHJvcGRvd25NZW51SXRlbSIsICJBcnJvd0Rvd25XaWRlTmFycm93IiwgIkFycm93VXBXaWRlTmFycm93IiwgIlgiLCAiUGluT2ZmIiwgIlBpbiIsICJlIiwgImlzT2JqZWN0VHlwZSIsICJtb3Rpb24iLCAiUmVhY3QiLCAidXNlU3RhdGUiLCAiTGFiZWxQcmltaXRpdmUiLCAiY3ZhIiwgIlJlYWN0IiwgImpzeCIsICJsYWJlbFZhcmlhbnRzIiwgImN2YSIsICJMYWJlbCIsICJjbGFzc05hbWUiLCAicHJvcHMiLCAicmVmIiwgImNuIiwgIlN3aXRjaFByaW1pdGl2ZXMiLCAiUmVhY3QiLCAianN4IiwgIlN3aXRjaCIsICJjbGFzc05hbWUiLCAicHJvcHMiLCAicmVmIiwgImNuIiwgImRheWpzIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIklucHV0QWN0aW9ucyIsICJvblNhdmUiLCAib25DYW5jZWwiLCAib25DbG9zZSIsICJvbk51bGxDaGFuZ2UiLCAiaXNOdWxsIiwgInJlYWRvbmx5IiwgIm9uU2V0Tm93IiwgInNob3dTZXROb3ciLCAiQ29ybmVyRG93bkxlZnQiLCAiU3dpdGNoIiwgImNoZWNrZWQiLCAiVG9vbHRpcFByb3ZpZGVyIiwgIlRvb2x0aXAiLCAiVG9vbHRpcFRyaWdnZXIiLCAiVG9vbHRpcENvbnRlbnQiLCAiZGF5anMiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiQm9vbGVhbklucHV0IiwgInByb3BzIiwgInZhbHVlIiwgIm9uU3VibWl0IiwgImNvbHVtbiIsICJyZWFkb25seSIsICJpc051bGxhYmxlIiwgImN1cnJlbnRWYWx1ZSIsICJzZXRDdXJyZW50VmFsdWUiLCAidXNlU3RhdGUiLCAic2V0VG9OdWxsIiwgInNldFNldFRvTnVsbCIsICJpbml0aWFsVmFsdWUiLCAiaGFuZGxlQ2hhbmdlIiwgImNoZWNrZWQiLCAiaGFuZGxlTnVsbENoYW5nZSIsICJoYW5kbGVJbnB1dFN1Ym1pdCIsICJSZWFjdCIsICJ2YWx1ZVRvU3VibWl0IiwgImNhbmNlbEFjdGlvbiIsICJoYW5kbGVTYXZlIiwgImhhbmRsZUNhbmNlbCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJMYWJlbCIsICJtb3Rpb24iLCAiU3dpdGNoIiwgIklucHV0QWN0aW9ucyIsICJkYXlqcyIsICJsb2NhbGl6ZWRGb3JtYXQiLCAidXNlQ2FsbGJhY2siLCAidXNlRWZmZWN0IiwgInVzZU1lbW8iLCAidXNlU3RhdGUiLCAiRGF5UGlja2VyIiwgImpzeCIsICJDYWxlbmRhciIsICJjbGFzc05hbWUiLCAiY2xhc3NOYW1lcyIsICJzaG93T3V0c2lkZURheXMiLCAiaGlkZU5hdmlnYXRpb24iLCAicHJvcHMiLCAiX21vbnRoc0NsYXNzTmFtZSIsICJjbiIsICJfbW9udGhDYXB0aW9uQ2xhc3NOYW1lIiwgIl9kcm9wZG93bnNDbGFzc05hbWUiLCAiX2Zvb3RlckNsYXNzTmFtZSIsICJfd2Vla2RheXNDbGFzc05hbWUiLCAiX3dlZWtkYXlDbGFzc05hbWUiLCAiX2NhcHRpb25MYWJlbENsYXNzTmFtZSIsICJfbW9udGhHcmlkQ2xhc3NOYW1lIiwgIl93ZWVrQ2xhc3NOYW1lIiwgIl9kYXlDbGFzc05hbWUiLCAiX2RheUJ1dHRvbkNsYXNzTmFtZSIsICJidXR0b25WYXJpYW50cyIsICJidXR0b25SYW5nZUNsYXNzTmFtZSIsICJfcmFuZ2VTdGFydENsYXNzTmFtZSIsICJfcmFuZ2VFbmRDbGFzc05hbWUiLCAiX3JhbmdlTWlkZGxlQ2xhc3NOYW1lIiwgIl9zZWxlY3RlZENsYXNzTmFtZSIsICJfdG9kYXlDbGFzc05hbWUiLCAiX291dHNpZGVDbGFzc05hbWUiLCAiX2Rpc2FibGVkQ2xhc3NOYW1lIiwgIl9oaWRkZW5DbGFzc05hbWUiLCAiRGF5UGlja2VyIiwgInVzZVN0YXRlIiwgInVzZUlucHV0IiwgInByb3BzIiwgImluaXRpYWxWYWx1ZSIsICJ2YWx1ZSIsICJzZXRWYWx1ZSIsICJldmVudCIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJkYXlqcyIsICJsb2NhbGl6ZWRGb3JtYXQiLCAiRGF0ZUlucHV0IiwgInByb3BzIiwgIm9uU3VibWl0IiwgInZhbHVlIiwgInJlYWRvbmx5IiwgImNvbHVtbiIsICJpbml0aWFsVmFsdWUiLCAicGFyc2VkSW5pdGlhbERhdGUiLCAidXNlTWVtbyIsICJwYXJzZWQiLCAiZ2V0Rm9ybWF0Rm9yVHlwZSIsICJ0eXBlIiwgInNlbGVjdGVkRGF0ZSIsICJzZXRTZWxlY3RlZERhdGUiLCAidXNlU3RhdGUiLCAiY3VycmVudE1vbnRoIiwgInNldEN1cnJlbnRNb250aCIsICJob3VyVmFsdWUiLCAic2V0SG91clZhbHVlIiwgIm1pbnV0ZVZhbHVlIiwgInNldE1pbnV0ZVZhbHVlIiwgInNlY29uZFZhbHVlIiwgInNldFNlY29uZFZhbHVlIiwgImJhc2VIYW5kbGVPbkNoYW5nZSIsICJpbnB1dFZhbHVlIiwgInNldFZhbHVlIiwgInVzZUlucHV0IiwgImNvbHVtblR5cGUiLCAiZGJGb3JtYXQiLCAiaGFzVGltZVByZWNpc2lvbiIsICJoYW5kbGVPbkNoYW5nZSIsICJldmVudCIsICJuZXdWYWx1ZSIsICJuZXdEYXRlIiwgImhhbmRsZUNhbGVuZGFyU2VsZWN0IiwgImRhdGUiLCAibmV3U2VsZWN0ZWREYXRlIiwgImZpbmFsRGF0ZSIsICJub3ciLCAiZm9ybWF0dGVkRGF0ZSIsICJoYW5kbGVPblN1Ym1pdCIsICJoYW5kbGVJbnB1dFN1Ym1pdCIsICJ1c2VDYWxsYmFjayIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiaGFuZGxlU2V0Tm93IiwgImUiLCAic2V0WWVhclZhbHVlIiwgIm1vbnRocyIsICJjdXJyZW50TW9udGhWYWx1ZSIsICJ5ZWFyVmFsdWUiLCAidXBkYXRlRGF0ZUZyb21JbnB1dHMiLCAibmV3RGF0ZVBhcnRzIiwgImJhc2VEYXRlIiwgImhhbmRsZU1vbnRoQ2hhbmdlIiwgIm1vbnRoSW5kZXgiLCAiaGFuZGxlWWVhckNoYW5nZSIsICJuZXdZZWFyU3RyIiwgInllYXIiLCAiaGFuZGxlVGltZUNoYW5nZSIsICJwYXJ0IiwgIm51bWVyaWNWYWx1ZSIsICJuZXdIb3VyIiwgIm5ld01pbnV0ZSIsICJuZXdTZWNvbmQiLCAiaXNDb21wbGV0ZUhvdXIiLCAiaXNDb21wbGV0ZU1pbnV0ZSIsICJpc0NvbXBsZXRlU2Vjb25kIiwgInVzZUVmZmVjdCIsICJkanNEYXRlIiwgIklucHV0IiwgIlNlbGVjdCIsICJTZWxlY3RUcmlnZ2VyIiwgIlNlbGVjdFZhbHVlIiwgIlNlbGVjdENvbnRlbnQiLCAibW9udGgiLCAiU2VsZWN0SXRlbSIsICJEYXlQaWNrZXJXcmFwcGVyIiwgIklucHV0QWN0aW9ucyIsICJzZWxlY3RlZCIsICJvblNlbGVjdCIsICJvbk1vbnRoQ2hhbmdlIiwgImRpc2FibGVkIiwgIkNhbGVuZGFyIiwgInVzZUNhbGxiYWNrIiwgInVzZVN0YXRlIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkVudW1JbnB1dCIsICJwcm9wcyIsICJvblN1Ym1pdCIsICJjb2x1bW4iLCAidmFsdWUiLCAib3B0aW9ucyIsICJyZWFkb25seSIsICJpc051bGxhYmxlIiwgImluaXRpYWxWYWx1ZSIsICJjdXJyZW50VmFsdWUiLCAic2V0Q3VycmVudFZhbHVlIiwgInVzZVN0YXRlIiwgInNldFRvTnVsbCIsICJzZXRTZXRUb051bGwiLCAiaGFuZGxlU2VsZWN0T3B0aW9uIiwgIm9wdGlvbiIsICJoYW5kbGVOdWxsQ2hhbmdlIiwgImNoZWNrZWQiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAidXNlQ2FsbGJhY2siLCAiY2FuY2VsQWN0aW9uIiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgInVzZVBvcG92ZXJBY3Rpb25zIiwgImJhZGdlVmFyaWFudHMiLCAiSW5wdXRBY3Rpb25zIiwgIlJlYWN0IiwgInVzZVN0YXRlIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkpzb25JbnB1dCIsICJwcm9wcyIsICJ2YWx1ZSIsICJvblN1Ym1pdCIsICJjb2x1bW4iLCAicmVhZG9ubHkiLCAiaXNOdWxsYWJsZSIsICJpbml0aWFsVmFsdWUiLCAiY3VycmVudFZhbHVlIiwgInNldEN1cnJlbnRWYWx1ZSIsICJ1c2VTdGF0ZSIsICJzZXRUb051bGwiLCAic2V0U2V0VG9OdWxsIiwgImhhbmRsZUNoYW5nZSIsICJlIiwgImhhbmRsZU51bGxDaGFuZ2UiLCAiY2hlY2tlZCIsICJoYW5kbGVJbnB1dFN1Ym1pdCIsICJSZWFjdCIsICJqc29uVmFsdWUiLCAiY2FuY2VsQWN0aW9uIiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgInVzZVBvcG92ZXJBY3Rpb25zIiwgIklucHV0QWN0aW9ucyIsICJSZWFjdCIsICJ1c2VTdGF0ZSIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJOdW1lcmljSW5wdXQiLCAicHJvcHMiLCAidmFsdWUiLCAib25TdWJtaXQiLCAiY29sdW1uIiwgInJlYWRvbmx5IiwgImlzTnVsbGFibGUiLCAiY3VycmVudFZhbHVlIiwgInNldEN1cnJlbnRWYWx1ZSIsICJ1c2VTdGF0ZSIsICJzZXRUb051bGwiLCAic2V0U2V0VG9OdWxsIiwgImluaXRpYWxWYWx1ZSIsICJoYW5kbGVDaGFuZ2UiLCAiZSIsICJoYW5kbGVOdWxsQ2hhbmdlIiwgImNoZWNrZWQiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAiUmVhY3QiLCAibnVtZXJpY1ZhbHVlIiwgImNhbmNlbEFjdGlvbiIsICJoYW5kbGVTYXZlIiwgImhhbmRsZUNhbmNlbCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJMYWJlbCIsICJJbnB1dEFjdGlvbnMiLCAiUmVhY3QiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiUmF3SW5wdXQiLCAicHJvcHMiLCAib25TdWJtaXQiLCAidmFsdWUiLCAicmVhZG9ubHkiLCAiaW5pdGlhbFZhbHVlIiwgImhhbmRsZU9uQ2hhbmdlIiwgImlucHV0VmFsdWUiLCAidXNlSW5wdXQiLCAiaGFuZGxlT25TdWJtaXQiLCAiZXZlbnQiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAiUmVhY3QiLCAiY2FuY2VsQWN0aW9uIiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgInVzZVBvcG92ZXJBY3Rpb25zIiwgIklucHV0IiwgIklucHV0QWN0aW9ucyIsICJkYXlqcyIsICJsb2NhbGl6ZWRGb3JtYXQiLCAidXNlQ2FsbGJhY2siLCAidXNlTWVtbyIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJkYXlqcyIsICJsb2NhbGl6ZWRGb3JtYXQiLCAiVGltZUlucHV0IiwgInByb3BzIiwgIm9uU3VibWl0IiwgInZhbHVlIiwgInJlYWRvbmx5IiwgImluaXRpYWxWYWx1ZSIsICJoYW5kbGVPbkNoYW5nZSIsICJpbnB1dFZhbHVlIiwgInVzZUlucHV0IiwgImZvcm1hdHRlZFRpbWUiLCAidXNlTWVtbyIsICJoYXNUaW1lem9uZSIsICJkYXRlIiwgInRpbWVSZWdleCIsICJtYXRjaCIsICJob3VycyIsICJtaW51dGVzIiwgInR6T2Zmc2V0IiwgInBlcmlvZCIsICJoYW5kbGVPblN1Ym1pdCIsICJldmVudCIsICJoYW5kbGVJbnB1dFN1Ym1pdCIsICJ1c2VDYWxsYmFjayIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiSW5wdXQiLCAiSW5wdXRBY3Rpb25zIiwgImpzeCIsICJnZXRJbnB1dCIsICJwcm9wcyIsICJjZWxsIiwgImNvbHVtbiIsICJvblN1Ym1pdCIsICJncm91cCIsICJvcHRpb25zIiwgImlzQXJyYXkiLCAicmVhZG9ubHkiLCAiY2VsbFZhbHVlIiwgInZhbHVlIiwgIkRhdGVJbnB1dCIsICJUaW1lSW5wdXQiLCAiSnNvbklucHV0IiwgIkJvb2xlYW5JbnB1dCIsICJFbnVtSW5wdXQiLCAiTnVtZXJpY0lucHV0IiwgIlJhd0lucHV0IiwgImlzT2JqZWN0VHlwZSIsICJ1dWlkIiwgInVzZUNhbGxiYWNrIiwgInVzZUVmZmVjdCIsICJ1c2VNZW1vIiwgInV1aWR2NCIsICJ1c2VBY3RpdmVUYWJsZSIsICJhY3RpdmVUYWJsZSIsICJzZXRBY3RpdmVUYWJsZSIsICJhY3RpdmVTY2hlbWEiLCAic2V0QWN0aXZlU2NoZW1hIiwgImFkYXB0ZXIiLCAiZW1pdFRlbGVtZXRyeUV2ZW50IiwgInVzZVN0dWRpbyIsICJpbnRyb3NwZWN0aW9uIiwgImRhdGFVcGRhdGVkQXQiLCAidXNlSW50cm9zcGVjdGlvbiIsICJpc0xvYWRpbmciLCAiSU5JVElBTF9EQVRBX1VQREFURURfQVQiLCAiY3VycmVudFZpZXdWYWx1ZSIsICJ1c2VRdWVyeVN0YXRlIiwgInRhYmxlQW5kU2NoZW1hIiwgInNldFRhYmxlQW5kU2NoZW1hIiwgInVzZVF1ZXJ5U3RhdGVzIiwgInNldFBhZ2VQYXJhbSIsICJzZXRTb3J0UGFyYW0iLCAic2V0VmlldyIsICJ0YWJsZXMiLCAidXNlTWVtbyIsICJ0b3RhbFRhYmxlQ291bnQiLCAic3VtIiwgInNjaGVtYSIsICJmaXJzdFRhYmxlIiwgInVzZUVmZmVjdCIsICJ2aWV3UGFyYW1FeGlzdHMiLCAidGFibGVGcm9tUGFyYW0iLCAidCIsICJpc0NvbnRleHRUYWJsZVZhbGlkRm9yQ3VycmVudFNjaGVtYSIsICJoYW5kbGVUYWJsZUNoYW5nZSIsICJ1c2VDYWxsYmFjayIsICJuZXdUYWJsZSIsICJoYW5kbGVTY2hlbWFDaGFuZ2UiLCAibmV3U2NoZW1hIiwgInByZXYiLCAidXVpZHY0IiwgImpzeCIsICJMaW5rIiwgInByb3BzIiwgImNlbGwiLCAiY29sdW1uIiwgImZrU2NoZW1hIiwgImZrVGFibGUiLCAiZmtDb2x1bW4iLCAiaGFuZGxlU2NoZW1hQ2hhbmdlIiwgImhhbmRsZVRhYmxlQ2hhbmdlIiwgInVzZUFjdGl2ZVRhYmxlIiwgInNldEFwcGxpZWRGaWx0ZXIiLCAidXNlRmlsdGVyaW5nIiwgImludHJvc3BlY3Rpb24iLCAidXNlSW50cm9zcGVjdGlvbiIsICJ0YWJsZSIsICJCdXR0b24iLCAiZSIsICJ1dWlkIiwgIkFycm93UmlnaHQiLCAidXNlUmVhY3RUYWJsZSIsICJvbWl0IiwgIkZyYWdtZW50IiwgImpzeCIsICJTdGFnZWRSb3dzIiwgInByb3BzIiwgInBhcmVudFRhYmxlIiwgInN0YWdlZFJvd3MiLCAic2V0U3RhZ2VkUm93cyIsICJyZWFkb25seSIsICJ1c2VJc0luc2VydGluZyIsICJ1cGRhdGVTdGFnZWRSb3ciLCAicm93SW5kZXgiLCAicGFydGlhbFJvdyIsICJwcmV2Um93cyIsICJuZXdSb3dzIiwgImNvbHVtbkRlZnMiLCAiY29sdW1uIiwgIkVtcHR5Q2VsbCIsICJjZWxsIiwgIldyaXRlYWJsZUNlbGwiLCAiZ2V0Q2VsbCIsICJnZXRJbnB1dCIsICJ2YWx1ZSIsICJ0YWJsZSIsICJ1c2VSZWFjdFRhYmxlIiwgIm9taXQiLCAicm93IiwgImkiLCAiVGFibGVSb3ciLCAiaiIsICJDZWxsIiwgImdldENvbHVtblBpbm5pbmdTdHlsZXMiLCAianN4IiwgImpzeHMiLCAiU3R1ZGlvSGVhZGVyIiwgInByb3BzIiwgImlzRnVsbHNjcmVlbiIsICJ0b2dnbGVGdWxsc2NyZWVuIiwgInRvZ2dsZU5hdmlnYXRpb24iLCAiaXNOYXZpZ2F0aW9uT3BlbiIsICJ1c2VTdHVkaW8iLCAiQnV0dG9uIiwgIlBhbmVsTGVmdENsb3NlIiwgIlBhbmVsTGVmdE9wZW4iLCAiTWluaW1pemUiLCAiTWF4aW1pemUiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiQWN0aXZlVGFibGVWaWV3IiwgIl9wcm9wcyIsICJpc011dGF0aW5nIiwgInVzZUlzTXV0YXRpbmciLCAiYWN0aXZlVGFibGUiLCAib25FcnJvciIsICJ1c2VTdHVkaW8iLCAic29ydGluZ1N0YXRlIiwgInNldFNvcnRpbmdTdGF0ZSIsICJ1c2VTb3J0aW5nIiwgInBhZ2luYXRpb25TdGF0ZSIsICJzZXRQYWdpbmF0aW9uU3RhdGUiLCAidXNlUGFnaW5hdGlvbiIsICJzdGFnZWRSb3dzIiwgInNldFN0YWdlZFJvd3MiLCAidXNlU3RhdGUiLCAiYXBwbGllZEZpbHRlciIsICJzZXRBcHBsaWVkRmlsdGVyIiwgImVkaXRpbmdGaWx0ZXIiLCAic2V0RWRpdGluZ0ZpbHRlciIsICJ0b3RhbEVkaXRpbmdGaWx0ZXJzIiwgInVzZUZpbHRlcmluZyIsICJkYXRhIiwgImlzRmV0Y2hpbmciLCAicmVmZXRjaCIsICJ1c2VBY3RpdmVUYWJsZVF1ZXJ5IiwgImRlbGV0ZVNlbGVjdGlvbiIsICJpc1NlbGVjdGluZyIsICJyb3dTZWxlY3Rpb25TdGF0ZSIsICJzZXRSb3dTZWxlY3Rpb25TdGF0ZSIsICJ1c2VTZWxlY3Rpb24iLCAicmVhZG9ubHkiLCAiY29sdW1uIiwgImlzSW5zZXJ0aW5nIiwgInVzZUlzSW5zZXJ0aW5nIiwgImluc2VydCIsICJ1c2VBY3RpdmVUYWJsZUluc2VydCIsICJ1cGRhdGUiLCAidXNlQWN0aXZlVGFibGVVcGRhdGUiLCAidXNlRWZmZWN0IiwgInNhdmVTdGFnZWRSb3dzIiwgInRvYXN0IiwgIm5ld1N0YWdlZFJvdyIsICJvbGQiLCAiZHJvcFN0YWdlZFJvd3MiLCAiaGFuZGxlQ2VsbElucHV0U3VibWl0IiwgInZhbHVlIiwgInJvdyIsICJvbkZpbHRlck9wZW5DaGFuZ2UiLCAib3BlbiIsICJjb25jcmV0ZUNvbHVtbkRlZnMiLCAidGFibGUiLCAiaGVhZGVyIiwgInByb3BzIiwgIkRhdGFHcmlkRHJhZ2dhYmxlSGVhZGVyQ2VsbCIsICJEYXRhR3JpZEhlYWRlciIsICJjZWxsIiwgIldyaXRlYWJsZUNlbGwiLCAiZ2V0Q2VsbCIsICJMaW5rIiwgImdldElucHV0IiwgInZpcnR1YWxDb2x1bW5EZWZzIiwgIlRhYmxlSGVhZCIsICJTZWxlY3RIZWFkZXJDZWxsIiwgIkNlbGwiLCAiU2VsZWN0Um93Q2VsbCIsICJjb2x1bW5EZWZzIiwgImRlZmF1bHRDb2x1bW5Tb3J0aW5nIiwgIlN0dWRpb0hlYWRlciIsICJCdXR0b24iLCAiUmVmcmVzaEN3IiwgImNuIiwgIlBvcG92ZXIiLCAiUG9wb3ZlclRyaWdnZXIiLCAiRmlsdGVyIiwgIkJhZGdlIiwgIkFuaW1hdGVOdW1iZXIiLCAiUG9wb3ZlckNvbnRlbnQiLCAiRmlsdGVyVHJlZSIsICJmaWx0ZXIiLCAiRGF0YUdyaWQiLCAiU3RhZ2VkUm93cyIsICJnZXRQYWdlQ291bnQiLCAicm93Q291bnQiLCAicGFnZVNpemUiLCAicGFnZUNvdW50IiwgImEiLCAiYiIsICJhTWV0YSIsICJiTWV0YSIsICJqc3giLCAiQmFzaWNWaWV3IiwgIlNsb3QiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiTmF2aWdhdGlvbiIsICJjbGFzc05hbWUiLCAidGFibGVzIiwgImFjdGl2ZVRhYmxlIiwgImlzTG9hZGluZyIsICJoYW5kbGVUYWJsZUNoYW5nZSIsICJ1c2VBY3RpdmVUYWJsZSIsICJ2aWV3IiwgInNldFZpZXciLCAidXNlUXVlcnlTdGF0ZSIsICJzZXRVcmxUYWJsZSIsICJ2IiwgInNldFVybFNjaGVtYSIsICJzaWRlQmFyQ2xhc3NlcyIsICJjbiIsICJ0YWJsZSIsICJfIiwgImluZGV4IiwgIlNrZWxldG9uIiwgIkJsb2NrIiwgImxhYmVsIiwgImNoaWxkcmVuIiwgInByb3BzIiwgIlRhYmxlMiIsICJJdGVtIiwgImFzQ2hpbGQiLCAiaXNBY3RpdmUiLCAic2l6ZSIsICJ3cmFwQ2hpbGRyZW5JblNwYW4iLCAiU2xvdCIsICJTY2hlbWFTZWxlY3RvciIsICJpbnRyb3NwZWN0aW9uIiwgImlzSW50cm9zcGVjdGlvbkxvYWRpbmciLCAidXNlSW50cm9zcGVjdGlvbiIsICJhY3RpdmVTY2hlbWEiLCAiaGFuZGxlU2NoZW1hQ2hhbmdlIiwgInNjaGVtYU5hbWVzIiwgIlNlbGVjdCIsICJTZWxlY3RUcmlnZ2VyIiwgIlNlbGVjdFZhbHVlIiwgIlNlbGVjdENvbnRlbnQiLCAiU2VsZWN0SXRlbSIsICJzY2hlbWEiLCAidXNlTWVtbyIsICJOT19UQUJMRVNfTk9ERSIsICJ1c2VTY2hlbWFWaXN1YWxpemF0aW9uIiwgImludHJvc3BlY3Rpb24iLCAiaXNMb2FkaW5nIiwgInVzZUludHJvc3BlY3Rpb24iLCAiYWN0aXZlU2NoZW1hIiwgInVzZVN0dWRpbyIsICJ1c2VNZW1vIiwgImN1cnJlbnRTY2hlbWFEYXRhIiwgInRhYmxlcyIsICJ0YWJsZU1hcCIsICJ0YWJsZSIsICJmaWVsZHMiLCAiY29sdW1uIiwgImZpZWxkRGF0YSIsICJ0YWJsZU9iamVjdCIsICJyZWxhdGlvbnNoaXBzIiwgInNvdXJjZVRhYmxlIiwgIm9yaWdpbmFsVGFibGVEYXRhIiwgImlzT25lVG9PbmUiLCAibWVtbyIsICJ1c2VDYWxsYmFjayIsICJ1c2VFZmZlY3QiLCAidXNlTWVtbyIsICJSZWFjdEZsb3ciLCAiYWRkRWRnZSIsICJCYWNrZ3JvdW5kIiwgIkNvbm5lY3Rpb25MaW5lVHlwZSIsICJDb250cm9scyIsICJIYW5kbGUiLCAiTWluaU1hcCIsICJQb3NpdGlvbiIsICJ1c2VFZGdlc1N0YXRlIiwgInVzZU5vZGVzU3RhdGUiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiSWNvbldpdGhUb29sdGlwIiwgImljb25FbGVtZW50IiwgInRvb2x0aXBUZXh0IiwgImNsYXNzTmFtZSIsICJUb29sdGlwIiwgIlRvb2x0aXBUcmlnZ2VyIiwgIlRvb2x0aXBDb250ZW50IiwgIlRhYmxlTm9kZSIsICJtZW1vIiwgImRhdGEiLCAiYWN0aXZlU2NoZW1hIiwgInVzZVN0dWRpbyIsICJpc05vVGFibGVzTm9kZSIsICJnZXRGaWVsZEljb25zIiwgImZpZWxkIiwgImljb25zIiwgIkNpcmNsZUFsZXJ0IiwgIktleSIsICJma1Rvb2x0aXAiLCAiVG9vbHRpcFByb3ZpZGVyIiwgImNuIiwgIkhhbmRsZSIsICJQb3NpdGlvbiIsICJlIiwgIlNxdWFyZUFycm93UmlnaHQiLCAiaWNvbiIsICJpZHgiLCAiaW5kZXgiLCAiaWNvbkNvbXBvbmVudCIsICJub2RlVHlwZXMiLCAiZ2V0TGF5b3V0ZWROb2RlcyIsICJ0YWJsZXMiLCAiX3JlbGF0aW9uc2hpcHMiLCAidGFibGUiLCAiR1JJRF9HQVBfWCIsICJHUklEX0dBUF9ZIiwgIkNPTFVNTlMiLCAiY29sdW1uIiwgInJvdyIsICJTY2hlbWFWaXN1YWxpemF0aW9uIiwgInJlbGF0aW9uc2hpcHMiLCAibm9kZUlkU2V0IiwgInVzZU1lbW8iLCAidmFsaWRSZWxhdGlvbnNoaXBzIiwgInJlbCIsICJpbml0aWFsTm9kZXMiLCAiaW5pdGlhbEVkZ2VzIiwgIm5vZGVzIiwgInNldE5vZGVzIiwgIm9uTm9kZXNDaGFuZ2UiLCAidXNlTm9kZXNTdGF0ZSIsICJlZGdlcyIsICJzZXRFZGdlcyIsICJvbkVkZ2VzQ2hhbmdlIiwgInVzZUVkZ2VzU3RhdGUiLCAidXNlRWZmZWN0IiwgIm9uQ29ubmVjdCIsICJ1c2VDYWxsYmFjayIsICJwYXJhbXMiLCAiZWRzIiwgImFkZEVkZ2UiLCAiUmVhY3RGbG93IiwgIkNvbm5lY3Rpb25MaW5lVHlwZSIsICJCYWNrZ3JvdW5kIiwgIkNvbnRyb2xzIiwgIk1pbmlNYXAiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiU2NoZW1hVmlldyIsICJ0YWJsZXMiLCAicmVsYXRpb25zaGlwcyIsICJ1c2VTY2hlbWFWaXN1YWxpemF0aW9uIiwgIlN0dWRpb0hlYWRlciIsICJLZXkiLCAiU2NoZW1hVmlzdWFsaXphdGlvbiIsICJqc3giLCAianN4cyIsICJTdHVkaW8iLCAicHJvcHMiLCAiYWRhcHRlciIsICJvbkVycm9yIiwgIm9uVGVsZW1ldHJ5RXZlbnQiLCAiU3R1ZGlvQ29udGV4dFByb3ZpZGVyIiwgIlN0dWRpb0NvbnRlbnQiLCAiaXNGdWxsc2NyZWVuIiwgImlzTmF2aWdhdGlvbk9wZW4iLCAidXNlU3R1ZGlvIiwgInZpZXciLCAidXNlUXVlcnlTdGF0ZSIsICJjb250YWluZXJDbGFzc2VzIiwgImNuIiwgIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAiTmF2aWdhdGlvbiIsICJTY2hlbWFWaWV3IiwgIkFjdGl2ZVRhYmxlVmlldyIsICJCYXNpY1ZpZXciXQp9Cg==
323
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vdWkvc3R1ZGlvL1N0dWRpby50c3giLCAiLi4vLi4vdWkvaG9va3MvbnVxcy50cyIsICIuLi8uLi91aS9saWIvdXRpbHMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL2NsYXNzLWdyb3VwLXV0aWxzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9scnUtY2FjaGUudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL3BhcnNlLWNsYXNzLW5hbWUudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL2NvbmZpZy11dGlscy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvbWVyZ2UtY2xhc3NsaXN0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi90dy1qb2luLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9jcmVhdGUtdGFpbHdpbmQtbWVyZ2UudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL2Zyb20tdGhlbWUudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL3ZhbGlkYXRvcnMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL2RlZmF1bHQtY29uZmlnLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9tZXJnZS1jb25maWdzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9leHRlbmQtdGFpbHdpbmQtbWVyZ2UudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL3R3LW1lcmdlLnRzIiwgIi4uLy4uL3VpL3N0dWRpby9BY3RpdmVUYWJsZVZpZXcudHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL3NoYXJlZC9zcmMvdXRpbHMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9kZWZhdWx0QXR0cmlidXRlcy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL0ljb24udHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9jcmVhdGVMdWNpZGVJY29uLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvYXJyb3ctZG93bi13aWRlLW5hcnJvdy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2Fycm93LXJpZ2h0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvYXJyb3ctdXAtd2lkZS1uYXJyb3cudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaGVjay50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NoZXZyb24tZG93bi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NoZXZyb24tbGVmdC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NoZXZyb24tcmlnaHQudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaGV2cm9uLXVwLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbnMtbGVmdC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NoZXZyb25zLXJpZ2h0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2lyY2xlLWFsZXJ0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2lyY2xlLWhlbHAudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaXJjbGUudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jb3B5LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY29ybmVyLWRvd24tbGVmdC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2ZpbHRlci50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2dyaXAtdmVydGljYWwudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9rZXktcm91bmQudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9rZXkudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9tYXhpbWl6ZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL21pbmltaXplLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvbW92ZS1kb3duLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvbW92ZS11cC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL3BhbmVsLWxlZnQtY2xvc2UudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9wYW5lbC1sZWZ0LW9wZW4udHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9waW4tb2ZmLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvcGluLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvcmVmcmVzaC1jdy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL3NxdWFyZS1hcnJvdy1yaWdodC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL3RhYmxlLTIudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy94LnRzIiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvYmFkZ2UudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvYnV0dG9uLnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3BvcG92ZXIudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvdGFibGUudHN4IiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1hY3RpdmUtdGFibGUtaW5zZXJ0LnRzIiwgIi4uLy4uL3VpL3N0dWRpby9jb250ZXh0LnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXF1ZXJ5LWRldnRvb2xzQDUuNzIuMl9AdGFuc3RhY2srcmVhY3QtcXVlcnlANS43Mi4yX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5LWRldnRvb2xzL3NyYy9SZWFjdFF1ZXJ5RGV2dG9vbHMudHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcXVlcnktZGV2dG9vbHNANS43Mi4yL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcXVlcnktZGV2dG9vbHMvYnVpbGQvaW5kZXguanMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC1xdWVyeS1kZXZ0b29sc0A1LjcyLjJfQHRhbnN0YWNrK3JlYWN0LXF1ZXJ5QDUuNzIuMl9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC1xdWVyeS1kZXZ0b29scy9zcmMvUmVhY3RRdWVyeURldnRvb2xzUGFuZWwudHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtcXVlcnktZGV2dG9vbHNANS43Mi4yX0B0YW5zdGFjaytyZWFjdC1xdWVyeUA1LjcyLjJfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtcXVlcnktZGV2dG9vbHMvc3JjL2luZGV4LnRzIiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvc29ubmVyLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vTnVxc0hhc2hBZGFwdGVyLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vVVJMRGVmYXVsdHNIYW5kbGVyLnRzeCIsICIuLi8uLi91aS9ob29rcy91c2UtaW50cm9zcGVjdGlvbi50cyIsICIuLi8uLi91aS9ob29rcy91dGlscy9hZGQtcm93LWlkLXRvLXJlc3VsdC50cyIsICIuLi8uLi91aS9ob29rcy91c2UtYWN0aXZlLXRhYmxlLXF1ZXJ5LnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1hY3RpdmUtdGFibGUtdXBkYXRlLnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1maWx0ZXJpbmcudHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLWlzLWluc2VydGluZy50cyIsICIuLi8uLi91aS9ob29rcy91c2UtcGFnaW5hdGlvbi50cyIsICIuLi8uLi91aS9ob29rcy91c2Utc2VsZWN0aW9uLnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1hY3RpdmUtdGFibGUtZGVsZXRlLnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1zb3J0aW5nLnRzIiwgIi4uLy4uL3VpL3N0dWRpby9ncmlkL0RhdGFHcmlkQ2VsbENvbnRleHRNZW51LnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2NvbnRleHQtbWVudS50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvZ2V0LWNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL0Jvb2xlYW5DZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9EYXRlQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvRW1wdHlDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9FbnVtQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvSlNPTkNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL051bGxDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9OdW1lcmljQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvUmF3Q2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvVGltZUNlbGwudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvY2hlY2tib3gudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL1NlbGVjdEhlYWRlckNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL1NlbGVjdFJvd0NlbGwudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9Xcml0ZWFibGVDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vRmlsdGVyVHJlZS50c3giLCAiLi4vLi4vbGliL2NvbnZlcnNpb25VdGlscy50cyIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2Ryb3Bkb3duLW1lbnUudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvaW5wdXQudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvc2VsZWN0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZC50c3giLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC10YWJsZS1kZXZ0b29sc0A4LjIxLjNfcmVhY3QtZG9tQDE4LjMuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC10YWJsZS1kZXZ0b29scy9zcmMvdXNlTG9jYWxTdG9yYWdlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL3RoZW1lLnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXRhYmxlLWRldnRvb2xzQDguMjEuM19yZWFjdC1kb21AMTguMy4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzL3NyYy91c2VNZWRpYVF1ZXJ5LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL3V0aWxzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL3N0eWxlZENvbXBvbmVudHMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC10YWJsZS1kZXZ0b29sc0A4LjIxLjNfcmVhY3QtZG9tQDE4LjMuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC10YWJsZS1kZXZ0b29scy9zcmMvRXhwbG9yZXIudHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL0xvZ28udHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL2luZGV4LnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3NrZWxldG9uLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZExvYWRpbmdCYXIudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9ncmlkL0RhdGFHcmlkUGFnaW5hdGlvbi50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvZmVhdHVyZXMvY29sdW1uLXBpbm5pbmcudHMiLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvRGF0YUdyaWREcmFnZ2FibGVIZWFkZXJDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZEhlYWRlci50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS90b29sdGlwLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZEhlYWRlckNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC9nZXQtaW5wdXQudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC9Cb29sZWFuSW5wdXQudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvbGFiZWwudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvc3dpdGNoLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvaW5wdXQtYWN0aW9ucy50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L0RhdGVJbnB1dC50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9jYWxlbmRhci50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L3VzZS1pbnB1dC50cyIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvRW51bUlucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvSnNvbklucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvTnVtZXJpY0lucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvUmF3SW5wdXQudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC9UaW1lSW5wdXQudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9saW5rL2dldC1saW5rLnRzeCIsICIuLi8uLi91aS9ob29rcy91c2UtYWN0aXZlLXRhYmxlLnRzIiwgIi4uLy4uL3VpL3N0dWRpby9TdGFnZWRSb3dzLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vU3R1ZGlvSGVhZGVyLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vQmFzaWNWaWV3LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vTmF2aWdhdGlvbi50c3giLCAiLi4vLi4vdWkvaG9va3MvdXNlLXNjaGVtYS12aXN1YWxpemF0aW9uLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vc2NoZW1hL1Zpc3VhbGlzZXIudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9zY2hlbWEvU2NoZW1hVmlldy50c3giXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IEFuaW1hdGVQcmVzZW5jZSwgbW90aW9uIH0gZnJvbSBcIm1vdGlvbi9yZWFjdFwiO1xuXG5pbXBvcnQgdHlwZSB7IEFkYXB0ZXIgfSBmcm9tIFwiLi4vLi4vZGF0YVwiO1xuaW1wb3J0IHsgdXNlUXVlcnlTdGF0ZSB9IGZyb20gXCIuLi9ob29rcy9udXFzXCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi9saWIvdXRpbHNcIjtcbmltcG9ydCB7IEFjdGl2ZVRhYmxlVmlldyB9IGZyb20gXCIuL0FjdGl2ZVRhYmxlVmlld1wiO1xuaW1wb3J0IHsgQmFzaWNWaWV3IH0gZnJvbSBcIi4vQmFzaWNWaWV3XCI7XG5pbXBvcnQgeyBTdHVkaW9Db250ZXh0UHJvdmlkZXIsIHVzZVN0dWRpbyB9IGZyb20gXCIuL2NvbnRleHRcIjtcbmltcG9ydCB7IE5hdmlnYXRpb24gfSBmcm9tIFwiLi9OYXZpZ2F0aW9uXCI7XG5pbXBvcnQgeyBTY2hlbWFWaWV3IH0gZnJvbSBcIi4vc2NoZW1hL1NjaGVtYVZpZXdcIjtcblxuZXhwb3J0IHR5cGUgU3R1ZGlvVGVsZW1ldHJ5RXZlbnQgPSB7XG4gIGV2ZW50OiBcInN0dWRpb19sYXVuY2hlZFwiO1xuICBwYXlsb2FkOiB7XG4gICAgZXZlbnRfaWQ6IHN0cmluZztcbiAgICB0aW1lc3RhbXA6IHN0cmluZztcbiAgICB1c2VyX2lkPzogc3RyaW5nO1xuICAgIHdvcmtzcGFjZV9pZD86IHN0cmluZztcbiAgICBvcmdhbml6YXRpb25faWQ/OiBzdHJpbmc7XG4gICAgZW1iZWRkaW5nX3R5cGU/OiBzdHJpbmc7XG4gICAgdmVuZG9yX2lkPzogc3RyaW5nO1xuICAgIHRhYmxlX2NvdW50OiBudW1iZXI7XG4gIH07XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0dWRpb1Byb3BzIHtcbiAgYWRhcHRlcjogQWRhcHRlcjtcbiAgb25FcnJvcj86IChlcnJvcjogRXJyb3IpID0+IHZvaWQ7XG4gIG9uVGVsZW1ldHJ5RXZlbnQ/OiAoYXJnczogU3R1ZGlvVGVsZW1ldHJ5RXZlbnQpID0+IHZvaWQ7XG59XG5cbi8qKlxuICogTWFpbiBTdHVkaW8gY29tcG9uZW50IHRoYXQgcHJvdmlkZXMgZGF0YWJhc2UgdmlzdWFsaXphdGlvbiBhbmQgbWFuYWdlbWVudFxuICovXG5leHBvcnQgZnVuY3Rpb24gU3R1ZGlvKHByb3BzOiBTdHVkaW9Qcm9wcykge1xuICBjb25zdCB7IGFkYXB0ZXIsIG9uRXJyb3IsIG9uVGVsZW1ldHJ5RXZlbnQgfSA9IHByb3BzO1xuXG4gIGlmICghYWRhcHRlcikge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJObyBhZGFwdGVyIHByb3ZpZGVkIHRvIFN0dWRpbyBjb21wb25lbnRcIik7XG4gICAgcmV0dXJuIDxkaXY+RXJyb3I6IE5vIGFkYXB0ZXIgcHJvdmlkZWQ8L2Rpdj47XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTdHVkaW9Db250ZXh0UHJvdmlkZXIgYWRhcHRlcj17YWRhcHRlcn0gb25FcnJvcj17b25FcnJvcn0gb25UZWxlbWV0cnlFdmVudD17b25UZWxlbWV0cnlFdmVudH0+XG4gICAgICA8U3R1ZGlvQ29udGVudCAvPlxuICAgIDwvU3R1ZGlvQ29udGV4dFByb3ZpZGVyPlxuICApO1xufVxuXG5mdW5jdGlvbiBTdHVkaW9Db250ZW50KCkge1xuICBjb25zdCB7IGlzRnVsbHNjcmVlbiwgaXNOYXZpZ2F0aW9uT3BlbiB9ID0gdXNlU3R1ZGlvKCk7XG4gIGNvbnN0IFt2aWV3XSA9IHVzZVF1ZXJ5U3RhdGUoXCJ2aWV3XCIpO1xuXG4gIGNvbnN0IGNvbnRhaW5lckNsYXNzZXMgPSBjbihcbiAgICBcInBzLWZsZXggcHMtZmxleC1jb2wgcHMtdy1mdWxsIHBzLW1pbi1oLTAgcHMtbWF4LWgtZnVsbFwiLFxuICAgIGlzRnVsbHNjcmVlbiAmJiBcInBzLWZpeGVkIHBzLWluc2V0LTAgcHMtei1bOTk5OV0gcHMtYmctYmFja2dyb3VuZCBwcy1wLTJcIixcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgZGF0YS1mdWxsc2NyZWVuPXtpc0Z1bGxzY3JlZW59IGNsYXNzTmFtZT17Y29udGFpbmVyQ2xhc3Nlc30+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZ2FwLTAgcHMtdy1mdWxsIHBzLWJnLW5ldXRyYWwtNTAgcHMtcmVsYXRpdmUgcHMtbWF4LWgtZnVsbCBwcy1taW4taC1mdWxsIHBzLXJvdW5kZWQtbGdcIj5cbiAgICAgICAgPEFuaW1hdGVQcmVzZW5jZSBtb2RlPVwid2FpdFwiPlxuICAgICAgICAgIHtpc05hdmlnYXRpb25PcGVuICYmIChcbiAgICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICAgIGluaXRpYWw9e3sgd2lkdGg6IDAsIG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICAgICAgYW5pbWF0ZT17eyB3aWR0aDogXCJhdXRvXCIsIG9wYWNpdHk6IDEgfX1cbiAgICAgICAgICAgICAgZXhpdD17eyB3aWR0aDogMCwgb3BhY2l0eTogMCB9fVxuICAgICAgICAgICAgICB0cmFuc2l0aW9uPXt7IGR1cmF0aW9uOiAwLjE0IH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxOYXZpZ2F0aW9uIC8+XG4gICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9BbmltYXRlUHJlc2VuY2U+XG5cbiAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLXctZnVsbCBwcy1iZy1uZXV0cmFsLTEwMCBwcy1mbGV4LWNvbCBwcy1wLXB4IHBzLXJvdW5kZWQtbGcgcHMtc2VsZi1zdGFydCBwcy1oLWZ1bGwgcHMtbWluLWgtZnVsbCBwcy1tYXgtaC1mdWxsIHBzLW92ZXJmbG93LWNsaXBcIlxuICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDAuMTQgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHt2aWV3ID09PSBcInNjaGVtYVwiID8gPFNjaGVtYVZpZXcgLz4gOiAhdmlldyB8fCB2aWV3ID09PSBcInRhYmxlXCIgPyA8QWN0aXZlVGFibGVWaWV3IC8+IDogPEJhc2ljVmlldyAvPn1cbiAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCAiLy8gd2UncmUgZW5zdXJpbmcgdGhhdCBrZXlzIGFyZSB0eXBlLXNhZmUuIHRoZXJlIGlzIG5vIHByb3BlciB3YXkgdG8gYWNoaWV2ZSBpdCBpbiBgbnVxc2AuXG4vLyB0aGUgYGRlY2xhcmUgbW9kdWxlYCB0ZWNobmlxdWUgcmVzdWx0cyBpbiBhZGRpbmcgb3ZlcmxvYWRzLCBub3Qgb3ZlcnJpZGluZyB0aGUgZXhpc3RpbmcgZnVuY3Rpb25zLlxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1pbXBvcnRzXG5pbXBvcnQge1xuICB0eXBlIE9wdGlvbnMsXG4gIHR5cGUgUGFyc2VyLFxuICB1c2VRdWVyeVN0YXRlIGFzIHVzZVF1ZXJ5U3RhdGVPcmlnaW5hbCxcbiAgdHlwZSBVc2VRdWVyeVN0YXRlT3B0aW9ucyxcbiAgdHlwZSBVc2VRdWVyeVN0YXRlUmV0dXJuLFxuICB1c2VRdWVyeVN0YXRlcyBhcyB1c2VRdWVyeVN0YXRlc09yaWdpbmFsLFxuICB0eXBlIFVzZVF1ZXJ5U3RhdGVzT3B0aW9ucyxcbiAgdHlwZSBVc2VRdWVyeVN0YXRlc1JldHVybixcbn0gZnJvbSBcIm51cXNcIjtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtaW1wb3J0c1xuZXhwb3J0ICogZnJvbSBcIm51cXNcIjtcblxuZXhwb3J0IHR5cGUgU3RhdGVLZXkgPSBcInBhZ2VJbmRleFwiIHwgXCJwYWdlU2l6ZVwiIHwgXCJ0YWJsZVwiIHwgXCJzb3J0XCIgfCBcInNjaGVtYVwiIHwgXCJ0ZXN0XCIgfCBcImZpbHRlclwiIHwgXCJ2aWV3XCI7XG5cbi8vIGxpZnRlZCBmcm9tIEBwcmlzbWEvY2xpZW50L3J1bnRpbWVcbnR5cGUgRXhhY3Q8QSwgVz4gPVxuICB8IChBIGV4dGVuZHMgdW5rbm93blxuICAgICAgPyBXIGV4dGVuZHMgQVxuICAgICAgICA/IHtcbiAgICAgICAgICAgIFtLIGluIGtleW9mIEFdOiBFeGFjdDxBW0tdLCBXW0tdPjtcbiAgICAgICAgICB9XG4gICAgICAgIDogV1xuICAgICAgOiBuZXZlcilcbiAgfCAoQSBleHRlbmRzIHN0cmluZyB8IG51bWJlciB8IGJpZ2ludCB8IGJvb2xlYW4gfCBbXSA/IEEgOiBuZXZlcik7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgZnVuY3Rpb24ga2V5TWFwPGNvbnN0IE1hcCBleHRlbmRzIFBhcnRpYWw8UmVjb3JkPFN0YXRlS2V5LCBhbnk+Pj4oXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIGtleU1hcDogRXhhY3Q8TWFwLCBQYXJ0aWFsPFJlY29yZDxTdGF0ZUtleSwgYW55Pj4+LFxuKTogQnJhbmRlZEtleU1hcDxNYXA+IHtcbiAgcmV0dXJuIGtleU1hcCBhcyBuZXZlcjtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBmdW5jdGlvbiB1cmxLZXlzPGNvbnN0IE1hcCBleHRlbmRzIFBhcnRpYWw8UmVjb3JkPFN0YXRlS2V5LCBzdHJpbmc+Pj4oXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIHVybEtleXM6IEV4YWN0PE1hcCwgUGFydGlhbDxSZWNvcmQ8U3RhdGVLZXksIHN0cmluZz4+Pixcbik6IEJyYW5kZWRLZXlNYXA8TWFwPiB7XG4gIHJldHVybiB1cmxLZXlzIGFzIG5ldmVyO1xufVxuXG5jb25zdCBfQlJBTkRfU1lNQk9MID0gU3ltYm9sKFwiQlJBTkRfU1lNQk9MXCIpO1xuXG50eXBlIEJyYW5kZWRLZXlNYXA8TWFwPiA9IE1hcCAmIHtcbiAgW0sgaW4gdHlwZW9mIF9CUkFORF9TWU1CT0xdOiBuZXZlcjtcbn07XG5cbi8qKlxuICogQHNlZSB7QGxpbmsgdXNlUXVlcnlTdGF0ZU9yaWdpbmFsfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlUXVlcnlTdGF0ZTxUPihcbiAga2V5OiBTdGF0ZUtleSxcbiAgb3B0aW9uczogVXNlUXVlcnlTdGF0ZU9wdGlvbnM8VD4gJiB7XG4gICAgZGVmYXVsdFZhbHVlOiBUO1xuICB9LFxuKTogVXNlUXVlcnlTdGF0ZVJldHVybjxOb25OdWxsYWJsZTxSZXR1cm5UeXBlPHR5cGVvZiBvcHRpb25zLnBhcnNlPj4sIHR5cGVvZiBvcHRpb25zLmRlZmF1bHRWYWx1ZT47XG5leHBvcnQgZnVuY3Rpb24gdXNlUXVlcnlTdGF0ZTxUPihcbiAga2V5OiBTdGF0ZUtleSxcbiAgb3B0aW9uczogVXNlUXVlcnlTdGF0ZU9wdGlvbnM8VD4sXG4pOiBVc2VRdWVyeVN0YXRlUmV0dXJuPE5vbk51bGxhYmxlPFJldHVyblR5cGU8dHlwZW9mIG9wdGlvbnMucGFyc2U+PiwgdW5kZWZpbmVkPjtcbmV4cG9ydCBmdW5jdGlvbiB1c2VRdWVyeVN0YXRlKFxuICBrZXk6IFN0YXRlS2V5LFxuICBvcHRpb25zOiBPcHRpb25zICYge1xuICAgIGRlZmF1bHRWYWx1ZTogc3RyaW5nO1xuICB9LFxuKTogVXNlUXVlcnlTdGF0ZVJldHVybjxzdHJpbmcsIHR5cGVvZiBvcHRpb25zLmRlZmF1bHRWYWx1ZT47XG5leHBvcnQgZnVuY3Rpb24gdXNlUXVlcnlTdGF0ZShcbiAga2V5OiBTdGF0ZUtleSxcbiAgb3B0aW9uczogUGljazxVc2VRdWVyeVN0YXRlT3B0aW9uczxzdHJpbmc+LCBrZXlvZiBPcHRpb25zPixcbik6IFVzZVF1ZXJ5U3RhdGVSZXR1cm48c3RyaW5nLCB1bmRlZmluZWQ+O1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGUoa2V5OiBTdGF0ZUtleSk6IFVzZVF1ZXJ5U3RhdGVSZXR1cm48c3RyaW5nLCB1bmRlZmluZWQ+O1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBmdW5jdGlvbiB1c2VRdWVyeVN0YXRlKGtleTogU3RhdGVLZXksIG9wdGlvbnM/OiBhbnkpOiBhbnkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hcmd1bWVudFxuICByZXR1cm4gdXNlUXVlcnlTdGF0ZU9yaWdpbmFsKGtleSwgb3B0aW9ucyk7XG59XG5cbnR5cGUgVXNlUXVlcnlTdGF0ZXNLZXlzTWFwPFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBNYXAgZXh0ZW5kcyBQYXJ0aWFsPFJlY29yZDxTdGF0ZUtleSwgYW55Pj4gPSBQYXJ0aWFsPFJlY29yZDxTdGF0ZUtleSwgYW55Pj4sXG4+ID0ge1xuICBbS2V5IGluIGtleW9mIE1hcF06IEtleU1hcFZhbHVlPE1hcFtLZXldPjtcbn07XG5cbnR5cGUgS2V5TWFwVmFsdWU8VHlwZT4gPSBQYXJzZXI8VHlwZT4gJlxuICBPcHRpb25zICYge1xuICAgIGRlZmF1bHRWYWx1ZT86IFR5cGU7XG4gIH07XG5cbi8qKlxuICogQHNlZSB7QGxpbmsgdXNlUXVlcnlTdGF0ZXNPcmlnaW5hbH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGVzPEtleU1hcCBleHRlbmRzIFVzZVF1ZXJ5U3RhdGVzS2V5c01hcD4oXG4gIGtleU1hcDogQnJhbmRlZEtleU1hcDxLZXlNYXA+LFxuICBvcHRpb25zPzogUGFydGlhbDxVc2VRdWVyeVN0YXRlc09wdGlvbnM8S2V5TWFwPj4sXG4pOiBVc2VRdWVyeVN0YXRlc1JldHVybjxLZXlNYXA+IHtcbiAgcmV0dXJuIHVzZVF1ZXJ5U3RhdGVzT3JpZ2luYWwoa2V5TWFwIGFzIG5ldmVyLCBvcHRpb25zKTtcbn1cbiIsICIvLyBzaGFkY24gdXRpbHNcbmltcG9ydCB7IHR5cGUgQ2xhc3NWYWx1ZSwgY2xzeCB9IGZyb20gXCJjbHN4XCI7XG5pbXBvcnQgeyBleHRlbmRUYWlsd2luZE1lcmdlIH0gZnJvbSBcInRhaWx3aW5kLW1lcmdlXCI7XG5cbmV4cG9ydCBjb25zdCB0d01lcmdlID0gZXh0ZW5kVGFpbHdpbmRNZXJnZSh7XG4gIHByZWZpeDogXCJwcy1cIixcbn0pO1xuXG5leHBvcnQgZnVuY3Rpb24gY24oLi4uaW5wdXRzOiBDbGFzc1ZhbHVlW10pIHtcbiAgcmV0dXJuIHR3TWVyZ2UoY2xzeChpbnB1dHMpKTtcbn1cbiIsICJpbXBvcnQge1xuICAgIENsYXNzR3JvdXAsXG4gICAgQ2xhc3NWYWxpZGF0b3IsXG4gICAgQ29uZmlnLFxuICAgIEdlbmVyaWNDbGFzc0dyb3VwSWRzLFxuICAgIEdlbmVyaWNDb25maWcsXG4gICAgR2VuZXJpY1RoZW1lR3JvdXBJZHMsXG4gICAgVGhlbWVHZXR0ZXIsXG4gICAgVGhlbWVPYmplY3QsXG59IGZyb20gJy4vdHlwZXMnXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xhc3NQYXJ0T2JqZWN0IHtcbiAgICBuZXh0UGFydDogTWFwPHN0cmluZywgQ2xhc3NQYXJ0T2JqZWN0PlxuICAgIHZhbGlkYXRvcnM6IENsYXNzVmFsaWRhdG9yT2JqZWN0W11cbiAgICBjbGFzc0dyb3VwSWQ/OiBHZW5lcmljQ2xhc3NHcm91cElkc1xufVxuXG5pbnRlcmZhY2UgQ2xhc3NWYWxpZGF0b3JPYmplY3Qge1xuICAgIGNsYXNzR3JvdXBJZDogR2VuZXJpY0NsYXNzR3JvdXBJZHNcbiAgICB2YWxpZGF0b3I6IENsYXNzVmFsaWRhdG9yXG59XG5cbmNvbnN0IENMQVNTX1BBUlRfU0VQQVJBVE9SID0gJy0nXG5cbmV4cG9ydCBjb25zdCBjcmVhdGVDbGFzc0dyb3VwVXRpbHMgPSAoY29uZmlnOiBHZW5lcmljQ29uZmlnKSA9PiB7XG4gICAgY29uc3QgY2xhc3NNYXAgPSBjcmVhdGVDbGFzc01hcChjb25maWcpXG4gICAgY29uc3QgeyBjb25mbGljdGluZ0NsYXNzR3JvdXBzLCBjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnMgfSA9IGNvbmZpZ1xuXG4gICAgY29uc3QgZ2V0Q2xhc3NHcm91cElkID0gKGNsYXNzTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IGNsYXNzUGFydHMgPSBjbGFzc05hbWUuc3BsaXQoQ0xBU1NfUEFSVF9TRVBBUkFUT1IpXG5cbiAgICAgICAgLy8gQ2xhc3NlcyBsaWtlIGAtaW5zZXQtMWAgcHJvZHVjZSBhbiBlbXB0eSBzdHJpbmcgYXMgZmlyc3QgY2xhc3NQYXJ0LiBXZSBhc3N1bWUgdGhhdCBjbGFzc2VzIGZvciBuZWdhdGl2ZSB2YWx1ZXMgYXJlIHVzZWQgY29ycmVjdGx5IGFuZCByZW1vdmUgaXQgZnJvbSBjbGFzc1BhcnRzLlxuICAgICAgICBpZiAoY2xhc3NQYXJ0c1swXSA9PT0gJycgJiYgY2xhc3NQYXJ0cy5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgICAgIGNsYXNzUGFydHMuc2hpZnQoKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdldEdyb3VwUmVjdXJzaXZlKGNsYXNzUGFydHMsIGNsYXNzTWFwKSB8fCBnZXRHcm91cElkRm9yQXJiaXRyYXJ5UHJvcGVydHkoY2xhc3NOYW1lKVxuICAgIH1cblxuICAgIGNvbnN0IGdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkcyA9IChcbiAgICAgICAgY2xhc3NHcm91cElkOiBHZW5lcmljQ2xhc3NHcm91cElkcyxcbiAgICAgICAgaGFzUG9zdGZpeE1vZGlmaWVyOiBib29sZWFuLFxuICAgICkgPT4ge1xuICAgICAgICBjb25zdCBjb25mbGljdHMgPSBjb25mbGljdGluZ0NsYXNzR3JvdXBzW2NsYXNzR3JvdXBJZF0gfHwgW11cblxuICAgICAgICBpZiAoaGFzUG9zdGZpeE1vZGlmaWVyICYmIGNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyc1tjbGFzc0dyb3VwSWRdKSB7XG4gICAgICAgICAgICByZXR1cm4gWy4uLmNvbmZsaWN0cywgLi4uY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzW2NsYXNzR3JvdXBJZF0hXVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbmZsaWN0c1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGdldENsYXNzR3JvdXBJZCxcbiAgICAgICAgZ2V0Q29uZmxpY3RpbmdDbGFzc0dyb3VwSWRzLFxuICAgIH1cbn1cblxuY29uc3QgZ2V0R3JvdXBSZWN1cnNpdmUgPSAoXG4gICAgY2xhc3NQYXJ0czogc3RyaW5nW10sXG4gICAgY2xhc3NQYXJ0T2JqZWN0OiBDbGFzc1BhcnRPYmplY3QsXG4pOiBHZW5lcmljQ2xhc3NHcm91cElkcyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgaWYgKGNsYXNzUGFydHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBjbGFzc1BhcnRPYmplY3QuY2xhc3NHcm91cElkXG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudENsYXNzUGFydCA9IGNsYXNzUGFydHNbMF0hXG4gICAgY29uc3QgbmV4dENsYXNzUGFydE9iamVjdCA9IGNsYXNzUGFydE9iamVjdC5uZXh0UGFydC5nZXQoY3VycmVudENsYXNzUGFydClcbiAgICBjb25zdCBjbGFzc0dyb3VwRnJvbU5leHRDbGFzc1BhcnQgPSBuZXh0Q2xhc3NQYXJ0T2JqZWN0XG4gICAgICAgID8gZ2V0R3JvdXBSZWN1cnNpdmUoY2xhc3NQYXJ0cy5zbGljZSgxKSwgbmV4dENsYXNzUGFydE9iamVjdClcbiAgICAgICAgOiB1bmRlZmluZWRcblxuICAgIGlmIChjbGFzc0dyb3VwRnJvbU5leHRDbGFzc1BhcnQpIHtcbiAgICAgICAgcmV0dXJuIGNsYXNzR3JvdXBGcm9tTmV4dENsYXNzUGFydFxuICAgIH1cblxuICAgIGlmIChjbGFzc1BhcnRPYmplY3QudmFsaWRhdG9ycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IGNsYXNzUmVzdCA9IGNsYXNzUGFydHMuam9pbihDTEFTU19QQVJUX1NFUEFSQVRPUilcblxuICAgIHJldHVybiBjbGFzc1BhcnRPYmplY3QudmFsaWRhdG9ycy5maW5kKCh7IHZhbGlkYXRvciB9KSA9PiB2YWxpZGF0b3IoY2xhc3NSZXN0KSk/LmNsYXNzR3JvdXBJZFxufVxuXG5jb25zdCBhcmJpdHJhcnlQcm9wZXJ0eVJlZ2V4ID0gL15cXFsoLispXFxdJC9cblxuY29uc3QgZ2V0R3JvdXBJZEZvckFyYml0cmFyeVByb3BlcnR5ID0gKGNsYXNzTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgaWYgKGFyYml0cmFyeVByb3BlcnR5UmVnZXgudGVzdChjbGFzc05hbWUpKSB7XG4gICAgICAgIGNvbnN0IGFyYml0cmFyeVByb3BlcnR5Q2xhc3NOYW1lID0gYXJiaXRyYXJ5UHJvcGVydHlSZWdleC5leGVjKGNsYXNzTmFtZSkhWzFdXG4gICAgICAgIGNvbnN0IHByb3BlcnR5ID0gYXJiaXRyYXJ5UHJvcGVydHlDbGFzc05hbWU/LnN1YnN0cmluZyhcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICBhcmJpdHJhcnlQcm9wZXJ0eUNsYXNzTmFtZS5pbmRleE9mKCc6JyksXG4gICAgICAgIClcblxuICAgICAgICBpZiAocHJvcGVydHkpIHtcbiAgICAgICAgICAgIC8vIEkgdXNlIHR3byBkb3RzIGhlcmUgYmVjYXVzZSBvbmUgZG90IGlzIHVzZWQgYXMgcHJlZml4IGZvciBjbGFzcyBncm91cHMgaW4gcGx1Z2luc1xuICAgICAgICAgICAgcmV0dXJuICdhcmJpdHJhcnkuLicgKyBwcm9wZXJ0eVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIEV4cG9ydGVkIGZvciB0ZXN0aW5nIG9ubHlcbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZUNsYXNzTWFwID0gKGNvbmZpZzogQ29uZmlnPEdlbmVyaWNDbGFzc0dyb3VwSWRzLCBHZW5lcmljVGhlbWVHcm91cElkcz4pID0+IHtcbiAgICBjb25zdCB7IHRoZW1lLCBwcmVmaXggfSA9IGNvbmZpZ1xuICAgIGNvbnN0IGNsYXNzTWFwOiBDbGFzc1BhcnRPYmplY3QgPSB7XG4gICAgICAgIG5leHRQYXJ0OiBuZXcgTWFwPHN0cmluZywgQ2xhc3NQYXJ0T2JqZWN0PigpLFxuICAgICAgICB2YWxpZGF0b3JzOiBbXSxcbiAgICB9XG5cbiAgICBjb25zdCBwcmVmaXhlZENsYXNzR3JvdXBFbnRyaWVzID0gZ2V0UHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcyhcbiAgICAgICAgT2JqZWN0LmVudHJpZXMoY29uZmlnLmNsYXNzR3JvdXBzKSxcbiAgICAgICAgcHJlZml4LFxuICAgIClcblxuICAgIHByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMuZm9yRWFjaCgoW2NsYXNzR3JvdXBJZCwgY2xhc3NHcm91cF0pID0+IHtcbiAgICAgICAgcHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseShjbGFzc0dyb3VwLCBjbGFzc01hcCwgY2xhc3NHcm91cElkLCB0aGVtZSlcbiAgICB9KVxuXG4gICAgcmV0dXJuIGNsYXNzTWFwXG59XG5cbmNvbnN0IHByb2Nlc3NDbGFzc2VzUmVjdXJzaXZlbHkgPSAoXG4gICAgY2xhc3NHcm91cDogQ2xhc3NHcm91cDxHZW5lcmljVGhlbWVHcm91cElkcz4sXG4gICAgY2xhc3NQYXJ0T2JqZWN0OiBDbGFzc1BhcnRPYmplY3QsXG4gICAgY2xhc3NHcm91cElkOiBHZW5lcmljQ2xhc3NHcm91cElkcyxcbiAgICB0aGVtZTogVGhlbWVPYmplY3Q8R2VuZXJpY1RoZW1lR3JvdXBJZHM+LFxuKSA9PiB7XG4gICAgY2xhc3NHcm91cC5mb3JFYWNoKChjbGFzc0RlZmluaXRpb24pID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjbGFzc0RlZmluaXRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb25zdCBjbGFzc1BhcnRPYmplY3RUb0VkaXQgPVxuICAgICAgICAgICAgICAgIGNsYXNzRGVmaW5pdGlvbiA9PT0gJycgPyBjbGFzc1BhcnRPYmplY3QgOiBnZXRQYXJ0KGNsYXNzUGFydE9iamVjdCwgY2xhc3NEZWZpbml0aW9uKVxuICAgICAgICAgICAgY2xhc3NQYXJ0T2JqZWN0VG9FZGl0LmNsYXNzR3JvdXBJZCA9IGNsYXNzR3JvdXBJZFxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGNsYXNzRGVmaW5pdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgaWYgKGlzVGhlbWVHZXR0ZXIoY2xhc3NEZWZpbml0aW9uKSkge1xuICAgICAgICAgICAgICAgIHByb2Nlc3NDbGFzc2VzUmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzRGVmaW5pdGlvbih0aGVtZSksXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzUGFydE9iamVjdCxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NHcm91cElkLFxuICAgICAgICAgICAgICAgICAgICB0aGVtZSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNsYXNzUGFydE9iamVjdC52YWxpZGF0b3JzLnB1c2goe1xuICAgICAgICAgICAgICAgIHZhbGlkYXRvcjogY2xhc3NEZWZpbml0aW9uLFxuICAgICAgICAgICAgICAgIGNsYXNzR3JvdXBJZCxcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgT2JqZWN0LmVudHJpZXMoY2xhc3NEZWZpbml0aW9uKS5mb3JFYWNoKChba2V5LCBjbGFzc0dyb3VwXSkgPT4ge1xuICAgICAgICAgICAgcHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICBjbGFzc0dyb3VwLFxuICAgICAgICAgICAgICAgIGdldFBhcnQoY2xhc3NQYXJ0T2JqZWN0LCBrZXkpLFxuICAgICAgICAgICAgICAgIGNsYXNzR3JvdXBJZCxcbiAgICAgICAgICAgICAgICB0aGVtZSxcbiAgICAgICAgICAgIClcbiAgICAgICAgfSlcbiAgICB9KVxufVxuXG5jb25zdCBnZXRQYXJ0ID0gKGNsYXNzUGFydE9iamVjdDogQ2xhc3NQYXJ0T2JqZWN0LCBwYXRoOiBzdHJpbmcpID0+IHtcbiAgICBsZXQgY3VycmVudENsYXNzUGFydE9iamVjdCA9IGNsYXNzUGFydE9iamVjdFxuXG4gICAgcGF0aC5zcGxpdChDTEFTU19QQVJUX1NFUEFSQVRPUikuZm9yRWFjaCgocGF0aFBhcnQpID0+IHtcbiAgICAgICAgaWYgKCFjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0Lm5leHRQYXJ0LmhhcyhwYXRoUGFydCkpIHtcbiAgICAgICAgICAgIGN1cnJlbnRDbGFzc1BhcnRPYmplY3QubmV4dFBhcnQuc2V0KHBhdGhQYXJ0LCB7XG4gICAgICAgICAgICAgICAgbmV4dFBhcnQ6IG5ldyBNYXAoKSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbXSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0ID0gY3VycmVudENsYXNzUGFydE9iamVjdC5uZXh0UGFydC5nZXQocGF0aFBhcnQpIVxuICAgIH0pXG5cbiAgICByZXR1cm4gY3VycmVudENsYXNzUGFydE9iamVjdFxufVxuXG5jb25zdCBpc1RoZW1lR2V0dGVyID0gKGZ1bmM6IENsYXNzVmFsaWRhdG9yIHwgVGhlbWVHZXR0ZXIpOiBmdW5jIGlzIFRoZW1lR2V0dGVyID0+XG4gICAgKGZ1bmMgYXMgVGhlbWVHZXR0ZXIpLmlzVGhlbWVHZXR0ZXJcblxuY29uc3QgZ2V0UHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcyA9IChcbiAgICBjbGFzc0dyb3VwRW50cmllczogQXJyYXk8W2NsYXNzR3JvdXBJZDogc3RyaW5nLCBjbGFzc0dyb3VwOiBDbGFzc0dyb3VwPEdlbmVyaWNUaGVtZUdyb3VwSWRzPl0+LFxuICAgIHByZWZpeDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuKTogQXJyYXk8W2NsYXNzR3JvdXBJZDogc3RyaW5nLCBjbGFzc0dyb3VwOiBDbGFzc0dyb3VwPEdlbmVyaWNUaGVtZUdyb3VwSWRzPl0+ID0+IHtcbiAgICBpZiAoIXByZWZpeCkge1xuICAgICAgICByZXR1cm4gY2xhc3NHcm91cEVudHJpZXNcbiAgICB9XG5cbiAgICByZXR1cm4gY2xhc3NHcm91cEVudHJpZXMubWFwKChbY2xhc3NHcm91cElkLCBjbGFzc0dyb3VwXSkgPT4ge1xuICAgICAgICBjb25zdCBwcmVmaXhlZENsYXNzR3JvdXAgPSBjbGFzc0dyb3VwLm1hcCgoY2xhc3NEZWZpbml0aW9uKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNsYXNzRGVmaW5pdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJlZml4ICsgY2xhc3NEZWZpbml0aW9uXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2xhc3NEZWZpbml0aW9uID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGNsYXNzRGVmaW5pdGlvbikubWFwKChba2V5LCB2YWx1ZV0pID0+IFtwcmVmaXggKyBrZXksIHZhbHVlXSksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY2xhc3NEZWZpbml0aW9uXG4gICAgICAgIH0pXG5cbiAgICAgICAgcmV0dXJuIFtjbGFzc0dyb3VwSWQsIHByZWZpeGVkQ2xhc3NHcm91cF1cbiAgICB9KVxufVxuIiwgIi8vIEV4cG9ydCBpcyBuZWVkZWQgYmVjYXVzZSBUeXBlU2NyaXB0IGNvbXBsYWlucyBhYm91dCBhbiBlcnJvciBvdGhlcndpc2U6XG4vLyBFcnJvcjogXHUyMDI2L3RhaWx3aW5kLW1lcmdlL3NyYy9jb25maWctdXRpbHMudHMoOCwxNyk6IHNlbWFudGljIGVycm9yIFRTNDA1ODogUmV0dXJuIHR5cGUgb2YgZXhwb3J0ZWQgZnVuY3Rpb24gaGFzIG9yIGlzIHVzaW5nIG5hbWUgJ0xydUNhY2hlJyBmcm9tIGV4dGVybmFsIG1vZHVsZSBcIlx1MjAyNi90YWlsd2luZC1tZXJnZS9zcmMvbHJ1LWNhY2hlXCIgYnV0IGNhbm5vdCBiZSBuYW1lZC5cbmV4cG9ydCBpbnRlcmZhY2UgTHJ1Q2FjaGU8S2V5LCBWYWx1ZT4ge1xuICAgIGdldChrZXk6IEtleSk6IFZhbHVlIHwgdW5kZWZpbmVkXG4gICAgc2V0KGtleTogS2V5LCB2YWx1ZTogVmFsdWUpOiB2b2lkXG59XG5cbi8vIExSVSBjYWNoZSBpbnNwaXJlZCBmcm9tIGhhc2hscnUgKGh0dHBzOi8vZ2l0aHViLmNvbS9kb21pbmljdGFyci9oYXNobHJ1L2Jsb2IvdjEuMC40L2luZGV4LmpzKSBidXQgb2JqZWN0IHJlcGxhY2VkIHdpdGggTWFwIHRvIGltcHJvdmUgcGVyZm9ybWFuY2VcbmV4cG9ydCBjb25zdCBjcmVhdGVMcnVDYWNoZSA9IDxLZXksIFZhbHVlPihtYXhDYWNoZVNpemU6IG51bWJlcik6IExydUNhY2hlPEtleSwgVmFsdWU+ID0+IHtcbiAgICBpZiAobWF4Q2FjaGVTaXplIDwgMSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ2V0OiAoKSA9PiB1bmRlZmluZWQsXG4gICAgICAgICAgICBzZXQ6ICgpID0+IHt9LFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGNhY2hlU2l6ZSA9IDBcbiAgICBsZXQgY2FjaGUgPSBuZXcgTWFwPEtleSwgVmFsdWU+KClcbiAgICBsZXQgcHJldmlvdXNDYWNoZSA9IG5ldyBNYXA8S2V5LCBWYWx1ZT4oKVxuXG4gICAgY29uc3QgdXBkYXRlID0gKGtleTogS2V5LCB2YWx1ZTogVmFsdWUpID0+IHtcbiAgICAgICAgY2FjaGUuc2V0KGtleSwgdmFsdWUpXG4gICAgICAgIGNhY2hlU2l6ZSsrXG5cbiAgICAgICAgaWYgKGNhY2hlU2l6ZSA+IG1heENhY2hlU2l6ZSkge1xuICAgICAgICAgICAgY2FjaGVTaXplID0gMFxuICAgICAgICAgICAgcHJldmlvdXNDYWNoZSA9IGNhY2hlXG4gICAgICAgICAgICBjYWNoZSA9IG5ldyBNYXAoKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgZ2V0KGtleSkge1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gY2FjaGUuZ2V0KGtleSlcblxuICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgodmFsdWUgPSBwcmV2aW91c0NhY2hlLmdldChrZXkpKSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlKGtleSwgdmFsdWUpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHNldChrZXksIHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAoY2FjaGUuaGFzKGtleSkpIHtcbiAgICAgICAgICAgICAgICBjYWNoZS5zZXQoa2V5LCB2YWx1ZSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlKGtleSwgdmFsdWUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfVxufVxuIiwgImltcG9ydCB7IEdlbmVyaWNDb25maWcgfSBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgY29uc3QgSU1QT1JUQU5UX01PRElGSUVSID0gJyEnXG5cbmV4cG9ydCBjb25zdCBjcmVhdGVQYXJzZUNsYXNzTmFtZSA9IChjb25maWc6IEdlbmVyaWNDb25maWcpID0+IHtcbiAgICBjb25zdCB7IHNlcGFyYXRvciwgZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUgfSA9IGNvbmZpZ1xuICAgIGNvbnN0IGlzU2VwYXJhdG9yU2luZ2xlQ2hhcmFjdGVyID0gc2VwYXJhdG9yLmxlbmd0aCA9PT0gMVxuICAgIGNvbnN0IGZpcnN0U2VwYXJhdG9yQ2hhcmFjdGVyID0gc2VwYXJhdG9yWzBdXG4gICAgY29uc3Qgc2VwYXJhdG9yTGVuZ3RoID0gc2VwYXJhdG9yLmxlbmd0aFxuXG4gICAgLy8gcGFyc2VDbGFzc05hbWUgaW5zcGlyZWQgYnkgaHR0cHM6Ly9naXRodWIuY29tL3RhaWx3aW5kbGFicy90YWlsd2luZGNzcy9ibG9iL3YzLjIuMi9zcmMvdXRpbC9zcGxpdEF0VG9wTGV2ZWxPbmx5LmpzXG4gICAgY29uc3QgcGFyc2VDbGFzc05hbWUgPSAoY2xhc3NOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgbW9kaWZpZXJzID0gW11cblxuICAgICAgICBsZXQgYnJhY2tldERlcHRoID0gMFxuICAgICAgICBsZXQgbW9kaWZpZXJTdGFydCA9IDBcbiAgICAgICAgbGV0IHBvc3RmaXhNb2RpZmllclBvc2l0aW9uOiBudW1iZXIgfCB1bmRlZmluZWRcblxuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgY2xhc3NOYW1lLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRDaGFyYWN0ZXIgPSBjbGFzc05hbWVbaW5kZXhdXG5cbiAgICAgICAgICAgIGlmIChicmFja2V0RGVwdGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDaGFyYWN0ZXIgPT09IGZpcnN0U2VwYXJhdG9yQ2hhcmFjdGVyICYmXG4gICAgICAgICAgICAgICAgICAgIChpc1NlcGFyYXRvclNpbmdsZUNoYXJhY3RlciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lLnNsaWNlKGluZGV4LCBpbmRleCArIHNlcGFyYXRvckxlbmd0aCkgPT09IHNlcGFyYXRvcilcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzLnB1c2goY2xhc3NOYW1lLnNsaWNlKG1vZGlmaWVyU3RhcnQsIGluZGV4KSlcbiAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJTdGFydCA9IGluZGV4ICsgc2VwYXJhdG9yTGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgPT09ICcvJykge1xuICAgICAgICAgICAgICAgICAgICBwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiA9IGluZGV4XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY3VycmVudENoYXJhY3RlciA9PT0gJ1snKSB7XG4gICAgICAgICAgICAgICAgYnJhY2tldERlcHRoKytcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudENoYXJhY3RlciA9PT0gJ10nKSB7XG4gICAgICAgICAgICAgICAgYnJhY2tldERlcHRoLS1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGJhc2VDbGFzc05hbWVXaXRoSW1wb3J0YW50TW9kaWZpZXIgPVxuICAgICAgICAgICAgbW9kaWZpZXJzLmxlbmd0aCA9PT0gMCA/IGNsYXNzTmFtZSA6IGNsYXNzTmFtZS5zdWJzdHJpbmcobW9kaWZpZXJTdGFydClcbiAgICAgICAgY29uc3QgaGFzSW1wb3J0YW50TW9kaWZpZXIgPVxuICAgICAgICAgICAgYmFzZUNsYXNzTmFtZVdpdGhJbXBvcnRhbnRNb2RpZmllci5zdGFydHNXaXRoKElNUE9SVEFOVF9NT0RJRklFUilcbiAgICAgICAgY29uc3QgYmFzZUNsYXNzTmFtZSA9IGhhc0ltcG9ydGFudE1vZGlmaWVyXG4gICAgICAgICAgICA/IGJhc2VDbGFzc05hbWVXaXRoSW1wb3J0YW50TW9kaWZpZXIuc3Vic3RyaW5nKDEpXG4gICAgICAgICAgICA6IGJhc2VDbGFzc05hbWVXaXRoSW1wb3J0YW50TW9kaWZpZXJcblxuICAgICAgICBjb25zdCBtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uID1cbiAgICAgICAgICAgIHBvc3RmaXhNb2RpZmllclBvc2l0aW9uICYmIHBvc3RmaXhNb2RpZmllclBvc2l0aW9uID4gbW9kaWZpZXJTdGFydFxuICAgICAgICAgICAgICAgID8gcG9zdGZpeE1vZGlmaWVyUG9zaXRpb24gLSBtb2RpZmllclN0YXJ0XG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbW9kaWZpZXJzLFxuICAgICAgICAgICAgaGFzSW1wb3J0YW50TW9kaWZpZXIsXG4gICAgICAgICAgICBiYXNlQ2xhc3NOYW1lLFxuICAgICAgICAgICAgbWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbixcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSkge1xuICAgICAgICByZXR1cm4gKGNsYXNzTmFtZTogc3RyaW5nKSA9PiBleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSh7IGNsYXNzTmFtZSwgcGFyc2VDbGFzc05hbWUgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyc2VDbGFzc05hbWVcbn1cblxuLyoqXG4gKiBTb3J0cyBtb2RpZmllcnMgYWNjb3JkaW5nIHRvIGZvbGxvd2luZyBzY2hlbWE6XG4gKiAtIFByZWRlZmluZWQgbW9kaWZpZXJzIGFyZSBzb3J0ZWQgYWxwaGFiZXRpY2FsbHlcbiAqIC0gV2hlbiBhbiBhcmJpdHJhcnkgdmFyaWFudCBhcHBlYXJzLCBpdCBtdXN0IGJlIHByZXNlcnZlZCB3aGljaCBtb2RpZmllcnMgYXJlIGJlZm9yZSBhbmQgYWZ0ZXIgaXRcbiAqL1xuZXhwb3J0IGNvbnN0IHNvcnRNb2RpZmllcnMgPSAobW9kaWZpZXJzOiBzdHJpbmdbXSkgPT4ge1xuICAgIGlmIChtb2RpZmllcnMubGVuZ3RoIDw9IDEpIHtcbiAgICAgICAgcmV0dXJuIG1vZGlmaWVyc1xuICAgIH1cblxuICAgIGNvbnN0IHNvcnRlZE1vZGlmaWVyczogc3RyaW5nW10gPSBbXVxuICAgIGxldCB1bnNvcnRlZE1vZGlmaWVyczogc3RyaW5nW10gPSBbXVxuXG4gICAgbW9kaWZpZXJzLmZvckVhY2goKG1vZGlmaWVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzQXJiaXRyYXJ5VmFyaWFudCA9IG1vZGlmaWVyWzBdID09PSAnWydcblxuICAgICAgICBpZiAoaXNBcmJpdHJhcnlWYXJpYW50KSB7XG4gICAgICAgICAgICBzb3J0ZWRNb2RpZmllcnMucHVzaCguLi51bnNvcnRlZE1vZGlmaWVycy5zb3J0KCksIG1vZGlmaWVyKVxuICAgICAgICAgICAgdW5zb3J0ZWRNb2RpZmllcnMgPSBbXVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdW5zb3J0ZWRNb2RpZmllcnMucHVzaChtb2RpZmllcilcbiAgICAgICAgfVxuICAgIH0pXG5cbiAgICBzb3J0ZWRNb2RpZmllcnMucHVzaCguLi51bnNvcnRlZE1vZGlmaWVycy5zb3J0KCkpXG5cbiAgICByZXR1cm4gc29ydGVkTW9kaWZpZXJzXG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlQ2xhc3NHcm91cFV0aWxzIH0gZnJvbSAnLi9jbGFzcy1ncm91cC11dGlscydcbmltcG9ydCB7IGNyZWF0ZUxydUNhY2hlIH0gZnJvbSAnLi9scnUtY2FjaGUnXG5pbXBvcnQgeyBjcmVhdGVQYXJzZUNsYXNzTmFtZSB9IGZyb20gJy4vcGFyc2UtY2xhc3MtbmFtZSdcbmltcG9ydCB7IEdlbmVyaWNDb25maWcgfSBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgdHlwZSBDb25maWdVdGlscyA9IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUNvbmZpZ1V0aWxzPlxuXG5leHBvcnQgY29uc3QgY3JlYXRlQ29uZmlnVXRpbHMgPSAoY29uZmlnOiBHZW5lcmljQ29uZmlnKSA9PiAoe1xuICAgIGNhY2hlOiBjcmVhdGVMcnVDYWNoZTxzdHJpbmcsIHN0cmluZz4oY29uZmlnLmNhY2hlU2l6ZSksXG4gICAgcGFyc2VDbGFzc05hbWU6IGNyZWF0ZVBhcnNlQ2xhc3NOYW1lKGNvbmZpZyksXG4gICAgLi4uY3JlYXRlQ2xhc3NHcm91cFV0aWxzKGNvbmZpZyksXG59KVxuIiwgImltcG9ydCB7IENvbmZpZ1V0aWxzIH0gZnJvbSAnLi9jb25maWctdXRpbHMnXG5pbXBvcnQgeyBJTVBPUlRBTlRfTU9ESUZJRVIsIHNvcnRNb2RpZmllcnMgfSBmcm9tICcuL3BhcnNlLWNsYXNzLW5hbWUnXG5cbmNvbnN0IFNQTElUX0NMQVNTRVNfUkVHRVggPSAvXFxzKy9cblxuZXhwb3J0IGNvbnN0IG1lcmdlQ2xhc3NMaXN0ID0gKGNsYXNzTGlzdDogc3RyaW5nLCBjb25maWdVdGlsczogQ29uZmlnVXRpbHMpID0+IHtcbiAgICBjb25zdCB7IHBhcnNlQ2xhc3NOYW1lLCBnZXRDbGFzc0dyb3VwSWQsIGdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkcyB9ID0gY29uZmlnVXRpbHNcblxuICAgIC8qKlxuICAgICAqIFNldCBvZiBjbGFzc0dyb3VwSWRzIGluIGZvbGxvd2luZyBmb3JtYXQ6XG4gICAgICogYHtpbXBvcnRhbnRNb2RpZmllcn17dmFyaWFudE1vZGlmaWVyc317Y2xhc3NHcm91cElkfWBcbiAgICAgKiBAZXhhbXBsZSAnZmxvYXQnXG4gICAgICogQGV4YW1wbGUgJ2hvdmVyOmZvY3VzOmJnLWNvbG9yJ1xuICAgICAqIEBleGFtcGxlICdtZDohcHInXG4gICAgICovXG4gICAgY29uc3QgY2xhc3NHcm91cHNJbkNvbmZsaWN0OiBzdHJpbmdbXSA9IFtdXG4gICAgY29uc3QgY2xhc3NOYW1lcyA9IGNsYXNzTGlzdC50cmltKCkuc3BsaXQoU1BMSVRfQ0xBU1NFU19SRUdFWClcblxuICAgIGxldCByZXN1bHQgPSAnJ1xuXG4gICAgZm9yIChsZXQgaW5kZXggPSBjbGFzc05hbWVzLmxlbmd0aCAtIDE7IGluZGV4ID49IDA7IGluZGV4IC09IDEpIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxDbGFzc05hbWUgPSBjbGFzc05hbWVzW2luZGV4XSFcblxuICAgICAgICBjb25zdCB7IG1vZGlmaWVycywgaGFzSW1wb3J0YW50TW9kaWZpZXIsIGJhc2VDbGFzc05hbWUsIG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb24gfSA9XG4gICAgICAgICAgICBwYXJzZUNsYXNzTmFtZShvcmlnaW5hbENsYXNzTmFtZSlcblxuICAgICAgICBsZXQgaGFzUG9zdGZpeE1vZGlmaWVyID0gQm9vbGVhbihtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uKVxuICAgICAgICBsZXQgY2xhc3NHcm91cElkID0gZ2V0Q2xhc3NHcm91cElkKFxuICAgICAgICAgICAgaGFzUG9zdGZpeE1vZGlmaWVyXG4gICAgICAgICAgICAgICAgPyBiYXNlQ2xhc3NOYW1lLnN1YnN0cmluZygwLCBtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uKVxuICAgICAgICAgICAgICAgIDogYmFzZUNsYXNzTmFtZSxcbiAgICAgICAgKVxuXG4gICAgICAgIGlmICghY2xhc3NHcm91cElkKSB7XG4gICAgICAgICAgICBpZiAoIWhhc1Bvc3RmaXhNb2RpZmllcikge1xuICAgICAgICAgICAgICAgIC8vIE5vdCBhIFRhaWx3aW5kIGNsYXNzXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gb3JpZ2luYWxDbGFzc05hbWUgKyAocmVzdWx0Lmxlbmd0aCA+IDAgPyAnICcgKyByZXN1bHQgOiByZXN1bHQpXG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2xhc3NHcm91cElkID0gZ2V0Q2xhc3NHcm91cElkKGJhc2VDbGFzc05hbWUpXG5cbiAgICAgICAgICAgIGlmICghY2xhc3NHcm91cElkKSB7XG4gICAgICAgICAgICAgICAgLy8gTm90IGEgVGFpbHdpbmQgY2xhc3NcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBvcmlnaW5hbENsYXNzTmFtZSArIChyZXN1bHQubGVuZ3RoID4gMCA/ICcgJyArIHJlc3VsdCA6IHJlc3VsdClcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBoYXNQb3N0Zml4TW9kaWZpZXIgPSBmYWxzZVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmFyaWFudE1vZGlmaWVyID0gc29ydE1vZGlmaWVycyhtb2RpZmllcnMpLmpvaW4oJzonKVxuXG4gICAgICAgIGNvbnN0IG1vZGlmaWVySWQgPSBoYXNJbXBvcnRhbnRNb2RpZmllclxuICAgICAgICAgICAgPyB2YXJpYW50TW9kaWZpZXIgKyBJTVBPUlRBTlRfTU9ESUZJRVJcbiAgICAgICAgICAgIDogdmFyaWFudE1vZGlmaWVyXG5cbiAgICAgICAgY29uc3QgY2xhc3NJZCA9IG1vZGlmaWVySWQgKyBjbGFzc0dyb3VwSWRcblxuICAgICAgICBpZiAoY2xhc3NHcm91cHNJbkNvbmZsaWN0LmluY2x1ZGVzKGNsYXNzSWQpKSB7XG4gICAgICAgICAgICAvLyBUYWlsd2luZCBjbGFzcyBvbWl0dGVkIGR1ZSB0byBjb25mbGljdFxuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIGNsYXNzR3JvdXBzSW5Db25mbGljdC5wdXNoKGNsYXNzSWQpXG5cbiAgICAgICAgY29uc3QgY29uZmxpY3RHcm91cHMgPSBnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHMoY2xhc3NHcm91cElkLCBoYXNQb3N0Zml4TW9kaWZpZXIpXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmxpY3RHcm91cHMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gY29uZmxpY3RHcm91cHNbaV0hXG4gICAgICAgICAgICBjbGFzc0dyb3Vwc0luQ29uZmxpY3QucHVzaChtb2RpZmllcklkICsgZ3JvdXApXG4gICAgICAgIH1cblxuICAgICAgICAvLyBUYWlsd2luZCBjbGFzcyBub3QgaW4gY29uZmxpY3RcbiAgICAgICAgcmVzdWx0ID0gb3JpZ2luYWxDbGFzc05hbWUgKyAocmVzdWx0Lmxlbmd0aCA+IDAgPyAnICcgKyByZXN1bHQgOiByZXN1bHQpXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxufVxuIiwgIi8qKlxuICogVGhlIGNvZGUgaW4gdGhpcyBmaWxlIGlzIGNvcGllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9sdWtlZWQvY2xzeCBhbmQgbW9kaWZpZWQgdG8gc3VpdCB0aGUgbmVlZHMgb2YgdGFpbHdpbmQtbWVyZ2UgYmV0dGVyLlxuICpcbiAqIFNwZWNpZmljYWxseTpcbiAqIC0gUnVudGltZSBjb2RlIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2x1a2VlZC9jbHN4L2Jsb2IvdjEuMi4xL3NyYy9pbmRleC5qc1xuICogLSBUeXBlU2NyaXB0IHR5cGVzIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2x1a2VlZC9jbHN4L2Jsb2IvdjEuMi4xL2Nsc3guZC50c1xuICpcbiAqIE9yaWdpbmFsIGNvZGUgaGFzIE1JVCBsaWNlbnNlOiBDb3B5cmlnaHQgKGMpIEx1a2UgRWR3YXJkcyA8bHVrZS5lZHdhcmRzMDVAZ21haWwuY29tPiAobHVrZWVkLmNvbSlcbiAqL1xuXG5leHBvcnQgdHlwZSBDbGFzc05hbWVWYWx1ZSA9IENsYXNzTmFtZUFycmF5IHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCB8IDAgfCAwbiB8IGZhbHNlXG50eXBlIENsYXNzTmFtZUFycmF5ID0gQ2xhc3NOYW1lVmFsdWVbXVxuXG5leHBvcnQgZnVuY3Rpb24gdHdKb2luKC4uLmNsYXNzTGlzdHM6IENsYXNzTmFtZVZhbHVlW10pOiBzdHJpbmdcbmV4cG9ydCBmdW5jdGlvbiB0d0pvaW4oKSB7XG4gICAgbGV0IGluZGV4ID0gMFxuICAgIGxldCBhcmd1bWVudDogQ2xhc3NOYW1lVmFsdWVcbiAgICBsZXQgcmVzb2x2ZWRWYWx1ZTogc3RyaW5nXG4gICAgbGV0IHN0cmluZyA9ICcnXG5cbiAgICB3aGlsZSAoaW5kZXggPCBhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgICAgIGlmICgoYXJndW1lbnQgPSBhcmd1bWVudHNbaW5kZXgrK10pKSB7XG4gICAgICAgICAgICBpZiAoKHJlc29sdmVkVmFsdWUgPSB0b1ZhbHVlKGFyZ3VtZW50KSkpIHtcbiAgICAgICAgICAgICAgICBzdHJpbmcgJiYgKHN0cmluZyArPSAnICcpXG4gICAgICAgICAgICAgICAgc3RyaW5nICs9IHJlc29sdmVkVmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3RyaW5nXG59XG5cbmNvbnN0IHRvVmFsdWUgPSAobWl4OiBDbGFzc05hbWVBcnJheSB8IHN0cmluZykgPT4ge1xuICAgIGlmICh0eXBlb2YgbWl4ID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gbWl4XG4gICAgfVxuXG4gICAgbGV0IHJlc29sdmVkVmFsdWU6IHN0cmluZ1xuICAgIGxldCBzdHJpbmcgPSAnJ1xuXG4gICAgZm9yIChsZXQgayA9IDA7IGsgPCBtaXgubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgaWYgKG1peFtrXSkge1xuICAgICAgICAgICAgaWYgKChyZXNvbHZlZFZhbHVlID0gdG9WYWx1ZShtaXhba10gYXMgQ2xhc3NOYW1lQXJyYXkgfCBzdHJpbmcpKSkge1xuICAgICAgICAgICAgICAgIHN0cmluZyAmJiAoc3RyaW5nICs9ICcgJylcbiAgICAgICAgICAgICAgICBzdHJpbmcgKz0gcmVzb2x2ZWRWYWx1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmluZ1xufVxuIiwgImltcG9ydCB7IGNyZWF0ZUNvbmZpZ1V0aWxzIH0gZnJvbSAnLi9jb25maWctdXRpbHMnXG5pbXBvcnQgeyBtZXJnZUNsYXNzTGlzdCB9IGZyb20gJy4vbWVyZ2UtY2xhc3NsaXN0J1xuaW1wb3J0IHsgQ2xhc3NOYW1lVmFsdWUsIHR3Sm9pbiB9IGZyb20gJy4vdHctam9pbidcbmltcG9ydCB7IEdlbmVyaWNDb25maWcgfSBmcm9tICcuL3R5cGVzJ1xuXG50eXBlIENyZWF0ZUNvbmZpZ0ZpcnN0ID0gKCkgPT4gR2VuZXJpY0NvbmZpZ1xudHlwZSBDcmVhdGVDb25maWdTdWJzZXF1ZW50ID0gKGNvbmZpZzogR2VuZXJpY0NvbmZpZykgPT4gR2VuZXJpY0NvbmZpZ1xudHlwZSBUYWlsd2luZE1lcmdlID0gKC4uLmNsYXNzTGlzdHM6IENsYXNzTmFtZVZhbHVlW10pID0+IHN0cmluZ1xudHlwZSBDb25maWdVdGlscyA9IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUNvbmZpZ1V0aWxzPlxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVGFpbHdpbmRNZXJnZShcbiAgICBjcmVhdGVDb25maWdGaXJzdDogQ3JlYXRlQ29uZmlnRmlyc3QsXG4gICAgLi4uY3JlYXRlQ29uZmlnUmVzdDogQ3JlYXRlQ29uZmlnU3Vic2VxdWVudFtdXG4pOiBUYWlsd2luZE1lcmdlIHtcbiAgICBsZXQgY29uZmlnVXRpbHM6IENvbmZpZ1V0aWxzXG4gICAgbGV0IGNhY2hlR2V0OiBDb25maWdVdGlsc1snY2FjaGUnXVsnZ2V0J11cbiAgICBsZXQgY2FjaGVTZXQ6IENvbmZpZ1V0aWxzWydjYWNoZSddWydzZXQnXVxuICAgIGxldCBmdW5jdGlvblRvQ2FsbCA9IGluaXRUYWlsd2luZE1lcmdlXG5cbiAgICBmdW5jdGlvbiBpbml0VGFpbHdpbmRNZXJnZShjbGFzc0xpc3Q6IHN0cmluZykge1xuICAgICAgICBjb25zdCBjb25maWcgPSBjcmVhdGVDb25maWdSZXN0LnJlZHVjZShcbiAgICAgICAgICAgIChwcmV2aW91c0NvbmZpZywgY3JlYXRlQ29uZmlnQ3VycmVudCkgPT4gY3JlYXRlQ29uZmlnQ3VycmVudChwcmV2aW91c0NvbmZpZyksXG4gICAgICAgICAgICBjcmVhdGVDb25maWdGaXJzdCgpIGFzIEdlbmVyaWNDb25maWcsXG4gICAgICAgIClcblxuICAgICAgICBjb25maWdVdGlscyA9IGNyZWF0ZUNvbmZpZ1V0aWxzKGNvbmZpZylcbiAgICAgICAgY2FjaGVHZXQgPSBjb25maWdVdGlscy5jYWNoZS5nZXRcbiAgICAgICAgY2FjaGVTZXQgPSBjb25maWdVdGlscy5jYWNoZS5zZXRcbiAgICAgICAgZnVuY3Rpb25Ub0NhbGwgPSB0YWlsd2luZE1lcmdlXG5cbiAgICAgICAgcmV0dXJuIHRhaWx3aW5kTWVyZ2UoY2xhc3NMaXN0KVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRhaWx3aW5kTWVyZ2UoY2xhc3NMaXN0OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgY2FjaGVkUmVzdWx0ID0gY2FjaGVHZXQoY2xhc3NMaXN0KVxuXG4gICAgICAgIGlmIChjYWNoZWRSZXN1bHQpIHtcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRSZXN1bHRcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG1lcmdlQ2xhc3NMaXN0KGNsYXNzTGlzdCwgY29uZmlnVXRpbHMpXG4gICAgICAgIGNhY2hlU2V0KGNsYXNzTGlzdCwgcmVzdWx0KVxuXG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICB9XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gY2FsbFRhaWx3aW5kTWVyZ2UoKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvblRvQ2FsbCh0d0pvaW4uYXBwbHkobnVsbCwgYXJndW1lbnRzIGFzIGFueSkpXG4gICAgfVxufVxuIiwgImltcG9ydCB7IERlZmF1bHRUaGVtZUdyb3VwSWRzLCBOb0luZmVyLCBUaGVtZUdldHRlciwgVGhlbWVPYmplY3QgfSBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgY29uc3QgZnJvbVRoZW1lID0gPFxuICAgIEFkZGl0aW9uYWxUaGVtZUdyb3VwSWRzIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsXG4gICAgRGVmYXVsdFRoZW1lR3JvdXBJZHNJbm5lciBleHRlbmRzIHN0cmluZyA9IERlZmF1bHRUaGVtZUdyb3VwSWRzLFxuPihrZXk6IE5vSW5mZXI8RGVmYXVsdFRoZW1lR3JvdXBJZHNJbm5lciB8IEFkZGl0aW9uYWxUaGVtZUdyb3VwSWRzPik6IFRoZW1lR2V0dGVyID0+IHtcbiAgICBjb25zdCB0aGVtZUdldHRlciA9ICh0aGVtZTogVGhlbWVPYmplY3Q8RGVmYXVsdFRoZW1lR3JvdXBJZHNJbm5lciB8IEFkZGl0aW9uYWxUaGVtZUdyb3VwSWRzPikgPT5cbiAgICAgICAgdGhlbWVba2V5XSB8fCBbXVxuXG4gICAgdGhlbWVHZXR0ZXIuaXNUaGVtZUdldHRlciA9IHRydWUgYXMgY29uc3RcblxuICAgIHJldHVybiB0aGVtZUdldHRlclxufVxuIiwgImNvbnN0IGFyYml0cmFyeVZhbHVlUmVnZXggPSAvXlxcWyg/OihbYS16LV0rKTopPyguKylcXF0kL2lcbmNvbnN0IGZyYWN0aW9uUmVnZXggPSAvXlxcZCtcXC9cXGQrJC9cbmNvbnN0IHN0cmluZ0xlbmd0aHMgPSBuZXcgU2V0KFsncHgnLCAnZnVsbCcsICdzY3JlZW4nXSlcbmNvbnN0IHRzaGlydFVuaXRSZWdleCA9IC9eKFxcZCsoXFwuXFxkKyk/KT8oeHN8c218bWR8bGd8eGwpJC9cbmNvbnN0IGxlbmd0aFVuaXRSZWdleCA9XG4gICAgL1xcZCsoJXxweHxyP2VtfFtzZGxdP3YoW2h3aWJdfG1pbnxtYXgpfHB0fHBjfGlufGNtfG1tfGNhcHxjaHxleHxyP2xofGNxKHd8aHxpfGJ8bWlufG1heCkpfFxcYihjYWxjfG1pbnxtYXh8Y2xhbXApXFwoLitcXCl8XjAkL1xuY29uc3QgY29sb3JGdW5jdGlvblJlZ2V4ID0gL14ocmdiYT98aHNsYT98aHdifChvayk/KGxhYnxsY2gpKVxcKC4rXFwpJC9cbi8vIFNoYWRvdyBhbHdheXMgYmVnaW5zIHdpdGggeCBhbmQgeSBvZmZzZXQgc2VwYXJhdGVkIGJ5IHVuZGVyc2NvcmUgb3B0aW9uYWxseSBwcmVwZW5kZWQgYnkgaW5zZXRcbmNvbnN0IHNoYWRvd1JlZ2V4ID0gL14oaW5zZXRfKT8tPygoXFxkKyk/XFwuPyhcXGQrKVthLXpdK3wwKV8tPygoXFxkKyk/XFwuPyhcXGQrKVthLXpdK3wwKS9cbmNvbnN0IGltYWdlUmVnZXggPVxuICAgIC9eKHVybHxpbWFnZXxpbWFnZS1zZXR8Y3Jvc3MtZmFkZXxlbGVtZW50fChyZXBlYXRpbmctKT8obGluZWFyfHJhZGlhbHxjb25pYyktZ3JhZGllbnQpXFwoLitcXCkkL1xuXG5leHBvcnQgY29uc3QgaXNMZW5ndGggPSAodmFsdWU6IHN0cmluZykgPT5cbiAgICBpc051bWJlcih2YWx1ZSkgfHwgc3RyaW5nTGVuZ3Rocy5oYXModmFsdWUpIHx8IGZyYWN0aW9uUmVnZXgudGVzdCh2YWx1ZSlcblxuZXhwb3J0IGNvbnN0IGlzQXJiaXRyYXJ5TGVuZ3RoID0gKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgJ2xlbmd0aCcsIGlzTGVuZ3RoT25seSlcblxuZXhwb3J0IGNvbnN0IGlzTnVtYmVyID0gKHZhbHVlOiBzdHJpbmcpID0+IEJvb2xlYW4odmFsdWUpICYmICFOdW1iZXIuaXNOYU4oTnVtYmVyKHZhbHVlKSlcblxuZXhwb3J0IGNvbnN0IGlzQXJiaXRyYXJ5TnVtYmVyID0gKHZhbHVlOiBzdHJpbmcpID0+IGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsICdudW1iZXInLCBpc051bWJlcilcblxuZXhwb3J0IGNvbnN0IGlzSW50ZWdlciA9ICh2YWx1ZTogc3RyaW5nKSA9PiBCb29sZWFuKHZhbHVlKSAmJiBOdW1iZXIuaXNJbnRlZ2VyKE51bWJlcih2YWx1ZSkpXG5cbmV4cG9ydCBjb25zdCBpc1BlcmNlbnQgPSAodmFsdWU6IHN0cmluZykgPT4gdmFsdWUuZW5kc1dpdGgoJyUnKSAmJiBpc051bWJlcih2YWx1ZS5zbGljZSgwLCAtMSkpXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeVZhbHVlID0gKHZhbHVlOiBzdHJpbmcpID0+IGFyYml0cmFyeVZhbHVlUmVnZXgudGVzdCh2YWx1ZSlcblxuZXhwb3J0IGNvbnN0IGlzVHNoaXJ0U2l6ZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiB0c2hpcnRVbml0UmVnZXgudGVzdCh2YWx1ZSlcblxuY29uc3Qgc2l6ZUxhYmVscyA9IG5ldyBTZXQoWydsZW5ndGgnLCAnc2l6ZScsICdwZXJjZW50YWdlJ10pXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeVNpemUgPSAodmFsdWU6IHN0cmluZykgPT4gZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgc2l6ZUxhYmVscywgaXNOZXZlcilcblxuZXhwb3J0IGNvbnN0IGlzQXJiaXRyYXJ5UG9zaXRpb24gPSAodmFsdWU6IHN0cmluZykgPT5cbiAgICBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCAncG9zaXRpb24nLCBpc05ldmVyKVxuXG5jb25zdCBpbWFnZUxhYmVscyA9IG5ldyBTZXQoWydpbWFnZScsICd1cmwnXSlcblxuZXhwb3J0IGNvbnN0IGlzQXJiaXRyYXJ5SW1hZ2UgPSAodmFsdWU6IHN0cmluZykgPT4gZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgaW1hZ2VMYWJlbHMsIGlzSW1hZ2UpXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeVNoYWRvdyA9ICh2YWx1ZTogc3RyaW5nKSA9PiBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCAnJywgaXNTaGFkb3cpXG5cbmV4cG9ydCBjb25zdCBpc0FueSA9ICgpID0+IHRydWVcblxuY29uc3QgZ2V0SXNBcmJpdHJhcnlWYWx1ZSA9IChcbiAgICB2YWx1ZTogc3RyaW5nLFxuICAgIGxhYmVsOiBzdHJpbmcgfCBTZXQ8c3RyaW5nPixcbiAgICB0ZXN0VmFsdWU6ICh2YWx1ZTogc3RyaW5nKSA9PiBib29sZWFuLFxuKSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXJiaXRyYXJ5VmFsdWVSZWdleC5leGVjKHZhbHVlKVxuXG4gICAgaWYgKHJlc3VsdCkge1xuICAgICAgICBpZiAocmVzdWx0WzFdKSB7XG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIGxhYmVsID09PSAnc3RyaW5nJyA/IHJlc3VsdFsxXSA9PT0gbGFiZWwgOiBsYWJlbC5oYXMocmVzdWx0WzFdKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRlc3RWYWx1ZShyZXN1bHRbMl0hKVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxufVxuXG5jb25zdCBpc0xlbmd0aE9ubHkgPSAodmFsdWU6IHN0cmluZykgPT5cbiAgICAvLyBgY29sb3JGdW5jdGlvblJlZ2V4YCBjaGVjayBpcyBuZWNlc3NhcnkgYmVjYXVzZSBjb2xvciBmdW5jdGlvbnMgY2FuIGhhdmUgcGVyY2VudGFnZXMgaW4gdGhlbSB3aGljaCB3aGljaCB3b3VsZCBiZSBpbmNvcnJlY3RseSBjbGFzc2lmaWVkIGFzIGxlbmd0aHMuXG4gICAgLy8gRm9yIGV4YW1wbGUsIGBoc2woMCAwJSAwJSlgIHdvdWxkIGJlIGNsYXNzaWZpZWQgYXMgYSBsZW5ndGggd2l0aG91dCB0aGlzIGNoZWNrLlxuICAgIC8vIEkgY291bGQgYWxzbyB1c2UgbG9va2JlaGluZCBhc3NlcnRpb24gaW4gYGxlbmd0aFVuaXRSZWdleGAgYnV0IHRoYXQgaXNuJ3Qgc3VwcG9ydGVkIHdpZGVseSBlbm91Z2guXG4gICAgbGVuZ3RoVW5pdFJlZ2V4LnRlc3QodmFsdWUpICYmICFjb2xvckZ1bmN0aW9uUmVnZXgudGVzdCh2YWx1ZSlcblxuY29uc3QgaXNOZXZlciA9ICgpID0+IGZhbHNlXG5cbmNvbnN0IGlzU2hhZG93ID0gKHZhbHVlOiBzdHJpbmcpID0+IHNoYWRvd1JlZ2V4LnRlc3QodmFsdWUpXG5cbmNvbnN0IGlzSW1hZ2UgPSAodmFsdWU6IHN0cmluZykgPT4gaW1hZ2VSZWdleC50ZXN0KHZhbHVlKVxuIiwgImltcG9ydCB7IGZyb21UaGVtZSB9IGZyb20gJy4vZnJvbS10aGVtZSdcbmltcG9ydCB7IENvbmZpZywgRGVmYXVsdENsYXNzR3JvdXBJZHMsIERlZmF1bHRUaGVtZUdyb3VwSWRzIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7XG4gICAgaXNBbnksXG4gICAgaXNBcmJpdHJhcnlJbWFnZSxcbiAgICBpc0FyYml0cmFyeUxlbmd0aCxcbiAgICBpc0FyYml0cmFyeU51bWJlcixcbiAgICBpc0FyYml0cmFyeVBvc2l0aW9uLFxuICAgIGlzQXJiaXRyYXJ5U2hhZG93LFxuICAgIGlzQXJiaXRyYXJ5U2l6ZSxcbiAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgIGlzSW50ZWdlcixcbiAgICBpc0xlbmd0aCxcbiAgICBpc051bWJlcixcbiAgICBpc1BlcmNlbnQsXG4gICAgaXNUc2hpcnRTaXplLFxufSBmcm9tICcuL3ZhbGlkYXRvcnMnXG5cbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0Q29uZmlnID0gKCkgPT4ge1xuICAgIGNvbnN0IGNvbG9ycyA9IGZyb21UaGVtZSgnY29sb3JzJylcbiAgICBjb25zdCBzcGFjaW5nID0gZnJvbVRoZW1lKCdzcGFjaW5nJylcbiAgICBjb25zdCBibHVyID0gZnJvbVRoZW1lKCdibHVyJylcbiAgICBjb25zdCBicmlnaHRuZXNzID0gZnJvbVRoZW1lKCdicmlnaHRuZXNzJylcbiAgICBjb25zdCBib3JkZXJDb2xvciA9IGZyb21UaGVtZSgnYm9yZGVyQ29sb3InKVxuICAgIGNvbnN0IGJvcmRlclJhZGl1cyA9IGZyb21UaGVtZSgnYm9yZGVyUmFkaXVzJylcbiAgICBjb25zdCBib3JkZXJTcGFjaW5nID0gZnJvbVRoZW1lKCdib3JkZXJTcGFjaW5nJylcbiAgICBjb25zdCBib3JkZXJXaWR0aCA9IGZyb21UaGVtZSgnYm9yZGVyV2lkdGgnKVxuICAgIGNvbnN0IGNvbnRyYXN0ID0gZnJvbVRoZW1lKCdjb250cmFzdCcpXG4gICAgY29uc3QgZ3JheXNjYWxlID0gZnJvbVRoZW1lKCdncmF5c2NhbGUnKVxuICAgIGNvbnN0IGh1ZVJvdGF0ZSA9IGZyb21UaGVtZSgnaHVlUm90YXRlJylcbiAgICBjb25zdCBpbnZlcnQgPSBmcm9tVGhlbWUoJ2ludmVydCcpXG4gICAgY29uc3QgZ2FwID0gZnJvbVRoZW1lKCdnYXAnKVxuICAgIGNvbnN0IGdyYWRpZW50Q29sb3JTdG9wcyA9IGZyb21UaGVtZSgnZ3JhZGllbnRDb2xvclN0b3BzJylcbiAgICBjb25zdCBncmFkaWVudENvbG9yU3RvcFBvc2l0aW9ucyA9IGZyb21UaGVtZSgnZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnMnKVxuICAgIGNvbnN0IGluc2V0ID0gZnJvbVRoZW1lKCdpbnNldCcpXG4gICAgY29uc3QgbWFyZ2luID0gZnJvbVRoZW1lKCdtYXJnaW4nKVxuICAgIGNvbnN0IG9wYWNpdHkgPSBmcm9tVGhlbWUoJ29wYWNpdHknKVxuICAgIGNvbnN0IHBhZGRpbmcgPSBmcm9tVGhlbWUoJ3BhZGRpbmcnKVxuICAgIGNvbnN0IHNhdHVyYXRlID0gZnJvbVRoZW1lKCdzYXR1cmF0ZScpXG4gICAgY29uc3Qgc2NhbGUgPSBmcm9tVGhlbWUoJ3NjYWxlJylcbiAgICBjb25zdCBzZXBpYSA9IGZyb21UaGVtZSgnc2VwaWEnKVxuICAgIGNvbnN0IHNrZXcgPSBmcm9tVGhlbWUoJ3NrZXcnKVxuICAgIGNvbnN0IHNwYWNlID0gZnJvbVRoZW1lKCdzcGFjZScpXG4gICAgY29uc3QgdHJhbnNsYXRlID0gZnJvbVRoZW1lKCd0cmFuc2xhdGUnKVxuXG4gICAgY29uc3QgZ2V0T3ZlcnNjcm9sbCA9ICgpID0+IFsnYXV0bycsICdjb250YWluJywgJ25vbmUnXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldE92ZXJmbG93ID0gKCkgPT4gWydhdXRvJywgJ2hpZGRlbicsICdjbGlwJywgJ3Zpc2libGUnLCAnc2Nyb2xsJ10gYXMgY29uc3RcbiAgICBjb25zdCBnZXRTcGFjaW5nV2l0aEF1dG9BbmRBcmJpdHJhcnkgPSAoKSA9PiBbJ2F1dG8nLCBpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5ID0gKCkgPT4gW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmddIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0TGVuZ3RoV2l0aEVtcHR5QW5kQXJiaXRyYXJ5ID0gKCkgPT4gWycnLCBpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGhdIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkgPSAoKSA9PiBbJ2F1dG8nLCBpc051bWJlciwgaXNBcmJpdHJhcnlWYWx1ZV0gYXMgY29uc3RcbiAgICBjb25zdCBnZXRQb3NpdGlvbnMgPSAoKSA9PlxuICAgICAgICBbXG4gICAgICAgICAgICAnYm90dG9tJyxcbiAgICAgICAgICAgICdjZW50ZXInLFxuICAgICAgICAgICAgJ2xlZnQnLFxuICAgICAgICAgICAgJ2xlZnQtYm90dG9tJyxcbiAgICAgICAgICAgICdsZWZ0LXRvcCcsXG4gICAgICAgICAgICAncmlnaHQnLFxuICAgICAgICAgICAgJ3JpZ2h0LWJvdHRvbScsXG4gICAgICAgICAgICAncmlnaHQtdG9wJyxcbiAgICAgICAgICAgICd0b3AnLFxuICAgICAgICBdIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0TGluZVN0eWxlcyA9ICgpID0+IFsnc29saWQnLCAnZGFzaGVkJywgJ2RvdHRlZCcsICdkb3VibGUnLCAnbm9uZSddIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0QmxlbmRNb2RlcyA9ICgpID0+XG4gICAgICAgIFtcbiAgICAgICAgICAgICdub3JtYWwnLFxuICAgICAgICAgICAgJ211bHRpcGx5JyxcbiAgICAgICAgICAgICdzY3JlZW4nLFxuICAgICAgICAgICAgJ292ZXJsYXknLFxuICAgICAgICAgICAgJ2RhcmtlbicsXG4gICAgICAgICAgICAnbGlnaHRlbicsXG4gICAgICAgICAgICAnY29sb3ItZG9kZ2UnLFxuICAgICAgICAgICAgJ2NvbG9yLWJ1cm4nLFxuICAgICAgICAgICAgJ2hhcmQtbGlnaHQnLFxuICAgICAgICAgICAgJ3NvZnQtbGlnaHQnLFxuICAgICAgICAgICAgJ2RpZmZlcmVuY2UnLFxuICAgICAgICAgICAgJ2V4Y2x1c2lvbicsXG4gICAgICAgICAgICAnaHVlJyxcbiAgICAgICAgICAgICdzYXR1cmF0aW9uJyxcbiAgICAgICAgICAgICdjb2xvcicsXG4gICAgICAgICAgICAnbHVtaW5vc2l0eScsXG4gICAgICAgIF0gYXMgY29uc3RcbiAgICBjb25zdCBnZXRBbGlnbiA9ICgpID0+XG4gICAgICAgIFsnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdiZXR3ZWVuJywgJ2Fyb3VuZCcsICdldmVubHknLCAnc3RyZXRjaCddIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0WmVyb0FuZEVtcHR5ID0gKCkgPT4gWycnLCAnMCcsIGlzQXJiaXRyYXJ5VmFsdWVdIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0QnJlYWtzID0gKCkgPT5cbiAgICAgICAgWydhdXRvJywgJ2F2b2lkJywgJ2FsbCcsICdhdm9pZC1wYWdlJywgJ3BhZ2UnLCAnbGVmdCcsICdyaWdodCcsICdjb2x1bW4nXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldE51bWJlckFuZEFyYml0cmFyeSA9ICgpID0+IFtpc051bWJlciwgaXNBcmJpdHJhcnlWYWx1ZV1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGNhY2hlU2l6ZTogNTAwLFxuICAgICAgICBzZXBhcmF0b3I6ICc6JyxcbiAgICAgICAgdGhlbWU6IHtcbiAgICAgICAgICAgIGNvbG9yczogW2lzQW55XSxcbiAgICAgICAgICAgIHNwYWNpbmc6IFtpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGhdLFxuICAgICAgICAgICAgYmx1cjogWydub25lJywgJycsIGlzVHNoaXJ0U2l6ZSwgaXNBcmJpdHJhcnlWYWx1ZV0sXG4gICAgICAgICAgICBicmlnaHRuZXNzOiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIGJvcmRlckNvbG9yOiBbY29sb3JzXSxcbiAgICAgICAgICAgIGJvcmRlclJhZGl1czogWydub25lJywgJycsICdmdWxsJywgaXNUc2hpcnRTaXplLCBpc0FyYml0cmFyeVZhbHVlXSxcbiAgICAgICAgICAgIGJvcmRlclNwYWNpbmc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBib3JkZXJXaWR0aDogZ2V0TGVuZ3RoV2l0aEVtcHR5QW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBjb250cmFzdDogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBncmF5c2NhbGU6IGdldFplcm9BbmRFbXB0eSgpLFxuICAgICAgICAgICAgaHVlUm90YXRlOiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIGludmVydDogZ2V0WmVyb0FuZEVtcHR5KCksXG4gICAgICAgICAgICBnYXA6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBncmFkaWVudENvbG9yU3RvcHM6IFtjb2xvcnNdLFxuICAgICAgICAgICAgZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnM6IFtpc1BlcmNlbnQsIGlzQXJiaXRyYXJ5TGVuZ3RoXSxcbiAgICAgICAgICAgIGluc2V0OiBnZXRTcGFjaW5nV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIG1hcmdpbjogZ2V0U3BhY2luZ1dpdGhBdXRvQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBvcGFjaXR5OiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIHBhZGRpbmc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBzYXR1cmF0ZTogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBzY2FsZTogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBzZXBpYTogZ2V0WmVyb0FuZEVtcHR5KCksXG4gICAgICAgICAgICBza2V3OiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIHNwYWNlOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgdHJhbnNsYXRlOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc0dyb3Vwczoge1xuICAgICAgICAgICAgLy8gTGF5b3V0XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFzcGVjdCBSYXRpb1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FzcGVjdC1yYXRpb1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBhc3BlY3Q6IFt7IGFzcGVjdDogWydhdXRvJywgJ3NxdWFyZScsICd2aWRlbycsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDb250YWluZXJcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jb250YWluZXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY29udGFpbmVyOiBbJ2NvbnRhaW5lciddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDb2x1bW5zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY29sdW1uc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjb2x1bW5zOiBbeyBjb2x1bW5zOiBbaXNUc2hpcnRTaXplXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQnJlYWsgQWZ0ZXJcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9icmVhay1hZnRlclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYnJlYWstYWZ0ZXInOiBbeyAnYnJlYWstYWZ0ZXInOiBnZXRCcmVha3MoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQnJlYWsgQmVmb3JlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYnJlYWstYmVmb3JlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdicmVhay1iZWZvcmUnOiBbeyAnYnJlYWstYmVmb3JlJzogZ2V0QnJlYWtzKCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJyZWFrIEluc2lkZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JyZWFrLWluc2lkZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYnJlYWstaW5zaWRlJzogW3sgJ2JyZWFrLWluc2lkZSc6IFsnYXV0bycsICdhdm9pZCcsICdhdm9pZC1wYWdlJywgJ2F2b2lkLWNvbHVtbiddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3ggRGVjb3JhdGlvbiBCcmVha1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JveC1kZWNvcmF0aW9uLWJyZWFrXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3gtZGVjb3JhdGlvbic6IFt7ICdib3gtZGVjb3JhdGlvbic6IFsnc2xpY2UnLCAnY2xvbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm94IFNpemluZ1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JveC1zaXppbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYm94OiBbeyBib3g6IFsnYm9yZGVyJywgJ2NvbnRlbnQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGlzcGxheVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2Rpc3BsYXlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZGlzcGxheTogW1xuICAgICAgICAgICAgICAgICdibG9jaycsXG4gICAgICAgICAgICAgICAgJ2lubGluZS1ibG9jaycsXG4gICAgICAgICAgICAgICAgJ2lubGluZScsXG4gICAgICAgICAgICAgICAgJ2ZsZXgnLFxuICAgICAgICAgICAgICAgICdpbmxpbmUtZmxleCcsXG4gICAgICAgICAgICAgICAgJ3RhYmxlJyxcbiAgICAgICAgICAgICAgICAnaW5saW5lLXRhYmxlJyxcbiAgICAgICAgICAgICAgICAndGFibGUtY2FwdGlvbicsXG4gICAgICAgICAgICAgICAgJ3RhYmxlLWNlbGwnLFxuICAgICAgICAgICAgICAgICd0YWJsZS1jb2x1bW4nLFxuICAgICAgICAgICAgICAgICd0YWJsZS1jb2x1bW4tZ3JvdXAnLFxuICAgICAgICAgICAgICAgICd0YWJsZS1mb290ZXItZ3JvdXAnLFxuICAgICAgICAgICAgICAgICd0YWJsZS1oZWFkZXItZ3JvdXAnLFxuICAgICAgICAgICAgICAgICd0YWJsZS1yb3ctZ3JvdXAnLFxuICAgICAgICAgICAgICAgICd0YWJsZS1yb3cnLFxuICAgICAgICAgICAgICAgICdmbG93LXJvb3QnLFxuICAgICAgICAgICAgICAgICdncmlkJyxcbiAgICAgICAgICAgICAgICAnaW5saW5lLWdyaWQnLFxuICAgICAgICAgICAgICAgICdjb250ZW50cycsXG4gICAgICAgICAgICAgICAgJ2xpc3QtaXRlbScsXG4gICAgICAgICAgICAgICAgJ2hpZGRlbicsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGbG9hdHNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbG9hdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBmbG9hdDogW3sgZmxvYXQ6IFsncmlnaHQnLCAnbGVmdCcsICdub25lJywgJ3N0YXJ0JywgJ2VuZCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDbGVhclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NsZWFyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNsZWFyOiBbeyBjbGVhcjogWydsZWZ0JywgJ3JpZ2h0JywgJ2JvdGgnLCAnbm9uZScsICdzdGFydCcsICdlbmQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSXNvbGF0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvaXNvbGF0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGlzb2xhdGlvbjogWydpc29sYXRlJywgJ2lzb2xhdGlvbi1hdXRvJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE9iamVjdCBGaXRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vYmplY3QtZml0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvYmplY3QtZml0JzogW3sgb2JqZWN0OiBbJ2NvbnRhaW4nLCAnY292ZXInLCAnZmlsbCcsICdub25lJywgJ3NjYWxlLWRvd24nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT2JqZWN0IFBvc2l0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb2JqZWN0LXBvc2l0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvYmplY3QtcG9zaXRpb24nOiBbeyBvYmplY3Q6IFsuLi5nZXRQb3NpdGlvbnMoKSwgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE92ZXJmbG93XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcmZsb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgb3ZlcmZsb3c6IFt7IG92ZXJmbG93OiBnZXRPdmVyZmxvdygpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdmVyZmxvdyBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcmZsb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ292ZXJmbG93LXgnOiBbeyAnb3ZlcmZsb3cteCc6IGdldE92ZXJmbG93KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE92ZXJmbG93IFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyZmxvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3ZlcmZsb3cteSc6IFt7ICdvdmVyZmxvdy15JzogZ2V0T3ZlcmZsb3coKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3ZlcnNjcm9sbCBCZWhhdmlvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJzY3JvbGwtYmVoYXZpb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgb3ZlcnNjcm9sbDogW3sgb3ZlcnNjcm9sbDogZ2V0T3ZlcnNjcm9sbCgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdmVyc2Nyb2xsIEJlaGF2aW9yIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyc2Nyb2xsLWJlaGF2aW9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdmVyc2Nyb2xsLXgnOiBbeyAnb3ZlcnNjcm9sbC14JzogZ2V0T3ZlcnNjcm9sbCgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdmVyc2Nyb2xsIEJlaGF2aW9yIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyc2Nyb2xsLWJlaGF2aW9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdmVyc2Nyb2xsLXknOiBbeyAnb3ZlcnNjcm9sbC15JzogZ2V0T3ZlcnNjcm9sbCgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Bvc2l0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHBvc2l0aW9uOiBbJ3N0YXRpYycsICdmaXhlZCcsICdhYnNvbHV0ZScsICdyZWxhdGl2ZScsICdzdGlja3knXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG9wIC8gUmlnaHQgLyBCb3R0b20gLyBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGluc2V0OiBbeyBpbnNldDogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmlnaHQgLyBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdpbnNldC14JzogW3sgJ2luc2V0LXgnOiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUb3AgLyBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2luc2V0LXknOiBbeyAnaW5zZXQteSc6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHN0YXJ0OiBbeyBzdGFydDogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGVuZDogW3sgZW5kOiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdG9wOiBbeyB0b3A6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHJpZ2h0OiBbeyByaWdodDogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGJvdHRvbTogW3sgYm90dG9tOiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGxlZnQ6IFt7IGxlZnQ6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFZpc2liaWxpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy92aXNpYmlsaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHZpc2liaWxpdHk6IFsndmlzaWJsZScsICdpbnZpc2libGUnLCAnY29sbGFwc2UnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogWi1JbmRleFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3otaW5kZXhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgejogW3sgejogWydhdXRvJywgaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8vIEZsZXhib3ggYW5kIEdyaWRcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxleCBCYXNpc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtYmFzaXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYmFzaXM6IFt7IGJhc2lzOiBnZXRTcGFjaW5nV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxleCBEaXJlY3Rpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4LWRpcmVjdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZmxleC1kaXJlY3Rpb24nOiBbeyBmbGV4OiBbJ3JvdycsICdyb3ctcmV2ZXJzZScsICdjb2wnLCAnY29sLXJldmVyc2UnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxleCBXcmFwXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleC13cmFwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmbGV4LXdyYXAnOiBbeyBmbGV4OiBbJ3dyYXAnLCAnd3JhcC1yZXZlcnNlJywgJ25vd3JhcCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGbGV4XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBmbGV4OiBbeyBmbGV4OiBbJzEnLCAnYXV0bycsICdpbml0aWFsJywgJ25vbmUnLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxleCBHcm93XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleC1ncm93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGdyb3c6IFt7IGdyb3c6IGdldFplcm9BbmRFbXB0eSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGbGV4IFNocmlua1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtc2hyaW5rXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNocmluazogW3sgc2hyaW5rOiBnZXRaZXJvQW5kRW1wdHkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3JkZXJcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vcmRlclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBvcmRlcjogW3sgb3JkZXI6IFsnZmlyc3QnLCAnbGFzdCcsICdub25lJywgaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBUZW1wbGF0ZSBDb2x1bW5zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmlkLWNvbHMnOiBbeyAnZ3JpZC1jb2xzJzogW2lzQW55XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBDb2x1bW4gU3RhcnQgLyBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWNvbHVtblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnY29sLXN0YXJ0LWVuZCc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNvbDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBzcGFuOiBbJ2Z1bGwnLCBpc0ludGVnZXIsIGlzQXJiaXRyYXJ5VmFsdWVdIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIENvbHVtbiBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtY29sdW1uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdjb2wtc3RhcnQnOiBbeyAnY29sLXN0YXJ0JzogZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBDb2x1bW4gRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1jb2x1bW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2NvbC1lbmQnOiBbeyAnY29sLWVuZCc6IGdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgVGVtcGxhdGUgUm93c1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtdGVtcGxhdGUtcm93c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JpZC1yb3dzJzogW3sgJ2dyaWQtcm93cyc6IFtpc0FueV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgUm93IFN0YXJ0IC8gRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1yb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jvdy1zdGFydC1lbmQnOiBbXG4gICAgICAgICAgICAgICAgeyByb3c6IFsnYXV0bycsIHsgc3BhbjogW2lzSW50ZWdlciwgaXNBcmJpdHJhcnlWYWx1ZV0gfSwgaXNBcmJpdHJhcnlWYWx1ZV0gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgUm93IFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1yb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jvdy1zdGFydCc6IFt7ICdyb3ctc3RhcnQnOiBnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIFJvdyBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLXJvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm93LWVuZCc6IFt7ICdyb3ctZW5kJzogZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBBdXRvIEZsb3dcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWF1dG8tZmxvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JpZC1mbG93JzogW3sgJ2dyaWQtZmxvdyc6IFsncm93JywgJ2NvbCcsICdkZW5zZScsICdyb3ctZGVuc2UnLCAnY29sLWRlbnNlJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgQXV0byBDb2x1bW5zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1hdXRvLWNvbHVtbnNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2F1dG8tY29scyc6IFt7ICdhdXRvLWNvbHMnOiBbJ2F1dG8nLCAnbWluJywgJ21heCcsICdmcicsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIEF1dG8gUm93c1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtYXV0by1yb3dzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdhdXRvLXJvd3MnOiBbeyAnYXV0by1yb3dzJzogWydhdXRvJywgJ21pbicsICdtYXgnLCAnZnInLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR2FwXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ2FwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGdhcDogW3sgZ2FwOiBbZ2FwXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR2FwIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9nYXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dhcC14JzogW3sgJ2dhcC14JzogW2dhcF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdhcCBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ2FwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdnYXAteSc6IFt7ICdnYXAteSc6IFtnYXBdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBKdXN0aWZ5IENvbnRlbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9qdXN0aWZ5LWNvbnRlbnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2p1c3RpZnktY29udGVudCc6IFt7IGp1c3RpZnk6IFsnbm9ybWFsJywgLi4uZ2V0QWxpZ24oKV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEp1c3RpZnkgSXRlbXNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9qdXN0aWZ5LWl0ZW1zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdqdXN0aWZ5LWl0ZW1zJzogW3sgJ2p1c3RpZnktaXRlbXMnOiBbJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnc3RyZXRjaCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBKdXN0aWZ5IFNlbGZcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9qdXN0aWZ5LXNlbGZcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2p1c3RpZnktc2VsZic6IFt7ICdqdXN0aWZ5LXNlbGYnOiBbJ2F1dG8nLCAnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdzdHJldGNoJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFsaWduIENvbnRlbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hbGlnbi1jb250ZW50XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdhbGlnbi1jb250ZW50JzogW3sgY29udGVudDogWydub3JtYWwnLCAuLi5nZXRBbGlnbigpLCAnYmFzZWxpbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQWxpZ24gSXRlbXNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hbGlnbi1pdGVtc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYWxpZ24taXRlbXMnOiBbeyBpdGVtczogWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ2Jhc2VsaW5lJywgJ3N0cmV0Y2gnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQWxpZ24gU2VsZlxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FsaWduLXNlbGZcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2FsaWduLXNlbGYnOiBbeyBzZWxmOiBbJ2F1dG8nLCAnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdzdHJldGNoJywgJ2Jhc2VsaW5lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBsYWNlIENvbnRlbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wbGFjZS1jb250ZW50XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdwbGFjZS1jb250ZW50JzogW3sgJ3BsYWNlLWNvbnRlbnQnOiBbLi4uZ2V0QWxpZ24oKSwgJ2Jhc2VsaW5lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBsYWNlIEl0ZW1zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2UtaXRlbXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3BsYWNlLWl0ZW1zJzogW3sgJ3BsYWNlLWl0ZW1zJzogWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ2Jhc2VsaW5lJywgJ3N0cmV0Y2gnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGxhY2UgU2VsZlxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BsYWNlLXNlbGZcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3BsYWNlLXNlbGYnOiBbeyAncGxhY2Utc2VsZic6IFsnYXV0bycsICdzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ3N0cmV0Y2gnXSB9XSxcbiAgICAgICAgICAgIC8vIFNwYWNpbmdcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZ1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcDogW3sgcDogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHB4OiBbeyBweDogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHB5OiBbeyBweTogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwczogW3sgcHM6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHBlOiBbeyBwZTogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcHQ6IFt7IHB0OiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmcgUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHByOiBbeyBwcjogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcGI6IFt7IHBiOiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmcgTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcGw6IFt7IHBsOiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBtOiBbeyBtOiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbXg6IFt7IG14OiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbXk6IFt7IG15OiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG1zOiBbeyBtczogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbWU6IFt7IG1lOiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBtdDogW3sgbXQ6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW4gUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbXI6IFt7IG1yOiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBtYjogW3sgbWI6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW4gTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBtbDogW3sgbWw6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTcGFjZSBCZXR3ZWVuIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zcGFjZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc3BhY2UteCc6IFt7ICdzcGFjZS14JzogW3NwYWNlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU3BhY2UgQmV0d2VlbiBYIFJldmVyc2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zcGFjZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc3BhY2UteC1yZXZlcnNlJzogWydzcGFjZS14LXJldmVyc2UnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU3BhY2UgQmV0d2VlbiBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3BhY2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NwYWNlLXknOiBbeyAnc3BhY2UteSc6IFtzcGFjZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNwYWNlIEJldHdlZW4gWSBSZXZlcnNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3BhY2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NwYWNlLXktcmV2ZXJzZSc6IFsnc3BhY2UteS1yZXZlcnNlJ10sXG4gICAgICAgICAgICAvLyBTaXppbmdcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy93aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB3OiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB3OiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnYXV0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWluJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtYXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc3Z3JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdsdncnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2R2dycsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2luZyxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWluLVdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWluLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdtaW4tdyc6IFt7ICdtaW4tdyc6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnbWluJywgJ21heCcsICdmaXQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWF4LVdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWF4LXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdtYXgtdyc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICdtYXgtdyc6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzcGFjaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2Z1bGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21pbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWF4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdmaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3NlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgc2NyZWVuOiBbaXNUc2hpcnRTaXplXSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUc2hpcnRTaXplLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBIZWlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9oZWlnaHRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaDogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYXV0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWluJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtYXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc3ZoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdsdmgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2R2aCcsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1pbi1IZWlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9taW4taGVpZ2h0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdtaW4taCc6IFtcbiAgICAgICAgICAgICAgICB7ICdtaW4taCc6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnbWluJywgJ21heCcsICdmaXQnLCAnc3ZoJywgJ2x2aCcsICdkdmgnXSB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWF4LUhlaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21heC1oZWlnaHRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ21heC1oJzogW1xuICAgICAgICAgICAgICAgIHsgJ21heC1oJzogW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmcsICdtaW4nLCAnbWF4JywgJ2ZpdCcsICdzdmgnLCAnbHZoJywgJ2R2aCddIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTaXplXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2l6ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzaXplOiBbeyBzaXplOiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZywgJ2F1dG8nLCAnbWluJywgJ21heCcsICdmaXQnXSB9XSxcbiAgICAgICAgICAgIC8vIFR5cG9ncmFwaHlcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBTaXplXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC1zaXplXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmb250LXNpemUnOiBbeyB0ZXh0OiBbJ2Jhc2UnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5TGVuZ3RoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBTbW9vdGhpbmdcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXNtb290aGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZm9udC1zbW9vdGhpbmcnOiBbJ2FudGlhbGlhc2VkJywgJ3N1YnBpeGVsLWFudGlhbGlhc2VkJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgU3R5bGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXN0eWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmb250LXN0eWxlJzogWydpdGFsaWMnLCAnbm90LWl0YWxpYyddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFdlaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtd2VpZ2h0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmb250LXdlaWdodCc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQ6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICd0aGluJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdleHRyYWxpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdsaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9ybWFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3NlbWlib2xkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdib2xkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdleHRyYWJvbGQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JsYWNrJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5TnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IEZhbWlseVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtZmFtaWx5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmb250LWZhbWlseSc6IFt7IGZvbnQ6IFtpc0FueV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2Z2bi1ub3JtYWwnOiBbJ25vcm1hbC1udW1zJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2Z2bi1vcmRpbmFsJzogWydvcmRpbmFsJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2Z2bi1zbGFzaGVkLXplcm8nOiBbJ3NsYXNoZWQtemVybyddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmdm4tZmlndXJlJzogWydsaW5pbmctbnVtcycsICdvbGRzdHlsZS1udW1zJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2Z2bi1zcGFjaW5nJzogWydwcm9wb3J0aW9uYWwtbnVtcycsICd0YWJ1bGFyLW51bXMnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZnZuLWZyYWN0aW9uJzogWydkaWFnb25hbC1mcmFjdGlvbnMnLCAnc3RhY2tlZC1mcmFjdG9ucyddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBMZXR0ZXIgU3BhY2luZ1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xldHRlci1zcGFjaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRyYWNraW5nOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0cmFja2luZzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ3RpZ2h0ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdub3JtYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd3aWRlc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGluZSBDbGFtcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xpbmUtY2xhbXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2xpbmUtY2xhbXAnOiBbeyAnbGluZS1jbGFtcCc6IFsnbm9uZScsIGlzTnVtYmVyLCBpc0FyYml0cmFyeU51bWJlcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIExpbmUgSGVpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGluZS1oZWlnaHRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbGVhZGluZzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGVhZGluZzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzbnVnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdub3JtYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbGF4ZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2xvb3NlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGlzdCBTdHlsZSBJbWFnZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xpc3Qtc3R5bGUtaW1hZ2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2xpc3QtaW1hZ2UnOiBbeyAnbGlzdC1pbWFnZSc6IFsnbm9uZScsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBMaXN0IFN0eWxlIFR5cGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saXN0LXN0eWxlLXR5cGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2xpc3Qtc3R5bGUtdHlwZSc6IFt7IGxpc3Q6IFsnbm9uZScsICdkaXNjJywgJ2RlY2ltYWwnLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGlzdCBTdHlsZSBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xpc3Qtc3R5bGUtcG9zaXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2xpc3Qtc3R5bGUtcG9zaXRpb24nOiBbeyBsaXN0OiBbJ2luc2lkZScsICdvdXRzaWRlJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBsYWNlaG9sZGVyIENvbG9yXG4gICAgICAgICAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSBUYWlsd2luZCBDU1MgdjMuMC4wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2Vob2xkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3BsYWNlaG9sZGVyLWNvbG9yJzogW3sgcGxhY2Vob2xkZXI6IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQbGFjZWhvbGRlciBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2Vob2xkZXItb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncGxhY2Vob2xkZXItb3BhY2l0eSc6IFt7ICdwbGFjZWhvbGRlci1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IEFsaWdubWVudFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtYWxpZ25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtYWxpZ25tZW50JzogW3sgdGV4dDogWydsZWZ0JywgJ2NlbnRlcicsICdyaWdodCcsICdqdXN0aWZ5JywgJ3N0YXJ0JywgJ2VuZCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1jb2xvcic6IFt7IHRleHQ6IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtb3BhY2l0eSc6IFt7ICd0ZXh0LW9wYWNpdHknOiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgRGVjb3JhdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtZGVjb3JhdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1kZWNvcmF0aW9uJzogWyd1bmRlcmxpbmUnLCAnb3ZlcmxpbmUnLCAnbGluZS10aHJvdWdoJywgJ25vLXVuZGVybGluZSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IERlY29yYXRpb24gU3R5bGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWRlY29yYXRpb24tc3R5bGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtZGVjb3JhdGlvbi1zdHlsZSc6IFt7IGRlY29yYXRpb246IFsuLi5nZXRMaW5lU3R5bGVzKCksICd3YXZ5J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgRGVjb3JhdGlvbiBUaGlja25lc3NcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzJzogW1xuICAgICAgICAgICAgICAgIHsgZGVjb3JhdGlvbjogWydhdXRvJywgJ2Zyb20tZm9udCcsIGlzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aF0gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgVW5kZXJsaW5lIE9mZnNldFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtdW5kZXJsaW5lLW9mZnNldFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndW5kZXJsaW5lLW9mZnNldCc6IFt7ICd1bmRlcmxpbmUtb2Zmc2V0JzogWydhdXRvJywgaXNMZW5ndGgsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IERlY29yYXRpb24gQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWRlY29yYXRpb24tY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtZGVjb3JhdGlvbi1jb2xvcic6IFt7IGRlY29yYXRpb246IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IFRyYW5zZm9ybVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtdHJhbnNmb3JtXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LXRyYW5zZm9ybSc6IFsndXBwZXJjYXNlJywgJ2xvd2VyY2FzZScsICdjYXBpdGFsaXplJywgJ25vcm1hbC1jYXNlJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgT3ZlcmZsb3dcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LW92ZXJmbG93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LW92ZXJmbG93JzogWyd0cnVuY2F0ZScsICd0ZXh0LWVsbGlwc2lzJywgJ3RleHQtY2xpcCddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IFdyYXBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LXdyYXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtd3JhcCc6IFt7IHRleHQ6IFsnd3JhcCcsICdub3dyYXAnLCAnYmFsYW5jZScsICdwcmV0dHknXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBJbmRlbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWluZGVudFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpbmRlbnQ6IFt7IGluZGVudDogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVmVydGljYWwgQWxpZ25tZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdmVydGljYWwtYWxpZ25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3ZlcnRpY2FsLWFsaWduJzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYWxpZ246IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdiYXNlbGluZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAndG9wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtaWRkbGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JvdHRvbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAndGV4dC10b3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtYm90dG9tJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzdWInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3N1cGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFdoaXRlc3BhY2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy93aGl0ZXNwYWNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHdoaXRlc3BhY2U6IFtcbiAgICAgICAgICAgICAgICB7IHdoaXRlc3BhY2U6IFsnbm9ybWFsJywgJ25vd3JhcCcsICdwcmUnLCAncHJlLWxpbmUnLCAncHJlLXdyYXAnLCAnYnJlYWstc3BhY2VzJ10gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFdvcmQgQnJlYWtcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy93b3JkLWJyZWFrXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGJyZWFrOiBbeyBicmVhazogWydub3JtYWwnLCAnd29yZHMnLCAnYWxsJywgJ2tlZXAnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSHlwaGVuc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2h5cGhlbnNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaHlwaGVuczogW3sgaHlwaGVuczogWydub25lJywgJ21hbnVhbCcsICdhdXRvJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENvbnRlbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jb250ZW50XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNvbnRlbnQ6IFt7IGNvbnRlbnQ6IFsnbm9uZScsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLy8gQmFja2dyb3VuZHNcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBBdHRhY2htZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1hdHRhY2htZW50XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1hdHRhY2htZW50JzogW3sgYmc6IFsnZml4ZWQnLCAnbG9jYWwnLCAnc2Nyb2xsJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgQ2xpcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtY2xpcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctY2xpcCc6IFt7ICdiZy1jbGlwJzogWydib3JkZXInLCAncGFkZGluZycsICdjb250ZW50JywgJ3RleHQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSBUYWlsd2luZCBDU1MgdjMuMC4wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1vcGFjaXR5JzogW3sgJ2JnLW9wYWNpdHknOiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgT3JpZ2luXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1vcmlnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLW9yaWdpbic6IFt7ICdiZy1vcmlnaW4nOiBbJ2JvcmRlcicsICdwYWRkaW5nJywgJ2NvbnRlbnQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtcG9zaXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLXBvc2l0aW9uJzogW3sgYmc6IFsuLi5nZXRQb3NpdGlvbnMoKSwgaXNBcmJpdHJhcnlQb3NpdGlvbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgUmVwZWF0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1yZXBlYXRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLXJlcGVhdCc6IFt7IGJnOiBbJ25vLXJlcGVhdCcsIHsgcmVwZWF0OiBbJycsICd4JywgJ3knLCAncm91bmQnLCAnc3BhY2UnXSB9XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBTaXplXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1zaXplXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1zaXplJzogW3sgYmc6IFsnYXV0bycsICdjb3ZlcicsICdjb250YWluJywgaXNBcmJpdHJhcnlTaXplXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBJbWFnZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtaW1hZ2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLWltYWdlJzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYmc6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgJ2dyYWRpZW50LXRvJzogWyd0JywgJ3RyJywgJ3InLCAnYnInLCAnYicsICdibCcsICdsJywgJ3RsJ10gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5SW1hZ2UsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1jb2xvcic6IFt7IGJnOiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgRnJvbSBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmFkaWVudC1mcm9tLXBvcyc6IFt7IGZyb206IFtncmFkaWVudENvbG9yU3RvcFBvc2l0aW9uc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIFZpYSBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmFkaWVudC12aWEtcG9zJzogW3sgdmlhOiBbZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBUbyBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmFkaWVudC10by1wb3MnOiBbeyB0bzogW2dyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgRnJvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmFkaWVudC1mcm9tJzogW3sgZnJvbTogW2dyYWRpZW50Q29sb3JTdG9wc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIFZpYVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmFkaWVudC12aWEnOiBbeyB2aWE6IFtncmFkaWVudENvbG9yU3RvcHNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBUb1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmFkaWVudC10byc6IFt7IHRvOiBbZ3JhZGllbnRDb2xvclN0b3BzXSB9XSxcbiAgICAgICAgICAgIC8vIEJvcmRlcnNcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1c1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcm91bmRlZDogW3sgcm91bmRlZDogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXMnOiBbeyAncm91bmRlZC1zJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1lJzogW3sgJ3JvdW5kZWQtZSc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtdCc6IFt7ICdyb3VuZGVkLXQnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtcic6IFt7ICdyb3VuZGVkLXInOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLWInOiBbeyAncm91bmRlZC1iJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtbCc6IFt7ICdyb3VuZGVkLWwnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBTdGFydCBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtc3MnOiBbeyAncm91bmRlZC1zcyc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIFN0YXJ0IEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtc2UnOiBbeyAncm91bmRlZC1zZSc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIEVuZCBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLWVlJzogW3sgJ3JvdW5kZWQtZWUnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBFbmQgU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLWVzJzogW3sgJ3JvdW5kZWQtZXMnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBUb3AgTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtdGwnOiBbeyAncm91bmRlZC10bCc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIFRvcCBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtdHInOiBbeyAncm91bmRlZC10cic6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIEJvdHRvbSBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtYnInOiBbeyAncm91bmRlZC1icic6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIEJvdHRvbSBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1ibCc6IFt7ICdyb3VuZGVkLWJsJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXcnOiBbeyBib3JkZXI6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy14JzogW3sgJ2JvcmRlci14JzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LXknOiBbeyAnYm9yZGVyLXknOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LXMnOiBbeyAnYm9yZGVyLXMnOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy1lJzogW3sgJ2JvcmRlci1lJzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXctdCc6IFt7ICdib3JkZXItdCc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXctcic6IFt7ICdib3JkZXItcic6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LWInOiBbeyAnYm9yZGVyLWInOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXctbCc6IFt7ICdib3JkZXItbCc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1vcGFjaXR5JzogW3sgJ2JvcmRlci1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgU3R5bGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItc3R5bGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1zdHlsZSc6IFt7IGJvcmRlcjogWy4uLmdldExpbmVTdHlsZXMoKSwgJ2hpZGRlbiddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgV2lkdGggWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLXgnOiBbeyAnZGl2aWRlLXgnOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgV2lkdGggWCBSZXZlcnNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkaXZpZGUteC1yZXZlcnNlJzogWydkaXZpZGUteC1yZXZlcnNlJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpdmlkZSBXaWR0aCBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkaXZpZGUteSc6IFt7ICdkaXZpZGUteSc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpdmlkZSBXaWR0aCBZIFJldmVyc2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2RpdmlkZS15LXJldmVyc2UnOiBbJ2RpdmlkZS15LXJldmVyc2UnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGl2aWRlIE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLW9wYWNpdHknOiBbeyAnZGl2aWRlLW9wYWNpdHknOiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpdmlkZSBTdHlsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS1zdHlsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLXN0eWxlJzogW3sgZGl2aWRlOiBnZXRMaW5lU3R5bGVzKCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yJzogW3sgYm9yZGVyOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3IgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXgnOiBbeyAnYm9yZGVyLXgnOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3IgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXknOiBbeyAnYm9yZGVyLXknOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3IgVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sb3ItdCc6IFt7ICdib3JkZXItdCc6IFtib3JkZXJDb2xvcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBDb2xvciBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXInOiBbeyAnYm9yZGVyLXInOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3IgQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sb3ItYic6IFt7ICdib3JkZXItYic6IFtib3JkZXJDb2xvcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBDb2xvciBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sb3ItbCc6IFt7ICdib3JkZXItbCc6IFtib3JkZXJDb2xvcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpdmlkZSBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLWNvbG9yJzogW3sgZGl2aWRlOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdXRsaW5lIFN0eWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3V0bGluZS1zdHlsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3V0bGluZS1zdHlsZSc6IFt7IG91dGxpbmU6IFsnJywgLi4uZ2V0TGluZVN0eWxlcygpXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3V0bGluZSBPZmZzZXRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdXRsaW5lLW9mZnNldFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3V0bGluZS1vZmZzZXQnOiBbeyAnb3V0bGluZS1vZmZzZXQnOiBbaXNMZW5ndGgsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdXRsaW5lIFdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3V0bGluZS13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3V0bGluZS13JzogW3sgb3V0bGluZTogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE91dGxpbmUgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdXRsaW5lLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdXRsaW5lLWNvbG9yJzogW3sgb3V0bGluZTogW2NvbG9yc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpbmcgV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyaW5nLXcnOiBbeyByaW5nOiBnZXRMZW5ndGhXaXRoRW1wdHlBbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmluZyBXaWR0aCBJbnNldFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jpbmctd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jpbmctdy1pbnNldCc6IFsncmluZy1pbnNldCddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaW5nIENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncmluZy1jb2xvcic6IFt7IHJpbmc6IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaW5nIE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jpbmctb3BhY2l0eSc6IFt7ICdyaW5nLW9wYWNpdHknOiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpbmcgT2Zmc2V0IFdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy1vZmZzZXQtd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jpbmctb2Zmc2V0LXcnOiBbeyAncmluZy1vZmZzZXQnOiBbaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmluZyBPZmZzZXQgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLW9mZnNldC1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncmluZy1vZmZzZXQtY29sb3InOiBbeyAncmluZy1vZmZzZXQnOiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8vIEVmZmVjdHNcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm94IFNoYWRvd1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JveC1zaGFkb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2hhZG93OiBbeyBzaGFkb3c6IFsnJywgJ2lubmVyJywgJ25vbmUnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5U2hhZG93XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm94IFNoYWRvdyBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JveC1zaGFkb3ctY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NoYWRvdy1jb2xvcic6IFt7IHNoYWRvdzogW2lzQW55XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3BhY2l0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL29wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgb3BhY2l0eTogW3sgb3BhY2l0eTogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNaXggQmxlbmQgTW9kZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21peC1ibGVuZC1tb2RlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdtaXgtYmxlbmQnOiBbeyAnbWl4LWJsZW5kJzogWy4uLmdldEJsZW5kTW9kZXMoKSwgJ3BsdXMtbGlnaHRlcicsICdwbHVzLWRhcmtlciddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIEJsZW5kIE1vZGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWJsZW5kLW1vZGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLWJsZW5kJzogW3sgJ2JnLWJsZW5kJzogZ2V0QmxlbmRNb2RlcygpIH1dLFxuICAgICAgICAgICAgLy8gRmlsdGVyc1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGaWx0ZXJcbiAgICAgICAgICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIFRhaWx3aW5kIENTUyB2My4wLjBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9maWx0ZXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZmlsdGVyOiBbeyBmaWx0ZXI6IFsnJywgJ25vbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmx1clxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JsdXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYmx1cjogW3sgYmx1cjogW2JsdXJdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCcmlnaHRuZXNzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYnJpZ2h0bmVzc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBicmlnaHRuZXNzOiBbeyBicmlnaHRuZXNzOiBbYnJpZ2h0bmVzc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENvbnRyYXN0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY29udHJhc3RcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY29udHJhc3Q6IFt7IGNvbnRyYXN0OiBbY29udHJhc3RdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEcm9wIFNoYWRvd1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2Ryb3Atc2hhZG93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkcm9wLXNoYWRvdyc6IFt7ICdkcm9wLXNoYWRvdyc6IFsnJywgJ25vbmUnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmF5c2NhbGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmF5c2NhbGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZ3JheXNjYWxlOiBbeyBncmF5c2NhbGU6IFtncmF5c2NhbGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBIdWUgUm90YXRlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvaHVlLXJvdGF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnaHVlLXJvdGF0ZSc6IFt7ICdodWUtcm90YXRlJzogW2h1ZVJvdGF0ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEludmVydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ludmVydFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpbnZlcnQ6IFt7IGludmVydDogW2ludmVydF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNhdHVyYXRlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2F0dXJhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2F0dXJhdGU6IFt7IHNhdHVyYXRlOiBbc2F0dXJhdGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTZXBpYVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NlcGlhXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNlcGlhOiBbeyBzZXBpYTogW3NlcGlhXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgRmlsdGVyXG4gICAgICAgICAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSBUYWlsd2luZCBDU1MgdjMuMC4wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtZmlsdGVyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1maWx0ZXInOiBbeyAnYmFja2Ryb3AtZmlsdGVyJzogWycnLCAnbm9uZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBCbHVyXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtYmx1clxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtYmx1cic6IFt7ICdiYWNrZHJvcC1ibHVyJzogW2JsdXJdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBCcmlnaHRuZXNzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtYnJpZ2h0bmVzc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtYnJpZ2h0bmVzcyc6IFt7ICdiYWNrZHJvcC1icmlnaHRuZXNzJzogW2JyaWdodG5lc3NdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBDb250cmFzdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWNvbnRyYXN0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1jb250cmFzdCc6IFt7ICdiYWNrZHJvcC1jb250cmFzdCc6IFtjb250cmFzdF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIEdyYXlzY2FsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWdyYXlzY2FsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtZ3JheXNjYWxlJzogW3sgJ2JhY2tkcm9wLWdyYXlzY2FsZSc6IFtncmF5c2NhbGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBIdWUgUm90YXRlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtaHVlLXJvdGF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtaHVlLXJvdGF0ZSc6IFt7ICdiYWNrZHJvcC1odWUtcm90YXRlJzogW2h1ZVJvdGF0ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIEludmVydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWludmVydFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtaW52ZXJ0JzogW3sgJ2JhY2tkcm9wLWludmVydCc6IFtpbnZlcnRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3Atb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3Atb3BhY2l0eSc6IFt7ICdiYWNrZHJvcC1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBTYXR1cmF0ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLXNhdHVyYXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1zYXR1cmF0ZSc6IFt7ICdiYWNrZHJvcC1zYXR1cmF0ZSc6IFtzYXR1cmF0ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIFNlcGlhXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3Atc2VwaWFcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLXNlcGlhJzogW3sgJ2JhY2tkcm9wLXNlcGlhJzogW3NlcGlhXSB9XSxcbiAgICAgICAgICAgIC8vIFRhYmxlc1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sbGFwc2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sbGFwc2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xsYXBzZSc6IFt7IGJvcmRlcjogWydjb2xsYXBzZScsICdzZXBhcmF0ZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgU3BhY2luZ1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1zcGFjaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItc3BhY2luZyc6IFt7ICdib3JkZXItc3BhY2luZyc6IFtib3JkZXJTcGFjaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFNwYWNpbmcgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1zcGFjaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItc3BhY2luZy14JzogW3sgJ2JvcmRlci1zcGFjaW5nLXgnOiBbYm9yZGVyU3BhY2luZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBTcGFjaW5nIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItc3BhY2luZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXNwYWNpbmcteSc6IFt7ICdib3JkZXItc3BhY2luZy15JzogW2JvcmRlclNwYWNpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUYWJsZSBMYXlvdXRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90YWJsZS1sYXlvdXRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RhYmxlLWxheW91dCc6IFt7IHRhYmxlOiBbJ2F1dG8nLCAnZml4ZWQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ2FwdGlvbiBTaWRlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY2FwdGlvbi1zaWRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNhcHRpb246IFt7IGNhcHRpb246IFsndG9wJywgJ2JvdHRvbSddIH1dLFxuICAgICAgICAgICAgLy8gVHJhbnNpdGlvbnMgYW5kIEFuaW1hdGlvblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuaXNpdGlvbiBQcm9wZXJ0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zaXRpb24tcHJvcGVydHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2FsbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvcnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ29wYWNpdHknLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3NoYWRvdycsXG4gICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNmb3JtJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5zaXRpb24gRHVyYXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2l0aW9uLWR1cmF0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGR1cmF0aW9uOiBbeyBkdXJhdGlvbjogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5zaXRpb24gVGltaW5nIEZ1bmN0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZWFzZTogW3sgZWFzZTogWydsaW5lYXInLCAnaW4nLCAnb3V0JywgJ2luLW91dCcsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuc2l0aW9uIERlbGF5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNpdGlvbi1kZWxheVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBkZWxheTogW3sgZGVsYXk6IGdldE51bWJlckFuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBbmltYXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hbmltYXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYW5pbWF0ZTogW3sgYW5pbWF0ZTogWydub25lJywgJ3NwaW4nLCAncGluZycsICdwdWxzZScsICdib3VuY2UnLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8vIFRyYW5zZm9ybXNcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbnNmb3JtXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNmb3JtXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRyYW5zZm9ybTogW3sgdHJhbnNmb3JtOiBbJycsICdncHUnLCAnbm9uZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY2FsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NjYWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNjYWxlOiBbeyBzY2FsZTogW3NjYWxlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2NhbGUgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NjYWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY2FsZS14JzogW3sgJ3NjYWxlLXgnOiBbc2NhbGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY2FsZSBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2NhbGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NjYWxlLXknOiBbeyAnc2NhbGUteSc6IFtzY2FsZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJvdGF0ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3JvdGF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICByb3RhdGU6IFt7IHJvdGF0ZTogW2lzSW50ZWdlciwgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5zbGF0ZSBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNsYXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0cmFuc2xhdGUteCc6IFt7ICd0cmFuc2xhdGUteCc6IFt0cmFuc2xhdGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuc2xhdGUgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zbGF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndHJhbnNsYXRlLXknOiBbeyAndHJhbnNsYXRlLXknOiBbdHJhbnNsYXRlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2tldyBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2tld1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2tldy14JzogW3sgJ3NrZXcteCc6IFtza2V3XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2tldyBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2tld1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2tldy15JzogW3sgJ3NrZXcteSc6IFtza2V3XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbnNmb3JtIE9yaWdpblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zZm9ybS1vcmlnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RyYW5zZm9ybS1vcmlnaW4nOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW46IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RvcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAndG9wLXJpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdyaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYm90dG9tLXJpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdib3R0b20nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JvdHRvbS1sZWZ0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdsZWZ0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0b3AtbGVmdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLy8gSW50ZXJhY3Rpdml0eVxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBY2NlbnQgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hY2NlbnQtY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYWNjZW50OiBbeyBhY2NlbnQ6IFsnYXV0bycsIGNvbG9yc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFwcGVhcmFuY2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hcHBlYXJhbmNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGFwcGVhcmFuY2U6IFt7IGFwcGVhcmFuY2U6IFsnbm9uZScsICdhdXRvJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEN1cnNvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2N1cnNvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjdXJzb3I6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnNvcjogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmF1bHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3dhaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21vdmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2hlbHAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25vdC1hbGxvd2VkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjb250ZXh0LW1lbnUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2dyZXNzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjZWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjcm9zc2hhaXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcnRpY2FsLXRleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2FsaWFzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjb3B5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICduby1kcm9wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdncmFiJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdncmFiYmluZycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYWxsLXNjcm9sbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnY29sLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAncm93LXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbi1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2UtcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAndy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25lLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbnctcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzZS1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3N3LXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZXctcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICducy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25lc3ctcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdud3NlLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnem9vbS1pbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnem9vbS1vdXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ2FyZXQgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9qdXN0LWluLXRpbWUtbW9kZSNjYXJldC1jb2xvci11dGlsaXRpZXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2NhcmV0LWNvbG9yJzogW3sgY2FyZXQ6IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQb2ludGVyIEV2ZW50c1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BvaW50ZXItZXZlbnRzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdwb2ludGVyLWV2ZW50cyc6IFt7ICdwb2ludGVyLWV2ZW50cyc6IFsnbm9uZScsICdhdXRvJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJlc2l6ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jlc2l6ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICByZXNpemU6IFt7IHJlc2l6ZTogWydub25lJywgJ3knLCAneCcsICcnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIEJlaGF2aW9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLWJlaGF2aW9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtYmVoYXZpb3InOiBbeyBzY3JvbGw6IFsnYXV0bycsICdzbW9vdGgnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1tJzogW3sgJ3Njcm9sbC1tJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW14JzogW3sgJ3Njcm9sbC1teCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1teSc6IFt7ICdzY3JvbGwtbXknOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW1zJzogW3sgJ3Njcm9sbC1tcyc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW1lJzogW3sgJ3Njcm9sbC1tZSc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW10JzogW3sgJ3Njcm9sbC1tdCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbXInOiBbeyAnc2Nyb2xsLW1yJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbWInOiBbeyAnc2Nyb2xsLW1iJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW1sJzogW3sgJ3Njcm9sbC1tbCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1wJzogW3sgJ3Njcm9sbC1wJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcHgnOiBbeyAnc2Nyb2xsLXB4JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcHknOiBbeyAnc2Nyb2xsLXB5JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXBzJzogW3sgJ3Njcm9sbC1wcyc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcGUnOiBbeyAnc2Nyb2xsLXBlJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1wdCc6IFt7ICdzY3JvbGwtcHQnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZyBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcHInOiBbeyAnc2Nyb2xsLXByJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1wYic6IFt7ICdzY3JvbGwtcGInOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZyBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1wbCc6IFt7ICdzY3JvbGwtcGwnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgU25hcCBBbGlnblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1zbmFwLWFsaWduXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzbmFwLWFsaWduJzogW3sgc25hcDogWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ2FsaWduLW5vbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFNuYXAgU3RvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1zbmFwLXN0b3BcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NuYXAtc3RvcCc6IFt7IHNuYXA6IFsnbm9ybWFsJywgJ2Fsd2F5cyddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgU25hcCBUeXBlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXNuYXAtdHlwZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc25hcC10eXBlJzogW3sgc25hcDogWydub25lJywgJ3gnLCAneScsICdib3RoJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBTbmFwIFR5cGUgU3RyaWN0bmVzc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1zbmFwLXR5cGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NuYXAtc3RyaWN0bmVzcyc6IFt7IHNuYXA6IFsnbWFuZGF0b3J5JywgJ3Byb3hpbWl0eSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUb3VjaCBBY3Rpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3VjaC1hY3Rpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdG91Y2g6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRvdWNoOiBbJ2F1dG8nLCAnbm9uZScsICdtYW5pcHVsYXRpb24nXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG91Y2ggQWN0aW9uIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3VjaC1hY3Rpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RvdWNoLXgnOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAndG91Y2gtcGFuJzogWyd4JywgJ2xlZnQnLCAncmlnaHQnXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG91Y2ggQWN0aW9uIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3VjaC1hY3Rpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RvdWNoLXknOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAndG91Y2gtcGFuJzogWyd5JywgJ3VwJywgJ2Rvd24nXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG91Y2ggQWN0aW9uIFBpbmNoIFpvb21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3VjaC1hY3Rpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RvdWNoLXB6JzogWyd0b3VjaC1waW5jaC16b29tJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFVzZXIgU2VsZWN0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdXNlci1zZWxlY3RcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2VsZWN0OiBbeyBzZWxlY3Q6IFsnbm9uZScsICd0ZXh0JywgJ2FsbCcsICdhdXRvJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFdpbGwgQ2hhbmdlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvd2lsbC1jaGFuZ2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3dpbGwtY2hhbmdlJzogW1xuICAgICAgICAgICAgICAgIHsgJ3dpbGwtY2hhbmdlJzogWydhdXRvJywgJ3Njcm9sbCcsICdjb250ZW50cycsICd0cmFuc2Zvcm0nLCBpc0FyYml0cmFyeVZhbHVlXSB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8vIFNWR1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGaWxsXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmlsbFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBmaWxsOiBbeyBmaWxsOiBbY29sb3JzLCAnbm9uZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTdHJva2UgV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zdHJva2Utd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3N0cm9rZS13JzogW3sgc3Ryb2tlOiBbaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoLCBpc0FyYml0cmFyeU51bWJlcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFN0cm9rZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3N0cm9rZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzdHJva2U6IFt7IHN0cm9rZTogW2NvbG9ycywgJ25vbmUnXSB9XSxcbiAgICAgICAgICAgIC8vIEFjY2Vzc2liaWxpdHlcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2NyZWVuIFJlYWRlcnNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JlZW4tcmVhZGVyc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzcjogWydzci1vbmx5JywgJ25vdC1zci1vbmx5J10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvcmNlZCBDb2xvciBBZGp1c3RcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb3JjZWQtY29sb3ItYWRqdXN0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmb3JjZWQtY29sb3ItYWRqdXN0JzogW3sgJ2ZvcmNlZC1jb2xvci1hZGp1c3QnOiBbJ2F1dG8nLCAnbm9uZSddIH1dLFxuICAgICAgICB9LFxuICAgICAgICBjb25mbGljdGluZ0NsYXNzR3JvdXBzOiB7XG4gICAgICAgICAgICBvdmVyZmxvdzogWydvdmVyZmxvdy14JywgJ292ZXJmbG93LXknXSxcbiAgICAgICAgICAgIG92ZXJzY3JvbGw6IFsnb3ZlcnNjcm9sbC14JywgJ292ZXJzY3JvbGwteSddLFxuICAgICAgICAgICAgaW5zZXQ6IFsnaW5zZXQteCcsICdpbnNldC15JywgJ3N0YXJ0JywgJ2VuZCcsICd0b3AnLCAncmlnaHQnLCAnYm90dG9tJywgJ2xlZnQnXSxcbiAgICAgICAgICAgICdpbnNldC14JzogWydyaWdodCcsICdsZWZ0J10sXG4gICAgICAgICAgICAnaW5zZXQteSc6IFsndG9wJywgJ2JvdHRvbSddLFxuICAgICAgICAgICAgZmxleDogWydiYXNpcycsICdncm93JywgJ3NocmluayddLFxuICAgICAgICAgICAgZ2FwOiBbJ2dhcC14JywgJ2dhcC15J10sXG4gICAgICAgICAgICBwOiBbJ3B4JywgJ3B5JywgJ3BzJywgJ3BlJywgJ3B0JywgJ3ByJywgJ3BiJywgJ3BsJ10sXG4gICAgICAgICAgICBweDogWydwcicsICdwbCddLFxuICAgICAgICAgICAgcHk6IFsncHQnLCAncGInXSxcbiAgICAgICAgICAgIG06IFsnbXgnLCAnbXknLCAnbXMnLCAnbWUnLCAnbXQnLCAnbXInLCAnbWInLCAnbWwnXSxcbiAgICAgICAgICAgIG14OiBbJ21yJywgJ21sJ10sXG4gICAgICAgICAgICBteTogWydtdCcsICdtYiddLFxuICAgICAgICAgICAgc2l6ZTogWyd3JywgJ2gnXSxcbiAgICAgICAgICAgICdmb250LXNpemUnOiBbJ2xlYWRpbmcnXSxcbiAgICAgICAgICAgICdmdm4tbm9ybWFsJzogW1xuICAgICAgICAgICAgICAgICdmdm4tb3JkaW5hbCcsXG4gICAgICAgICAgICAgICAgJ2Z2bi1zbGFzaGVkLXplcm8nLFxuICAgICAgICAgICAgICAgICdmdm4tZmlndXJlJyxcbiAgICAgICAgICAgICAgICAnZnZuLXNwYWNpbmcnLFxuICAgICAgICAgICAgICAgICdmdm4tZnJhY3Rpb24nLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICdmdm4tb3JkaW5hbCc6IFsnZnZuLW5vcm1hbCddLFxuICAgICAgICAgICAgJ2Z2bi1zbGFzaGVkLXplcm8nOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICAgICAgICdmdm4tZmlndXJlJzogWydmdm4tbm9ybWFsJ10sXG4gICAgICAgICAgICAnZnZuLXNwYWNpbmcnOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICAgICAgICdmdm4tZnJhY3Rpb24nOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICAgICAgICdsaW5lLWNsYW1wJzogWydkaXNwbGF5JywgJ292ZXJmbG93J10sXG4gICAgICAgICAgICByb3VuZGVkOiBbXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtcycsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtZScsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtdCcsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtcicsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtYicsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtbCcsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtc3MnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLXNlJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1lZScsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtZXMnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLXRsJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC10cicsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtYnInLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWJsJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAncm91bmRlZC1zJzogWydyb3VuZGVkLXNzJywgJ3JvdW5kZWQtZXMnXSxcbiAgICAgICAgICAgICdyb3VuZGVkLWUnOiBbJ3JvdW5kZWQtc2UnLCAncm91bmRlZC1lZSddLFxuICAgICAgICAgICAgJ3JvdW5kZWQtdCc6IFsncm91bmRlZC10bCcsICdyb3VuZGVkLXRyJ10sXG4gICAgICAgICAgICAncm91bmRlZC1yJzogWydyb3VuZGVkLXRyJywgJ3JvdW5kZWQtYnInXSxcbiAgICAgICAgICAgICdyb3VuZGVkLWInOiBbJ3JvdW5kZWQtYnInLCAncm91bmRlZC1ibCddLFxuICAgICAgICAgICAgJ3JvdW5kZWQtbCc6IFsncm91bmRlZC10bCcsICdyb3VuZGVkLWJsJ10sXG4gICAgICAgICAgICAnYm9yZGVyLXNwYWNpbmcnOiBbJ2JvcmRlci1zcGFjaW5nLXgnLCAnYm9yZGVyLXNwYWNpbmcteSddLFxuICAgICAgICAgICAgJ2JvcmRlci13JzogW1xuICAgICAgICAgICAgICAgICdib3JkZXItdy1zJyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLXctZScsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci13LXQnLFxuICAgICAgICAgICAgICAgICdib3JkZXItdy1yJyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLXctYicsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci13LWwnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICdib3JkZXItdy14JzogWydib3JkZXItdy1yJywgJ2JvcmRlci13LWwnXSxcbiAgICAgICAgICAgICdib3JkZXItdy15JzogWydib3JkZXItdy10JywgJ2JvcmRlci13LWInXSxcbiAgICAgICAgICAgICdib3JkZXItY29sb3InOiBbXG4gICAgICAgICAgICAgICAgJ2JvcmRlci1jb2xvci10JyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXInLFxuICAgICAgICAgICAgICAgICdib3JkZXItY29sb3ItYicsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci1jb2xvci1sJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXgnOiBbJ2JvcmRlci1jb2xvci1yJywgJ2JvcmRlci1jb2xvci1sJ10sXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXknOiBbJ2JvcmRlci1jb2xvci10JywgJ2JvcmRlci1jb2xvci1iJ10sXG4gICAgICAgICAgICAnc2Nyb2xsLW0nOiBbXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1teCcsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1teScsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1tcycsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1tZScsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1tdCcsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1tcicsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1tYicsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1tbCcsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgJ3Njcm9sbC1teCc6IFsnc2Nyb2xsLW1yJywgJ3Njcm9sbC1tbCddLFxuICAgICAgICAgICAgJ3Njcm9sbC1teSc6IFsnc2Nyb2xsLW10JywgJ3Njcm9sbC1tYiddLFxuICAgICAgICAgICAgJ3Njcm9sbC1wJzogW1xuICAgICAgICAgICAgICAgICdzY3JvbGwtcHgnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcHknLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcHMnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcGUnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcHQnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcHInLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcGInLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcGwnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICdzY3JvbGwtcHgnOiBbJ3Njcm9sbC1wcicsICdzY3JvbGwtcGwnXSxcbiAgICAgICAgICAgICdzY3JvbGwtcHknOiBbJ3Njcm9sbC1wdCcsICdzY3JvbGwtcGInXSxcbiAgICAgICAgICAgIHRvdWNoOiBbJ3RvdWNoLXgnLCAndG91Y2gteScsICd0b3VjaC1weiddLFxuICAgICAgICAgICAgJ3RvdWNoLXgnOiBbJ3RvdWNoJ10sXG4gICAgICAgICAgICAndG91Y2gteSc6IFsndG91Y2gnXSxcbiAgICAgICAgICAgICd0b3VjaC1weic6IFsndG91Y2gnXSxcbiAgICAgICAgfSxcbiAgICAgICAgY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzOiB7XG4gICAgICAgICAgICAnZm9udC1zaXplJzogWydsZWFkaW5nJ10sXG4gICAgICAgIH0sXG4gICAgfSBhcyBjb25zdCBzYXRpc2ZpZXMgQ29uZmlnPERlZmF1bHRDbGFzc0dyb3VwSWRzLCBEZWZhdWx0VGhlbWVHcm91cElkcz5cbn1cbiIsICJpbXBvcnQgeyBDb25maWdFeHRlbnNpb24sIEdlbmVyaWNDb25maWcgfSBmcm9tICcuL3R5cGVzJ1xuXG4vKipcbiAqIEBwYXJhbSBiYXNlQ29uZmlnIENvbmZpZyB3aGVyZSBvdGhlciBjb25maWcgd2lsbCBiZSBtZXJnZWQgaW50by4gVGhpcyBvYmplY3Qgd2lsbCBiZSBtdXRhdGVkLlxuICogQHBhcmFtIGNvbmZpZ0V4dGVuc2lvbiBQYXJ0aWFsIGNvbmZpZyB0byBtZXJnZSBpbnRvIHRoZSBgYmFzZUNvbmZpZ2AuXG4gKi9cbmV4cG9ydCBjb25zdCBtZXJnZUNvbmZpZ3MgPSA8Q2xhc3NHcm91cElkcyBleHRlbmRzIHN0cmluZywgVGhlbWVHcm91cElkcyBleHRlbmRzIHN0cmluZyA9IG5ldmVyPihcbiAgICBiYXNlQ29uZmlnOiBHZW5lcmljQ29uZmlnLFxuICAgIHtcbiAgICAgICAgY2FjaGVTaXplLFxuICAgICAgICBwcmVmaXgsXG4gICAgICAgIHNlcGFyYXRvcixcbiAgICAgICAgZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUsXG4gICAgICAgIGV4dGVuZCA9IHt9LFxuICAgICAgICBvdmVycmlkZSA9IHt9LFxuICAgIH06IENvbmZpZ0V4dGVuc2lvbjxDbGFzc0dyb3VwSWRzLCBUaGVtZUdyb3VwSWRzPixcbikgPT4ge1xuICAgIG92ZXJyaWRlUHJvcGVydHkoYmFzZUNvbmZpZywgJ2NhY2hlU2l6ZScsIGNhY2hlU2l6ZSlcbiAgICBvdmVycmlkZVByb3BlcnR5KGJhc2VDb25maWcsICdwcmVmaXgnLCBwcmVmaXgpXG4gICAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlQ29uZmlnLCAnc2VwYXJhdG9yJywgc2VwYXJhdG9yKVxuICAgIG92ZXJyaWRlUHJvcGVydHkoYmFzZUNvbmZpZywgJ2V4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lJywgZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUpXG5cbiAgICBmb3IgKGNvbnN0IGNvbmZpZ0tleSBpbiBvdmVycmlkZSkge1xuICAgICAgICBvdmVycmlkZUNvbmZpZ1Byb3BlcnRpZXMoXG4gICAgICAgICAgICBiYXNlQ29uZmlnW2NvbmZpZ0tleSBhcyBrZXlvZiB0eXBlb2Ygb3ZlcnJpZGVdLFxuICAgICAgICAgICAgb3ZlcnJpZGVbY29uZmlnS2V5IGFzIGtleW9mIHR5cGVvZiBvdmVycmlkZV0sXG4gICAgICAgIClcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiBleHRlbmQpIHtcbiAgICAgICAgbWVyZ2VDb25maWdQcm9wZXJ0aWVzKFxuICAgICAgICAgICAgYmFzZUNvbmZpZ1trZXkgYXMga2V5b2YgdHlwZW9mIGV4dGVuZF0sXG4gICAgICAgICAgICBleHRlbmRba2V5IGFzIGtleW9mIHR5cGVvZiBleHRlbmRdLFxuICAgICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuIGJhc2VDb25maWdcbn1cblxuY29uc3Qgb3ZlcnJpZGVQcm9wZXJ0eSA9IDxUIGV4dGVuZHMgb2JqZWN0LCBLIGV4dGVuZHMga2V5b2YgVD4oXG4gICAgYmFzZU9iamVjdDogVCxcbiAgICBvdmVycmlkZUtleTogSyxcbiAgICBvdmVycmlkZVZhbHVlOiBUW0tdIHwgdW5kZWZpbmVkLFxuKSA9PiB7XG4gICAgaWYgKG92ZXJyaWRlVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBiYXNlT2JqZWN0W292ZXJyaWRlS2V5XSA9IG92ZXJyaWRlVmFsdWVcbiAgICB9XG59XG5cbmNvbnN0IG92ZXJyaWRlQ29uZmlnUHJvcGVydGllcyA9IChcbiAgICBiYXNlT2JqZWN0OiBQYXJ0aWFsPFJlY29yZDxzdHJpbmcsIHJlYWRvbmx5IHVua25vd25bXT4+LFxuICAgIG92ZXJyaWRlT2JqZWN0OiBQYXJ0aWFsPFJlY29yZDxzdHJpbmcsIHJlYWRvbmx5IHVua25vd25bXT4+IHwgdW5kZWZpbmVkLFxuKSA9PiB7XG4gICAgaWYgKG92ZXJyaWRlT2JqZWN0KSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIG92ZXJyaWRlT2JqZWN0KSB7XG4gICAgICAgICAgICBvdmVycmlkZVByb3BlcnR5KGJhc2VPYmplY3QsIGtleSwgb3ZlcnJpZGVPYmplY3Rba2V5XSlcbiAgICAgICAgfVxuICAgIH1cbn1cblxuY29uc3QgbWVyZ2VDb25maWdQcm9wZXJ0aWVzID0gKFxuICAgIGJhc2VPYmplY3Q6IFBhcnRpYWw8UmVjb3JkPHN0cmluZywgcmVhZG9ubHkgdW5rbm93bltdPj4sXG4gICAgbWVyZ2VPYmplY3Q6IFBhcnRpYWw8UmVjb3JkPHN0cmluZywgcmVhZG9ubHkgdW5rbm93bltdPj4gfCB1bmRlZmluZWQsXG4pID0+IHtcbiAgICBpZiAobWVyZ2VPYmplY3QpIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbWVyZ2VPYmplY3QpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlVmFsdWUgPSBtZXJnZU9iamVjdFtrZXldXG5cbiAgICAgICAgICAgIGlmIChtZXJnZVZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBiYXNlT2JqZWN0W2tleV0gPSAoYmFzZU9iamVjdFtrZXldIHx8IFtdKS5jb25jYXQobWVyZ2VWYWx1ZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsICJpbXBvcnQgeyBjcmVhdGVUYWlsd2luZE1lcmdlIH0gZnJvbSAnLi9jcmVhdGUtdGFpbHdpbmQtbWVyZ2UnXG5pbXBvcnQgeyBnZXREZWZhdWx0Q29uZmlnIH0gZnJvbSAnLi9kZWZhdWx0LWNvbmZpZydcbmltcG9ydCB7IG1lcmdlQ29uZmlncyB9IGZyb20gJy4vbWVyZ2UtY29uZmlncydcbmltcG9ydCB7IENvbmZpZ0V4dGVuc2lvbiwgRGVmYXVsdENsYXNzR3JvdXBJZHMsIERlZmF1bHRUaGVtZUdyb3VwSWRzLCBHZW5lcmljQ29uZmlnIH0gZnJvbSAnLi90eXBlcydcblxudHlwZSBDcmVhdGVDb25maWdTdWJzZXF1ZW50ID0gKGNvbmZpZzogR2VuZXJpY0NvbmZpZykgPT4gR2VuZXJpY0NvbmZpZ1xuXG5leHBvcnQgY29uc3QgZXh0ZW5kVGFpbHdpbmRNZXJnZSA9IDxcbiAgICBBZGRpdGlvbmFsQ2xhc3NHcm91cElkcyBleHRlbmRzIHN0cmluZyA9IG5ldmVyLFxuICAgIEFkZGl0aW9uYWxUaGVtZUdyb3VwSWRzIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsXG4+KFxuICAgIGNvbmZpZ0V4dGVuc2lvbjpcbiAgICAgICAgfCBDb25maWdFeHRlbnNpb248XG4gICAgICAgICAgICAgIERlZmF1bHRDbGFzc0dyb3VwSWRzIHwgQWRkaXRpb25hbENsYXNzR3JvdXBJZHMsXG4gICAgICAgICAgICAgIERlZmF1bHRUaGVtZUdyb3VwSWRzIHwgQWRkaXRpb25hbFRoZW1lR3JvdXBJZHNcbiAgICAgICAgICA+XG4gICAgICAgIHwgQ3JlYXRlQ29uZmlnU3Vic2VxdWVudCxcbiAgICAuLi5jcmVhdGVDb25maWc6IENyZWF0ZUNvbmZpZ1N1YnNlcXVlbnRbXVxuKSA9PlxuICAgIHR5cGVvZiBjb25maWdFeHRlbnNpb24gPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyBjcmVhdGVUYWlsd2luZE1lcmdlKGdldERlZmF1bHRDb25maWcsIGNvbmZpZ0V4dGVuc2lvbiwgLi4uY3JlYXRlQ29uZmlnKVxuICAgICAgICA6IGNyZWF0ZVRhaWx3aW5kTWVyZ2UoXG4gICAgICAgICAgICAgICgpID0+IG1lcmdlQ29uZmlncyhnZXREZWZhdWx0Q29uZmlnKCksIGNvbmZpZ0V4dGVuc2lvbiksXG4gICAgICAgICAgICAgIC4uLmNyZWF0ZUNvbmZpZyxcbiAgICAgICAgICApXG4iLCAiaW1wb3J0IHsgY3JlYXRlVGFpbHdpbmRNZXJnZSB9IGZyb20gJy4vY3JlYXRlLXRhaWx3aW5kLW1lcmdlJ1xuaW1wb3J0IHsgZ2V0RGVmYXVsdENvbmZpZyB9IGZyb20gJy4vZGVmYXVsdC1jb25maWcnXG5cbmV4cG9ydCBjb25zdCB0d01lcmdlID0gY3JlYXRlVGFpbHdpbmRNZXJnZShnZXREZWZhdWx0Q29uZmlnKVxuIiwgImltcG9ydCB7IHVzZUlzTXV0YXRpbmcgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5pbXBvcnQgeyB0eXBlIENvbHVtbkRlZiB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IEZpbHRlckljb24sIFJlZnJlc2hDdyB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB7IEFuaW1hdGVOdW1iZXIgfSBmcm9tIFwibW90aW9uLXBsdXMvcmVhY3RcIjtcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHRvYXN0IH0gZnJvbSBcInNvbm5lclwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbHVtbiB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB0eXBlIHsgQmlnSW50U3RyaW5nLCBOdW1lcmljU3RyaW5nIH0gZnJvbSBcIi4uLy4uL2RhdGEvdHlwZS11dGlsc1wiO1xuaW1wb3J0IHsgQmFkZ2UgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9iYWRnZVwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvYnV0dG9uXCI7XG5pbXBvcnQgeyBQb3BvdmVyLCBQb3BvdmVyQ29udGVudCwgUG9wb3ZlclRyaWdnZXIgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9wb3BvdmVyXCI7XG5pbXBvcnQgeyBUYWJsZUhlYWQgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS90YWJsZVwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGVJbnNlcnQgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZS1pbnNlcnRcIjtcbmltcG9ydCB7IHVzZUFjdGl2ZVRhYmxlUXVlcnkgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZS1xdWVyeVwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGVVcGRhdGUgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZS11cGRhdGVcIjtcbmltcG9ydCB7IHVzZUZpbHRlcmluZyB9IGZyb20gXCIuLi9ob29rcy91c2UtZmlsdGVyaW5nXCI7XG5pbXBvcnQgeyB1c2VJc0luc2VydGluZyB9IGZyb20gXCIuLi9ob29rcy91c2UtaXMtaW5zZXJ0aW5nXCI7XG5pbXBvcnQgeyB1c2VQYWdpbmF0aW9uIH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1wYWdpbmF0aW9uXCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rpb24gfSBmcm9tIFwiLi4vaG9va3MvdXNlLXNlbGVjdGlvblwiO1xuaW1wb3J0IHsgdXNlU29ydGluZyB9IGZyb20gXCIuLi9ob29rcy91c2Utc29ydGluZ1wiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vbGliL3V0aWxzXCI7XG5pbXBvcnQgeyBDZWxsLCBDZWxsUHJvcHMgfSBmcm9tIFwiLi9jZWxsL0NlbGxcIjtcbmltcG9ydCB7IGdldENlbGwgfSBmcm9tIFwiLi9jZWxsL2dldC1jZWxsXCI7XG5pbXBvcnQgeyBTZWxlY3RIZWFkZXJDZWxsIH0gZnJvbSBcIi4vY2VsbC9TZWxlY3RIZWFkZXJDZWxsXCI7XG5pbXBvcnQgeyBTZWxlY3RSb3dDZWxsIH0gZnJvbSBcIi4vY2VsbC9TZWxlY3RSb3dDZWxsXCI7XG5pbXBvcnQgeyBXcml0ZWFibGVDZWxsIH0gZnJvbSBcIi4vY2VsbC9Xcml0ZWFibGVDZWxsXCI7XG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi9jb250ZXh0XCI7XG5pbXBvcnQgeyBGaWx0ZXJUcmVlIH0gZnJvbSBcIi4vRmlsdGVyVHJlZVwiO1xuaW1wb3J0IHsgRGF0YUdyaWQgfSBmcm9tIFwiLi9ncmlkL0RhdGFHcmlkXCI7XG5pbXBvcnQgeyBEYXRhR3JpZERyYWdnYWJsZUhlYWRlckNlbGwgfSBmcm9tIFwiLi9ncmlkL0RhdGFHcmlkRHJhZ2dhYmxlSGVhZGVyQ2VsbFwiO1xuaW1wb3J0IHsgRGF0YUdyaWRIZWFkZXIgfSBmcm9tIFwiLi9ncmlkL0RhdGFHcmlkSGVhZGVyXCI7XG5pbXBvcnQgeyBnZXRJbnB1dCB9IGZyb20gXCIuL2lucHV0L2dldC1pbnB1dFwiO1xuaW1wb3J0IHsgTGluayB9IGZyb20gXCIuL2xpbmsvZ2V0LWxpbmtcIjtcbmltcG9ydCB7IFN0YWdlZFJvd3MgfSBmcm9tIFwiLi9TdGFnZWRSb3dzXCI7XG5pbXBvcnQgeyBTdHVkaW9IZWFkZXIgfSBmcm9tIFwiLi9TdHVkaW9IZWFkZXJcIjtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1vYmplY3QtdHlwZVxuZXhwb3J0IGludGVyZmFjZSBBY3RpdmVUYWJsZVZpZXdQcm9wcyB7fVxuXG5leHBvcnQgZnVuY3Rpb24gQWN0aXZlVGFibGVWaWV3KF9wcm9wczogQWN0aXZlVGFibGVWaWV3UHJvcHMpIHtcbiAgY29uc3QgaXNNdXRhdGluZyA9IEJvb2xlYW4odXNlSXNNdXRhdGluZygpKTtcbiAgY29uc3QgeyBhY3RpdmVUYWJsZSwgb25FcnJvciB9ID0gdXNlU3R1ZGlvKCk7XG4gIGNvbnN0IHsgc29ydGluZ1N0YXRlLCBzZXRTb3J0aW5nU3RhdGUgfSA9IHVzZVNvcnRpbmcoKTtcbiAgY29uc3QgeyBwYWdpbmF0aW9uU3RhdGUsIHNldFBhZ2luYXRpb25TdGF0ZSB9ID0gdXNlUGFnaW5hdGlvbigpO1xuICBjb25zdCBbc3RhZ2VkUm93cywgc2V0U3RhZ2VkUm93c10gPSB1c2VTdGF0ZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdPihbXSk7XG4gIGNvbnN0IHsgYXBwbGllZEZpbHRlciwgc2V0QXBwbGllZEZpbHRlciwgZWRpdGluZ0ZpbHRlciwgc2V0RWRpdGluZ0ZpbHRlciwgdG90YWxFZGl0aW5nRmlsdGVycyB9ID0gdXNlRmlsdGVyaW5nKCk7XG5cbiAgY29uc3QgeyBkYXRhLCBpc0ZldGNoaW5nLCByZWZldGNoIH0gPSB1c2VBY3RpdmVUYWJsZVF1ZXJ5KHtcbiAgICAuLi5wYWdpbmF0aW9uU3RhdGUsXG4gICAgc29ydE9yZGVyOiBzb3J0aW5nU3RhdGUsXG4gICAgZmlsdGVyOiBhcHBsaWVkRmlsdGVyLFxuICB9KTtcbiAgY29uc3QgeyBkZWxldGVTZWxlY3Rpb24sIGlzU2VsZWN0aW5nLCByb3dTZWxlY3Rpb25TdGF0ZSwgc2V0Um93U2VsZWN0aW9uU3RhdGUgfSA9IHVzZVNlbGVjdGlvbihkYXRhKTtcblxuICBjb25zdCByZWFkb25seSA9ICFPYmplY3QudmFsdWVzKGFjdGl2ZVRhYmxlPy5jb2x1bW5zID8/IHt9KS5zb21lKChjb2x1bW4pID0+IGNvbHVtbi5pc0luUHJpbWFyeUtleSk7XG4gIGNvbnN0IGlzSW5zZXJ0aW5nID0gdXNlSXNJbnNlcnRpbmcoKTtcbiAgY29uc3QgaW5zZXJ0ID0gdXNlQWN0aXZlVGFibGVJbnNlcnQoKTtcbiAgY29uc3QgdXBkYXRlID0gdXNlQWN0aXZlVGFibGVVcGRhdGUoKTtcblxuICAvLyByZXNldCBpbnNlcnRSb3dzIHdoZW4gYWN0aXZlVGFibGUgY2hhbmdlc1xuICB1c2VFZmZlY3QoKCkgPT4gc2V0U3RhZ2VkUm93cyhbXSksIFthY3RpdmVUYWJsZV0pO1xuXG4gIGlmICghYWN0aXZlVGFibGUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNhdmVTdGFnZWRSb3dzKCkge1xuICAgIGluc2VydC5tdXRhdGUoc3RhZ2VkUm93cywge1xuICAgICAgb25FcnJvcixcbiAgICAgIG9uU3VjY2VzcygpIHtcbiAgICAgICAgdG9hc3Quc3VjY2VzcyhcIlJvd3MgaW5zZXJ0ZWQgc3VjY2Vzc2Z1bGx5XCIpO1xuICAgICAgICBzZXRTdGFnZWRSb3dzKFtdKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBuZXdTdGFnZWRSb3coKSB7XG4gICAgLy8gVE9ETzogdGhlIG5ldyBvYmplY3Qgc2hvdWxkIGhhdmUgc29tZSB0aGluZ3Mgc2V0IHRvIG51bGwgaWYgdGhleSdyZSBudWxsYWJsZSBvciBoYXZlIGEgZGVmYXVsdCB2YWx1ZT9cbiAgICBzZXRTdGFnZWRSb3dzKChvbGQpID0+IFsuLi5vbGQsIHt9XSk7XG4gIH1cblxuICBmdW5jdGlvbiBkcm9wU3RhZ2VkUm93cygpIHtcbiAgICBzZXRTdGFnZWRSb3dzKFtdKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZUNlbGxJbnB1dFN1Ym1pdCh2YWx1ZTogdW5rbm93biwgY29sdW1uOiBDb2x1bW4sIHJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkIHtcbiAgICB1cGRhdGUubXV0YXRlKHtcbiAgICAgIGRldGFpbHM6IHsgY2hhbmdlczogeyBbY29sdW1uLm5hbWVdOiB2YWx1ZSB9LCByb3csIHRhYmxlOiBhY3RpdmVUYWJsZSEgfSxcbiAgICAgIG9wdGlvbnM6IHt9LFxuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gb25GaWx0ZXJPcGVuQ2hhbmdlKG9wZW46IGJvb2xlYW4pIHtcbiAgICBpZiAob3BlbiA9PT0gdHJ1ZSkge1xuICAgICAgc2V0RWRpdGluZ0ZpbHRlcihhcHBsaWVkRmlsdGVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0QXBwbGllZEZpbHRlcihlZGl0aW5nRmlsdGVyKTtcbiAgICB9XG4gIH1cblxuICAvLyByZWFsIGNvbHVtbiBkZWZpbml0aW9ucyB0aGF0IGNvcnJlc3BvbmQgdG8gZGF0YWJhc2UgY29sdW1uc1xuICBjb25zdCBjb25jcmV0ZUNvbHVtbkRlZnMgPSBPYmplY3QudmFsdWVzKGFjdGl2ZVRhYmxlPy5jb2x1bW5zID8/IHt9KS5tYXAoKGNvbHVtbikgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogY29sdW1uLm5hbWUsXG4gICAgICBhY2Nlc3NvcktleTogY29sdW1uLm5hbWUsXG4gICAgICBtZXRhOiBjb2x1bW4sXG4gICAgICBoZWFkZXIoeyB0YWJsZSwgaGVhZGVyIH0pIHtcbiAgICAgICAgcmV0dXJuIChwcm9wczogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxEYXRhR3JpZERyYWdnYWJsZUhlYWRlckNlbGwgdGFibGU9e3RhYmxlfSBoZWFkZXI9e2hlYWRlcn0gey4uLnByb3BzfT5cbiAgICAgICAgICAgICAgPERhdGFHcmlkSGVhZGVyIGhlYWRlcj17aGVhZGVyfSBjb2x1bW49e2NvbHVtbn0gLz5cbiAgICAgICAgICAgIDwvRGF0YUdyaWREcmFnZ2FibGVIZWFkZXJDZWxsPlxuICAgICAgICAgICk7XG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICAgY2VsbCh7IGNlbGwgfSkge1xuICAgICAgICByZXR1cm4gKHByb3BzOiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj4pID0+IChcbiAgICAgICAgICA8V3JpdGVhYmxlQ2VsbFxuICAgICAgICAgICAgY29udGFpbmVyUHJvcHM9e3Byb3BzfVxuICAgICAgICAgICAgY2VsbENvbXBvbmVudD17Z2V0Q2VsbCh7IGNlbGwsIGNvbHVtbiB9KX1cbiAgICAgICAgICAgIGxpbmtDb21wb25lbnQ9e0xpbmsoeyBjZWxsLCBjb2x1bW4gfSl9XG4gICAgICAgICAgICBpbnB1dENvbXBvbmVudD17Z2V0SW5wdXQoe1xuICAgICAgICAgICAgICBjZWxsLFxuICAgICAgICAgICAgICBjb2x1bW4sXG4gICAgICAgICAgICAgIHJlYWRvbmx5LFxuICAgICAgICAgICAgICBvblN1Ym1pdCh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGVDZWxsSW5wdXRTdWJtaXQodmFsdWUsIGNvbHVtbiwgY2VsbC5yb3cub3JpZ2luYWwpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgfSBzYXRpc2ZpZXMgQ29sdW1uRGVmPFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgfSk7XG5cbiAgLy8gdGhlc2UgYXJlIGNvbHVtbnMgdGhhdCBleGlzdCB2aXJ0dWFsbHkgYW5kIGFyZSBub3QgZGIgY29sdW1uc1xuICBjb25zdCB2aXJ0dWFsQ29sdW1uRGVmcyA9IFtcbiAgICB7XG4gICAgICBpZDogXCJfX3BzX3NlbGVjdFwiLFxuICAgICAgYWNjZXNzb3JLZXk6IFwiX19wc19zZWxlY3RcIixcbiAgICAgIGVuYWJsZVBpbm5pbmc6IHRydWUsXG4gICAgICBlbmFibGVSZXNpemluZzogZmFsc2UsXG4gICAgICBlbmFibGVTb3J0aW5nOiBmYWxzZSxcbiAgICAgIHNpemU6IDM1LFxuICAgICAgbWluU2l6ZTogMzUsXG4gICAgICBoZWFkZXIoeyB0YWJsZSB9KSB7XG4gICAgICAgIHJldHVybiAocHJvcHM6IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPikgPT4ge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8VGFibGVIZWFkIHsuLi5wcm9wc30+XG4gICAgICAgICAgICAgIDxTZWxlY3RIZWFkZXJDZWxsIHRhYmxlPXt0YWJsZX0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPlxuICAgICAgICAgICAgPC9UYWJsZUhlYWQ+XG4gICAgICAgICAgKTtcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgICBjZWxsKHsgcm93IH0pIHtcbiAgICAgICAgcmV0dXJuIChwcm9wczogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxDZWxsIHsuLi5wcm9wc30+XG4gICAgICAgICAgICAgIDxTZWxlY3RSb3dDZWxsIHJvdz17cm93fSByZWFkb25seT17cmVhZG9ubHl9IC8+XG4gICAgICAgICAgICA8L0NlbGw+XG4gICAgICAgICAgKTtcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgfSxcbiAgXSBzYXRpc2ZpZXMgKENvbHVtbkRlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4gJiB7IGRpc2FibGVEcmFnZ2luZz86IGJvb2xlYW4gfSlbXTtcblxuICBjb25zdCBjb2x1bW5EZWZzID0gWy4uLmNvbmNyZXRlQ29sdW1uRGVmcywgLi4udmlydHVhbENvbHVtbkRlZnNdLnNvcnQoZGVmYXVsdENvbHVtblNvcnRpbmcpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxTdHVkaW9IZWFkZXJcbiAgICAgICAgZW5kQ29udGVudD17XG4gICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIHNpemU9XCJpY29uXCIgb25DbGljaz17KCkgPT4gdm9pZCByZWZldGNoKCl9IGRpc2FibGVkPXtpc0ZldGNoaW5nfT5cbiAgICAgICAgICAgIDxSZWZyZXNoQ3cgY2xhc3NOYW1lPXtjbihcInBzLWgtNCBwcy13LTRcIiwgaXNGZXRjaGluZyAmJiBcInBzLWFuaW1hdGUtc3BpblwiKX0gLz5cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgPlxuICAgICAgICA8UG9wb3ZlciBvbk9wZW5DaGFuZ2U9e29uRmlsdGVyT3BlbkNoYW5nZX0+XG4gICAgICAgICAgPFBvcG92ZXJUcmlnZ2VyIGFzQ2hpbGQ+XG4gICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lXCIgc2l6ZT1cInNtXCIgY2xhc3NOYW1lPXtjbih0b3RhbEVkaXRpbmdGaWx0ZXJzID4gMCAmJiBcInBzLWJvcmRlci1wcmltYXJ5XCIpfT5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICA8RmlsdGVySWNvbiAvPlxuICAgICAgICAgICAgICAgIHt0b3RhbEVkaXRpbmdGaWx0ZXJzID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICA8QmFkZ2U+XG4gICAgICAgICAgICAgICAgICAgIDxBbmltYXRlTnVtYmVyIHRyYW5zaXRpb249e3sgbGF5b3V0OiB7IGR1cmF0aW9uOiAwLjEyIH0gfX0+e3RvdGFsRWRpdGluZ0ZpbHRlcnN9PC9BbmltYXRlTnVtYmVyPlxuICAgICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8L1BvcG92ZXJUcmlnZ2VyPlxuICAgICAgICAgIDxQb3BvdmVyQ29udGVudCBhbGlnbj1cInN0YXJ0XCIgc2lkZT1cImJvdHRvbVwiIGNsYXNzTmFtZT1cInBzLXctbWluIHBzLW1heC1oLVs1MjBweF0gcHMtb3ZlcmZsb3cteS1hdXRvXCI+XG4gICAgICAgICAgICA8RmlsdGVyVHJlZVxuICAgICAgICAgICAgICBmaWx0ZXI9e2VkaXRpbmdGaWx0ZXJ9XG4gICAgICAgICAgICAgIHNldEZpbHRlcj17c2V0RWRpdGluZ0ZpbHRlcn1cbiAgICAgICAgICAgICAgc2V0QXBwbGllZEZpbHRlcj17KGZpbHRlcikgPT4ge1xuICAgICAgICAgICAgICAgIHNldEVkaXRpbmdGaWx0ZXIoZmlsdGVyKTsgLy8gVXBkYXRlIHRoZSBlZGl0aW5nIHN0YXRlXG4gICAgICAgICAgICAgICAgc2V0QXBwbGllZEZpbHRlcihmaWx0ZXIpOyAvLyBVcGRhdGUgdGhlIGFwcGxpZWQgc3RhdGVcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgdGFibGU9e2FjdGl2ZVRhYmxlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1BvcG92ZXJDb250ZW50PlxuICAgICAgICA8L1BvcG92ZXI+XG4gICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBzaXplPVwic21cIiBvbkNsaWNrPXtuZXdTdGFnZWRSb3d9IGRpc2FibGVkPXtpc0luc2VydGluZyA+IDB9PlxuICAgICAgICAgIEluc2VydCByb3dcbiAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIHtzdGFnZWRSb3dzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJzZWNvbmRhcnlcIiBzaXplPVwic21cIiBvbkNsaWNrPXtzYXZlU3RhZ2VkUm93c30+XG4gICAgICAgICAgICAgIFNhdmVcbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgey8qIE5lZWRzIHNvbWUgaW1wcm92ZW1lbnQgKi99XG4gICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJnaG9zdFwiIHNpemU9XCJzbVwiIG9uQ2xpY2s9e2Ryb3BTdGFnZWRSb3dzfT5cbiAgICAgICAgICAgICAgQ2FuY2VsXG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgICAge2lzU2VsZWN0aW5nICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwic2Vjb25kYXJ5XCIgc2l6ZT1cInNtXCIgb25DbGljaz17ZGVsZXRlU2VsZWN0aW9ufT5cbiAgICAgICAgICAgICAgRGVsZXRlXG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvU3R1ZGlvSGVhZGVyPlxuICAgICAgPERhdGFHcmlkXG4gICAgICAgIGNvbHVtbkRlZnM9e2NvbHVtbkRlZnN9XG4gICAgICAgIGdldEJlZm9yZVJvd3M9eyh0YWJsZSkgPT4gPFN0YWdlZFJvd3Mgey4uLnsgdGFibGUsIHN0YWdlZFJvd3MsIHNldFN0YWdlZFJvd3MgfX0gLz59XG4gICAgICAgIGlzTG9hZGluZz17aXNGZXRjaGluZ31cbiAgICAgICAgaXNQcm9jZXNzaW5nPXtpc011dGF0aW5nfVxuICAgICAgICBvblBhZ2luYXRpb25DaGFuZ2U9e3NldFBhZ2luYXRpb25TdGF0ZX1cbiAgICAgICAgb25Sb3dTZWxlY3Rpb25DaGFuZ2U9e3NldFJvd1NlbGVjdGlvblN0YXRlfVxuICAgICAgICBvblNvcnRpbmdDaGFuZ2U9e3NldFNvcnRpbmdTdGF0ZX1cbiAgICAgICAgcGFnZUNvdW50PXtnZXRQYWdlQ291bnQoZGF0YT8uZmlsdGVyZWRSb3dDb3VudCA/PyBJbmZpbml0eSwgcGFnaW5hdGlvblN0YXRlLnBhZ2VTaXplKX1cbiAgICAgICAgcGFnaW5hdGlvblN0YXRlPXtwYWdpbmF0aW9uU3RhdGV9XG4gICAgICAgIHJvd3M9e2RhdGE/LnJvd3MgPz8gW119XG4gICAgICAgIHJvd1NlbGVjdGlvblN0YXRlPXtyb3dTZWxlY3Rpb25TdGF0ZX1cbiAgICAgICAgc29ydGluZ1N0YXRlPXtzb3J0aW5nU3RhdGV9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufVxuXG5mdW5jdGlvbiBnZXRQYWdlQ291bnQocm93Q291bnQ6IG51bWJlciB8IGJpZ2ludCB8IE51bWVyaWNTdHJpbmcgfCBCaWdJbnRTdHJpbmcsIHBhZ2VTaXplOiBudW1iZXIpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBpZiAocm93Q291bnQgPT09IEluZmluaXR5KSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcGFnZUNvdW50ID0gTnVtYmVyKChCaWdJbnQocm93Q291bnQpICsgQmlnSW50KHBhZ2VTaXplKSAtIEJpZ0ludCgxKSkgLyBCaWdJbnQocGFnZVNpemUpKTtcblxuICByZXR1cm4gTnVtYmVyLmlzU2FmZUludGVnZXIocGFnZUNvdW50KSA/IHBhZ2VDb3VudCA6IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSO1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0Q29sdW1uU29ydGluZyhhOiBDb2x1bW5EZWY8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+LCBiOiBDb2x1bW5EZWY8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KSB7XG4gIGNvbnN0IGFNZXRhID0gYS5tZXRhIGFzIENvbHVtbiB8IHVuZGVmaW5lZDtcbiAgY29uc3QgYk1ldGEgPSBiLm1ldGEgYXMgQ29sdW1uIHwgdW5kZWZpbmVkO1xuXG4gIGlmIChhLmlkID09PSBcIl9fcHNfc2VsZWN0XCIgfHwgYi5pZCA9PT0gXCJfX3BzX3NlbGVjdFwiKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICBpZiAoYU1ldGEgPT09IHVuZGVmaW5lZCB8fCBiTWV0YSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIDA7IC8vIGNhbid0IGJlIGNvbXBhcmVkLCBzaG91bGRuJ3QgaGFwcGVuXG4gIH1cblxuICBpZiAoYU1ldGEuaXNJblByaW1hcnlLZXkgJiYgIWJNZXRhLmlzSW5QcmltYXJ5S2V5KSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG4gIGlmICghYU1ldGEuaXNJblByaW1hcnlLZXkgJiYgYk1ldGEuaXNJblByaW1hcnlLZXkpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIHJldHVybiBhTWV0YS5uYW1lLmxvY2FsZUNvbXBhcmUoYk1ldGEubmFtZSk7XG59XG4iLCAiaW1wb3J0IHsgQ2FtZWxUb1Bhc2NhbCB9IGZyb20gJy4vdXRpbGl0eS10eXBlcyc7XG5cbi8qKlxuICogQ29udmVydHMgc3RyaW5nIHRvIGtlYmFiIGNhc2VcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIGtlYmFiaXplZCBzdHJpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IHRvS2ViYWJDYXNlID0gKHN0cmluZzogc3RyaW5nKSA9PlxuICBzdHJpbmcucmVwbGFjZSgvKFthLXowLTldKShbQS1aXSkvZywgJyQxLSQyJykudG9Mb3dlckNhc2UoKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBzdHJpbmcgdG8gY2FtZWwgY2FzZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEEgY2FtZWxpemVkIHN0cmluZ1xuICovXG5leHBvcnQgY29uc3QgdG9DYW1lbENhc2UgPSA8VCBleHRlbmRzIHN0cmluZz4oc3RyaW5nOiBUKSA9PlxuICBzdHJpbmcucmVwbGFjZSgvXihbQS1aXSl8W1xccy1fXSsoXFx3KS9nLCAobWF0Y2gsIHAxLCBwMikgPT5cbiAgICBwMiA/IHAyLnRvVXBwZXJDYXNlKCkgOiBwMS50b0xvd2VyQ2FzZSgpLFxuICApO1xuXG4vKipcbiAqIENvbnZlcnRzIHN0cmluZyB0byBwYXNjYWwgY2FzZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEEgcGFzY2FsaXplZCBzdHJpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IHRvUGFzY2FsQ2FzZSA9IDxUIGV4dGVuZHMgc3RyaW5nPihzdHJpbmc6IFQpOiBDYW1lbFRvUGFzY2FsPFQ+ID0+IHtcbiAgY29uc3QgY2FtZWxDYXNlID0gdG9DYW1lbENhc2Uoc3RyaW5nKTtcblxuICByZXR1cm4gKGNhbWVsQ2FzZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGNhbWVsQ2FzZS5zbGljZSgxKSkgYXMgQ2FtZWxUb1Bhc2NhbDxUPjtcbn07XG5cbi8qKlxuICogTWVyZ2VzIGNsYXNzZXMgaW50byBhIHNpbmdsZSBzdHJpbmdcbiAqXG4gKiBAcGFyYW0ge2FycmF5fSBjbGFzc2VzXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIHN0cmluZyBvZiBjbGFzc2VzXG4gKi9cbmV4cG9ydCBjb25zdCBtZXJnZUNsYXNzZXMgPSA8Q2xhc3NUeXBlID0gc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbD4oLi4uY2xhc3NlczogQ2xhc3NUeXBlW10pID0+XG4gIGNsYXNzZXNcbiAgICAuZmlsdGVyKChjbGFzc05hbWUsIGluZGV4LCBhcnJheSkgPT4ge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgQm9vbGVhbihjbGFzc05hbWUpICYmXG4gICAgICAgIChjbGFzc05hbWUgYXMgc3RyaW5nKS50cmltKCkgIT09ICcnICYmXG4gICAgICAgIGFycmF5LmluZGV4T2YoY2xhc3NOYW1lKSA9PT0gaW5kZXhcbiAgICAgICk7XG4gICAgfSlcbiAgICAuam9pbignICcpXG4gICAgLnRyaW0oKTtcbiIsICJleHBvcnQgZGVmYXVsdCB7XG4gIHhtbG5zOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLFxuICB3aWR0aDogMjQsXG4gIGhlaWdodDogMjQsXG4gIHZpZXdCb3g6ICcwIDAgMjQgMjQnLFxuICBmaWxsOiAnbm9uZScsXG4gIHN0cm9rZTogJ2N1cnJlbnRDb2xvcicsXG4gIHN0cm9rZVdpZHRoOiAyLFxuICBzdHJva2VMaW5lY2FwOiAncm91bmQnLFxuICBzdHJva2VMaW5lam9pbjogJ3JvdW5kJyxcbn07XG4iLCAiaW1wb3J0IHsgY3JlYXRlRWxlbWVudCwgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBkZWZhdWx0QXR0cmlidXRlcyBmcm9tICcuL2RlZmF1bHRBdHRyaWJ1dGVzJztcbmltcG9ydCB7IEljb25Ob2RlLCBMdWNpZGVQcm9wcyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgbWVyZ2VDbGFzc2VzIH0gZnJvbSAnQGx1Y2lkZS9zaGFyZWQnO1xuXG5pbnRlcmZhY2UgSWNvbkNvbXBvbmVudFByb3BzIGV4dGVuZHMgTHVjaWRlUHJvcHMge1xuICBpY29uTm9kZTogSWNvbk5vZGU7XG59XG5cbi8qKlxuICogTHVjaWRlIGljb24gY29tcG9uZW50XG4gKlxuICogQGNvbXBvbmVudCBJY29uXG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wcy5jb2xvciAtIFRoZSBjb2xvciBvZiB0aGUgaWNvblxuICogQHBhcmFtIHtudW1iZXJ9IHByb3BzLnNpemUgLSBUaGUgc2l6ZSBvZiB0aGUgaWNvblxuICogQHBhcmFtIHtudW1iZXJ9IHByb3BzLnN0cm9rZVdpZHRoIC0gVGhlIHN0cm9rZSB3aWR0aCBvZiB0aGUgaWNvblxuICogQHBhcmFtIHtib29sZWFufSBwcm9wcy5hYnNvbHV0ZVN0cm9rZVdpZHRoIC0gV2hldGhlciB0byB1c2UgYWJzb2x1dGUgc3Ryb2tlIHdpZHRoXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvcHMuY2xhc3NOYW1lIC0gVGhlIGNsYXNzIG5hbWUgb2YgdGhlIGljb25cbiAqIEBwYXJhbSB7SWNvbk5vZGV9IHByb3BzLmNoaWxkcmVuIC0gVGhlIGNoaWxkcmVuIG9mIHRoZSBpY29uXG4gKiBAcGFyYW0ge0ljb25Ob2RlfSBwcm9wcy5pY29uTm9kZSAtIFRoZSBpY29uIG5vZGUgb2YgdGhlIGljb25cbiAqXG4gKiBAcmV0dXJucyB7Rm9yd2FyZFJlZkV4b3RpY0NvbXBvbmVudH0gTHVjaWRlSWNvblxuICovXG5jb25zdCBJY29uID0gZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uQ29tcG9uZW50UHJvcHM+KFxuICAoXG4gICAge1xuICAgICAgY29sb3IgPSAnY3VycmVudENvbG9yJyxcbiAgICAgIHNpemUgPSAyNCxcbiAgICAgIHN0cm9rZVdpZHRoID0gMixcbiAgICAgIGFic29sdXRlU3Ryb2tlV2lkdGgsXG4gICAgICBjbGFzc05hbWUgPSAnJyxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgaWNvbk5vZGUsXG4gICAgICAuLi5yZXN0XG4gICAgfSxcbiAgICByZWYsXG4gICkgPT4ge1xuICAgIHJldHVybiBjcmVhdGVFbGVtZW50KFxuICAgICAgJ3N2ZycsXG4gICAgICB7XG4gICAgICAgIHJlZixcbiAgICAgICAgLi4uZGVmYXVsdEF0dHJpYnV0ZXMsXG4gICAgICAgIHdpZHRoOiBzaXplLFxuICAgICAgICBoZWlnaHQ6IHNpemUsXG4gICAgICAgIHN0cm9rZTogY29sb3IsXG4gICAgICAgIHN0cm9rZVdpZHRoOiBhYnNvbHV0ZVN0cm9rZVdpZHRoID8gKE51bWJlcihzdHJva2VXaWR0aCkgKiAyNCkgLyBOdW1iZXIoc2l6ZSkgOiBzdHJva2VXaWR0aCxcbiAgICAgICAgY2xhc3NOYW1lOiBtZXJnZUNsYXNzZXMoJ2x1Y2lkZScsIGNsYXNzTmFtZSksXG4gICAgICAgIC4uLnJlc3QsXG4gICAgICB9LFxuICAgICAgW1xuICAgICAgICAuLi5pY29uTm9kZS5tYXAoKFt0YWcsIGF0dHJzXSkgPT4gY3JlYXRlRWxlbWVudCh0YWcsIGF0dHJzKSksXG4gICAgICAgIC4uLihBcnJheS5pc0FycmF5KGNoaWxkcmVuKSA/IGNoaWxkcmVuIDogW2NoaWxkcmVuXSksXG4gICAgICBdLFxuICAgICk7XG4gIH0sXG4pO1xuXG5leHBvcnQgZGVmYXVsdCBJY29uO1xuIiwgImltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIGZvcndhcmRSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBtZXJnZUNsYXNzZXMsIHRvS2ViYWJDYXNlIH0gZnJvbSAnQGx1Y2lkZS9zaGFyZWQnO1xuaW1wb3J0IHsgSWNvbk5vZGUsIEx1Y2lkZVByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgSWNvbiBmcm9tICcuL0ljb24nO1xuXG4vKipcbiAqIENyZWF0ZSBhIEx1Y2lkZSBpY29uIGNvbXBvbmVudFxuICogQHBhcmFtIHtzdHJpbmd9IGljb25OYW1lXG4gKiBAcGFyYW0ge2FycmF5fSBpY29uTm9kZVxuICogQHJldHVybnMge0ZvcndhcmRSZWZFeG90aWNDb21wb25lbnR9IEx1Y2lkZUljb25cbiAqL1xuY29uc3QgY3JlYXRlTHVjaWRlSWNvbiA9IChpY29uTmFtZTogc3RyaW5nLCBpY29uTm9kZTogSWNvbk5vZGUpID0+IHtcbiAgY29uc3QgQ29tcG9uZW50ID0gZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBMdWNpZGVQcm9wcz4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+XG4gICAgY3JlYXRlRWxlbWVudChJY29uLCB7XG4gICAgICByZWYsXG4gICAgICBpY29uTm9kZSxcbiAgICAgIGNsYXNzTmFtZTogbWVyZ2VDbGFzc2VzKGBsdWNpZGUtJHt0b0tlYmFiQ2FzZShpY29uTmFtZSl9YCwgY2xhc3NOYW1lKSxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pLFxuICApO1xuXG4gIENvbXBvbmVudC5kaXNwbGF5TmFtZSA9IGAke2ljb25OYW1lfWA7XG5cbiAgcmV0dXJuIENvbXBvbmVudDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZUx1Y2lkZUljb247XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBBcnJvd0Rvd25XaWRlTmFycm93XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnRNeUF4TmlBMElEUWdOQzAwSWlBdlBnb2dJRHh3WVhSb0lHUTlJazAzSURJd1ZqUWlJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRURXhJRFJvTVRBaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRFeElEaG9OeUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NVEVnTVRKb05DSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9hcnJvdy1kb3duLXdpZGUtbmFycm93XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQXJyb3dEb3duV2lkZU5hcnJvdyA9IGNyZWF0ZUx1Y2lkZUljb24oJ0Fycm93RG93bldpZGVOYXJyb3cnLCBbXG4gIFsncGF0aCcsIHsgZDogJ20zIDE2IDQgNCA0LTQnLCBrZXk6ICcxY282d2onIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNNyAyMFY0Jywga2V5OiAnMXlveGVjJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTExIDRoMTAnLCBrZXk6ICcxdzg3Z2MnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTEgOGg3Jywga2V5OiAnZGp5ZTM0JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTExIDEyaDQnLCBrZXk6ICdxOHRpaDQnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEFycm93RG93bldpZGVOYXJyb3c7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBBcnJvd1JpZ2h0XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5OU0F4TW1neE5DSWdMejRLSUNBOGNHRjBhQ0JrUFNKdE1USWdOU0EzSURjdE55QTNJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9hcnJvdy1yaWdodFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IEFycm93UmlnaHQgPSBjcmVhdGVMdWNpZGVJY29uKCdBcnJvd1JpZ2h0JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNNSAxMmgxNCcsIGtleTogJzFheXMwaCcgfV0sXG4gIFsncGF0aCcsIHsgZDogJ20xMiA1IDcgNy03IDcnLCBrZXk6ICd4cXV6NGMnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEFycm93UmlnaHQ7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBBcnJvd1VwV2lkZU5hcnJvd1xuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TXlBNElEUXROQ0EwSURRaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRjZ05IWXhOaUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NVEVnTVRKb01UQWlJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRURXhJREUyYURjaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRFeElESXdhRFFpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvYXJyb3ctdXAtd2lkZS1uYXJyb3dcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBBcnJvd1VwV2lkZU5hcnJvdyA9IGNyZWF0ZUx1Y2lkZUljb24oJ0Fycm93VXBXaWRlTmFycm93JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtMyA4IDQtNCA0IDQnLCBrZXk6ICcxMXdsN3UnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNNyA0djE2Jywga2V5OiAnMWdsZmN4JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTExIDEyaDEwJywga2V5OiAnMTQzOGppJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTExIDE2aDcnLCBrZXk6ICd1b3Npc3YnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTEgMjBoNCcsIGtleTogJzFrcmMzMicgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQXJyb3dVcFdpZGVOYXJyb3c7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGVja1xuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTWpBZ05pQTVJREUzYkMwMUxUVWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGVja1xuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENoZWNrID0gY3JlYXRlTHVjaWRlSWNvbignQ2hlY2snLCBbWydwYXRoJywgeyBkOiAnTTIwIDYgOSAxN2wtNS01Jywga2V5OiAnMWdtZjJjJyB9XV0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGVjaztcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENoZXZyb25Eb3duXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnROaUE1SURZZ05pQTJMVFlpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2hldnJvbi1kb3duXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hldnJvbkRvd24gPSBjcmVhdGVMdWNpZGVJY29uKCdDaGV2cm9uRG93bicsIFtcbiAgWydwYXRoJywgeyBkOiAnbTYgOSA2IDYgNi02Jywga2V5OiAncXJ1bnNsJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGV2cm9uRG93bjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENoZXZyb25MZWZ0XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnRNVFVnTVRndE5pMDJJRFl0TmlJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZXZyb24tbGVmdFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENoZXZyb25MZWZ0ID0gY3JlYXRlTHVjaWRlSWNvbignQ2hldnJvbkxlZnQnLCBbXG4gIFsncGF0aCcsIHsgZDogJ20xNSAxOC02LTYgNi02Jywga2V5OiAnMXduZmczJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGV2cm9uTGVmdDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENoZXZyb25SaWdodFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0T1NBeE9DQTJMVFl0TmkwMklpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZXZyb24tcmlnaHRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGV2cm9uUmlnaHQgPSBjcmVhdGVMdWNpZGVJY29uKCdDaGV2cm9uUmlnaHQnLCBbXG4gIFsncGF0aCcsIHsgZDogJ205IDE4IDYtNi02LTYnLCBrZXk6ICdtdGhod3EnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENoZXZyb25SaWdodDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENoZXZyb25VcFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TVRnZ01UVXROaTAyTFRZZ05pSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGV2cm9uLXVwXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hldnJvblVwID0gY3JlYXRlTHVjaWRlSWNvbignQ2hldnJvblVwJywgW1sncGF0aCcsIHsgZDogJ20xOCAxNS02LTYtNiA2Jywga2V5OiAnMTUzdWR6JyB9XV0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGV2cm9uVXA7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGV2cm9uc0xlZnRcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE1URWdNVGN0TlMwMUlEVXROU0lnTHo0S0lDQThjR0YwYUNCa1BTSnRNVGdnTVRjdE5TMDFJRFV0TlNJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZXZyb25zLWxlZnRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGV2cm9uc0xlZnQgPSBjcmVhdGVMdWNpZGVJY29uKCdDaGV2cm9uc0xlZnQnLCBbXG4gIFsncGF0aCcsIHsgZDogJ20xMSAxNy01LTUgNS01Jywga2V5OiAnMTN6aGFmJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnbTE4IDE3LTUtNSA1LTUnLCBrZXk6ICdoOGE4ZXQnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENoZXZyb25zTGVmdDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENoZXZyb25zUmlnaHRcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE5pQXhOeUExTFRVdE5TMDFJaUF2UGdvZ0lEeHdZWFJvSUdROUltMHhNeUF4TnlBMUxUVXROUzAxSWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2hldnJvbnMtcmlnaHRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGV2cm9uc1JpZ2h0ID0gY3JlYXRlTHVjaWRlSWNvbignQ2hldnJvbnNSaWdodCcsIFtcbiAgWydwYXRoJywgeyBkOiAnbTYgMTcgNS01LTUtNScsIGtleTogJ3huandxJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnbTEzIDE3IDUtNS01LTUnLCBrZXk6ICcxN3htbWYnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENoZXZyb25zUmlnaHQ7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaXJjbGVBbGVydFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4WTJseVkyeGxJR040UFNJeE1pSWdZM2s5SWpFeUlpQnlQU0l4TUNJZ0x6NEtJQ0E4YkdsdVpTQjRNVDBpTVRJaUlIZ3lQU0l4TWlJZ2VURTlJamdpSUhreVBTSXhNaUlnTHo0S0lDQThiR2x1WlNCNE1UMGlNVElpSUhneVBTSXhNaTR3TVNJZ2VURTlJakUySWlCNU1qMGlNVFlpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2lyY2xlLWFsZXJ0XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2lyY2xlQWxlcnQgPSBjcmVhdGVMdWNpZGVJY29uKCdDaXJjbGVBbGVydCcsIFtcbiAgWydjaXJjbGUnLCB7IGN4OiAnMTInLCBjeTogJzEyJywgcjogJzEwJywga2V5OiAnMW1nbGF5JyB9XSxcbiAgWydsaW5lJywgeyB4MTogJzEyJywgeDI6ICcxMicsIHkxOiAnOCcsIHkyOiAnMTInLCBrZXk6ICcxcGtldWgnIH1dLFxuICBbJ2xpbmUnLCB7IHgxOiAnMTInLCB4MjogJzEyLjAxJywgeTE6ICcxNicsIHkyOiAnMTYnLCBrZXk6ICc0ZGZxOTAnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENpcmNsZUFsZXJ0O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2lyY2xlSGVscFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4WTJseVkyeGxJR040UFNJeE1pSWdZM2s5SWpFeUlpQnlQU0l4TUNJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOT1M0d09TQTVZVE1nTXlBd0lEQWdNU0ExTGpneklERmpNQ0F5TFRNZ015MHpJRE1pSUM4K0NpQWdQSEJoZEdnZ1pEMGlUVEV5SURFM2FDNHdNU0lnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2lyY2xlLWhlbHBcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaXJjbGVIZWxwID0gY3JlYXRlTHVjaWRlSWNvbignQ2lyY2xlSGVscCcsIFtcbiAgWydjaXJjbGUnLCB7IGN4OiAnMTInLCBjeTogJzEyJywgcjogJzEwJywga2V5OiAnMW1nbGF5JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTkuMDkgOWEzIDMgMCAwIDEgNS44MyAxYzAgMi0zIDMtMyAzJywga2V5OiAnMXU3NzNzJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTEyIDE3aC4wMScsIGtleTogJ3AzMnAwNScgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2lyY2xlSGVscDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENpcmNsZVxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4WTJseVkyeGxJR040UFNJeE1pSWdZM2s5SWpFeUlpQnlQU0l4TUNJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NpcmNsZVxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENpcmNsZSA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NpcmNsZScsIFtcbiAgWydjaXJjbGUnLCB7IGN4OiAnMTInLCBjeTogJzEyJywgcjogJzEwJywga2V5OiAnMW1nbGF5JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaXJjbGU7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDb3B5XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjbVZqZENCM2FXUjBhRDBpTVRRaUlHaGxhV2RvZEQwaU1UUWlJSGc5SWpnaUlIazlJamdpSUhKNFBTSXlJaUJ5ZVQwaU1pSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk5DQXhObU10TVM0eElEQXRNaTB1T1MweUxUSldOR013TFRFdU1TNDVMVElnTWkweWFERXdZekV1TVNBd0lESWdMamtnTWlBeUlpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NvcHlcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDb3B5ID0gY3JlYXRlTHVjaWRlSWNvbignQ29weScsIFtcbiAgWydyZWN0JywgeyB3aWR0aDogJzE0JywgaGVpZ2h0OiAnMTQnLCB4OiAnOCcsIHk6ICc4Jywgcng6ICcyJywgcnk6ICcyJywga2V5OiAnMTdqeWVhJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTQgMTZjLTEuMSAwLTItLjktMi0yVjRjMC0xLjEuOS0yIDItMmgxMGMxLjEgMCAyIC45IDIgMicsIGtleTogJ3ppeDl1ZicgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ29weTtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENvcm5lckRvd25MZWZ0XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjRzlzZVd4cGJtVWdjRzlwYm5SelBTSTVJREV3SURRZ01UVWdPU0F5TUNJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTWpBZ05IWTNZVFFnTkNBd0lEQWdNUzAwSURSSU5DSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jb3JuZXItZG93bi1sZWZ0XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ29ybmVyRG93bkxlZnQgPSBjcmVhdGVMdWNpZGVJY29uKCdDb3JuZXJEb3duTGVmdCcsIFtcbiAgWydwb2x5bGluZScsIHsgcG9pbnRzOiAnOSAxMCA0IDE1IDkgMjAnLCBrZXk6ICdyM2pwcnYnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMjAgNHY3YTQgNCAwIDAgMS00IDRINCcsIGtleTogJzZvNWI3bCcgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ29ybmVyRG93bkxlZnQ7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBGaWx0ZXJcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHOXNlV2R2YmlCd2IybHVkSE05SWpJeUlETWdNaUF6SURFd0lERXlMalEySURFd0lERTVJREUwSURJeElERTBJREV5TGpRMklESXlJRE1pSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvZmlsdGVyXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgRmlsdGVyID0gY3JlYXRlTHVjaWRlSWNvbignRmlsdGVyJywgW1xuICBbJ3BvbHlnb24nLCB7IHBvaW50czogJzIyIDMgMiAzIDEwIDEyLjQ2IDEwIDE5IDE0IDIxIDE0IDEyLjQ2IDIyIDMnLCBrZXk6ICcxeWc3N2YnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEZpbHRlcjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIEdyaXBWZXJ0aWNhbFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4WTJseVkyeGxJR040UFNJNUlpQmplVDBpTVRJaUlISTlJakVpSUM4K0NpQWdQR05wY21Oc1pTQmplRDBpT1NJZ1kzazlJalVpSUhJOUlqRWlJQzgrQ2lBZ1BHTnBjbU5zWlNCamVEMGlPU0lnWTNrOUlqRTVJaUJ5UFNJeElpQXZQZ29nSUR4amFYSmpiR1VnWTNnOUlqRTFJaUJqZVQwaU1USWlJSEk5SWpFaUlDOCtDaUFnUEdOcGNtTnNaU0JqZUQwaU1UVWlJR041UFNJMUlpQnlQU0l4SWlBdlBnb2dJRHhqYVhKamJHVWdZM2c5SWpFMUlpQmplVDBpTVRraUlISTlJakVpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvZ3JpcC12ZXJ0aWNhbFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IEdyaXBWZXJ0aWNhbCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0dyaXBWZXJ0aWNhbCcsIFtcbiAgWydjaXJjbGUnLCB7IGN4OiAnOScsIGN5OiAnMTInLCByOiAnMScsIGtleTogJzF2Y3RnZicgfV0sXG4gIFsnY2lyY2xlJywgeyBjeDogJzknLCBjeTogJzUnLCByOiAnMScsIGtleTogJ2hwMHRjZicgfV0sXG4gIFsnY2lyY2xlJywgeyBjeDogJzknLCBjeTogJzE5JywgcjogJzEnLCBrZXk6ICdma2pqZjYnIH1dLFxuICBbJ2NpcmNsZScsIHsgY3g6ICcxNScsIGN5OiAnMTInLCByOiAnMScsIGtleTogJzF0bWFpaicgfV0sXG4gIFsnY2lyY2xlJywgeyBjeDogJzE1JywgY3k6ICc1JywgcjogJzEnLCBrZXk6ICcxOWwyOGUnIH1dLFxuICBbJ2NpcmNsZScsIHsgY3g6ICcxNScsIGN5OiAnMTknLCByOiAnMScsIGtleTogJ2Y0em9qMycgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgR3JpcFZlcnRpY2FsO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgS2V5Um91bmRcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk1pNDFPRFlnTVRjdU5ERTBRVElnTWlBd0lEQWdNQ0F5SURFNExqZ3lPRll5TVdFeElERWdNQ0F3SURBZ01TQXhhRE5oTVNBeElEQWdNQ0F3SURFdE1YWXRNV0V4SURFZ01DQXdJREVnTVMweGFERmhNU0F4SURBZ01DQXdJREV0TVhZdE1XRXhJREVnTUNBd0lERWdNUzB4YUM0eE56SmhNaUF5SURBZ01DQXdJREV1TkRFMExTNDFPRFpzTGpneE5DMHVPREUwWVRZdU5TQTJMalVnTUNBeElEQXROQzAwZWlJZ0x6NEtJQ0E4WTJseVkyeGxJR040UFNJeE5pNDFJaUJqZVQwaU55NDFJaUJ5UFNJdU5TSWdabWxzYkQwaVkzVnljbVZ1ZEVOdmJHOXlJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9rZXktcm91bmRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBLZXlSb3VuZCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0tleVJvdW5kJywgW1xuICBbXG4gICAgJ3BhdGgnLFxuICAgIHtcbiAgICAgIGQ6ICdNMi41ODYgMTcuNDE0QTIgMiAwIDAgMCAyIDE4LjgyOFYyMWExIDEgMCAwIDAgMSAxaDNhMSAxIDAgMCAwIDEtMXYtMWExIDEgMCAwIDEgMS0xaDFhMSAxIDAgMCAwIDEtMXYtMWExIDEgMCAwIDEgMS0xaC4xNzJhMiAyIDAgMCAwIDEuNDE0LS41ODZsLjgxNC0uODE0YTYuNSA2LjUgMCAxIDAtNC00eicsXG4gICAgICBrZXk6ICcxczZ0N3QnLFxuICAgIH0sXG4gIF0sXG4gIFsnY2lyY2xlJywgeyBjeDogJzE2LjUnLCBjeTogJzcuNScsIHI6ICcuNScsIGZpbGw6ICdjdXJyZW50Q29sb3InLCBrZXk6ICd3MGVrcGcnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEtleVJvdW5kO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgS2V5XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnRNVFV1TlNBM0xqVWdNaTR6SURJdU0yRXhJREVnTUNBd0lEQWdNUzQwSURCc01pNHhMVEl1TVdFeElERWdNQ0F3SURBZ01DMHhMalJNTVRrZ05DSWdMejRLSUNBOGNHRjBhQ0JrUFNKdE1qRWdNaTA1TGpZZ09TNDJJaUF2UGdvZ0lEeGphWEpqYkdVZ1kzZzlJamN1TlNJZ1kzazlJakUxTGpVaUlISTlJalV1TlNJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2tleVxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IEtleSA9IGNyZWF0ZUx1Y2lkZUljb24oJ0tleScsIFtcbiAgWydwYXRoJywgeyBkOiAnbTE1LjUgNy41IDIuMyAyLjNhMSAxIDAgMCAwIDEuNCAwbDIuMS0yLjFhMSAxIDAgMCAwIDAtMS40TDE5IDQnLCBrZXk6ICdnMGZsZGsnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdtMjEgMi05LjYgOS42Jywga2V5OiAnMWowaG84JyB9XSxcbiAgWydjaXJjbGUnLCB7IGN4OiAnNy41JywgY3k6ICcxNS41JywgcjogJzUuNScsIGtleTogJ3lxYjNocicgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgS2V5O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgTWF4aW1pemVcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk9DQXpTRFZoTWlBeUlEQWdNQ0F3TFRJZ01uWXpJaUF2UGdvZ0lEeHdZWFJvSUdROUlrMHlNU0E0VmpWaE1pQXlJREFnTUNBd0xUSXRNbWd0TXlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTXlBeE5uWXpZVElnTWlBd0lEQWdNQ0F5SURKb015SWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1UWWdNakZvTTJFeUlESWdNQ0F3SURBZ01pMHlkaTB6SWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvbWF4aW1pemVcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBNYXhpbWl6ZSA9IGNyZWF0ZUx1Y2lkZUljb24oJ01heGltaXplJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNOCAzSDVhMiAyIDAgMCAwLTIgMnYzJywga2V5OiAnMWRjbWl0JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTIxIDhWNWEyIDIgMCAwIDAtMi0yaC0zJywga2V5OiAnMWU0Z3QzJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTMgMTZ2M2EyIDIgMCAwIDAgMiAyaDMnLCBrZXk6ICd3c2w1c2MnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTYgMjFoM2EyIDIgMCAwIDAgMi0ydi0zJywga2V5OiAnMTh0cmVrJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBNYXhpbWl6ZTtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIE1pbmltaXplXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5PQ0F6ZGpOaE1pQXlJREFnTUNBeExUSWdNa2d6SWlBdlBnb2dJRHh3WVhSb0lHUTlJazB5TVNBNGFDMHpZVElnTWlBd0lEQWdNUzB5TFRKV015SWdMejRLSUNBOGNHRjBhQ0JrUFNKTk15QXhObWd6WVRJZ01pQXdJREFnTVNBeUlESjJNeUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NVFlnTWpGMkxUTmhNaUF5SURBZ01DQXhJREl0TW1neklpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL21pbmltaXplXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgTWluaW1pemUgPSBjcmVhdGVMdWNpZGVJY29uKCdNaW5pbWl6ZScsIFtcbiAgWydwYXRoJywgeyBkOiAnTTggM3YzYTIgMiAwIDAgMS0yIDJIMycsIGtleTogJ2hvaGJ0cicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00yMSA4aC0zYTIgMiAwIDAgMS0yLTJWMycsIGtleTogJzVqdzFmMycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00zIDE2aDNhMiAyIDAgMCAxIDIgMnYzJywga2V5OiAnMTk4dHZyJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTE2IDIxdi0zYTIgMiAwIDAgMSAyLTJoMycsIGtleTogJ3BoOG14cCcgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgTWluaW1pemU7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBNb3ZlRG93blxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOT0NBeE9Fd3hNaUF5TWt3eE5pQXhPQ0lnTHo0S0lDQThjR0YwYUNCa1BTSk5NVElnTWxZeU1pSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9tb3ZlLWRvd25cbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBNb3ZlRG93biA9IGNyZWF0ZUx1Y2lkZUljb24oJ01vdmVEb3duJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNOCAxOEwxMiAyMkwxNiAxOCcsIGtleTogJ2Nza3ZmdicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMiAyVjIyJywga2V5OiAncjg5cnprJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBNb3ZlRG93bjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIE1vdmVVcFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOT0NBMlRERXlJREpNTVRZZ05pSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1USWdNbFl5TWlJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL21vdmUtdXBcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBNb3ZlVXAgPSBjcmVhdGVMdWNpZGVJY29uKCdNb3ZlVXAnLCBbXG4gIFsncGF0aCcsIHsgZDogJ004IDZMMTIgMkwxNiA2Jywga2V5OiAnMXl2a3l4JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTEyIDJWMjInLCBrZXk6ICdyODlyemsnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IE1vdmVVcDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFBhbmVsTGVmdENsb3NlXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjbVZqZENCM2FXUjBhRDBpTVRnaUlHaGxhV2RvZEQwaU1UZ2lJSGc5SWpNaUlIazlJak1pSUhKNFBTSXlJaUF2UGdvZ0lEeHdZWFJvSUdROUlrMDVJRE4yTVRnaUlDOCtDaUFnUEhCaGRHZ2daRDBpYlRFMklERTFMVE10TXlBekxUTWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9wYW5lbC1sZWZ0LWNsb3NlXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgUGFuZWxMZWZ0Q2xvc2UgPSBjcmVhdGVMdWNpZGVJY29uKCdQYW5lbExlZnRDbG9zZScsIFtcbiAgWydyZWN0JywgeyB3aWR0aDogJzE4JywgaGVpZ2h0OiAnMTgnLCB4OiAnMycsIHk6ICczJywgcng6ICcyJywga2V5OiAnYWZpdHY3JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTkgM3YxOCcsIGtleTogJ2ZoM2hxYScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ20xNiAxNS0zLTMgMy0zJywga2V5OiAnMTR5OTl6JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBQYW5lbExlZnRDbG9zZTtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFBhbmVsTGVmdE9wZW5cbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNtVmpkQ0IzYVdSMGFEMGlNVGdpSUdobGFXZG9kRDBpTVRnaUlIZzlJak1pSUhrOUlqTWlJSEo0UFNJeUlpQXZQZ29nSUR4d1lYUm9JR1E5SWswNUlETjJNVGdpSUM4K0NpQWdQSEJoZEdnZ1pEMGliVEUwSURrZ015QXpMVE1nTXlJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3BhbmVsLWxlZnQtb3BlblxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFBhbmVsTGVmdE9wZW4gPSBjcmVhdGVMdWNpZGVJY29uKCdQYW5lbExlZnRPcGVuJywgW1xuICBbJ3JlY3QnLCB7IHdpZHRoOiAnMTgnLCBoZWlnaHQ6ICcxOCcsIHg6ICczJywgeTogJzMnLCByeDogJzInLCBrZXk6ICdhZml0djcnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNOSAzdjE4Jywga2V5OiAnZmgzaHFhJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnbTE0IDkgMyAzLTMgMycsIGtleTogJzgwMTBlZScgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgUGFuZWxMZWZ0T3BlbjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFBpbk9mZlxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTVRJZ01UZDJOU0lnTHo0S0lDQThjR0YwYUNCa1BTSk5NVFVnT1M0ek5GWTNZVEVnTVNBd0lEQWdNU0F4TFRFZ01pQXlJREFnTUNBd0lEQXRORWczTGpnNUlpQXZQZ29nSUR4d1lYUm9JR1E5SW0weUlESWdNakFnTWpBaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRrZ09YWXhMamMyWVRJZ01pQXdJREFnTVMweExqRXhJREV1Tnpsc0xURXVOemd1T1VFeUlESWdNQ0F3SURBZ05TQXhOUzR5TkZZeE5tRXhJREVnTUNBd0lEQWdNU0F4YURFeElpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3Bpbi1vZmZcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBQaW5PZmYgPSBjcmVhdGVMdWNpZGVJY29uKCdQaW5PZmYnLCBbXG4gIFsncGF0aCcsIHsgZDogJ00xMiAxN3Y1Jywga2V5OiAnYmIxZHU5JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTE1IDkuMzRWN2ExIDEgMCAwIDEgMS0xIDIgMiAwIDAgMCAwLTRINy44OScsIGtleTogJ3pud256cScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ20yIDIgMjAgMjAnLCBrZXk6ICcxb29ld3knIH1dLFxuICBbXG4gICAgJ3BhdGgnLFxuICAgIHtcbiAgICAgIGQ6ICdNOSA5djEuNzZhMiAyIDAgMCAxLTEuMTEgMS43OWwtMS43OC45QTIgMiAwIDAgMCA1IDE1LjI0VjE2YTEgMSAwIDAgMCAxIDFoMTEnLFxuICAgICAga2V5OiAnYzlxaG0yJyxcbiAgICB9LFxuICBdLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFBpbk9mZjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFBpblxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTVRJZ01UZDJOU0lnTHo0S0lDQThjR0YwYUNCa1BTSk5PU0F4TUM0M05tRXlJRElnTUNBd0lERXRNUzR4TVNBeExqYzViQzB4TGpjNExqbEJNaUF5SURBZ01DQXdJRFVnTVRVdU1qUldNVFpoTVNBeElEQWdNQ0F3SURFZ01XZ3hNbUV4SURFZ01DQXdJREFnTVMweGRpMHVOelpoTWlBeUlEQWdNQ0F3TFRFdU1URXRNUzQzT1d3dE1TNDNPQzB1T1VFeUlESWdNQ0F3SURFZ01UVWdNVEF1TnpaV04yRXhJREVnTUNBd0lERWdNUzB4SURJZ01pQXdJREFnTUNBd0xUUklPR0V5SURJZ01DQXdJREFnTUNBMElERWdNU0F3SURBZ01TQXhJREY2SWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvcGluXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgUGluID0gY3JlYXRlTHVjaWRlSWNvbignUGluJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNMTIgMTd2NScsIGtleTogJ2JiMWR1OScgfV0sXG4gIFtcbiAgICAncGF0aCcsXG4gICAge1xuICAgICAgZDogJ005IDEwLjc2YTIgMiAwIDAgMS0xLjExIDEuNzlsLTEuNzguOUEyIDIgMCAwIDAgNSAxNS4yNFYxNmExIDEgMCAwIDAgMSAxaDEyYTEgMSAwIDAgMCAxLTF2LS43NmEyIDIgMCAwIDAtMS4xMS0xLjc5bC0xLjc4LS45QTIgMiAwIDAgMSAxNSAxMC43NlY3YTEgMSAwIDAgMSAxLTEgMiAyIDAgMCAwIDAtNEg4YTIgMiAwIDAgMCAwIDQgMSAxIDAgMCAxIDEgMXonLFxuICAgICAga2V5OiAnMW5rejhiJyxcbiAgICB9LFxuICBdLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFBpbjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFJlZnJlc2hDd1xuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTXlBeE1tRTVJRGtnTUNBd0lERWdPUzA1SURrdU56VWdPUzQzTlNBd0lEQWdNU0EyTGpjMElESXVOelJNTWpFZ09DSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1qRWdNM1kxYUMwMUlpQXZQZ29nSUR4d1lYUm9JR1E5SWsweU1TQXhNbUU1SURrZ01DQXdJREV0T1NBNUlEa3VOelVnT1M0M05TQXdJREFnTVMwMkxqYzBMVEl1TnpSTU15QXhOaUlnTHo0S0lDQThjR0YwYUNCa1BTSk5PQ0F4TmtnemRqVWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9yZWZyZXNoLWN3XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgUmVmcmVzaEN3ID0gY3JlYXRlTHVjaWRlSWNvbignUmVmcmVzaEN3JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNMyAxMmE5IDkgMCAwIDEgOS05IDkuNzUgOS43NSAwIDAgMSA2Ljc0IDIuNzRMMjEgOCcsIGtleTogJ3Y5aDV2YycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00yMSAzdjVoLTUnLCBrZXk6ICcxcTd0bzAnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMjEgMTJhOSA5IDAgMCAxLTkgOSA5Ljc1IDkuNzUgMCAwIDEtNi43NC0yLjc0TDMgMTYnLCBrZXk6ICczdWlmbDMnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNOCAxNkgzdjUnLCBrZXk6ICcxY3Y2NzgnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnJlc2hDdztcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFNxdWFyZUFycm93UmlnaHRcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNtVmpkQ0IzYVdSMGFEMGlNVGdpSUdobGFXZG9kRDBpTVRnaUlIZzlJak1pSUhrOUlqTWlJSEo0UFNJeUlpQXZQZ29nSUR4d1lYUm9JR1E5SWswNElERXlhRGdpSUM4K0NpQWdQSEJoZEdnZ1pEMGliVEV5SURFMklEUXROQzAwTFRRaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3NxdWFyZS1hcnJvdy1yaWdodFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFNxdWFyZUFycm93UmlnaHQgPSBjcmVhdGVMdWNpZGVJY29uKCdTcXVhcmVBcnJvd1JpZ2h0JywgW1xuICBbJ3JlY3QnLCB7IHdpZHRoOiAnMTgnLCBoZWlnaHQ6ICcxOCcsIHg6ICczJywgeTogJzMnLCByeDogJzInLCBrZXk6ICdhZml0djcnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNOCAxMmg4Jywga2V5OiAnMXdjeWV2JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnbTEyIDE2IDQtNC00LTQnLCBrZXk6ICcxaTl6Y3YnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFNxdWFyZUFycm93UmlnaHQ7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBUYWJsZTJcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk9TQXpTRFZoTWlBeUlEQWdNQ0F3TFRJZ01uWTBiVFl0Tm1neE1HRXlJRElnTUNBd0lERWdNaUF5ZGpSTk9TQXpkakU0YlRBZ01HZ3hNR0V5SURJZ01DQXdJREFnTWkweVZqbE5PU0F5TVVnMVlUSWdNaUF3SURBZ01TMHlMVEpXT1cwd0lEQm9NVGdpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvdGFibGUtMlxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFRhYmxlMiA9IGNyZWF0ZUx1Y2lkZUljb24oJ1RhYmxlMicsIFtcbiAgW1xuICAgICdwYXRoJyxcbiAgICB7XG4gICAgICBkOiAnTTkgM0g1YTIgMiAwIDAgMC0yIDJ2NG02LTZoMTBhMiAyIDAgMCAxIDIgMnY0TTkgM3YxOG0wIDBoMTBhMiAyIDAgMCAwIDItMlY5TTkgMjFINWEyIDIgMCAwIDEtMi0yVjltMCAwaDE4JyxcbiAgICAgIGtleTogJ2d1Z2o4MycsXG4gICAgfSxcbiAgXSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBUYWJsZTI7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBYXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5NVGdnTmlBMklERTRJaUF2UGdvZ0lEeHdZWFJvSUdROUltMDJJRFlnTVRJZ01USWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy94XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgWCA9IGNyZWF0ZUx1Y2lkZUljb24oJ1gnLCBbXG4gIFsncGF0aCcsIHsgZDogJ00xOCA2IDYgMTgnLCBrZXk6ICcxYmw1ZjgnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdtNiA2IDEyIDEyJywga2V5OiAnZDhiazZ2JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBYO1xuIiwgImltcG9ydCB7IGN2YSwgdHlwZSBWYXJpYW50UHJvcHMgfSBmcm9tIFwiY2xhc3MtdmFyaWFuY2UtYXV0aG9yaXR5XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgYmFkZ2VWYXJpYW50cyA9IGN2YShcbiAgXCJwcy1pbmxpbmUtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtcHgtMi41IHBzLXB5LTAuNSBwcy10ZXh0LXhzIHBzLWZvbnQtc2VtaWJvbGQgcHMtdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXM6cHMtb3V0bGluZS1ub25lIGZvY3VzOnBzLXJpbmctMiBmb2N1czpwcy1yaW5nLXJpbmcgZm9jdXM6cHMtcmluZy1vZmZzZXQtMlwiLFxuICB7XG4gICAgdmFyaWFudHM6IHtcbiAgICAgIHZhcmlhbnQ6IHtcbiAgICAgICAgZGVmYXVsdDogXCJwcy1ib3JkZXItdHJhbnNwYXJlbnQgcHMtYmctcHJpbWFyeSBwcy10ZXh0LXByaW1hcnktZm9yZWdyb3VuZCBwcy1zaGFkb3cgaG92ZXI6cHMtYmctcHJpbWFyeS84MFwiLFxuICAgICAgICBzZWNvbmRhcnk6IFwicHMtYm9yZGVyLXRyYW5zcGFyZW50IHBzLWJnLXNlY29uZGFyeSBwcy10ZXh0LXNlY29uZGFyeS1mb3JlZ3JvdW5kIGhvdmVyOnBzLWJnLXNlY29uZGFyeS84MFwiLFxuICAgICAgICBkZXN0cnVjdGl2ZTpcbiAgICAgICAgICBcInBzLWJvcmRlci10cmFuc3BhcmVudCBwcy1iZy1kZXN0cnVjdGl2ZSBwcy10ZXh0LWRlc3RydWN0aXZlLWZvcmVncm91bmQgcHMtc2hhZG93IGhvdmVyOnBzLWJnLWRlc3RydWN0aXZlLzgwXCIsXG4gICAgICAgIG91dGxpbmU6IFwicHMtdGV4dC1mb3JlZ3JvdW5kXCIsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVmYXVsdFZhcmlhbnRzOiB7XG4gICAgICB2YXJpYW50OiBcImRlZmF1bHRcIixcbiAgICB9LFxuICB9LFxuKTtcblxuZXhwb3J0IGludGVyZmFjZSBCYWRnZVByb3BzIGV4dGVuZHMgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+LCBWYXJpYW50UHJvcHM8dHlwZW9mIGJhZGdlVmFyaWFudHM+IHt9XG5cbmZ1bmN0aW9uIEJhZGdlKHsgY2xhc3NOYW1lLCB2YXJpYW50LCAuLi5wcm9wcyB9OiBCYWRnZVByb3BzKSB7XG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17Y24oYmFkZ2VWYXJpYW50cyh7IHZhcmlhbnQgfSksIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz47XG59XG5cbmV4cG9ydCB7IEJhZGdlLCBiYWRnZVZhcmlhbnRzIH07XG4iLCAiaW1wb3J0IHsgU2xvdCB9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc2xvdFwiO1xuaW1wb3J0IHsgY3ZhLCB0eXBlIFZhcmlhbnRQcm9wcyB9IGZyb20gXCJjbGFzcy12YXJpYW5jZS1hdXRob3JpdHlcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBidXR0b25WYXJpYW50cyA9IGN2YShcbiAgXCJwcy1pbmxpbmUtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXIgcHMtZ2FwLTIgcHMtd2hpdGVzcGFjZS1ub3dyYXAgcHMtcm91bmRlZC1tZCBwcy10ZXh0LXNtIHBzLWZvbnQtbWVkaXVtIHBzLXRyYW5zaXRpb24tY29sb3JzIGZvY3VzLXZpc2libGU6cHMtb3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0xIGZvY3VzLXZpc2libGU6cHMtcmluZy1yaW5nIGRpc2FibGVkOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGlzYWJsZWQ6cHMtb3BhY2l0eS01MCBbJl9zdmddOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgWyZfc3ZnXTpwcy1zaXplLTQgWyZfc3ZnXTpwcy1zaHJpbmstMFwiLFxuICB7XG4gICAgdmFyaWFudHM6IHtcbiAgICAgIHZhcmlhbnQ6IHtcbiAgICAgICAgZGVmYXVsdDogXCJwcy1iZy1wcmltYXJ5IHBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIHBzLXNoYWRvdyBob3Zlcjpwcy1iZy1wcmltYXJ5LzkwXCIsXG4gICAgICAgIGRlc3RydWN0aXZlOiBcInBzLWJnLWRlc3RydWN0aXZlIHBzLXRleHQtZGVzdHJ1Y3RpdmUtZm9yZWdyb3VuZCBwcy1zaGFkb3ctc20gaG92ZXI6cHMtYmctZGVzdHJ1Y3RpdmUvOTBcIixcbiAgICAgICAgb3V0bGluZTpcbiAgICAgICAgICBcInBzLWJvcmRlciBwcy1ib3JkZXItaW5wdXQgcHMtYmctYmFja2dyb3VuZCBwcy1zaGFkb3ctc20gaG92ZXI6cHMtYmctYWNjZW50IGhvdmVyOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmRcIixcbiAgICAgICAgc2Vjb25kYXJ5OiBcInBzLWJnLXNlY29uZGFyeSBwcy10ZXh0LXNlY29uZGFyeS1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1zbSBob3Zlcjpwcy1iZy1zZWNvbmRhcnkvODBcIixcbiAgICAgICAgZ2hvc3Q6IFwiaG92ZXI6cHMtYmctYWNjZW50IGhvdmVyOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmRcIixcbiAgICAgICAgbGluazogXCJwcy10ZXh0LXByaW1hcnkgcHMtdW5kZXJsaW5lLW9mZnNldC00IGhvdmVyOnBzLXVuZGVybGluZVwiLFxuICAgICAgfSxcbiAgICAgIHNpemU6IHtcbiAgICAgICAgZGVmYXVsdDogXCJwcy1oLTkgcHMtcHgtNCBwcy1weS0yXCIsXG4gICAgICAgIHhzOiBcInBzLWgtNiBwcy1yb3VuZGVkLW1kIHBzLXB4LTIgcHMtdGV4dC14c1wiLFxuICAgICAgICBzbTogXCJwcy1oLTggcHMtcm91bmRlZC1tZCBwcy1weC0zIHBzLXRleHQteHNcIixcbiAgICAgICAgbGc6IFwicHMtaC0xMCBwcy1yb3VuZGVkLW1kIHBzLXB4LThcIixcbiAgICAgICAgaWNvbjogXCJwcy1oLTkgcHMtdy05XCIsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVmYXVsdFZhcmlhbnRzOiB7XG4gICAgICB2YXJpYW50OiBcImRlZmF1bHRcIixcbiAgICAgIHNpemU6IFwiZGVmYXVsdFwiLFxuICAgIH0sXG4gIH0sXG4pO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1dHRvblByb3BzXG4gIGV4dGVuZHMgUmVhY3QuQnV0dG9uSFRNTEF0dHJpYnV0ZXM8SFRNTEJ1dHRvbkVsZW1lbnQ+LFxuICAgIFZhcmlhbnRQcm9wczx0eXBlb2YgYnV0dG9uVmFyaWFudHM+IHtcbiAgYXNDaGlsZD86IGJvb2xlYW47XG59XG5cbmNvbnN0IEJ1dHRvbiA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQsIEJ1dHRvblByb3BzPihcbiAgKHsgY2xhc3NOYW1lLCB2YXJpYW50LCBzaXplLCBhc0NoaWxkID0gZmFsc2UsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IENvbXAgPSBhc0NoaWxkID8gU2xvdCA6IFwiYnV0dG9uXCI7XG4gICAgcmV0dXJuIDxDb21wIGNsYXNzTmFtZT17Y24oYnV0dG9uVmFyaWFudHMoeyB2YXJpYW50LCBzaXplLCBjbGFzc05hbWUgfSkpfSByZWY9e3JlZn0gey4uLnByb3BzfSAvPjtcbiAgfSxcbik7XG5CdXR0b24uZGlzcGxheU5hbWUgPSBcIkJ1dHRvblwiO1xuXG5leHBvcnQgeyBCdXR0b24sIGJ1dHRvblZhcmlhbnRzIH07XG4iLCAiaW1wb3J0ICogYXMgUG9wb3ZlclByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXBvcG92ZXJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBQb3BvdmVyID0gUG9wb3ZlclByaW1pdGl2ZS5Sb290O1xuXG5jb25zdCBQb3BvdmVyVHJpZ2dlciA9IFBvcG92ZXJQcmltaXRpdmUuVHJpZ2dlcjtcblxuY29uc3QgUG9wb3ZlckFuY2hvciA9IFBvcG92ZXJQcmltaXRpdmUuQW5jaG9yO1xuXG5jb25zdCBQb3BvdmVyQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFBvcG92ZXJQcmltaXRpdmUuQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgUG9wb3ZlclByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIGFsaWduID0gXCJjZW50ZXJcIiwgc2lkZU9mZnNldCA9IDQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8UG9wb3ZlclByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPFBvcG92ZXJQcmltaXRpdmUuQ29udGVudFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBhbGlnbj17YWxpZ259XG4gICAgICBzaWRlT2Zmc2V0PXtzaWRlT2Zmc2V0fVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy16LTUwIHBzLXctNzIgcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYmctcG9wb3ZlciBwcy1wLTQgcHMtdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgcHMtc2hhZG93LW1kIHBzLW91dGxpbmUtbm9uZSBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1hbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtYW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1mYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLXpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnBzLXpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnBzLXNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpwcy1zbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06cHMtc2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnBzLXNsaWRlLWluLWZyb20tYm90dG9tLTIgcHMtb3JpZ2luLVstLXJhZGl4LXBvcG92ZXItY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXVwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIDwvUG9wb3ZlclByaW1pdGl2ZS5Qb3J0YWw+XG4pKTtcblBvcG92ZXJDb250ZW50LmRpc3BsYXlOYW1lID0gUG9wb3ZlclByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgeyBQb3BvdmVyLCBQb3BvdmVyVHJpZ2dlciwgUG9wb3ZlckNvbnRlbnQsIFBvcG92ZXJBbmNob3IgfTtcbiIsICJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgVGFibGUgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZUVsZW1lbnQsIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZUVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXJlbGF0aXZlIHBzLXctZnVsbCBwcy1vdmVyZmxvdy1hdXRvIHBzLWZsZXggcHMtaXRlbXMtc3RhcnQgcHMtaC1mdWxsXCI+XG4gICAgICA8dGFibGUgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oXCJwcy13LWZ1bGwgcHMtY2FwdGlvbi1ib3R0b20gcHMtdGV4dC1zbVwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4gICAgPC9kaXY+XG4gICksXG4pO1xuVGFibGUuZGlzcGxheU5hbWUgPSBcIlRhYmxlXCI7XG5cbmNvbnN0IFRhYmxlSGVhZGVyID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVTZWN0aW9uRWxlbWVudCwgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IDx0aGVhZCByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+LFxuKTtcblRhYmxlSGVhZGVyLmRpc3BsYXlOYW1lID0gXCJUYWJsZUhlYWRlclwiO1xuXG5jb25zdCBUYWJsZUJvZHkgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LCBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVTZWN0aW9uRWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDx0Ym9keSByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihcIlsmX3RyOmxhc3QtY2hpbGRdOnBzLWJvcmRlci0wXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbiAgKSxcbik7XG5UYWJsZUJvZHkuZGlzcGxheU5hbWUgPSBcIlRhYmxlQm9keVwiO1xuXG5jb25zdCBUYWJsZUZvb3RlciA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQsIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPHRmb290XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXCJwcy1ib3JkZXItdCBwcy1iZy1tdXRlZC81MCBwcy1mb250LW1lZGl1bSBbJj50cl06bGFzdDpwcy1ib3JkZXItYi0wXCIsIGNsYXNzTmFtZSl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKSxcbik7XG5UYWJsZUZvb3Rlci5kaXNwbGF5TmFtZSA9IFwiVGFibGVGb290ZXJcIjtcblxuY29uc3QgVGFibGVSb3cgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZVJvd0VsZW1lbnQsIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZVJvd0VsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8dHJcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy1ib3JkZXItYiBwcy10cmFuc2l0aW9uLWNvbG9ycyBob3Zlcjpwcy1iZy1tdXRlZC81MCBkYXRhLVtzdGF0ZT1zZWxlY3RlZF06cHMtYmctbXV0ZWRcIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApLFxuKTtcblRhYmxlUm93LmRpc3BsYXlOYW1lID0gXCJUYWJsZVJvd1wiO1xuXG5jb25zdCBUYWJsZUhlYWQgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZUNlbGxFbGVtZW50LCBSZWFjdC5UaEhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZUNlbGxFbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPHRoXG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXCJwcy1oLTEwIHBzLXB4LTIgcHMtdGV4dC1sZWZ0IHBzLWFsaWduLW1pZGRsZSBwcy1mb250LW1lZGl1bSBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIiwgY2xhc3NOYW1lKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApLFxuKTtcblRhYmxlSGVhZC5kaXNwbGF5TmFtZSA9IFwiVGFibGVIZWFkXCI7XG5cbmNvbnN0IFRhYmxlQ2VsbCA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlQ2VsbEVsZW1lbnQsIFJlYWN0LlRkSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlQ2VsbEVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IDx0ZCByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihcInBzLWFsaWduLW1pZGRsZVwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+LFxuKTtcblRhYmxlQ2VsbC5kaXNwbGF5TmFtZSA9IFwiVGFibGVDZWxsXCI7XG5cbmNvbnN0IFRhYmxlQ2FwdGlvbiA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQsIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZUNhcHRpb25FbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPGNhcHRpb24gcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oXCJwcy1tdC00IHBzLXRleHQtc20gcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbiAgKSxcbik7XG5UYWJsZUNhcHRpb24uZGlzcGxheU5hbWUgPSBcIlRhYmxlQ2FwdGlvblwiO1xuXG5leHBvcnQgeyBUYWJsZSwgVGFibGVIZWFkZXIsIFRhYmxlQm9keSwgVGFibGVGb290ZXIsIFRhYmxlSGVhZCwgVGFibGVSb3csIFRhYmxlQ2VsbCwgVGFibGVDYXB0aW9uIH07XG4iLCAiaW1wb3J0IHsgUXVlcnlLZXksIHVzZU11dGF0aW9uLCB1c2VRdWVyeUNsaWVudCB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcblxuaW1wb3J0IHsgQWRhcHRlclF1ZXJ5UmVzdWx0IH0gZnJvbSBcIi4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4uL3N0dWRpby9jb250ZXh0XCI7XG5pbXBvcnQgeyBhZGRSb3dJZFRvUmVzdWx0IH0gZnJvbSBcIi4vdXRpbHMvYWRkLXJvdy1pZC10by1yZXN1bHRcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUFjdGl2ZVRhYmxlSW5zZXJ0KCkge1xuICBjb25zdCB7IGFjdGl2ZVRhYmxlLCBhZGFwdGVyIH0gPSB1c2VTdHVkaW8oKTtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuICBjb25zdCB7IHNjaGVtYSA9IG51bGwsIG5hbWU6IHRhYmxlID0gbnVsbCB9ID0gYWN0aXZlVGFibGUgPz8ge307XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbktleTogW1wic2NoZW1hXCIsIHNjaGVtYSwgXCJ0YWJsZVwiLCB0YWJsZSwgXCJpbnNlcnRcIl0sXG4gICAgYXN5bmMgbXV0YXRpb25Gbihyb3dzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdKSB7XG4gICAgICBjb25zdCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCBhZGFwdGVyLmluc2VydCh7IHJvd3MsIHRhYmxlOiBhY3RpdmVUYWJsZSEgfSwge30pO1xuXG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhZGRSb3dJZFRvUmVzdWx0KHJlc3VsdCwgYWN0aXZlVGFibGUhKTtcbiAgICB9LFxuICAgIG9uU3VjY2VzcyhuZXdEYXRhKSB7XG4gICAgICBxdWVyeUNsaWVudC5zZXRRdWVyaWVzRGF0YTxBZGFwdGVyUXVlcnlSZXN1bHQ+KFxuICAgICAgICB7XG4gICAgICAgICAgZXhhY3Q6IGZhbHNlLFxuICAgICAgICAgIC8vIGhlcmUgd2UgcGFydGlhbGx5IG1hdGNoIHRoZSBxdWVyeSBrZXkgdG8gZ2V0IHRoZSBjdXJyZW50IHBhZ2VcbiAgICAgICAgICBxdWVyeUtleTogW1wic2NoZW1hXCIsIHNjaGVtYSwgXCJ0YWJsZVwiLCB0YWJsZSwgXCJxdWVyeVwiXSBhcyBuZXZlciBhcyBRdWVyeUtleSxcbiAgICAgICAgfSxcbiAgICAgICAgKG9sZERhdGEpID0+IHtcbiAgICAgICAgICBpZiAob2xkRGF0YSA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gb2xkRGF0YTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ub2xkRGF0YSxcbiAgICAgICAgICAgIHJvd3M6IFsuLi5uZXdEYXRhLnJvd3MsIC4uLm9sZERhdGEucm93c10sXG4gICAgICAgICAgfSBzYXRpc2ZpZXMgQWRhcHRlclF1ZXJ5UmVzdWx0O1xuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9LFxuICAgIHJldHJ5OiBmYWxzZSxcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHsgUXVlcnlDbGllbnQsIFF1ZXJ5Q2xpZW50UHJvdmlkZXIgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5pbXBvcnQgeyBSZWFjdFF1ZXJ5RGV2dG9vbHMgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5LWRldnRvb2xzXCI7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB0eXBlIFByb3BzV2l0aENoaWxkcmVuLCB1c2VDb250ZXh0LCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdG9hc3QgfSBmcm9tIFwic29ubmVyXCI7XG5cbmltcG9ydCB0eXBlIHsgQWRhcHRlciwgVGFibGUgfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmltcG9ydCB7IFRvYXN0ZXIgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9zb25uZXJcIjtcbmltcG9ydCB7IE51cXNIYXNoQWRhcHRlciB9IGZyb20gXCIuL051cXNIYXNoQWRhcHRlclwiO1xuaW1wb3J0IHsgU3R1ZGlvVGVsZW1ldHJ5RXZlbnQgfSBmcm9tIFwiLi9TdHVkaW9cIjtcbmltcG9ydCB7IFVSTERlZmF1bHRzSGFuZGxlciB9IGZyb20gXCIuL1VSTERlZmF1bHRzSGFuZGxlclwiO1xuXG4vKipcbiAqIFN0dWRpbyBjb250ZXh0IHZhbHVlIGludGVyZmFjZVxuICovXG5pbnRlcmZhY2UgU3R1ZGlvQ29udGV4dFZhbHVlIHtcbiAgYWN0aXZlVGFibGU6IFRhYmxlIHwgbnVsbDtcbiAgYWN0aXZlU2NoZW1hOiBzdHJpbmc7XG4gIGFkYXB0ZXI6IEFkYXB0ZXI7XG4gIHNldEFjdGl2ZVRhYmxlOiAodGFibGU6IFRhYmxlIHwgbnVsbCkgPT4gdm9pZDtcbiAgc2V0QWN0aXZlU2NoZW1hOiAoc2NoZW1hOiBzdHJpbmcpID0+IHZvaWQ7XG4gIG9uRXJyb3I6IChlcnJvcjogRXJyb3IpID0+IHZvaWQ7XG4gIGVtaXRUZWxlbWV0cnlFdmVudDogKGFyZ3M6IFN0dWRpb1RlbGVtZXRyeUV2ZW50KSA9PiB2b2lkO1xuICAvLyBVSSBzdGF0ZVxuICBpc0Z1bGxzY3JlZW46IGJvb2xlYW47XG4gIHRvZ2dsZUZ1bGxzY3JlZW46ICgpID0+IHZvaWQ7XG4gIGlzTmF2aWdhdGlvbk9wZW46IGJvb2xlYW47XG4gIHRvZ2dsZU5hdmlnYXRpb246ICgpID0+IHZvaWQ7XG59XG5cbmNvbnN0IHF1ZXJ5Q2xpZW50ID0gbmV3IFF1ZXJ5Q2xpZW50KCk7XG5cbi8qKlxuICogQ29udGV4dCBmb3Igc2hhcmluZyBTdHVkaW8gc3RhdGUgYWNyb3NzIGNvbXBvbmVudHNcbiAqL1xuY29uc3QgU3R1ZGlvQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8U3R1ZGlvQ29udGV4dFZhbHVlIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG5leHBvcnQgdHlwZSBTdHVkaW9Db250ZXh0UHJvdmlkZXJQcm9wcyA9IFByb3BzV2l0aENoaWxkcmVuPHtcbiAgYWRhcHRlcjogQWRhcHRlcjtcbiAgb25FcnJvcj86IChlcnJvcjogRXJyb3IpID0+IHZvaWQ7XG4gIG9uVGVsZW1ldHJ5RXZlbnQ/OiAoYXJnczogU3R1ZGlvVGVsZW1ldHJ5RXZlbnQpID0+IHZvaWQ7XG59PjtcblxuZXhwb3J0IGZ1bmN0aW9uIFN0dWRpb0NvbnRleHRQcm92aWRlcihwcm9wczogU3R1ZGlvQ29udGV4dFByb3ZpZGVyUHJvcHMpIHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgLi4ub3RoZXJQcm9wcyB9ID0gcHJvcHM7XG4gIGNvbnN0IFthY3RpdmVUYWJsZSwgc2V0QWN0aXZlVGFibGVdID0gdXNlU3RhdGU8VGFibGUgfCBudWxsPihudWxsKTtcbiAgY29uc3QgW2FjdGl2ZVNjaGVtYSwgc2V0QWN0aXZlU2NoZW1hXSA9IHVzZVN0YXRlPHN0cmluZz4ocHJvcHMuYWRhcHRlci5kZWZhdWx0U2NoZW1hIHx8IFwicHVibGljXCIpO1xuICBjb25zdCBbaXNGdWxsc2NyZWVuLCBzZXRJc0Z1bGxzY3JlZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbaXNOYXZpZ2F0aW9uT3Blbiwgc2V0SXNOYXZpZ2F0aW9uT3Blbl0gPSB1c2VTdGF0ZSh0cnVlKTtcblxuICBsZXQgb25FcnJvciA9IHByb3BzLm9uRXJyb3I7XG4gIG9uRXJyb3IgPz89IChlcnJvcjogRXJyb3IpID0+IHRvYXN0LmVycm9yKGVycm9yLm1lc3NhZ2UpO1xuXG4gIGNvbnN0IGVtaXRUZWxlbWV0cnlFdmVudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBwcm9wcy5vblRlbGVtZXRyeUV2ZW50ID8/ICgoKSA9PiB7fSk7XG4gIH0sIFtwcm9wcy5vblRlbGVtZXRyeUV2ZW50XSk7XG5cbiAgY29uc3QgdG9nZ2xlRnVsbHNjcmVlbiA9ICgpID0+IHNldElzRnVsbHNjcmVlbigocHJldikgPT4gIXByZXYpO1xuICBjb25zdCB0b2dnbGVOYXZpZ2F0aW9uID0gKCkgPT4gc2V0SXNOYXZpZ2F0aW9uT3BlbigocHJldikgPT4gIXByZXYpO1xuICByZXR1cm4gKFxuICAgIDxRdWVyeUNsaWVudFByb3ZpZGVyIGNsaWVudD17cXVlcnlDbGllbnR9PlxuICAgICAgPFJlYWN0UXVlcnlEZXZ0b29scyAvPlxuICAgICAgPFRvYXN0ZXIgLz5cbiAgICAgIDxOdXFzSGFzaEFkYXB0ZXI+XG4gICAgICAgIDxTdHVkaW9Db250ZXh0LlByb3ZpZGVyXG4gICAgICAgICAgdmFsdWU9e3tcbiAgICAgICAgICAgIC4uLm90aGVyUHJvcHMsXG4gICAgICAgICAgICBhY3RpdmVUYWJsZSxcbiAgICAgICAgICAgIGFjdGl2ZVNjaGVtYSxcbiAgICAgICAgICAgIGlzRnVsbHNjcmVlbixcbiAgICAgICAgICAgIHNldEFjdGl2ZVRhYmxlLFxuICAgICAgICAgICAgc2V0QWN0aXZlU2NoZW1hLFxuICAgICAgICAgICAgb25FcnJvcixcbiAgICAgICAgICAgIGVtaXRUZWxlbWV0cnlFdmVudCxcbiAgICAgICAgICAgIHRvZ2dsZUZ1bGxzY3JlZW4sXG4gICAgICAgICAgICBpc05hdmlnYXRpb25PcGVuLFxuICAgICAgICAgICAgdG9nZ2xlTmF2aWdhdGlvbixcbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFVSTERlZmF1bHRzSGFuZGxlciAvPlxuICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPC9TdHVkaW9Db250ZXh0LlByb3ZpZGVyPlxuICAgICAgPC9OdXFzSGFzaEFkYXB0ZXI+XG4gICAgPC9RdWVyeUNsaWVudFByb3ZpZGVyPlxuICApO1xufVxuXG4vKipcbiAqIEhvb2sgdG8gYWNjZXNzIFN0dWRpbyBjb250ZXh0XG4gKiBAdGhyb3dzIEVycm9yIGlmIHVzZWQgb3V0c2lkZSBvZiBTdHVkaW8uUHJvdmlkZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVN0dWRpbygpOiBTdHVkaW9Db250ZXh0VmFsdWUge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChTdHVkaW9Db250ZXh0KTtcblxuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJgdXNlU3R1ZGlvYCBtdXN0IGJlIHVzZWQgd2l0aGluIGEgYFN0dWRpb0NvbnRleHQuUHJvdmlkZXJgXCIpO1xuICB9XG5cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG4iLCAiJ3VzZSBjbGllbnQnXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG9ubGluZU1hbmFnZXIsIHVzZVF1ZXJ5Q2xpZW50IH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5J1xuaW1wb3J0IHsgVGFuc3RhY2tRdWVyeURldnRvb2xzIH0gZnJvbSAnQHRhbnN0YWNrL3F1ZXJ5LWRldnRvb2xzJ1xuaW1wb3J0IHR5cGUge1xuICBEZXZ0b29sc0J1dHRvblBvc2l0aW9uLFxuICBEZXZ0b29sc0Vycm9yVHlwZSxcbiAgRGV2dG9vbHNQb3NpdGlvbixcbn0gZnJvbSAnQHRhbnN0YWNrL3F1ZXJ5LWRldnRvb2xzJ1xuaW1wb3J0IHR5cGUgeyBRdWVyeUNsaWVudCB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSdcblxuZXhwb3J0IGludGVyZmFjZSBEZXZ0b29sc09wdGlvbnMge1xuICAvKipcbiAgICogU2V0IHRoaXMgdHJ1ZSBpZiB5b3Ugd2FudCB0aGUgZGV2IHRvb2xzIHRvIGRlZmF1bHQgdG8gYmVpbmcgb3BlblxuICAgKi9cbiAgaW5pdGlhbElzT3Blbj86IGJvb2xlYW5cbiAgLyoqXG4gICAqIFRoZSBwb3NpdGlvbiBvZiB0aGUgUmVhY3QgUXVlcnkgbG9nbyB0byBvcGVuIGFuZCBjbG9zZSB0aGUgZGV2dG9vbHMgcGFuZWwuXG4gICAqICd0b3AtbGVmdCcgfCAndG9wLXJpZ2h0JyB8ICdib3R0b20tbGVmdCcgfCAnYm90dG9tLXJpZ2h0J1xuICAgKiBEZWZhdWx0cyB0byAnYm90dG9tLXJpZ2h0Jy5cbiAgICovXG4gIGJ1dHRvblBvc2l0aW9uPzogRGV2dG9vbHNCdXR0b25Qb3NpdGlvblxuICAvKipcbiAgICogVGhlIHBvc2l0aW9uIG9mIHRoZSBSZWFjdCBRdWVyeSBkZXZ0b29scyBwYW5lbC5cbiAgICogJ3RvcCcgfCAnYm90dG9tJyB8ICdsZWZ0JyB8ICdyaWdodCdcbiAgICogRGVmYXVsdHMgdG8gJ2JvdHRvbScuXG4gICAqL1xuICBwb3NpdGlvbj86IERldnRvb2xzUG9zaXRpb25cbiAgLyoqXG4gICAqIEN1c3RvbSBpbnN0YW5jZSBvZiBRdWVyeUNsaWVudFxuICAgKi9cbiAgY2xpZW50PzogUXVlcnlDbGllbnRcbiAgLyoqXG4gICAqIFVzZSB0aGlzIHNvIHlvdSBjYW4gZGVmaW5lIGN1c3RvbSBlcnJvcnMgdGhhdCBjYW4gYmUgc2hvd24gaW4gdGhlIGRldnRvb2xzLlxuICAgKi9cbiAgZXJyb3JUeXBlcz86IEFycmF5PERldnRvb2xzRXJyb3JUeXBlPlxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gcGFzcyBhIG5vbmNlIHRvIHRoZSBzdHlsZSB0YWcgdGhhdCBpcyBhZGRlZCB0byB0aGUgZG9jdW1lbnQgaGVhZC4gVGhpcyBpcyB1c2VmdWwgaWYgeW91IGFyZSB1c2luZyBhIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IChDU1ApIG5vbmNlIHRvIGFsbG93IGlubGluZSBzdHlsZXMuXG4gICAqL1xuICBzdHlsZU5vbmNlPzogc3RyaW5nXG4gIC8qKlxuICAgKiBVc2UgdGhpcyBzbyB5b3UgY2FuIGF0dGFjaCB0aGUgZGV2dG9vbCdzIHN0eWxlcyB0byBzcGVjaWZpYyBlbGVtZW50IGluIHRoZSBET00uXG4gICAqL1xuICBzaGFkb3dET01UYXJnZXQ/OiBTaGFkb3dSb290XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSZWFjdFF1ZXJ5RGV2dG9vbHMoXG4gIHByb3BzOiBEZXZ0b29sc09wdGlvbnMsXG4pOiBSZWFjdC5SZWFjdEVsZW1lbnQgfCBudWxsIHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudChwcm9wcy5jbGllbnQpXG4gIGNvbnN0IHJlZiA9IFJlYWN0LnVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3Qge1xuICAgIGJ1dHRvblBvc2l0aW9uLFxuICAgIHBvc2l0aW9uLFxuICAgIGluaXRpYWxJc09wZW4sXG4gICAgZXJyb3JUeXBlcyxcbiAgICBzdHlsZU5vbmNlLFxuICAgIHNoYWRvd0RPTVRhcmdldCxcbiAgfSA9IHByb3BzXG4gIGNvbnN0IFtkZXZ0b29sc10gPSBSZWFjdC51c2VTdGF0ZShcbiAgICBuZXcgVGFuc3RhY2tRdWVyeURldnRvb2xzKHtcbiAgICAgIGNsaWVudDogcXVlcnlDbGllbnQsXG4gICAgICBxdWVyeUZsYXZvcjogJ1JlYWN0IFF1ZXJ5JyxcbiAgICAgIHZlcnNpb246ICc1JyxcbiAgICAgIG9ubGluZU1hbmFnZXIsXG4gICAgICBidXR0b25Qb3NpdGlvbixcbiAgICAgIHBvc2l0aW9uLFxuICAgICAgaW5pdGlhbElzT3BlbixcbiAgICAgIGVycm9yVHlwZXMsXG4gICAgICBzdHlsZU5vbmNlLFxuICAgICAgc2hhZG93RE9NVGFyZ2V0LFxuICAgIH0pLFxuICApXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBkZXZ0b29scy5zZXRDbGllbnQocXVlcnlDbGllbnQpXG4gIH0sIFtxdWVyeUNsaWVudCwgZGV2dG9vbHNdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGJ1dHRvblBvc2l0aW9uKSB7XG4gICAgICBkZXZ0b29scy5zZXRCdXR0b25Qb3NpdGlvbihidXR0b25Qb3NpdGlvbilcbiAgICB9XG4gIH0sIFtidXR0b25Qb3NpdGlvbiwgZGV2dG9vbHNdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHBvc2l0aW9uKSB7XG4gICAgICBkZXZ0b29scy5zZXRQb3NpdGlvbihwb3NpdGlvbilcbiAgICB9XG4gIH0sIFtwb3NpdGlvbiwgZGV2dG9vbHNdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZGV2dG9vbHMuc2V0SW5pdGlhbElzT3Blbihpbml0aWFsSXNPcGVuIHx8IGZhbHNlKVxuICB9LCBbaW5pdGlhbElzT3BlbiwgZGV2dG9vbHNdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZGV2dG9vbHMuc2V0RXJyb3JUeXBlcyhlcnJvclR5cGVzIHx8IFtdKVxuICB9LCBbZXJyb3JUeXBlcywgZGV2dG9vbHNdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlZi5jdXJyZW50KSB7XG4gICAgICBkZXZ0b29scy5tb3VudChyZWYuY3VycmVudClcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZGV2dG9vbHMudW5tb3VudCgpXG4gICAgfVxuICB9LCBbZGV2dG9vbHNdKVxuXG4gIHJldHVybiA8ZGl2IGRpcj1cImx0clwiIGNsYXNzTmFtZT1cInRzcWQtcGFyZW50LWNvbnRhaW5lclwiIHJlZj17cmVmfT48L2Rpdj5cbn1cbiIsICJpbXBvcnQgeyBjcmVhdGVTaWduYWwsIHJlbmRlciwgbGF6eSwgc2V0dXBTdHlsZVNoZWV0LCBjcmVhdGVDb21wb25lbnQsIG1lcmdlUHJvcHMgfSBmcm9tICcuL2NodW5rL0hSN1lYWjVILmpzJztcblxuLy8gc3JjL1RhbnN0YWNrUXVlcnlEZXZ0b29scy50c3hcbnZhciBUYW5zdGFja1F1ZXJ5RGV2dG9vbHMgPSBjbGFzcyB7XG4gICNjbGllbnQ7XG4gICNvbmxpbmVNYW5hZ2VyO1xuICAjcXVlcnlGbGF2b3I7XG4gICN2ZXJzaW9uO1xuICAjaXNNb3VudGVkID0gZmFsc2U7XG4gICNzdHlsZU5vbmNlO1xuICAjc2hhZG93RE9NVGFyZ2V0O1xuICAjYnV0dG9uUG9zaXRpb247XG4gICNwb3NpdGlvbjtcbiAgI2luaXRpYWxJc09wZW47XG4gICNlcnJvclR5cGVzO1xuICAjQ29tcG9uZW50O1xuICAjZGlzcG9zZTtcbiAgY29uc3RydWN0b3IoY29uZmlnKSB7XG4gICAgY29uc3Qge1xuICAgICAgY2xpZW50LFxuICAgICAgcXVlcnlGbGF2b3IsXG4gICAgICB2ZXJzaW9uLFxuICAgICAgb25saW5lTWFuYWdlcixcbiAgICAgIGJ1dHRvblBvc2l0aW9uLFxuICAgICAgcG9zaXRpb24sXG4gICAgICBpbml0aWFsSXNPcGVuLFxuICAgICAgZXJyb3JUeXBlcyxcbiAgICAgIHN0eWxlTm9uY2UsXG4gICAgICBzaGFkb3dET01UYXJnZXRcbiAgICB9ID0gY29uZmlnO1xuICAgIHRoaXMuI2NsaWVudCA9IGNyZWF0ZVNpZ25hbChjbGllbnQpO1xuICAgIHRoaXMuI3F1ZXJ5Rmxhdm9yID0gcXVlcnlGbGF2b3I7XG4gICAgdGhpcy4jdmVyc2lvbiA9IHZlcnNpb247XG4gICAgdGhpcy4jb25saW5lTWFuYWdlciA9IG9ubGluZU1hbmFnZXI7XG4gICAgdGhpcy4jc3R5bGVOb25jZSA9IHN0eWxlTm9uY2U7XG4gICAgdGhpcy4jc2hhZG93RE9NVGFyZ2V0ID0gc2hhZG93RE9NVGFyZ2V0O1xuICAgIHRoaXMuI2J1dHRvblBvc2l0aW9uID0gY3JlYXRlU2lnbmFsKGJ1dHRvblBvc2l0aW9uKTtcbiAgICB0aGlzLiNwb3NpdGlvbiA9IGNyZWF0ZVNpZ25hbChwb3NpdGlvbik7XG4gICAgdGhpcy4jaW5pdGlhbElzT3BlbiA9IGNyZWF0ZVNpZ25hbChpbml0aWFsSXNPcGVuKTtcbiAgICB0aGlzLiNlcnJvclR5cGVzID0gY3JlYXRlU2lnbmFsKGVycm9yVHlwZXMpO1xuICB9XG4gIHNldEJ1dHRvblBvc2l0aW9uKHBvc2l0aW9uKSB7XG4gICAgdGhpcy4jYnV0dG9uUG9zaXRpb25bMV0ocG9zaXRpb24pO1xuICB9XG4gIHNldFBvc2l0aW9uKHBvc2l0aW9uKSB7XG4gICAgdGhpcy4jcG9zaXRpb25bMV0ocG9zaXRpb24pO1xuICB9XG4gIHNldEluaXRpYWxJc09wZW4oaXNPcGVuKSB7XG4gICAgdGhpcy4jaW5pdGlhbElzT3BlblsxXShpc09wZW4pO1xuICB9XG4gIHNldEVycm9yVHlwZXMoZXJyb3JUeXBlcykge1xuICAgIHRoaXMuI2Vycm9yVHlwZXNbMV0oZXJyb3JUeXBlcyk7XG4gIH1cbiAgc2V0Q2xpZW50KGNsaWVudCkge1xuICAgIHRoaXMuI2NsaWVudFsxXShjbGllbnQpO1xuICB9XG4gIG1vdW50KGVsKSB7XG4gICAgaWYgKHRoaXMuI2lzTW91bnRlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRGV2dG9vbHMgaXMgYWxyZWFkeSBtb3VudGVkXCIpO1xuICAgIH1cbiAgICBjb25zdCBkaXNwb3NlID0gcmVuZGVyKCgpID0+IHtcbiAgICAgIGNvbnN0IF9zZWxmJCA9IHRoaXM7XG4gICAgICBjb25zdCBbYnRuUG9zaXRpb25dID0gdGhpcy4jYnV0dG9uUG9zaXRpb247XG4gICAgICBjb25zdCBbcG9zXSA9IHRoaXMuI3Bvc2l0aW9uO1xuICAgICAgY29uc3QgW2lzT3Blbl0gPSB0aGlzLiNpbml0aWFsSXNPcGVuO1xuICAgICAgY29uc3QgW2Vycm9yc10gPSB0aGlzLiNlcnJvclR5cGVzO1xuICAgICAgY29uc3QgW3F1ZXJ5Q2xpZW50XSA9IHRoaXMuI2NsaWVudDtcbiAgICAgIGxldCBEZXZ0b29scztcbiAgICAgIGlmICh0aGlzLiNDb21wb25lbnQpIHtcbiAgICAgICAgRGV2dG9vbHMgPSB0aGlzLiNDb21wb25lbnQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBEZXZ0b29scyA9IGxhenkoKCkgPT4gaW1wb3J0KCcuL0RldnRvb2xzQ29tcG9uZW50L0NQSU9aUzVYLmpzJykpO1xuICAgICAgICB0aGlzLiNDb21wb25lbnQgPSBEZXZ0b29scztcbiAgICAgIH1cbiAgICAgIHNldHVwU3R5bGVTaGVldCh0aGlzLiNzdHlsZU5vbmNlLCB0aGlzLiNzaGFkb3dET01UYXJnZXQpO1xuICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChEZXZ0b29scywgbWVyZ2VQcm9wcyh7XG4gICAgICAgIGdldCBxdWVyeUZsYXZvcigpIHtcbiAgICAgICAgICByZXR1cm4gX3NlbGYkLiNxdWVyeUZsYXZvcjtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IHZlcnNpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIF9zZWxmJC4jdmVyc2lvbjtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IG9ubGluZU1hbmFnZXIoKSB7XG4gICAgICAgICAgcmV0dXJuIF9zZWxmJC4jb25saW5lTWFuYWdlcjtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IHNoYWRvd0RPTVRhcmdldCgpIHtcbiAgICAgICAgICByZXR1cm4gX3NlbGYkLiNzaGFkb3dET01UYXJnZXQ7XG4gICAgICAgIH1cbiAgICAgIH0sIHtcbiAgICAgICAgZ2V0IGNsaWVudCgpIHtcbiAgICAgICAgICByZXR1cm4gcXVlcnlDbGllbnQoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGJ1dHRvblBvc2l0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBidG5Qb3NpdGlvbigpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgcG9zaXRpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIHBvcygpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgaW5pdGlhbElzT3BlbigpIHtcbiAgICAgICAgICByZXR1cm4gaXNPcGVuKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBlcnJvclR5cGVzKCkge1xuICAgICAgICAgIHJldHVybiBlcnJvcnMoKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH0sIGVsKTtcbiAgICB0aGlzLiNpc01vdW50ZWQgPSB0cnVlO1xuICAgIHRoaXMuI2Rpc3Bvc2UgPSBkaXNwb3NlO1xuICB9XG4gIHVubW91bnQoKSB7XG4gICAgaWYgKCF0aGlzLiNpc01vdW50ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkRldnRvb2xzIGlzIG5vdCBtb3VudGVkXCIpO1xuICAgIH1cbiAgICB0aGlzLiNkaXNwb3NlPy4oKTtcbiAgICB0aGlzLiNpc01vdW50ZWQgPSBmYWxzZTtcbiAgfVxufTtcblxuLy8gc3JjL1RhbnN0YWNrUXVlcnlEZXZ0b29sc1BhbmVsLnRzeFxudmFyIFRhbnN0YWNrUXVlcnlEZXZ0b29sc1BhbmVsID0gY2xhc3Mge1xuICAjY2xpZW50O1xuICAjb25saW5lTWFuYWdlcjtcbiAgI3F1ZXJ5Rmxhdm9yO1xuICAjdmVyc2lvbjtcbiAgI2lzTW91bnRlZCA9IGZhbHNlO1xuICAjc3R5bGVOb25jZTtcbiAgI3NoYWRvd0RPTVRhcmdldDtcbiAgI2J1dHRvblBvc2l0aW9uO1xuICAjcG9zaXRpb247XG4gICNpbml0aWFsSXNPcGVuO1xuICAjZXJyb3JUeXBlcztcbiAgI29uQ2xvc2U7XG4gICNDb21wb25lbnQ7XG4gICNkaXNwb3NlO1xuICBjb25zdHJ1Y3Rvcihjb25maWcpIHtcbiAgICBjb25zdCB7XG4gICAgICBjbGllbnQsXG4gICAgICBxdWVyeUZsYXZvcixcbiAgICAgIHZlcnNpb24sXG4gICAgICBvbmxpbmVNYW5hZ2VyLFxuICAgICAgYnV0dG9uUG9zaXRpb24sXG4gICAgICBwb3NpdGlvbixcbiAgICAgIGluaXRpYWxJc09wZW4sXG4gICAgICBlcnJvclR5cGVzLFxuICAgICAgc3R5bGVOb25jZSxcbiAgICAgIHNoYWRvd0RPTVRhcmdldCxcbiAgICAgIG9uQ2xvc2VcbiAgICB9ID0gY29uZmlnO1xuICAgIHRoaXMuI2NsaWVudCA9IGNyZWF0ZVNpZ25hbChjbGllbnQpO1xuICAgIHRoaXMuI3F1ZXJ5Rmxhdm9yID0gcXVlcnlGbGF2b3I7XG4gICAgdGhpcy4jdmVyc2lvbiA9IHZlcnNpb247XG4gICAgdGhpcy4jb25saW5lTWFuYWdlciA9IG9ubGluZU1hbmFnZXI7XG4gICAgdGhpcy4jc3R5bGVOb25jZSA9IHN0eWxlTm9uY2U7XG4gICAgdGhpcy4jc2hhZG93RE9NVGFyZ2V0ID0gc2hhZG93RE9NVGFyZ2V0O1xuICAgIHRoaXMuI2J1dHRvblBvc2l0aW9uID0gY3JlYXRlU2lnbmFsKGJ1dHRvblBvc2l0aW9uKTtcbiAgICB0aGlzLiNwb3NpdGlvbiA9IGNyZWF0ZVNpZ25hbChwb3NpdGlvbik7XG4gICAgdGhpcy4jaW5pdGlhbElzT3BlbiA9IGNyZWF0ZVNpZ25hbChpbml0aWFsSXNPcGVuKTtcbiAgICB0aGlzLiNlcnJvclR5cGVzID0gY3JlYXRlU2lnbmFsKGVycm9yVHlwZXMpO1xuICAgIHRoaXMuI29uQ2xvc2UgPSBjcmVhdGVTaWduYWwob25DbG9zZSk7XG4gIH1cbiAgc2V0QnV0dG9uUG9zaXRpb24ocG9zaXRpb24pIHtcbiAgICB0aGlzLiNidXR0b25Qb3NpdGlvblsxXShwb3NpdGlvbik7XG4gIH1cbiAgc2V0UG9zaXRpb24ocG9zaXRpb24pIHtcbiAgICB0aGlzLiNwb3NpdGlvblsxXShwb3NpdGlvbik7XG4gIH1cbiAgc2V0SW5pdGlhbElzT3Blbihpc09wZW4pIHtcbiAgICB0aGlzLiNpbml0aWFsSXNPcGVuWzFdKGlzT3Blbik7XG4gIH1cbiAgc2V0RXJyb3JUeXBlcyhlcnJvclR5cGVzKSB7XG4gICAgdGhpcy4jZXJyb3JUeXBlc1sxXShlcnJvclR5cGVzKTtcbiAgfVxuICBzZXRDbGllbnQoY2xpZW50KSB7XG4gICAgdGhpcy4jY2xpZW50WzFdKGNsaWVudCk7XG4gIH1cbiAgc2V0T25DbG9zZShvbkNsb3NlKSB7XG4gICAgdGhpcy4jb25DbG9zZVsxXSgoKSA9PiBvbkNsb3NlKTtcbiAgfVxuICBtb3VudChlbCkge1xuICAgIGlmICh0aGlzLiNpc01vdW50ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkRldnRvb2xzIGlzIGFscmVhZHkgbW91bnRlZFwiKTtcbiAgICB9XG4gICAgY29uc3QgZGlzcG9zZSA9IHJlbmRlcigoKSA9PiB7XG4gICAgICBjb25zdCBfc2VsZiQgPSB0aGlzO1xuICAgICAgY29uc3QgW2J0blBvc2l0aW9uXSA9IHRoaXMuI2J1dHRvblBvc2l0aW9uO1xuICAgICAgY29uc3QgW3Bvc10gPSB0aGlzLiNwb3NpdGlvbjtcbiAgICAgIGNvbnN0IFtpc09wZW5dID0gdGhpcy4jaW5pdGlhbElzT3BlbjtcbiAgICAgIGNvbnN0IFtlcnJvcnNdID0gdGhpcy4jZXJyb3JUeXBlcztcbiAgICAgIGNvbnN0IFtxdWVyeUNsaWVudF0gPSB0aGlzLiNjbGllbnQ7XG4gICAgICBjb25zdCBbb25DbG9zZV0gPSB0aGlzLiNvbkNsb3NlO1xuICAgICAgbGV0IERldnRvb2xzO1xuICAgICAgaWYgKHRoaXMuI0NvbXBvbmVudCkge1xuICAgICAgICBEZXZ0b29scyA9IHRoaXMuI0NvbXBvbmVudDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIERldnRvb2xzID0gbGF6eSgoKSA9PiBpbXBvcnQoJy4vRGV2dG9vbHNQYW5lbENvbXBvbmVudC9PS0Y2RTQ1Ui5qcycpKTtcbiAgICAgICAgdGhpcy4jQ29tcG9uZW50ID0gRGV2dG9vbHM7XG4gICAgICB9XG4gICAgICBzZXR1cFN0eWxlU2hlZXQodGhpcy4jc3R5bGVOb25jZSwgdGhpcy4jc2hhZG93RE9NVGFyZ2V0KTtcbiAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoRGV2dG9vbHMsIG1lcmdlUHJvcHMoe1xuICAgICAgICBnZXQgcXVlcnlGbGF2b3IoKSB7XG4gICAgICAgICAgcmV0dXJuIF9zZWxmJC4jcXVlcnlGbGF2b3I7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCB2ZXJzaW9uKCkge1xuICAgICAgICAgIHJldHVybiBfc2VsZiQuI3ZlcnNpb247XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBvbmxpbmVNYW5hZ2VyKCkge1xuICAgICAgICAgIHJldHVybiBfc2VsZiQuI29ubGluZU1hbmFnZXI7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBzaGFkb3dET01UYXJnZXQoKSB7XG4gICAgICAgICAgcmV0dXJuIF9zZWxmJC4jc2hhZG93RE9NVGFyZ2V0O1xuICAgICAgICB9XG4gICAgICB9LCB7XG4gICAgICAgIGdldCBjbGllbnQoKSB7XG4gICAgICAgICAgcmV0dXJuIHF1ZXJ5Q2xpZW50KCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBidXR0b25Qb3NpdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gYnRuUG9zaXRpb24oKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IHBvc2l0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBwb3MoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGluaXRpYWxJc09wZW4oKSB7XG4gICAgICAgICAgcmV0dXJuIGlzT3BlbigpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgZXJyb3JUeXBlcygpIHtcbiAgICAgICAgICByZXR1cm4gZXJyb3JzKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBvbkNsb3NlKCkge1xuICAgICAgICAgIHJldHVybiBvbkNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB9LCBlbCk7XG4gICAgdGhpcy4jaXNNb3VudGVkID0gdHJ1ZTtcbiAgICB0aGlzLiNkaXNwb3NlID0gZGlzcG9zZTtcbiAgfVxuICB1bm1vdW50KCkge1xuICAgIGlmICghdGhpcy4jaXNNb3VudGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEZXZ0b29scyBpcyBub3QgbW91bnRlZFwiKTtcbiAgICB9XG4gICAgdGhpcy4jZGlzcG9zZT8uKCk7XG4gICAgdGhpcy4jaXNNb3VudGVkID0gZmFsc2U7XG4gIH1cbn07XG5cbmV4cG9ydCB7IFRhbnN0YWNrUXVlcnlEZXZ0b29scywgVGFuc3RhY2tRdWVyeURldnRvb2xzUGFuZWwgfTtcbiIsICIndXNlIGNsaWVudCdcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgb25saW5lTWFuYWdlciwgdXNlUXVlcnlDbGllbnQgfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtcXVlcnknXG5pbXBvcnQgeyBUYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbCB9IGZyb20gJ0B0YW5zdGFjay9xdWVyeS1kZXZ0b29scydcbmltcG9ydCB0eXBlIHsgRGV2dG9vbHNFcnJvclR5cGUgfSBmcm9tICdAdGFuc3RhY2svcXVlcnktZGV2dG9vbHMnXG5pbXBvcnQgdHlwZSB7IFF1ZXJ5Q2xpZW50IH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5J1xuXG5leHBvcnQgaW50ZXJmYWNlIERldnRvb2xzUGFuZWxPcHRpb25zIHtcbiAgLyoqXG4gICAqIEN1c3RvbSBpbnN0YW5jZSBvZiBRdWVyeUNsaWVudFxuICAgKi9cbiAgY2xpZW50PzogUXVlcnlDbGllbnRcbiAgLyoqXG4gICAqIFVzZSB0aGlzIHNvIHlvdSBjYW4gZGVmaW5lIGN1c3RvbSBlcnJvcnMgdGhhdCBjYW4gYmUgc2hvd24gaW4gdGhlIGRldnRvb2xzLlxuICAgKi9cbiAgZXJyb3JUeXBlcz86IEFycmF5PERldnRvb2xzRXJyb3JUeXBlPlxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gcGFzcyBhIG5vbmNlIHRvIHRoZSBzdHlsZSB0YWcgdGhhdCBpcyBhZGRlZCB0byB0aGUgZG9jdW1lbnQgaGVhZC4gVGhpcyBpcyB1c2VmdWwgaWYgeW91IGFyZSB1c2luZyBhIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IChDU1ApIG5vbmNlIHRvIGFsbG93IGlubGluZSBzdHlsZXMuXG4gICAqL1xuICBzdHlsZU5vbmNlPzogc3RyaW5nXG4gIC8qKlxuICAgKiBVc2UgdGhpcyBzbyB5b3UgY2FuIGF0dGFjaCB0aGUgZGV2dG9vbCdzIHN0eWxlcyB0byBzcGVjaWZpYyBlbGVtZW50IGluIHRoZSBET00uXG4gICAqL1xuICBzaGFkb3dET01UYXJnZXQ/OiBTaGFkb3dSb290XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBzdHlsZXMgZm9yIHRoZSBkZXZ0b29scyBwYW5lbFxuICAgKiBAZGVmYXVsdCB7IGhlaWdodDogJzUwMHB4JyB9XG4gICAqIEBleGFtcGxlIHsgaGVpZ2h0OiAnMTAwJScgfVxuICAgKiBAZXhhbXBsZSB7IGhlaWdodDogJzEwMCUnLCB3aWR0aDogJzEwMCUnIH1cbiAgICovXG4gIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllc1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSBkZXZ0b29scyBwYW5lbCBpcyBjbG9zZWRcbiAgICovXG4gIG9uQ2xvc2U/OiAoKSA9PiB1bmtub3duXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbChcbiAgcHJvcHM6IERldnRvb2xzUGFuZWxPcHRpb25zLFxuKTogUmVhY3QuUmVhY3RFbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQocHJvcHMuY2xpZW50KVxuICBjb25zdCByZWYgPSBSZWFjdC51c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHsgZXJyb3JUeXBlcywgc3R5bGVOb25jZSwgc2hhZG93RE9NVGFyZ2V0IH0gPSBwcm9wc1xuICBjb25zdCBbZGV2dG9vbHNdID0gUmVhY3QudXNlU3RhdGUoXG4gICAgbmV3IFRhbnN0YWNrUXVlcnlEZXZ0b29sc1BhbmVsKHtcbiAgICAgIGNsaWVudDogcXVlcnlDbGllbnQsXG4gICAgICBxdWVyeUZsYXZvcjogJ1JlYWN0IFF1ZXJ5JyxcbiAgICAgIHZlcnNpb246ICc1JyxcbiAgICAgIG9ubGluZU1hbmFnZXIsXG4gICAgICBidXR0b25Qb3NpdGlvbjogJ2JvdHRvbS1sZWZ0JyxcbiAgICAgIHBvc2l0aW9uOiAnYm90dG9tJyxcbiAgICAgIGluaXRpYWxJc09wZW46IHRydWUsXG4gICAgICBlcnJvclR5cGVzLFxuICAgICAgc3R5bGVOb25jZSxcbiAgICAgIHNoYWRvd0RPTVRhcmdldCxcbiAgICAgIG9uQ2xvc2U6IHByb3BzLm9uQ2xvc2UsXG4gICAgfSksXG4gIClcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRldnRvb2xzLnNldENsaWVudChxdWVyeUNsaWVudClcbiAgfSwgW3F1ZXJ5Q2xpZW50LCBkZXZ0b29sc10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBkZXZ0b29scy5zZXRPbkNsb3NlKHByb3BzLm9uQ2xvc2UgPz8gKCgpID0+IHt9KSlcbiAgfSwgW3Byb3BzLm9uQ2xvc2UsIGRldnRvb2xzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRldnRvb2xzLnNldEVycm9yVHlwZXMoZXJyb3JUeXBlcyB8fCBbXSlcbiAgfSwgW2Vycm9yVHlwZXMsIGRldnRvb2xzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZWYuY3VycmVudCkge1xuICAgICAgZGV2dG9vbHMubW91bnQocmVmLmN1cnJlbnQpXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRldnRvb2xzLnVubW91bnQoKVxuICAgIH1cbiAgfSwgW2RldnRvb2xzXSlcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHN0eWxlPXt7IGhlaWdodDogJzUwMHB4JywgLi4ucHJvcHMuc3R5bGUgfX1cbiAgICAgIGNsYXNzTmFtZT1cInRzcWQtcGFyZW50LWNvbnRhaW5lclwiXG4gICAgICByZWY9e3JlZn1cbiAgICA+PC9kaXY+XG4gIClcbn1cbiIsICIndXNlIGNsaWVudCdcblxuaW1wb3J0ICogYXMgRGV2dG9vbHMgZnJvbSAnLi9SZWFjdFF1ZXJ5RGV2dG9vbHMnXG5pbXBvcnQgKiBhcyBEZXZ0b29sc1BhbmVsIGZyb20gJy4vUmVhY3RRdWVyeURldnRvb2xzUGFuZWwnXG5cbmV4cG9ydCBjb25zdCBSZWFjdFF1ZXJ5RGV2dG9vbHM6ICh0eXBlb2YgRGV2dG9vbHMpWydSZWFjdFF1ZXJ5RGV2dG9vbHMnXSA9XG4gIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAnZGV2ZWxvcG1lbnQnXG4gICAgPyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG4gICAgOiBEZXZ0b29scy5SZWFjdFF1ZXJ5RGV2dG9vbHNcblxuZXhwb3J0IGNvbnN0IFJlYWN0UXVlcnlEZXZ0b29sc1BhbmVsOiAodHlwZW9mIERldnRvb2xzUGFuZWwpWydSZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbCddID1cbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdkZXZlbG9wbWVudCdcbiAgICA/IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cbiAgICA6IERldnRvb2xzUGFuZWwuUmVhY3RRdWVyeURldnRvb2xzUGFuZWxcbiIsICJpbXBvcnQgeyBUb2FzdGVyIGFzIFNvbm5lciB9IGZyb20gXCJzb25uZXJcIjtcblxuLy8gaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tIFwiQC91aS9zdHVkaW8vdXRpbC90aGVtZS1wcm92aWRlclwiO1xuXG50eXBlIFRvYXN0ZXJQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBTb25uZXI+O1xuXG5jb25zdCBUb2FzdGVyID0gKHsgLi4ucHJvcHMgfTogVG9hc3RlclByb3BzKSA9PiB7XG4gIC8vIGNvbnN0IHsgdGhlbWUgPSBcInN5c3RlbVwiIH0gPSB1c2VUaGVtZSgpO1xuXG4gIHJldHVybiAoXG4gICAgPFNvbm5lclxuICAgICAgLy8gdGhlbWU9e3RoZW1lIGFzIFRvYXN0ZXJQcm9wc1tcInRoZW1lXCJdfVxuICAgICAgY2xhc3NOYW1lPVwicHMtdG9hc3RlciBwcy1ncm91cFwiXG4gICAgICB0b2FzdE9wdGlvbnM9e3tcbiAgICAgICAgY2xhc3NOYW1lczoge1xuICAgICAgICAgIHRvYXN0OlxuICAgICAgICAgICAgXCJncm91cCB0b2FzdCBncm91cC1bLnRvYXN0ZXJdOmJnLWJhY2tncm91bmQgZ3JvdXAtWy50b2FzdGVyXTp0ZXh0LWZvcmVncm91bmQgZ3JvdXAtWy50b2FzdGVyXTpib3JkZXItYm9yZGVyIGdyb3VwLVsudG9hc3Rlcl06c2hhZG93LWxnXCIsXG4gICAgICAgICAgZGVzY3JpcHRpb246IFwiZ3JvdXAtWy50b2FzdF06dGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsXG4gICAgICAgICAgYWN0aW9uQnV0dG9uOiBcImdyb3VwLVsudG9hc3RdOmJnLXByaW1hcnkgZ3JvdXAtWy50b2FzdF06dGV4dC1wcmltYXJ5LWZvcmVncm91bmRcIixcbiAgICAgICAgICBjYW5jZWxCdXR0b246IFwiZ3JvdXAtWy50b2FzdF06YmctbXV0ZWQgZ3JvdXAtWy50b2FzdF06dGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsXG4gICAgICAgIH0sXG4gICAgICB9fVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICk7XG59O1xuXG5leHBvcnQgeyBUb2FzdGVyIH07XG4iLCAiaW1wb3J0IHtcbiAgdW5zdGFibGVfQWRhcHRlck9wdGlvbnMgYXMgQWRhcHRlck9wdGlvbnMsXG4gIHVuc3RhYmxlX2NyZWF0ZUFkYXB0ZXJQcm92aWRlciBhcyBjcmVhdGVBZGFwdGVyUHJvdmlkZXIsXG59IGZyb20gXCJudXFzL2FkYXB0ZXJzL2N1c3RvbVwiO1xuaW1wb3J0IHsgRkMsIHR5cGUgUHJvcHNXaXRoQ2hpbGRyZW4sIHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmV4cG9ydCB0eXBlIHsgZGVmYXVsdCB9IGZyb20gXCJyZWFjdFwiO1xuXG4vKipcbiAqIEhvb2sgdGhhdCBOdXFzIHdpbGwgY2FsbCB0byByZWFkICYgd3JpdGUgVVJMIHN0YXRlLlxuICovXG5mdW5jdGlvbiB1c2VIYXNoQWRhcHRlcigpIHtcbiAgY29uc3QgcmF3SGFzaCA9IHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3cubG9jYXRpb24uaGFzaC5zbGljZSgxKSA6IFwiXCI7XG4gIGNvbnN0IFtoYXNoUGFyYW1zLCBzZXRIYXNoUGFyYW1zXSA9IHVzZVN0YXRlKG5ldyBVUkxTZWFyY2hQYXJhbXMocmF3SGFzaCkpO1xuXG4gIC8vIHdyaXRlIG5ldyBzdGF0ZSBiYWNrIGludG8gdGhlIGhhc2ggZnJhZ21lbnRcbiAgZnVuY3Rpb24gdXBkYXRlVXJsKHVwZGF0ZWQ6IFVSTFNlYXJjaFBhcmFtcywgeyBoaXN0b3J5IH06IEFkYXB0ZXJPcHRpb25zKSB7XG4gICAgY29uc3QgeyBwYXRobmFtZSwgc2VhcmNoIH0gPSB3aW5kb3cubG9jYXRpb247XG4gICAgY29uc3QgaGFzaCA9IHVwZGF0ZWQudG9TdHJpbmcoKTtcbiAgICBjb25zdCB1cmwgPSBgJHtwYXRobmFtZX0ke3NlYXJjaH0jJHtoYXNofWA7XG5cbiAgICBpZiAoaGlzdG9yeSA9PT0gXCJwdXNoXCIpIHtcbiAgICAgIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZShudWxsLCBcIlwiLCB1cmwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwgXCJcIiwgdXJsKTtcbiAgICB9XG5cbiAgICBzZXRIYXNoUGFyYW1zKHVwZGF0ZWQpO1xuICB9XG5cbiAgLy8gZXhwb3NlIGEgc25hcHNob3Qgb2YgdGhlIGN1cnJlbnQgcGFyYW1zXG4gIGZ1bmN0aW9uIGdldFNlYXJjaFBhcmFtc1NuYXBzaG90KCkge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICByZXR1cm4gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgIH1cbiAgICBjb25zdCByYXcgPSB3aW5kb3cubG9jYXRpb24uaGFzaC5zbGljZSgxKTtcblxuICAgIHJldHVybiBuZXcgVVJMU2VhcmNoUGFyYW1zKHJhdyk7XG4gIH1cblxuICAvLyBzeW5jIHN0YXRlIHdoZW4gdXNlciBuYXZpZ2F0ZXMgdmlhIGJyb3dzZXIgY29udHJvbHMgb3IgZXh0ZXJuYWwgc2NyaXB0XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZnVuY3Rpb24gaGFuZGxlSGFzaENoYW5nZSgpIHtcbiAgICAgIGNvbnN0IHJhd0hhc2ggPSB3aW5kb3cubG9jYXRpb24uaGFzaC5zbGljZSgxKTtcbiAgICAgIHNldEhhc2hQYXJhbXMobmV3IFVSTFNlYXJjaFBhcmFtcyhyYXdIYXNoKSk7XG4gICAgfVxuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJoYXNoY2hhbmdlXCIsIGhhbmRsZUhhc2hDaGFuZ2UpO1xuXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiaGFzaGNoYW5nZVwiLCBoYW5kbGVIYXNoQ2hhbmdlKTtcbiAgfSwgW10pO1xuXG4gIHJldHVybiB7IHNlYXJjaFBhcmFtczogaGFzaFBhcmFtcywgdXBkYXRlVXJsLCBnZXRTZWFyY2hQYXJhbXNTbmFwc2hvdCB9O1xufVxuXG4vKipcbiAqIFRoZSBhZGFwdGVyIHByb3ZpZGVyIGNvbXBvbmVudCB5b3Ugd3JhcCB5b3VyIGFwcCBpbi5cbiAqL1xuZXhwb3J0IGNvbnN0IE51cXNIYXNoQWRhcHRlciA9IGNyZWF0ZUFkYXB0ZXJQcm92aWRlcih1c2VIYXNoQWRhcHRlcikgYXMgRkM8UHJvcHNXaXRoQ2hpbGRyZW4+O1xuIiwgImltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyB1c2VRdWVyeVN0YXRlIH0gZnJvbSBcIi4uL2hvb2tzL251cXNcIjtcbmltcG9ydCB7IHVzZUludHJvc3BlY3Rpb24gfSBmcm9tIFwiLi4vaG9va3MvdXNlLWludHJvc3BlY3Rpb25cIjtcblxuZXhwb3J0IGZ1bmN0aW9uIFVSTERlZmF1bHRzSGFuZGxlcigpIHtcbiAgY29uc3QgW190YWJsZSwgc2V0VGFibGVdID0gdXNlUXVlcnlTdGF0ZShcInRhYmxlXCIpO1xuICBjb25zdCBbX3NjaGVtYSwgc2V0U2NoZW1hXSA9IHVzZVF1ZXJ5U3RhdGUoXCJzY2hlbWFcIik7XG4gIGNvbnN0IFtfdmlldywgc2V0Vmlld10gPSB1c2VRdWVyeVN0YXRlKFwidmlld1wiKTtcblxuICBjb25zdCB7IGRhdGE6IGludHJvc3BlY3Rpb24sIGlzTG9hZGluZzogaXNJbnRyb3NwZWN0aW9uTG9hZGluZyB9ID0gdXNlSW50cm9zcGVjdGlvbigpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzSW50cm9zcGVjdGlvbkxvYWRpbmcgfHwgIWludHJvc3BlY3Rpb24/LnNjaGVtYXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpc1RhYmxlU2V0ID0gX3RhYmxlICE9PSBudWxsO1xuICAgIGNvbnN0IGlzU2NoZW1hU2V0ID0gX3NjaGVtYSAhPT0gbnVsbDtcbiAgICBjb25zdCBpc1ZpZXdTZXQgPSBfdmlldyAhPT0gbnVsbDtcblxuICAgIGlmICghaXNUYWJsZVNldCAmJiAhaXNTY2hlbWFTZXQgJiYgIWlzVmlld1NldCkge1xuICAgICAgY29uc3QgZmlyc3RTY2hlbWFOYW1lID0gT2JqZWN0LmtleXMoaW50cm9zcGVjdGlvbi5zY2hlbWFzKVswXTtcbiAgICAgIGlmIChmaXJzdFNjaGVtYU5hbWUpIHtcbiAgICAgICAgY29uc3QgZmlyc3RUYWJsZSA9IGludHJvc3BlY3Rpb24uc2NoZW1hc1tmaXJzdFNjaGVtYU5hbWVdPy50YWJsZXNbMF07XG4gICAgICAgIGlmIChmaXJzdFRhYmxlKSB7XG4gICAgICAgICAgdm9pZCBzZXRUYWJsZShmaXJzdFRhYmxlLm5hbWUpO1xuICAgICAgICAgIHZvaWQgc2V0U2NoZW1hKGZpcnN0U2NoZW1hTmFtZSk7XG4gICAgICAgICAgdm9pZCBzZXRWaWV3KFwidGFibGVcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzVGFibGVTZXQgJiYgaXNTY2hlbWFTZXQgJiYgIWlzVmlld1NldCkge1xuICAgICAgdm9pZCBzZXRWaWV3KFwidGFibGVcIik7XG4gICAgfVxuICB9LCBbaXNJbnRyb3NwZWN0aW9uTG9hZGluZywgaW50cm9zcGVjdGlvbiwgc2V0VGFibGUsIHNldFNjaGVtYSwgc2V0VmlldywgX3RhYmxlLCBfc2NoZW1hLCBfdmlld10pO1xuXG4gIHJldHVybiBudWxsO1xufVxuIiwgImltcG9ydCB7IHVzZVF1ZXJ5IH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuXG5pbXBvcnQgdHlwZSB7IEludHJvc3BlY3Rpb24gfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcblxuZXhwb3J0IGNvbnN0IElOSVRJQUxfREFUQV9VUERBVEVEX0FUID0gLTE7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VJbnRyb3NwZWN0aW9uKCkge1xuICBjb25zdCB7IGFkYXB0ZXIgfSA9IHVzZVN0dWRpbygpO1xuXG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgaW5pdGlhbERhdGE6IHtcbiAgICAgIHNjaGVtYXM6IHtcbiAgICAgICAgW2FkYXB0ZXIuZGVmYXVsdFNjaGVtYSB8fCBcImRiXCJdOiB7XG4gICAgICAgICAgdGFibGVzOiB7fSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB0aW1lem9uZTogXCJVVENcIixcbiAgICAgIGZpbHRlck9wZXJhdG9yczogW10sXG4gICAgfSBzYXRpc2ZpZXMgSW50cm9zcGVjdGlvbixcbiAgICBpbml0aWFsRGF0YVVwZGF0ZWRBdDogSU5JVElBTF9EQVRBX1VQREFURURfQVQsXG4gICAgcXVlcnlGbjogYXN5bmMgKHsgc2lnbmFsIH0pID0+IHtcbiAgICAgIGNvbnN0IFtlcnJvciwgaW50cm9zcGVjdGlvbl0gPSBhd2FpdCBhZGFwdGVyLmludHJvc3BlY3QoeyBhYm9ydFNpZ25hbDogc2lnbmFsIH0pO1xuXG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbnRyb3NwZWN0aW9uO1xuICAgIH0sXG4gICAgcXVlcnlLZXk6IFtcImludHJvc3BlY3Rpb25cIl0sXG4gICAgLy8gaWYgaXMgaW5pdGlhbCBkYXRhLCByZWZldGNoIGltbWVkaWF0ZWx5LCBvdGhlcndpc2UsIG5ldmVyIHJlZmV0Y2ggYXV0b21hdGljYWxseSBpbiB0aGUgYmFja2dyb3VuZC5cbiAgICAvLyB3ZSBjYW4gc3RpbGwgcmVmZXRjaCBtYW51YWxseSB1c2luZyB0aGUgcXVlcnkgY2xpZW50IC0gcHJvYmFibHkgdHJpZ2dlcmVkIGJ5IGEgYnV0dG9uLlxuICAgIHN0YWxlVGltZTogKGN0eCkgPT4gKGN0eC5zdGF0ZS5kYXRhVXBkYXRlZEF0ID09PSBJTklUSUFMX0RBVEFfVVBEQVRFRF9BVCA/IDAgOiBJbmZpbml0eSksXG4gIH0pO1xufVxuIiwgImltcG9ydCB7IGluZmVyUm93RmlsdGVyLCBUYWJsZSB9IGZyb20gXCJAL2RhdGFcIjtcblxuZnVuY3Rpb24gZ2V0Um93SWQocm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdGFibGU6IFRhYmxlKSB7XG4gIGNvbnN0IGlkID0ge1xuICAgIGZpbHRlcjogaW5mZXJSb3dGaWx0ZXIocm93LCB0YWJsZS5jb2x1bW5zKSxcbiAgICB0YWJsZTogYCR7dGFibGUuc2NoZW1hfS4ke3RhYmxlLm5hbWV9YCxcbiAgfTtcblxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoaWQpO1xufVxuXG5mdW5jdGlvbiBhZGRSb3dJZFRvUm93KHJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHRhYmxlOiBUYWJsZSkge1xuICByZXR1cm4geyAuLi5yb3csIF9fcHNfcm93aWQ6IGdldFJvd0lkKHJvdywgdGFibGUpIH07XG59XG5cbnR5cGUgQWRhcHRlclJlc3VsdCA9IHtcbiAgcm93PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHJvd3M/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGFkZFJvd0lkVG9SZXN1bHQ8VCBleHRlbmRzIEFkYXB0ZXJSZXN1bHQ+KHJlc3VsdDogVCwgdGFibGU6IFRhYmxlKSB7XG4gIGNvbnN0IHsgcm93LCByb3dzIH0gPSByZXN1bHQ7XG5cbiAgaWYgKHJvdyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHsgLi4ucmVzdWx0LCByb3c6IGFkZFJvd0lkVG9Sb3cocm93LCB0YWJsZSkgfTtcbiAgfVxuICBpZiAocm93cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHsgLi4ucmVzdWx0LCByb3dzOiByb3dzLm1hcCgocm93KSA9PiBhZGRSb3dJZFRvUm93KHJvdywgdGFibGUpKSB9O1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiIsICJpbXBvcnQgeyB1c2VRdWVyeSB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcblxuaW1wb3J0IHR5cGUgeyBBZGFwdGVyUXVlcnlSZXN1bHQsIEZpbHRlckdyb3VwLCBTb3J0T3JkZXJJdGVtIH0gZnJvbSBcIi4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4uL3N0dWRpby9jb250ZXh0XCI7XG5pbXBvcnQgeyBhZGRSb3dJZFRvUmVzdWx0IH0gZnJvbSBcIi4vdXRpbHMvYWRkLXJvdy1pZC10by1yZXN1bHRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBVc2VBY3RpdmVUYWJsZVF1ZXJ5UHJvcHMge1xuICBwYWdlSW5kZXg6IG51bWJlcjtcbiAgcGFnZVNpemU6IG51bWJlcjtcbiAgc29ydE9yZGVyOiBTb3J0T3JkZXJJdGVtW107XG4gIGZpbHRlcjogRmlsdGVyR3JvdXA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VBY3RpdmVUYWJsZVF1ZXJ5KHByb3BzOiBVc2VBY3RpdmVUYWJsZVF1ZXJ5UHJvcHMpIHtcbiAgY29uc3QgeyBwYWdlSW5kZXgsIHBhZ2VTaXplLCBzb3J0T3JkZXIsIGZpbHRlciB9ID0gcHJvcHM7XG5cbiAgY29uc3QgeyBhY3RpdmVUYWJsZSwgYWRhcHRlciB9ID0gdXNlU3R1ZGlvKCk7XG5cbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBlbmFibGVkOiBCb29sZWFuKGFjdGl2ZVRhYmxlKSxcbiAgICBnY1RpbWU6IDAsXG4gICAgcGxhY2Vob2xkZXJEYXRhKHByZXZpb3VzRGF0YTogQWRhcHRlclF1ZXJ5UmVzdWx0IHwgdW5kZWZpbmVkLCBwcmV2aW91c1F1ZXJ5KSB7XG4gICAgICBjb25zdCBbLCBzY2hlbWEsICwgdGFibGVdID0gcHJldmlvdXNRdWVyeT8ucXVlcnlLZXkgfHwgW107XG5cbiAgICAgIGlmIChzY2hlbWEgIT09IGFjdGl2ZVRhYmxlPy5zY2hlbWEgfHwgdGFibGUgIT09IGFjdGl2ZVRhYmxlPy5uYW1lKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHByZXZpb3VzRGF0YTtcbiAgICB9LFxuICAgIGFzeW5jIHF1ZXJ5Rm4oeyBzaWduYWwgfSkge1xuICAgICAgY29uc3QgW2Vycm9yLCByZXN1bHRzXSA9IGF3YWl0IGFkYXB0ZXIucXVlcnkoXG4gICAgICAgIHsgcGFnZUluZGV4LCBwYWdlU2l6ZSwgc29ydE9yZGVyLCB0YWJsZTogYWN0aXZlVGFibGUhLCBmaWx0ZXIgfSxcbiAgICAgICAgeyBhYm9ydFNpZ25hbDogc2lnbmFsIH0sXG4gICAgICApO1xuXG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhZGRSb3dJZFRvUmVzdWx0KHJlc3VsdHMsIGFjdGl2ZVRhYmxlISk7XG4gICAgfSxcbiAgICBxdWVyeUtleTogW1xuICAgICAgXCJzY2hlbWFcIixcbiAgICAgIGFjdGl2ZVRhYmxlPy5zY2hlbWEgfHwgbnVsbCxcbiAgICAgIFwidGFibGVcIixcbiAgICAgIGFjdGl2ZVRhYmxlPy5uYW1lIHx8IG51bGwsXG4gICAgICBcInF1ZXJ5XCIsXG4gICAgICBcInNvcnRPcmRlclwiLFxuICAgICAgc29ydE9yZGVyLm1hcCgoaXRlbSkgPT4gYCR7aXRlbS5jb2x1bW59OiR7aXRlbS5kaXJlY3Rpb259YCkuam9pbihcIixcIikgfHwgXCJuYXR1cmFsXCIsXG4gICAgICBcInBhZ2VJbmRleFwiLFxuICAgICAgcGFnZUluZGV4LFxuICAgICAgXCJwYWdlU2l6ZVwiLFxuICAgICAgcGFnZVNpemUsXG4gICAgICBcImZpbHRlclwiLFxuICAgICAgSlNPTi5zdHJpbmdpZnkoZmlsdGVyKSxcbiAgICBdLFxuICAgIHN0YWxlVGltZTogSW5maW5pdHksXG4gIH0pO1xufVxuIiwgImltcG9ydCB7IHR5cGUgUXVlcnlDbGllbnQsIHVzZU11dGF0aW9uLCB1c2VRdWVyeUNsaWVudCB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcblxuaW1wb3J0IHR5cGUgeyBBZGFwdGVyUXVlcnlSZXN1bHQsIEFkYXB0ZXJVcGRhdGVEZXRhaWxzLCBBZGFwdGVyVXBkYXRlT3B0aW9ucywgVGFibGUgfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBpbmZlclJvd0ZpbHRlciB9IGZyb20gXCIuLi8uLi9kYXRhL3F1ZXJ5XCI7XG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBVc2VBY3RpdmVUYWJsZVVwZGF0ZVBhcmFtcyB7XG4gIGRldGFpbHM6IEFkYXB0ZXJVcGRhdGVEZXRhaWxzO1xuICBvcHRpb25zOiBBZGFwdGVyVXBkYXRlT3B0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUFjdGl2ZVRhYmxlVXBkYXRlKCkge1xuICBjb25zdCB7IGFjdGl2ZVRhYmxlLCBhZGFwdGVyLCBvbkVycm9yIH0gPSB1c2VTdHVkaW8oKTtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIGNvbnN0IHF1ZXJ5S2V5UHJlZml4ID0gW1wic2NoZW1hXCIsIGFjdGl2ZVRhYmxlPy5zY2hlbWEgPz8gbnVsbCwgXCJ0YWJsZVwiLCBhY3RpdmVUYWJsZT8ubmFtZSA/PyBudWxsXSBhcyBjb25zdDtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jIChwYXJhbXM6IFVzZUFjdGl2ZVRhYmxlVXBkYXRlUGFyYW1zKSA9PiB7XG4gICAgICBjb25zdCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCBhZGFwdGVyLnVwZGF0ZShwYXJhbXMuZGV0YWlscywgcGFyYW1zLm9wdGlvbnMpO1xuXG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSxcbiAgICBtdXRhdGlvbktleTogWy4uLnF1ZXJ5S2V5UHJlZml4LCBcInVwZGF0ZVwiXSxcbiAgICBvbkVycm9yKGVycm9yLCBwYXJhbXMpIHtcbiAgICAgIGNvbnN0IHsgY2hhbmdlcywgcm93IH0gPSBwYXJhbXMuZGV0YWlscztcblxuICAgICAgb25FcnJvcihlcnJvcik7XG5cbiAgICAgIG92ZXJ3cml0ZUNhY2hlZFJvdyh7XG4gICAgICAgIGdldEZpbmRlckZuKCkge1xuICAgICAgICAgIGNvbnN0IGNoYW5nZWRSb3cgPSB7IC4uLnJvdywgLi4uY2hhbmdlcyB9O1xuXG4gICAgICAgICAgY29uc3Qgcm93RmlsdGVyID0gaW5mZXJSb3dGaWx0ZXIoY2hhbmdlZFJvdywgYWN0aXZlVGFibGUhLmNvbHVtbnMpO1xuXG4gICAgICAgICAgcmV0dXJuIChjYWNoZWRSb3cpID0+IHJvd0ZpbHRlci5ldmVyeSgoW2NvbHVtbk5hbWUsIHZhbHVlXSkgPT4gY2FjaGVkUm93W2NvbHVtbk5hbWVdID09PSB2YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIHF1ZXJ5Q2xpZW50LFxuICAgICAgICB0YWJsZTogYWN0aXZlVGFibGUhLFxuICAgICAgICB1cGRhdGVyRm46IGZ1bmN0aW9uIHJldmVydENoYW5nZXMoY2FjaGVkUm93KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmNhY2hlZFJvdyxcbiAgICAgICAgICAgIC4uLk9iamVjdC5rZXlzKGNoYW5nZXMpLnJlZHVjZShcbiAgICAgICAgICAgICAgKG9yaWdpbmFsVmFsdWVzLCBjb2x1bW5OYW1lKSA9PiAoeyAuLi5vcmlnaW5hbFZhbHVlcywgW2NvbHVtbk5hbWVdOiByb3dbY29sdW1uTmFtZV0gfSksXG4gICAgICAgICAgICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBvbk11dGF0ZShwYXJhbXMpIHtcbiAgICAgIGNvbnN0IHsgZGV0YWlscyB9ID0gcGFyYW1zO1xuXG4gICAgICBvdmVyd3JpdGVDYWNoZWRSb3coe1xuICAgICAgICBnZXRGaW5kZXJGbigpIHtcbiAgICAgICAgICBjb25zdCB7IHJvdzogdW5jaGFuZ2VkUm93IH0gPSBkZXRhaWxzO1xuXG4gICAgICAgICAgY29uc3Qgcm93RmlsdGVyID0gaW5mZXJSb3dGaWx0ZXIodW5jaGFuZ2VkUm93LCBhY3RpdmVUYWJsZSEuY29sdW1ucyk7XG5cbiAgICAgICAgICByZXR1cm4gKGNhY2hlZFJvdykgPT4gcm93RmlsdGVyLmV2ZXJ5KChbY29sdW1uTmFtZSwgdmFsdWVdKSA9PiBjYWNoZWRSb3dbY29sdW1uTmFtZV0gPT09IHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgcXVlcnlDbGllbnQsXG4gICAgICAgIHRhYmxlOiBhY3RpdmVUYWJsZSEsXG4gICAgICAgIHVwZGF0ZXJGbjogZnVuY3Rpb24gYXBwbHlDaGFuZ2VzKGNhY2hlZFJvdykge1xuICAgICAgICAgIHJldHVybiB7IC4uLmNhY2hlZFJvdywgLi4uZGV0YWlscy5jaGFuZ2VzIH07XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9LFxuICAgIG9uU3VjY2VzcyhyZXN1bHQsIHBhcmFtcykge1xuICAgICAgb3ZlcndyaXRlQ2FjaGVkUm93KHtcbiAgICAgICAgZ2V0RmluZGVyRm4oKSB7XG4gICAgICAgICAgY29uc3QgeyBjaGFuZ2VzLCByb3cgfSA9IHBhcmFtcy5kZXRhaWxzO1xuXG4gICAgICAgICAgY29uc3QgY2hhbmdlZFJvdyA9IHsgLi4ucm93LCAuLi5jaGFuZ2VzIH07XG5cbiAgICAgICAgICBjb25zdCByb3dGaWx0ZXIgPSBpbmZlclJvd0ZpbHRlcihjaGFuZ2VkUm93LCBhY3RpdmVUYWJsZSEuY29sdW1ucyk7XG5cbiAgICAgICAgICByZXR1cm4gKGNhY2hlZFJvdykgPT4gcm93RmlsdGVyLmV2ZXJ5KChbY29sdW1uTmFtZSwgdmFsdWVdKSA9PiBjYWNoZWRSb3dbY29sdW1uTmFtZV0gPT09IHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgcXVlcnlDbGllbnQsXG4gICAgICAgIHRhYmxlOiBhY3RpdmVUYWJsZSEsXG4gICAgICAgIHVwZGF0ZXJGbjogZnVuY3Rpb24gYXBwbHlSZWFsRGF0YVdoZW5GcmVzaGVyKGNhY2hlZFJvdykge1xuICAgICAgICAgIGNvbnN0IHsgX19wc191cGRhdGVkX2F0X18gfSA9IGNhY2hlZFJvdztcbiAgICAgICAgICBjb25zdCB7IHJvdyB9ID0gcmVzdWx0O1xuXG4gICAgICAgICAgLy8gcmVzdWx0IHJvdyBpcyBzdGFsZS5cbiAgICAgICAgICBpZiAoX19wc191cGRhdGVkX2F0X18gIT0gbnVsbCAmJiByb3cuX19wc191cGRhdGVkX2F0X18gPD0gX19wc191cGRhdGVkX2F0X18pIHtcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRSb3c7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHsgLi4uY2FjaGVkUm93LCAuLi5yb3cgfTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgcmV0cnk6IGZhbHNlLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gb3ZlcndyaXRlQ2FjaGVkUm93KHBhcmFtczoge1xuICBnZXRGaW5kZXJGbjogKCkgPT4gKGNhY2hlZFJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IGJvb2xlYW47XG4gIHRhYmxlOiBUYWJsZTtcbiAgdXBkYXRlckZuOiAoY2FjaGVkUm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHF1ZXJ5Q2xpZW50OiBRdWVyeUNsaWVudDtcbn0pIHtcbiAgY29uc3QgeyBnZXRGaW5kZXJGbiwgcXVlcnlDbGllbnQsIHRhYmxlLCB1cGRhdGVyRm4gfSA9IHBhcmFtcztcblxuICBsZXQgZmluZGVyOiBSZXR1cm5UeXBlPHR5cGVvZiBnZXRGaW5kZXJGbj47XG5cbiAgcXVlcnlDbGllbnQuc2V0UXVlcmllc0RhdGEoXG4gICAgeyBleGFjdDogZmFsc2UsIHF1ZXJ5S2V5OiBbXCJzY2hlbWFcIiwgdGFibGUuc2NoZW1hLCBcInRhYmxlXCIsIHRhYmxlLm5hbWUsIFwicXVlcnlcIl0gfSxcbiAgICAoY2FjaGVkUmVzdWx0OiBBZGFwdGVyUXVlcnlSZXN1bHQgfCB1bmRlZmluZWQpOiBBZGFwdGVyUXVlcnlSZXN1bHQgfCB1bmRlZmluZWQgPT4ge1xuICAgICAgY29uc3QgeyByb3dzOiBjYWNoZWRSb3dzID0gW10gfSA9IGNhY2hlZFJlc3VsdCB8fCB7fTtcblxuICAgICAgaWYgKGNhY2hlZFJvd3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRSZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNhY2hlZFJvd0luZGV4ID0gY2FjaGVkUm93cy5maW5kSW5kZXgoKGZpbmRlciA/Pz0gZ2V0RmluZGVyRm4oKSkpO1xuXG4gICAgICBpZiAoY2FjaGVkUm93SW5kZXggPT09IC0xKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRSZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5ld1JvdyA9IHVwZGF0ZXJGbihjYWNoZWRSb3dzW2NhY2hlZFJvd0luZGV4XSEpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5jYWNoZWRSZXN1bHQhLFxuICAgICAgICByb3dzOiBbLi4uY2FjaGVkUm93cy5zbGljZSgwLCBjYWNoZWRSb3dJbmRleCksIG5ld1JvdywgLi4uY2FjaGVkUm93cy5zbGljZShjYWNoZWRSb3dJbmRleCArIDEpXSxcbiAgICAgIH07XG4gICAgfSxcbiAgKTtcbn1cbiIsICJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgc2hvcnQgZnJvbSBcInNob3J0LXV1aWRcIjtcblxuaW1wb3J0IHR5cGUgeyBGaWx0ZXJHcm91cCB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IHVzZVF1ZXJ5U3RhdGUgfSBmcm9tIFwiLi9udXFzXCI7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0RmlsdGVyOiBGaWx0ZXJHcm91cCA9IHtcbiAga2luZDogXCJGaWx0ZXJHcm91cFwiLFxuICBmaWx0ZXJzOiBbXSxcbiAgYWZ0ZXI6IFwiYW5kXCIsXG4gIGlkOiBzaG9ydC5nZW5lcmF0ZSgpLFxufTtcblxuY29uc3QgY291bnRGaWx0ZXJzUmVjdXJzaXZlID0gKGZpbHRlckdyb3VwOiBGaWx0ZXJHcm91cCk6IG51bWJlciA9PiB7XG4gIGxldCBjb3VudCA9IDA7XG4gIGZvciAoY29uc3QgZmlsdGVyIG9mIGZpbHRlckdyb3VwLmZpbHRlcnMpIHtcbiAgICBpZiAoZmlsdGVyLmtpbmQgPT09IFwiQ29sdW1uRmlsdGVyXCIpIHtcbiAgICAgIC8vIE9ubHkgY291bnQgZmlsdGVycyB0aGF0IGhhdmUgYSBub24tZW1wdHkgY29sdW1uIHNlbGVjdGVkXG4gICAgICBpZiAoZmlsdGVyLmNvbHVtbi50cmltKCkpIHtcbiAgICAgICAgY291bnQrKztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGZpbHRlci5raW5kID09PSBcIkZpbHRlckdyb3VwXCIpIHtcbiAgICAgIGNvdW50ICs9IGNvdW50RmlsdGVyc1JlY3Vyc2l2ZShmaWx0ZXIpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY291bnQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlRmlsdGVyaW5nKCkge1xuICBjb25zdCBbZmlsdGVyUGFyYW0sIHNldEZpbHRlclBhcmFtXSA9IHVzZVF1ZXJ5U3RhdGUoXCJmaWx0ZXJcIiwge1xuICAgIGRlZmF1bHRWYWx1ZTogSlNPTi5zdHJpbmdpZnkoZGVmYXVsdEZpbHRlciksXG4gIH0pO1xuXG4gIGNvbnN0IGFwcGxpZWRGaWx0ZXIgPSB1c2VNZW1vKCgpID0+IEpTT04ucGFyc2UoZmlsdGVyUGFyYW0pIGFzIEZpbHRlckdyb3VwLCBbZmlsdGVyUGFyYW1dKTtcbiAgY29uc3Qgc2V0QXBwbGllZEZpbHRlciA9IChmaWx0ZXI6IEZpbHRlckdyb3VwKSA9PiB2b2lkIHNldEZpbHRlclBhcmFtKEpTT04uc3RyaW5naWZ5KGZpbHRlcikpO1xuXG4gIGNvbnN0IFtlZGl0aW5nRmlsdGVyLCBzZXRFZGl0aW5nRmlsdGVyXSA9IHVzZVN0YXRlPEZpbHRlckdyb3VwPihhcHBsaWVkRmlsdGVyKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldEVkaXRpbmdGaWx0ZXIoYXBwbGllZEZpbHRlcik7XG4gIH0sIFthcHBsaWVkRmlsdGVyXSk7XG5cbiAgY29uc3QgdG90YWxFZGl0aW5nRmlsdGVycyA9IHVzZU1lbW8oKCkgPT4gY291bnRGaWx0ZXJzUmVjdXJzaXZlKGVkaXRpbmdGaWx0ZXIpLCBbZWRpdGluZ0ZpbHRlcl0pO1xuXG4gIHJldHVybiB7XG4gICAgYXBwbGllZEZpbHRlcixcbiAgICBzZXRBcHBsaWVkRmlsdGVyLFxuICAgIGVkaXRpbmdGaWx0ZXIsXG4gICAgc2V0RWRpdGluZ0ZpbHRlcixcbiAgICB0b3RhbEVkaXRpbmdGaWx0ZXJzLFxuICB9O1xufVxuIiwgImltcG9ydCB7IHVzZUlzTXV0YXRpbmcgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5cbi8qKlxuICogSG9vayB0byBrbm93IHdoZXRoZXIgYW4gaW5zZXJ0IGlzIGN1cnJlbnRseSBvbmdvaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlSXNJbnNlcnRpbmcoKSB7XG4gIHJldHVybiB1c2VJc011dGF0aW5nKHtcbiAgICBwcmVkaWNhdGUoeyBvcHRpb25zOiB7IG11dGF0aW9uS2V5IH0gfSkge1xuICAgICAgcmV0dXJuIG11dGF0aW9uS2V5Py5bNF0gPT09IFwiaW5zZXJ0XCI7XG4gICAgfSxcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBPbkNoYW5nZUZuLCBQYWdpbmF0aW9uU3RhdGUgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjayB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBrZXlNYXAsIHBhcnNlQXNJbmRleCwgcGFyc2VBc0ludGVnZXIsIHVzZVF1ZXJ5U3RhdGVzIH0gZnJvbSBcIi4vbnVxc1wiO1xuXG4vLyBUT0RPOiBldmVudHVhbGx5IGNvbmZpZ3VyYWJsZSAvIGNvbnRyb2xsZWQgYnkgdXNlci4gYmFieSBzdGVwcy4uXG5jb25zdCBERUZBVUxUX1BBR0VfU0laRSA9IDI1O1xuXG5jb25zdCBwYWdpbmF0aW9uUGFyc2VycyA9IGtleU1hcCh7XG4gIHBhZ2VJbmRleDogcGFyc2VBc0luZGV4LndpdGhEZWZhdWx0KDApLCAvLyB6ZXJvLWJhc2VkXG4gIHBhZ2VTaXplOiBwYXJzZUFzSW50ZWdlci53aXRoRGVmYXVsdChERUZBVUxUX1BBR0VfU0laRSksXG59KTtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVBhZ2luYXRpb24oKSB7XG4gIGNvbnN0IFt7IHBhZ2VJbmRleCwgcGFnZVNpemUgfSwgc2V0UGFnaW5hdGlvbl0gPSB1c2VRdWVyeVN0YXRlcyhwYWdpbmF0aW9uUGFyc2Vycyk7XG5cbiAgLy8gQ29tcGF0aWJsZSB3aXRoIFRhblN0YWNrIFRhYmxlJ3MgT25DaGFuZ2VGbjxQYWdpbmF0aW9uU3RhdGU+XG4gIGNvbnN0IHNldFBhZ2luYXRpb25TdGF0ZTogT25DaGFuZ2VGbjxQYWdpbmF0aW9uU3RhdGU+ID0gdXNlQ2FsbGJhY2soXG4gICAgKHVwZGF0ZXJPclZhbHVlKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHVwZGF0ZXJPclZhbHVlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgdm9pZCBzZXRQYWdpbmF0aW9uKChvbGQpID0+IHtcbiAgICAgICAgICBjb25zdCBuZXdTdGF0ZSA9IHVwZGF0ZXJPclZhbHVlKG9sZCk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHBhZ2VJbmRleDogbmV3U3RhdGUucGFnZUluZGV4LFxuICAgICAgICAgICAgcGFnZVNpemU6IG5ld1N0YXRlLnBhZ2VTaXplLFxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdm9pZCBzZXRQYWdpbmF0aW9uKHtcbiAgICAgICAgICBwYWdlSW5kZXg6IHVwZGF0ZXJPclZhbHVlLnBhZ2VJbmRleCxcbiAgICAgICAgICBwYWdlU2l6ZTogdXBkYXRlck9yVmFsdWUucGFnZVNpemUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgW3NldFBhZ2luYXRpb25dLFxuICApO1xuXG4gIHJldHVybiB7XG4gICAgcGFnaW5hdGlvblN0YXRlOiB7IHBhZ2VJbmRleCwgcGFnZVNpemUgfSxcbiAgICBzZXRQYWdpbmF0aW9uU3RhdGUsXG4gIH07XG59XG4iLCAiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBBZGFwdGVyUXVlcnlSZXN1bHQgfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuLi9zdHVkaW8vY29udGV4dFwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGVEZWxldGUgfSBmcm9tIFwiLi91c2UtYWN0aXZlLXRhYmxlLWRlbGV0ZVwiO1xuaW1wb3J0IHsgdXNlUGFnaW5hdGlvbiB9IGZyb20gXCIuL3VzZS1wYWdpbmF0aW9uXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VTZWxlY3Rpb24oZGF0YTogQWRhcHRlclF1ZXJ5UmVzdWx0IHwgdW5kZWZpbmVkKSB7XG4gIGNvbnN0IHsgYWN0aXZlVGFibGUsIG9uRXJyb3IgfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCB7IHBhZ2luYXRpb25TdGF0ZSB9ID0gdXNlUGFnaW5hdGlvbigpO1xuICBjb25zdCBbcm93U2VsZWN0aW9uU3RhdGUsIHNldFJvd1NlbGVjdGlvblN0YXRlXSA9IHVzZVN0YXRlPFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+Pih7fSk7XG4gIGNvbnN0IGlzU2VsZWN0aW5nID0gT2JqZWN0LmtleXMocm93U2VsZWN0aW9uU3RhdGUpLmxlbmd0aCAhPT0gMDtcbiAgY29uc3QgeyBtdXRhdGUgfSA9IHVzZUFjdGl2ZVRhYmxlRGVsZXRlKCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHNldFJvd1NlbGVjdGlvblN0YXRlKHt9KSwgW2FjdGl2ZVRhYmxlLCBwYWdpbmF0aW9uU3RhdGUucGFnZUluZGV4XSk7XG5cbiAgZnVuY3Rpb24gZGVsZXRlU2VsZWN0aW9uKCkge1xuICAgIGNvbnN0IHJvd3MgPSBkYXRhPy5yb3dzLmZpbHRlcigocm93KSA9PiB7XG4gICAgICByZXR1cm4gcm93U2VsZWN0aW9uU3RhdGVbcm93Ll9fcHNfcm93aWQgYXMgc3RyaW5nXTtcbiAgICB9KTtcblxuICAgIG11dGF0ZShyb3dzID8/IFtdLCB7XG4gICAgICBvblN1Y2Nlc3MoKSB7XG4gICAgICAgIHNldFJvd1NlbGVjdGlvblN0YXRlKHt9KTtcbiAgICAgIH0sXG4gICAgICBvbkVycm9yLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBkZWxldGVTZWxlY3Rpb24sXG4gICAgc2V0Um93U2VsZWN0aW9uU3RhdGUsXG4gICAgcm93U2VsZWN0aW9uU3RhdGUsXG4gICAgaXNTZWxlY3RpbmcsXG4gIH07XG59XG4iLCAiaW1wb3J0IHsgUXVlcnlLZXksIHVzZU11dGF0aW9uLCB1c2VRdWVyeUNsaWVudCB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcblxuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4uL3N0dWRpby9jb250ZXh0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VBY3RpdmVUYWJsZURlbGV0ZSgpIHtcbiAgY29uc3QgeyBhY3RpdmVUYWJsZSwgYWRhcHRlciB9ID0gdXNlU3R1ZGlvKCk7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcbiAgY29uc3QgeyBzY2hlbWEgPSBudWxsLCBuYW1lOiB0YWJsZSA9IG51bGwgfSA9IGFjdGl2ZVRhYmxlID8/IHt9O1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25LZXk6IFtcInNjaGVtYVwiLCBzY2hlbWEsIFwidGFibGVcIiwgdGFibGUsIFwiZGVsZXRlXCJdLFxuICAgIGFzeW5jIG11dGF0aW9uRm4ocm93czogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSkge1xuICAgICAgY29uc3QgW2Vycm9yLCByZXN1bHRdID0gYXdhaXQgYWRhcHRlci5kZWxldGUoeyByb3dzLCB0YWJsZTogYWN0aXZlVGFibGUhIH0sIHt9KTtcblxuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sXG4gICAgYXN5bmMgb25TdWNjZXNzKCkge1xuICAgICAgYXdhaXQgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoe1xuICAgICAgICBleGFjdDogZmFsc2UsXG4gICAgICAgIHF1ZXJ5S2V5OiBbXCJzY2hlbWFcIiwgc2NoZW1hLCBcInRhYmxlXCIsIHRhYmxlLCBcInF1ZXJ5XCJdIGFzIG5ldmVyIGFzIFF1ZXJ5S2V5LFxuICAgICAgfSk7XG4gICAgfSxcbiAgICByZXRyeTogZmFsc2UsXG4gIH0pO1xufVxuIiwgImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHR5cGUgeyBTb3J0T3JkZXJJdGVtIH0gZnJvbSBcIi4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgdXNlUXVlcnlTdGF0ZSB9IGZyb20gXCIuL251cXNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVNvcnRpbmcoKSB7XG4gIC8vIFVzZSBudXFzIHRvIG1hbmFnZSBzb3J0aW5nIHN0YXRlIGluIFVSTFxuICBjb25zdCBbc29ydFBhcmFtLCBzZXRTb3J0UGFyYW1dID0gdXNlUXVlcnlTdGF0ZShcInNvcnRcIiwge1xuICAgIGRlZmF1bHRWYWx1ZTogXCJcIixcbiAgfSk7XG5cbiAgLy8gUGFyc2Ugc29ydGluZyBmcm9tIFVSTCBwYXJhbWV0ZXJcbiAgY29uc3QgcGFyc2VTb3J0aW5nID0gKHNvcnRQYXJhbTogc3RyaW5nIHwgbnVsbCk6IFNvcnRPcmRlckl0ZW1bXSA9PiB7XG4gICAgaWYgKCFzb3J0UGFyYW0pIHJldHVybiBbXTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBGb3JtYXQ6IGNvbHVtbjpkaXJlY3Rpb24sY29sdW1uOmRpcmVjdGlvblxuICAgICAgcmV0dXJuIHNvcnRQYXJhbVxuICAgICAgICAuc3BsaXQoXCIsXCIpXG4gICAgICAgIC5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICBjb25zdCBbY29sdW1uLCBkaXJlY3Rpb25dID0gaXRlbS5zcGxpdChcIjpcIik7XG4gICAgICAgICAgaWYgKCFjb2x1bW4gfHwgIWRpcmVjdGlvbiB8fCAhW1wiYXNjXCIsIFwiZGVzY1wiXS5pbmNsdWRlcyhkaXJlY3Rpb24pKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHsgY29sdW1uLCBkaXJlY3Rpb246IGRpcmVjdGlvbiBhcyBcImFzY1wiIHwgXCJkZXNjXCIgfTtcbiAgICAgICAgfSlcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKSBhcyBTb3J0T3JkZXJJdGVtW107XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBwYXJzZSBzb3J0aW5nIHBhcmFtZXRlcjpcIiwgZSk7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9O1xuXG4gIC8vIENyZWF0ZSBhIHN0YWJsZSBzb3J0aW5nIHN0YXRlIHRoYXQncyBkZXJpdmVkIGZyb20gVVJMIHBhcmFtZXRlcnNcbiAgY29uc3QgW3NvcnRpbmdTdGF0ZSwgc2V0U29ydGluZ1N0YXRlXSA9IHVzZVN0YXRlKCgpID0+IHBhcnNlU29ydGluZyhzb3J0UGFyYW0pKTtcblxuICAvLyBLZWVwIGludGVybmFsIHN0YXRlIHN5bmNocm9uaXplZCB3aXRoIFVSTCBwYXJhbWV0ZXJzXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgbmV3U29ydGluZ1N0YXRlID0gcGFyc2VTb3J0aW5nKHNvcnRQYXJhbSk7XG4gICAgc2V0U29ydGluZ1N0YXRlKG5ld1NvcnRpbmdTdGF0ZSk7XG4gIH0sIFtzb3J0UGFyYW1dKTtcblxuICAvLyBVcGRhdGUgVVJMIHdoZW4gc29ydGluZyBjaGFuZ2VzIGZyb20gdGhlIFVJXG4gIGNvbnN0IGhhbmRsZVNvcnRpbmdDaGFuZ2UgPSAobmV3U3RhdGU6IFNvcnRPcmRlckl0ZW1bXSB8ICgob2xkOiBTb3J0T3JkZXJJdGVtW10pID0+IFNvcnRPcmRlckl0ZW1bXSkpID0+IHtcbiAgICBjb25zdCByZXNvbHZlZFN0YXRlID0gdHlwZW9mIG5ld1N0YXRlID09PSBcImZ1bmN0aW9uXCIgPyBuZXdTdGF0ZShzb3J0aW5nU3RhdGUpIDogbmV3U3RhdGU7XG4gICAgc2V0U29ydGluZ1N0YXRlKHJlc29sdmVkU3RhdGUpO1xuXG4gICAgLy8gU2VyaWFsaXplIHNvcnRpbmcgc3RhdGUgdG8gVVJMIHBhcmFtZXRlclxuICAgIGNvbnN0IHNvcnRTdHJpbmcgPVxuICAgICAgcmVzb2x2ZWRTdGF0ZS5sZW5ndGggPiAwID8gcmVzb2x2ZWRTdGF0ZS5tYXAoKGl0ZW0pID0+IGAke2l0ZW0uY29sdW1ufToke2l0ZW0uZGlyZWN0aW9ufWApLmpvaW4oXCIsXCIpIDogbnVsbDtcblxuICAgIHZvaWQgc2V0U29ydFBhcmFtKHNvcnRTdHJpbmcpO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgc29ydGluZ1N0YXRlLFxuICAgIHNldFNvcnRpbmdTdGF0ZTogaGFuZGxlU29ydGluZ0NoYW5nZSxcbiAgfTtcbn1cbiIsICJpbXBvcnQgeyBDb3B5IH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0IHsgaXNWYWxpZEVsZW1lbnQsIHR5cGUgUHJvcHNXaXRoQ2hpbGRyZW4sIHR5cGUgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENvbnRleHRNZW51LCBDb250ZXh0TWVudUNvbnRlbnQsIENvbnRleHRNZW51SXRlbSwgQ29udGV4dE1lbnVUcmlnZ2VyIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvY29udGV4dC1tZW51XCI7XG5cbmV4cG9ydCB0eXBlIERhdGFHcmlkQ2VsbENvbnRleHRNZW51UHJvcHMgPSBQcm9wc1dpdGhDaGlsZHJlbjxvYmplY3Q+O1xuXG4vLyBUT0RPOiBUaGlzIG5lZWRzIHRvIGJlIGludmVyc2lmaWVkIC0gdG8gbWFrZSBpdCBleHRlbnNpYmxlLCBhbmQgYWRhcHRhYmxlIHRvIGRpZmZlcmVudCBzaXR1YXRpb25zLlxuZXhwb3J0IGZ1bmN0aW9uIERhdGFHcmlkQ2VsbENvbnRleHRNZW51KHByb3BzOiBEYXRhR3JpZENlbGxDb250ZXh0TWVudVByb3BzKSB7XG4gIGNvbnN0IHsgY2hpbGRyZW4gfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPENvbnRleHRNZW51PlxuICAgICAgPENvbnRleHRNZW51VHJpZ2dlciBjbGFzc05hbWU9XCJwcy1ibG9jayBwcy13LWZ1bGwgcHMtcHgtW3ZhcigtLXN0dWRpby1jZWxsLXNwYWNpbmcpXSBwcy1sZWFkaW5nLVt2YXIoLS1zdHVkaW8tY2VsbC1oZWlnaHQpXSBwcy1oLVt2YXIoLS1zdHVkaW8tY2VsbC1oZWlnaHQpXSBwcy10ZXh0LXhzIHBzLWZvbnQtbW9ubyBwcy13aGl0ZXNwYWNlLW5vd3JhcCBwcy1vdmVyZmxvdy1oaWRkZW4gcHMtdGV4dC1lbGxpcHNpc1wiPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0NvbnRleHRNZW51VHJpZ2dlcj5cbiAgICAgIDxDb250ZXh0TWVudUNvbnRlbnQ+XG4gICAgICAgIDxDb250ZXh0TWVudUl0ZW1cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50ID0gZXh0cmFjdFRleHRDb250ZW50KGNoaWxkcmVuKTtcbiAgICAgICAgICAgIHZvaWQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoY29udGVudCkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gY29weSB0byBjbGlwYm9hcmQ6XCIsIGVycm9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH19XG4gICAgICAgICAgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIlxuICAgICAgICA+XG4gICAgICAgICAgPENvcHkgc2l6ZT17MTJ9IC8+XG4gICAgICAgICAgQ29weVxuICAgICAgICA8L0NvbnRleHRNZW51SXRlbT5cbiAgICAgIDwvQ29udGV4dE1lbnVDb250ZW50PlxuICAgIDwvQ29udGV4dE1lbnU+XG4gICk7XG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RUZXh0Q29udGVudChub2RlOiBSZWFjdE5vZGUpOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIG5vZGUgPT09IFwic3RyaW5nXCIgfHwgdHlwZW9mIG5vZGUgPT09IFwibnVtYmVyXCIgfHwgdHlwZW9mIG5vZGUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgcmV0dXJuIFN0cmluZyhub2RlKTtcbiAgfVxuXG4gIGlmIChub2RlID09PSBudWxsIHx8IG5vZGUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgaWYgKGlzVmFsaWRFbGVtZW50KG5vZGUpKSB7XG4gICAgY29uc3QgcHJvcHMgPSBub2RlLnByb3BzIGFzIHsgdGV4dD86IHN0cmluZzsgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGUgfTtcblxuICAgIC8vIEhhbmRsZSBSZXZlYWxUZXh0IGNvbXBvbmVudCBzcGVjaWZpY2FsbHlcbiAgICBpZiAobm9kZS50eXBlICYmIHR5cGVvZiBub2RlLnR5cGUgPT09IFwiZnVuY3Rpb25cIiAmJiBub2RlLnR5cGUubmFtZSA9PT0gXCJSZXZlYWxUZXh0XCIpIHtcbiAgICAgIHJldHVybiBwcm9wcy50ZXh0IHx8IFwiXCI7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIE51bGxWYWx1ZSBjb21wb25lbnRcbiAgICBpZiAobm9kZS50eXBlICYmIHR5cGVvZiBub2RlLnR5cGUgPT09IFwiZnVuY3Rpb25cIiAmJiBub2RlLnR5cGUubmFtZSA9PT0gXCJOdWxsVmFsdWVcIikge1xuICAgICAgcmV0dXJuIFwiTlVMTFwiO1xuICAgIH1cblxuICAgIC8vIFJlY3Vyc2l2ZWx5IGV4dHJhY3QgdGV4dCBmcm9tIGNoaWxkcmVuXG4gICAgaWYgKHByb3BzLmNoaWxkcmVuKSB7XG4gICAgICByZXR1cm4gZXh0cmFjdFRleHRDb250ZW50KHByb3BzLmNoaWxkcmVuIGFzIFJlYWN0Tm9kZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheShub2RlKSkge1xuICAgIHJldHVybiBub2RlLm1hcChleHRyYWN0VGV4dENvbnRlbnQpLmpvaW4oXCJcIik7XG4gIH1cblxuICByZXR1cm4gXCJcIjtcbn1cbiIsICJpbXBvcnQgKiBhcyBDb250ZXh0TWVudVByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbnRleHQtbWVudVwiO1xuaW1wb3J0IHsgQ2hlY2ssIENoZXZyb25SaWdodCwgQ2lyY2xlIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IENvbnRleHRNZW51ID0gQ29udGV4dE1lbnVQcmltaXRpdmUuUm9vdDtcblxuY29uc3QgQ29udGV4dE1lbnVUcmlnZ2VyID0gQ29udGV4dE1lbnVQcmltaXRpdmUuVHJpZ2dlcjtcblxuY29uc3QgQ29udGV4dE1lbnVHcm91cCA9IENvbnRleHRNZW51UHJpbWl0aXZlLkdyb3VwO1xuXG5jb25zdCBDb250ZXh0TWVudVBvcnRhbCA9IENvbnRleHRNZW51UHJpbWl0aXZlLlBvcnRhbDtcblxuY29uc3QgQ29udGV4dE1lbnVTdWIgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWI7XG5cbmNvbnN0IENvbnRleHRNZW51UmFkaW9Hcm91cCA9IENvbnRleHRNZW51UHJpbWl0aXZlLlJhZGlvR3JvdXA7XG5cbmNvbnN0IENvbnRleHRNZW51U3ViVHJpZ2dlciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlN1YlRyaWdnZXI+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlN1YlRyaWdnZXI+ICYge1xuICAgIGluc2V0PzogYm9vbGVhbjtcbiAgfVxuPigoeyBjbGFzc05hbWUsIGluc2V0LCBjaGlsZHJlbiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1zbSBwcy1weC0yIHBzLXB5LTEuNSBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1iZy1hY2NlbnQgZm9jdXM6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1iZy1hY2NlbnQgZGF0YS1bc3RhdGU9b3Blbl06cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZFwiLFxuICAgICAgaW5zZXQgJiYgXCJwcy1wbC04XCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICB7Y2hpbGRyZW59XG4gICAgPENoZXZyb25SaWdodCBjbGFzc05hbWU9XCJwcy1tbC1hdXRvIHBzLWgtNCBwcy13LTRcIiAvPlxuICA8L0NvbnRleHRNZW51UHJpbWl0aXZlLlN1YlRyaWdnZXI+XG4pKTtcbkNvbnRleHRNZW51U3ViVHJpZ2dlci5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLlN1YlRyaWdnZXIuZGlzcGxheU5hbWU7XG5cbmNvbnN0IENvbnRleHRNZW51U3ViQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJDb250ZW50XG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtei01MCBwcy1taW4tdy1bOHJlbV0gcHMtb3ZlcmZsb3ctaGlkZGVuIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtcC0xIHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1sZyBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1hbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtYW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1mYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLXpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnBzLXpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnBzLXNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpwcy1zbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06cHMtc2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnBzLXNsaWRlLWluLWZyb20tYm90dG9tLTIgcHMtb3JpZ2luLVstLXJhZGl4LWNvbnRleHQtbWVudS1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5dXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkNvbnRleHRNZW51U3ViQ29udGVudC5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmNvbnN0IENvbnRleHRNZW51Q29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPENvbnRleHRNZW51UHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy16LTUwIHBzLW1heC1oLVstLXJhZGl4LWNvbnRleHQtbWVudS1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHRdIHBzLW1pbi13LVs4cmVtXSBwcy1vdmVyZmxvdy15LWF1dG8gcHMtb3ZlcmZsb3cteC1oaWRkZW4gcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYmctcG9wb3ZlciBwcy1wLTEgcHMtdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgcHMtc2hhZG93LW1kIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1hbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06cHMtZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtem9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06cHMtem9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06cHMtc2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnBzLXNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpwcy1zbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06cHMtc2xpZGUtaW4tZnJvbS1ib3R0b20tMiBwcy1vcmlnaW4tWy0tcmFkaXgtY29udGV4dC1tZW51LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICA8L0NvbnRleHRNZW51UHJpbWl0aXZlLlBvcnRhbD5cbikpO1xuQ29udGV4dE1lbnVDb250ZW50LmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVJdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuSXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuSXRlbT4gJiB7XG4gICAgaW5zZXQ/OiBib29sZWFuO1xuICB9XG4+KCh7IGNsYXNzTmFtZSwgaW5zZXQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuSXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtc20gcHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTBcIixcbiAgICAgIGluc2V0ICYmIFwicHMtcGwtOFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5Db250ZXh0TWVudUl0ZW0uZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5JdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudUNoZWNrYm94SXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCBjaGVja2VkLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtc20gcHMtcHktMS41IHBzLXBsLTggcHMtcHItMiBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1iZy1hY2NlbnQgZm9jdXM6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cHMtcG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06cHMtb3BhY2l0eS01MFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgY2hlY2tlZD17Y2hlY2tlZH1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1hYnNvbHV0ZSBwcy1sZWZ0LTIgcHMtZmxleCBwcy1oLTMuNSBwcy13LTMuNSBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgIDxDb250ZXh0TWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgICAgICA8Q2hlY2sgY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNFwiIC8+XG4gICAgICA8L0NvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgPC9zcGFuPlxuICAgIHtjaGlsZHJlbn1cbiAgPC9Db250ZXh0TWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0+XG4pKTtcbkNvbnRleHRNZW51Q2hlY2tib3hJdGVtLmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudVJhZGlvSXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlJhZGlvSXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuUmFkaW9JdGVtPlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLlJhZGlvSXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtc20gcHMtcHktMS41IHBzLXBsLTggcHMtcHItMiBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1iZy1hY2NlbnQgZm9jdXM6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cHMtcG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06cHMtb3BhY2l0eS01MFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtYWJzb2x1dGUgcHMtbGVmdC0yIHBzLWZsZXggcHMtaC0zLjUgcHMtdy0zLjUgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyXCI+XG4gICAgICA8Q29udGV4dE1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgPENpcmNsZSBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00IHBzLWZpbGwtY3VycmVudFwiIC8+XG4gICAgICA8L0NvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgPC9zcGFuPlxuICAgIHtjaGlsZHJlbn1cbiAgPC9Db250ZXh0TWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0+XG4pKTtcbkNvbnRleHRNZW51UmFkaW9JdGVtLmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuUmFkaW9JdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudUxhYmVsID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuTGFiZWw+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkxhYmVsPiAmIHtcbiAgICBpbnNldD86IGJvb2xlYW47XG4gIH1cbj4oKHsgY2xhc3NOYW1lLCBpbnNldCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5MYWJlbFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJwcy1weC0yIHBzLXB5LTEuNSBwcy10ZXh0LXNtIHBzLWZvbnQtc2VtaWJvbGQgcHMtdGV4dC1mb3JlZ3JvdW5kXCIsIGluc2V0ICYmIFwicHMtcGwtOFwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuQ29udGV4dE1lbnVMYWJlbC5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLkxhYmVsLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudVNlcGFyYXRvciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlNlcGFyYXRvcj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuU2VwYXJhdG9yPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuU2VwYXJhdG9yXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcInBzLS1teC0xIHBzLW15LTEgcHMtaC1weCBwcy1iZy1ib3JkZXJcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkNvbnRleHRNZW51U2VwYXJhdG9yLmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuU2VwYXJhdG9yLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudVNob3J0Y3V0ID0gKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MU3BhbkVsZW1lbnQ+KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPHNwYW4gY2xhc3NOYW1lPXtjbihcInBzLW1sLWF1dG8gcHMtdGV4dC14cyBwcy10cmFja2luZy13aWRlc3QgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbiAgKTtcbn07XG5Db250ZXh0TWVudVNob3J0Y3V0LmRpc3BsYXlOYW1lID0gXCJDb250ZXh0TWVudVNob3J0Y3V0XCI7XG5cbmV4cG9ydCB7XG4gIENvbnRleHRNZW51LFxuICBDb250ZXh0TWVudVRyaWdnZXIsXG4gIENvbnRleHRNZW51Q29udGVudCxcbiAgQ29udGV4dE1lbnVJdGVtLFxuICBDb250ZXh0TWVudUNoZWNrYm94SXRlbSxcbiAgQ29udGV4dE1lbnVSYWRpb0l0ZW0sXG4gIENvbnRleHRNZW51TGFiZWwsXG4gIENvbnRleHRNZW51U2VwYXJhdG9yLFxuICBDb250ZXh0TWVudVNob3J0Y3V0LFxuICBDb250ZXh0TWVudUdyb3VwLFxuICBDb250ZXh0TWVudVBvcnRhbCxcbiAgQ29udGV4dE1lbnVTdWIsXG4gIENvbnRleHRNZW51U3ViQ29udGVudCxcbiAgQ29udGV4dE1lbnVTdWJUcmlnZ2VyLFxuICBDb250ZXh0TWVudVJhZGlvR3JvdXAsXG59O1xuIiwgImltcG9ydCB7IHR5cGUgQ1NTUHJvcGVydGllcywgRGV0YWlsZWRIVE1MUHJvcHMsIHR5cGUgUHJvcHNXaXRoQ2hpbGRyZW4gfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgVGFibGVDZWxsIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvdGFibGVcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uLy4uL2xpYi91dGlsc1wiO1xuaW1wb3J0IHsgRGF0YUdyaWRDZWxsQ29udGV4dE1lbnUgfSBmcm9tIFwiLi4vZ3JpZC9EYXRhR3JpZENlbGxDb250ZXh0TWVudVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENlbGxQcm9wcyBleHRlbmRzIFByb3BzV2l0aENoaWxkcmVuLCBEZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczx1bmtub3duPiwgdW5rbm93bj4ge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHN0eWxlPzogQ1NTUHJvcGVydGllcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIENlbGwocHJvcHM6IENlbGxQcm9wcykge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHJlZiwgc3R5bGUsIC4uLmZvcndhcmRlZFByb3BzIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxUYWJsZUNlbGxcbiAgICAgIHsuLi5mb3J3YXJkZWRQcm9wc31cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtcC0wIHBzLWJvcmRlci1yIHBzLWJvcmRlci1iIHBzLWJvcmRlci10YWJsZS1ib3JkZXJcIixcbiAgICAgICAgLy8gVE9ETzogS2VlcGluZyB0aGlzIHRlbXBvcmFyaWx5OyBtaWdodCBuZWVkIGl0IGxhdGVyIGRlcGVuZGluZyBvbiBpbnB1dCB0eXBlc1xuICAgICAgICAvLyBcImRhdGEtW2ZvY3VzPXRydWVdOnBzLXJpbmctMiBkYXRhLVtmb2N1cz10cnVlXTpwcy1yaW5nLWluZGlnby00MDAgZGF0YS1bZm9jdXM9dHJ1ZV06cHMtcmluZy1pbnNldFwiLFxuICAgICAgICBcInBzLWN1cnNvci1wb2ludGVyXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICByZWY9e3JlZiBhcyBuZXZlcn1cbiAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICA+XG4gICAgICA8RGF0YUdyaWRDZWxsQ29udGV4dE1lbnU+e2NoaWxkcmVufTwvRGF0YUdyaWRDZWxsQ29udGV4dE1lbnU+XG4gICAgPC9UYWJsZUNlbGw+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgQ2VsbCB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IGlzT2JqZWN0VHlwZSB9IGZyb20gXCJyZW1lZGFcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBCb29sZWFuQ2VsbCB9IGZyb20gXCIuL0Jvb2xlYW5DZWxsXCI7XG5pbXBvcnQgeyBEYXRlQ2VsbCB9IGZyb20gXCIuL0RhdGVDZWxsXCI7XG5pbXBvcnQgeyBFbXB0eUNlbGwgfSBmcm9tIFwiLi9FbXB0eUNlbGxcIjtcbmltcG9ydCB7IEVudW1DZWxsIH0gZnJvbSBcIi4vRW51bUNlbGxcIjtcbmltcG9ydCB7IEpTT05DZWxsIH0gZnJvbSBcIi4vSlNPTkNlbGxcIjtcbmltcG9ydCB7IE51bGxDZWxsIH0gZnJvbSBcIi4vTnVsbENlbGxcIjtcbmltcG9ydCB7IE51bWVyaWNDZWxsIH0gZnJvbSBcIi4vTnVtZXJpY0NlbGxcIjtcbmltcG9ydCB7IFJhd0NlbGwgfSBmcm9tIFwiLi9SYXdDZWxsXCI7XG5pbXBvcnQgeyBUaW1lQ2VsbCB9IGZyb20gXCIuL1RpbWVDZWxsXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDZWxsKHsgY2VsbCwgY29sdW1uIH06IHsgY2VsbDogQ2VsbDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdW5rbm93bj47IGNvbHVtbjogQ29sdW1uIH0pIHtcbiAgY29uc3QgdmFsdWUgPSBjZWxsLmdldFZhbHVlKCk7XG5cbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gPEVtcHR5Q2VsbCAvPjtcbiAgfVxuXG4gIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiA8TnVsbENlbGwgLz47XG4gIH1cblxuICBjb25zdCB7IGdyb3VwLCBpc0FycmF5IH0gPSBjb2x1bW4uZGF0YXR5cGU7XG5cbiAgaWYgKGdyb3VwID09PSBcImpzb25cIiB8fCBpc0FycmF5KSB7XG4gICAgcmV0dXJuIDxKU09OQ2VsbCB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIDxSYXdDZWxsIHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwiZW51bVwiKSB7XG4gICAgcmV0dXJuIDxFbnVtQ2VsbCB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcImJvb2xlYW5cIikge1xuICAgIHJldHVybiA8Qm9vbGVhbkNlbGwgdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJkYXRldGltZVwiKSB7XG4gICAgcmV0dXJuIDxEYXRlQ2VsbCB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcInRpbWVcIikge1xuICAgIHJldHVybiA8VGltZUNlbGwgdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJudW1lcmljXCIpIHtcbiAgICByZXR1cm4gPE51bWVyaWNDZWxsIHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwicmF3XCIpIHtcbiAgICBpZiAoaXNPYmplY3RUeXBlKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIDxKU09OQ2VsbCB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICAgIH1cblxuICAgIHJldHVybiA8UmF3Q2VsbCB2YWx1ZT17dmFsdWV9IC8+O1xuICB9XG5cbiAgZ3JvdXAgc2F0aXNmaWVzIG5ldmVyO1xuICB0aHJvdyBuZXcgRXJyb3IoYERhdGF0eXBlIGdyb3VwIFwiJHtncm91cCBhcyBzdHJpbmd9XCIgd2FzIG5vdCBoYW5kbGVkIGluICcvY2VsbC9nZXQtY2VsbC50c3gnYCk7XG59XG4iLCAiZXhwb3J0IGludGVyZmFjZSBCb29sZWFuQ2VsbFByb3BzIHtcbiAgdmFsdWU6IHVua25vd247XG59XG5cbmNvbnN0IEJvb2xlYW5DZWxsID0gKHByb3BzOiBCb29sZWFuQ2VsbFByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdmFsdWUgfSA9IHByb3BzO1xuXG4gIHJldHVybiA8ZGl2IGRhdGEtY2VsbC10eXBlPVwiYm9vbGVhblwiPntTdHJpbmcoQm9vbGVhbih2YWx1ZSkpfTwvZGl2Pjtcbn07XG5Cb29sZWFuQ2VsbC5kaXNwbGF5TmFtZSA9IFwiQm9vbGVhbkNlbGxcIjtcblxuZXhwb3J0IHsgQm9vbGVhbkNlbGwgfTtcbiIsICJleHBvcnQgaW50ZXJmYWNlIERhdGVDZWxsUHJvcHMge1xuICB2YWx1ZTogc3RyaW5nIHwgRGF0ZSB8IG51bWJlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVDZWxsKHByb3BzOiBEYXRlQ2VsbFByb3BzKSB7XG4gIGNvbnN0IHsgdmFsdWUgfSA9IHByb3BzO1xuXG4gIHJldHVybiA8PntTdHJpbmcodmFsdWUpfTwvPjtcbn1cbiIsICIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LW9iamVjdC10eXBlXG5leHBvcnQgaW50ZXJmYWNlIEVtcHR5Q2VsbFByb3BzIHt9XG5cbmV4cG9ydCBmdW5jdGlvbiBFbXB0eUNlbGwoX3Byb3BzOiBFbXB0eUNlbGxQcm9wcykge1xuICByZXR1cm4gPD48Lz47XG59XG4iLCAiZXhwb3J0IGludGVyZmFjZSBFbnVtQ2VsbFByb3BzIHtcbiAgdmFsdWU6IHVua25vd247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBFbnVtQ2VsbChwcm9wczogRW51bUNlbGxQcm9wcykge1xuICBjb25zdCB7IHZhbHVlIH0gPSBwcm9wcztcblxuICByZXR1cm4gPD57U3RyaW5nKHZhbHVlKX08Lz47XG59XG4iLCAiZXhwb3J0IGludGVyZmFjZSBKU09OQ2VsbFByb3BzIHtcbiAgdmFsdWU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5rbm93bltdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gSlNPTkNlbGwocHJvcHM6IEpTT05DZWxsUHJvcHMpIHtcbiAgY29uc3QgeyB2YWx1ZSB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIDw+e0pTT04uc3RyaW5naWZ5KHZhbHVlLCBudWxsLCAyKX08Lz47XG59XG4iLCAiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1vYmplY3QtdHlwZVxuZXhwb3J0IGludGVyZmFjZSBOdWxsQ2VsbFByb3BzIHt9XG5cbmV4cG9ydCBmdW5jdGlvbiBOdWxsQ2VsbChfcHJvcHM6IE51bGxDZWxsUHJvcHMpIHtcbiAgcmV0dXJuIDxjb2RlIGNsYXNzTmFtZT1cInBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZC82MFwiPk5VTEw8L2NvZGU+O1xufVxuIiwgImV4cG9ydCBpbnRlcmZhY2UgTnVtZXJpY0NlbGxQcm9wcyB7XG4gIHZhbHVlOiB1bmtub3duO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gTnVtZXJpY0NlbGwocHJvcHM6IE51bWVyaWNDZWxsUHJvcHMpIHtcbiAgY29uc3QgeyB2YWx1ZSB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIDxkaXYgZGF0YS1jZWxsLXR5cGU9XCJudW1lcmljXCI+e3ZhbHVlID09PSBudWxsID8gXCJOVUxMXCIgOiBTdHJpbmcodmFsdWUpfTwvZGl2Pjtcbn1cbiIsICJleHBvcnQgaW50ZXJmYWNlIFJhd0NlbGxQcm9wcyB7XG4gIHZhbHVlOiB1bmtub3duO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gUmF3Q2VsbChwcm9wczogUmF3Q2VsbFByb3BzKSB7XG4gIGNvbnN0IHsgdmFsdWUgfSA9IHByb3BzO1xuXG4gIHJldHVybiA8PntTdHJpbmcodmFsdWUpfTwvPjtcbn1cbiIsICJleHBvcnQgaW50ZXJmYWNlIFRpbWVDZWxsUHJvcHMge1xuICB2YWx1ZTogc3RyaW5nIHwgRGF0ZSB8IG51bWJlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFRpbWVDZWxsKHByb3BzOiBUaW1lQ2VsbFByb3BzKSB7XG4gIGNvbnN0IHsgdmFsdWUgfSA9IHByb3BzO1xuXG4gIHJldHVybiA8PntTdHJpbmcodmFsdWUpfTwvPjtcbn1cbiIsICJpbXBvcnQgKiBhcyBDaGVja2JveFByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNoZWNrYm94XCI7XG5pbXBvcnQgeyBDaGVjayB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENoZWNrYm94UHJpbWl0aXZlLlJvb3Q+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENoZWNrYm94UHJpbWl0aXZlLlJvb3Q+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDaGVja2JveFByaW1pdGl2ZS5Sb290XG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcGVlciBwcy1oLTQgcHMtdy00IHBzLXNocmluay0wIHBzLXJvdW5kZWQtc20gcHMtYm9yZGVyIHBzLWJvcmRlci1wcmltYXJ5IHBzLXNoYWRvdyBmb2N1cy12aXNpYmxlOnBzLW91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnBzLXJpbmctMSBmb2N1cy12aXNpYmxlOnBzLXJpbmctcmluZyBkaXNhYmxlZDpwcy1jdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6cHMtb3BhY2l0eS01MCBkYXRhLVtzdGF0ZT1jaGVja2VkXTpwcy1iZy1wcmltYXJ5IGRhdGEtW3N0YXRlPWNoZWNrZWRdOnBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8Q2hlY2tib3hQcmltaXRpdmUuSW5kaWNhdG9yIGNsYXNzTmFtZT17Y24oXCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlciBwcy10ZXh0LWN1cnJlbnRcIil9PlxuICAgICAgPENoZWNrIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTRcIiAvPlxuICAgIDwvQ2hlY2tib3hQcmltaXRpdmUuSW5kaWNhdG9yPlxuICA8L0NoZWNrYm94UHJpbWl0aXZlLlJvb3Q+XG4pKTtcbkNoZWNrYm94LmRpc3BsYXlOYW1lID0gQ2hlY2tib3hQcmltaXRpdmUuUm9vdC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgQ2hlY2tib3ggfTtcbiIsICJpbXBvcnQgeyBUYWJsZSB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcblxuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL2NoZWNrYm94XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0SGVhZGVyQ2VsbFByb3BzIHtcbiAgdGFibGU6IFRhYmxlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTZWxlY3RIZWFkZXJDZWxsKHByb3BzOiBTZWxlY3RIZWFkZXJDZWxsUHJvcHMpIHtcbiAgY29uc3QgeyB0YWJsZSwgcmVhZG9ubHkgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPENoZWNrYm94XG4gICAgICBjaGVja2VkPXt0YWJsZS5nZXRJc0FsbFJvd3NTZWxlY3RlZCgpfVxuICAgICAgb25DaGVja2VkQ2hhbmdlPXsodmFsdWUpID0+IHRhYmxlLnRvZ2dsZUFsbFJvd3NTZWxlY3RlZCghIXZhbHVlKX1cbiAgICAgIGRpc2FibGVkPXtyZWFkb25seX1cbiAgICAvPlxuICApO1xufVxuIiwgImltcG9ydCB7IFJvdyB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcblxuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL2NoZWNrYm94XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0Um93Q2VsbFByb3BzIHtcbiAgcm93OiBSb3c8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuICByZWFkb25seTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNlbGVjdFJvd0NlbGwocHJvcHM6IFNlbGVjdFJvd0NlbGxQcm9wcykge1xuICBjb25zdCB7IHJvdywgcmVhZG9ubHkgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPENoZWNrYm94XG4gICAgICBjaGVja2VkPXtyb3cuZ2V0SXNTZWxlY3RlZCgpfVxuICAgICAgZGlzYWJsZWQ9eyFyb3cuZ2V0Q2FuU2VsZWN0KCkgfHwgcmVhZG9ubHl9XG4gICAgICBvbkNoZWNrZWRDaGFuZ2U9e3Jvdy5nZXRUb2dnbGVTZWxlY3RlZEhhbmRsZXIoKX1cbiAgICAvPlxuICApO1xufVxuIiwgImltcG9ydCAqIGFzIFBvcG92ZXJQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wb3BvdmVyXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuaW50ZXJmYWNlIFBvcG92ZXJDZWxsQ29udGV4dFZhbHVlIHtcbiAgb3BlbjogYm9vbGVhbjtcbiAgc2V0T3BlbjogKG9wZW46IGJvb2xlYW4pID0+IHZvaWQ7XG59XG5cbmNvbnN0IFBvcG92ZXJDZWxsQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQ8UG9wb3ZlckNlbGxDb250ZXh0VmFsdWUgfCBudWxsPihudWxsKTtcblxuY29uc3QgUG9wb3ZlckNlbGwgPSAoeyBjaGlsZHJlbiwgLi4ucHJvcHMgfTogUG9wb3ZlclByaW1pdGl2ZS5Qb3BvdmVyUHJvcHMpID0+IHtcbiAgY29uc3QgW29wZW4sIHNldE9wZW5dID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuXG4gIHJldHVybiAoXG4gICAgPFBvcG92ZXJDZWxsQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17eyBvcGVuLCBzZXRPcGVuIH19PlxuICAgICAgPFBvcG92ZXJQcmltaXRpdmUuUm9vdCBvcGVuPXtvcGVufSBvbk9wZW5DaGFuZ2U9e3NldE9wZW59IHsuLi5wcm9wc30+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvUG9wb3ZlclByaW1pdGl2ZS5Sb290PlxuICAgIDwvUG9wb3ZlckNlbGxDb250ZXh0LlByb3ZpZGVyPlxuICApO1xufTtcblBvcG92ZXJDZWxsLmRpc3BsYXlOYW1lID0gXCJQb3BvdmVyQ2VsbFwiO1xuXG5pbnRlcmZhY2UgUG9wb3ZlckNlbGxUcmlnZ2VyUHJvcHMgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFBvcG92ZXJQcmltaXRpdmUuVHJpZ2dlcj4ge1xuICBvbkRvdWJsZUNsaWNrPzogKCkgPT4gdm9pZDtcbn1cblxuY29uc3QgUG9wb3ZlckNlbGxUcmlnZ2VyID0gUmVhY3QuZm9yd2FyZFJlZjxSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBQb3BvdmVyUHJpbWl0aXZlLlRyaWdnZXI+LCBQb3BvdmVyQ2VsbFRyaWdnZXJQcm9wcz4oXG4gICh7IGNoaWxkcmVuLCBvbkRvdWJsZUNsaWNrLCBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIC8vIGNvbnN0IGNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KFBvcG92ZXJDZWxsQ29udGV4dCk7XG4gICAgLy8gY29uc3QgW2lzRm9jdXNlZCwgc2V0SXNGb2N1c2VkXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCB0cmlnZ2VyUmVmID0gUmVhY3QudXNlUmVmPEhUTUxCdXR0b25FbGVtZW50PihudWxsKTtcblxuICAgIC8vIFRPRE86IEtlZXBpbmcgdGhpcyB0ZW1wb3JhcmlseTsgbWlnaHQgbmVlZCBpdCBsYXRlciBkZXBlbmRpbmcgb24gaW5wdXQgdHlwZXNcbiAgICAvLyBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vICAgY29uc3QgaGFuZGxlRG9jdW1lbnRDbGljayA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgLy8gICAgIGNvbnN0IHRhcmdldCA9IGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIC8vICAgICBpZiAodHJpZ2dlclJlZi5jdXJyZW50ICYmICF0cmlnZ2VyUmVmLmN1cnJlbnQuY29udGFpbnModGFyZ2V0KSkge1xuICAgIC8vICAgICAgIC8vIGNvbnNvbGUubG9nKFwiT3V0c2lkZSBjbGljayAtIHJlbW92aW5nIGZvY3VzXCIpO1xuICAgIC8vICAgICAgIHNldElzRm9jdXNlZChmYWxzZSk7XG4gICAgLy8gICAgIH1cbiAgICAvLyAgIH07XG5cbiAgICAvLyAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVEb2N1bWVudENsaWNrKTtcbiAgICAvLyAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlRG9jdW1lbnRDbGljayk7XG4gICAgLy8gfSwgW10pO1xuXG4gICAgLy8gY29uc3QgaGFuZGxlQ2xpY2sgPSAoZTogUmVhY3QuTW91c2VFdmVudCkgPT4ge1xuICAgIC8vICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIC8vICAgc2V0SXNGb2N1c2VkKHRydWUpO1xuICAgIC8vICAgY29udGV4dD8uc2V0T3Blbih0cnVlKTtcblxuICAgIC8vICAgaWYgKGUuZGV0YWlsID09PSAyICYmIG9uRG91YmxlQ2xpY2spIHtcbiAgICAvLyAgICAgb25Eb3VibGVDbGljaygpO1xuICAgIC8vICAgfVxuICAgIC8vIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFBvcG92ZXJQcmltaXRpdmUuVHJpZ2dlclxuICAgICAgICByZWY9eyhub2RlKSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiByZWYgPT09IFwiZnVuY3Rpb25cIikgcmVmKG5vZGUpO1xuICAgICAgICAgIGVsc2UgaWYgKHJlZikgcmVmLmN1cnJlbnQgPSBub2RlO1xuICAgICAgICAgICh0cmlnZ2VyUmVmIGFzIFJlYWN0Lk11dGFibGVSZWZPYmplY3Q8SFRNTEJ1dHRvbkVsZW1lbnQgfCBudWxsPikuY3VycmVudCA9IG5vZGU7XG4gICAgICAgIH19XG4gICAgICAgIC8vIG9uQ2xpY2s9e2hhbmRsZUNsaWNrfVxuICAgICAgICAvLyBkYXRhLWZvY3VzPXtpc0ZvY3VzZWQudG9TdHJpbmcoKX1cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcInctZnVsbCBoLWZ1bGwgY3Vyc29yLXBvaW50ZXJcIiwgY2xhc3NOYW1lKX1cbiAgICAgICAgey4uLnByb3BzfVxuICAgICAgPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L1BvcG92ZXJQcmltaXRpdmUuVHJpZ2dlcj5cbiAgICApO1xuICB9LFxuKTtcblBvcG92ZXJDZWxsVHJpZ2dlci5kaXNwbGF5TmFtZSA9IFwiUG9wb3ZlckNlbGxUcmlnZ2VyXCI7XG5cbmNvbnN0IFBvcG92ZXJDZWxsQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFBvcG92ZXJQcmltaXRpdmUuQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgUG9wb3ZlclByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIGFsaWduID0gXCJjZW50ZXJcIiwgc2lkZU9mZnNldCA9IDQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8UG9wb3ZlclByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPFBvcG92ZXJQcmltaXRpdmUuQ29udGVudFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBhbGlnbj17YWxpZ259XG4gICAgICBzaWRlT2Zmc2V0PXtzaWRlT2Zmc2V0fVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC0yIHBzLXotNTAgcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYmctcG9wb3ZlciBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbWQgcHMtb3V0bGluZS1ub25lIGRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOmZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06ZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06em9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06em9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06c2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpzbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06c2xpZGUtaW4tZnJvbS1ib3R0b20tMlwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgLy8gd2UgYXJlIGhhbmRsaW5nIHRoaXMgb3Vyc2VsdmVzLCBkbyBub3QgbGV0IHJhZGl4IHRha2Ugb3ZlclxuICAgICAgb25Fc2NhcGVLZXlEb3duPXsoZXZlbnQpID0+IGV2ZW50LnByZXZlbnREZWZhdWx0KCl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgPC9Qb3BvdmVyUHJpbWl0aXZlLlBvcnRhbD5cbikpO1xuUG9wb3ZlckNlbGxDb250ZW50LmRpc3BsYXlOYW1lID0gUG9wb3ZlclByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlUG9wb3ZlckFjdGlvbnMoYWN0aW9uczoge1xuICBvblNhdmU/OiAoKSA9PiBib29sZWFuIHwgdm9pZDtcbiAgb25DYW5jZWw/OiAoKSA9PiB2b2lkO1xuICByZWFkb25seTogYm9vbGVhbjtcbn0pIHtcbiAgY29uc3QgY29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoUG9wb3ZlckNlbGxDb250ZXh0KTtcblxuICBjb25zdCBoYW5kbGVTYXZlID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChhY3Rpb25zLnJlYWRvbmx5KSB7XG4gICAgICBjb250ZXh0Py5zZXRPcGVuKGZhbHNlKTtcbiAgICB9XG4gICAgaWYgKGFjdGlvbnMub25TYXZlKSB7XG4gICAgICBhY3Rpb25zLm9uU2F2ZSgpO1xuICAgIH1cbiAgICBpZiAoY29udGV4dCkge1xuICAgICAgY29udGV4dC5zZXRPcGVuKGZhbHNlKTtcbiAgICB9XG4gIH0sIFthY3Rpb25zLm9uU2F2ZSwgY29udGV4dF0pO1xuXG4gIGNvbnN0IGhhbmRsZUNhbmNlbCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoYWN0aW9ucy5yZWFkb25seSkge1xuICAgICAgY29udGV4dD8uc2V0T3BlbihmYWxzZSk7XG4gICAgfVxuICAgIGlmIChhY3Rpb25zLm9uQ2FuY2VsKSB7XG4gICAgICBhY3Rpb25zLm9uQ2FuY2VsKCk7XG4gICAgfVxuICAgIGlmIChjb250ZXh0KSB7XG4gICAgICBjb250ZXh0LnNldE9wZW4oZmFsc2UpO1xuICAgIH1cbiAgfSwgW2FjdGlvbnMub25DYW5jZWwsIGNvbnRleHRdKTtcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgIC8vIGNoZWNrIGlmIGVudGVyIGlzIHByZXNzZWQgYW5kIHByZXNzZWQgd2l0aG91dCBzaGlmdFxuICAgICAgaWYgKChldmVudC5rZXkgPT09IFwiRW50ZXJcIiB8fCBldmVudC5rZXkgPT09IFwiUmV0dXJuXCIpICYmICFldmVudC5zaGlmdEtleSkge1xuICAgICAgICBoYW5kbGVTYXZlKCk7XG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gXCJFc2NhcGVcIikge1xuICAgICAgICBoYW5kbGVDYW5jZWwoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIGhhbmRsZUtleURvd24pO1xuICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlS2V5RG93bik7XG4gIH0sIFtoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWxdKTtcblxuICByZXR1cm4geyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfTtcbn1cblxuZXhwb3J0IHsgUG9wb3ZlckNlbGwsIFBvcG92ZXJDZWxsVHJpZ2dlciwgUG9wb3ZlckNlbGxDb250ZW50IH07XG4iLCAiaW1wb3J0IHR5cGUgeyBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgUG9wb3ZlckNlbGwsIFBvcG92ZXJDZWxsQ29udGVudCwgUG9wb3ZlckNlbGxUcmlnZ2VyIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi8uLi9saWIvdXRpbHNcIjtcbmltcG9ydCB7IENlbGwsIENlbGxQcm9wcyB9IGZyb20gXCIuL0NlbGxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBXcml0ZWFibGVDZWxsUHJvcHMge1xuICBjZWxsQ29tcG9uZW50OiBSZWFjdE5vZGU7XG4gIGlucHV0Q29tcG9uZW50OiBSZWFjdE5vZGU7XG4gIGxpbmtDb21wb25lbnQ6IFJlYWN0Tm9kZTtcbiAgY29udGFpbmVyUHJvcHM/OiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBXcml0ZWFibGVDZWxsKHByb3BzOiBXcml0ZWFibGVDZWxsUHJvcHMpIHtcbiAgY29uc3QgeyBjZWxsQ29tcG9uZW50LCBpbnB1dENvbXBvbmVudCwgbGlua0NvbXBvbmVudCwgY29udGFpbmVyUHJvcHMgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPFBvcG92ZXJDZWxsPlxuICAgICAgPFBvcG92ZXJDZWxsVHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICA8Q2VsbCB7Li4uY29udGFpbmVyUHJvcHN9PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy13LWZ1bGwgcHMtZ2FwLTIgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdj57Y2VsbENvbXBvbmVudH08L2Rpdj5cbiAgICAgICAgICAgIHtsaW5rQ29tcG9uZW50fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L0NlbGw+XG4gICAgICA8L1BvcG92ZXJDZWxsVHJpZ2dlcj5cbiAgICAgIDxQb3BvdmVyQ2VsbENvbnRlbnRcbiAgICAgICAgYWxpZ249XCJzdGFydFwiXG4gICAgICAgIGFsaWduT2Zmc2V0PXstMX1cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICBcInBzLXJvdW5kZWQtbm9uZSBwcy1iZy1tdXRlZFwiLFxuICAgICAgICAgIFwicHMtcC0wIHBzLXotMzAgcHMtZ2FwLTAgcHMtYm9yZGVyLXByaW1hcnlcIixcbiAgICAgICAgICBcInBzLXctW2NhbGModmFyKC0tcmFkaXgtcG9wb3Zlci10cmlnZ2VyLXdpZHRoKV8rXzFweCldIHBzLW1heC13LTcyIHBzLW1pbi13LW1heFwiLFxuICAgICAgICApfVxuICAgICAgICBzaWRlT2Zmc2V0PXstNDB9XG4gICAgICA+XG4gICAgICAgIHtpbnB1dENvbXBvbmVudH1cbiAgICAgIDwvUG9wb3ZlckNlbGxDb250ZW50PlxuICAgIDwvUG9wb3ZlckNlbGw+XG4gICk7XG59XG4iLCAiaW1wb3J0IHtcbiAgY2xvc2VzdENlbnRlcixcbiAgRG5kQ29udGV4dCxcbiAgdHlwZSBEcmFnRW5kRXZlbnQsXG4gIERyYWdPdmVybGF5LFxuICB0eXBlIERyYWdTdGFydEV2ZW50LFxuICBLZXlib2FyZFNlbnNvcixcbiAgUG9pbnRlclNlbnNvcixcbiAgdHlwZSBVbmlxdWVJZGVudGlmaWVyLFxuICB1c2VTZW5zb3IsXG4gIHVzZVNlbnNvcnMsXG59IGZyb20gXCJAZG5kLWtpdC9jb3JlXCI7XG5pbXBvcnQge1xuICBhcnJheU1vdmUsXG4gIFNvcnRhYmxlQ29udGV4dCxcbiAgc29ydGFibGVLZXlib2FyZENvb3JkaW5hdGVzLFxuICB1c2VTb3J0YWJsZSxcbiAgdmVydGljYWxMaXN0U29ydGluZ1N0cmF0ZWd5LFxufSBmcm9tIFwiQGRuZC1raXQvc29ydGFibGVcIjtcbmltcG9ydCB7IENTUyB9IGZyb20gXCJAZG5kLWtpdC91dGlsaXRpZXNcIjtcbmltcG9ydCB7IENoZXZyb25Eb3duLCBDaGV2cm9uUmlnaHQsIEdyaXBWZXJ0aWNhbCwgSGVscENpcmNsZSwgWCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB7IG1vdGlvbiB9IGZyb20gXCJtb3Rpb24vcmVhY3RcIjtcbmltcG9ydCB7IEFuaW1hdGVOdW1iZXIgfSBmcm9tIFwibW90aW9uLXBsdXMvcmVhY3RcIjtcbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgRnJhZ21lbnQgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gXCJyZWFjdC1kb21cIjtcbmltcG9ydCBzaG9ydCBmcm9tIFwic2hvcnQtdXVpZFwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbHVtbkZpbHRlciwgRmlsdGVyR3JvdXAsIEZpbHRlck9wZXJhdG9yLCBUYWJsZSB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgY29lcmNlVG9TdHJpbmcsIGNvZXJjZVRvVmFsdWUgfSBmcm9tIFwiLi4vLi4vbGliL2NvbnZlcnNpb25VdGlsc1wiO1xuaW1wb3J0IHsgQmFkZ2UgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9iYWRnZVwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvYnV0dG9uXCI7XG5pbXBvcnQgeyBEcm9wZG93bk1lbnUsIERyb3Bkb3duTWVudUNvbnRlbnQsIERyb3Bkb3duTWVudVRyaWdnZXIgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9kcm9wZG93bi1tZW51XCI7XG5pbXBvcnQgeyBJbnB1dCB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL2lucHV0XCI7XG5pbXBvcnQgeyBTZWxlY3QsIFNlbGVjdENvbnRlbnQsIFNlbGVjdEl0ZW0sIFNlbGVjdFRyaWdnZXIsIFNlbGVjdFZhbHVlIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvc2VsZWN0XCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi9saWIvdXRpbHNcIjtcblxuY29uc3QgTGVhZGluZ09wZXJhdG9yU2VsZWN0ID0gKHtcbiAgdmFsdWUsXG4gIG9uVmFsdWVDaGFuZ2UsXG4gIGRpc2FibGVkLFxuICB0cmlnZ2VyQ2xhc3NOYW1lID0gXCJwcy13LTIwIHBzLXRleHQteHMgcHMtaC04XCIsXG59OiB7XG4gIHZhbHVlPzogXCJhbmRcIiB8IFwib3JcIjtcbiAgb25WYWx1ZUNoYW5nZTogKHZhbHVlOiBcImFuZFwiIHwgXCJvclwiKSA9PiB2b2lkO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIHRyaWdnZXJDbGFzc05hbWU/OiBzdHJpbmc7XG59KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPFNlbGVjdCB2YWx1ZT17dmFsdWV9IG9uVmFsdWVDaGFuZ2U9e29uVmFsdWVDaGFuZ2V9IGRpc2FibGVkPXtkaXNhYmxlZH0+XG4gICAgICA8U2VsZWN0VHJpZ2dlciBjbGFzc05hbWU9e3RyaWdnZXJDbGFzc05hbWV9PlxuICAgICAgICA8U2VsZWN0VmFsdWUgcGxhY2Vob2xkZXI9XCJMb2dpY1wiIC8+XG4gICAgICA8L1NlbGVjdFRyaWdnZXI+XG4gICAgICA8U2VsZWN0Q29udGVudD5cbiAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJhbmRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZvbnQtc2VtaWJvbGRcIj5BTkQ8L2Rpdj5cbiAgICAgICAgPC9TZWxlY3RJdGVtPlxuICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIm9yXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mb250LXNlbWlib2xkXCI+T1I8L2Rpdj5cbiAgICAgICAgPC9TZWxlY3RJdGVtPlxuICAgICAgPC9TZWxlY3RDb250ZW50PlxuICAgIDwvU2VsZWN0PlxuICApO1xufTtcblxuLy8gUmVuZGVycyB0aGUgcHJldmlldyBvZiB0aGUgaXRlbSBiZWluZyBkcmFnZ2VkIGluIHRoZSBEcmFnT3ZlcmxheS5cbmNvbnN0IERyYWdnYWJsZUZpbHRlckl0ZW1QcmV2aWV3ID0gKHtcbiAgYWN0aXZlSWQsXG4gIGl0ZW1zLFxuICB0YWJsZSxcbn06IHtcbiAgYWN0aXZlSWQ6IFVuaXF1ZUlkZW50aWZpZXI7XG4gIGl0ZW1zOiBBcnJheTxDb2x1bW5GaWx0ZXIgfCBGaWx0ZXJHcm91cD47XG4gIHRhYmxlOiBUYWJsZTtcbn0pID0+IHtcbiAgY29uc3QgYWN0aXZlSXRlbSA9IGl0ZW1zLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGFjdGl2ZUlkKTtcbiAgaWYgKCFhY3RpdmVJdGVtKSByZXR1cm4gbnVsbDtcblxuICBsZXQgbGVhZGluZ09wZXJhdG9yVmFsdWU6IFwiYW5kXCIgfCBcIm9yXCIgPSBcImFuZFwiOyAvLyBEZWZhdWx0XG4gIGxldCBzaG93TGVhZGluZ09wRm9yT3ZlcmxheSA9IGZhbHNlO1xuICBjb25zdCBhY3RpdmVJdGVtSW5kZXggPSBpdGVtcy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGFjdGl2ZUlkKTtcblxuICBpZiAoYWN0aXZlSXRlbUluZGV4ID4gMCkge1xuICAgIGNvbnN0IHByZXZpb3VzSXRlbSA9IGl0ZW1zW2FjdGl2ZUl0ZW1JbmRleCAtIDFdO1xuICAgIGlmIChwcmV2aW91c0l0ZW0pIHtcbiAgICAgIC8vICdhZnRlcicgZnJvbSB0aGUgcHJldmlvdXMgaXRlbSBkZXRlcm1pbmVzIHRoZSBvcGVyYXRvciBsZWFkaW5nIGludG8gdGhlIGN1cnJlbnQgaXRlbVxuICAgICAgbGVhZGluZ09wZXJhdG9yVmFsdWUgPSBwcmV2aW91c0l0ZW0uYWZ0ZXI7XG4gICAgICBzaG93TGVhZGluZ09wRm9yT3ZlcmxheSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgaWYgKGFjdGl2ZUl0ZW0ua2luZCA9PT0gXCJDb2x1bW5GaWx0ZXJcIikge1xuICAgIHJldHVybiAoXG4gICAgICA8RmlsdGVyQ29uZGl0aW9uXG4gICAgICAgIGZpbHRlcj17YWN0aXZlSXRlbX1cbiAgICAgICAgb25VcGRhdGU9eygpID0+IHt9fSAvLyBPdmVybGF5IGlzIG5vbi1pbnRlcmFjdGl2ZSBmb3IgdXBkYXRlc1xuICAgICAgICBvbkRlbGV0ZT17KCkgPT4ge319IC8vIE92ZXJsYXkgaXMgbm9uLWludGVyYWN0aXZlIGZvciBkZWxldGVzXG4gICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgc2hvd0xlYWRpbmdPcGVyYXRvcj17c2hvd0xlYWRpbmdPcEZvck92ZXJsYXl9XG4gICAgICAgIGxlYWRpbmdPcGVyYXRvclZhbHVlPXtsZWFkaW5nT3BlcmF0b3JWYWx1ZX1cbiAgICAgICAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2U9eygpID0+IHt9fSAvLyBOb24taW50ZXJhY3RpdmVcbiAgICAgIC8+XG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEZpbHRlckdyb3VwQ29tcG9uZW50XG4gICAgICAgIGdyb3VwPXthY3RpdmVJdGVtfVxuICAgICAgICBvblVwZGF0ZT17KCkgPT4ge319XG4gICAgICAgIG9uRGVsZXRlPXsoKSA9PiB7fX1cbiAgICAgICAgaXNSb290PXtmYWxzZX0gLy8gRHJhZ2dlZCBpdGVtIGluIG92ZXJsYXkgaXMgbm90IHRoZSByb290XG4gICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgc2hvd0xlYWRpbmdPcGVyYXRvcj17c2hvd0xlYWRpbmdPcEZvck92ZXJsYXl9XG4gICAgICAgIGxlYWRpbmdPcGVyYXRvclZhbHVlPXtsZWFkaW5nT3BlcmF0b3JWYWx1ZX1cbiAgICAgICAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2U9eygpID0+IHt9fVxuICAgICAgICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3Q9e2ZhbHNlfSAvLyBOb24taW50ZXJhY3RpdmUgZm9yIHByZXZpZXdcbiAgICAgIC8+XG4gICAgKTtcbiAgfVxufTtcblxuLy8gTWFuYWdlcyBETkQgY29udGV4dCBhbmQgcmVuZGVyaW5nIG9mIHNvcnRhYmxlIGZpbHRlciBpdGVtcyBmb3IgYSBncm91cC5cbmNvbnN0IEZpbHRlckxpc3RJdGVtcyA9ICh7XG4gIGl0ZW1zLFxuICBwYXJlbnRHcm91cElkLFxuICB0YWJsZSxcbiAgb25VcGRhdGVJdGVtLFxuICBvbkRlbGV0ZUl0ZW0sXG4gIG9uUmVvcmRlckl0ZW1zLFxuICBhY3RpdmVEcmFnSWQsXG4gIG9uRHJhZ1N0YXJ0LFxuICBvbkRyYWdFbmRTaWduYWwsXG59OiB7XG4gIGl0ZW1zOiBBcnJheTxDb2x1bW5GaWx0ZXIgfCBGaWx0ZXJHcm91cD47XG4gIHBhcmVudEdyb3VwSWQ6IFVuaXF1ZUlkZW50aWZpZXI7XG4gIHRhYmxlOiBUYWJsZTtcbiAgb25VcGRhdGVJdGVtOiAoaW5kZXg6IG51bWJlciwgdXBkYXRlZEl0ZW06IENvbHVtbkZpbHRlciB8IEZpbHRlckdyb3VwKSA9PiB2b2lkO1xuICBvbkRlbGV0ZUl0ZW06IChpbmRleDogbnVtYmVyKSA9PiB2b2lkO1xuICBvblJlb3JkZXJJdGVtczogKG9sZEluZGV4OiBudW1iZXIsIG5ld0luZGV4OiBudW1iZXIpID0+IHZvaWQ7XG4gIGFjdGl2ZURyYWdJZDogVW5pcXVlSWRlbnRpZmllciB8IG51bGw7XG4gIG9uRHJhZ1N0YXJ0OiAoZXZlbnQ6IERyYWdTdGFydEV2ZW50KSA9PiB2b2lkO1xuICBvbkRyYWdFbmRTaWduYWw6ICgpID0+IHZvaWQ7IC8vIENhbGxiYWNrIHRvIHNpZ25hbCBkcmFnIG9wZXJhdGlvbiBjb21wbGV0aW9uXG59KSA9PiB7XG4gIGNvbnN0IHNvcnRhYmxlSXRlbUlkcyA9IHVzZU1lbW8oKCkgPT4gaXRlbXMubWFwKChpdGVtKSA9PiBpdGVtLmlkKSwgW2l0ZW1zXSk7XG4gIGNvbnN0IHNlbnNvcnMgPSB1c2VTZW5zb3JzKFxuICAgIHVzZVNlbnNvcihQb2ludGVyU2Vuc29yLCB7IGFjdGl2YXRpb25Db25zdHJhaW50OiB7IGRpc3RhbmNlOiA4IH0gfSksXG4gICAgdXNlU2Vuc29yKEtleWJvYXJkU2Vuc29yLCB7IGNvb3JkaW5hdGVHZXR0ZXI6IHNvcnRhYmxlS2V5Ym9hcmRDb29yZGluYXRlcyB9KSxcbiAgKTtcblxuICBjb25zdCBoYW5kbGVJbnRlcm5hbERyYWdFbmQgPSAoZXZlbnQ6IERyYWdFbmRFdmVudCkgPT4ge1xuICAgIGNvbnN0IHsgYWN0aXZlLCBvdmVyIH0gPSBldmVudDtcbiAgICBpZiAob3ZlciAmJiBhY3RpdmUuaWQgIT09IG92ZXIuaWQpIHtcbiAgICAgIGNvbnN0IG9sZEluZGV4ID0gaXRlbXMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLmlkID09PSBhY3RpdmUuaWQpO1xuICAgICAgY29uc3QgbmV3SW5kZXggPSBpdGVtcy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IG92ZXIuaWQpO1xuICAgICAgaWYgKG9sZEluZGV4ICE9PSAtMSAmJiBuZXdJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgb25SZW9yZGVySXRlbXMob2xkSW5kZXgsIG5ld0luZGV4KTtcbiAgICAgIH1cbiAgICB9XG4gICAgb25EcmFnRW5kU2lnbmFsKCk7IC8vIFNpZ25hbCB0byBwYXJlbnQgdGhhdCBkcmFnIGhhcyBlbmRlZCAoZS5nLiwgdG8gY2xlYXIgYWN0aXZlRHJhZ0lkKVxuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPERuZENvbnRleHRcbiAgICAgIHNlbnNvcnM9e3NlbnNvcnN9XG4gICAgICBjb2xsaXNpb25EZXRlY3Rpb249e2Nsb3Nlc3RDZW50ZXJ9XG4gICAgICBvbkRyYWdTdGFydD17b25EcmFnU3RhcnR9XG4gICAgICBvbkRyYWdFbmQ9e2hhbmRsZUludGVybmFsRHJhZ0VuZH1cbiAgICA+XG4gICAgICA8U29ydGFibGVDb250ZXh0IGl0ZW1zPXtzb3J0YWJsZUl0ZW1JZHN9IHN0cmF0ZWd5PXt2ZXJ0aWNhbExpc3RTb3J0aW5nU3RyYXRlZ3l9PlxuICAgICAgICB7aXRlbXMubWFwKChjdXJyZW50RmlsdGVySXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICBsZXQgc2hvd0xlYWRpbmdPcCA9IGZhbHNlO1xuICAgICAgICAgIGxldCBsZWFkaW5nT3BWYWw6IFwiYW5kXCIgfCBcIm9yXCIgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgbGV0IG9uTGVhZGluZ09wQ2hhbmdlRm46ICgodmFsdWU6IFwiYW5kXCIgfCBcIm9yXCIpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuICAgICAgICAgIGxldCBpc0xlYWRpbmdPcFRhcmdldExhc3QgPSBmYWxzZTtcblxuICAgICAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgICAgIHNob3dMZWFkaW5nT3AgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgcHJldkl0ZW0gPSBpdGVtc1tpbmRleCAtIDFdITtcbiAgICAgICAgICAgIGxlYWRpbmdPcFZhbCA9IHByZXZJdGVtLmFmdGVyO1xuICAgICAgICAgICAgb25MZWFkaW5nT3BDaGFuZ2VGbiA9IChuZXdWYWx1ZTogXCJhbmRcIiB8IFwib3JcIikgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkUHJldkl0ZW0gPSB7IC4uLnByZXZJdGVtLCBhZnRlcjogbmV3VmFsdWUgfTtcbiAgICAgICAgICAgICAgb25VcGRhdGVJdGVtKGluZGV4IC0gMSwgdXBkYXRlZFByZXZJdGVtKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpc0xlYWRpbmdPcFRhcmdldExhc3QgPSBpbmRleCAtIDEgPT09IGl0ZW1zLmxlbmd0aCAtIDE7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxTb3J0YWJsZUZpbHRlckl0ZW1cbiAgICAgICAgICAgICAga2V5PXtjdXJyZW50RmlsdGVySXRlbS5pZH1cbiAgICAgICAgICAgICAgZmlsdGVyPXtjdXJyZW50RmlsdGVySXRlbX1cbiAgICAgICAgICAgICAgb25VcGRhdGU9eyh1cGRhdGVkRmlsdGVyKSA9PiBvblVwZGF0ZUl0ZW0oaW5kZXgsIHVwZGF0ZWRGaWx0ZXIpfVxuICAgICAgICAgICAgICBvbkRlbGV0ZT17KCkgPT4gb25EZWxldGVJdGVtKGluZGV4KX1cbiAgICAgICAgICAgICAgcGFyZW50RG5kSWQ9e3BhcmVudEdyb3VwSWR9XG4gICAgICAgICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgICAgICAgc2hvd0xlYWRpbmdPcGVyYXRvcj17c2hvd0xlYWRpbmdPcH1cbiAgICAgICAgICAgICAgbGVhZGluZ09wZXJhdG9yVmFsdWU9e2xlYWRpbmdPcFZhbH1cbiAgICAgICAgICAgICAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2U9e29uTGVhZGluZ09wQ2hhbmdlRm59XG4gICAgICAgICAgICAgIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdD17aXNMZWFkaW5nT3BUYXJnZXRMYXN0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApO1xuICAgICAgICB9KX1cbiAgICAgIDwvU29ydGFibGVDb250ZXh0PlxuICAgICAge2NyZWF0ZVBvcnRhbChcbiAgICAgICAgPERyYWdPdmVybGF5PlxuICAgICAgICAgIHthY3RpdmVEcmFnSWQgPyAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLW9wYWNpdHktODBcIj5cbiAgICAgICAgICAgICAgPERyYWdnYWJsZUZpbHRlckl0ZW1QcmV2aWV3IGFjdGl2ZUlkPXthY3RpdmVEcmFnSWR9IGl0ZW1zPXtpdGVtc30gdGFibGU9e3RhYmxlfSAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDwvRHJhZ092ZXJsYXk+LFxuICAgICAgICBkb2N1bWVudC5ib2R5LFxuICAgICAgKX1cbiAgICA8L0RuZENvbnRleHQ+XG4gICk7XG59O1xuXG4vLyBDb21wb25lbnQgZm9yIGEgc29ydGFibGUgZmlsdGVyIGl0ZW1cbmNvbnN0IFNvcnRhYmxlRmlsdGVySXRlbSA9ICh7XG4gIGZpbHRlcixcbiAgb25VcGRhdGUsXG4gIG9uRGVsZXRlLFxuICBwYXJlbnREbmRJZCxcbiAgdGFibGUsXG4gIHNob3dMZWFkaW5nT3BlcmF0b3IsXG4gIGxlYWRpbmdPcGVyYXRvclZhbHVlLFxuICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZSxcbiAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0LFxufToge1xuICBmaWx0ZXI6IENvbHVtbkZpbHRlciB8IEZpbHRlckdyb3VwO1xuICBvblVwZGF0ZTogKHVwZGF0ZWRGaWx0ZXI6IENvbHVtbkZpbHRlciB8IEZpbHRlckdyb3VwKSA9PiB2b2lkO1xuICBvbkRlbGV0ZTogKCkgPT4gdm9pZDtcbiAgcGFyZW50RG5kSWQ6IFVuaXF1ZUlkZW50aWZpZXI7XG4gIHRhYmxlOiBUYWJsZTtcbiAgc2hvd0xlYWRpbmdPcGVyYXRvcj86IGJvb2xlYW47XG4gIGxlYWRpbmdPcGVyYXRvclZhbHVlPzogXCJhbmRcIiB8IFwib3JcIjtcbiAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2U/OiAodmFsdWU6IFwiYW5kXCIgfCBcIm9yXCIpID0+IHZvaWQ7XG4gIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdD86IGJvb2xlYW47XG59KSA9PiB7XG4gIGNvbnN0IHsgYXR0cmlidXRlcywgbGlzdGVuZXJzLCBzZXROb2RlUmVmLCB0cmFuc2Zvcm0sIHRyYW5zaXRpb24sIGlzRHJhZ2dpbmcgfSA9IHVzZVNvcnRhYmxlKHtcbiAgICBpZDogZmlsdGVyLmlkLFxuICAgIGRhdGE6IHtcbiAgICAgIHR5cGU6IGZpbHRlci5raW5kLFxuICAgICAgcGFyZW50SWQ6IHBhcmVudERuZElkLFxuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IHN0eWxlID0ge1xuICAgIHRyYW5zZm9ybTogQ1NTLlRyYW5zZm9ybS50b1N0cmluZyh0cmFuc2Zvcm0pLFxuICAgIHRyYW5zaXRpb24sXG4gICAgb3BhY2l0eTogaXNEcmFnZ2luZyA/IDAuNSA6IDEsXG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IHJlZj17c2V0Tm9kZVJlZn0gc3R5bGU9e3N0eWxlfSBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWp1c3RpZnktYmV0d2VlbiBwcy1nYXAtMlwiPlxuICAgICAge2ZpbHRlci5raW5kID09PSBcIkNvbHVtbkZpbHRlclwiID8gKFxuICAgICAgICA8RmlsdGVyQ29uZGl0aW9uXG4gICAgICAgICAgZmlsdGVyPXtmaWx0ZXJ9XG4gICAgICAgICAgb25VcGRhdGU9e29uVXBkYXRlfVxuICAgICAgICAgIG9uRGVsZXRlPXtvbkRlbGV0ZX1cbiAgICAgICAgICBkcmFnSGFuZGxlUHJvcHM9e3sgLi4uYXR0cmlidXRlcywgLi4ubGlzdGVuZXJzIH19XG4gICAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICAgIHNob3dMZWFkaW5nT3BlcmF0b3I9e3Nob3dMZWFkaW5nT3BlcmF0b3J9XG4gICAgICAgICAgbGVhZGluZ09wZXJhdG9yVmFsdWU9e2xlYWRpbmdPcGVyYXRvclZhbHVlfVxuICAgICAgICAgIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlPXtvbkxlYWRpbmdPcGVyYXRvckNoYW5nZX1cbiAgICAgICAgICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3Q9e2lzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdH1cbiAgICAgICAgLz5cbiAgICAgICkgOiAoXG4gICAgICAgIDxGaWx0ZXJHcm91cENvbXBvbmVudFxuICAgICAgICAgIGdyb3VwPXtmaWx0ZXJ9XG4gICAgICAgICAgb25VcGRhdGU9e29uVXBkYXRlfVxuICAgICAgICAgIG9uRGVsZXRlPXtvbkRlbGV0ZX1cbiAgICAgICAgICBkcmFnSGFuZGxlUHJvcHM9e3sgLi4uYXR0cmlidXRlcywgLi4ubGlzdGVuZXJzIH19XG4gICAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICAgIHNob3dMZWFkaW5nT3BlcmF0b3I9e3Nob3dMZWFkaW5nT3BlcmF0b3J9XG4gICAgICAgICAgbGVhZGluZ09wZXJhdG9yVmFsdWU9e2xlYWRpbmdPcGVyYXRvclZhbHVlfVxuICAgICAgICAgIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlPXtvbkxlYWRpbmdPcGVyYXRvckNoYW5nZX1cbiAgICAgICAgICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3Q9e2lzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdH1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG4vLyBDb21wb25lbnQgZm9yIGEgc2luZ2xlIGZpbHRlciBjb25kaXRpb25cbmNvbnN0IEZpbHRlckNvbmRpdGlvbiA9ICh7XG4gIGZpbHRlcixcbiAgb25VcGRhdGUsXG4gIG9uRGVsZXRlLFxuICBkcmFnSGFuZGxlUHJvcHMsXG4gIHRhYmxlLFxuICBzaG93TGVhZGluZ09wZXJhdG9yLFxuICBsZWFkaW5nT3BlcmF0b3JWYWx1ZSxcbiAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2UsXG4gIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdCxcbn06IHtcbiAgZmlsdGVyOiBDb2x1bW5GaWx0ZXI7XG4gIG9uVXBkYXRlOiAodXBkYXRlZEZpbHRlcjogQ29sdW1uRmlsdGVyKSA9PiB2b2lkO1xuICBvbkRlbGV0ZTogKCkgPT4gdm9pZDtcbiAgZHJhZ0hhbmRsZVByb3BzPzogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+O1xuICB0YWJsZTogVGFibGU7XG4gIHNob3dMZWFkaW5nT3BlcmF0b3I/OiBib29sZWFuO1xuICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT86IFwiYW5kXCIgfCBcIm9yXCI7XG4gIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlPzogKHZhbHVlOiBcImFuZFwiIHwgXCJvclwiKSA9PiB2b2lkO1xuICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3Q/OiBib29sZWFuO1xufSkgPT4ge1xuICBjb25zdCBoYW5kbGVDb2x1bW5DaGFuZ2UgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgIG9uVXBkYXRlKHsgLi4uZmlsdGVyLCBjb2x1bW46IHZhbHVlIH0pO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU9wZXJhdG9yQ2hhbmdlID0gKHZhbHVlOiBGaWx0ZXJPcGVyYXRvcikgPT4ge1xuICAgIG9uVXBkYXRlKHsgLi4uZmlsdGVyLCBvcGVyYXRvcjogdmFsdWUgfSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlVmFsdWVDaGFuZ2UgPSAoZTogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBjb25zdCByYXdWYWx1ZSA9IGUudGFyZ2V0LnZhbHVlO1xuICAgIGNvbnN0IGNvbHVtbkluZm8gPSB0YWJsZS5jb2x1bW5zW2ZpbHRlci5jb2x1bW5dO1xuXG4gICAgaWYgKGNvbHVtbkluZm8gIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgbmV3VmFsdWUgPSBjb2VyY2VUb1ZhbHVlKGNvbHVtbkluZm8sIGZpbHRlci5vcGVyYXRvciwgcmF3VmFsdWUpO1xuXG4gICAgICBvblVwZGF0ZSh7IC4uLmZpbHRlciwgdmFsdWU6IG5ld1ZhbHVlIH0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBbZWRpdGVkVmFsdWUsIHNldEVkaXRlZFZhbHVlXSA9IHVzZVN0YXRlKFxuICAgIGNvZXJjZVRvU3RyaW5nKHRhYmxlLmNvbHVtbnNbZmlsdGVyLmNvbHVtbl0sIGZpbHRlci5vcGVyYXRvciwgZmlsdGVyLnZhbHVlKSxcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxtb3Rpb24uZGl2XG4gICAgICBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMiBwcy13LWZ1bGxcIlxuICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwIH19XG4gICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEgfX1cbiAgICAgIGV4aXQ9e3sgb3BhY2l0eTogMCB9fVxuICAgICAgdHJhbnNpdGlvbj17eyBsYXlvdXQ6IHsgZHVyYXRpb246IDAuMTIgfSB9fVxuICAgID5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTIgcHMtdy1mdWxsXCI+XG4gICAgICAgIDxkaXYgey4uLmRyYWdIYW5kbGVQcm9wc30gY2xhc3NOYW1lPVwicHMtY3Vyc29yLWdyYWJcIj5cbiAgICAgICAgICA8R3JpcFZlcnRpY2FsIGNsYXNzTmFtZT1cInBzLXRleHQtZ3JheS01MDBcIiBzaXplPXsxNn0gLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICAgIHtzaG93TGVhZGluZ09wZXJhdG9yICYmIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlID8gKFxuICAgICAgICAgICAgPExlYWRpbmdPcGVyYXRvclNlbGVjdFxuICAgICAgICAgICAgICB2YWx1ZT17bGVhZGluZ09wZXJhdG9yVmFsdWV9XG4gICAgICAgICAgICAgIG9uVmFsdWVDaGFuZ2U9e29uTGVhZGluZ09wZXJhdG9yQ2hhbmdlfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17aXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogbnVsbH1cblxuICAgICAgICAgIDxTZWxlY3QgdmFsdWU9e2ZpbHRlci5jb2x1bW59IG9uVmFsdWVDaGFuZ2U9e2hhbmRsZUNvbHVtbkNoYW5nZX0+XG4gICAgICAgICAgICA8U2VsZWN0VHJpZ2dlciBjbGFzc05hbWU9XCJwcy13LTI4IHBzLXRleHQteHMgcHMtaC04XCI+XG4gICAgICAgICAgICAgIDxTZWxlY3RWYWx1ZSBwbGFjZWhvbGRlcj1cIlNlbGVjdCBjb2x1bW5cIiAvPlxuICAgICAgICAgICAgPC9TZWxlY3RUcmlnZ2VyPlxuICAgICAgICAgICAgPFNlbGVjdENvbnRlbnQ+XG4gICAgICAgICAgICAgIHtPYmplY3Qua2V5cyh0YWJsZS5jb2x1bW5zKS5tYXAoKGNvbHVtbikgPT4gKFxuICAgICAgICAgICAgICAgIDxTZWxlY3RJdGVtIGtleT17Y29sdW1ufSB2YWx1ZT17Y29sdW1ufT5cbiAgICAgICAgICAgICAgICAgIHtjb2x1bW59XG4gICAgICAgICAgICAgICAgPC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvU2VsZWN0Q29udGVudD5cbiAgICAgICAgICA8L1NlbGVjdD5cblxuICAgICAgICAgIDxTZWxlY3QgdmFsdWU9e2ZpbHRlci5vcGVyYXRvcn0gb25WYWx1ZUNoYW5nZT17KHZhbHVlKSA9PiBoYW5kbGVPcGVyYXRvckNoYW5nZSh2YWx1ZSBhcyBGaWx0ZXJPcGVyYXRvcil9PlxuICAgICAgICAgICAgPFNlbGVjdFRyaWdnZXIgY2xhc3NOYW1lPVwicHMtdy0yMCBwcy10ZXh0LXhzIHBzLWgtOFwiPlxuICAgICAgICAgICAgICA8U2VsZWN0VmFsdWUgcGxhY2Vob2xkZXI9XCJPcGVyYXRvclwiIC8+XG4gICAgICAgICAgICA8L1NlbGVjdFRyaWdnZXI+XG4gICAgICAgICAgICA8U2VsZWN0Q29udGVudD5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCI9XCI+PTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCIhPVwiPiE9PC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIj5cIj4mZ3Q7PC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIj49XCI+Jmd0Oz08L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiPFwiPiZsdDs8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiPD1cIj4mbHQ7PTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJpc1wiPmlzPC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cImlzIG5vdFwiPmlzIG5vdDwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJsaWtlXCI+bGlrZTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJub3QgbGlrZVwiPm5vdCBsaWtlPC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cImlsaWtlXCI+aWxpa2U8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwibm90IGlsaWtlXCI+bm90IGlsaWtlPC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgPC9TZWxlY3RDb250ZW50PlxuICAgICAgICAgIDwvU2VsZWN0PlxuXG4gICAgICAgICAgPElucHV0XG4gICAgICAgICAgICB2YWx1ZT17ZWRpdGVkVmFsdWV9XG4gICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcbiAgICAgICAgICAgICAgc2V0RWRpdGVkVmFsdWUoZS50YXJnZXQudmFsdWUpO1xuICAgICAgICAgICAgICBoYW5kbGVWYWx1ZUNoYW5nZShlKTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInZhbHVlXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLXctMjQgcHMtdGV4dC14cyBwcy1oLThcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwiZ2hvc3RcIiBzaXplPVwieHNcIiBvbkNsaWNrPXtvbkRlbGV0ZX0+XG4gICAgICAgICAgPFggc2l6ZT17MTR9IC8+XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9tb3Rpb24uZGl2PlxuICApO1xufTtcblxuLy8gQ29tcG9uZW50IGZvciBhIGZpbHRlciBncm91cCAoQU5EL09SKVxuY29uc3QgRmlsdGVyR3JvdXBDb21wb25lbnQgPSAoe1xuICBncm91cCxcbiAgb25VcGRhdGUsXG4gIG9uRGVsZXRlLFxuICBkcmFnSGFuZGxlUHJvcHMsXG4gIGlzUm9vdCA9IGZhbHNlLFxuICB0YWJsZSxcbiAgc2hvd0xlYWRpbmdPcGVyYXRvcixcbiAgbGVhZGluZ09wZXJhdG9yVmFsdWUsXG4gIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlLFxuICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3QsXG59OiB7XG4gIGdyb3VwOiBGaWx0ZXJHcm91cDtcbiAgb25VcGRhdGU6ICh1cGRhdGVkR3JvdXA6IEZpbHRlckdyb3VwKSA9PiB2b2lkO1xuICBvbkRlbGV0ZTogKCkgPT4gdm9pZDtcbiAgZHJhZ0hhbmRsZVByb3BzPzogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+O1xuICBpc1Jvb3Q/OiBib29sZWFuO1xuICB0YWJsZTogVGFibGU7XG4gIHNob3dMZWFkaW5nT3BlcmF0b3I/OiBib29sZWFuO1xuICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT86IFwiYW5kXCIgfCBcIm9yXCI7XG4gIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlPzogKHZhbHVlOiBcImFuZFwiIHwgXCJvclwiKSA9PiB2b2lkO1xuICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3Q/OiBib29sZWFuO1xufSkgPT4ge1xuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgY29uc3QgW2FjdGl2ZURyYWdJZCwgc2V0QWN0aXZlRHJhZ0lkXSA9IHVzZVN0YXRlPFVuaXF1ZUlkZW50aWZpZXIgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBoYW5kbGVBZGRGaWx0ZXIgPSAoKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVyOiBDb2x1bW5GaWx0ZXIgPSB7XG4gICAgICBpZDogc2hvcnQuZ2VuZXJhdGUoKSxcbiAgICAgIGtpbmQ6IFwiQ29sdW1uRmlsdGVyXCIsXG4gICAgICBjb2x1bW46IE9iamVjdC5rZXlzKHRhYmxlLmNvbHVtbnMpWzBdID8/IFwiXCIsIC8vIEFsd2F5cyBzZWxlY3QgZmlyc3QgY29sXG4gICAgICBvcGVyYXRvcjogXCI9XCIsXG4gICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgYWZ0ZXI6IFwiYW5kXCIsXG4gICAgfTtcblxuICAgIG9uVXBkYXRlKHsgLi4uZ3JvdXAsIGZpbHRlcnM6IFsuLi5ncm91cC5maWx0ZXJzLCBuZXdGaWx0ZXJdIH0pO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUFkZEdyb3VwID0gKCkgPT4ge1xuICAgIGNvbnN0IG5ld0dyb3VwOiBGaWx0ZXJHcm91cCA9IHtcbiAgICAgIGlkOiBzaG9ydC5nZW5lcmF0ZSgpLFxuICAgICAga2luZDogXCJGaWx0ZXJHcm91cFwiLFxuICAgICAgZmlsdGVyczogW10sXG4gICAgICBhZnRlcjogXCJhbmRcIixcbiAgICB9O1xuXG4gICAgb25VcGRhdGUoeyAuLi5ncm91cCwgZmlsdGVyczogWy4uLmdyb3VwLmZpbHRlcnMsIG5ld0dyb3VwXSB9KTtcbiAgfTtcblxuICBjb25zdCB1cGRhdGVJdGVtSW5Hcm91cCA9IChpbmRleDogbnVtYmVyLCB1cGRhdGVkRmlsdGVyT3JHcm91cDogQ29sdW1uRmlsdGVyIHwgRmlsdGVyR3JvdXApID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXJzID0gWy4uLmdyb3VwLmZpbHRlcnNdO1xuICAgIG5ld0ZpbHRlcnNbaW5kZXhdID0gdXBkYXRlZEZpbHRlck9yR3JvdXA7XG4gICAgb25VcGRhdGUoeyAuLi5ncm91cCwgZmlsdGVyczogbmV3RmlsdGVycyB9KTtcbiAgfTtcblxuICBjb25zdCBkZWxldGVJdGVtRnJvbUdyb3VwID0gKGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXJzID0gWy4uLmdyb3VwLmZpbHRlcnNdO1xuICAgIG5ld0ZpbHRlcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICBvblVwZGF0ZSh7IC4uLmdyb3VwLCBmaWx0ZXJzOiBuZXdGaWx0ZXJzIH0pO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZURyYWdTdGFydCA9IChldmVudDogRHJhZ1N0YXJ0RXZlbnQpID0+IHtcbiAgICBzZXRBY3RpdmVEcmFnSWQoZXZlbnQuYWN0aXZlLmlkKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVEcmFnRW5kU2lnbmFsID0gKCkgPT4ge1xuICAgIHNldEFjdGl2ZURyYWdJZChudWxsKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVSZW9yZGVySXRlbXMgPSAob2xkSW5kZXg6IG51bWJlciwgbmV3SW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGlmIChvbGRJbmRleCA9PT0gbmV3SW5kZXgpIHJldHVybjtcbiAgICBjb25zdCByZW9yZGVyZWRGaWx0ZXJzID0gYXJyYXlNb3ZlKGdyb3VwLmZpbHRlcnMsIG9sZEluZGV4LCBuZXdJbmRleCk7XG4gICAgb25VcGRhdGUoeyAuLi5ncm91cCwgZmlsdGVyczogcmVvcmRlcmVkRmlsdGVycyB9KTtcbiAgfTtcblxuICBjb25zdCByZW5kZXJHcm91cENvbnRlbnQgPSAoKSA9PiB7XG4gICAgaWYgKCFpc0V4cGFuZGVkKSByZXR1cm4gbnVsbDtcbiAgICBpZiAoIWdyb3VwLmZpbHRlcnMgfHwgZ3JvdXAuZmlsdGVycy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtcGwtNiBwcy10ZXh0LXNtIHBzLXRleHQtbmV1dHJhbC01MDAgcHMtaXRhbGljXCI+XG4gICAgICAgICAgVGhpcyBncm91cCBpcyBlbXB0eS4gQWRkIGEgZmlsdGVyIG9yIGFub3RoZXIgZ3JvdXAuXG4gICAgICAgIDwvZGl2PlxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPG1vdGlvbi5kaXYgdHJhbnNpdGlvbj17eyBsYXlvdXQ6IHsgZHVyYXRpb246IDAuMTIgfSB9fT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NuKFwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1yZWxhdGl2ZSBwcy1nYXAtMlwiLCBpc1Jvb3QgPyBcIlwiIDogXCJwcy1wYi0yXCIpfT5cbiAgICAgICAgICA8RmlsdGVyTGlzdEl0ZW1zXG4gICAgICAgICAgICBpdGVtcz17Z3JvdXAuZmlsdGVyc31cbiAgICAgICAgICAgIHBhcmVudEdyb3VwSWQ9e2dyb3VwLmlkfVxuICAgICAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICAgICAgb25VcGRhdGVJdGVtPXt1cGRhdGVJdGVtSW5Hcm91cH1cbiAgICAgICAgICAgIG9uRGVsZXRlSXRlbT17ZGVsZXRlSXRlbUZyb21Hcm91cH1cbiAgICAgICAgICAgIG9uUmVvcmRlckl0ZW1zPXtoYW5kbGVSZW9yZGVySXRlbXN9XG4gICAgICAgICAgICBhY3RpdmVEcmFnSWQ9e2FjdGl2ZURyYWdJZH1cbiAgICAgICAgICAgIG9uRHJhZ1N0YXJ0PXtoYW5kbGVEcmFnU3RhcnR9XG4gICAgICAgICAgICBvbkRyYWdFbmRTaWduYWw9e2hhbmRsZURyYWdFbmRTaWduYWx9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21vdGlvbi5kaXY+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxtb3Rpb24uZGl2IGNsYXNzTmFtZT1cInBzLXctZnVsbFwiIHRyYW5zaXRpb249e3sgbGF5b3V0OiB7IGR1cmF0aW9uOiAwLjEyIH0gfX0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Y24oXCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLXctZnVsbFwiLCBpc0V4cGFuZGVkID8gXCJwcy1nYXAtMlwiIDogXCJcIil9PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlbiBwcy13LWZ1bGxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICB7IWlzUm9vdCAmJiAoXG4gICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzLCBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnNcbiAgICAgICAgICAgICAgPGRpdiB7Li4uZHJhZ0hhbmRsZVByb3BzfSBjbGFzc05hbWU9XCJwcy1jdXJzb3ItZ3JhYlwiIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfT5cbiAgICAgICAgICAgICAgICB7aXNFeHBhbmRlZCA/IDxDaGV2cm9uRG93biBzaXplPXsxNn0gLz4gOiA8Q2hldnJvblJpZ2h0IHNpemU9ezE2fSAvPn1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7c2hvd0xlYWRpbmdPcGVyYXRvciAmJiBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZSAmJiAhaXNSb290ICYmIChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxMZWFkaW5nT3BlcmF0b3JTZWxlY3RcbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtsZWFkaW5nT3BlcmF0b3JWYWx1ZX1cbiAgICAgICAgICAgICAgICAgIG9uVmFsdWVDaGFuZ2U9e29uTGVhZGluZ09wZXJhdG9yQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVcIlxuICAgICAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVBZGRGaWx0ZXJ9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMiBvdmVyZmxvdy1oaWRkZW4gcHMtdHJhbnNpdGlvbi1hbGxcIil9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIEFkZCBGaWx0ZXJcbiAgICAgICAgICAgICAge2dyb3VwLmZpbHRlcnMubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgPEJhZGdlIGNsYXNzTmFtZT1cInBzLXRyYW5zaXRpb24tYWxsXCI+XG4gICAgICAgICAgICAgICAgICA8QW5pbWF0ZU51bWJlciB0cmFuc2l0aW9uPXt7IGxheW91dDogeyBkdXJhdGlvbjogMC4xMiB9IH19Pntncm91cC5maWx0ZXJzLmxlbmd0aH08L0FuaW1hdGVOdW1iZXI+XG4gICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuXG4gICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lXCIgc2l6ZT1cInNtXCIgb25DbGljaz17aGFuZGxlQWRkR3JvdXB9IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0xXCI+XG4gICAgICAgICAgICAgIEFkZCBHcm91cFxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICAgICAge2lzUm9vdCAmJiAoXG4gICAgICAgICAgICAgIDxEcm9wZG93bk1lbnU+XG4gICAgICAgICAgICAgICAgPERyb3Bkb3duTWVudVRyaWdnZXIgYXNDaGlsZD5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cImdob3N0XCIgc2l6ZT1cInNtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxIZWxwQ2lyY2xlIGNsYXNzTmFtZT1cInBzLXNpemUtNFwiIC8+XG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duTWVudVRyaWdnZXI+XG4gICAgICAgICAgICAgICAgPERyb3Bkb3duTWVudUNvbnRlbnQgYWxpZ249XCJjZW50ZXJcIiBjbGFzc05hbWU9XCJwcy13LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgIHtncm91cC5maWx0ZXJzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1wLTQgcHMtdGV4dC1jZW50ZXIgcHMtdGV4dC1zbSBwcy10ZXh0LW5ldXRyYWwtNjAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgTm8gZmlsdGVycyBhcHBsaWVkIHlldC4gQWRkIGZpbHRlcnMgdG8gcHJldmlldyB5b3VyIHF1ZXJ5LlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtcC0yIHBzLXRleHQtY2VudGVyIHBzLXRleHQtc20gcHMtYmctbmV1dHJhbC0xMDAgcHMtcm91bmRlZC1zbSBwcy1mb250LW1vbm9cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8UXVlcnlWaXN1YWxpemVyIGZpbHRlcj17Z3JvdXB9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duTWVudUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIHshaXNSb290ICYmIChcbiAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwiZ2hvc3RcIiBzaXplPVwieHNcIiBvbkNsaWNrPXtvbkRlbGV0ZX0+XG4gICAgICAgICAgICAgICAgPFggc2l6ZT17MTR9IC8+XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbihpc1Jvb3QgPyBcIlwiIDogXCJwcy1tbC02XCIpfT57cmVuZGVyR3JvdXBDb250ZW50KCl9PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L21vdGlvbi5kaXY+XG4gICk7XG59O1xuXG4vLyBDb21wb25lbnQgdG8gdmlzdWFsaXplIHRoZSBxdWVyeSBzdHJpbmdcbmNvbnN0IFF1ZXJ5VmlzdWFsaXplciA9ICh7IGZpbHRlciB9OiB7IGZpbHRlcjogRmlsdGVyR3JvdXAgfSk6IFJlYWN0Tm9kZSA9PiB7XG4gIGxldCBpc0FuZEdyb3VwT3BlbiA9IDA7XG5cbiAgaWYgKGZpbHRlci5maWx0ZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFwiKCApXCI7XG5cbiAgY29uc3QgZ3JvdXAgPSBmaWx0ZXIuZmlsdGVycy5tYXAoKGYsIGkpID0+IHtcbiAgICBsZXQgcmVzdWx0OiBSZWFjdE5vZGU7XG4gICAgY29uc3QgaXNMYXN0ID0gZmlsdGVyLmZpbHRlcnMubGVuZ3RoIC0gMSA9PT0gaTtcblxuICAgIGlmIChpc0FuZEdyb3VwT3BlbiA9PT0gLTEpIHtcbiAgICAgIGlzQW5kR3JvdXBPcGVuID0gMDtcbiAgICB9XG5cbiAgICBpZiAoZi5hZnRlciA9PT0gXCJhbmRcIiAmJiAhaXNMYXN0KSB7XG4gICAgICBpc0FuZEdyb3VwT3BlbiArPSAxO1xuICAgIH1cbiAgICBpZiAoaXNBbmRHcm91cE9wZW4gJiYgKGlzTGFzdCB8fCBmLmFmdGVyID09PSBcIm9yXCIpKSB7XG4gICAgICBpc0FuZEdyb3VwT3BlbiA9IC0xO1xuICAgIH1cblxuICAgIGlmIChmLmtpbmQgPT09IFwiQ29sdW1uRmlsdGVyXCIpIHtcbiAgICAgIGNvbnN0IHsgY29sdW1uLCBvcGVyYXRvciB9ID0gZjtcblxuICAgICAgcmVzdWx0ID0gKFxuICAgICAgICA8PlxuICAgICAgICAgIDxzcGFuPiB7Y29sdW1ufSA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4+IHtvcGVyYXRvcn0gPC9zcGFuPlxuICAgICAgICAgIDxzcGFuPiA/IDwvc3Bhbj5cbiAgICAgICAgPC8+XG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgPSA8UXVlcnlWaXN1YWxpemVyIGZpbHRlcj17Zn0gLz47XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxGcmFnbWVudCBrZXk9e2YuaWR9PlxuICAgICAgICB7aXNBbmRHcm91cE9wZW4gPT09IDEgPyA8c3BhbiBjbGFzc05hbWU9XCJwcy1mb250LXNlbWlib2xkXCI+KDwvc3Bhbj4gOiBcIlwifVxuICAgICAgICB7cmVzdWx0fVxuICAgICAgICB7aXNBbmRHcm91cE9wZW4gPT09IC0xID8gPHNwYW4gY2xhc3NOYW1lPVwicHMtZm9udC1zZW1pYm9sZFwiPik8L3NwYW4+IDogXCJcIn1cbiAgICAgICAgeyFpc0xhc3QgJiYgPHNwYW4gY2xhc3NOYW1lPVwicHMtdXBwZXJjYXNlIHBzLXRleHQtYmx1ZS01MDAgcHMtZm9udC1zZW1pYm9sZFwiPiB7Zi5hZnRlcn0gPC9zcGFuPn1cbiAgICAgIDwvRnJhZ21lbnQ+XG4gICAgKTtcbiAgfSk7XG5cbiAgcmV0dXJuIDxzcGFuPntncm91cH08L3NwYW4+O1xufTtcblxuLy8gTWFpbiBjb21wb25lbnRcbmV4cG9ydCBmdW5jdGlvbiBGaWx0ZXJUcmVlKHtcbiAgZmlsdGVyLFxuICBzZXRGaWx0ZXIsXG4gIHNldEFwcGxpZWRGaWx0ZXIsXG4gIHRhYmxlLFxufToge1xuICBmaWx0ZXI6IEZpbHRlckdyb3VwO1xuICBzZXRGaWx0ZXI6ICh1cGRhdGVkRmlsdGVyOiBGaWx0ZXJHcm91cCkgPT4gdm9pZDtcbiAgc2V0QXBwbGllZEZpbHRlcjogKGZpbHRlcjogRmlsdGVyR3JvdXApID0+IHZvaWQ7XG4gIHRhYmxlOiBUYWJsZTtcbn0pIHtcbiAgY29uc3QgaGFuZGxlQXBwbHlGaWx0ZXJzID0gKCkgPT4ge1xuICAgIHNldEFwcGxpZWRGaWx0ZXIoZmlsdGVyKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1nYXAtNFwiPlxuICAgICAgPEZpbHRlckdyb3VwQ29tcG9uZW50IGdyb3VwPXtmaWx0ZXJ9IG9uVXBkYXRlPXtzZXRGaWx0ZXJ9IG9uRGVsZXRlPXsoKSA9PiB7fX0gaXNSb290PXt0cnVlfSB0YWJsZT17dGFibGV9IC8+XG4gICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJkZWZhdWx0XCIgc2l6ZT1cInNtXCIgY2xhc3NOYW1lPVwicHMtc2VsZi1lbmRcIiBvbkNsaWNrPXtoYW5kbGVBcHBseUZpbHRlcnN9PlxuICAgICAgICBBcHBseSBGaWx0ZXJzXG4gICAgICA8L0J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IENvbHVtbiwgRmlsdGVyT3BlcmF0b3IgfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjb2VyY2VUb1ZhbHVlKGNvbHVtbjogQ29sdW1uIHwgdW5kZWZpbmVkLCBvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3IsIHZhbHVlOiBzdHJpbmcpOiB1bmtub3duIHtcbiAgY29uc3QgZGF0YVR5cGVHcm91cCA9IGNvbHVtbj8uZGF0YXR5cGUuZ3JvdXA7XG5cbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgaWYgKG9wZXJhdG9yID09PSBcImlzXCIgfHwgb3BlcmF0b3IgPT09IFwiaXMgbm90XCIpIHtcbiAgICByZXR1cm4gdmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gXCJudWxsXCIgPyBudWxsIDogdmFsdWU7XG4gIH1cblxuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJib29sZWFuXCIpIHJldHVybiB2YWx1ZSA9PT0gXCJ0cnVlXCI7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcImRhdGV0aW1lXCIpIHJldHVybiB2YWx1ZTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwiZW51bVwiKSByZXR1cm4gdmFsdWU7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcInJhd1wiKSByZXR1cm4gdmFsdWU7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcInN0cmluZ1wiKSByZXR1cm4gdmFsdWU7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcInRpbWVcIikgcmV0dXJuIHZhbHVlO1xuXG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcImpzb25cIikge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZSh2YWx1ZSkgYXMgdW5rbm93bjtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJudW1lcmljXCIpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IFwiXCIgPyBudWxsIDogTnVtYmVyKHZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvZXJjZVRvU3RyaW5nKFxuICBjb2x1bW46IENvbHVtbiB8IHVuZGVmaW5lZCxcbiAgb3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yIHwgdW5kZWZpbmVkLFxuICB2YWx1ZTogdW5rbm93bixcbik6IHN0cmluZyB7XG4gIGNvbnN0IGRhdGFUeXBlR3JvdXAgPSBjb2x1bW4/LmRhdGF0eXBlLmdyb3VwO1xuXG4gIGlmIChvcGVyYXRvciAmJiAob3BlcmF0b3IgPT09IFwiaXNcIiB8fCBvcGVyYXRvciA9PT0gXCJpcyBub3RcIikpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IG51bGwgPyBcIm51bGxcIiA6IFN0cmluZyh2YWx1ZSk7XG4gIH1cblxuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcImJvb2xlYW5cIikgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcImRhdGV0aW1lXCIpIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJlbnVtXCIpIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJudW1lcmljXCIpIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJyYXdcIikgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcInN0cmluZ1wiKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwidGltZVwiKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcblxuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJqc29uXCIpIHtcbiAgICBpZiAodmFsdWUgPT09IFwiXCIpIHJldHVybiBcIlwiO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG59XG4iLCAiaW1wb3J0ICogYXMgRHJvcGRvd25NZW51UHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtZHJvcGRvd24tbWVudVwiO1xuaW1wb3J0IHsgQ2hlY2ssIENoZXZyb25SaWdodCwgQ2lyY2xlIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IERyb3Bkb3duTWVudSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5Sb290O1xuXG5jb25zdCBEcm9wZG93bk1lbnVUcmlnZ2VyID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlRyaWdnZXI7XG5cbmNvbnN0IERyb3Bkb3duTWVudUdyb3VwID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLkdyb3VwO1xuXG5jb25zdCBEcm9wZG93bk1lbnVQb3J0YWwgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuUG9ydGFsO1xuXG5jb25zdCBEcm9wZG93bk1lbnVTdWIgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViO1xuXG5jb25zdCBEcm9wZG93bk1lbnVSYWRpb0dyb3VwID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlJhZGlvR3JvdXA7XG5cbmNvbnN0IERyb3Bkb3duTWVudVN1YlRyaWdnZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlcj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YlRyaWdnZXI+ICYge1xuICAgIGluc2V0PzogYm9vbGVhbjtcbiAgfVxuPigoeyBjbGFzc05hbWUsIGluc2V0LCBjaGlsZHJlbiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlclxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLXJvdW5kZWQtc20gcHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtYmctYWNjZW50IGRhdGEtW3N0YXRlPW9wZW5dOnBzLWJnLWFjY2VudCBbJl9zdmddOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgWyZfc3ZnXTpwcy1zaXplLTQgWyZfc3ZnXTpwcy1zaHJpbmstMFwiLFxuICAgICAgaW5zZXQgJiYgXCJwcy1wbC04XCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICB7Y2hpbGRyZW59XG4gICAgPENoZXZyb25SaWdodCBjbGFzc05hbWU9XCJwcy1tbC1hdXRvXCIgLz5cbiAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlcj5cbikpO1xuRHJvcGRvd25NZW51U3ViVHJpZ2dlci5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVTdWJDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJDb250ZW50PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YkNvbnRlbnRcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy16LTUwIHBzLW1pbi13LVs4cmVtXSBwcy1vdmVyZmxvdy1oaWRkZW4gcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYmctcG9wb3ZlciBwcy1wLTEgcHMtdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgcHMtc2hhZG93LWxnIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1hbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06cHMtZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtem9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06cHMtem9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06cHMtc2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnBzLXNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpwcy1zbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06cHMtc2xpZGUtaW4tZnJvbS1ib3R0b20tMiBwcy1vcmlnaW4tWy0tcmFkaXgtZHJvcGRvd24tbWVudS1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5dXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkRyb3Bkb3duTWVudVN1YkNvbnRlbnQuZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViQ29udGVudC5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51Q29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCBzaWRlT2Zmc2V0ID0gNCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuUG9ydGFsPlxuICAgIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuQ29udGVudFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBzaWRlT2Zmc2V0PXtzaWRlT2Zmc2V0fVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy16LTUwIHBzLW1heC1oLVt2YXIoLS1yYWRpeC1kcm9wZG93bi1tZW51LWNvbnRlbnQtYXZhaWxhYmxlLWhlaWdodCldIHBzLW1pbi13LVs4cmVtXSBwcy1vdmVyZmxvdy15LWF1dG8gcHMtb3ZlcmZsb3cteC1oaWRkZW4gcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYmctcG9wb3ZlciBwcy1wLTEgcHMtdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgcHMtc2hhZG93LW1kXCIsXG4gICAgICAgIFwiZGF0YS1bc3RhdGU9b3Blbl06cHMtYW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1mYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy16b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTpwcy16b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpwcy1zbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06cHMtc2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpwcy1zbGlkZS1pbi1mcm9tLWJvdHRvbS0yIHBzLW9yaWdpbi1bLS1yYWRpeC1kcm9wZG93bi1tZW51LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5Qb3J0YWw+XG4pKTtcbkRyb3Bkb3duTWVudUNvbnRlbnQuZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51SXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbT4gJiB7XG4gICAgaW5zZXQ/OiBib29sZWFuO1xuICB9XG4+KCh7IGNsYXNzTmFtZSwgaW5zZXQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW1cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMiBwcy1yb3VuZGVkLXNtIHBzLXB4LTIgcHMtcHktMS41IHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIHBzLXRyYW5zaXRpb24tY29sb3JzIGZvY3VzOnBzLWJnLWFjY2VudCBmb2N1czpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpwcy1vcGFjaXR5LTUwIFsmPnN2Z106cHMtc2l6ZS00IFsmPnN2Z106cHMtc2hyaW5rLTBcIixcbiAgICAgIGluc2V0ICYmIFwicHMtcGwtOFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5Ecm9wZG93bk1lbnVJdGVtLmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW0uZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudUNoZWNrYm94SXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0+XG4+KCh7IGNsYXNzTmFtZSwgY2hpbGRyZW4sIGNoZWNrZWQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtc20gcHMtcHktMS41IHBzLXBsLTggcHMtcHItMiBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBwcy10cmFuc2l0aW9uLWNvbG9ycyBmb2N1czpwcy1iZy1hY2NlbnQgZm9jdXM6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cHMtcG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06cHMtb3BhY2l0eS01MFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgY2hlY2tlZD17Y2hlY2tlZH1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1hYnNvbHV0ZSBwcy1sZWZ0LTIgcHMtZmxleCBwcy1oLTMuNSBwcy13LTMuNSBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgPENoZWNrIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTRcIiAvPlxuICAgICAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICA8L3NwYW4+XG4gICAge2NoaWxkcmVufVxuICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0+XG4pKTtcbkRyb3Bkb3duTWVudUNoZWNrYm94SXRlbS5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0uZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudVJhZGlvSXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0+XG4+KCh7IGNsYXNzTmFtZSwgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlJhZGlvSXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtc20gcHMtcHktMS41IHBzLXBsLTggcHMtcHItMiBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBwcy10cmFuc2l0aW9uLWNvbG9ycyBmb2N1czpwcy1iZy1hY2NlbnQgZm9jdXM6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cHMtcG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06cHMtb3BhY2l0eS01MFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtYWJzb2x1dGUgcHMtbGVmdC0yIHBzLWZsZXggcHMtaC0zLjUgcHMtdy0zLjUgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyXCI+XG4gICAgICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgICAgIDxDaXJjbGUgY2xhc3NOYW1lPVwicHMtaC0yIHBzLXctMiBwcy1maWxsLWN1cnJlbnRcIiAvPlxuICAgICAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICA8L3NwYW4+XG4gICAge2NoaWxkcmVufVxuICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0+XG4pKTtcbkRyb3Bkb3duTWVudVJhZGlvSXRlbS5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0uZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudUxhYmVsID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkxhYmVsPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuTGFiZWw+ICYge1xuICAgIGluc2V0PzogYm9vbGVhbjtcbiAgfVxuPigoeyBjbGFzc05hbWUsIGluc2V0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5MYWJlbFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJwcy1weC0yIHBzLXB5LTEuNSBwcy10ZXh0LXNtIHBzLWZvbnQtc2VtaWJvbGRcIiwgaW5zZXQgJiYgXCJwcy1wbC04XCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5Ecm9wZG93bk1lbnVMYWJlbC5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5MYWJlbC5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51U2VwYXJhdG9yID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlNlcGFyYXRvcj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlNlcGFyYXRvcj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5TZXBhcmF0b3JcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtLW14LTEgcHMtbXktMSBwcy1oLXB4IHBzLWJnLW11dGVkXCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5Ecm9wZG93bk1lbnVTZXBhcmF0b3IuZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuU2VwYXJhdG9yLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVTaG9ydGN1dCA9ICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFNwYW5FbGVtZW50PikgPT4ge1xuICByZXR1cm4gPHNwYW4gY2xhc3NOYW1lPXtjbihcInBzLW1sLWF1dG8gcHMtdGV4dC14cyBwcy10cmFja2luZy13aWRlc3QgcHMtb3BhY2l0eS02MFwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+O1xufTtcbkRyb3Bkb3duTWVudVNob3J0Y3V0LmRpc3BsYXlOYW1lID0gXCJEcm9wZG93bk1lbnVTaG9ydGN1dFwiO1xuXG5leHBvcnQge1xuICBEcm9wZG93bk1lbnUsXG4gIERyb3Bkb3duTWVudVRyaWdnZXIsXG4gIERyb3Bkb3duTWVudUNvbnRlbnQsXG4gIERyb3Bkb3duTWVudUl0ZW0sXG4gIERyb3Bkb3duTWVudUNoZWNrYm94SXRlbSxcbiAgRHJvcGRvd25NZW51UmFkaW9JdGVtLFxuICBEcm9wZG93bk1lbnVMYWJlbCxcbiAgRHJvcGRvd25NZW51U2VwYXJhdG9yLFxuICBEcm9wZG93bk1lbnVTaG9ydGN1dCxcbiAgRHJvcGRvd25NZW51R3JvdXAsXG4gIERyb3Bkb3duTWVudVBvcnRhbCxcbiAgRHJvcGRvd25NZW51U3ViLFxuICBEcm9wZG93bk1lbnVTdWJDb250ZW50LFxuICBEcm9wZG93bk1lbnVTdWJUcmlnZ2VyLFxuICBEcm9wZG93bk1lbnVSYWRpb0dyb3VwLFxufTtcbiIsICJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgSW5wdXQgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxJbnB1dEVsZW1lbnQsIFJlYWN0LkNvbXBvbmVudFByb3BzPFwiaW5wdXRcIj4+KFxuICAoeyBjbGFzc05hbWUsIHR5cGUsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICA8aW5wdXRcbiAgICAgICAgdHlwZT17dHlwZX1cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICBcInBzLWZsZXggcHMtaC05IHBzLXctZnVsbCBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1ib3JkZXItaW5wdXQgcHMtYmctdHJhbnNwYXJlbnQgcHMtcHgtMyBwcy1weS0xIHBzLXNoYWRvdy1zbSBwcy10cmFuc2l0aW9uLWNvbG9ycyBmaWxlOnBzLWJvcmRlci0wIGZpbGU6cHMtYmctdHJhbnNwYXJlbnQgZmlsZTpwcy10ZXh0LXNtIGZpbGU6cHMtZm9udC1tZWRpdW0gZmlsZTpwcy10ZXh0LWZvcmVncm91bmQgcGxhY2Vob2xkZXI6cHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGZvY3VzLXZpc2libGU6cHMtb3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0xIGZvY3VzLXZpc2libGU6cHMtcmluZy1yaW5nIGRpc2FibGVkOnBzLWN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpwcy1vcGFjaXR5LTUwXCIsXG4gICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICApfVxuICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgey4uLnByb3BzfVxuICAgICAgLz5cbiAgICApO1xuICB9LFxuKTtcbklucHV0LmRpc3BsYXlOYW1lID0gXCJJbnB1dFwiO1xuXG5leHBvcnQgeyBJbnB1dCB9O1xuIiwgImltcG9ydCAqIGFzIFNlbGVjdFByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXNlbGVjdFwiO1xuaW1wb3J0IHsgQ2hlY2ssIENoZXZyb25Eb3duLCBDaGV2cm9uVXAgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IENvbXBvbmVudFByb3BzV2l0aG91dFJlZiwgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IFNlbGVjdCA9IFNlbGVjdFByaW1pdGl2ZS5Sb290O1xuXG5jb25zdCBTZWxlY3RHcm91cCA9IFNlbGVjdFByaW1pdGl2ZS5Hcm91cDtcblxuY29uc3QgU2VsZWN0VmFsdWUgPSBTZWxlY3RQcmltaXRpdmUuVmFsdWU7XG5cbmNvbnN0IFNlbGVjdFRyaWdnZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuVHJpZ2dlcj4sXG4gIENvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlRyaWdnZXI+ICYgeyBsYWJlbD86IFJlYWN0Tm9kZSB9XG4+KCh7IGNsYXNzTmFtZSwgY2hpbGRyZW4sIGxhYmVsLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5UcmlnZ2VyXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtZmxleCBwcy1oLTkgcHMtdy1mdWxsIHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtd2hpdGVzcGFjZS1ub3dyYXAgcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYm9yZGVyLWlucHV0IHBzLWJnLXRyYW5zcGFyZW50IHBzLXB4LTMgcHMtcHktMiBwcy10ZXh0LXNtIHBzLXNoYWRvdy1zbSBwcy1yaW5nLW9mZnNldC1iYWNrZ3JvdW5kIGRhdGEtW3BsYWNlaG9sZGVyXTpwcy10ZXh0LW11dGVkLWZvcmVncm91bmQgZm9jdXM6cHMtb3V0bGluZS1ub25lIGZvY3VzOnBzLXJpbmctMSBmb2N1czpwcy1yaW5nLXJpbmcgZGlzYWJsZWQ6cHMtY3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOnBzLW9wYWNpdHktNTAgWyY+c3Bhbl06cHMtbGluZS1jbGFtcC0xXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0xXCI+XG4gICAgICB7bGFiZWwgJiYgPHNwYW4gY2xhc3NOYW1lPVwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+e2xhYmVsfTo8L3NwYW4+fVxuICAgICAge2NoaWxkcmVufVxuICAgIDwvZGl2PlxuICAgIDxTZWxlY3RQcmltaXRpdmUuSWNvbiBhc0NoaWxkPlxuICAgICAgPENoZXZyb25Eb3duIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTQgcHMtb3BhY2l0eS01MFwiIC8+XG4gICAgPC9TZWxlY3RQcmltaXRpdmUuSWNvbj5cbiAgPC9TZWxlY3RQcmltaXRpdmUuVHJpZ2dlcj5cbikpO1xuU2VsZWN0VHJpZ2dlci5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5UcmlnZ2VyLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RTY3JvbGxVcEJ1dHRvbiA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxVcEJ1dHRvbj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLXB5LTFcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8Q2hldnJvblVwIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTRcIiAvPlxuICA8L1NlbGVjdFByaW1pdGl2ZS5TY3JvbGxVcEJ1dHRvbj5cbikpO1xuU2VsZWN0U2Nyb2xsVXBCdXR0b24uZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsVXBCdXR0b24uZGlzcGxheU5hbWU7XG5cbmNvbnN0IFNlbGVjdFNjcm9sbERvd25CdXR0b24gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvbj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNjcm9sbERvd25CdXR0b24+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvblxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlciBwcy1weS0xXCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPENoZXZyb25Eb3duIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTRcIiAvPlxuICA8L1NlbGVjdFByaW1pdGl2ZS5TY3JvbGxEb3duQnV0dG9uPlxuKSk7XG5TZWxlY3RTY3JvbGxEb3duQnV0dG9uLmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLlNjcm9sbERvd25CdXR0b24uZGlzcGxheU5hbWU7XG5cbmNvbnN0IFNlbGVjdENvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgY2hpbGRyZW4sIHBvc2l0aW9uID0gXCJwb3BwZXJcIiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuUG9ydGFsPlxuICAgIDxTZWxlY3RQcmltaXRpdmUuQ29udGVudFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLXJlbGF0aXZlIHBzLXotNTAgcHMtbWF4LWgtWy0tcmFkaXgtc2VsZWN0LWNvbnRlbnQtYXZhaWxhYmxlLWhlaWdodF0gcHMtbWluLXctWzhyZW1dIHBzLW92ZXJmbG93LXktYXV0byBwcy1vdmVyZmxvdy14LWhpZGRlbiBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1tZCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1hbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtYW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1mYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLXpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnBzLXpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnBzLXNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpwcy1zbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06cHMtc2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnBzLXNsaWRlLWluLWZyb20tYm90dG9tLTIgcHMtb3JpZ2luLVstLXJhZGl4LXNlbGVjdC1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5dXCIsXG4gICAgICAgIHBvc2l0aW9uID09PSBcInBvcHBlclwiICYmXG4gICAgICAgICAgXCJkYXRhLVtzaWRlPWJvdHRvbV06cHMtdHJhbnNsYXRlLXktMSBkYXRhLVtzaWRlPWxlZnRdOnBzLS10cmFuc2xhdGUteC0xIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXRyYW5zbGF0ZS14LTEgZGF0YS1bc2lkZT10b3BdOnBzLS10cmFuc2xhdGUteS0xXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICBwb3NpdGlvbj17cG9zaXRpb259XG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAgPFNlbGVjdFNjcm9sbFVwQnV0dG9uIC8+XG4gICAgICA8U2VsZWN0UHJpbWl0aXZlLlZpZXdwb3J0XG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgXCJwcy1wLTFcIixcbiAgICAgICAgICBwb3NpdGlvbiA9PT0gXCJwb3BwZXJcIiAmJlxuICAgICAgICAgICAgXCJwcy1oLVt2YXIoLS1yYWRpeC1zZWxlY3QtdHJpZ2dlci1oZWlnaHQpXSBwcy13LWZ1bGwgcHMtbWluLXctW3ZhcigtLXJhZGl4LXNlbGVjdC10cmlnZ2VyLXdpZHRoKV1cIixcbiAgICAgICAgKX1cbiAgICAgID5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9TZWxlY3RQcmltaXRpdmUuVmlld3BvcnQ+XG4gICAgICA8U2VsZWN0U2Nyb2xsRG93bkJ1dHRvbiAvPlxuICAgIDwvU2VsZWN0UHJpbWl0aXZlLkNvbnRlbnQ+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLlBvcnRhbD5cbikpO1xuU2VsZWN0Q29udGVudC5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RMYWJlbCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5MYWJlbD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLkxhYmVsPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLkxhYmVsXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcInBzLXB4LTIgcHMtcHktMS41IHBzLXRleHQtc20gcHMtZm9udC1zZW1pYm9sZFwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuU2VsZWN0TGFiZWwuZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuTGFiZWwuZGlzcGxheU5hbWU7XG5cbmNvbnN0IFNlbGVjdEl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuSXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLkl0ZW0+XG4+KCh7IGNsYXNzTmFtZSwgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLkl0ZW1cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLXctZnVsbCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1zbSBwcy1weS0xLjUgcHMtcGwtMiBwcy1wci04IHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIGZvY3VzOnBzLWJnLWFjY2VudCBmb2N1czpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpwcy1vcGFjaXR5LTUwXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1hYnNvbHV0ZSBwcy1yaWdodC0yIHBzLWZsZXggcHMtaC0zLjUgcHMtdy0zLjUgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyXCI+XG4gICAgICA8U2VsZWN0UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgICAgIDxDaGVjayBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00XCIgLz5cbiAgICAgIDwvU2VsZWN0UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgPC9zcGFuPlxuICAgIDxTZWxlY3RQcmltaXRpdmUuSXRlbVRleHQ+e2NoaWxkcmVufTwvU2VsZWN0UHJpbWl0aXZlLkl0ZW1UZXh0PlxuICA8L1NlbGVjdFByaW1pdGl2ZS5JdGVtPlxuKSk7XG5TZWxlY3RJdGVtLmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLkl0ZW0uZGlzcGxheU5hbWU7XG5cbmNvbnN0IFNlbGVjdFNlcGFyYXRvciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5TZXBhcmF0b3I+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5TZXBhcmF0b3I+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuU2VwYXJhdG9yIHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKFwicHMtLW14LTEgcHMtbXktMSBwcy1oLXB4IHBzLWJnLW11dGVkXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbikpO1xuU2VsZWN0U2VwYXJhdG9yLmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLlNlcGFyYXRvci5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHtcbiAgU2VsZWN0LFxuICBTZWxlY3RHcm91cCxcbiAgU2VsZWN0VmFsdWUsXG4gIFNlbGVjdFRyaWdnZXIsXG4gIFNlbGVjdENvbnRlbnQsXG4gIFNlbGVjdExhYmVsLFxuICBTZWxlY3RJdGVtLFxuICBTZWxlY3RTZXBhcmF0b3IsXG4gIFNlbGVjdFNjcm9sbFVwQnV0dG9uLFxuICBTZWxlY3RTY3JvbGxEb3duQnV0dG9uLFxufTtcbiIsICJpbXBvcnQgeyBEbmRDb250ZXh0LCB0eXBlIERyYWdFbmRFdmVudCwgTW91c2VTZW5zb3IsIHVzZVNlbnNvciwgdXNlU2Vuc29ycyB9IGZyb20gXCJAZG5kLWtpdC9jb3JlXCI7XG5pbXBvcnQgeyBhcnJheU1vdmUsIGhvcml6b250YWxMaXN0U29ydGluZ1N0cmF0ZWd5LCBTb3J0YWJsZUNvbnRleHQgfSBmcm9tIFwiQGRuZC1raXQvc29ydGFibGVcIjtcbmltcG9ydCB0eXBlIHsgQWNjZXNzb3JLZXlDb2x1bW5EZWZCYXNlLCBSb3dTZWxlY3Rpb25TdGF0ZSB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7XG4gIHR5cGUgQ29sdW1uUGlubmluZ1N0YXRlLFxuICB0eXBlIENvbHVtblNpemluZ1N0YXRlLFxuICBnZXRDb3JlUm93TW9kZWwsXG4gIHR5cGUgT25DaGFuZ2VGbixcbiAgdHlwZSBQYWdpbmF0aW9uU3RhdGUsXG4gIHR5cGUgU29ydGluZ1N0YXRlLFxuICB0eXBlIFRhYmxlIGFzIFJlYWN0VGFibGUsXG4gIHVzZVJlYWN0VGFibGUsXG59IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IFJlYWN0VGFibGVEZXZ0b29scyB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHNcIjtcbmltcG9ydCB7IEFuaW1hdGVQcmVzZW5jZSwgbW90aW9uIH0gZnJvbSBcIm1vdGlvbi9yZWFjdFwiO1xuaW1wb3J0IHsgQ29tcG9uZW50VHlwZSwgdHlwZSBSZWFjdE5vZGUsIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHR5cGUgeyBTb3J0T3JkZXJJdGVtIH0gZnJvbSBcIi4uLy4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgU2tlbGV0b24gfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9za2VsZXRvblwiO1xuaW1wb3J0IHsgVGFibGUsIFRhYmxlQm9keSwgVGFibGVDZWxsLCBUYWJsZUhlYWRlciwgVGFibGVSb3cgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS90YWJsZVwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vbGliL3V0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IENlbGxQcm9wcyB9IGZyb20gXCIuLi9jZWxsL0NlbGxcIjtcbmltcG9ydCB7IERhdGFHcmlkTG9hZGluZ0JhciB9IGZyb20gXCIuL0RhdGFHcmlkTG9hZGluZ0JhclwiO1xuaW1wb3J0IHsgRGF0YUdyaWRQYWdpbmF0aW9uIH0gZnJvbSBcIi4vRGF0YUdyaWRQYWdpbmF0aW9uXCI7XG5pbXBvcnQgeyBnZXRDb2x1bW5QaW5uaW5nU3R5bGVzIH0gZnJvbSBcIi4vZmVhdHVyZXMvY29sdW1uLXBpbm5pbmdcIjtcblxuLy8gQWRkIHRoaXMgbmV3IGNvbXBvbmVudCBmb3IgZHJhZ2dhYmxlIGhlYWRlciBjZWxsc1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFHcmlkUHJvcHMge1xuICBjb2x1bW5EZWZzOiBBY2Nlc3NvcktleUNvbHVtbkRlZkJhc2U8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+W107XG4gIGdldEJlZm9yZVJvd3M/KHRoaXM6IHZvaWQsIHRhYmxlOiBSZWFjdFRhYmxlPFJlY29yZDxzdHJpbmcsIHVua25vd24+Pik6IFJlYWN0Tm9kZTtcbiAgaXNMb2FkaW5nOiBib29sZWFuO1xuICBpc1Byb2Nlc3Npbmc6IGJvb2xlYW47XG4gIG9uUGFnaW5hdGlvbkNoYW5nZTogT25DaGFuZ2VGbjxQYWdpbmF0aW9uU3RhdGU+O1xuICBvblJvd1NlbGVjdGlvbkNoYW5nZTogT25DaGFuZ2VGbjxSb3dTZWxlY3Rpb25TdGF0ZT47XG4gIG9uU29ydGluZ0NoYW5nZT86IE9uQ2hhbmdlRm48U29ydE9yZGVySXRlbVtdPjtcbiAgcGFnZUNvdW50OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIHBhZ2luYXRpb25TdGF0ZTogUGFnaW5hdGlvblN0YXRlO1xuICByb3dzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdO1xuICByb3dTZWxlY3Rpb25TdGF0ZTogUm93U2VsZWN0aW9uU3RhdGU7XG4gIHNvcnRpbmdTdGF0ZT86IFNvcnRPcmRlckl0ZW1bXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGFHcmlkKHByb3BzOiBEYXRhR3JpZFByb3BzKSB7XG4gIGNvbnN0IHtcbiAgICBjb2x1bW5EZWZzLFxuICAgIGdldEJlZm9yZVJvd3MsXG4gICAgaXNMb2FkaW5nLFxuICAgIGlzUHJvY2Vzc2luZyxcbiAgICBvblBhZ2luYXRpb25DaGFuZ2UsXG4gICAgb25Sb3dTZWxlY3Rpb25DaGFuZ2UsXG4gICAgb25Tb3J0aW5nQ2hhbmdlLFxuICAgIHBhZ2VDb3VudCxcbiAgICBwYWdpbmF0aW9uU3RhdGUsXG4gICAgcm93cyxcbiAgICByb3dTZWxlY3Rpb25TdGF0ZSxcbiAgICBzb3J0aW5nU3RhdGUsXG4gIH0gPSBwcm9wcztcblxuICBjb25zdCBbY29sdW1uT3JkZXIsIHNldENvbHVtbk9yZGVyXSA9IHVzZVN0YXRlPHN0cmluZ1tdPihbXSk7XG4gIGNvbnN0IFtjb2x1bW5QaW5uaW5nLCBzZXRDb2x1bW5QaW5uaW5nXSA9IHVzZVN0YXRlPENvbHVtblBpbm5pbmdTdGF0ZT4oeyBsZWZ0OiBbXCJfX3BzX3NlbGVjdFwiXSwgcmlnaHQ6IFtdIH0pO1xuICBjb25zdCBbY29sdW1uU2l6aW5nLCBzZXRDb2x1bW5TaXppbmddID0gdXNlU3RhdGU8Q29sdW1uU2l6aW5nU3RhdGU+KHt9KTtcbiAgY29uc3Qgc29ydGluZyA9IHVzZU1lbW8oKCkgPT4gdG9Tb3J0aW5nU3RhdGUoc29ydGluZ1N0YXRlKSwgW3NvcnRpbmdTdGF0ZV0pO1xuICBjb25zdCBkaXNwbGF5TG9hZGVyID0gaXNMb2FkaW5nIHx8IGlzUHJvY2Vzc2luZztcblxuICAvLyBSZXNldCBjb2x1bW4gb3JkZXIsIHBpbm5pbmcsIGFuZCBzaXppbmcgd2hlbiBjb2x1bW5EZWZzIGNoYW5nZSAod2hpY2ggaGFwcGVucyB3aGVuIHRhYmxlIGNoYW5nZXMpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0Q29sdW1uT3JkZXIoY29sdW1uRGVmcy5tYXAoKHsgYWNjZXNzb3JLZXkgfSkgPT4gYWNjZXNzb3JLZXkpKTtcbiAgICBzZXRDb2x1bW5QaW5uaW5nKHsgbGVmdDogW1wiX19wc19zZWxlY3RcIl0sIHJpZ2h0OiBbXSB9KTtcbiAgICBzZXRDb2x1bW5TaXppbmcoe30pO1xuICB9LCBbY29sdW1uRGVmc10pO1xuXG4gIC8vIGhhbmRsZXMgbW92aW5nIGFuZCByZS1vcmRlcmluZyBvZiB0aGUgY29sdW1ucyBhbmQgc3RhdGVcbiAgZnVuY3Rpb24gaGFuZGxlRHJhZ0VuZCh7IGFjdGl2ZSwgb3ZlciB9OiBEcmFnRW5kRXZlbnQpIHtcbiAgICBpZiAob3ZlciAmJiBhY3RpdmUuaWQgIT09IG92ZXIuaWQpIHtcbiAgICAgIHNldENvbHVtbk9yZGVyKChvcmRlcikgPT4ge1xuICAgICAgICBjb25zdCBhY3RpdmVJbmRleCA9IG9yZGVyLmluZGV4T2YoYWN0aXZlLmlkIGFzIHN0cmluZyk7XG4gICAgICAgIGNvbnN0IG92ZXJJbmRleCA9IG9yZGVyLmluZGV4T2Yob3Zlci5pZCBhcyBzdHJpbmcpO1xuICAgICAgICByZXR1cm4gYXJyYXlNb3ZlKG9yZGVyLCBhY3RpdmVJbmRleCwgb3ZlckluZGV4KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIENvbmZpZ3VyZSB0aGUgbW91c2Ugc2Vuc29yIGZvciBkcmFnIGFuZCBkcm9wXG4gIGNvbnN0IG1vdXNlU2Vuc29yID0gdXNlU2Vuc29yKE1vdXNlU2Vuc29yLCB7XG4gICAgLy8gUmVxdWlyZSB0aGUgbW91c2UgdG8gbW92ZSBieSAxMCBwaXhlbHMgYmVmb3JlIGFjdGl2YXRpbmdcbiAgICBhY3RpdmF0aW9uQ29uc3RyYWludDoge1xuICAgICAgZGlzdGFuY2U6IDEwLFxuICAgIH0sXG4gIH0pO1xuICBjb25zdCBzZW5zb3JzID0gdXNlU2Vuc29ycyhtb3VzZVNlbnNvcik7XG5cbiAgY29uc3QgdGFibGUgPSB1c2VSZWFjdFRhYmxlKHtcbiAgICBjb2x1bW5SZXNpemVNb2RlOiBcIm9uQ2hhbmdlXCIsXG4gICAgY29sdW1uczogY29sdW1uRGVmcyxcbiAgICBkYXRhOiByb3dzLFxuICAgIGRlZmF1bHRDb2x1bW46IHsgc2l6ZTogMjAwLCBtaW5TaXplOiA1MCwgbWF4U2l6ZTogNTAwIH0sXG4gICAgZW5hYmxlQ29sdW1uUGlubmluZzogdHJ1ZSxcbiAgICBlbmFibGVDb2x1bW5SZXNpemluZzogdHJ1ZSxcbiAgICBlbmFibGVSb3dTZWxlY3Rpb246IHRydWUsXG4gICAgZW5hYmxlU29ydGluZzogQm9vbGVhbihvblNvcnRpbmdDaGFuZ2UgJiYgc29ydGluZ1N0YXRlKSxcbiAgICBnZXRDb3JlUm93TW9kZWw6IGdldENvcmVSb3dNb2RlbCgpLFxuICAgIGdldFJvd0lkOiAoeyBfX3BzX3Jvd2lkIH0pID0+IF9fcHNfcm93aWQgYXMgc3RyaW5nLFxuICAgIG1hbnVhbFBhZ2luYXRpb246IHRydWUsXG4gICAgbWFudWFsU29ydGluZzogdHJ1ZSxcbiAgICBvbkNvbHVtbk9yZGVyQ2hhbmdlOiBzZXRDb2x1bW5PcmRlcixcbiAgICBvbkNvbHVtblBpbm5pbmdDaGFuZ2U6IHNldENvbHVtblBpbm5pbmcsXG4gICAgb25Db2x1bW5TaXppbmdDaGFuZ2U6IHNldENvbHVtblNpemluZyxcbiAgICBvblBhZ2luYXRpb25DaGFuZ2UsXG4gICAgb25Sb3dTZWxlY3Rpb25DaGFuZ2UsXG4gICAgb25Tb3J0aW5nQ2hhbmdlOiAodXBkYXRlck9yVmFsdWUpID0+XG4gICAgICBvblNvcnRpbmdDaGFuZ2U/Ligob2xkKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgdXBkYXRlck9yVmFsdWUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgIHVwZGF0ZXJPclZhbHVlID0gdXBkYXRlck9yVmFsdWUodG9Tb3J0aW5nU3RhdGUob2xkKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdG9Tb3J0T3JkZXJJdGVtcyh1cGRhdGVyT3JWYWx1ZSk7XG4gICAgICB9KSxcbiAgICBwYWdlQ291bnQsXG4gICAgc3RhdGU6IHtcbiAgICAgIGNvbHVtbk9yZGVyLFxuICAgICAgY29sdW1uUGlubmluZyxcbiAgICAgIGNvbHVtblNpemluZyxcbiAgICAgIHBhZ2luYXRpb246IHBhZ2luYXRpb25TdGF0ZSxcbiAgICAgIHJvd1NlbGVjdGlvbjogcm93U2VsZWN0aW9uU3RhdGUsXG4gICAgICBzb3J0aW5nLFxuICAgIH0sXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHsvKiBUT0RPOiBwYXRjaCBzbyBpdCBpcyBub3QgYnVuZGxlZCBsaWtlIHJlYWN0LXF1ZXJ5IGRldnRvb2xzLCBvciByZW1vdmUgY29tcGxldGVseSBvbmNlIGRhdGEgZ3JpZCBpcyBzdGFibGUgYW5kIHRlc3RlZC4gKi99XG4gICAgICB7cHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gbnVsbCA6IDxSZWFjdFRhYmxlRGV2dG9vbHMgdGFibGU9e3RhYmxlfSAvPn1cbiAgICAgIDxkaXYgZGF0YS1zdHVkaW89XCJjb250ZW50XCIgY2xhc3NOYW1lPVwicHMtZmxleC0xIHBzLXctMCBwcy1oLTAgcHMtbWluLXctZnVsbCBwcy1mbGV4IHBzLWZsZXgtY29sIHBzLXJlbGF0aXZlXCI+XG4gICAgICAgIDxkaXY+e2Rpc3BsYXlMb2FkZXIgJiYgPERhdGFHcmlkTG9hZGluZ0JhciBjbGFzc05hbWU9XCJwcy1hYnNvbHV0ZSAtcHMtdG9wLVsxcHhdIHBzLWxlZnQtMCBwcy1yaWdodC0wXCIgLz59PC9kaXY+XG4gICAgICAgIDxEbmRDb250ZXh0IHNlbnNvcnM9e3NlbnNvcnN9IG9uRHJhZ0VuZD17aGFuZGxlRHJhZ0VuZH0+XG4gICAgICAgICAgPFRhYmxlIGNsYXNzTmFtZT1cInBzLXRhYmxlLWZpeGVkIHBzLWJvcmRlci1zZXBhcmF0ZSBwcy1ib3JkZXItc3BhY2luZy0wIHBzLWJveC1ib3JkZXIgcHMtdy1hdXRvXCI+XG4gICAgICAgICAgICA8VGFibGVIZWFkZXI+XG4gICAgICAgICAgICAgIHt0YWJsZS5nZXRIZWFkZXJHcm91cHMoKS5tYXAoKGhlYWRlckdyb3VwKSA9PiAoXG4gICAgICAgICAgICAgICAgPFRhYmxlUm93IGtleT17aGVhZGVyR3JvdXAuaWR9PlxuICAgICAgICAgICAgICAgICAgPFNvcnRhYmxlQ29udGV4dFxuICAgICAgICAgICAgICAgICAgICBpdGVtcz17aGVhZGVyR3JvdXAuaGVhZGVycy5tYXAoKGhlYWRlcikgPT4gaGVhZGVyLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgc3RyYXRlZ3k9e2hvcml6b250YWxMaXN0U29ydGluZ1N0cmF0ZWd5fVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7aGVhZGVyR3JvdXAuaGVhZGVycy5tYXAoKGhlYWRlciwgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgaGVhZGVyLmNvbHVtbi5jb2x1bW5EZWYuaGVhZGVyID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgSGVhZGVyID0gQ29tcG9uZW50VHlwZTxPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj4+O1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSGVhZGVyID0gaGVhZGVyLmNvbHVtbi5jb2x1bW5EZWYuaGVhZGVyKGhlYWRlci5nZXRDb250ZXh0KCkpIGFzIEhlYWRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8SGVhZGVyIGtleT17aX0gey4uLmdldENvbHVtblBpbm5pbmdTdHlsZXMoaGVhZGVyLmNvbHVtbiwgXCJoZWFkZXJcIil9IC8+O1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgIDwvU29ydGFibGVDb250ZXh0PlxuICAgICAgICAgICAgICAgIDwvVGFibGVSb3c+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9UYWJsZUhlYWRlcj5cbiAgICAgICAgICAgIDxUYWJsZUJvZHk+XG4gICAgICAgICAgICAgIHtnZXRCZWZvcmVSb3dzPy4odGFibGUpfVxuICAgICAgICAgICAgICB7dGFibGUuZ2V0Um93TW9kZWwoKS5yb3dzPy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgICAgdGFibGUuZ2V0Um93TW9kZWwoKS5yb3dzLm1hcCgocm93KSA9PiAoXG4gICAgICAgICAgICAgICAgICA8VGFibGVSb3dcbiAgICAgICAgICAgICAgICAgICAga2V5PXtyb3cuaWR9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgICAgICAgXCJwcy1iZy10YWJsZS1yb3cgcHMtb2RkOmJnLXRhYmxlLXJvdy1vZGQgcHMtZ3JvdXAgWyY6bGFzdC1vZi10eXBlX3RkXTpwcy1ib3JkZXItYi0wIHBzLWdyb3VwXCIsXG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtyb3cuZ2V0VmlzaWJsZUNlbGxzKCkubWFwKChjZWxsLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjZWxsLmNvbHVtbi5jb2x1bW5EZWYuY2VsbCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlIENlbGwgPSBDb21wb25lbnRUeXBlPE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPj47XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDZWxsID0gY2VsbC5jb2x1bW4uY29sdW1uRGVmLmNlbGwoY2VsbC5nZXRDb250ZXh0KCkpIGFzIENlbGw7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPENlbGwga2V5PXtpfSB7Li4uZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyhjZWxsLmNvbHVtbiwgXCJjZWxsXCIpfSAvPjtcbiAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICA8L1RhYmxlUm93PlxuICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPFRhYmxlUm93PlxuICAgICAgICAgICAgICAgICAgPFRhYmxlQ2VsbFxuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuPXtjb2x1bW5EZWZzLmxlbmd0aH1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtaC0yNCBwcy10ZXh0LWxlZnQgcHMtcC1bdmFyKC0tc3R1ZGlvLWNlbGwtc3BhY2luZyldXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge2lzTG9hZGluZyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U2tlbGV0b24gY2xhc3NOYW1lPVwicHMtaC00IHBzLXctZnVsbFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U2tlbGV0b24gY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNC81XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTa2VsZXRvbiBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy0yLzNcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9UYWJsZUNlbGw+XG4gICAgICAgICAgICAgICAgPC9UYWJsZVJvdz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvVGFibGVCb2R5PlxuICAgICAgICAgIDwvVGFibGU+XG4gICAgICAgIDwvRG5kQ29udGV4dD5cbiAgICAgICAgeyFwYWdlQ291bnQgfHwgcGFnZUNvdW50IDwgMiA/IG51bGwgOiA8RGF0YUdyaWRQYWdpbmF0aW9uIHRhYmxlPXt0YWJsZX0gdmFyaWFudD1cIm51bWVyaWNcIiAvPn1cblxuICAgICAgICA8QW5pbWF0ZVByZXNlbmNlIG1vZGU9XCJ3YWl0XCI+XG4gICAgICAgICAge3RhYmxlLmdldFJvd01vZGVsKCkucm93cz8ubGVuZ3RoID09PSAwICYmICFpc0xvYWRpbmcgJiYgIWlzUHJvY2Vzc2luZyAmJiAoXG4gICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlciBwcy1hYnNvbHV0ZSAtcHMtaW5zZXQtMCBwcy1wb2ludGVyLWV2ZW50cy1ub25lXCJcbiAgICAgICAgICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwIH19XG4gICAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSB9fVxuICAgICAgICAgICAgICBleGl0PXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC0xIHBzLXRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy10ZXh0LXNtIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPk5vIHJlc3VsdHMgZm91bmQ8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgICAgICAgICAgICBJdCBkb2VzbiZhcG9zO3QgbG9vayBsaWtlIHlvdSBoYXZlIGFueSBkYXRhIGluIHRoaXMgdGFibGUuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvQW5pbWF0ZVByZXNlbmNlPlxuICAgICAgPC9kaXY+XG4gICAgPC8+XG4gICk7XG59XG5cbmZ1bmN0aW9uIHRvU29ydGluZ1N0YXRlKGZyb206IFNvcnRPcmRlckl0ZW1bXSB8IHVuZGVmaW5lZCk6IFNvcnRpbmdTdGF0ZSB7XG4gIHJldHVybiBmcm9tPy5tYXAoKGl0ZW0pID0+ICh7IGlkOiBpdGVtLmNvbHVtbiwgZGVzYzogaXRlbS5kaXJlY3Rpb24gPT09IFwiZGVzY1wiIH0pKSB8fCBbXTtcbn1cblxuZnVuY3Rpb24gdG9Tb3J0T3JkZXJJdGVtcyhmcm9tOiBTb3J0aW5nU3RhdGUpOiBTb3J0T3JkZXJJdGVtW10ge1xuICByZXR1cm4gZnJvbS5tYXAoKGl0ZW0pID0+ICh7XG4gICAgY29sdW1uOiBpdGVtLmlkLFxuICAgIGRpcmVjdGlvbjogaXRlbS5kZXNjID8gXCJkZXNjXCIgOiBcImFzY1wiLFxuICB9KSk7XG59XG4iLCAiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5jb25zdCBnZXRJdGVtID0gKGtleTogc3RyaW5nKTogdW5rbm93biA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgaXRlbVZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KVxuICAgIGlmICh0eXBlb2YgaXRlbVZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoaXRlbVZhbHVlKVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VMb2NhbFN0b3JhZ2U8VD4oXG4gIGtleTogc3RyaW5nLFxuICBkZWZhdWx0VmFsdWU6IFQgfCB1bmRlZmluZWRcbik6IFtUIHwgdW5kZWZpbmVkLCAobmV3VmFsOiBUIHwgKChwcmV2VmFsOiBUKSA9PiBUKSkgPT4gdm9pZF0ge1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IFJlYWN0LnVzZVN0YXRlPFQ+KClcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGluaXRpYWxWYWx1ZSA9IGdldEl0ZW0oa2V5KSBhcyBUIHwgdW5kZWZpbmVkXG5cbiAgICBpZiAodHlwZW9mIGluaXRpYWxWYWx1ZSA9PT0gJ3VuZGVmaW5lZCcgfHwgaW5pdGlhbFZhbHVlID09PSBudWxsKSB7XG4gICAgICBzZXRWYWx1ZShcbiAgICAgICAgdHlwZW9mIGRlZmF1bHRWYWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IGRlZmF1bHRWYWx1ZSgpIDogZGVmYXVsdFZhbHVlXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFZhbHVlKGluaXRpYWxWYWx1ZSlcbiAgICB9XG4gIH0sIFtkZWZhdWx0VmFsdWUsIGtleV0pXG5cbiAgY29uc3Qgc2V0dGVyID0gUmVhY3QudXNlQ2FsbGJhY2soXG4gICAgKHVwZGF0ZXI6IGFueSkgPT4ge1xuICAgICAgc2V0VmFsdWUob2xkID0+IHtcbiAgICAgICAgbGV0IG5ld1ZhbCA9IHVwZGF0ZXJcblxuICAgICAgICBpZiAodHlwZW9mIHVwZGF0ZXIgPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIG5ld1ZhbCA9IHVwZGF0ZXIob2xkKVxuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCBKU09OLnN0cmluZ2lmeShuZXdWYWwpKVxuICAgICAgICB9IGNhdGNoIHt9XG5cbiAgICAgICAgcmV0dXJuIG5ld1ZhbFxuICAgICAgfSlcbiAgICB9LFxuICAgIFtrZXldXG4gIClcblxuICByZXR1cm4gW3ZhbHVlLCBzZXR0ZXJdXG59XG4iLCAiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdFRoZW1lID0ge1xuICBiYWNrZ3JvdW5kOiAnIzBiMTUyMScsXG4gIGJhY2tncm91bmRBbHQ6ICcjMTMyMzM3JyxcbiAgZm9yZWdyb3VuZDogJ3doaXRlJyxcbiAgZ3JheTogJyMzZjRlNjAnLFxuICBncmF5QWx0OiAnIzIyMmUzZScsXG4gIGlucHV0QmFja2dyb3VuZENvbG9yOiAnI2ZmZicsXG4gIGlucHV0VGV4dENvbG9yOiAnIzAwMCcsXG4gIHN1Y2Nlc3M6ICcjMDBhYjUyJyxcbiAgZGFuZ2VyOiAnI2ZmMDA4NScsXG4gIGFjdGl2ZTogJyMwMDZiZmYnLFxuICB3YXJuaW5nOiAnI2ZmYjIwMCcsXG59IGFzIGNvbnN0XG5cbmV4cG9ydCB0eXBlIFRoZW1lID0gdHlwZW9mIGRlZmF1bHRUaGVtZVxuaW50ZXJmYWNlIFByb3ZpZGVyUHJvcHMge1xuICB0aGVtZTogVGhlbWVcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGVcbn1cblxuY29uc3QgVGhlbWVDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dChkZWZhdWx0VGhlbWUpXG5cbmV4cG9ydCBmdW5jdGlvbiBUaGVtZVByb3ZpZGVyKHsgdGhlbWUsIC4uLnJlc3QgfTogUHJvdmlkZXJQcm9wcykge1xuICByZXR1cm4gPFRoZW1lQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17dGhlbWV9IHsuLi5yZXN0fSAvPlxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlVGhlbWUoKSB7XG4gIHJldHVybiBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dClcbn1cbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZU1lZGlhUXVlcnkocXVlcnk6IHN0cmluZyk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAvLyBLZWVwIHRyYWNrIG9mIHRoZSBwcmVmZXJlbmNlIGluIHN0YXRlLCBzdGFydCB3aXRoIHRoZSBjdXJyZW50IG1hdGNoXG4gIGNvbnN0IFtpc01hdGNoLCBzZXRJc01hdGNoXSA9IFJlYWN0LnVzZVN0YXRlKCgpID0+IHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiB3aW5kb3cubWF0Y2hNZWRpYSAmJiB3aW5kb3cubWF0Y2hNZWRpYShxdWVyeSkubWF0Y2hlc1xuICAgIH1cbiAgfSlcblxuICAvLyBXYXRjaCBmb3IgY2hhbmdlc1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgaWYgKCF3aW5kb3cubWF0Y2hNZWRpYSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gQ3JlYXRlIGEgbWF0Y2hlclxuICAgICAgY29uc3QgbWF0Y2hlciA9IHdpbmRvdy5tYXRjaE1lZGlhKHF1ZXJ5KVxuXG4gICAgICAvLyBDcmVhdGUgb3VyIGhhbmRsZXJcbiAgICAgIGNvbnN0IG9uQ2hhbmdlID0gKHsgbWF0Y2hlcyB9OiB7IG1hdGNoZXM6IGJvb2xlYW4gfSkgPT5cbiAgICAgICAgc2V0SXNNYXRjaChtYXRjaGVzKVxuXG4gICAgICAvLyBMaXN0ZW4gZm9yIGNoYW5nZXNcbiAgICAgIG1hdGNoZXIuYWRkTGlzdGVuZXIob25DaGFuZ2UpXG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIC8vIFN0b3AgbGlzdGVuaW5nIGZvciBjaGFuZ2VzXG4gICAgICAgIG1hdGNoZXIucmVtb3ZlTGlzdGVuZXIob25DaGFuZ2UpXG4gICAgICB9XG4gICAgfVxuICB9LCBbaXNNYXRjaCwgcXVlcnksIHNldElzTWF0Y2hdKVxuXG4gIHJldHVybiBpc01hdGNoXG59XG4iLCAiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgeyBUaGVtZSwgdXNlVGhlbWUgfSBmcm9tICcuL3RoZW1lJ1xuaW1wb3J0IHVzZU1lZGlhUXVlcnkgZnJvbSAnLi91c2VNZWRpYVF1ZXJ5J1xuXG5jb25zdCBpc1NlcnZlciA9IHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnXG5cbnR5cGUgU3R5bGVkQ29tcG9uZW50PFQ+ID0gVCBleHRlbmRzICdidXR0b24nXG4gID8gUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8XG4gICAgICBSZWFjdC5CdXR0b25IVE1MQXR0cmlidXRlczxIVE1MQnV0dG9uRWxlbWVudD4sXG4gICAgICBIVE1MQnV0dG9uRWxlbWVudFxuICAgID5cbiAgOiBUIGV4dGVuZHMgJ2lucHV0J1xuICAgID8gUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8XG4gICAgICAgIFJlYWN0LklucHV0SFRNTEF0dHJpYnV0ZXM8SFRNTElucHV0RWxlbWVudD4sXG4gICAgICAgIEhUTUxJbnB1dEVsZW1lbnRcbiAgICAgID5cbiAgICA6IFQgZXh0ZW5kcyAnc2VsZWN0J1xuICAgICAgPyBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxcbiAgICAgICAgICBSZWFjdC5TZWxlY3RIVE1MQXR0cmlidXRlczxIVE1MU2VsZWN0RWxlbWVudD4sXG4gICAgICAgICAgSFRNTFNlbGVjdEVsZW1lbnRcbiAgICAgICAgPlxuICAgICAgOiBUIGV4dGVuZHMga2V5b2YgSFRNTEVsZW1lbnRUYWdOYW1lTWFwXG4gICAgICAgID8gUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnRUYWdOYW1lTWFwW1RdPlxuICAgICAgICA6IG5ldmVyXG5cbi8vIGV4cG9ydCBmdW5jdGlvbiBnZXRTdGF0dXNDb2xvcihtYXRjaDogUm91dGVNYXRjaCwgdGhlbWU6IFRoZW1lKSB7XG4vLyAgIHJldHVybiBtYXRjaC5pc0xvYWRpbmdcbi8vICAgICA/IHRoZW1lLmFjdGl2ZVxuLy8gICAgIDogbWF0Y2guc3RhdHVzID09PSAncmVqZWN0ZWQnXG4vLyAgICAgPyB0aGVtZS5kYW5nZXJcbi8vICAgICA6IG1hdGNoLnN0YXR1cyA9PT0gJ3BlbmRpbmcnXG4vLyAgICAgPyB0aGVtZS53YXJuaW5nXG4vLyAgICAgOiB0aGVtZS5zdWNjZXNzXG4vLyB9XG5cbi8vIGV4cG9ydCBmdW5jdGlvbiBnZXRRdWVyeVN0YXR1c0xhYmVsKHF1ZXJ5OiBRdWVyeSkge1xuLy8gICByZXR1cm4gcXVlcnkuc3RhdGUuaXNGZXRjaGluZ1xuLy8gICAgID8gJ2ZldGNoaW5nJ1xuLy8gICAgIDogIXF1ZXJ5LmdldE9ic2VydmVyc0NvdW50KClcbi8vICAgICA/ICdpbmFjdGl2ZSdcbi8vICAgICA6IHF1ZXJ5LmlzU3RhbGUoKVxuLy8gICAgID8gJ3N0YWxlJ1xuLy8gICAgIDogJ2ZyZXNoJ1xuLy8gfVxuXG50eXBlIFN0eWxlcyA9XG4gIHwgUmVhY3QuQ1NTUHJvcGVydGllc1xuICB8ICgocHJvcHM6IFJlY29yZDxzdHJpbmcsIGFueT4sIHRoZW1lOiBUaGVtZSkgPT4gUmVhY3QuQ1NTUHJvcGVydGllcylcblxuZXhwb3J0IGZ1bmN0aW9uIHN0eWxlZDxUIGV4dGVuZHMga2V5b2YgSFRNTEVsZW1lbnRUYWdOYW1lTWFwPihcbiAgdHlwZTogVCxcbiAgbmV3U3R5bGVzOiBTdHlsZXMsXG4gIHF1ZXJpZXM6IFJlY29yZDxzdHJpbmcsIFN0eWxlcz4gPSB7fVxuKSB7XG4gIHJldHVybiBSZWFjdC5mb3J3YXJkUmVmPEhUTUxFbGVtZW50VGFnTmFtZU1hcFtUXSwgU3R5bGVkQ29tcG9uZW50PFQ+PihcbiAgICAoeyBzdHlsZSwgLi4ucmVzdCB9LCByZWYpID0+IHtcbiAgICAgIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKVxuXG4gICAgICBjb25zdCBtZWRpYVN0eWxlcyA9IE9iamVjdC5lbnRyaWVzKHF1ZXJpZXMpLnJlZHVjZShcbiAgICAgICAgKGN1cnJlbnQsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rc1xuICAgICAgICAgIHJldHVybiB1c2VNZWRpYVF1ZXJ5KGtleSlcbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIC4uLmN1cnJlbnQsXG4gICAgICAgICAgICAgICAgLi4uKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IHZhbHVlKHJlc3QsIHRoZW1lKSA6IHZhbHVlKSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiBjdXJyZW50XG4gICAgICAgIH0sXG4gICAgICAgIHt9XG4gICAgICApXG5cbiAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KHR5cGUsIHtcbiAgICAgICAgLi4ucmVzdCxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAuLi4odHlwZW9mIG5ld1N0eWxlcyA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgPyBuZXdTdHlsZXMocmVzdCwgdGhlbWUpXG4gICAgICAgICAgICA6IG5ld1N0eWxlcyksXG4gICAgICAgICAgLi4uc3R5bGUsXG4gICAgICAgICAgLi4ubWVkaWFTdHlsZXMsXG4gICAgICAgIH0sXG4gICAgICAgIHJlZixcbiAgICAgIH0pXG4gICAgfVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VJc01vdW50ZWQoKSB7XG4gIGNvbnN0IG1vdW50ZWRSZWYgPSBSZWFjdC51c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGlzTW91bnRlZCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IG1vdW50ZWRSZWYuY3VycmVudCwgW10pXG5cbiAgUmVhY3RbaXNTZXJ2ZXIgPyAndXNlRWZmZWN0JyA6ICd1c2VMYXlvdXRFZmZlY3QnXSgoKSA9PiB7XG4gICAgbW91bnRlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBtb3VudGVkUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIH1cbiAgfSwgW10pXG5cbiAgcmV0dXJuIGlzTW91bnRlZFxufVxuXG4vKipcbiAqIFRoaXMgaG9vayBpcyBhIHNhZmUgdXNlU3RhdGUgdmVyc2lvbiB3aGljaCBzY2hlZHVsZXMgc3RhdGUgdXBkYXRlcyBpbiBtaWNyb3Rhc2tzXG4gKiB0byBwcmV2ZW50IHVwZGF0aW5nIGEgY29tcG9uZW50IHN0YXRlIHdoaWxlIFJlYWN0IGlzIHJlbmRlcmluZyBkaWZmZXJlbnQgY29tcG9uZW50c1xuICogb3Igd2hlbiB0aGUgY29tcG9uZW50IGlzIG5vdCBtb3VudGVkIGFueW1vcmUuXG4gKi9cbmZ1bmN0aW9uIHVzZVNhZmVTdGF0ZTxUPihpbml0aWFsU3RhdGU6IFQpOiBbVCwgKHZhbHVlOiBUKSA9PiB2b2lkXSB7XG4gIGNvbnN0IGlzTW91bnRlZCA9IHVzZUlzTW91bnRlZCgpXG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVdID0gUmVhY3QudXNlU3RhdGUoaW5pdGlhbFN0YXRlKVxuXG4gIGNvbnN0IHNhZmVTZXRTdGF0ZSA9IFJlYWN0LnVzZUNhbGxiYWNrKFxuICAgICh2YWx1ZTogVCkgPT4ge1xuICAgICAgc2NoZWR1bGVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICBpZiAoaXNNb3VudGVkKCkpIHtcbiAgICAgICAgICBzZXRTdGF0ZSh2YWx1ZSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9LFxuICAgIFtpc01vdW50ZWRdXG4gIClcblxuICByZXR1cm4gW3N0YXRlLCBzYWZlU2V0U3RhdGVdXG59XG5cbi8qKlxuICogU2NoZWR1bGVzIGEgbWljcm90YXNrLlxuICogVGhpcyBjYW4gYmUgdXNlZnVsIHRvIHNjaGVkdWxlIHN0YXRlIHVwZGF0ZXMgYWZ0ZXIgcmVuZGVyaW5nLlxuICovXG5mdW5jdGlvbiBzY2hlZHVsZU1pY3JvdGFzayhjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBQcm9taXNlLnJlc29sdmUoKVxuICAgIC50aGVuKGNhbGxiYWNrKVxuICAgIC5jYXRjaChlcnJvciA9PlxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRocm93IGVycm9yXG4gICAgICB9KVxuICAgIClcbn1cbiIsICJpbXBvcnQgeyBzdHlsZWQgfSBmcm9tICcuL3V0aWxzJ1xuXG5leHBvcnQgY29uc3QgUGFuZWwgPSBzdHlsZWQoXG4gICdkaXYnLFxuICAoX3Byb3BzLCB0aGVtZSkgPT4gKHtcbiAgICBmb250U2l6ZTogJ2NsYW1wKDEycHgsIDEuNXZ3LCAxNHB4KScsXG4gICAgZm9udEZhbWlseTogYHNhbnMtc2VyaWZgLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmJhY2tncm91bmQsXG4gICAgY29sb3I6IHRoZW1lLmZvcmVncm91bmQsXG4gIH0pLFxuICB7XG4gICAgJyhtYXgtd2lkdGg6IDcwMHB4KSc6IHtcbiAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgIH0sXG4gICAgJyhtYXgtd2lkdGg6IDYwMHB4KSc6IHtcbiAgICAgIGZvbnRTaXplOiAnLjllbScsXG4gICAgICAvLyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICB9LFxuICB9XG4pXG5cbmNvbnN0IEFjdGl2ZVBhbmVsID0gc3R5bGVkKFxuICAnZGl2JyxcbiAgKCkgPT4gKHtcbiAgICBmbGV4OiAnMSAxIDUwMHB4JyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgb3ZlcmZsb3c6ICdhdXRvJyxcbiAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgfSksXG4gIHtcbiAgICAnKG1heC13aWR0aDogNzAwcHgpJzogKF9wcm9wcywgdGhlbWUpID0+ICh7XG4gICAgICBib3JkZXJUb3A6IGAycHggc29saWQgJHt0aGVtZS5ncmF5fWAsXG4gICAgfSksXG4gIH1cbilcblxuZXhwb3J0IGNvbnN0IEJ1dHRvbiA9IHN0eWxlZCgnYnV0dG9uJywgKHByb3BzLCB0aGVtZSkgPT4gKHtcbiAgYXBwZWFyYW5jZTogJ25vbmUnLFxuICBmb250U2l6ZTogJy45ZW0nLFxuICBmb250V2VpZ2h0OiAnYm9sZCcsXG4gIGJhY2tncm91bmQ6IHRoZW1lLmdyYXksXG4gIGJvcmRlcjogJzAnLFxuICBib3JkZXJSYWRpdXM6ICcuM2VtJyxcbiAgY29sb3I6ICd3aGl0ZScsXG4gIHBhZGRpbmc6ICcuNWVtJyxcbiAgb3BhY2l0eTogcHJvcHMuZGlzYWJsZWQgPyAnLjUnIDogdW5kZWZpbmVkLFxuICBjdXJzb3I6ICdwb2ludGVyJyxcbn0pKVxuXG4vLyBleHBvcnQgY29uc3QgUXVlcnlLZXlzID0gc3R5bGVkKCdzcGFuJywge1xuLy8gICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbi8vICAgZm9udFNpemU6ICcwLjllbScsXG4vLyB9KVxuXG4vLyBleHBvcnQgY29uc3QgUXVlcnlLZXkgPSBzdHlsZWQoJ3NwYW4nLCB7XG4vLyAgIGRpc3BsYXk6ICdpbmxpbmUtZmxleCcsXG4vLyAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuLy8gICBwYWRkaW5nOiAnLjJlbSAuNGVtJyxcbi8vICAgZm9udFdlaWdodDogJ2JvbGQnLFxuLy8gICB0ZXh0U2hhZG93OiAnMCAwIDEwcHggYmxhY2snLFxuLy8gICBib3JkZXJSYWRpdXM6ICcuMmVtJyxcbi8vIH0pXG5cbmNvbnN0IENvZGUgPSBzdHlsZWQoJ2NvZGUnLCB7XG4gIGZvbnRTaXplOiAnLjllbScsXG59KVxuXG5jb25zdCBJbnB1dCA9IHN0eWxlZCgnaW5wdXQnLCAoX3Byb3BzLCB0aGVtZSkgPT4gKHtcbiAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5pbnB1dEJhY2tncm91bmRDb2xvcixcbiAgYm9yZGVyOiAwLFxuICBib3JkZXJSYWRpdXM6ICcuMmVtJyxcbiAgY29sb3I6IHRoZW1lLmlucHV0VGV4dENvbG9yLFxuICBmb250U2l6ZTogJy45ZW0nLFxuICBsaW5lSGVpZ2h0OiBgMS4zYCxcbiAgcGFkZGluZzogJy4zZW0gLjRlbScsXG59KSlcblxuY29uc3QgU2VsZWN0ID0gc3R5bGVkKFxuICAnc2VsZWN0JyxcbiAgKF9wcm9wcywgdGhlbWUpID0+ICh7XG4gICAgZGlzcGxheTogYGlubGluZS1ibG9ja2AsXG4gICAgZm9udFNpemU6IGAuOWVtYCxcbiAgICBmb250RmFtaWx5OiBgc2Fucy1zZXJpZmAsXG4gICAgZm9udFdlaWdodDogJ25vcm1hbCcsXG4gICAgbGluZUhlaWdodDogYDEuM2AsXG4gICAgcGFkZGluZzogYC4zZW0gMS41ZW0gLjNlbSAuNWVtYCxcbiAgICBoZWlnaHQ6ICdhdXRvJyxcbiAgICBib3JkZXI6IDAsXG4gICAgYm9yZGVyUmFkaXVzOiBgLjJlbWAsXG4gICAgYXBwZWFyYW5jZTogYG5vbmVgLFxuICAgIFdlYmtpdEFwcGVhcmFuY2U6ICdub25lJyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmlucHV0QmFja2dyb3VuZENvbG9yLFxuICAgIGJhY2tncm91bmRJbWFnZTogYHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMTAwJyBoZWlnaHQ9JzEwMCcgZmlsbD0nJTIzNDQ0NDQ0Jz48cG9seWdvbiBwb2ludHM9JzAsMjUgMTAwLDI1IDUwLDc1Jy8+PC9zdmc+XCIpYCxcbiAgICBiYWNrZ3JvdW5kUmVwZWF0OiBgbm8tcmVwZWF0YCxcbiAgICBiYWNrZ3JvdW5kUG9zaXRpb246IGByaWdodCAuNTVlbSBjZW50ZXJgLFxuICAgIGJhY2tncm91bmRTaXplOiBgLjY1ZW0gYXV0bywgMTAwJWAsXG4gICAgY29sb3I6IHRoZW1lLmlucHV0VGV4dENvbG9yLFxuICB9KSxcbiAge1xuICAgICcobWF4LXdpZHRoOiA1MDBweCknOiB7XG4gICAgICBkaXNwbGF5OiAnbm9uZScsXG4gICAgfSxcbiAgfVxuKVxuIiwgIi8vIEB0cy1ub2NoZWNrXG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSAnLi91dGlscydcblxuY29uc3QgRW50cnkgPSBzdHlsZWQoJ2RpdicsIHtcbiAgZm9udEZhbWlseTogJ01lbmxvLCBtb25vc3BhY2UnLFxuICBmb250U2l6ZTogJzAuN3JlbScsXG4gIGxpbmVIZWlnaHQ6ICcxLjcnLFxuICBvdXRsaW5lOiAnbm9uZScsXG4gIHdvcmRCcmVhazogJ2JyZWFrLXdvcmQnLFxufSlcblxuY29uc3QgTGFiZWwgPSBzdHlsZWQoJ3NwYW4nLCB7XG4gIGN1cnNvcjogJ3BvaW50ZXInLFxuICBjb2xvcjogJ3doaXRlJyxcbn0pXG5cbmNvbnN0IFZhbHVlID0gc3R5bGVkKCdzcGFuJywgKHByb3BzLCB0aGVtZSkgPT4gKHtcbiAgY29sb3I6IHRoZW1lLmRhbmdlcixcbn0pKVxuXG5jb25zdCBTdWJFbnRyaWVzID0gc3R5bGVkKCdkaXYnLCB7XG4gIG1hcmdpbkxlZnQ6ICcuMXJlbScsXG4gIHBhZGRpbmdMZWZ0OiAnMXJlbScsXG4gIGJvcmRlckxlZnQ6ICcycHggc29saWQgcmdiYSgwLDAsMCwuMTUpJyxcbn0pXG5cbmNvbnN0IEluZm8gPSBzdHlsZWQoJ3NwYW4nLCB7XG4gIGNvbG9yOiAnZ3JleScsXG4gIGZvbnRTaXplOiAnLjdyZW0nLFxufSlcblxuY29uc3QgRXhwYW5kZXIgPSAoeyBleHBhbmRlZCwgc3R5bGUgPSB7fSwgLi4ucmVzdCB9KSA9PiAoXG4gIDxzcGFuXG4gICAgc3R5bGU9e3tcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgdHJhbnNpdGlvbjogJ2FsbCAuMXMgZWFzZScsXG4gICAgICB0cmFuc2Zvcm06IGByb3RhdGUoJHtleHBhbmRlZCA/IDkwIDogMH1kZWcpICR7c3R5bGUudHJhbnNmb3JtIHx8ICcnfWAsXG4gICAgICAuLi5zdHlsZSxcbiAgICB9fVxuICA+XG4gICAg4pa2XG4gIDwvc3Bhbj5cbilcblxuY29uc3QgRGVmYXVsdFJlbmRlcmVyID0gKHtcbiAgaGFuZGxlRW50cnksXG4gIGxhYmVsLFxuICB2YWx1ZSxcbiAgLy8gcGF0aCxcbiAgc3ViRW50cmllcyxcbiAgc3ViRW50cnlQYWdlcyxcbiAgdHlwZSxcbiAgLy8gZGVwdGgsXG4gIGV4cGFuZGVkLFxuICB0b2dnbGUsXG4gIHBhZ2VTaXplLFxuICByZW5kZXJlcixcbn0pID0+IHtcbiAgY29uc3QgW3ZhbHVlU25hcHNob3QsIHNldFZhbHVlU25hcHNob3RdID0gUmVhY3QudXNlU3RhdGUodW5kZWZpbmVkKVxuICBjb25zdCBbZXhwYW5kZWRQYWdlcywgc2V0RXhwYW5kZWRQYWdlc10gPSBSZWFjdC51c2VTdGF0ZShbXSlcblxuICBjb25zdCByZWZyZXNoVmFsdWVTbmFwc2hvdCA9ICgpID0+IHtcbiAgICBzZXRWYWx1ZVNuYXBzaG90KHZhbHVlKCkpXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxFbnRyeSBrZXk9e2xhYmVsfT5cbiAgICAgIHtzdWJFbnRyeVBhZ2VzPy5sZW5ndGggPyAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPExhYmVsIG9uQ2xpY2s9eygpID0+IHRvZ2dsZSgpfT5cbiAgICAgICAgICAgIDxFeHBhbmRlciBleHBhbmRlZD17ZXhwYW5kZWR9IC8+IHtsYWJlbH17JyAnfVxuICAgICAgICAgICAgPEluZm8+XG4gICAgICAgICAgICAgIHtTdHJpbmcodHlwZSkudG9Mb3dlckNhc2UoKSA9PT0gJ2l0ZXJhYmxlJyA/ICcoSXRlcmFibGUpICcgOiAnJ31cbiAgICAgICAgICAgICAge3N1YkVudHJpZXMubGVuZ3RofSB7c3ViRW50cmllcy5sZW5ndGggPiAxID8gYGl0ZW1zYCA6IGBpdGVtYH1cbiAgICAgICAgICAgIDwvSW5mbz5cbiAgICAgICAgICA8L0xhYmVsPlxuICAgICAgICAgIHtleHBhbmRlZCA/IChcbiAgICAgICAgICAgIHN1YkVudHJ5UGFnZXMubGVuZ3RoID09PSAxID8gKFxuICAgICAgICAgICAgICA8U3ViRW50cmllcz5cbiAgICAgICAgICAgICAgICB7c3ViRW50cmllcy5tYXAoZW50cnkgPT4gaGFuZGxlRW50cnkoZW50cnkpKX1cbiAgICAgICAgICAgICAgPC9TdWJFbnRyaWVzPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPFN1YkVudHJpZXM+XG4gICAgICAgICAgICAgICAge3N1YkVudHJ5UGFnZXMubWFwKChlbnRyaWVzLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fT5cbiAgICAgICAgICAgICAgICAgICAgPEVudHJ5PlxuICAgICAgICAgICAgICAgICAgICAgIDxMYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RXhwYW5kZWRQYWdlcyhvbGQgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGQuaW5jbHVkZXMoaW5kZXgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG9sZC5maWx0ZXIoZCA9PiBkICE9PSBpbmRleClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogWy4uLm9sZCwgaW5kZXhdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8RXhwYW5kZXIgZXhwYW5kZWQ9e2V4cGFuZGVkfSAvPiBbe2luZGV4ICogcGFnZVNpemV9IC4uLnsnICd9XG4gICAgICAgICAgICAgICAgICAgICAgICB7aW5kZXggKiBwYWdlU2l6ZSArIHBhZ2VTaXplIC0gMX1dXG4gICAgICAgICAgICAgICAgICAgICAgPC9MYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICB7ZXhwYW5kZWRQYWdlcy5pbmNsdWRlcyhpbmRleCkgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8U3ViRW50cmllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge2VudHJpZXMubWFwKGVudHJ5ID0+IGhhbmRsZUVudHJ5KGVudHJ5KSl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N1YkVudHJpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgIDwvRW50cnk+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9TdWJFbnRyaWVzPlxuICAgICAgICAgICAgKVxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICA8Lz5cbiAgICAgICkgOiB0eXBlID09PSAnZnVuY3Rpb24nID8gKFxuICAgICAgICA8PlxuICAgICAgICAgIDxFeHBsb3JlclxuICAgICAgICAgICAgcmVuZGVyZXI9e3JlbmRlcmVyfVxuICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICA8YnV0dG9uIG9uQ2xpY2s9e3JlZnJlc2hWYWx1ZVNuYXBzaG90fT5cbiAgICAgICAgICAgICAgICA8TGFiZWw+e2xhYmVsfTwvTGFiZWw+IPCflIR7JyAnfVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhbHVlPXt2YWx1ZVNuYXBzaG90fVxuICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXt7fX1cbiAgICAgICAgICAvPlxuICAgICAgICA8Lz5cbiAgICAgICkgOiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPExhYmVsPntsYWJlbH06PC9MYWJlbD57JyAnfVxuICAgICAgICAgIDxWYWx1ZT5cbiAgICAgICAgICAgIHtKU09OLnN0cmluZ2lmeSh2YWx1ZSwgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoT2JqZWN0KHZhbHVlKSkpfVxuICAgICAgICAgIDwvVmFsdWU+XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICA8L0VudHJ5PlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEV4cGxvcmVyKHtcbiAgdmFsdWUsXG4gIGRlZmF1bHRFeHBhbmRlZCxcbiAgcmVuZGVyZXIgPSBEZWZhdWx0UmVuZGVyZXIsXG4gIHBhZ2VTaXplID0gMTAwLFxuICBkZXB0aCA9IDAsXG4gIC4uLnJlc3Rcbn0pIHtcbiAgY29uc3QgW2V4cGFuZGVkLCBzZXRFeHBhbmRlZF0gPSBSZWFjdC51c2VTdGF0ZShkZWZhdWx0RXhwYW5kZWQpXG5cbiAgY29uc3QgdG9nZ2xlID0gc2V0ID0+IHtcbiAgICBzZXRFeHBhbmRlZChvbGQgPT4gKHR5cGVvZiBzZXQgIT09ICd1bmRlZmluZWQnID8gc2V0IDogIW9sZCkpXG4gIH1cblxuICBjb25zdCBwYXRoID0gW11cblxuICBsZXQgdHlwZSA9IHR5cGVvZiB2YWx1ZVxuICBsZXQgc3ViRW50cmllc1xuICBjb25zdCBzdWJFbnRyeVBhZ2VzID0gW11cblxuICBjb25zdCBtYWtlUHJvcGVydHkgPSBzdWIgPT4ge1xuICAgIGNvbnN0IG5ld1BhdGggPSBwYXRoLmNvbmNhdChzdWIubGFiZWwpXG4gICAgY29uc3Qgc3ViRGVmYXVsdEV4cGFuZGVkID1cbiAgICAgIGRlZmF1bHRFeHBhbmRlZCA9PT0gdHJ1ZVxuICAgICAgICA/IHsgW3N1Yi5sYWJlbF06IHRydWUgfVxuICAgICAgICA6IGRlZmF1bHRFeHBhbmRlZD8uW3N1Yi5sYWJlbF1cbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3ViLFxuICAgICAgc3ViUGF0aDogc3ViLFxuICAgICAgcGF0aDogbmV3UGF0aCxcbiAgICAgIGRlcHRoOiBkZXB0aCArIDEsXG4gICAgICBkZWZhdWx0RXhwYW5kZWQ6IHN1YkRlZmF1bHRFeHBhbmRlZCxcbiAgICB9XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICB0eXBlID0gJ2FycmF5J1xuICAgIHN1YkVudHJpZXMgPSB2YWx1ZS5tYXAoKGQsIGkpID0+XG4gICAgICBtYWtlUHJvcGVydHkoe1xuICAgICAgICBsYWJlbDogaSxcbiAgICAgICAgdmFsdWU6IGQsXG4gICAgICB9KVxuICAgIClcbiAgfSBlbHNlIGlmIChcbiAgICB2YWx1ZSAhPT0gbnVsbCAmJlxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICB0eXBlb2YgdmFsdWVbU3ltYm9sLml0ZXJhdG9yXSA9PT0gJ2Z1bmN0aW9uJ1xuICApIHtcbiAgICB0eXBlID0gJ0l0ZXJhYmxlJ1xuICAgIHN1YkVudHJpZXMgPSBBcnJheS5mcm9tKHZhbHVlLCAodmFsLCBpKSA9PlxuICAgICAgbWFrZVByb3BlcnR5KHtcbiAgICAgICAgbGFiZWw6IGksXG4gICAgICAgIHZhbHVlOiB2YWwsXG4gICAgICB9KVxuICAgIClcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICB0eXBlID0gJ2Z1bmN0aW9uJ1xuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICB0eXBlID0gJ29iamVjdCdcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2hhZG93XG4gICAgc3ViRW50cmllcyA9IE9iamVjdC5lbnRyaWVzKHZhbHVlKS5tYXAoKFtsYWJlbCwgdmFsdWVdKSA9PlxuICAgICAgbWFrZVByb3BlcnR5KHtcbiAgICAgICAgbGFiZWwsXG4gICAgICAgIHZhbHVlLFxuICAgICAgfSlcbiAgICApXG4gIH1cblxuICBpZiAoc3ViRW50cmllcykge1xuICAgIGxldCBpID0gMFxuXG4gICAgd2hpbGUgKGkgPCBzdWJFbnRyaWVzLmxlbmd0aCkge1xuICAgICAgc3ViRW50cnlQYWdlcy5wdXNoKHN1YkVudHJpZXMuc2xpY2UoaSwgaSArIHBhZ2VTaXplKSlcbiAgICAgIGkgPSBpICsgcGFnZVNpemVcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVuZGVyZXIoe1xuICAgIGhhbmRsZUVudHJ5OiBlbnRyeSA9PiAoXG4gICAgICA8RXhwbG9yZXIga2V5PXtlbnRyeS5sYWJlbH0gcmVuZGVyZXI9e3JlbmRlcmVyfSB7Li4ucmVzdH0gey4uLmVudHJ5fSAvPlxuICAgICksXG4gICAgdHlwZSxcbiAgICBzdWJFbnRyaWVzLFxuICAgIHN1YkVudHJ5UGFnZXMsXG4gICAgZGVwdGgsXG4gICAgdmFsdWUsXG4gICAgcGF0aCxcbiAgICBleHBhbmRlZCxcbiAgICB0b2dnbGUsXG4gICAgcGFnZVNpemUsXG4gICAgLi4ucmVzdCxcbiAgfSlcbn1cbiIsICJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTG9nbyhwcm9wczogYW55KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgd2lkdGg9XCI0MHB4XCJcbiAgICAgIGhlaWdodD1cIjQwcHhcIlxuICAgICAgdmlld0JveD1cIjAgMCAxOTAgMTkwXCJcbiAgICAgIHZlcnNpb249XCIxLjFcIlxuICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgIDxnIHN0cm9rZT1cIm5vbmVcIiBzdHJva2VXaWR0aD1cIjFcIiBmaWxsPVwibm9uZVwiIGZpbGxSdWxlPVwiZXZlbm9kZFwiPlxuICAgICAgICA8ZyBpZD1cIm9nLXdoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC0yOC4wMDAwMDAsIC0yMS4wMDAwMDApXCI+XG4gICAgICAgICAgPGcgaWQ9XCJHcm91cC0yXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDI4LjAwMDAwMCwgMzEuMDAwMDAwKVwiPlxuICAgICAgICAgICAgPGcgaWQ9XCJHcm91cFwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwLjAwMDAwMCwgMTAuMDAwMDAwKVwiPlxuICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgIGQ9XCJNMzkuNzIzOTcxMiw1MS4zNDM2MjM3IEMzNi42MzEyMjQsMzYuMzYyODc3IDM1Ljk2NzUxMTIsMjQuODcyNzcyMiAzNy45NjY2MzMxLDE2LjUyOTM1NTEgQzM5LjE1NTU5NjUsMTEuNTY3MTY3OCA0MS4zMjkzMDg4LDcuNTE5MDg0NjIgNDQuNjM0NjA2NCw0LjU5ODQ2MzA1IEM0OC4xMjQxMzk0LDEuNTE1MDQ3NzcgNTIuNTM2MDMyNywwLjAwMjAxMjE2NjA2IDU3LjQ5MzI1NywwLjAwMjAxMjE2NjA2IEM2NS42NzEyMDEzLDAuMDAyMDEyMTY2MDYgNzQuMjY4MjYwMiwzLjcyNzMyMTQzIDgzLjQ1NTcyNDYsMTAuODA0NDI2NCBDODcuMjAzMTIwMywxMy42OTEwNDU4IDkxLjA5MjQzNjYsMTcuMTcwNDExIDk1LjEzMTY1MTUsMjEuMjQ0NDc0NiBDOTUuNDUzMTQwNCwyMC44MzEwMjY1IDk1LjgxNjU0MTYsMjAuNDQxMDQ1MyA5Ni4yMjE0MzAxLDIwLjA4MDYxNTIgQzEwNy42NDA5OCw5LjkxNDk3MTU4IDExNy4yNTUyNDUsMy41OTg5MjcxNiAxMjUuNDc4NDA4LDEuMTYzNjUwNjggQzEzMC4zNjc4OTksLTAuMjg0MzY0MDA1IDEzNC45NTg1MjYsLTAuNDIyMzE3OTc4IDEzOS4xMzg5MzYsMC45ODMwMzEwMjEgQzE0My41NTE2MzEsMi40NjY0Njg0NCAxNDcuMDY3NjYsNS41MzI5NDg4OCAxNDkuNTQ4MzE0LDkuODI4MTA5MTIgQzE1My42NDIyODgsMTYuOTE2NjczNSAxNTQuNzIxOTE4LDI2LjIzMTA5ODMgMTUzLjE5NTU5NSwzNy43MzIwMjQzIEMxNTIuNTczNDUxLDQyLjQxOTkxMTIgMTUxLjUwOTg1LDQ3LjUyNjM4MzEgMTUwLjAwNzA5NCw1My4wNTkzMTUzIEMxNTAuNTc0MDQ1LDUzLjEyNzcwODYgMTUxLjE0MjQxNiw1My4yNTMyODA4IDE1MS43MDUwNDEsNTMuNDM5NTI5NyBDMTY2LjE5MzkzMiw1OC4yMzU4Njc4IDE3Ni40NTM1ODIsNjMuMzkzNzQ2MiAxODIuNjY1MDIxLDY5LjI4ODI4MzkgQzE4Ni4zNjA2NjksNzIuNzk1MzgzMSAxODguNzczOTcyLDc2LjY5OTg0MzQgMTg5LjY0NjM2NSw4MS4wMjE4MjA0IEMxOTAuNTY3MTc2LDg1LjU4MzY3NDYgMTg5LjY2OTMxMyw5MC4xNTkzMzE2IDE4Ny4xOTE1NDgsOTQuNDUxMjk2NyBDMTgzLjEwNTIxMSwxMDEuNTI5NjE0IDE3NS41OTE2NDMsMTA3LjExMjIxIDE2NC44ODc1ODcsMTExLjUzNDAzMSBDMTYwLjU4OTU1MiwxMTMuMzA5NTM5IDE1NS43MjY1NzksMTE0LjkxNzU1OSAxNTAuMjkzMjU5LDExNi4zNjM3NDggQzE1MC41NDExNzYsMTE2LjkyMjkyIDE1MC43MzM1MjEsMTE3LjUxNjc1OSAxNTAuODYyMTM4LDExOC4xMzk3NTggQzE1My45NTQ4ODYsMTMzLjEyMDUwNSAxNTQuNjE4NTk4LDE0NC42MTA2MSAxNTIuNjE5NDc3LDE1Mi45NTQwMjcgQzE1MS40MzA1MTMsMTU3LjkxNjIxNCAxNDkuMjU2ODAxLDE2MS45NjQyOTcgMTQ1Ljk1MTUwMywxNjQuODg0OTE5IEMxNDIuNDYxOTcsMTY3Ljk2ODMzNCAxMzguMDUwMDc3LDE2OS40ODEzNyAxMzMuMDkyODUzLDE2OS40ODEzNyBDMTI0LjkxNDkwOCwxNjkuNDgxMzcgMTE2LjMxNzg1LDE2NS43NTYwNjEgMTA3LjEzMDM4NSwxNTguNjc4OTU2IEMxMDMuMzQzMTA0LDE1NS43NjE2MTMgOTkuNDEwODY1NSwxNTIuMjM4ODM5IDk1LjMyNTQzMzcsMTQ4LjEwODYxOSBDOTQuOTA1MDc1MywxNDguNzY1NDc0IDk0LjM4ODk2ODEsMTQ5LjM3NjAxMSA5My43Nzg1Njk5LDE0OS45MTkzODUgQzgyLjM1OTAxOTgsMTYwLjA4NTAyOCA3Mi43NDQ3NTUsMTY2LjQwMTA3MyA2NC41MjE1OTE1LDE2OC44MzYzNDkgQzU5LjYzMjEwMDksMTcwLjI4NDM2NCA1NS4wNDE0NzM2LDE3MC40MjIzMTggNTAuODYxMDYzNiwxNjkuMDE2OTY5IEM0Ni40NDgzNjg2LDE2Ny41MzM1MzIgNDIuOTMyMzQwNCwxNjQuNDY3MDUxIDQwLjQ1MTY4NjIsMTYwLjE3MTg5MSBDMzYuMzU3NzExNiwxNTMuMDgzMzI3IDM1LjI3ODA4MjMsMTQzLjc2ODkwMiAzNi44MDQ0MDUzLDEzMi4yNjc5NzYgQzM3LjQ0OTAzOCwxMjcuNDEwNjM0IDM4LjU2NzYyLDEyMi4xMDM4OTggNDAuMTU3NTg5MSwxMTYuMzM5MDA5IEMzOS41MzYxMDQxLDExNi4yNzYxMDQgMzguOTEyMDc1NCwxMTYuMTQ0ODE2IDM4LjI5NDk1OTEsMTE1Ljk0MDUyOSBDMjMuODA2MDY4NCwxMTEuMTQ0MTkxIDEzLjU0NjQxODQsMTA1Ljk4NjMxMiA3LjMzNDk3ODkyLDEwMC4wOTE3NzUgQzMuNjM5MzMxMjEsOTYuNTg0Njc1NCAxLjIyNjAyNzUyLDkyLjY4MDIxNTEgMC4zNTM2MzUyMzUsODguMzU4MjM4MSBDLTAuNTY3MTc2MzMzLDgzLjc5NjM4MzkgMC4zMzA2ODY1ODEsNzkuMjIwNzI2OSAyLjgwODQ1MjM2LDc0LjkyODc2MTggQzYuODk0Nzg4NjMsNjcuODUwNDQ0MyAxNC40MDgzNTY1LDYyLjI2Nzg0ODEgMjUuMTEyNDEzMyw1Ny44NDYwMjczIEMyOS41Mzg1MTQzLDU2LjAxNzYxNTQgMzQuNTYzNzIwOCw1NC4zNjY4MjIgNDAuMTkzOTM5NCw1Mi44ODc0Njc0IEMzOS45OTMzMzkzLDUyLjM5NjkxNzEgMzkuODM0OTM3NCw1MS44ODExMjM1IDM5LjcyMzk3MTIsNTEuMzQzNjIzNyBaXCJcbiAgICAgICAgICAgICAgICBpZD1cIlBhdGhcIlxuICAgICAgICAgICAgICAgIGZpbGw9XCIjMDAyQzRCXCJcbiAgICAgICAgICAgICAgICBmaWxsUnVsZT1cIm5vbnplcm9cIlxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSg5NS4wMDAwMDAsIDg1LjAwMDAwMCkgc2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtOTUuMDAwMDAwLCAtODUuMDAwMDAwKSBcIlxuICAgICAgICAgICAgICA+PC9wYXRoPlxuICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgIGQ9XCJNOTEuNzM1LDExMCBMOTEuNzM1LDExNiBMODAuNjMyMjA1MSwxMTYgQzc4Ljg0MTEyODYsMTE2IDc3LjE4Njg2MTQsMTE1LjA0MTk3NSA3Ni4yOTU0NDg5LDExMy40ODg0ODMgTDc0LjI5NCwxMTAgTDkxLjczNSwxMTAgWiBNMTE2LjE4MSwxMTAgTDExNC4xODAyNTYsMTEzLjQ4ODQ4MyBDMTEzLjI4ODg0NCwxMTUuMDQxOTc1IDExMS42MzQ1NzYsMTE2IDEwOS44NDM1LDExNiBMOTguNzM1LDExNiBMOTguNzM1LDExMCBMMTE2LjE4MSwxMTAgWiBNOTEuNzM1LDk2IEw5MS43MzUsMTAzIEw3MC4yNzcsMTAzIEw2Ni4yNiw5NiBMOTEuNzM1LDk2IFogTTEyNC4yMTUsOTYgTDEyMC4xOTgsMTAzIEw5OC43MzUsMTAzIEw5OC43MzUsOTYgTDEyNC4yMTUsOTYgWiBNOTEuNzM1LDgyIEw5MS43MzUsODkgTDYyLjI0NCw4OSBMNjEuNjYzMjQzOCw4Ny45ODg0ODI2IEM2MC43Nzg5MTg3LDg2LjQ0NzM0MTcgNjAuNzc4OTE4Nyw4NC41NTI2NTgzIDYxLjY2MzI0MzgsODMuMDExNTE3NCBMNjIuMjQzLDgyIEw5MS43MzUsODIgWiBNMTI4LjIzMiw4MiBMMTI4LjgxMjQ2MSw4My4wMTE1MTc0IEMxMjkuNjk2Nzg2LDg0LjU1MjY1ODMgMTI5LjY5Njc4Niw4Ni40NDczNDE3IDEyOC44MTI0NjEsODcuOTg4NDgyNiBMMTI4LjIzMSw4OSBMOTguNzM1LDg5IEw5OC43MzUsODIgTDEyOC4yMzIsODIgWiBNOTEuNzM1LDY4IEw5MS43MzUsNzUgTDY2LjI2LDc1IEw3MC4yNzcsNjggTDkxLjczNSw2OCBaIE0xMjAuMTk4LDY4IEwxMjQuMjE1LDc1IEw5OC43MzUsNzUgTDk4LjczNSw2OCBMMTIwLjE5OCw2OCBaIE05MS43MzUsNTUgTDkxLjczNSw2MSBMNzQuMjkzLDYxIEw3Ni4yOTU0NDg5LDU3LjUxMTUxNzQgQzc3LjE4Njg2MTQsNTUuOTU4MDI1IDc4Ljg0MTEyODYsNTUgODAuNjMyMjA1MSw1NSBMOTEuNzM1LDU1IFogTTEwOS44NDM1LDU1IEMxMTEuNjM0NTc2LDU1IDExMy4yODg4NDQsNTUuOTU4MDI1IDExNC4xODAyNTYsNTcuNTExNTE3NCBMMTE2LjE4Miw2MSBMOTguNzM1LDYxIEw5OC43MzUsNTUgTDEwOS44NDM1LDU1IFpcIlxuICAgICAgICAgICAgICAgIGlkPVwiUG9seWdvbi0yXCJcbiAgICAgICAgICAgICAgICBmaWxsPVwiI0ZGRDk0Q1wiXG4gICAgICAgICAgICAgID48L3BhdGg+XG4gICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgZD1cIk01NC44NjAxNzI5LDk4LjM1Nzc1NzggQzU2LjE3MTUyMjQsOTcuNjA4Mjg1NiA1Ny44MzYwMjQ2LDk4LjA3NDYwMTQgNTguNTc3OTQyNCw5OS4zOTkzMDM0IEw1OC41Nzc5NDI0LDk5LjM5OTMwMzQgTDU5LjA1MjU4NDMsMTAwLjI0MzUyIEM2Mi44NTYzMzkyLDEwNi45ODI5OTMgNjYuODE5MDExNiwxMTMuMzgwMTc2IDcwLjk0MDYwMTYsMTE5LjQzNTA2OCBDNzUuODA3ODgwOCwxMjYuNTg1NDI3IDgxLjI4MTg0LDEzMy44MjQxMSA4Ny4zNjI0NzkyLDE0MS4xNTExMTUgQzg4LjMxNjg3NzgsMTQyLjMwMTE0IDg4LjE4NDk0MzcsMTQ0LjAxMTE3NiA4Ny4wNjU2ODYsMTQ0Ljk5NzkzNyBMODcuMDY1Njg2LDE0NC45OTc5MzcgTDg2LjQ1NDIwODUsMTQ1LjUzNDYyNSBDNjYuMzQ2NTM4OSwxNjMuMTAzMzE0IDUzLjI3NzgxODgsMTY2LjYxMjU1MiA0Ny4yNDgwNDgyLDE1Ni4wNjIzNDEgQzQxLjM1MDA2NTIsMTQ1Ljc0MjcxNyA0My40ODQ0OTE1LDEyNi45ODI4ODggNTMuNjUxMzI3NCw5OS43ODI4NTI2IEM1My44NzY4MTgsOTkuMTc5NTgyMSA1NC4zMDQ1ODYxLDk4LjY3NTI5MSA1NC44NjAxNzI5LDk4LjM1Nzc1NzggWiBNMTQwLjUzNDE3NywxMTkuMDQxNTA0IEMxNDEuOTg2MTMxLDExOC43ODUxNzcgMTQzLjM3NTQ5NiwxMTkuNzQyMTM4IDE0My42NTk2MywxMjEuMTk0MjQyIEwxNDMuNjU5NjMsMTIxLjE5NDI0MiBMMTQzLjgxMjgxNSwxMjEuOTg2Mzc2IEMxNDguNzgyMzY1LDE0Ny45OTU0NTkgMTQ1LjI4MzM0OCwxNjEgMTMzLjMxNTc2NCwxNjEgQzEyMS42MDk3NDUsMTYxIDEwNi43MDg3MjQsMTQ5LjkwOTAwNyA4OC42MTI3MDE4LDEyNy43MjcwMjIgQzg4LjIxMTM0OTUsMTI3LjIzNTA0NyA4Ny45OTQ1NzIzLDEyNi42MTczNzEgODgsMTI1Ljk4MTUwOSBDODguMDEzMTU4LDEyNC40ODA2ODYgODkuMjM1Nzg1NCwxMjMuMjc0NjUxIDkwLjczMDkxOCwxMjMuMjg3NzU2IEw5MC43MzA5MTgsMTIzLjI4Nzc1NiBMOTEuNjg0NjU0NCwxMjMuMjk0NTMxIEM5OS4zMDU2OTc5LDEyMy4zMzU5OTQgMTA2LjcxNDM4NywxMjMuMDcxNTkxIDExMy45MTA3MjMsMTIyLjUwMTMyMyBDMTIyLjQwOTAzOSwxMjEuODI3ODggMTMxLjI4MzUyMywxMjAuNjc0NjA3IDE0MC41MzQxNzcsMTE5LjA0MTUwNCBaIE0xNDcuNDA4NzI2LDYzLjgxMTk2NjMgQzE0Ny45MzIxMzksNjIuNDAyNjkwMyAxNDkuNTA4Mzg2LDYxLjY2MzQ1MzcgMTUwLjk1NDU4MSw2Mi4xNDkwMTIgTDE1MC45NTQ1ODEsNjIuMTQ5MDEyIEwxNTEuNzQyNTUyLDYyLjQxNTQ4NTQgQzE3Ny41ODM3NjMsNzEuMjE3OTIyIDE4Ny40MDIzNTYsODAuODkxNjgwNSAxODEuMTk4MzMyLDkxLjQzNjc2MDkgQzE3NS4xMjk5MDQsMTAxLjc1MTM2NiAxNTcuNDg0MzQ3LDEwOS4yNjAzMzkgMTI4LjI2MTY2LDExMy45NjM2NzggQzEyNy42MTM1MjksMTE0LjA2Nzk5NCAxMjYuOTQ4NjQzLDExMy45NDU5NjkgMTI2LjM4MjczNSwxMTMuNjE4ODQzIEMxMjUuMDQ3MDI1LDExMi44NDY3MjkgMTI0LjYwMjA0NiwxMTEuMTU4MjE0IDEyNS4zODg4NDgsMTA5Ljg0NzQzOCBMMTI1LjM4ODg0OCwxMDkuODQ3NDM4IEwxMjUuODg5MzI4LDEwOS4wMTA1IEMxMjkuODc3MTgzLDEwMi4zMTYzMyAxMzMuNDgxMzU4LDk1LjY1NDI2MjEgMTM2LjcwMTg1NCw4OS4wMjQyOTU3IEMxNDAuNTA1MDEsODEuMTk0ODE3OSAxNDQuMDczOTY3LDcyLjc5MDcwODEgMTQ3LjQwODcyNiw2My44MTE5NjYzIFogTTYxLjczODMzOTgsNTYuMDM2MzIxOCBDNjIuMzg2NDcwOCw1NS45MzIwMDYzIDYzLjA1MTM1NjUsNTYuMDU0MDMxNSA2My42MTcyNjQ2LDU2LjM4MTE1NzMgQzY0Ljk1Mjk3NTQsNTcuMTUzMjcxIDY1LjM5Nzk1MzgsNTguODQxNzg2MiA2NC42MTExNTE3LDYwLjE1MjU2MTUgTDY0LjYxMTE1MTcsNjAuMTUyNTYxNSBMNjQuMTEwNjcxOCw2MC45ODk1MDAxIEM2MC4xMjI4MTY4LDY3LjY4MzY2OTkgNTYuNTE4NjQxNiw3NC4zNDU3Mzc5IDUzLjI5ODE0NjIsODAuOTc1NzA0MyBDNDkuNDk0OTksODguODA1MTgyMSA0NS45MjYwMzI4LDk3LjIwOTI5MTkgNDIuNTkxMjc0NCwxMDYuMTg4MDM0IEM0Mi4wNjc4NjA4LDEwNy41OTczMSA0MC40OTE2MTQyLDEwOC4zMzY1NDYgMzkuMDQ1NDE5LDEwNy44NTA5ODggTDM5LjA0NTQxOSwxMDcuODUwOTg4IEwzOC4yNTc0NDc1LDEwNy41ODQ1MTUgQzEyLjQxNjIzNzIsOTguNzgyMDc4IDIuNTk3NjQzOTgsODkuMTA4MzE5NSA4LjgwMTY2Nzg2LDc4LjU2MzIzOTEgQzE0Ljg3MDA5NTcsNjguMjQ4NjMzNSAzMi41MTU2NTMsNjAuNzM5NjYxMSA2MS43MzgzMzk4LDU2LjAzNjMyMTggWiBNMTAzLjU0NTc5MiwyNC40NjUzNzQ2IEMxMjMuNjUzNDYxLDYuODk2Njg2NDEgMTM2LjcyMjE4MSwzLjM4NzQ0Nzc4IDE0Mi43NTE5NTIsMTMuOTM3NjU4NyBDMTQ4LjY0OTkzNSwyNC4yNTcyODI2IDE0Ni41MTU1MDgsNDMuMDE3MTEyMiAxMzYuMzQ4NjczLDcwLjIxNzE0NzQgQzEzNi4xMjMxODIsNzAuODIwNDE3OSAxMzUuNjk1NDE0LDcxLjMyNDcwOSAxMzUuMTM5ODI3LDcxLjY0MjI0MjIgQzEzMy44Mjg0NzgsNzIuMzkxNzE0NCAxMzIuMTYzOTc1LDcxLjkyNTM5ODYgMTMxLjQyMjA1OCw3MC42MDA2OTY2IEwxMzEuNDIyMDU4LDcwLjYwMDY5NjYgTDEzMC45NDc0MTYsNjkuNzU2NDc5OCBDMTI3LjE0MzY2MSw2My4wMTcwMDY1IDEyMy4xODA5ODgsNTYuNjE5ODIzOSAxMTkuMDU5Mzk4LDUwLjU2NDkzMiBDMTE0LjE5MjExOSw0My40MTQ1NzI3IDEwOC43MTgxNiwzNi4xNzU4OTAzIDEwMi42Mzc1MjEsMjguODQ4ODg0NyBDMTAxLjY4MzEyMiwyNy42OTg4NjAyIDEwMS44MTUwNTYsMjUuOTg4ODI0MyAxMDIuOTM0MzE0LDI1LjAwMjA2MjkgTDEwMi45MzQzMTQsMjUuMDAyMDYyOSBaIE01Ny42ODQyMzYxLDggQzY5LjM5MDI1NTEsOCA4NC4yOTEyNzU4LDE5LjA5MDk5MjYgMTAyLjM4NzI5OCw0MS4yNzI5Nzc3IEMxMDIuNzg4NjUxLDQxLjc2NDk1MjcgMTAzLjAwNTQyOCw0Mi4zODI2Mjg4IDEwMyw0My4wMTg0OTExIEMxMDIuOTg2ODQyLDQ0LjUxOTMxNDQgMTAxLjc2NDIxNSw0NS43MjUzNDg5IDEwMC4yNjkwODIsNDUuNzEyMjQ0NSBMMTAwLjI2OTA4Miw0NS43MTIyNDQ1IEw5OS4zMTUzNDU2LDQ1LjcwNTQ2ODkgQzkxLjY5NDMwMjEsNDUuNjY0MDA2MyA4NC4yODU2MTI2LDQ1LjkyODQwOTEgNzcuMDg5Mjc3Miw0Ni40OTg2NzczIEM2OC41OTA5NjEyLDQ3LjE3MjEyIDU5LjcxNjQ3NjcsNDguMzI1MzkzIDUwLjQ2NTgyMzUsNDkuOTU4NDk2MiBDNDkuMDEzODY5MSw1MC4yMTQ4MjMxIDQ3LjYyNDUwNDQsNDkuMjU3ODYxOCA0Ny4zNDAzNjk3LDQ3LjgwNTc1OCBMNDcuMzQwMzY5Nyw0Ny44MDU3NTggTDQ3LjE4NzE4NDYsNDcuMDEzNjIzNSBDNDIuMjE3NjM0NywyMS4wMDQ1NDEyIDQ1LjcxNjY1MTksOCA1Ny42ODQyMzYxLDggWlwiXG4gICAgICAgICAgICAgICAgaWQ9XCJDb21iaW5lZC1TaGFwZVwiXG4gICAgICAgICAgICAgICAgZmlsbD1cIiNGRjQxNTRcIlxuICAgICAgICAgICAgICA+PC9wYXRoPlxuICAgICAgICAgICAgPC9nPlxuICAgICAgICAgIDwvZz5cbiAgICAgICAgPC9nPlxuICAgICAgPC9nPlxuICAgIDwvc3ZnPlxuICApXG59XG4iLCAiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgVGFibGUgfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtdGFibGUnXG5cbmltcG9ydCB1c2VMb2NhbFN0b3JhZ2UgZnJvbSAnLi91c2VMb2NhbFN0b3JhZ2UnXG5pbXBvcnQgeyB1c2VJc01vdW50ZWQgfSBmcm9tICcuL3V0aWxzJ1xuXG5pbXBvcnQgeyBQYW5lbCwgQnV0dG9uIH0gZnJvbSAnLi9zdHlsZWRDb21wb25lbnRzJ1xuaW1wb3J0IHsgVGhlbWVQcm92aWRlciwgZGVmYXVsdFRoZW1lIGFzIHRoZW1lIH0gZnJvbSAnLi90aGVtZSdcbi8vIGltcG9ydCB7IGdldFF1ZXJ5U3RhdHVzTGFiZWwsIGdldFF1ZXJ5U3RhdHVzQ29sb3IgfSBmcm9tICcuL3V0aWxzJ1xuaW1wb3J0IEV4cGxvcmVyIGZyb20gJy4vRXhwbG9yZXInXG5pbXBvcnQgTG9nbyBmcm9tICcuL0xvZ28nXG5cbmludGVyZmFjZSBEZXZ0b29sc09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHJlYWN0IHRhYmxlIHRvIGF0dGFjaCB0aGUgZGV2dG9vbHMgdG8uXG4gICAqL1xuICB0YWJsZTogYW55XG4gIC8qKlxuICAgKiBTZXQgdGhpcyB0cnVlIGlmIHlvdSB3YW50IHRoZSBkZXYgdG9vbHMgdG8gZGVmYXVsdCB0byBiZWluZyBvcGVuXG4gICAqL1xuICBpbml0aWFsSXNPcGVuPzogYm9vbGVhblxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gYWRkIHByb3BzIHRvIHRoZSBwYW5lbC4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gYWRkIGNsYXNzTmFtZSwgc3R5bGUgKG1lcmdlIGFuZCBvdmVycmlkZSBkZWZhdWx0IHN0eWxlKSwgZXRjLlxuICAgKi9cbiAgcGFuZWxQcm9wcz86IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFxuICAgIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PixcbiAgICBIVE1MRGl2RWxlbWVudFxuICA+XG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBhZGQgcHJvcHMgdG8gdGhlIGNsb3NlIGJ1dHRvbi4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gYWRkIGNsYXNzTmFtZSwgc3R5bGUgKG1lcmdlIGFuZCBvdmVycmlkZSBkZWZhdWx0IHN0eWxlKSwgb25DbGljayAoZXh0ZW5kIGRlZmF1bHQgaGFuZGxlciksIGV0Yy5cbiAgICovXG4gIGNsb3NlQnV0dG9uUHJvcHM/OiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxcbiAgICBSZWFjdC5CdXR0b25IVE1MQXR0cmlidXRlczxIVE1MQnV0dG9uRWxlbWVudD4sXG4gICAgSFRNTEJ1dHRvbkVsZW1lbnRcbiAgPlxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gYWRkIHByb3BzIHRvIHRoZSB0b2dnbGUgYnV0dG9uLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBhZGQgY2xhc3NOYW1lLCBzdHlsZSAobWVyZ2UgYW5kIG92ZXJyaWRlIGRlZmF1bHQgc3R5bGUpLCBvbkNsaWNrIChleHRlbmQgZGVmYXVsdCBoYW5kbGVyKSwgZXRjLlxuICAgKi9cbiAgdG9nZ2xlQnV0dG9uUHJvcHM/OiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxcbiAgICBSZWFjdC5CdXR0b25IVE1MQXR0cmlidXRlczxIVE1MQnV0dG9uRWxlbWVudD4sXG4gICAgSFRNTEJ1dHRvbkVsZW1lbnRcbiAgPlxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gcmVuZGVyIHRoZSBkZXZ0b29scyBpbnNpZGUgYSBkaWZmZXJlbnQgdHlwZSBvZiBjb250YWluZXIgZWxlbWVudCBmb3IgYTExeSBwdXJwb3Nlcy5cbiAgICogQW55IHN0cmluZyB3aGljaCBjb3JyZXNwb25kcyB0byBhIHZhbGlkIGludHJpbnNpYyBKU1ggZWxlbWVudCBpcyBhbGxvd2VkLlxuICAgKiBEZWZhdWx0cyB0byAnZm9vdGVyJy5cbiAgICovXG4gIGNvbnRhaW5lckVsZW1lbnQ/OiBzdHJpbmcgfCBhbnlcbn1cblxuaW50ZXJmYWNlIERldnRvb2xzUGFuZWxPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSByZWFjdCB0YWJsZSB0byBhdHRhY2ggdGhlIGRldnRvb2xzIHRvLlxuICAgKi9cbiAgdGFibGU6IGFueVxuICAvKipcbiAgICogVGhlIHN0YW5kYXJkIFJlYWN0IHN0eWxlIG9iamVjdCB1c2VkIHRvIHN0eWxlIGEgY29tcG9uZW50IHdpdGggaW5saW5lIHN0eWxlc1xuICAgKi9cbiAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzXG4gIC8qKlxuICAgKiBUaGUgc3RhbmRhcmQgUmVhY3QgY2xhc3NOYW1lIHByb3BlcnR5IHVzZWQgdG8gc3R5bGUgYSBjb21wb25lbnQgd2l0aCBjbGFzc2VzXG4gICAqL1xuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIEEgYm9vbGVhbiB2YXJpYWJsZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHBhbmVsIGlzIG9wZW4gb3IgY2xvc2VkXG4gICAqL1xuICBpc09wZW4/OiBib29sZWFuXG4gIC8qKlxuICAgKiBBIGZ1bmN0aW9uIHRoYXQgdG9nZ2xlcyB0aGUgb3BlbiBhbmQgY2xvc2Ugc3RhdGUgb2YgdGhlIHBhbmVsXG4gICAqL1xuICBzZXRJc09wZW46IChpc09wZW46IGJvb2xlYW4pID0+IHZvaWRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJlYWN0VGFibGVEZXZ0b29scyh7XG4gIGluaXRpYWxJc09wZW4sXG4gIHRhYmxlLFxuICBwYW5lbFByb3BzID0ge30sXG4gIHRvZ2dsZUJ1dHRvblByb3BzID0ge30sXG4gIGNvbnRhaW5lckVsZW1lbnQ6IENvbnRhaW5lciA9ICdmb290ZXInLFxufTogRGV2dG9vbHNPcHRpb25zKTogUmVhY3QuUmVhY3RFbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IHJvb3RSZWYgPSBSZWFjdC51c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHBhbmVsUmVmID0gUmVhY3QudXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gdXNlTG9jYWxTdG9yYWdlKFxuICAgICdyZWFjdFRhYmxlRGV2dG9vbHNPcGVuJyxcbiAgICBpbml0aWFsSXNPcGVuXG4gIClcbiAgY29uc3QgaXNNb3VudGVkID0gdXNlSXNNb3VudGVkKClcblxuICBjb25zdCB7IHN0eWxlOiBwYW5lbFN0eWxlID0ge30sIC4uLm90aGVyUGFuZWxQcm9wcyB9ID0gcGFuZWxQcm9wc1xuXG4gIGNvbnN0IHtcbiAgICBzdHlsZTogdG9nZ2xlQnV0dG9uU3R5bGUgPSB7fSxcbiAgICBvbkNsaWNrOiBvblRvZ2dsZUNsaWNrLFxuICAgIC4uLm90aGVyVG9nZ2xlQnV0dG9uUHJvcHNcbiAgfSA9IHRvZ2dsZUJ1dHRvblByb3BzXG5cbiAgLy8gRG8gbm90IHJlbmRlciBvbiB0aGUgc2VydmVyXG4gIGlmICghaXNNb3VudGVkKCkpIHJldHVybiBudWxsXG5cbiAgcmV0dXJuIChcbiAgICA8Q29udGFpbmVyIHJlZj17cm9vdFJlZn0gY2xhc3NOYW1lPVwiUmVhY3RUYWJsZURldnRvb2xzXCI+XG4gICAgICA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9PlxuICAgICAgICB7IWlzT3BlbiA/IChcbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIHsuLi5vdGhlclRvZ2dsZUJ1dHRvblByb3BzfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIk9wZW4gUmVhY3QgVGFibGUgRGV2dG9vbHNcIlxuICAgICAgICAgICAgb25DbGljaz17ZSA9PiB7XG4gICAgICAgICAgICAgIHNldElzT3Blbih0cnVlKVxuICAgICAgICAgICAgICBvblRvZ2dsZUNsaWNrICYmIG9uVG9nZ2xlQ2xpY2soZSlcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAnbm9uZScsXG4gICAgICAgICAgICAgIGJvcmRlcjogMCxcbiAgICAgICAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgICAgICAgbWFyZ2luOiAnLjVyZW0nLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnaW5saW5lLWZsZXgnLFxuICAgICAgICAgICAgICBmb250U2l6ZTogJzEuNWVtJyxcbiAgICAgICAgICAgICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgICAgICAgICAgIHdpZHRoOiAnZml0LWNvbnRlbnQnLFxuICAgICAgICAgICAgICAuLi50b2dnbGVCdXR0b25TdHlsZSxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPExvZ28gYXJpYS1oaWRkZW4gLz5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8UmVhY3RUYWJsZURldnRvb2xzUGFuZWxcbiAgICAgICAgICAgIHJlZj17cGFuZWxSZWYgYXMgYW55fVxuICAgICAgICAgICAgey4uLm90aGVyUGFuZWxQcm9wc31cbiAgICAgICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgICAgIGlzT3Blbj17aXNPcGVufVxuICAgICAgICAgICAgc2V0SXNPcGVuPXtzZXRJc09wZW59XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBtYXhIZWlnaHQ6ICc4MHZoJyxcbiAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgLi4ucGFuZWxTdHlsZSxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvVGhlbWVQcm92aWRlcj5cbiAgICA8L0NvbnRhaW5lcj5cbiAgKVxufVxuXG5leHBvcnQgY29uc3QgUmVhY3RUYWJsZURldnRvb2xzUGFuZWwgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MRGl2RWxlbWVudCxcbiAgRGV2dG9vbHNQYW5lbE9wdGlvbnNcbj4oZnVuY3Rpb24gUmVhY3RUYWJsZURldnRvb2xzUGFuZWwocHJvcHMsIHJlZik6IFJlYWN0LlJlYWN0RWxlbWVudCB7XG4gIGNvbnN0IHtcbiAgICB0YWJsZSxcbiAgICBpc09wZW4gPSB0cnVlLFxuICAgIHNldElzT3BlbixcbiAgICAuLi5wYW5lbFByb3BzXG4gIH0gPSBwcm9wcyBhcyBEZXZ0b29sc1BhbmVsT3B0aW9ucyAmIHtcbiAgICB0YWJsZTogVGFibGU8YW55PlxuICB9XG5cbiAgLy8gY29uc3QgW2FjdGl2ZU1hdGNoSWQsIHNldEFjdGl2ZVJvdXRlSWRdID0gdXNlTG9jYWxTdG9yYWdlKFxuICAvLyAgICdyZWFjdFRhYmxlRGV2dG9vbHNBY3RpdmVSb3V0ZUlkJyxcbiAgLy8gICAnJyxcbiAgLy8gKVxuXG4gIHJldHVybiAoXG4gICAgPFRoZW1lUHJvdmlkZXIgdGhlbWU9e3RoZW1lfT5cbiAgICAgIDxQYW5lbCByZWY9e3JlZn0gY2xhc3NOYW1lPVwiUmVhY3RUYWJsZURldnRvb2xzUGFuZWxcIiB7Li4ucGFuZWxQcm9wc30+XG4gICAgICAgIDxzdHlsZVxuICAgICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7XG4gICAgICAgICAgICBfX2h0bWw6IGBcbiAgICAgICAgICAgIC5SZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCAqIHtcbiAgICAgICAgICAgICAgc2Nyb2xsYmFyLWNvbG9yOiAke3RoZW1lLmJhY2tncm91bmRBbHR9ICR7dGhlbWUuZ3JheX07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5SZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCAqOjotd2Via2l0LXNjcm9sbGJhciwgLlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsIHNjcm9sbGJhciB7XG4gICAgICAgICAgICAgIHdpZHRoOiAxZW07XG4gICAgICAgICAgICAgIGhlaWdodDogMWVtO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuUmVhY3RUYWJsZURldnRvb2xzUGFuZWwgKjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2ssIC5SZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCBzY3JvbGxiYXItdHJhY2sge1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLmJhY2tncm91bmRBbHR9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuUmVhY3RUYWJsZURldnRvb2xzUGFuZWwgKjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIsIC5SZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCBzY3JvbGxiYXItdGh1bWIge1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLmdyYXl9O1xuICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAuNWVtO1xuICAgICAgICAgICAgICBib3JkZXI6IDNweCBzb2xpZCAke3RoZW1lLmJhY2tncm91bmRBbHR9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGAsXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICBmbGV4OiAnMSAxIDUwMHB4JyxcbiAgICAgICAgICAgIG1pbkhlaWdodDogJzQwJScsXG4gICAgICAgICAgICBtYXhIZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgIG92ZXJmbG93OiAnYXV0bycsXG4gICAgICAgICAgICBib3JkZXJSaWdodDogYDFweCBzb2xpZCAke3RoZW1lLmdyYXlBbHR9YCxcbiAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBwYWRkaW5nOiAnLjVlbScsXG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6IHRoZW1lLmJhY2tncm91bmRBbHQsXG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxMb2dvXG4gICAgICAgICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQ6ICcuNWVtJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNPcGVuKGZhbHNlKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQ6ICdhdXRvJyxcbiAgICAgICAgICAgICAgICBmb250U2l6ZTogJ2NsYW1wKC44cmVtLCAydncsIDEuM3JlbSknLFxuICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6ICdib2xkJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgUmVhY3QgVGFibGV7JyAnfVxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiAxMDAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIERldnRvb2xzXG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2lzT3BlbiA/IChcbiAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbG9zZSBSZWFjdCBUYWJsZSBEZXZ0b29sc1wiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHNldElzT3BlbihmYWxzZSlcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgQ2xvc2VcbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgIGZsZXhXcmFwOiAnd3JhcCcsXG4gICAgICAgICAgICAgIG92ZXJmbG93WTogJ2F1dG8nLFxuICAgICAgICAgICAgICBmbGV4OiAnMScsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBmbGV4OiAnMSAxIGF1dG8nLFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6ICcuNWVtJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJJbnN0YW5jZVwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnLjVyZW0nLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxFeHBsb3JlclxuICAgICAgICAgICAgICAgIGxhYmVsPVwiU3RhdGVcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXt0YWJsZS5nZXRTdGF0ZSgpfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnLjVyZW0nLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxFeHBsb3JlclxuICAgICAgICAgICAgICAgIGxhYmVsPVwiQ29sdW1uc1wiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldEFsbENvbHVtbnMoKX1cbiAgICAgICAgICAgICAgICBkZWZhdWx0RXhwYW5kZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgZmxleDogJzEgMSBhdXRvJyxcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAnLjVlbScsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxFeHBsb3JlclxuICAgICAgICAgICAgICAgIGxhYmVsPVwiQ29yZSBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldENvcmVSb3dNb2RlbCgpfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxFeHBsb3JlclxuICAgICAgICAgICAgICAgIGxhYmVsPVwiRmlsdGVyZWQgTW9kZWxcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXt0YWJsZS5nZXRGaWx0ZXJlZFJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJTb3J0ZWQgTW9kZWxcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXt0YWJsZS5nZXRTb3J0ZWRSb3dNb2RlbCgpfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxFeHBsb3JlclxuICAgICAgICAgICAgICAgIGxhYmVsPVwiR3JvdXBlZCBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldEdyb3VwZWRSb3dNb2RlbCgpfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxFeHBsb3JlclxuICAgICAgICAgICAgICAgIGxhYmVsPVwiRXhwYW5kZWQgTW9kZWxcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXt0YWJsZS5nZXRFeHBhbmRlZFJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgey8qIDxkaXZcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBmbGV4OiAnMSAxIGF1dG8nLFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6ICcuNWVtJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJSb3cgTW9kZWxcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXt0YWJsZS5nZXRSb3dNb2RlbCgpfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj4gKi99XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9QYW5lbD5cbiAgICA8L1RoZW1lUHJvdmlkZXI+XG4gIClcbn0pXG4iLCAiaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuZnVuY3Rpb24gU2tlbGV0b24oeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50Pikge1xuICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e2NuKFwicHMtYW5pbWF0ZS1wdWxzZSBwcy1yb3VuZGVkLW1kIHBzLWJnLWZvcmVncm91bmQvMTBcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPjtcbn1cblxuZXhwb3J0IHsgU2tlbGV0b24gfTtcbiIsICJpbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFHcmlkTG9hZGluZ0JhclByb3BzIHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGF0YUdyaWRMb2FkaW5nQmFyKHsgY2xhc3NOYW1lIH06IERhdGFHcmlkTG9hZGluZ0JhclByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgZGF0YS1sb2FkaW5nLWJhclxuICAgICAgY2xhc3NOYW1lPXtjbihcInBzLWgtWzJweF0gcHMtdy1mdWxsIHBzLW92ZXJmbG93LWhpZGRlbiBwcy1iZy10YWJsZS1ib3JkZXIgcHMtei01MFwiLCBjbGFzc05hbWUpfVxuICAgID5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtYW5pbWF0ZS1pbmRldGVybWluYXRlLWJhciBwcy1oLWZ1bGwgcHMtdy0xLzMgcHMtcm91bmRlZC1yLWZ1bGwgcHMtYmctcHJpbWFyeVwiIC8+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgVGFibGUgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBDaGV2cm9uTGVmdCwgQ2hldnJvblJpZ2h0LCBDaGV2cm9uc0xlZnQsIENoZXZyb25zUmlnaHQgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5cbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCJAL3VpL2NvbXBvbmVudHMvdWkvYnV0dG9uXCI7XG5pbXBvcnQgeyBJbnB1dCB9IGZyb20gXCJAL3VpL2NvbXBvbmVudHMvdWkvaW5wdXRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBEYXRhR3JpZFBhZ2luYXRpb25Qcm9wcyB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgdGFibGU6IFRhYmxlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgdmFyaWFudD86IFwiYmFzaWNcIiB8IFwibnVtZXJpY1wiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGF0YUdyaWRQYWdpbmF0aW9uKHByb3BzOiBEYXRhR3JpZFBhZ2luYXRpb25Qcm9wcykge1xuICBjb25zdCB7IHRhYmxlLCB2YXJpYW50ID0gXCJiYXNpY1wiIH0gPSBwcm9wcztcblxuICBjb25zdCB7IHBhZ2VJbmRleCB9ID0gdGFibGUuZ2V0U3RhdGUoKS5wYWdpbmF0aW9uO1xuICBjb25zdCBwYWdlQ291bnQgPSB0YWJsZS5nZXRQYWdlQ291bnQoKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtcm91bmRlZC1iLWxnIHBzLW92ZXJmbG93LWNsaXAgcHMtc3RpY2t5IHBzLWJvdHRvbS0wIHBzLWxlZnQtMCBwcy1ib3JkZXItdC0wIHctZnVsbCBwcy16LTIwIHBzLXAtMFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtc3BhY2UteC0yIHBzLXB5LTIgcHMtcHgtMiBwcy1ib3JkZXItdCBwcy1ib3JkZXItdGFibGUtYm9yZGVyIHBzLWJhY2tkcm9wLWJsdXItc20gcHMtYmctdGFibGUtaGVhZC85MFwiPlxuICAgICAgICB7dmFyaWFudCA9PT0gXCJiYXNpY1wiID8gKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtc3BhY2UteC0yXCI+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtaC05XCJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGFibGUucHJldmlvdXNQYWdlKCl9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXshdGFibGUuZ2V0Q2FuUHJldmlvdXNQYWdlKCl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFByZXZpb3VzXG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVcIlxuICAgICAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy1oLTlcIlxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0YWJsZS5uZXh0UGFnZSgpfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17IXRhYmxlLmdldENhbk5leHRQYWdlKCl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIE5leHRcbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtc3BhY2UteC0yXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLXNwYWNlLXgtMlwiPlxuICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lXCIgb25DbGljaz17KCkgPT4gdGFibGUuc2V0UGFnZUluZGV4KDApfSBkaXNhYmxlZD17IXRhYmxlLmdldENhblByZXZpb3VzUGFnZSgpfT5cbiAgICAgICAgICAgICAgICA8Q2hldnJvbnNMZWZ0IGNsYXNzTmFtZT1cInBzLXctNCBwcy1oLTRcIiAvPlxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIG9uQ2xpY2s9eygpID0+IHRhYmxlLnByZXZpb3VzUGFnZSgpfSBkaXNhYmxlZD17IXRhYmxlLmdldENhblByZXZpb3VzUGFnZSgpfT5cbiAgICAgICAgICAgICAgICA8Q2hldnJvbkxlZnQgY2xhc3NOYW1lPVwicHMtdy00IHBzLWgtNFwiIC8+XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0xIHBzLXRleHQteHMgcHMtZm9udC1tZWRpdW1cIj5cbiAgICAgICAgICAgICAgICBQYWdlXG4gICAgICAgICAgICAgICAgPElucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgIG1pbj17MX1cbiAgICAgICAgICAgICAgICAgIG1heD17cGFnZUNvdW50fVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e3BhZ2VJbmRleCArIDF9XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy13LTE2XCJcbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYWdlSW5kZXggPSBlLnRhcmdldC52YWx1ZSA/IE51bWJlcihlLnRhcmdldC52YWx1ZSkgLSAxIDogMDtcbiAgICAgICAgICAgICAgICAgICAgdGFibGUuc2V0UGFnZUluZGV4KHBhZ2VJbmRleCk7XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtc2hyaW5rLTAgcHMtdy1tYXhcIj5vZiB7cGFnZUNvdW50fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBvbkNsaWNrPXsoKSA9PiB0YWJsZS5uZXh0UGFnZSgpfSBkaXNhYmxlZD17IXRhYmxlLmdldENhbk5leHRQYWdlKCl9PlxuICAgICAgICAgICAgICAgIDxDaGV2cm9uUmlnaHQgY2xhc3NOYW1lPVwicHMtdy00IHBzLWgtNFwiIC8+XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVcIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRhYmxlLnNldFBhZ2VJbmRleChwYWdlQ291bnQgLSAxKX1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17IXRhYmxlLmdldENhbk5leHRQYWdlKCl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Q2hldnJvbnNSaWdodCBjbGFzc05hbWU9XCJwcy13LTQgcHMtaC00XCIgLz5cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuIiwgImltcG9ydCB7IENvbHVtbiB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB0eXBlIHsgQ1NTUHJvcGVydGllcyB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyhjb2x1bW46IENvbHVtbjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4sIGtpbmQ6IFwiaGVhZGVyXCIgfCBcImNlbGxcIikge1xuICBjb25zdCBpc1Bpbm5lZCA9IGNvbHVtbi5nZXRJc1Bpbm5lZCgpO1xuICBjb25zdCBpc0xlZnRQaW5uZWQgPSBpc1Bpbm5lZCA9PT0gXCJsZWZ0XCI7XG4gIGNvbnN0IGlzUmlnaHRQaW5uZWQgPSBpc1Bpbm5lZCA9PT0gXCJyaWdodFwiO1xuXG4gIHJldHVybiB7XG4gICAgY2xhc3NOYW1lOiBjbihcbiAgICAgIGtpbmQgPT09IFwiY2VsbFwiICYmIFwiZ3JvdXAtb2RkOnBzLWJnLW5ldXRyYWwtNTAgZ3JvdXAtZXZlbjpwcy1iZy13aGl0ZSBncm91cC1ob3Zlcjpwcy1iZy1uZXV0cmFsLTEwMFwiLFxuICAgICAga2luZCA9PT0gXCJoZWFkZXJcIiAmJiBcInBzLXNlbGVjdC1ub25lIHBzLXRvdWNoLW5vbmUgcHMtc3RpY2t5IHBzLXRvcC0wIHBzLWJnLXRhYmxlLWhlYWRcIixcbiAgICAgIFwicHMtZ3JvdXAgcHMtYm9yZGVyLXIgcHMtYm9yZGVyLWIgcHMtYm9yZGVyLXRhYmxlLWJvcmRlclwiLFxuICAgICAgXCJwcy1vdmVyZmxvdy1oaWRkZW4gcHMtd2hpdGVzcGFjZS1ub3dyYXAgcHMtdGV4dC1lbGxpcHNpc1wiLFxuICAgICAgaXNQaW5uZWQgJiYgXCJwcy1zdGlja3lcIixcbiAgICAgIChpc0xlZnRQaW5uZWQgfHwgaXNSaWdodFBpbm5lZCkgJiYga2luZCA9PT0gXCJoZWFkZXJcIiAmJiBcInBzLXotMjBcIixcbiAgICAgIChpc0xlZnRQaW5uZWQgfHwgaXNSaWdodFBpbm5lZCkgJiYga2luZCA9PT0gXCJjZWxsXCIgJiYgXCJwcy16LTBcIixcbiAgICApLFxuICAgIHN0eWxlOiB7XG4gICAgICBtaW5XaWR0aDogYCR7Y29sdW1uLmdldFNpemUoKX1weGAsXG4gICAgICB3aWR0aDogYCR7Y29sdW1uLmdldFNpemUoKX1weGAsXG4gICAgICBsZWZ0OiBpc0xlZnRQaW5uZWQgPyBgJHtjb2x1bW4uZ2V0U3RhcnQoXCJsZWZ0XCIpfXB4YCA6IHVuZGVmaW5lZCxcbiAgICAgIHJpZ2h0OiBpc1JpZ2h0UGlubmVkID8gYCR7Y29sdW1uLmdldEFmdGVyKFwicmlnaHRcIil9cHhgIDogdW5kZWZpbmVkLFxuICAgIH0gYXMgQ1NTUHJvcGVydGllcyxcbiAgfTtcbn1cbiIsICJpbXBvcnQgeyB1c2VTb3J0YWJsZSB9IGZyb20gXCJAZG5kLWtpdC9zb3J0YWJsZVwiO1xuaW1wb3J0IHsgQ1NTIH0gZnJvbSBcIkBkbmQta2l0L3V0aWxpdGllc1wiO1xuaW1wb3J0IHsgSGVhZGVyLCB1c2VSZWFjdFRhYmxlIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgQ1NTUHJvcGVydGllcywgUHJvcHNXaXRoQ2hpbGRyZW4gfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgVGFibGVIZWFkIH0gZnJvbSBcIkAvdWkvY29tcG9uZW50cy91aS90YWJsZVwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxudHlwZSBEcmFnZ2FibGVIZWFkZXJDZWxsUHJvcHMgPSBQcm9wc1dpdGhDaGlsZHJlbjx7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgaGVhZGVyOiBIZWFkZXI8UmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHVua25vd24+O1xuICBzdHlsZT86IENTU1Byb3BlcnRpZXM7XG4gIHRhYmxlOiBSZXR1cm5UeXBlPHR5cGVvZiB1c2VSZWFjdFRhYmxlPFJlY29yZDxzdHJpbmcsIHVua25vd24+Pj47XG59PjtcblxuZXhwb3J0IGNvbnN0IERhdGFHcmlkRHJhZ2dhYmxlSGVhZGVyQ2VsbCA9IChwcm9wczogRHJhZ2dhYmxlSGVhZGVyQ2VsbFByb3BzKSA9PiB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgaGVhZGVyLCBzdHlsZTogY29tbW9uU3R5bGUgfSA9IHByb3BzO1xuXG4gIGNvbnN0IHsgYXR0cmlidXRlcywgbGlzdGVuZXJzLCB0cmFuc2Zvcm0sIHRyYW5zaXRpb24sIHNldE5vZGVSZWYsIGlzRHJhZ2dpbmcgfSA9IHVzZVNvcnRhYmxlKHtcbiAgICBpZDogaGVhZGVyLmlkLFxuICB9KTtcblxuICBjb25zdCBzdHlsZSA9IHtcbiAgICAuLi5jb21tb25TdHlsZSxcbiAgICBjdXJzb3I6IFwiZ3JhYlwiLFxuICAgIHRvdWNoQWN0aW9uOiBcIm5vbmVcIixcbiAgICB0cmFuc2Zvcm06IENTUy5UcmFuc2Zvcm0udG9TdHJpbmcodHJhbnNmb3JtKSxcbiAgICB0cmFuc2l0aW9uLFxuICB9IGFzIENTU1Byb3BlcnRpZXM7XG5cbiAgY29uc3QgZHJhZ0NsYXNzID0gY24oY2xhc3NOYW1lLCBpc0RyYWdnaW5nICYmIFwiIXBzLXotNTAgcHMtYm9yZGVyLTIgcHMtYm9yZGVyLXZpb2xldC01MDBcIik7XG5cbiAgcmV0dXJuIChcbiAgICA8VGFibGVIZWFkIHJlZj17c2V0Tm9kZVJlZn0gey4uLmF0dHJpYnV0ZXN9IHsuLi5saXN0ZW5lcnN9IHN0eWxlPXtzdHlsZX0gY2xhc3NOYW1lPXtkcmFnQ2xhc3N9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy13LWZ1bGxcIj57Y2hpbGRyZW59PC9kaXY+XG4gICAgPC9UYWJsZUhlYWQ+XG4gICk7XG59O1xuIiwgImltcG9ydCB7IHR5cGUgSGVhZGVyIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgQXJyb3dEb3duV2lkZU5hcnJvdywgQXJyb3dVcFdpZGVOYXJyb3csIENoZXZyb25Eb3duLCBNb3ZlRG93biwgTW92ZVVwLCBQaW4sIFBpbk9mZiwgWCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB7IEFuaW1hdGVQcmVzZW5jZSwgbW90aW9uIH0gZnJvbSBcIm1vdGlvbi9yZWFjdFwiO1xuXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2J1dHRvblwiO1xuaW1wb3J0IHtcbiAgRHJvcGRvd25NZW51LFxuICBEcm9wZG93bk1lbnVDb250ZW50LFxuICBEcm9wZG93bk1lbnVJdGVtLFxuICBEcm9wZG93bk1lbnVUcmlnZ2VyLFxufSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9kcm9wZG93bi1tZW51XCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi8uLi9saWIvdXRpbHNcIjtcbmltcG9ydCB7IERhdGFHcmlkSGVhZGVyQ2VsbCB9IGZyb20gXCIuL0RhdGFHcmlkSGVhZGVyQ2VsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEhlYWRlclByb3BzPFREYXRhPiB7XG4gIGNvbHVtbjogQ29sdW1uO1xuICBoZWFkZXI6IEhlYWRlcjxURGF0YSwgdW5rbm93bj47XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGFHcmlkSGVhZGVyPFREYXRhPihwcm9wczogSGVhZGVyUHJvcHM8VERhdGE+KSB7XG4gIGNvbnN0IHsgY29sdW1uLCBoZWFkZXIsIGNsYXNzTmFtZSB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y24oXCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWJldHdlZW5cIiwgY2xhc3NOYW1lKX0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlbiBwcy13LWZ1bGxcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMiBwcy1vdmVyZmxvdy1oaWRkZW4gcHMtdGV4dC1lbGxpcHNpcyBwcy1mb250LW1vbm8gcHMtdGV4dC14c1wiPlxuICAgICAgICAgIHtoZWFkZXIuaXNQbGFjZWhvbGRlciA/IG51bGwgOiAoXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLW1pbi13LTBcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtbWluLXctMCBwcy1vdmVyZmxvdy1oaWRkZW4gcHMtdGV4dC1lbGxpcHNpcyBwcy10ZXh0LWZvcmVncm91bmQvOTBcIj5cbiAgICAgICAgICAgICAgICA8RGF0YUdyaWRIZWFkZXJDZWxsIGNvbHVtbj17Y29sdW1ufSAvPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy1zaHJpbmstMCBwcy1nYXAtMVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLW1sLTFcIj5cbiAgICAgICAgICAgIDxBbmltYXRlUHJlc2VuY2UgbW9kZT1cIndhaXRcIj5cbiAgICAgICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0SXNTb3J0ZWQoKSA9PT0gXCJkZXNjXCIgPyAoXG4gICAgICAgICAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICAgICAgICAgIGtleT1cImRlc2NcIlxuICAgICAgICAgICAgICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwLCB5OiAtNCB9fVxuICAgICAgICAgICAgICAgICAgYW5pbWF0ZT17eyBvcGFjaXR5OiAxLCB5OiAwIH19XG4gICAgICAgICAgICAgICAgICBleGl0PXt7IG9wYWNpdHk6IDAsIHk6IC00IH19XG4gICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uPXt7IGR1cmF0aW9uOiAwLjIgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8TW92ZURvd24gc2l6ZT17MTR9IGNsYXNzTmFtZT1cInBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgICAgICAgICApIDogaGVhZGVyLmNvbHVtbi5nZXRJc1NvcnRlZCgpID09PSBcImFzY1wiID8gKFxuICAgICAgICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICAgICAgICBrZXk9XCJhc2NcIlxuICAgICAgICAgICAgICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwLCB5OiA0IH19XG4gICAgICAgICAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEsIHk6IDAgfX1cbiAgICAgICAgICAgICAgICAgIGV4aXQ9e3sgb3BhY2l0eTogMCwgeTogNCB9fVxuICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbj17eyBkdXJhdGlvbjogMC4yIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPE1vdmVVcCBzaXplPXsxNH0gY2xhc3NOYW1lPVwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgPC9BbmltYXRlUHJlc2VuY2U+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIHtoZWFkZXIuY29sdW1uLmdldENhblBpbigpICYmIGhlYWRlci5jb2x1bW4uaWQgIT09IFwic2VsZWN0XCIgJiYgKFxuICAgICAgICAgICAgPERyb3Bkb3duTWVudT5cbiAgICAgICAgICAgICAgPERyb3Bkb3duTWVudVRyaWdnZXIgYXNDaGlsZD5cbiAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJnaG9zdFwiIHNpemU9XCJzbVwiIGNsYXNzTmFtZT1cInBzLXB4LTAgcHMtaC02IHBzLXctNlwiPlxuICAgICAgICAgICAgICAgICAgPENoZXZyb25Eb3duIHNpemU9ezEyfSAvPlxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICA8L0Ryb3Bkb3duTWVudVRyaWdnZXI+XG4gICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVDb250ZW50PlxuICAgICAgICAgICAgICAgIHtoZWFkZXIuY29sdW1uLmdldENhblNvcnQoKSAmJiAoXG4gICAgICAgICAgICAgICAgICA8RHJvcGRvd25NZW51SXRlbSBvbkNsaWNrPXsoKSA9PiBoZWFkZXIuY29sdW1uLnRvZ2dsZVNvcnRpbmcoKX0+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0TmV4dFNvcnRpbmdPcmRlcigpID09PSBcImRlc2NcIiA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJvd0Rvd25XaWRlTmFycm93IHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0IGRlc2NlbmRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICkgOiBoZWFkZXIuY29sdW1uLmdldE5leHRTb3J0aW5nT3JkZXIoKSA9PT0gXCJhc2NcIiA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJvd1VwV2lkZU5hcnJvdyBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgU29ydCBhc2NlbmRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8WCBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FuY2VsIHNvcnRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51SXRlbT5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVJdGVtIG9uQ2xpY2s9eygpID0+IGhlYWRlci5jb2x1bW4ucGluKGhlYWRlci5jb2x1bW4uZ2V0SXNQaW5uZWQoKSA/IGZhbHNlIDogXCJsZWZ0XCIpfT5cbiAgICAgICAgICAgICAgICAgIHtoZWFkZXIuY29sdW1uLmdldElzUGlubmVkKCkgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPFBpbk9mZiBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICBVbnBpbiBjb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8UGluIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgIFBpbiBjb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duTWVudUl0ZW0+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51Q29udGVudD5cbiAgICAgICAgICAgIDwvRHJvcGRvd25NZW51PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAge2hlYWRlci5jb2x1bW4uZ2V0Q2FuUmVzaXplKCkgJiYgKFxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgb25Nb3VzZURvd249eyhlKSA9PiB7XG4gICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgaGVhZGVyLmdldFJlc2l6ZUhhbmRsZXIoKShlKTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uVG91Y2hTdGFydD17KGUpID0+IHtcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBoZWFkZXIuZ2V0UmVzaXplSGFuZGxlcigpKGUpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgb25DbGljaz17KGUpID0+IGUuc3RvcFByb3BhZ2F0aW9uKCl9XG4gICAgICAgICAgb25LZXlEb3duPXsoZSkgPT4ge1xuICAgICAgICAgICAgaWYgKGUua2V5ID09PSBcIkVudGVyXCIgfHwgZS5rZXkgPT09IFwiIFwiKSB7XG4gICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgaGVhZGVyLmdldFJlc2l6ZUhhbmRsZXIoKShlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICBcInBzLWFic29sdXRlIHBzLXJpZ2h0LTAgcHMtdG9wLTAgcHMtaC1mdWxsIHBzLXctcHggcHMtY3Vyc29yLWNvbC1yZXNpemUgcHMtYm9yZGVyIHBzLWJvcmRlci10cmFuc3BhcmVudCBob3Zlcjpwcy1ib3JkZXItdGFibGUtYm9yZGVyXCIsXG4gICAgICAgICAgKX1cbiAgICAgICAgICBhcmlhLWxhYmVsPVwiUmVzaXplIGNvbHVtblwiXG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufVxuIiwgImltcG9ydCAqIGFzIFRvb2x0aXBQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC10b29sdGlwXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgVG9vbHRpcFByb3ZpZGVyID0gVG9vbHRpcFByaW1pdGl2ZS5Qcm92aWRlcjtcblxuY29uc3QgVG9vbHRpcCA9IFRvb2x0aXBQcmltaXRpdmUuUm9vdDtcblxuY29uc3QgVG9vbHRpcFRyaWdnZXIgPSBUb29sdGlwUHJpbWl0aXZlLlRyaWdnZXI7XG5cbmNvbnN0IFRvb2x0aXBDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgVG9vbHRpcFByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBUb29sdGlwUHJpbWl0aXZlLkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgc2lkZU9mZnNldCA9IDQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8VG9vbHRpcFByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPFRvb2x0aXBQcmltaXRpdmUuQ29udGVudFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBzaWRlT2Zmc2V0PXtzaWRlT2Zmc2V0fVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy16LTUwIHBzLW92ZXJmbG93LWhpZGRlbiBwcy1yb3VuZGVkLW1kIHBzLWJnLXByaW1hcnkgcHMtcHgtMyBwcy1weS0xLjUgcHMtdGV4dC14cyBwcy10ZXh0LXByaW1hcnktZm9yZWdyb3VuZCBwcy1hbmltYXRlLWluIHBzLWZhZGUtaW4tMCBwcy16b29tLWluLTk1IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtYW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1mYWRlLW91dC0wIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtem9vbS1vdXQtOTUgZGF0YS1bc2lkZT1ib3R0b21dOnBzLXNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpwcy1zbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06cHMtc2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnBzLXNsaWRlLWluLWZyb20tYm90dG9tLTIgcHMtb3JpZ2luLVstLXJhZGl4LXRvb2x0aXAtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXVwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIDwvVG9vbHRpcFByaW1pdGl2ZS5Qb3J0YWw+XG4pKTtcblRvb2x0aXBDb250ZW50LmRpc3BsYXlOYW1lID0gVG9vbHRpcFByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgeyBUb29sdGlwLCBUb29sdGlwVHJpZ2dlciwgVG9vbHRpcENvbnRlbnQsIFRvb2x0aXBQcm92aWRlciB9O1xuIiwgImltcG9ydCB7IEtleVJvdW5kIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBUb29sdGlwLCBUb29sdGlwQ29udGVudCwgVG9vbHRpcFByb3ZpZGVyLCBUb29sdGlwVHJpZ2dlciB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3Rvb2x0aXBcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIERhdGFHcmlkSGVhZGVyQ2VsbCh7IGNvbHVtbiB9OiB7IGNvbHVtbjogQ29sdW1uIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtZ2FwLTEgcHMtaXRlbXMtY2VudGVyXCI+XG4gICAgICB7Y29sdW1uLmlzSW5QcmltYXJ5S2V5ICYmIChcbiAgICAgICAgPFRvb2x0aXBQcm92aWRlciBkZWxheUR1cmF0aW9uPXsxMjB9PlxuICAgICAgICAgIDxUb29sdGlwPlxuICAgICAgICAgICAgPFRvb2x0aXBUcmlnZ2VyIGFzQ2hpbGQ+XG4gICAgICAgICAgICAgIDxLZXlSb3VuZCBzaXplPXsxMn0gY2xhc3NOYW1lPVwicHMtdGV4dC1wcmltYXJ5XCIgLz5cbiAgICAgICAgICAgIDwvVG9vbHRpcFRyaWdnZXI+XG4gICAgICAgICAgICA8VG9vbHRpcENvbnRlbnQgc2lkZT1cImJvdHRvbVwiIGNsYXNzTmFtZT1cInRleHQteHNcIj5cbiAgICAgICAgICAgICAgPHNwYW4+UHJpbWFyeSBLZXk8L3NwYW4+XG4gICAgICAgICAgICA8L1Rvb2x0aXBDb250ZW50PlxuICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgPC9Ub29sdGlwUHJvdmlkZXI+XG4gICAgICApfVxuICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZm9udC1tZWRpdW0gcHMtdHJ1bmNhdGVcIj57Y29sdW1uLm5hbWV9PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtb3ZlcmZsb3ctaGlkZGVuIHBzLXRleHQtZWxsaXBzaXMgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kLzcwIHBzLWxvd2VyY2FzZSBwcy10cnVuY2F0ZVwiPlxuICAgICAgICB7Y29sdW1uLmRhdGF0eXBlLm5hbWV9XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBDZWxsIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgaXNPYmplY3RUeXBlIH0gZnJvbSBcInJlbWVkYVwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbHVtbiB9IGZyb20gXCIuLi8uLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCB9IGZyb20gXCIuL0Jvb2xlYW5JbnB1dFwiO1xuaW1wb3J0IHsgRGF0ZUlucHV0IH0gZnJvbSBcIi4vRGF0ZUlucHV0XCI7XG5pbXBvcnQgeyBFbnVtSW5wdXQgfSBmcm9tIFwiLi9FbnVtSW5wdXRcIjtcbmltcG9ydCB7IEpzb25JbnB1dCB9IGZyb20gXCIuL0pzb25JbnB1dFwiO1xuaW1wb3J0IHsgTnVtZXJpY0lucHV0IH0gZnJvbSBcIi4vTnVtZXJpY0lucHV0XCI7XG5pbXBvcnQgeyBSYXdJbnB1dCB9IGZyb20gXCIuL1Jhd0lucHV0XCI7XG5pbXBvcnQgeyBUaW1lSW5wdXQgfSBmcm9tIFwiLi9UaW1lSW5wdXRcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldElucHV0KHByb3BzOiB7XG4gIGNlbGw6IENlbGw8UmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHVua25vd24+O1xuICBjb2x1bW46IENvbHVtbjtcbiAgb25TdWJtaXQ6ICh2YWx1ZTogdW5rbm93bikgPT4gdm9pZDtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59KSB7XG4gIGNvbnN0IHsgY2VsbCwgY29sdW1uLCBvblN1Ym1pdCB9ID0gcHJvcHM7XG4gIGNvbnN0IHsgZ3JvdXAsIG9wdGlvbnMsIGlzQXJyYXkgfSA9IGNvbHVtbi5kYXRhdHlwZTtcbiAgY29uc3QgcmVhZG9ubHkgPSBjb2x1bW4uaXNDb21wdXRlZCB8fCBwcm9wcy5yZWFkb25seTtcblxuICBjb25zdCBjZWxsVmFsdWUgPSBjZWxsLmdldFZhbHVlKCk7XG5cbiAgLy8gb24gcm93IGluc2VydGlvbnMsIHdlIHRyZWF0IHVuZGVmaW5lZCBhcyBlbXB0eSBpbnB1dFxuICBjb25zdCB2YWx1ZSA9IGNlbGxWYWx1ZSA9PT0gdW5kZWZpbmVkID8gXCJcIiA6IGNlbGxWYWx1ZTtcblxuICBpZiAoZ3JvdXAgPT09IFwiZGF0ZXRpbWVcIikge1xuICAgIHJldHVybiA8RGF0ZUlucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e3ZhbHVlfSBjb2x1bW49e2NvbHVtbn0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJ0aW1lXCIpIHtcbiAgICByZXR1cm4gPFRpbWVJbnB1dCBvblN1Ym1pdD17b25TdWJtaXR9IHZhbHVlPXt2YWx1ZX0gY29sdW1uPXtjb2x1bW59IHJlYWRvbmx5PXtyZWFkb25seX0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwianNvblwiIHx8IGlzQXJyYXkpIHtcbiAgICByZXR1cm4gPEpzb25JbnB1dCBvblN1Ym1pdD17b25TdWJtaXR9IHZhbHVlPXt2YWx1ZX0gY29sdW1uPXtjb2x1bW59IHJlYWRvbmx5PXtyZWFkb25seX0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgcmV0dXJuIDxCb29sZWFuSW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17dmFsdWV9IGNvbHVtbj17Y29sdW1ufSByZWFkb25seT17cmVhZG9ubHl9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcImVudW1cIikge1xuICAgIHJldHVybiA8RW51bUlucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e3ZhbHVlfSBvcHRpb25zPXtvcHRpb25zfSBjb2x1bW49e2NvbHVtbn0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJudW1lcmljXCIpIHtcbiAgICByZXR1cm4gPE51bWVyaWNJbnB1dCBvblN1Ym1pdD17b25TdWJtaXR9IHZhbHVlPXt2YWx1ZX0gY29sdW1uPXtjb2x1bW59IHJlYWRvbmx5PXtyZWFkb25seX0gLz47XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxSYXdJbnB1dCBvblN1Ym1pdD17b25TdWJtaXR9IHZhbHVlPXtpc09iamVjdFR5cGUodmFsdWUpID8gSlNPTi5zdHJpbmdpZnkodmFsdWUpIDogdmFsdWV9IHJlYWRvbmx5PXtyZWFkb25seX0gLz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyBtb3Rpb24gfSBmcm9tIFwibW90aW9uL3JlYWN0XCI7XG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBMYWJlbCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2xhYmVsXCI7XG5pbXBvcnQgeyB1c2VQb3BvdmVyQWN0aW9ucyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbFwiO1xuaW1wb3J0IHsgU3dpdGNoIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvc3dpdGNoXCI7XG5pbXBvcnQgeyBJbnB1dEFjdGlvbnMgfSBmcm9tIFwiLi9pbnB1dC1hY3Rpb25zXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQm9vbGVhbklucHV0UHJvcHMge1xuICBjb2x1bW46IENvbHVtbjtcbiAgb25TdWJtaXQodGhpczogdm9pZCwgdmFsdWU6IHVua25vd24pOiB2b2lkO1xuICB2YWx1ZTogdW5rbm93bjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBCb29sZWFuSW5wdXQocHJvcHM6IEJvb2xlYW5JbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgdmFsdWUsIG9uU3VibWl0LCBjb2x1bW4sIHJlYWRvbmx5IH0gPSBwcm9wcztcbiAgY29uc3QgaXNOdWxsYWJsZSA9IGNvbHVtbi5udWxsYWJsZSA9PT0gdHJ1ZTtcbiAgY29uc3QgW2N1cnJlbnRWYWx1ZSwgc2V0Q3VycmVudFZhbHVlXSA9IHVzZVN0YXRlPGJvb2xlYW4+KHZhbHVlID09PSBudWxsID8gZmFsc2UgOiAodmFsdWUgYXMgYm9vbGVhbikpO1xuICBjb25zdCBbc2V0VG9OdWxsLCBzZXRTZXRUb051bGxdID0gdXNlU3RhdGU8Ym9vbGVhbj4odmFsdWUgPT09IG51bGwpO1xuICBjb25zdCBpbml0aWFsVmFsdWUgPSB2YWx1ZSA9PT0gbnVsbCA/IGZhbHNlIDogKHZhbHVlIGFzIGJvb2xlYW4pO1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChjaGVja2VkOiBib29sZWFuKSA9PiB7XG4gICAgc2V0Q3VycmVudFZhbHVlKGNoZWNrZWQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU51bGxDaGFuZ2UgPSAoY2hlY2tlZDogYm9vbGVhbikgPT4ge1xuICAgIHNldFNldFRvTnVsbChjaGVja2VkKTtcbiAgfTtcblxuICAvLyBTdWJtaXQgaGFuZGxlciB0aGF0IG9ubHkgc3VibWl0cyBpZiB0aGUgdmFsdWUgaGFzIGNoYW5nZWRcbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgdmFsdWVUb1N1Ym1pdCA9IHNldFRvTnVsbCA/IG51bGwgOiBjdXJyZW50VmFsdWU7XG4gICAgaWYgKHZhbHVlVG9TdWJtaXQgIT09IHZhbHVlKSB7XG4gICAgICBvblN1Ym1pdCh2YWx1ZVRvU3VibWl0KTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sIFtjdXJyZW50VmFsdWUsIHZhbHVlLCBvblN1Ym1pdCwgc2V0VG9OdWxsXSk7XG5cbiAgY29uc3QgY2FuY2VsQWN0aW9uID0gKCkgPT4ge1xuICAgIC8vIFJlc2V0IHRoZSBpbnRlcm5hbCBzdGF0ZSB0byBtYXRjaCB0aGUgb3JpZ2luYWwgdmFsdWVcbiAgICBzZXRDdXJyZW50VmFsdWUoaW5pdGlhbFZhbHVlKTtcbiAgICBzZXRTZXRUb051bGwodmFsdWUgPT09IG51bGwpO1xuICB9O1xuXG4gIC8vIFVzZSBvdXIgaG9vayB0byBnZXQgaGFuZGxlcnMgdGhhdCBpbmNsdWRlIHBvcG92ZXIgY2xvc2luZ1xuICBjb25zdCB7IGhhbmRsZVNhdmUsIGhhbmRsZUNhbmNlbCB9ID0gdXNlUG9wb3ZlckFjdGlvbnMoe1xuICAgIG9uU2F2ZTogaGFuZGxlSW5wdXRTdWJtaXQsXG4gICAgb25DYW5jZWw6IGNhbmNlbEFjdGlvbixcbiAgICByZWFkb25seSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWl0ZW1zLWNlbnRlciBwcy1oLVt2YXIoLS1zdHVkaW8tY2VsbC1oZWlnaHQpXSBwcy1nYXAtNCBwcy1weS0wIHBzLXB4LTJcIj5cbiAgICAgICAgPExhYmVsIGh0bWxGb3I9XCJib29sZWFuLWlucHV0XCIgY2xhc3NOYW1lPVwicHMtc3Itb25seVwiPlxuICAgICAgICAgIEJvb2xlYW5cbiAgICAgICAgPC9MYWJlbD5cbiAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwIH19XG4gICAgICAgICAgYW5pbWF0ZT17eyBvcGFjaXR5OiAxIH19XG4gICAgICAgICAgdHJhbnNpdGlvbj17eyBkdXJhdGlvbjogMC4yNCB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFN3aXRjaFxuICAgICAgICAgICAgaWQ9XCJib29sZWFuLWlucHV0XCJcbiAgICAgICAgICAgIGNoZWNrZWQ9e2N1cnJlbnRWYWx1ZX1cbiAgICAgICAgICAgIG9uQ2hlY2tlZENoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e3NldFRvTnVsbCB8fCByZWFkb25seX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgZGF0YS12YWx1ZVxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWlubGluZS1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy10ZXh0LXhzIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZCBwcy1mb250LW1vbm9cIlxuICAgICAgICAgIGluaXRpYWw9e3sgeDogLTQwLCBvcGFjaXR5OiAxIH19XG4gICAgICAgICAgYW5pbWF0ZT17eyB4OiAwLCBvcGFjaXR5OiAxIH19XG4gICAgICAgICAgdHJhbnNpdGlvbj17eyBkdXJhdGlvbjogMC4xMiwgZGVsYXk6IDAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtzZXRUb051bGwgPyBcIk5VTExcIiA6IFN0cmluZyhjdXJyZW50VmFsdWUpfVxuICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxJbnB1dEFjdGlvbnNcbiAgICAgICAgb25TYXZlPXtoYW5kbGVTYXZlfVxuICAgICAgICBvbkNhbmNlbD17aGFuZGxlQ2FuY2VsfVxuICAgICAgICBvbk51bGxDaGFuZ2U9e2lzTnVsbGFibGUgPyBoYW5kbGVOdWxsQ2hhbmdlIDogdW5kZWZpbmVkfVxuICAgICAgICBpc051bGw9e3NldFRvTnVsbH1cbiAgICAgICAgcmVhZG9ubHk9e3JlYWRvbmx5fVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgKiBhcyBMYWJlbFByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWxhYmVsXCI7XG5pbXBvcnQgeyBjdmEsIHR5cGUgVmFyaWFudFByb3BzIH0gZnJvbSBcImNsYXNzLXZhcmlhbmNlLWF1dGhvcml0eVwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IGxhYmVsVmFyaWFudHMgPSBjdmEoXG4gIFwicHMtdGV4dC1zbSBwcy1mb250LW1lZGl1bSBwcy1sZWFkaW5nLW5vbmUgcGVlci1kaXNhYmxlZDpwcy1jdXJzb3Itbm90LWFsbG93ZWQgcGVlci1kaXNhYmxlZDpwcy1vcGFjaXR5LTcwXCIsXG4pO1xuXG5jb25zdCBMYWJlbCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIExhYmVsUHJpbWl0aXZlLlJvb3Q+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIExhYmVsUHJpbWl0aXZlLlJvb3Q+ICYgVmFyaWFudFByb3BzPHR5cGVvZiBsYWJlbFZhcmlhbnRzPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8TGFiZWxQcmltaXRpdmUuUm9vdCByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihsYWJlbFZhcmlhbnRzKCksIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbikpO1xuTGFiZWwuZGlzcGxheU5hbWUgPSBMYWJlbFByaW1pdGl2ZS5Sb290LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgeyBMYWJlbCB9O1xuIiwgImltcG9ydCAqIGFzIFN3aXRjaFByaW1pdGl2ZXMgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zd2l0Y2hcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBTd2l0Y2ggPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTd2l0Y2hQcmltaXRpdmVzLlJvb3Q+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFN3aXRjaFByaW1pdGl2ZXMuUm9vdD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFN3aXRjaFByaW1pdGl2ZXMuUm9vdFxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXBlZXIgcHMtaW5saW5lLWZsZXggcHMtaC01IHBzLXctOSBwcy1zaHJpbmstMCBwcy1jdXJzb3ItcG9pbnRlciBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1mdWxsIHBzLWJvcmRlci0yIHBzLWJvcmRlci10cmFuc3BhcmVudCBwcy1zaGFkb3ctc20gcHMtdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXMtdmlzaWJsZTpwcy1vdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTIgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLXJpbmcgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLW9mZnNldC0yIGZvY3VzLXZpc2libGU6cHMtcmluZy1vZmZzZXQtYmFja2dyb3VuZCBkaXNhYmxlZDpwcy1jdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6cHMtb3BhY2l0eS01MCBkYXRhLVtzdGF0ZT1jaGVja2VkXTpwcy1iZy1wcmltYXJ5IGRhdGEtW3N0YXRlPXVuY2hlY2tlZF06cHMtYmctaW5wdXRcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgICByZWY9e3JlZn1cbiAgPlxuICAgIDxTd2l0Y2hQcmltaXRpdmVzLlRodW1iXG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLXBvaW50ZXItZXZlbnRzLW5vbmUgcHMtYmxvY2sgcHMtaC00IHBzLXctNCBwcy1yb3VuZGVkLWZ1bGwgcHMtYmctYmFja2dyb3VuZCBwcy1zaGFkb3ctbGcgcHMtcmluZy0wIHBzLXRyYW5zaXRpb24tdHJhbnNmb3JtIGRhdGEtW3N0YXRlPWNoZWNrZWRdOnBzLXRyYW5zbGF0ZS14LTQgZGF0YS1bc3RhdGU9dW5jaGVja2VkXTpwcy10cmFuc2xhdGUteC0wXCIsXG4gICAgICApfVxuICAgIC8+XG4gIDwvU3dpdGNoUHJpbWl0aXZlcy5Sb290PlxuKSk7XG5Td2l0Y2guZGlzcGxheU5hbWUgPSBTd2l0Y2hQcmltaXRpdmVzLlJvb3QuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7IFN3aXRjaCB9O1xuIiwgImltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcbmltcG9ydCB7IENvcm5lckRvd25MZWZ0IH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuXG5pbXBvcnQgeyBTd2l0Y2ggfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9zd2l0Y2hcIjtcbmltcG9ydCB7IFRvb2x0aXAsIFRvb2x0aXBDb250ZW50LCBUb29sdGlwUHJvdmlkZXIsIFRvb2x0aXBUcmlnZ2VyIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvdG9vbHRpcFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIElucHV0QWN0aW9uc1Byb3BzIHtcbiAgb25TYXZlPzogKCkgPT4gdm9pZDtcbiAgb25DYW5jZWw/OiAoKSA9PiB2b2lkO1xuICBvbkNsb3NlPzogKCkgPT4gdm9pZDtcbiAgb25OdWxsQ2hhbmdlPzogKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIGlzTnVsbD86IGJvb2xlYW47XG4gIHJlYWRvbmx5OiBib29sZWFuO1xuICBvblNldE5vdz86IChlOiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB2b2lkO1xuICBzaG93U2V0Tm93PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IElucHV0QWN0aW9ucyA9ICh7XG4gIG9uU2F2ZSxcbiAgb25DYW5jZWwsXG4gIG9uQ2xvc2UsXG4gIG9uTnVsbENoYW5nZSxcbiAgaXNOdWxsID0gZmFsc2UsXG4gIHJlYWRvbmx5LFxuICBvblNldE5vdyxcbiAgc2hvd1NldE5vdyxcbn06IElucHV0QWN0aW9uc1Byb3BzKSA9PiB7XG4gIGNvbnN0IGhhbmRsZU51bGxDaGFuZ2UgPSAoY2hlY2tlZDogYm9vbGVhbikgPT4ge1xuICAgIGlmIChvbk51bGxDaGFuZ2UpIG9uTnVsbENoYW5nZShjaGVja2VkKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVTYXZlID0gKCkgPT4ge1xuICAgIGlmIChvblNhdmUpIG9uU2F2ZSgpO1xuICAgIGlmIChvbkNsb3NlKSBvbkNsb3NlKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQ2FuY2VsID0gKCkgPT4ge1xuICAgIGlmIChvbkNhbmNlbCkgb25DYW5jZWwoKTtcbiAgICBpZiAob25DbG9zZSkgb25DbG9zZSgpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWJvcmRlci10IHBzLWJvcmRlci10YWJsZS1ib3JkZXIgcHMtdGV4dC14cyBwcy1wLTJcIj5cbiAgICAgIHshcmVhZG9ubHkgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1nYXAtMSBwcy13LWZ1bGxcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZ3JpZCBwcy1ncmlkLWNvbHMtMiBwcy1nYXAtMSBwcy1pdGVtcy1zdGFydCBwcy1qdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC0xXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1nYXAtMSBwcy1pdGVtcy1jZW50ZXIgcHMtY3Vyc29yLXBvaW50ZXIgcHMtc2hyaW5rLTBcIlxuICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlU2F2ZX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8a2JkIGNsYXNzTmFtZT1cInBzLWlubGluZS1mbGV4IHBzLWp1c3RpZnktY2VudGVyIHBzLWl0ZW1zLWNlbnRlciBwcy1oLTYgcHMtdy02IHBzLXJvdW5kZWQtbWQgcHMtYmctbXV0ZWQgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgICAgICAgICAgICAgIDxDb3JuZXJEb3duTGVmdCBzaXplPXsxMn0gc3Ryb2tlV2lkdGg9ezJ9IC8+XG4gICAgICAgICAgICAgICAgICA8L2tiZD57XCIgXCJ9XG4gICAgICAgICAgICAgICAgICBTYXZlIGNoYW5nZXNcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWl0ZW1zLWNlbnRlciBwcy1jdXJzb3ItcG9pbnRlciBwcy1zaHJpbmstMFwiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGtiZCBjbGFzc05hbWU9XCJwcy1pbmxpbmUtZmxleCBwcy1qdXN0aWZ5LWNlbnRlciBwcy1pdGVtcy1jZW50ZXIgcHMtaC02IHBzLXctNiBwcy1yb3VuZGVkLW1kIHBzLWJnLW11dGVkIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZCBwcy10ZXh0LVs4cHhdIHBzLWxlYWRpbmctbm9uZSBwcy1mb250LXNlbWlib2xkXCI+XG4gICAgICAgICAgICAgICAgICAgIEVzY1xuICAgICAgICAgICAgICAgICAgPC9rYmQ+e1wiIFwifVxuICAgICAgICAgICAgICAgICAgQ2FuY2VsIGNoYW5nZXNcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1nYXAtMSBwcy1pdGVtcy1lbmRcIj5cbiAgICAgICAgICAgICAgICB7b25OdWxsQ2hhbmdlICYmIChcbiAgICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWl0ZW1zLWNlbnRlciBwcy1jdXJzb3ItcG9pbnRlciBwcy1zaHJpbmstMCBwcy1oLTZcIlxuICAgICAgICAgICAgICAgICAgICBodG1sRm9yPVwic2V0LW51bGxhYmxlXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPFN3aXRjaCBpZD1cInNldC1udWxsYWJsZVwiIGNoZWNrZWQ9e2lzTnVsbH0gb25DaGVja2VkQ2hhbmdlPXtoYW5kbGVOdWxsQ2hhbmdlfSAvPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5TZXQgdG8gTlVMTDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgIHtzaG93U2V0Tm93ICYmIChcbiAgICAgICAgICAgICAgICAgIDxUb29sdGlwUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgIDxUb29sdGlwPlxuICAgICAgICAgICAgICAgICAgICAgIDxUb29sdGlwVHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtvblNldE5vd31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1nYXAtMSBwcy1pdGVtcy1jZW50ZXIgcHMtY3Vyc29yLXBvaW50ZXIgcHMtc2hyaW5rLTAgcHMtaC02XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzTnVsbCB8fCByZWFkb25seX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0IHRvIE5PV1xuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9Ub29sdGlwVHJpZ2dlcj5cbiAgICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcENvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cD5TZXQgdG8ge2RheWpzKCkuZm9ybWF0KFwiTExMXCIpfTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICA8L1Rvb2x0aXBDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgICAgICA8L1Rvb2x0aXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuIiwgImltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcbmltcG9ydCBsb2NhbGl6ZWRGb3JtYXQgZnJvbSBcImRheWpzL3BsdWdpbi9sb2NhbGl6ZWRGb3JtYXRcIjtcbmltcG9ydCB7IHR5cGUgRm9ybUV2ZW50LCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmltcG9ydCB7IENhbGVuZGFyIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvY2FsZW5kYXJcIjtcbmltcG9ydCB7IElucHV0IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvaW5wdXRcIjtcbmltcG9ydCB7IHVzZVBvcG92ZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBTZWxlY3QsIFNlbGVjdENvbnRlbnQsIFNlbGVjdEl0ZW0sIFNlbGVjdFRyaWdnZXIsIFNlbGVjdFZhbHVlIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvc2VsZWN0XCI7XG5pbXBvcnQgeyBJbnB1dEFjdGlvbnMgfSBmcm9tIFwiLi9pbnB1dC1hY3Rpb25zXCI7XG5pbXBvcnQgeyB1c2VJbnB1dCB9IGZyb20gXCIuL3VzZS1pbnB1dFwiO1xuXG4vLyBJbml0aWFsaXplIGRheWpzIHBsdWdpbnNcbmRheWpzLmV4dGVuZChsb2NhbGl6ZWRGb3JtYXQpO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVJbnB1dFByb3BzIHtcbiAgb25TdWJtaXQodGhpczogdm9pZCwgdmFsdWU6IHN0cmluZyk6IHZvaWQ7XG4gIHZhbHVlOiB1bmtub3duO1xuICBjb2x1bW46IENvbHVtbjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRlSW5wdXQocHJvcHM6IERhdGVJbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgb25TdWJtaXQsIHZhbHVlLCByZWFkb25seSwgY29sdW1uIH0gPSBwcm9wcztcblxuICBjb25zdCBpbml0aWFsVmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuXG4gIGNvbnN0IHBhcnNlZEluaXRpYWxEYXRlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgcGFyc2VkID0gZGF5anMoaW5pdGlhbFZhbHVlKTtcbiAgICByZXR1cm4gcGFyc2VkLmlzVmFsaWQoKSA/IHBhcnNlZC50b0RhdGUoKSA6IG5ldyBEYXRlKCk7XG4gIH0sIFtpbml0aWFsVmFsdWVdKTtcblxuICBjb25zdCBnZXRGb3JtYXRGb3JUeXBlID0gKHR5cGU6IHN0cmluZykgPT4ge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBcImRhdGVcIjpcbiAgICAgICAgcmV0dXJuIFwiWVlZWS1NTS1ERFwiO1xuICAgICAgY2FzZSBcInRpbWVcIjpcbiAgICAgICAgcmV0dXJuIFwiSEg6bW06c3MuU1NTU1NcIjtcbiAgICAgIGNhc2UgXCJ0aW1lc3RhbXBcIjpcbiAgICAgICAgcmV0dXJuIFwiWVlZWS1NTS1ERCBISDptbTpzcy5TU1NTU1NcIjtcbiAgICAgIGNhc2UgXCJ0aW1lc3RhbXB0elwiOlxuICAgICAgICByZXR1cm4gXCJZWVlZLU1NLUREIEhIOm1tOnNzLlNTU1NTU1pcIjtcbiAgICAgIGNhc2UgXCJ0aW1ldHpcIjpcbiAgICAgICAgcmV0dXJuIFwiSEg6bW06c3MuU1NTU1NTWlwiO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH07XG5cbiAgLy8gSW5pdGlhbGl6ZSBzdGF0ZXMgd2l0aCB0aGUgcGFyc2VkIGRhdGVcbiAgY29uc3QgW3NlbGVjdGVkRGF0ZSwgc2V0U2VsZWN0ZWREYXRlXSA9IHVzZVN0YXRlPERhdGUgfCB1bmRlZmluZWQ+KHBhcnNlZEluaXRpYWxEYXRlKTtcbiAgY29uc3QgW2N1cnJlbnRNb250aCwgc2V0Q3VycmVudE1vbnRoXSA9IHVzZVN0YXRlPERhdGU+KHBhcnNlZEluaXRpYWxEYXRlKTtcbiAgY29uc3QgW2hvdXJWYWx1ZSwgc2V0SG91clZhbHVlXSA9IHVzZVN0YXRlKCgpID0+IGRheWpzKHBhcnNlZEluaXRpYWxEYXRlKS5mb3JtYXQoXCJISFwiKSk7XG4gIGNvbnN0IFttaW51dGVWYWx1ZSwgc2V0TWludXRlVmFsdWVdID0gdXNlU3RhdGUoKCkgPT4gZGF5anMocGFyc2VkSW5pdGlhbERhdGUpLmZvcm1hdChcIm1tXCIpKTtcbiAgY29uc3QgW3NlY29uZFZhbHVlLCBzZXRTZWNvbmRWYWx1ZV0gPSB1c2VTdGF0ZSgoKSA9PiBkYXlqcyhwYXJzZWRJbml0aWFsRGF0ZSkuZm9ybWF0KFwic3NcIikpO1xuXG4gIGNvbnN0IHsgaGFuZGxlT25DaGFuZ2U6IGJhc2VIYW5kbGVPbkNoYW5nZSwgdmFsdWU6IGlucHV0VmFsdWUsIHNldFZhbHVlIH0gPSB1c2VJbnB1dCh7IGluaXRpYWxWYWx1ZSB9KTtcblxuICBjb25zdCBjb2x1bW5UeXBlID0gdXNlTWVtbygoKSA9PiBjb2x1bW4/LmRhdGF0eXBlPy5uYW1lIHx8IChjb2x1bW4/LmRhdGF0eXBlIGFzIHVua25vd24gYXMgc3RyaW5nKSwgW2NvbHVtbl0pO1xuICBjb25zdCBkYkZvcm1hdCA9IHVzZU1lbW8oKCkgPT4gZ2V0Rm9ybWF0Rm9yVHlwZShjb2x1bW5UeXBlKSwgW2NvbHVtblR5cGVdKTtcblxuICBjb25zdCBoYXNUaW1lUHJlY2lzaW9uID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIFtcInRpbWVcIiwgXCJ0aW1lc3RhbXBcIiwgXCJ0aW1lc3RhbXB0elwiLCBcInRpbWV0elwiXS5pbmNsdWRlcyhjb2x1bW5UeXBlKTtcbiAgfSwgW2NvbHVtblR5cGVdKTtcblxuICAvLyBDdXN0b20gb25DaGFuZ2UgaGFuZGxlclxuICBjb25zdCBoYW5kbGVPbkNoYW5nZSA9IChldmVudDogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBiYXNlSGFuZGxlT25DaGFuZ2UoZXZlbnQpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgY29uc3QgcGFyc2VkID0gZGF5anMobmV3VmFsdWUpO1xuICAgICAgaWYgKHBhcnNlZC5pc1ZhbGlkKCkpIHtcbiAgICAgICAgY29uc3QgbmV3RGF0ZSA9IHBhcnNlZC50b0RhdGUoKTtcbiAgICAgICAgc2V0U2VsZWN0ZWREYXRlKG5ld0RhdGUpO1xuICAgICAgICBzZXRDdXJyZW50TW9udGgobmV3RGF0ZSk7XG4gICAgICAgIGlmIChoYXNUaW1lUHJlY2lzaW9uKSB7XG4gICAgICAgICAgc2V0SG91clZhbHVlKHBhcnNlZC5mb3JtYXQoXCJISFwiKSk7XG4gICAgICAgICAgc2V0TWludXRlVmFsdWUocGFyc2VkLmZvcm1hdChcIm1tXCIpKTtcbiAgICAgICAgICBzZXRTZWNvbmRWYWx1ZShwYXJzZWQuZm9ybWF0KFwic3NcIikpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoX2Vycm9yKSB7XG4gICAgICAvLyBJbnZhbGlkIGRhdGUgZm9ybWF0XG4gICAgfVxuICB9O1xuXG4gIC8vIFVwZGF0ZSBpbnB1dFZhbHVlIHdoZW4gY2FsZW5kYXIgc2VsZWN0aW9uIGNoYW5nZXNcbiAgY29uc3QgaGFuZGxlQ2FsZW5kYXJTZWxlY3QgPSAoZGF0ZTogRGF0ZSB8IHVuZGVmaW5lZCkgPT4ge1xuICAgIGlmICghZGF0ZSkgcmV0dXJuO1xuXG4gICAgY29uc3QgbmV3U2VsZWN0ZWREYXRlID0gZGF5anMoZGF0ZSk7XG4gICAgbGV0IGZpbmFsRGF0ZSA9IG5ld1NlbGVjdGVkRGF0ZTtcblxuICAgIGlmIChoYXNUaW1lUHJlY2lzaW9uICYmIHNlbGVjdGVkRGF0ZSkge1xuICAgICAgLy8gUHJlc2VydmUgZXhpc3RpbmcgdGltZVxuICAgICAgZmluYWxEYXRlID0gbmV3U2VsZWN0ZWREYXRlXG4gICAgICAgIC5ob3VyKGRheWpzKHNlbGVjdGVkRGF0ZSkuaG91cigpKVxuICAgICAgICAubWludXRlKGRheWpzKHNlbGVjdGVkRGF0ZSkubWludXRlKCkpXG4gICAgICAgIC5zZWNvbmQoZGF5anMoc2VsZWN0ZWREYXRlKS5zZWNvbmQoKSk7XG4gICAgfSBlbHNlIGlmIChoYXNUaW1lUHJlY2lzaW9uKSB7XG4gICAgICAvLyBEZWZhdWx0IHRvIGN1cnJlbnQgdGltZSBpZiBubyBwcmV2aW91cyB0aW1lXG4gICAgICBjb25zdCBub3cgPSBkYXlqcygpO1xuICAgICAgZmluYWxEYXRlID0gbmV3U2VsZWN0ZWREYXRlLmhvdXIobm93LmhvdXIoKSkubWludXRlKG5vdy5taW51dGUoKSkuc2Vjb25kKG5vdy5zZWNvbmQoKSk7XG4gICAgICBzZXRIb3VyVmFsdWUobm93LmZvcm1hdChcIkhIXCIpKTtcbiAgICAgIHNldE1pbnV0ZVZhbHVlKG5vdy5mb3JtYXQoXCJtbVwiKSk7XG4gICAgICBzZXRTZWNvbmRWYWx1ZShub3cuZm9ybWF0KFwic3NcIikpO1xuICAgIH1cblxuICAgIHNldFNlbGVjdGVkRGF0ZShmaW5hbERhdGUudG9EYXRlKCkpO1xuICAgIHNldEN1cnJlbnRNb250aChmaW5hbERhdGUudG9EYXRlKCkpO1xuICAgIHNldFZhbHVlKGRiRm9ybWF0ID8gZmluYWxEYXRlLmZvcm1hdChkYkZvcm1hdCkgOiBmaW5hbERhdGUudG9JU09TdHJpbmcoKSk7XG4gIH07XG5cbiAgLy8gRm9ybWF0IHRoZSBkYXRlIHVzaW5nIGRheWpzIGJhc2VkIG9uIGRldGVjdGVkIGZvcm1hdFxuICBjb25zdCBmb3JtYXR0ZWREYXRlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRhdGUgPSBkYXlqcyhpbnB1dFZhbHVlKTtcbiAgICAgIGlmICghZGF0ZS5pc1ZhbGlkKCkpIHJldHVybiBpbnB1dFZhbHVlO1xuICAgICAgY29uc3QgaGFzVGltZSA9IGlucHV0VmFsdWUuaW5jbHVkZXMoXCI6XCIpO1xuXG4gICAgICAvLyBIdW1hbi1yZWFkYWJsZSBmb3JtYXQgKGxvY2FsaXplZClcbiAgICAgIGlmIChoYXNUaW1lKSB7XG4gICAgICAgIHJldHVybiBkYXRlLmZvcm1hdChcIkxMIExUU1wiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBkYXRlLmZvcm1hdChcIkxMXCIpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKF9lcnJvcikge1xuICAgICAgcmV0dXJuIGlucHV0VmFsdWU7XG4gICAgfVxuICB9LCBbaW5wdXRWYWx1ZV0pO1xuXG4gIGZ1bmN0aW9uIGhhbmRsZU9uU3VibWl0KGV2ZW50OiBGb3JtRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmIChpbnB1dFZhbHVlICE9PSBpbml0aWFsVmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KGlucHV0VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUlucHV0U3VibWl0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChpbnB1dFZhbHVlICE9PSBpbml0aWFsVmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KGlucHV0VmFsdWUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSwgW2lucHV0VmFsdWUsIGluaXRpYWxWYWx1ZSwgb25TdWJtaXRdKTtcblxuICBjb25zdCBjYW5jZWxBY3Rpb24gPSAoKSA9PiB7fTtcblxuICBjb25zdCB7IGhhbmRsZVNhdmUsIGhhbmRsZUNhbmNlbCB9ID0gdXNlUG9wb3ZlckFjdGlvbnMoe1xuICAgIG9uU2F2ZTogaGFuZGxlSW5wdXRTdWJtaXQsXG4gICAgb25DYW5jZWw6IGNhbmNlbEFjdGlvbixcbiAgICByZWFkb25seSxcbiAgfSk7XG5cbiAgY29uc3QgaGFuZGxlU2V0Tm93ID0gKGU6IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGNvbnN0IG5vdyA9IGRheWpzKCk7XG4gICAgc2V0U2VsZWN0ZWREYXRlKG5vdy50b0RhdGUoKSk7XG4gICAgc2V0Q3VycmVudE1vbnRoKG5vdy50b0RhdGUoKSk7IC8vIEVuc3VyZSBjYWxlbmRhciB2aWV3IHVwZGF0ZXNcbiAgICBzZXRWYWx1ZShkYkZvcm1hdCA/IG5vdy5mb3JtYXQoZGJGb3JtYXQpIDogbm93LnRvSVNPU3RyaW5nKCkpO1xuXG4gICAgLy8gVXBkYXRlIGlucHV0IGZpZWxkc1xuICAgIHNldFllYXJWYWx1ZShub3cueWVhcigpLnRvU3RyaW5nKCkpO1xuICAgIGlmIChoYXNUaW1lUHJlY2lzaW9uKSB7XG4gICAgICBzZXRIb3VyVmFsdWUobm93LmZvcm1hdChcIkhIXCIpKTtcbiAgICAgIHNldE1pbnV0ZVZhbHVlKG5vdy5mb3JtYXQoXCJtbVwiKSk7XG4gICAgICBzZXRTZWNvbmRWYWx1ZShub3cuZm9ybWF0KFwic3NcIikpO1xuICAgIH1cbiAgfTtcblxuICAvLyBHZW5lcmF0ZSBtb250aCBvcHRpb25zIGZvciB0aGUgc2VsZWN0XG4gIGNvbnN0IG1vbnRocyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gW1xuICAgICAgeyB2YWx1ZTogXCIwXCIsIGxhYmVsOiBcIkphbnVhcnlcIiB9LFxuICAgICAgeyB2YWx1ZTogXCIxXCIsIGxhYmVsOiBcIkZlYnJ1YXJ5XCIgfSxcbiAgICAgIHsgdmFsdWU6IFwiMlwiLCBsYWJlbDogXCJNYXJjaFwiIH0sXG4gICAgICB7IHZhbHVlOiBcIjNcIiwgbGFiZWw6IFwiQXByaWxcIiB9LFxuICAgICAgeyB2YWx1ZTogXCI0XCIsIGxhYmVsOiBcIk1heVwiIH0sXG4gICAgICB7IHZhbHVlOiBcIjVcIiwgbGFiZWw6IFwiSnVuZVwiIH0sXG4gICAgICB7IHZhbHVlOiBcIjZcIiwgbGFiZWw6IFwiSnVseVwiIH0sXG4gICAgICB7IHZhbHVlOiBcIjdcIiwgbGFiZWw6IFwiQXVndXN0XCIgfSxcbiAgICAgIHsgdmFsdWU6IFwiOFwiLCBsYWJlbDogXCJTZXB0ZW1iZXJcIiB9LFxuICAgICAgeyB2YWx1ZTogXCI5XCIsIGxhYmVsOiBcIk9jdG9iZXJcIiB9LFxuICAgICAgeyB2YWx1ZTogXCIxMFwiLCBsYWJlbDogXCJOb3ZlbWJlclwiIH0sXG4gICAgICB7IHZhbHVlOiBcIjExXCIsIGxhYmVsOiBcIkRlY2VtYmVyXCIgfSxcbiAgICBdLFxuICAgIFtdLFxuICApO1xuXG4gIC8vIEdldCB0aGUgY3VycmVudCBtb250aCBhbmQgeWVhciB2YWx1ZXNcbiAgY29uc3QgY3VycmVudE1vbnRoVmFsdWUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gY3VycmVudE1vbnRoLmdldE1vbnRoKCkudG9TdHJpbmcoKTtcbiAgfSwgW2N1cnJlbnRNb250aF0pO1xuXG4gIGNvbnN0IFt5ZWFyVmFsdWUsIHNldFllYXJWYWx1ZV0gPSB1c2VTdGF0ZSgoKSA9PiB7XG4gICAgcmV0dXJuIGN1cnJlbnRNb250aC5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCk7XG4gIH0pO1xuXG4gIGNvbnN0IHVwZGF0ZURhdGVGcm9tSW5wdXRzID0gKFxuICAgIG5ld0RhdGVQYXJ0czogUGFydGlhbDx7IHllYXI6IG51bWJlcjsgbW9udGg6IG51bWJlcjsgZGF5OiBudW1iZXI7IGhvdXI6IG51bWJlcjsgbWludXRlOiBudW1iZXI7IHNlY29uZDogbnVtYmVyIH0+LFxuICApID0+IHtcbiAgICBsZXQgYmFzZURhdGUgPSBzZWxlY3RlZERhdGUgPyBkYXlqcyhzZWxlY3RlZERhdGUpIDogZGF5anMoKTsgLy8gVXNlIGN1cnJlbnQgZGF0ZS90aW1lIGFzIGJhc2UgaWYgbm90aGluZyBpcyBzZWxlY3RlZFxuXG4gICAgLy8gSWYgb25seSB0aW1lIGlzIGNoYW5naW5nLCBlbnN1cmUgdGhlIGRhdGUgcGFydCBpcyBmcm9tIHNlbGVjdGVkRGF0ZSBvciBjdXJyZW50TW9udGggdmlld1xuICAgIGlmIChcbiAgICAgIHNlbGVjdGVkRGF0ZSAmJlxuICAgICAgKG5ld0RhdGVQYXJ0cy5ob3VyICE9PSB1bmRlZmluZWQgfHwgbmV3RGF0ZVBhcnRzLm1pbnV0ZSAhPT0gdW5kZWZpbmVkIHx8IG5ld0RhdGVQYXJ0cy5zZWNvbmQgIT09IHVuZGVmaW5lZCkgJiZcbiAgICAgIG5ld0RhdGVQYXJ0cy55ZWFyID09PSB1bmRlZmluZWQgJiZcbiAgICAgIG5ld0RhdGVQYXJ0cy5tb250aCA9PT0gdW5kZWZpbmVkICYmXG4gICAgICBuZXdEYXRlUGFydHMuZGF5ID09PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGJhc2VEYXRlID0gZGF5anMoc2VsZWN0ZWREYXRlKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgIXNlbGVjdGVkRGF0ZSAmJlxuICAgICAgKG5ld0RhdGVQYXJ0cy5ob3VyICE9PSB1bmRlZmluZWQgfHwgbmV3RGF0ZVBhcnRzLm1pbnV0ZSAhPT0gdW5kZWZpbmVkIHx8IG5ld0RhdGVQYXJ0cy5zZWNvbmQgIT09IHVuZGVmaW5lZClcbiAgICApIHtcbiAgICAgIC8vIGlmIG5vIGRhdGUgaXMgc2VsZWN0ZWQsIGJ1dCB0aW1lIGlzIGNoYW5nZWQsIHVzZSB0aGUgY3VycmVudCB2aWV3IG9mIHRoZSBjYWxlbmRhciBmb3IgZGF0ZSBwYXJ0XG4gICAgICBiYXNlRGF0ZSA9IGRheWpzKGN1cnJlbnRNb250aCk7XG4gICAgfVxuXG4gICAgY29uc3QgbmV3RGF0ZSA9IGJhc2VEYXRlXG4gICAgICAuc2V0KFwieWVhclwiLCBuZXdEYXRlUGFydHMueWVhciA/PyBiYXNlRGF0ZS55ZWFyKCkpXG4gICAgICAuc2V0KFwibW9udGhcIiwgbmV3RGF0ZVBhcnRzLm1vbnRoID8/IGJhc2VEYXRlLm1vbnRoKCkpIC8vIG1vbnRoIGlzIDAtaW5kZXhlZCBmb3IgZGF5anNcbiAgICAgIC5zZXQoXCJkYXRlXCIsIG5ld0RhdGVQYXJ0cy5kYXkgPz8gYmFzZURhdGUuZGF0ZSgpKVxuICAgICAgLnNldChcImhvdXJcIiwgbmV3RGF0ZVBhcnRzLmhvdXIgPz8gKGhhc1RpbWVQcmVjaXNpb24gPyBiYXNlRGF0ZS5ob3VyKCkgOiAwKSlcbiAgICAgIC5zZXQoXCJtaW51dGVcIiwgbmV3RGF0ZVBhcnRzLm1pbnV0ZSA/PyAoaGFzVGltZVByZWNpc2lvbiA/IGJhc2VEYXRlLm1pbnV0ZSgpIDogMCkpXG4gICAgICAuc2V0KFwic2Vjb25kXCIsIG5ld0RhdGVQYXJ0cy5zZWNvbmQgPz8gKGhhc1RpbWVQcmVjaXNpb24gPyBiYXNlRGF0ZS5zZWNvbmQoKSA6IDApKTtcblxuICAgIHNldFNlbGVjdGVkRGF0ZShuZXdEYXRlLnRvRGF0ZSgpKTtcbiAgICAvLyBzZXRDdXJyZW50TW9udGggc2hvdWxkIG9ubHkgYmUgdXBkYXRlZCBpZiB5ZWFyIG9yIG1vbnRoIGNoYW5nZXMsIG5vdCBqdXN0IHRpbWVcbiAgICBpZiAobmV3RGF0ZVBhcnRzLnllYXIgIT09IHVuZGVmaW5lZCB8fCBuZXdEYXRlUGFydHMubW9udGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgc2V0Q3VycmVudE1vbnRoKG5ld0RhdGUudG9EYXRlKCkpO1xuICAgIH1cblxuICAgIHNldFZhbHVlKGRiRm9ybWF0ID8gbmV3RGF0ZS5mb3JtYXQoZGJGb3JtYXQpIDogbmV3RGF0ZS50b0lTT1N0cmluZygpKTtcblxuICAgIC8vIFVwZGF0ZSBpbmRpdmlkdWFsIGlucHV0IGZpZWxkc1xuICAgIGlmIChuZXdEYXRlUGFydHMueWVhciAhPT0gdW5kZWZpbmVkKSBzZXRZZWFyVmFsdWUoU3RyaW5nKG5ld0RhdGVQYXJ0cy55ZWFyKSk7XG4gICAgaWYgKGhhc1RpbWVQcmVjaXNpb24pIHtcbiAgICAgIGlmIChuZXdEYXRlUGFydHMuaG91ciAhPT0gdW5kZWZpbmVkKSBzZXRIb3VyVmFsdWUoU3RyaW5nKG5ld0RhdGVQYXJ0cy5ob3VyKS5wYWRTdGFydCgyLCBcIjBcIikpO1xuICAgICAgaWYgKG5ld0RhdGVQYXJ0cy5taW51dGUgIT09IHVuZGVmaW5lZCkgc2V0TWludXRlVmFsdWUoU3RyaW5nKG5ld0RhdGVQYXJ0cy5taW51dGUpLnBhZFN0YXJ0KDIsIFwiMFwiKSk7XG4gICAgICBpZiAobmV3RGF0ZVBhcnRzLnNlY29uZCAhPT0gdW5kZWZpbmVkKSBzZXRTZWNvbmRWYWx1ZShTdHJpbmcobmV3RGF0ZVBhcnRzLnNlY29uZCkucGFkU3RhcnQoMiwgXCIwXCIpKTtcbiAgICB9XG4gIH07XG5cbiAgLy8gSGFuZGxlIG1vbnRoIHNlbGVjdGlvbiBjaGFuZ2VcbiAgY29uc3QgaGFuZGxlTW9udGhDaGFuZ2UgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IG1vbnRoSW5kZXggPSBwYXJzZUludCh2YWx1ZSk7XG4gICAgdXBkYXRlRGF0ZUZyb21JbnB1dHMoeyBtb250aDogbW9udGhJbmRleCB9KTtcbiAgfTtcblxuICAvLyBIYW5kbGUgeWVhciBpbnB1dCBjaGFuZ2VcbiAgY29uc3QgaGFuZGxlWWVhckNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIGNvbnN0IG5ld1llYXJTdHIgPSBlLnRhcmdldC52YWx1ZTtcbiAgICBzZXRZZWFyVmFsdWUobmV3WWVhclN0cik7XG4gICAgaWYgKC9eXFxkezEsNH0kLy50ZXN0KG5ld1llYXJTdHIpKSB7XG4gICAgICBjb25zdCB5ZWFyID0gcGFyc2VJbnQobmV3WWVhclN0cik7XG4gICAgICBpZiAobmV3WWVhclN0ci5sZW5ndGggPT09IDQpIHtcbiAgICAgICAgdXBkYXRlRGF0ZUZyb21JbnB1dHMoeyB5ZWFyIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVUaW1lQ2hhbmdlID0gKHBhcnQ6IFwiaG91clwiIHwgXCJtaW51dGVcIiB8IFwic2Vjb25kXCIsIHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBudW1lcmljVmFsdWUgPSBwYXJzZUludCh2YWx1ZSk7XG4gICAgaWYgKGlzTmFOKG51bWVyaWNWYWx1ZSkpIHJldHVybjtcblxuICAgIGNvbnN0IG5ld0hvdXIgPSBwYXJ0ID09PSBcImhvdXJcIiA/IG51bWVyaWNWYWx1ZSA6IHBhcnNlSW50KGhvdXJWYWx1ZSk7XG4gICAgY29uc3QgbmV3TWludXRlID0gcGFydCA9PT0gXCJtaW51dGVcIiA/IG51bWVyaWNWYWx1ZSA6IHBhcnNlSW50KG1pbnV0ZVZhbHVlKTtcbiAgICBjb25zdCBuZXdTZWNvbmQgPSBwYXJ0ID09PSBcInNlY29uZFwiID8gbnVtZXJpY1ZhbHVlIDogcGFyc2VJbnQoc2Vjb25kVmFsdWUpO1xuXG4gICAgaWYgKHBhcnQgPT09IFwiaG91clwiKSBzZXRIb3VyVmFsdWUodmFsdWUucGFkU3RhcnQoMiwgXCIwXCIpKTtcbiAgICBpZiAocGFydCA9PT0gXCJtaW51dGVcIikgc2V0TWludXRlVmFsdWUodmFsdWUucGFkU3RhcnQoMiwgXCIwXCIpKTtcbiAgICBpZiAocGFydCA9PT0gXCJzZWNvbmRcIikgc2V0U2Vjb25kVmFsdWUodmFsdWUucGFkU3RhcnQoMiwgXCIwXCIpKTtcblxuICAgIC8vIFVwZGF0ZSBvbmx5IGlmIHRoZSB2YWx1ZSBpcyBhIGNvbXBsZXRlIG51bWJlciBmb3IgdGhhdCBwYXJ0XG4gICAgY29uc3QgaXNDb21wbGV0ZUhvdXIgPSBwYXJ0ID09PSBcImhvdXJcIiAmJiB2YWx1ZS5sZW5ndGggPj0gMSAmJiBudW1lcmljVmFsdWUgPj0gMCAmJiBudW1lcmljVmFsdWUgPD0gMjM7XG4gICAgY29uc3QgaXNDb21wbGV0ZU1pbnV0ZSA9IHBhcnQgPT09IFwibWludXRlXCIgJiYgdmFsdWUubGVuZ3RoID49IDEgJiYgbnVtZXJpY1ZhbHVlID49IDAgJiYgbnVtZXJpY1ZhbHVlIDw9IDU5O1xuICAgIGNvbnN0IGlzQ29tcGxldGVTZWNvbmQgPSBwYXJ0ID09PSBcInNlY29uZFwiICYmIHZhbHVlLmxlbmd0aCA+PSAxICYmIG51bWVyaWNWYWx1ZSA+PSAwICYmIG51bWVyaWNWYWx1ZSA8PSA1OTtcblxuICAgIGlmIChcbiAgICAgIChwYXJ0ID09PSBcImhvdXJcIiAmJiBpc0NvbXBsZXRlSG91cikgfHxcbiAgICAgIChwYXJ0ID09PSBcIm1pbnV0ZVwiICYmIGlzQ29tcGxldGVNaW51dGUpIHx8XG4gICAgICAocGFydCA9PT0gXCJzZWNvbmRcIiAmJiBpc0NvbXBsZXRlU2Vjb25kKVxuICAgICkge1xuICAgICAgdXBkYXRlRGF0ZUZyb21JbnB1dHMoeyBob3VyOiBuZXdIb3VyLCBtaW51dGU6IG5ld01pbnV0ZSwgc2Vjb25kOiBuZXdTZWNvbmQgfSk7XG4gICAgfVxuICB9O1xuXG4gIC8vIFVwZGF0ZSB5ZWFyIHZhbHVlIHdoZW4gc2VsZWN0ZWREYXRlIGNoYW5nZXNcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoc2VsZWN0ZWREYXRlKSB7XG4gICAgICBjb25zdCBkanNEYXRlID0gZGF5anMoc2VsZWN0ZWREYXRlKTtcbiAgICAgIHNldFllYXJWYWx1ZShkanNEYXRlLnllYXIoKS50b1N0cmluZygpKTtcbiAgICAgIGlmIChoYXNUaW1lUHJlY2lzaW9uKSB7XG4gICAgICAgIHNldEhvdXJWYWx1ZShkanNEYXRlLmZvcm1hdChcIkhIXCIpKTtcbiAgICAgICAgc2V0TWludXRlVmFsdWUoZGpzRGF0ZS5mb3JtYXQoXCJtbVwiKSk7XG4gICAgICAgIHNldFNlY29uZFZhbHVlKGRqc0RhdGUuZm9ybWF0KFwic3NcIikpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW3NlbGVjdGVkRGF0ZSwgaGFzVGltZVByZWNpc2lvbl0pO1xuXG4gIC8vIFVwZGF0ZSBtb250aCBhbmQgeWVhciB3aGVuIGNhbGVuZGFyIG1vbnRoIGNoYW5nZXMgKGUuZy4gYnkgYXJyb3cgbmF2aWdhdGlvbiBpbiBjYWxlbmRhcilcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoY3VycmVudE1vbnRoKSB7XG4gICAgICAvLyBEbyBub3QgdXBkYXRlIHllYXJWYWx1ZSBpZiBzZWxlY3RlZERhdGUgaXMgcHJlc2VudCwgYXMgaXQncyB0aGUgc291cmNlIG9mIHRydXRoIGZvciB5ZWFyVmFsdWVcbiAgICAgIGlmICghc2VsZWN0ZWREYXRlKSB7XG4gICAgICAgIHNldFllYXJWYWx1ZShjdXJyZW50TW9udGguZ2V0RnVsbFllYXIoKS50b1N0cmluZygpKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtjdXJyZW50TW9udGgsIHNlbGVjdGVkRGF0ZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxmb3JtIG9uU3VibWl0PXtoYW5kbGVPblN1Ym1pdH0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtcHItW3ZhcigtLXN0dWRpby1jZWxsLXNwYWNpbmcpXVwiPlxuICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtY2VsbC1pbnB1dC1sZWFkaW5nIHBzLWZvbnQtbW9ubyBwcy1ib3JkZXItbm9uZSBwcy1zaGFkb3ctbm9uZSBmb2N1cy12aXNpYmxlOnBzLXJpbmctMCBwcy1yZXNpemUtbm9uZSBwcy1weC1bdmFyKC0tc3R1ZGlvLWNlbGwtc3BhY2luZyldXCJcbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVPbkNoYW5nZX1cbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIHZhbHVlPXtpbnB1dFZhbHVlfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJzdWJtaXRcIiBjbGFzc05hbWU9XCJwcy1zci1vbmx5XCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Zvcm0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTAgcHMtcC0yIHBzLWJvcmRlci10IHBzLWJvcmRlci10YWJsZS1ib3JkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtbWItMSBwcy1nYXAtMlwiPlxuICAgICAgICAgIDxTZWxlY3QgdmFsdWU9e2N1cnJlbnRNb250aFZhbHVlfSBvblZhbHVlQ2hhbmdlPXtoYW5kbGVNb250aENoYW5nZX0+XG4gICAgICAgICAgICA8U2VsZWN0VHJpZ2dlciBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLWJvcmRlci10cmFuc3BhcmVudCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1ib3JkZXItcHJpbWFyeSBwcy1zaGFkb3ctbm9uZSBwcy1iZy1uZXV0cmFsLTIwMC80MFwiPlxuICAgICAgICAgICAgICA8U2VsZWN0VmFsdWUgcGxhY2Vob2xkZXI9XCJNb250aFwiIC8+XG4gICAgICAgICAgICA8L1NlbGVjdFRyaWdnZXI+XG4gICAgICAgICAgICA8U2VsZWN0Q29udGVudD5cbiAgICAgICAgICAgICAge21vbnRocy5tYXAoKG1vbnRoKSA9PiAoXG4gICAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0ga2V5PXttb250aC52YWx1ZX0gdmFsdWU9e21vbnRoLnZhbHVlfT5cbiAgICAgICAgICAgICAgICAgIHttb250aC5sYWJlbH1cbiAgICAgICAgICAgICAgICA8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9TZWxlY3RDb250ZW50PlxuICAgICAgICAgIDwvU2VsZWN0PlxuXG4gICAgICAgICAgPElucHV0XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLXctMjAgcHMtdGV4dC1yaWdodCBwcy1ib3JkZXItdHJhbnNwYXJlbnQgcHMtc2hhZG93LW5vbmUgcHMtYmctbmV1dHJhbC0yMDAvNDBcIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgdmFsdWU9e3llYXJWYWx1ZX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVZZWFyQ2hhbmdlfVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJZZWFyXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8RGF5UGlja2VyV3JhcHBlclxuICAgICAgICAgIHNlbGVjdGVkPXtzZWxlY3RlZERhdGV9XG4gICAgICAgICAgbW9udGg9e2N1cnJlbnRNb250aH1cbiAgICAgICAgICBvblNlbGVjdD17aGFuZGxlQ2FsZW5kYXJTZWxlY3R9XG4gICAgICAgICAgb25Nb250aENoYW5nZT17c2V0Q3VycmVudE1vbnRofVxuICAgICAgICAgIGRpc2FibGVkPXtyZWFkb25seX1cbiAgICAgICAgLz5cbiAgICAgICAge2hhc1RpbWVQcmVjaXNpb24gJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1zdGFydCBwcy1nYXAtMSBwcy1tdC0xXCI+XG4gICAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtdGV4dC14cyBwcy13LTE2IHBzLXRleHQtcmlnaHQgcHMtYm9yZGVyLXRyYW5zcGFyZW50IHBzLXNoYWRvdy1ub25lIHBzLWJnLW5ldXRyYWwtMjAwLzQwXCJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgIHZhbHVlPXtob3VyVmFsdWV9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlVGltZUNoYW5nZShcImhvdXJcIiwgZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkhIXCJcbiAgICAgICAgICAgICAgbWluPXswfVxuICAgICAgICAgICAgICBtYXg9ezIzfVxuICAgICAgICAgICAgICBtYXhMZW5ndGg9ezJ9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtyZWFkb25seX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPjo8L3NwYW4+XG4gICAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtdGV4dC14cyBwcy13LTE2IHBzLXRleHQtcmlnaHQgcHMtYm9yZGVyLXRyYW5zcGFyZW50IHBzLXNoYWRvdy1ub25lIHBzLWJnLW5ldXRyYWwtMjAwLzQwXCJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgIHZhbHVlPXttaW51dGVWYWx1ZX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVUaW1lQ2hhbmdlKFwibWludXRlXCIsIGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJtbVwiXG4gICAgICAgICAgICAgIG1pbj17MH1cbiAgICAgICAgICAgICAgbWF4PXs1OX1cbiAgICAgICAgICAgICAgbWF4TGVuZ3RoPXsyfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17cmVhZG9ubHl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtdGV4dC14cyBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIj46PC9zcGFuPlxuICAgICAgICAgICAgPElucHV0XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtdy0xNiBwcy10ZXh0LXJpZ2h0IHBzLWJvcmRlci10cmFuc3BhcmVudCBwcy1zaGFkb3ctbm9uZSBwcy1iZy1uZXV0cmFsLTIwMC80MFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICB2YWx1ZT17c2Vjb25kVmFsdWV9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlVGltZUNoYW5nZShcInNlY29uZFwiLCBlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwic3NcIlxuICAgICAgICAgICAgICBtaW49ezB9XG4gICAgICAgICAgICAgIG1heD17NTl9XG4gICAgICAgICAgICAgIG1heExlbmd0aD17Mn1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e3JlYWRvbmx5fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgICAgPGNvZGUgY2xhc3NOYW1lPVwicHMtc3Itb25seVwiPntmb3JtYXR0ZWREYXRlfTwvY29kZT5cbiAgICAgIDwvZGl2PlxuICAgICAgPElucHV0QWN0aW9uc1xuICAgICAgICBvblNhdmU9e2hhbmRsZVNhdmV9XG4gICAgICAgIG9uQ2FuY2VsPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgIHJlYWRvbmx5PXtyZWFkb25seX1cbiAgICAgICAgb25TZXROb3c9e2hhbmRsZVNldE5vd31cbiAgICAgICAgc2hvd1NldE5vdz17dHJ1ZX1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG5cbi8vIEEgd3JhcHBlciBjb21wb25lbnQgdG8gZW5zdXJlIHByb3BlciBwcm9wcyBhcmUgcGFzc2VkIHRvIERheVBpY2tlclxuZnVuY3Rpb24gRGF5UGlja2VyV3JhcHBlcih7XG4gIHNlbGVjdGVkLFxuICBtb250aCxcbiAgb25TZWxlY3QsXG4gIG9uTW9udGhDaGFuZ2UsXG4gIGRpc2FibGVkLFxufToge1xuICBzZWxlY3RlZD86IERhdGU7XG4gIG1vbnRoOiBEYXRlO1xuICBvblNlbGVjdDogKGRhdGU6IERhdGUgfCB1bmRlZmluZWQpID0+IHZvaWQ7XG4gIG9uTW9udGhDaGFuZ2U6IChkYXRlOiBEYXRlKSA9PiB2b2lkO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG59KSB7XG4gIHJldHVybiAoXG4gICAgPENhbGVuZGFyXG4gICAgICBtb2RlPVwic2luZ2xlXCJcbiAgICAgIHNlbGVjdGVkPXtzZWxlY3RlZH1cbiAgICAgIG9uU2VsZWN0PXtvblNlbGVjdH1cbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgIG1vbnRoPXttb250aH1cbiAgICAgIG9uTW9udGhDaGFuZ2U9e29uTW9udGhDaGFuZ2V9XG4gICAgICBjbGFzc05hbWU9XCJwcy13LWZ1bGxcIlxuICAgICAgY2FwdGlvbkxheW91dD1cImRyb3Bkb3duXCJcbiAgICAvPlxuICApO1xufVxuIiwgImltcG9ydCB7IERheVBpY2tlciB9IGZyb20gXCJyZWFjdC1kYXktcGlja2VyXCI7XG5cbmltcG9ydCB7IGJ1dHRvblZhcmlhbnRzIH0gZnJvbSBcIkAvdWkvY29tcG9uZW50cy91aS9idXR0b25cIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmV4cG9ydCB0eXBlIENhbGVuZGFyUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgRGF5UGlja2VyPiAmIHtcbiAgY2FwdGlvbkxhYmVsQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBkYXlDbGFzc05hbWU/OiBzdHJpbmc7XG4gIGRheUJ1dHRvbkNsYXNzTmFtZT86IHN0cmluZztcbiAgZHJvcGRvd25zQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBmb290ZXJDbGFzc05hbWU/OiBzdHJpbmc7XG4gIG1vbnRoQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBtb250aENhcHRpb25DbGFzc05hbWU/OiBzdHJpbmc7XG4gIG1vbnRoR3JpZENsYXNzTmFtZT86IHN0cmluZztcbiAgbW9udGhzQ2xhc3NOYW1lPzogc3RyaW5nO1xuICB3ZWVrQ2xhc3NOYW1lPzogc3RyaW5nO1xuICB3ZWVrZGF5Q2xhc3NOYW1lPzogc3RyaW5nO1xuICB3ZWVrZGF5c0NsYXNzTmFtZT86IHN0cmluZztcbiAgcmFuZ2VFbmRDbGFzc05hbWU/OiBzdHJpbmc7XG4gIHJhbmdlTWlkZGxlQ2xhc3NOYW1lPzogc3RyaW5nO1xuICByYW5nZVN0YXJ0Q2xhc3NOYW1lPzogc3RyaW5nO1xuICBzZWxlY3RlZENsYXNzTmFtZT86IHN0cmluZztcbiAgZGlzYWJsZWRDbGFzc05hbWU/OiBzdHJpbmc7XG4gIGhpZGRlbkNsYXNzTmFtZT86IHN0cmluZztcbiAgb3V0c2lkZUNsYXNzTmFtZT86IHN0cmluZztcbiAgdG9kYXlDbGFzc05hbWU/OiBzdHJpbmc7XG4gIHNlbGVjdFRyaWdnZXJDbGFzc05hbWU/OiBzdHJpbmc7XG59O1xuXG5mdW5jdGlvbiBDYWxlbmRhcih7IGNsYXNzTmFtZSwgY2xhc3NOYW1lcywgc2hvd091dHNpZGVEYXlzID0gdHJ1ZSwgaGlkZU5hdmlnYXRpb24sIC4uLnByb3BzIH06IENhbGVuZGFyUHJvcHMpIHtcbiAgY29uc3QgX21vbnRoc0NsYXNzTmFtZSA9IGNuKFwicmVsYXRpdmUgZmxleCBmbGV4LWNvbCBnYXAtNCBzbTpmbGV4LXJvd1wiLCBwcm9wcy5tb250aHNDbGFzc05hbWUpO1xuICBjb25zdCBfbW9udGhDYXB0aW9uQ2xhc3NOYW1lID0gY24oXCJyZWxhdGl2ZSBmbGV4IGgtNyBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIiwgcHJvcHMubW9udGhDYXB0aW9uQ2xhc3NOYW1lKTtcbiAgY29uc3QgX2Ryb3Bkb3duc0NsYXNzTmFtZSA9IGNuKFxuICAgIFwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXIgcHMtZ2FwLTIgcHMtdy1mdWxsXCIsXG4gICAgaGlkZU5hdmlnYXRpb24gPyBcInBzLXctZnVsbFwiIDogXCJwcy1oaWRkZW5cIixcbiAgICBwcm9wcy5kcm9wZG93bnNDbGFzc05hbWUsXG4gICk7XG4gIGNvbnN0IF9mb290ZXJDbGFzc05hbWUgPSBjbihcInBzLXB0LTMgcHMtdGV4dC14c1wiLCBwcm9wcy5mb290ZXJDbGFzc05hbWUpO1xuICBjb25zdCBfd2Vla2RheXNDbGFzc05hbWUgPSBjbihcInBzLWZsZXhcIiwgcHJvcHMud2Vla2RheXNDbGFzc05hbWUpO1xuICBjb25zdCBfd2Vla2RheUNsYXNzTmFtZSA9IGNuKFwicHMtdy05IHBzLXRleHQteHMgcHMtZm9udC1ub3JtYWwgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsIHByb3BzLndlZWtkYXlDbGFzc05hbWUpO1xuICBjb25zdCBfY2FwdGlvbkxhYmVsQ2xhc3NOYW1lID0gY24oXCJwcy10cnVuY2F0ZSBwcy10ZXh0LXhzIHBzLWZvbnQtbWVkaXVtXCIsIHByb3BzLmNhcHRpb25MYWJlbENsYXNzTmFtZSk7XG5cbiAgY29uc3QgX21vbnRoR3JpZENsYXNzTmFtZSA9IGNuKFwicHMtbXgtYXV0byBwcy1tdC00XCIsIHByb3BzLm1vbnRoR3JpZENsYXNzTmFtZSk7XG4gIGNvbnN0IF93ZWVrQ2xhc3NOYW1lID0gY24oXCJwcy1tdC0wIHBzLWZsZXggcHMtdy1tYXggcHMtaXRlbXMtc3RhcnRcIiwgcHJvcHMud2Vla0NsYXNzTmFtZSk7XG4gIGNvbnN0IF9kYXlDbGFzc05hbWUgPSBjbihcbiAgICBcInBzLWZsZXggcHMtc2l6ZS05IHBzLWZsZXgtMSBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXIgcHMtcC0wIHBzLXRleHQteHNcIixcbiAgICBwcm9wcy5kYXlDbGFzc05hbWUsXG4gICk7XG4gIGNvbnN0IF9kYXlCdXR0b25DbGFzc05hbWUgPSBjbihcbiAgICBidXR0b25WYXJpYW50cyh7IHZhcmlhbnQ6IFwiZ2hvc3RcIiB9KSxcbiAgICBcInBzLXNpemUtOCBwcy1yb3VuZGVkLW1kIHBzLXAtMCBwcy1mb250LW5vcm1hbCBwcy10ZXh0LXhzIHBzLXRyYW5zaXRpb24tbm9uZSBhcmlhLXNlbGVjdGVkOnBzLW9wYWNpdHktMTAwXCIsXG4gICAgcHJvcHMuZGF5QnV0dG9uQ2xhc3NOYW1lLFxuICApO1xuXG4gIGNvbnN0IGJ1dHRvblJhbmdlQ2xhc3NOYW1lID1cbiAgICBcInBzLWJnLWFjY2VudCBwcy1bJj5idXR0b25dOnBzLWJnLXByaW1hcnkgWyY+YnV0dG9uXTpwcy10ZXh0LXByaW1hcnktZm9yZWdyb3VuZCBbJj5idXR0b25dOnBzLWhvdmVyOnBzLWJnLXByaW1hcnkgWyY+YnV0dG9uXTpwcy1ob3Zlcjpwcy10ZXh0LXByaW1hcnktZm9yZWdyb3VuZFwiO1xuICBjb25zdCBfcmFuZ2VTdGFydENsYXNzTmFtZSA9IGNuKGJ1dHRvblJhbmdlQ2xhc3NOYW1lLCBcInBzLXJvdW5kZWQtcy1tZFwiLCBwcm9wcy5yYW5nZVN0YXJ0Q2xhc3NOYW1lKTtcbiAgY29uc3QgX3JhbmdlRW5kQ2xhc3NOYW1lID0gY24oYnV0dG9uUmFuZ2VDbGFzc05hbWUsIFwicHMtcm91bmRlZC1lLW1kXCIsIHByb3BzLnJhbmdlRW5kQ2xhc3NOYW1lKTtcbiAgY29uc3QgX3JhbmdlTWlkZGxlQ2xhc3NOYW1lID0gY24oXG4gICAgXCJwcy1iZy1hY2NlbnQgIXBzLXRleHQtZm9yZWdyb3VuZCBbJj5idXR0b25dOnBzLWJnLXRyYW5zcGFyZW50IFsmPmJ1dHRvbl06IXBzLXRleHQtZm9yZWdyb3VuZCBbJj5idXR0b25dOmhvdmVyOnBzLWJnLXRyYW5zcGFyZW50IFsmPmJ1dHRvbl06aG92ZXI6IXBzLXRleHQtZm9yZWdyb3VuZFwiLFxuICAgIHByb3BzLnJhbmdlTWlkZGxlQ2xhc3NOYW1lLFxuICApO1xuICBjb25zdCBfc2VsZWN0ZWRDbGFzc05hbWUgPSBjbihcbiAgICBcIlsmPmJ1dHRvbl06cHMtYmctcHJpbWFyeSBbJj5idXR0b25dOnBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIFsmPmJ1dHRvbl06cHMtaG92ZXI6cHMtYmctcHJpbWFyeSBbJj5idXR0b25dOnBzLWhvdmVyOnBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kXCIsXG4gICAgXCJbJlthcmlhLXNlbGVjdGVkXT5idXR0b25dOnBzLWJnLXByaW1hcnkgWyZbYXJpYS1zZWxlY3RlZF0+YnV0dG9uXTpwcy10ZXh0LXByaW1hcnktZm9yZWdyb3VuZFwiLFxuICAgIHByb3BzLnNlbGVjdGVkQ2xhc3NOYW1lLFxuICApO1xuICBjb25zdCBfdG9kYXlDbGFzc05hbWUgPSBjbihcIlsmPmJ1dHRvbl06cHMtZm9udC1ib2xkIFsmPmJ1dHRvbl06cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZFwiLCBwcm9wcy50b2RheUNsYXNzTmFtZSk7XG4gIGNvbnN0IF9vdXRzaWRlQ2xhc3NOYW1lID0gY24oXG4gICAgXCJwcy10ZXh0LW11dGVkLWZvcmVncm91bmQgcHMtb3BhY2l0eS01MCBhcmlhLXNlbGVjdGVkOnBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZCBhcmlhLXNlbGVjdGVkOnBzLW9wYWNpdHktMzBcIixcbiAgICBwcm9wcy5vdXRzaWRlQ2xhc3NOYW1lLFxuICApO1xuICBjb25zdCBfZGlzYWJsZWRDbGFzc05hbWUgPSBjbihcInBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZCBwcy1vcGFjaXR5LTUwXCIsIHByb3BzLmRpc2FibGVkQ2xhc3NOYW1lKTtcbiAgY29uc3QgX2hpZGRlbkNsYXNzTmFtZSA9IGNuKFwicHMtaW52aXNpYmxlIHBzLWZsZXgtMVwiLCBwcm9wcy5oaWRkZW5DbGFzc05hbWUpO1xuXG4gIHJldHVybiAoXG4gICAgPERheVBpY2tlclxuICAgICAgbW9kZT1cInNpbmdsZVwiXG4gICAgICBjYXB0aW9uTGF5b3V0PVwibGFiZWxcIlxuICAgICAgaGlkZU5hdmlnYXRpb25cbiAgICAgIHNob3dPdXRzaWRlRGF5cz17c2hvd091dHNpZGVEYXlzfVxuICAgICAgY2xhc3NOYW1lPXtjbihcInBzLXAtMFwiLCBjbGFzc05hbWUpfVxuICAgICAgY2xhc3NOYW1lcz17e1xuICAgICAgICBjYXB0aW9uX2xhYmVsOiBfY2FwdGlvbkxhYmVsQ2xhc3NOYW1lLFxuICAgICAgICBkYXk6IF9kYXlDbGFzc05hbWUsXG4gICAgICAgIGRheV9idXR0b246IF9kYXlCdXR0b25DbGFzc05hbWUsXG4gICAgICAgIGRyb3Bkb3duczogX2Ryb3Bkb3duc0NsYXNzTmFtZSxcbiAgICAgICAgZm9vdGVyOiBfZm9vdGVyQ2xhc3NOYW1lLFxuICAgICAgICBtb250aDogcHJvcHMubW9udGhDbGFzc05hbWUsXG4gICAgICAgIG1vbnRoX2NhcHRpb246IF9tb250aENhcHRpb25DbGFzc05hbWUsXG4gICAgICAgIG1vbnRoX2dyaWQ6IF9tb250aEdyaWRDbGFzc05hbWUsXG4gICAgICAgIG1vbnRoczogX21vbnRoc0NsYXNzTmFtZSxcbiAgICAgICAgd2VlazogX3dlZWtDbGFzc05hbWUsXG4gICAgICAgIHdlZWtkYXk6IF93ZWVrZGF5Q2xhc3NOYW1lLFxuICAgICAgICB3ZWVrZGF5czogX3dlZWtkYXlzQ2xhc3NOYW1lLFxuICAgICAgICByYW5nZV9lbmQ6IF9yYW5nZUVuZENsYXNzTmFtZSxcbiAgICAgICAgcmFuZ2VfbWlkZGxlOiBfcmFuZ2VNaWRkbGVDbGFzc05hbWUsXG4gICAgICAgIHJhbmdlX3N0YXJ0OiBfcmFuZ2VTdGFydENsYXNzTmFtZSxcbiAgICAgICAgc2VsZWN0ZWQ6IF9zZWxlY3RlZENsYXNzTmFtZSxcbiAgICAgICAgZGlzYWJsZWQ6IF9kaXNhYmxlZENsYXNzTmFtZSxcbiAgICAgICAgaGlkZGVuOiBfaGlkZGVuQ2xhc3NOYW1lLFxuICAgICAgICBvdXRzaWRlOiBfb3V0c2lkZUNsYXNzTmFtZSxcbiAgICAgICAgdG9kYXk6IF90b2RheUNsYXNzTmFtZSxcbiAgICAgICAgbmF2OiBcInBzLWhpZGRlblwiLFxuICAgICAgICAuLi5jbGFzc05hbWVzLFxuICAgICAgfX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApO1xufVxuQ2FsZW5kYXIuZGlzcGxheU5hbWUgPSBcIkNhbGVuZGFyXCI7XG5cbmV4cG9ydCB7IENhbGVuZGFyIH07XG4iLCAiaW1wb3J0IHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IGludGVyZmFjZSBVc2VJbnB1dFByb3BzIHtcbiAgaW5pdGlhbFZhbHVlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlSW5wdXQocHJvcHM6IFVzZUlucHV0UHJvcHMpIHtcbiAgY29uc3QgeyBpbml0aWFsVmFsdWUgfSA9IHByb3BzO1xuXG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGU8c3RyaW5nPihpbml0aWFsVmFsdWUgPz8gXCJcIik7XG5cbiAgY29uc3QgaGFuZGxlT25DaGFuZ2UgPSAoZXZlbnQ6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgc2V0VmFsdWUoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgfTtcblxuICByZXR1cm4geyBoYW5kbGVPbkNoYW5nZSwgdmFsdWUsIHNldFZhbHVlIH07XG59XG4iLCAiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgYmFkZ2VWYXJpYW50cyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2JhZGdlXCI7XG5pbXBvcnQgeyB1c2VQb3BvdmVyQWN0aW9ucyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbFwiO1xuaW1wb3J0IHsgSW5wdXRBY3Rpb25zIH0gZnJvbSBcIi4vaW5wdXQtYWN0aW9uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVudW1JbnB1dFByb3BzIHtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiBzdHJpbmcgfCBudWxsKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIG9wdGlvbnM/OiBzdHJpbmdbXTtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBFbnVtSW5wdXQocHJvcHM6IEVudW1JbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgb25TdWJtaXQsIGNvbHVtbiwgdmFsdWUsIG9wdGlvbnMgPSBbXSwgcmVhZG9ubHkgfSA9IHByb3BzO1xuICBjb25zdCBpc051bGxhYmxlID0gY29sdW1uLm51bGxhYmxlID09PSB0cnVlO1xuICBjb25zdCBpbml0aWFsVmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuICBjb25zdCBbY3VycmVudFZhbHVlLCBzZXRDdXJyZW50VmFsdWVdID0gdXNlU3RhdGUoaW5pdGlhbFZhbHVlKTtcbiAgY29uc3QgW3NldFRvTnVsbCwgc2V0U2V0VG9OdWxsXSA9IHVzZVN0YXRlPGJvb2xlYW4+KHZhbHVlID09PSBudWxsKTtcblxuICBjb25zdCBoYW5kbGVTZWxlY3RPcHRpb24gPSAob3B0aW9uOiBzdHJpbmcpID0+IHtcbiAgICBzZXRDdXJyZW50VmFsdWUob3B0aW9uKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVOdWxsQ2hhbmdlID0gKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBzZXRTZXRUb051bGwoY2hlY2tlZCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHNldFRvTnVsbCkge1xuICAgICAgaWYgKHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgIG9uU3VibWl0KG51bGwpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudFZhbHVlICE9PSBpbml0aWFsVmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KGN1cnJlbnRWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbY3VycmVudFZhbHVlLCBpbml0aWFsVmFsdWUsIG9uU3VibWl0LCBzZXRUb051bGwsIHZhbHVlXSk7XG5cbiAgY29uc3QgY2FuY2VsQWN0aW9uID0gKCkgPT4ge1xuICAgIHNldEN1cnJlbnRWYWx1ZShpbml0aWFsVmFsdWUpO1xuICAgIHNldFNldFRvTnVsbCh2YWx1ZSA9PT0gbnVsbCk7IC8vIFJlc2V0IG51bGwgc3RhdGUgYXMgd2VsbFxuICB9O1xuXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLWZvbnQtbW9ubyBwcy1oLVt2YXIoLS1zdHVkaW8tY2VsbC1oZWlnaHQpXSBwcy1weC0yIHBzLXB5LTAgcHMtdy1mdWxsIHBzLXRleHQteHMgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgIHtjdXJyZW50VmFsdWV9XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1mbGV4LXdyYXAgcHMtZ2FwLTIgcHMtcC0yIHBzLW1pbi13LVt2YXIoLS1yYWRpeC1wb3BvdmVyLXRyaWdnZXItd2lkdGgpXSBwcy1tYXgtdy1bNTAwcHhdIHctZnVsbCBwcy1ib3JkZXItdCBwcy1ib3JkZXItdGFibGUtYm9yZGVyIHBzLW92ZXJmbG93LXktc2Nyb2xsIHBzLW1heC1oLTMyXCI+XG4gICAgICAgIHtvcHRpb25zLm1hcCgob3B0aW9uKSA9PiAoXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAga2V5PXtvcHRpb259XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVTZWxlY3RPcHRpb24ob3B0aW9uKX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17YmFkZ2VWYXJpYW50cyh7IHZhcmlhbnQ6IG9wdGlvbiA9PT0gY3VycmVudFZhbHVlID8gXCJkZWZhdWx0XCIgOiBcIm91dGxpbmVcIiB9KX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtzZXRUb051bGwgfHwgcmVhZG9ubHl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge29wdGlvbn1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgKSl9XG4gICAgICA8L2Rpdj5cbiAgICAgIDxJbnB1dEFjdGlvbnNcbiAgICAgICAgb25TYXZlPXtoYW5kbGVTYXZlfVxuICAgICAgICBvbkNhbmNlbD17aGFuZGxlQ2FuY2VsfVxuICAgICAgICBvbk51bGxDaGFuZ2U9e2lzTnVsbGFibGUgPyBoYW5kbGVOdWxsQ2hhbmdlIDogdW5kZWZpbmVkfVxuICAgICAgICBpc051bGw9e3NldFRvTnVsbH1cbiAgICAgICAgcmVhZG9ubHk9e3JlYWRvbmx5fVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VQb3BvdmVyQWN0aW9ucyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbFwiO1xuaW1wb3J0IHsgSW5wdXRBY3Rpb25zIH0gZnJvbSBcIi4vaW5wdXQtYWN0aW9uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEpzb25JbnB1dFByb3BzIHtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiB1bmtub3duKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gSnNvbklucHV0KHByb3BzOiBKc29uSW5wdXRQcm9wcykge1xuICBjb25zdCB7IHZhbHVlLCBvblN1Ym1pdCwgY29sdW1uLCByZWFkb25seSB9ID0gcHJvcHM7XG4gIGNvbnN0IGlzTnVsbGFibGUgPSBjb2x1bW4ubnVsbGFibGUgPT09IHRydWU7XG4gIGNvbnN0IGluaXRpYWxWYWx1ZSA9IHZhbHVlID09PSBudWxsID8gXCJcIiA6IEpTT04uc3RyaW5naWZ5KHZhbHVlLCBudWxsLCAyKTtcbiAgY29uc3QgW2N1cnJlbnRWYWx1ZSwgc2V0Q3VycmVudFZhbHVlXSA9IHVzZVN0YXRlPHN0cmluZz4oaW5pdGlhbFZhbHVlKTtcbiAgY29uc3QgW3NldFRvTnVsbCwgc2V0U2V0VG9OdWxsXSA9IHVzZVN0YXRlPGJvb2xlYW4+KHZhbHVlID09PSBudWxsKTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoZTogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTFRleHRBcmVhRWxlbWVudD4pID0+IHtcbiAgICBzZXRDdXJyZW50VmFsdWUoZS50YXJnZXQudmFsdWUpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU51bGxDaGFuZ2UgPSAoY2hlY2tlZDogYm9vbGVhbikgPT4ge1xuICAgIHNldFNldFRvTnVsbChjaGVja2VkKTtcbiAgfTtcblxuICAvLyBTdWJtaXQgaGFuZGxlciB0aGF0IG9ubHkgc3VibWl0cyBpZiB0aGUgdmFsdWUgaGFzIGNoYW5nZWRcbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHNldFRvTnVsbCkge1xuICAgICAgaWYgKHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgIG9uU3VibWl0KG51bGwpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBqc29uVmFsdWUgPSBjdXJyZW50VmFsdWUgPT09IFwiXCIgPyBudWxsIDogKEpTT04ucGFyc2UoY3VycmVudFZhbHVlKSBhcyBvYmplY3QpO1xuXG4gICAgLy8gT25seSBzdWJtaXQgaWYgdGhlIHZhbHVlIGhhcyBjaGFuZ2VkXG4gICAgaWYgKGpzb25WYWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KGpzb25WYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbY3VycmVudFZhbHVlLCB2YWx1ZSwgb25TdWJtaXQsIHNldFRvTnVsbF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHtcbiAgICAvLyBSZXNldCB0aGUgaW50ZXJuYWwgc3RhdGUgdG8gbWF0Y2ggdGhlIG9yaWdpbmFsIHZhbHVlXG4gICAgc2V0Q3VycmVudFZhbHVlKGluaXRpYWxWYWx1ZSk7XG4gICAgc2V0U2V0VG9OdWxsKHZhbHVlID09PSBudWxsKTtcbiAgfTtcblxuICAvLyBVc2Ugb3VyIGhvb2sgdG8gZ2V0IGhhbmRsZXJzIHRoYXQgaW5jbHVkZSBwb3BvdmVyIGNsb3NpbmdcbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTQgcHMtcHktMFwiPlxuICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICByb3dzPXs1fVxuICAgICAgICAgIHZhbHVlPXtjdXJyZW50VmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICBkaXNhYmxlZD17c2V0VG9OdWxsIHx8IHJlYWRvbmx5fVxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWNlbGwtaW5wdXQtYmFzZSBwcy1hcHBlYXJhbmNlLW5vbmUgcHMtdy1mdWxsIHBzLWZvbnQtbW9ubyBwcy1ib3JkZXItbm9uZSBwcy1vdXRsaW5lLW5vbmUgcHMtc2hhZG93LW5vbmUgcHMtYmctdHJhbnNwYXJlbnQgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTAgcHMtcmVzaXplIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgIGxhbmc9XCJlbl9FTlwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxJbnB1dEFjdGlvbnNcbiAgICAgICAgb25TYXZlPXtoYW5kbGVTYXZlfVxuICAgICAgICBvbkNhbmNlbD17aGFuZGxlQ2FuY2VsfVxuICAgICAgICBvbk51bGxDaGFuZ2U9e2lzTnVsbGFibGUgPyBoYW5kbGVOdWxsQ2hhbmdlIDogdW5kZWZpbmVkfVxuICAgICAgICBpc051bGw9e3NldFRvTnVsbH1cbiAgICAgICAgcmVhZG9ubHk9e3JlYWRvbmx5fVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBMYWJlbCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2xhYmVsXCI7XG5pbXBvcnQgeyB1c2VQb3BvdmVyQWN0aW9ucyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbFwiO1xuaW1wb3J0IHsgSW5wdXRBY3Rpb25zIH0gZnJvbSBcIi4vaW5wdXQtYWN0aW9uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE51bWVyaWNJbnB1dFByb3BzIHtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiB1bmtub3duKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gTnVtZXJpY0lucHV0KHByb3BzOiBOdW1lcmljSW5wdXRQcm9wcykge1xuICBjb25zdCB7IHZhbHVlLCBvblN1Ym1pdCwgY29sdW1uLCByZWFkb25seSB9ID0gcHJvcHM7XG4gIGNvbnN0IGlzTnVsbGFibGUgPSBjb2x1bW4ubnVsbGFibGUgPT09IHRydWU7XG4gIGNvbnN0IFtjdXJyZW50VmFsdWUsIHNldEN1cnJlbnRWYWx1ZV0gPSB1c2VTdGF0ZTxzdHJpbmc+KHZhbHVlID09PSBudWxsID8gXCJcIiA6IFN0cmluZyh2YWx1ZSkpO1xuICBjb25zdCBbc2V0VG9OdWxsLCBzZXRTZXRUb051bGxdID0gdXNlU3RhdGU8Ym9vbGVhbj4odmFsdWUgPT09IG51bGwpO1xuICBjb25zdCBpbml0aWFsVmFsdWUgPSB2YWx1ZSA9PT0gbnVsbCA/IFwiXCIgOiBTdHJpbmcodmFsdWUpO1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIHNldEN1cnJlbnRWYWx1ZShlLnRhcmdldC52YWx1ZSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlTnVsbENoYW5nZSA9IChjaGVja2VkOiBib29sZWFuKSA9PiB7XG4gICAgc2V0U2V0VG9OdWxsKGNoZWNrZWQpO1xuICB9O1xuXG4gIC8vIFN1Ym1pdCBoYW5kbGVyIHRoYXQgb25seSBzdWJtaXRzIGlmIHRoZSB2YWx1ZSBoYXMgY2hhbmdlZFxuICBjb25zdCBoYW5kbGVJbnB1dFN1Ym1pdCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoc2V0VG9OdWxsKSB7XG4gICAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgb25TdWJtaXQobnVsbCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIENvbnZlcnQgdG8gbnVtYmVyXG4gICAgY29uc3QgbnVtZXJpY1ZhbHVlID0gY3VycmVudFZhbHVlID09PSBcIlwiID8gbnVsbCA6IE51bWJlcihjdXJyZW50VmFsdWUpO1xuXG4gICAgLy8gT25seSBzdWJtaXQgaWYgdGhlIHZhbHVlIGhhcyBjaGFuZ2VkXG4gICAgaWYgKGN1cnJlbnRWYWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KG51bWVyaWNWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbY3VycmVudFZhbHVlLCB2YWx1ZSwgb25TdWJtaXQsIHNldFRvTnVsbF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHtcbiAgICAvLyBSZXNldCB0aGUgaW50ZXJuYWwgc3RhdGUgdG8gbWF0Y2ggdGhlIG9yaWdpbmFsIHZhbHVlXG4gICAgc2V0Q3VycmVudFZhbHVlKGluaXRpYWxWYWx1ZSk7XG4gICAgc2V0U2V0VG9OdWxsKHZhbHVlID09PSBudWxsKTtcbiAgfTtcblxuICAvLyBVc2Ugb3VyIGhvb2sgdG8gZ2V0IGhhbmRsZXJzIHRoYXQgaW5jbHVkZSBwb3BvdmVyIGNsb3NpbmdcbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1pdGVtcy1jZW50ZXIgcHMtaC1bdmFyKC0tc3R1ZGlvLWNlbGwtaGVpZ2h0KV0gcHMtZ2FwLTQgcHMtcHktMFwiPlxuICAgICAgICA8TGFiZWwgaHRtbEZvcj1cIm51bWVyaWMtaW5wdXRcIiBjbGFzc05hbWU9XCJwcy1zci1vbmx5XCI+XG4gICAgICAgICAgTnVtZXJpY1xuICAgICAgICA8L0xhYmVsPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgaW5wdXRNb2RlPVwibnVtZXJpY1wiXG4gICAgICAgICAgcGF0dGVybj1cIlxcZCpcIlxuICAgICAgICAgIHZhbHVlPXtjdXJyZW50VmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICBkaXNhYmxlZD17c2V0VG9OdWxsIHx8IHJlYWRvbmx5fVxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWNlbGwtaW5wdXQtbGVhZGluZyBwcy1hcHBlYXJhbmNlLW5vbmUgcHMtdy1mdWxsIHBzLWZvbnQtbW9ubyBwcy1ib3JkZXItbm9uZSBwcy1vdXRsaW5lLW5vbmUgcHMtc2hhZG93LW5vbmUgcHMtYmctdHJhbnNwYXJlbnQgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTAgcHMtcmVzaXplLW5vbmUgcHMtcHgtW3ZhcigtLXN0dWRpby1jZWxsLXNwYWNpbmcpXVwiXG4gICAgICAgICAgc3RlcD1cImFueVwiXG4gICAgICAgICAgbGFuZz1cImVuX0VOXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPElucHV0QWN0aW9uc1xuICAgICAgICBvblNhdmU9e2hhbmRsZVNhdmV9XG4gICAgICAgIG9uQ2FuY2VsPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgIG9uTnVsbENoYW5nZT17aXNOdWxsYWJsZSA/IGhhbmRsZU51bGxDaGFuZ2UgOiB1bmRlZmluZWR9XG4gICAgICAgIGlzTnVsbD17c2V0VG9OdWxsfVxuICAgICAgICByZWFkb25seT17cmVhZG9ubHl9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCB0eXBlIHsgRm9ybUV2ZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IElucHV0IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvaW5wdXRcIjtcbmltcG9ydCB7IHVzZVBvcG92ZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBJbnB1dEFjdGlvbnMgfSBmcm9tIFwiLi9pbnB1dC1hY3Rpb25zXCI7XG5pbXBvcnQgeyB1c2VJbnB1dCB9IGZyb20gXCIuL3VzZS1pbnB1dFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJhd0lucHV0UHJvcHMge1xuICBvblN1Ym1pdCh0aGlzOiB2b2lkLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gUmF3SW5wdXQocHJvcHM6IFJhd0lucHV0UHJvcHMpIHtcbiAgY29uc3QgeyBvblN1Ym1pdCwgdmFsdWUsIHJlYWRvbmx5IH0gPSBwcm9wcztcblxuICBjb25zdCBpbml0aWFsVmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuXG4gIGNvbnN0IHsgaGFuZGxlT25DaGFuZ2UsIHZhbHVlOiBpbnB1dFZhbHVlIH0gPSB1c2VJbnB1dCh7IGluaXRpYWxWYWx1ZSB9KTtcblxuICBmdW5jdGlvbiBoYW5kbGVPblN1Ym1pdChldmVudDogRm9ybUV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gaW5pdGlhbFZhbHVlKSB7XG4gICAgICBvblN1Ym1pdChpbnB1dFZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVJbnB1dFN1Ym1pdCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gaW5pdGlhbFZhbHVlKSB7XG4gICAgICBvblN1Ym1pdChpbnB1dFZhbHVlKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sIFtpbnB1dFZhbHVlLCBpbml0aWFsVmFsdWUsIG9uU3VibWl0XSk7XG5cbiAgY29uc3QgY2FuY2VsQWN0aW9uID0gKCkgPT4ge307XG5cbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxmb3JtIG9uU3VibWl0PXtoYW5kbGVPblN1Ym1pdH0+XG4gICAgICAgIDxJbnB1dFxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWNlbGwtaW5wdXQtbGVhZGluZyBwcy1mb250LW1vbm8gcHMtYm9yZGVyLW5vbmUgcHMtc2hhZG93LW5vbmUgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTAgcHMtcmVzaXplLW5vbmUgcHMtcHgtW3ZhcigtLXN0dWRpby1jZWxsLXNwYWNpbmcpXVwiXG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZU9uQ2hhbmdlfVxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICB2YWx1ZT17aW5wdXRWYWx1ZX1cbiAgICAgICAgICBkaXNhYmxlZD17cmVhZG9ubHl9XG4gICAgICAgIC8+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwic3VibWl0XCIgY2xhc3NOYW1lPVwicHMtc3Itb25seVwiIC8+XG4gICAgICA8L2Zvcm0+XG4gICAgICA8SW5wdXRBY3Rpb25zIG9uU2F2ZT17aGFuZGxlU2F2ZX0gb25DYW5jZWw9e2hhbmRsZUNhbmNlbH0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcbmltcG9ydCBsb2NhbGl6ZWRGb3JtYXQgZnJvbSBcImRheWpzL3BsdWdpbi9sb2NhbGl6ZWRGb3JtYXRcIjtcbmltcG9ydCB0eXBlIHsgRm9ybUV2ZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmltcG9ydCB7IElucHV0IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvaW5wdXRcIjtcbmltcG9ydCB7IHVzZVBvcG92ZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBJbnB1dEFjdGlvbnMgfSBmcm9tIFwiLi9pbnB1dC1hY3Rpb25zXCI7XG5pbXBvcnQgeyB1c2VJbnB1dCB9IGZyb20gXCIuL3VzZS1pbnB1dFwiO1xuXG4vLyBJbml0aWFsaXplIGRheWpzIHBsdWdpbnNcbmRheWpzLmV4dGVuZChsb2NhbGl6ZWRGb3JtYXQpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRpbWVJbnB1dFByb3BzIHtcbiAgb25TdWJtaXQodGhpczogdm9pZCwgdmFsdWU6IHN0cmluZyk6IHZvaWQ7XG4gIHZhbHVlOiB1bmtub3duO1xuICBjb2x1bW46IENvbHVtbjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBUaW1lSW5wdXQocHJvcHM6IFRpbWVJbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgb25TdWJtaXQsIHZhbHVlLCByZWFkb25seSB9ID0gcHJvcHM7XG5cbiAgY29uc3QgaW5pdGlhbFZhbHVlID0gU3RyaW5nKHZhbHVlKTtcblxuICBjb25zdCB7IGhhbmRsZU9uQ2hhbmdlLCB2YWx1ZTogaW5wdXRWYWx1ZSB9ID0gdXNlSW5wdXQoeyBpbml0aWFsVmFsdWUgfSk7XG5cbiAgLy8gRm9ybWF0IHRpbWUgdmFsdWVzIGluIGEgaHVtYW4tcmVhZGFibGUgbWFubmVyXG4gIGNvbnN0IGZvcm1hdHRlZFRpbWUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFpbnB1dFZhbHVlLmluY2x1ZGVzKFwiOlwiKSkgcmV0dXJuIGlucHV0VmFsdWU7XG5cbiAgICAgIGNvbnN0IGhhc1RpbWV6b25lID0gL1srLV1cXGR7Mn0oOlxcZHsyfSk/JC8udGVzdChpbnB1dFZhbHVlKTtcbiAgICAgIGNvbnN0IGRhdGUgPSBkYXlqcyhgMjAwMC0wMS0wMSAke2lucHV0VmFsdWV9YCk7XG4gICAgICBpZiAoZGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgcmV0dXJuIGRhdGUuZm9ybWF0KFwiaDptbSBBXCIpICsgKGhhc1RpbWV6b25lID8gYCAoJHtkYXRlLmZvcm1hdChcIlpcIil9KWAgOiBcIlwiKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdGltZVJlZ2V4ID0gLyhcXGR7MSwyfSk6KFxcZHsyfSk6KFxcZHsyfSkoPzpcXC5cXGQrKT8oWystXVxcZHsyfSg/OjpcXGR7Mn0pPyk/LztcbiAgICAgIGNvbnN0IG1hdGNoID0gaW5wdXRWYWx1ZS5tYXRjaCh0aW1lUmVnZXgpO1xuICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIGNvbnN0IGhvdXJzID0gcGFyc2VJbnQobWF0Y2hbMV0gfHwgXCIxMlwiLCAxMCk7XG4gICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBtYXRjaFsyXSB8fCBcIjAwXCI7XG4gICAgICAgIGNvbnN0IHR6T2Zmc2V0ID0gbWF0Y2hbNF0gfHwgXCJcIjtcbiAgICAgICAgY29uc3QgcGVyaW9kID0gaG91cnMgPj0gMTIgPyBcIlBNXCIgOiBcIkFNXCI7XG4gICAgICAgIGNvbnN0IGhvdXIxMiA9IGhvdXJzICUgMTIgPT09IDAgPyAxMiA6IGhvdXJzICUgMTI7XG5cbiAgICAgICAgcmV0dXJuIGAke2hvdXIxMn06JHttaW51dGVzfSAke3BlcmlvZH0ke3R6T2Zmc2V0ID8gYCAoJHt0ek9mZnNldH0pYCA6IFwiXCJ9YDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGlucHV0VmFsdWU7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gaW5wdXRWYWx1ZTtcbiAgICB9XG4gIH0sIFtpbnB1dFZhbHVlXSk7XG5cbiAgZnVuY3Rpb24gaGFuZGxlT25TdWJtaXQoZXZlbnQ6IEZvcm1FdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbaW5wdXRWYWx1ZSwgaW5pdGlhbFZhbHVlLCBvblN1Ym1pdF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHt9O1xuXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Zm9ybSBvblN1Ym1pdD17aGFuZGxlT25TdWJtaXR9PlxuICAgICAgICA8SW5wdXRcbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1jZWxsLWlucHV0LWxlYWRpbmcgcHMtZm9udC1tb25vIHBzLWJvcmRlci1ub25lIHBzLXNoYWRvdy1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0wIHBzLXJlc2l6ZS1ub25lIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVPbkNoYW5nZX1cbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgdmFsdWU9e2lucHV0VmFsdWV9XG4gICAgICAgIC8+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwic3VibWl0XCIgY2xhc3NOYW1lPVwicHMtc3Itb25seVwiIC8+XG4gICAgICA8L2Zvcm0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTEgcHMtcC0yIHBzLWJvcmRlci10IHBzLWJvcmRlci10YWJsZS1ib3JkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPkZvcm1hdHRlZCB2YWx1ZTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtZm9udC1tb25vIHBzLXRleHQtZm9yZWdyb3VuZFwiPntmb3JtYXR0ZWRUaW1lfTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8SW5wdXRBY3Rpb25zIG9uU2F2ZT17aGFuZGxlU2F2ZX0gb25DYW5jZWw9e2hhbmRsZUNhbmNlbH0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCB7IENlbGwgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBBcnJvd1JpZ2h0IH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0IHV1aWQgZnJvbSBcInNob3J0LXV1aWRcIjtcblxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSBcIkAvZGF0YVwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkAvdWkvY29tcG9uZW50cy91aS9idXR0b25cIjtcbmltcG9ydCB7IHVzZUFjdGl2ZVRhYmxlIH0gZnJvbSBcIkAvdWkvaG9va3MvdXNlLWFjdGl2ZS10YWJsZVwiO1xuaW1wb3J0IHsgdXNlRmlsdGVyaW5nIH0gZnJvbSBcIkAvdWkvaG9va3MvdXNlLWZpbHRlcmluZ1wiO1xuaW1wb3J0IHsgdXNlSW50cm9zcGVjdGlvbiB9IGZyb20gXCJAL3VpL2hvb2tzL3VzZS1pbnRyb3NwZWN0aW9uXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBMaW5rKHByb3BzOiB7IGNlbGw6IENlbGw8UmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHVua25vd24+OyBjb2x1bW46IENvbHVtbiB9KSB7XG4gIGNvbnN0IHsgY2VsbCwgY29sdW1uIH0gPSBwcm9wcztcbiAgY29uc3QgeyBma1NjaGVtYSwgZmtUYWJsZSwgZmtDb2x1bW4gfSA9IGNvbHVtbjtcbiAgY29uc3QgeyBoYW5kbGVTY2hlbWFDaGFuZ2UsIGhhbmRsZVRhYmxlQ2hhbmdlIH0gPSB1c2VBY3RpdmVUYWJsZSgpO1xuICBjb25zdCB7IHNldEFwcGxpZWRGaWx0ZXIgfSA9IHVzZUZpbHRlcmluZygpO1xuICBjb25zdCB7IGRhdGE6IGludHJvc3BlY3Rpb24gfSA9IHVzZUludHJvc3BlY3Rpb24oKTtcblxuICBpZiAoZmtTY2hlbWEgIT09IG51bGwgJiYgZmtUYWJsZSAhPT0gbnVsbCAmJiBma0NvbHVtbiAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHRhYmxlID0gaW50cm9zcGVjdGlvbi5zY2hlbWFzW2ZrU2NoZW1hXT8udGFibGVzW2ZrVGFibGVdO1xuXG4gICAgaWYgKHRhYmxlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBzaXplPXtcInhzXCJ9XG4gICAgICAgICAgdmFyaWFudD17XCJvdXRsaW5lXCJ9XG4gICAgICAgICAgb25DbGljaz17KGUpID0+IHtcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBoYW5kbGVTY2hlbWFDaGFuZ2UoZmtTY2hlbWEpO1xuICAgICAgICAgICAgaGFuZGxlVGFibGVDaGFuZ2UodGFibGUpO1xuICAgICAgICAgICAgc2V0QXBwbGllZEZpbHRlcih7XG4gICAgICAgICAgICAgIGtpbmQ6IFwiRmlsdGVyR3JvdXBcIixcbiAgICAgICAgICAgICAgaWQ6IHV1aWQuZ2VuZXJhdGUoKSxcbiAgICAgICAgICAgICAgYWZ0ZXI6IFwiYW5kXCIsXG4gICAgICAgICAgICAgIGZpbHRlcnM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBraW5kOiBcIkNvbHVtbkZpbHRlclwiLFxuICAgICAgICAgICAgICAgICAgaWQ6IHV1aWQuZ2VuZXJhdGUoKSxcbiAgICAgICAgICAgICAgICAgIGNvbHVtbjogZmtDb2x1bW4sXG4gICAgICAgICAgICAgICAgICBvcGVyYXRvcjogXCI9XCIsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogY2VsbC5nZXRWYWx1ZSgpLFxuICAgICAgICAgICAgICAgICAgYWZ0ZXI6IFwiYW5kXCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8QXJyb3dSaWdodCBzaXplPXsxMn0gLz5cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuIiwgImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gXCJ1dWlkXCI7XG5cbmltcG9ydCB0eXBlIHsgVGFibGUgfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcbmltcG9ydCB7IGtleU1hcCwgdXNlUXVlcnlTdGF0ZSwgdXNlUXVlcnlTdGF0ZXMgfSBmcm9tIFwiLi9udXFzXCI7XG5pbXBvcnQgeyBJTklUSUFMX0RBVEFfVVBEQVRFRF9BVCwgdXNlSW50cm9zcGVjdGlvbiB9IGZyb20gXCIuL3VzZS1pbnRyb3NwZWN0aW9uXCI7XG5cbi8qKlxuICogSG9vayB0byBlbmNhcHN1bGF0ZSBhbGwgbG9naWMgZm9yIG1hbmFnaW5nIHRoZSBhY3RpdmUgdGFibGUgc2VsZWN0aW9uLlxuICogSGFuZGxlcyBzeW5jaW5nIHdpdGggVVJMIHBhcmFtcywgZGVmYXVsdCBzZWxlY3Rpb24sIGFuZCBleHBvc2VzIGEgc2ltcGxlIEFQSSBmb3IgY29uc3VtZXJzLlxuICogU2hvdWxkIG9ubHkgYmUgdXNlZCB3aXRoaW4gU3R1ZGlvIGNvbnRleHQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VBY3RpdmVUYWJsZSgpIHtcbiAgY29uc3QgeyBhY3RpdmVUYWJsZSwgc2V0QWN0aXZlVGFibGUsIGFjdGl2ZVNjaGVtYSwgc2V0QWN0aXZlU2NoZW1hLCBhZGFwdGVyLCBlbWl0VGVsZW1ldHJ5RXZlbnQgfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCB7IGRhdGE6IGludHJvc3BlY3Rpb24sIGRhdGFVcGRhdGVkQXQgfSA9IHVzZUludHJvc3BlY3Rpb24oKTtcbiAgY29uc3QgaXNMb2FkaW5nID0gZGF0YVVwZGF0ZWRBdCA9PT0gSU5JVElBTF9EQVRBX1VQREFURURfQVQ7XG5cbiAgY29uc3QgW2N1cnJlbnRWaWV3VmFsdWVdID0gdXNlUXVlcnlTdGF0ZShcInZpZXdcIik7IC8vIFJlYWQgdGhlIGN1cnJlbnQgdmlld1xuXG4gIGNvbnN0IFt0YWJsZUFuZFNjaGVtYSwgc2V0VGFibGVBbmRTY2hlbWFdID0gdXNlUXVlcnlTdGF0ZXMoXG4gICAga2V5TWFwKHtcbiAgICAgIHRhYmxlOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgICAgICAgcGFyc2U6ICh2OiBzdHJpbmcgfCBudWxsKSA9PiB2LFxuICAgICAgICBzZXJpYWxpemU6ICh2OiBzdHJpbmcgfCBudWxsKSA9PiB2ID8/IFwiXCIsXG4gICAgICB9LFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgICAgICAgcGFyc2U6ICh2OiBzdHJpbmcgfCBudWxsKSA9PiB2IHx8IGFkYXB0ZXIuZGVmYXVsdFNjaGVtYSB8fCBcInB1YmxpY1wiLFxuICAgICAgICBzZXJpYWxpemU6ICh2OiBzdHJpbmcgfCBudWxsKSA9PiB2IHx8IGFkYXB0ZXIuZGVmYXVsdFNjaGVtYSB8fCBcInB1YmxpY1wiLFxuICAgICAgfSxcbiAgICB9KSxcbiAgKTtcblxuICAvLyBBZGQgcXVlcnkgc3RhdGUgZm9yIHBhZ2luYXRpb24gYW5kIHNvcnRpbmcgcGFyYW1zXG4gIGNvbnN0IFssIHNldFBhZ2VQYXJhbV0gPSB1c2VRdWVyeVN0YXRlPHN0cmluZyB8IG51bGw+KFwicGFnZUluZGV4XCIsIHtcbiAgICBwYXJzZTogKHYpID0+IHYsXG4gICAgc2VyaWFsaXplOiAodikgPT4gdiA/PyBcIlwiLFxuICB9KTtcbiAgY29uc3QgWywgc2V0U29ydFBhcmFtXSA9IHVzZVF1ZXJ5U3RhdGU8c3RyaW5nIHwgbnVsbD4oXCJzb3J0XCIsIHtcbiAgICBwYXJzZTogKHYpID0+IHYsXG4gICAgc2VyaWFsaXplOiAodikgPT4gdiA/PyBcIlwiLFxuICB9KTtcbiAgY29uc3QgWywgc2V0Vmlld10gPSB1c2VRdWVyeVN0YXRlPHN0cmluZyB8IG51bGw+KFwidmlld1wiLCB7XG4gICAgcGFyc2U6ICh2KSA9PiB2LFxuICAgIHNlcmlhbGl6ZTogKHYpID0+IHYgPz8gXCJcIixcbiAgfSk7XG5cbiAgLy8gR2V0IGFsbCB0YWJsZXMgZm9yIHRoZSBjdXJyZW50IHNjaGVtYSBmcm9tIFVSTCBvciBkZWZhdWx0XG4gIGNvbnN0IHRhYmxlczogVGFibGVbXSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIC8vIEFsd2F5cyB1c2UgdGhlIGFjdGl2ZVNjaGVtYSBmcm9tIGNvbnRleHRcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhpbnRyb3NwZWN0aW9uLnNjaGVtYXNbYWN0aXZlU2NoZW1hXT8udGFibGVzIHx8IHt9KTtcbiAgfSwgW2ludHJvc3BlY3Rpb24uc2NoZW1hcywgYWN0aXZlU2NoZW1hXSk7XG5cbiAgLy8gQ291bnQgdGhlIHRvdGFsIG51bWJlciBvZiB0YWJsZXMgYWNyb3NzIGFsbCBzY2hlbWFzXG4gIGNvbnN0IHRvdGFsVGFibGVDb3VudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKGludHJvc3BlY3Rpb24uc2NoZW1hcykucmVkdWNlKChzdW0sIHNjaGVtYSkgPT4ge1xuICAgICAgcmV0dXJuIHN1bSArIE9iamVjdC5rZXlzKHNjaGVtYS50YWJsZXMpLmxlbmd0aDtcbiAgICB9LCAwKTtcbiAgfSwgW2ludHJvc3BlY3Rpb24uc2NoZW1hc10pO1xuXG4gIGNvbnN0IFtmaXJzdFRhYmxlXSA9IHRhYmxlcztcblxuICAvLyBFZmZlY3QgdG8gc3luYyBhY3RpdmUgdGFibGUgd2l0aCBVUkwgcGFyYW0gYW5kIGRlZmF1bHRzXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGN1cnJlbnRWaWV3VmFsdWUgPT09IFwic2NoZW1hXCIpIHtcbiAgICAgIHJldHVybjsgLy8gRG8gbm90IGludGVyZmVyZSBpZiBvbiBzY2hlbWEgdmlld1xuICAgIH1cbiAgICBpZiAoaXNMb2FkaW5nKSByZXR1cm47XG5cbiAgICBjb25zdCBjdXJyZW50VVJMUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uaGFzaC5zbGljZSgxKSk7XG4gICAgY29uc3Qgdmlld1BhcmFtRXhpc3RzID0gY3VycmVudFVSTFBhcmFtcy5oYXMoXCJ2aWV3XCIpO1xuXG4gICAgLy8gU2NlbmFyaW8gMTogVVJMIGhhcyB0YWJsZSBhbmQgc2NoZW1hLCBhbmQgVVJMJ3Mgc2NoZW1hIG1hdGNoZXMgY29udGV4dCdzIGFjdGl2ZVNjaGVtYS5cbiAgICBpZiAodGFibGVBbmRTY2hlbWE/LnRhYmxlICYmIHRhYmxlQW5kU2NoZW1hLnNjaGVtYSA9PT0gYWN0aXZlU2NoZW1hKSB7XG4gICAgICBjb25zdCB0YWJsZUZyb21QYXJhbSA9IHRhYmxlcy5maW5kKCh0KSA9PiB0Lm5hbWUgPT09IHRhYmxlQW5kU2NoZW1hLnRhYmxlKTsgLy8gdGFibGVzIGFyZSBhbHJlYWR5IGZpbHRlcmVkIGJ5IGFjdGl2ZVNjaGVtYVxuXG4gICAgICBpZiAodGFibGVGcm9tUGFyYW0pIHtcbiAgICAgICAgaWYgKGFjdGl2ZVRhYmxlICE9PSB0YWJsZUZyb21QYXJhbSkge1xuICAgICAgICAgIHNldEFjdGl2ZVRhYmxlKHRhYmxlRnJvbVBhcmFtKTsgLy8gU3luYyBjb250ZXh0IGFjdGl2ZVRhYmxlXG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF2aWV3UGFyYW1FeGlzdHMpIHtcbiAgICAgICAgICB2b2lkIHNldFZpZXcoXCJ0YWJsZVwiKTsgLy8gRW5zdXJlIHZpZXc9dGFibGUgaWYgbWlzc2luZ1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjsgLy8gVGFibGUgc3VjY2Vzc2Z1bGx5IHN5bmNlZCBmcm9tIFVSTCBmb3IgdGhlIGN1cnJlbnQgYWN0aXZlU2NoZW1hLlxuICAgICAgfVxuICAgICAgLy8gSWYgdGFibGUgc3BlY2lmaWVkIGluIFVSTCBub3QgZm91bmQgaW4gY3VycmVudCBhY3RpdmVTY2hlbWEncyB0YWJsZXMsIGZhbGwgdGhyb3VnaCB0byBkZWZhdWx0LlxuICAgIH1cblxuICAgIC8vIFNjZW5hcmlvIDI6IERlZmF1bHRpbmcgbG9naWMgb3IgY29udGV4dC9VUkwgc2NoZW1hIG1pc21hdGNoIHJlcXVpcmluZyByZXNldC5cbiAgICAvLyBUaGlzIGNvdmVyczpcbiAgICAvLyAtIE5vIHRhYmxlIGluIFVSTCBmb3IgdGhlIGFjdGl2ZVNjaGVtYS5cbiAgICAvLyAtIFVSTCBzY2hlbWEgZGlmZmVycyBmcm9tIGNvbnRleHQgYWN0aXZlU2NoZW1hLlxuICAgIC8vIC0gQ29udGV4dCBhY3RpdmVUYWJsZSBpcyBub3Qgc2V0IG9yIGlzIG5vdCB2YWxpZCBmb3IgdGhlIGN1cnJlbnQgYWN0aXZlU2NoZW1hLlxuICAgIGlmICh0YWJsZXMubGVuZ3RoID4gMCkge1xuICAgICAgLy8gSWYgY3VycmVudCBhY3RpdmVTY2hlbWEgaGFzIGFueSB0YWJsZXNcbiAgICAgIGNvbnN0IGlzQ29udGV4dFRhYmxlVmFsaWRGb3JDdXJyZW50U2NoZW1hID1cbiAgICAgICAgYWN0aXZlVGFibGUgJiYgYWN0aXZlVGFibGUuc2NoZW1hID09PSBhY3RpdmVTY2hlbWEgJiYgdGFibGVzLnNvbWUoKHQpID0+IHQubmFtZSA9PT0gYWN0aXZlVGFibGUubmFtZSk7XG5cbiAgICAgIGlmICghaXNDb250ZXh0VGFibGVWYWxpZEZvckN1cnJlbnRTY2hlbWEgJiYgZmlyc3RUYWJsZSkge1xuICAgICAgICAvLyBDb250ZXh0IGFjdGl2ZVRhYmxlIGlzIG5vdCBzZXQsIG9yIGlzIGZvciBhIGRpZmZlcmVudCBzY2hlbWEsIG9yIG5vdCBpbiBjdXJyZW50IHNjaGVtYSdzIHRhYmxlcy5cbiAgICAgICAgLy8gU2V0IHRvIHRoZSBmaXJzdCB0YWJsZSBvZiB0aGUgY3VycmVudCBhY3RpdmVTY2hlbWEuXG4gICAgICAgIHNldEFjdGl2ZVRhYmxlKGZpcnN0VGFibGUpOyAvLyBVcGRhdGUgY29udGV4dFxuICAgICAgICB2b2lkIHNldFRhYmxlQW5kU2NoZW1hKHsgdGFibGU6IGZpcnN0VGFibGUubmFtZSwgc2NoZW1hOiBhY3RpdmVTY2hlbWEgfSk7IC8vIFVwZGF0ZSBVUkwgZm9yIHRhYmxlIGFuZCBzY2hlbWFcbiAgICAgICAgdm9pZCBzZXRWaWV3KFwidGFibGVcIik7IC8vIEV4cGxpY2l0bHkgc2V0IHZpZXc9dGFibGUgd2hlbiBkZWZhdWx0aW5nIFVSTFxuICAgICAgfSBlbHNlIGlmIChpc0NvbnRleHRUYWJsZVZhbGlkRm9yQ3VycmVudFNjaGVtYSAmJiAhdmlld1BhcmFtRXhpc3RzKSB7XG4gICAgICAgIC8vIENvbnRleHQgYWN0aXZlVGFibGUgaXMgdmFsaWQgZm9yIGN1cnJlbnQgc2NoZW1hLCBidXQgVVJMIGlzIG1pc3Npbmcgdmlldy4gQWRkIGl0LlxuICAgICAgICB2b2lkIHNldFZpZXcoXCJ0YWJsZVwiKTtcbiAgICAgIH0gZWxzZSBpZiAoIWZpcnN0VGFibGUgJiYgdGFibGVBbmRTY2hlbWE/LnRhYmxlKSB7XG4gICAgICAgIC8vIFRoaXMgY2FzZSBzaG91bGQgYmUgcmFyZSBpZiB0YWJsZXMubGVuZ3RoID4gMCwgbWVhbnMgZmlyc3RUYWJsZSBpcyBudWxsIGJ1dCBVUkwgaGFzIGEgdGFibGUuXG4gICAgICAgIC8vIFRoaXMgaW1wbGllcyBhbiBpbmNvbnNpc3RlbmN5OyBzYWZlciB0byBjbGVhciBVUkwgdGFibGUgZm9yIHRoaXMgc2NoZW1hLlxuICAgICAgICB2b2lkIHNldFRhYmxlQW5kU2NoZW1hKHsgdGFibGU6IG51bGwsIHNjaGVtYTogYWN0aXZlU2NoZW1hIH0pO1xuICAgICAgICBpZiAoIXZpZXdQYXJhbUV4aXN0cykge1xuICAgICAgICAgIC8vIFN0aWxsIGVuc3VyZSB2aWV3IHBhcmFtXG4gICAgICAgICAgdm9pZCBzZXRWaWV3KFwidGFibGVcIik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoIXZpZXdQYXJhbUV4aXN0cykge1xuICAgICAgICAvLyBDYXRjaC1hbGwgaWYgZm9yIHNvbWUgcmVhc29uIHZpZXcgaXMgc3RpbGwgbWlzc2luZyBhbmQgd2UgaGF2ZSB0YWJsZXNcbiAgICAgICAgdm9pZCBzZXRWaWV3KFwidGFibGVcIik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE5vIHRhYmxlcyBpbiB0aGUgY3VycmVudCBhY3RpdmVTY2hlbWEuXG4gICAgICBpZiAoYWN0aXZlVGFibGUpIHtcbiAgICAgICAgLy8gSWYgY29udGV4dCBzdGlsbCBob2xkcyBhbiBhY3RpdmUgdGFibGUgKGUuZy4gZnJvbSBhIHByZXZpb3VzIHNjaGVtYSlcbiAgICAgICAgc2V0QWN0aXZlVGFibGUobnVsbCk7IC8vIENsZWFyIGl0XG4gICAgICB9XG4gICAgICBpZiAodGFibGVBbmRTY2hlbWE/LnRhYmxlKSB7XG4gICAgICAgIC8vIElmIFVSTCBzdGlsbCBoYXMgYSB0YWJsZSBwYXJhbSBmb3IgdGhpcyAobm93IGVtcHR5KSBzY2hlbWFcbiAgICAgICAgdm9pZCBzZXRUYWJsZUFuZFNjaGVtYSh7IHRhYmxlOiBudWxsLCBzY2hlbWE6IGFjdGl2ZVNjaGVtYSB9KTsgLy8gQ2xlYXIgaXQgZnJvbSBVUkxcbiAgICAgIH1cbiAgICAgIC8vIEV2ZW4gaWYgbm8gdGFibGVzLCBlbnN1cmUgdmlldyBwYXJhbWV0ZXIgaXMgcHJlc2VudCAoZS5nLiwgdmlldz10YWJsZSBvciBhIHNwZWNpZmljIFwibm9fdGFibGVzX3ZpZXdcIilcbiAgICAgIC8vIEZvciBub3csIGNvbnNpc3RlbnRseSBzZXR0aW5nIHRvIFwidGFibGVcIi4gU3R1ZGlvQ29udGVudCB3aWxsIGRlY2lkZSBhY3R1YWwgcmVuZGVyaW5nLlxuICAgICAgaWYgKCF2aWV3UGFyYW1FeGlzdHMpIHtcbiAgICAgICAgdm9pZCBzZXRWaWV3KFwidGFibGVcIik7XG4gICAgICB9XG4gICAgfVxuICB9LCBbXG4gICAgaXNMb2FkaW5nLFxuICAgIHRhYmxlQW5kU2NoZW1hLFxuICAgIHRhYmxlcyxcbiAgICBmaXJzdFRhYmxlLFxuICAgIGFjdGl2ZVRhYmxlLFxuICAgIGFjdGl2ZVNjaGVtYSxcbiAgICBzZXRBY3RpdmVUYWJsZSxcbiAgICBzZXRUYWJsZUFuZFNjaGVtYSxcbiAgICBzZXRWaWV3LCAvLyBBZGRlZCBzZXRWaWV3IHRvIGRlcGVuZGVuY3kgYXJyYXlcbiAgICBjdXJyZW50Vmlld1ZhbHVlLCAvLyBBZGRlZCBjdXJyZW50Vmlld1ZhbHVlIHRvIGRlcGVuZGVuY3kgYXJyYXlcbiAgXSk7XG5cbiAgLyoqXG4gICAqIENoYW5nZSB0aGUgYWN0aXZlIHRhYmxlIGFuZCB1cGRhdGUgdGhlIFVSTCBwYXJhbS5cbiAgICogQWxzbyBjbGVhcnMgcGFnaW5hdGlvbiBhbmQgc29ydGluZyBwYXJhbXMgd2hlbiBzd2l0Y2hpbmcgdGFibGVzLlxuICAgKi9cbiAgY29uc3QgaGFuZGxlVGFibGVDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAobmV3VGFibGU6IFRhYmxlKSA9PiB7XG4gICAgICBpZiAoYWN0aXZlVGFibGUgIT09IG5ld1RhYmxlKSB7XG4gICAgICAgIHNldEFjdGl2ZVRhYmxlKG5ld1RhYmxlKTtcbiAgICAgICAgLy8gRW5zdXJlIGJvdGggdGFibGUgYW5kIHNjaGVtYSBhcmUgYWx3YXlzIGluY2x1ZGVkIGluIHRoZSBVUkxcbiAgICAgICAgdm9pZCBzZXRUYWJsZUFuZFNjaGVtYSh7XG4gICAgICAgICAgdGFibGU6IG5ld1RhYmxlLm5hbWUsXG4gICAgICAgICAgc2NoZW1hOiBuZXdUYWJsZS5zY2hlbWEsXG4gICAgICAgIH0pO1xuICAgICAgICB2b2lkIHNldFZpZXcoXCJ0YWJsZVwiKTtcbiAgICAgICAgLy8gQ2xlYXIgcGFnaW5hdGlvbiBhbmQgc29ydGluZyBwYXJhbXMgd2hlbiBzd2l0Y2hpbmcgdGFibGVzXG4gICAgICAgIHZvaWQgc2V0UGFnZVBhcmFtKG51bGwpO1xuICAgICAgICB2b2lkIHNldFNvcnRQYXJhbShudWxsKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFthY3RpdmVUYWJsZSwgc2V0QWN0aXZlVGFibGUsIHNldFRhYmxlQW5kU2NoZW1hLCBzZXRQYWdlUGFyYW0sIHNldFNvcnRQYXJhbSwgc2V0Vmlld10sXG4gICk7XG5cbiAgLy8gSGFuZGxlIHNjaGVtYSBjaGFuZ2VcbiAgY29uc3QgaGFuZGxlU2NoZW1hQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKG5ld1NjaGVtYTogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAobmV3U2NoZW1hICE9PSBhY3RpdmVTY2hlbWEpIHtcbiAgICAgICAgc2V0QWN0aXZlVGFibGUobnVsbCk7IC8vIENsZWFyIGFjdGl2ZSB0YWJsZSB3aGVuIHNjaGVtYSBjaGFuZ2VzXG4gICAgICAgIHNldEFjdGl2ZVNjaGVtYShuZXdTY2hlbWEpOyAvLyBVcGRhdGUgY29udGV4dCBhY3RpdmUgc2NoZW1hXG4gICAgICAgIHZvaWQgc2V0VGFibGVBbmRTY2hlbWEoeyB0YWJsZTogbnVsbCwgc2NoZW1hOiBuZXdTY2hlbWEgfSk7IC8vIFVwZGF0ZSBVUkwgZm9yIHNjaGVtYSwgY2xlYXIgdGFibGVcblxuICAgICAgICAvLyBPbmx5IHNldCB2aWV3IHRvIFwidGFibGVcIiBpZiBub3QgY3VycmVudGx5IG9uIFwic2NoZW1hXCIgdmlld1xuICAgICAgICBpZiAoY3VycmVudFZpZXdWYWx1ZSAhPT0gXCJzY2hlbWFcIikge1xuICAgICAgICAgIHZvaWQgc2V0VmlldyhcInRhYmxlXCIpO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIGN1cnJlbnRWaWV3VmFsdWUgaXMgXCJzY2hlbWFcIiwgaXQgcmVtYWlucyBcInNjaGVtYVwiXG5cbiAgICAgICAgLy8gQ2xlYXIgcGFnaW5hdGlvbiBhbmQgc29ydGluZyBwYXJhbXNcbiAgICAgICAgdm9pZCBzZXRQYWdlUGFyYW0obnVsbCk7XG4gICAgICAgIHZvaWQgc2V0U29ydFBhcmFtKG51bGwpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgYWN0aXZlU2NoZW1hLFxuICAgICAgc2V0QWN0aXZlU2NoZW1hLFxuICAgICAgc2V0QWN0aXZlVGFibGUsXG4gICAgICBzZXRUYWJsZUFuZFNjaGVtYSxcbiAgICAgIHNldFBhZ2VQYXJhbSxcbiAgICAgIHNldFNvcnRQYXJhbSxcbiAgICAgIHNldFZpZXcsXG4gICAgICBjdXJyZW50Vmlld1ZhbHVlLCAvLyBBZGRlZCBjdXJyZW50Vmlld1ZhbHVlIHRvIGRlcGVuZGVuY3kgYXJyYXlcbiAgICBdLFxuICApO1xuXG4gIC8vIFN5bmMgVVJMIHNjaGVtYSBwYXJhbWV0ZXIgd2l0aCBhY3RpdmVTY2hlbWEgZnJvbSBjb250ZXh0XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gT25seSB1cGRhdGUgVVJMIGlmIHRoZSBzY2hlbWEgZnJvbSBVUkwgaXMgZGlmZmVyZW50IGZyb20gdGhlIGFjdGl2ZVNjaGVtYVxuICAgIGlmICh0YWJsZUFuZFNjaGVtYT8uc2NoZW1hICE9PSBhY3RpdmVTY2hlbWEgJiYgIWlzTG9hZGluZykge1xuICAgICAgdm9pZCBzZXRUYWJsZUFuZFNjaGVtYSgocHJldikgPT4gKHsgLi4ucHJldiwgc2NoZW1hOiBhY3RpdmVTY2hlbWEgfSkpO1xuICAgIH1cbiAgfSwgW2FjdGl2ZVNjaGVtYSwgdGFibGVBbmRTY2hlbWE/LnNjaGVtYSwgc2V0VGFibGVBbmRTY2hlbWEsIGlzTG9hZGluZ10pO1xuXG4gIC8vIFN5bmMgYWN0aXZlU2NoZW1hIGluIGNvbnRleHQgd2l0aCBVUkwgc2NoZW1hIHBhcmFtZXRlclxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIFVwZGF0ZSB0aGUgYWN0aXZlU2NoZW1hIGluIGNvbnRleHQgd2hlbiBVUkwgc2NoZW1hIHBhcmFtIGNoYW5nZXNcbiAgICBpZiAodGFibGVBbmRTY2hlbWE/LnNjaGVtYSAmJiB0YWJsZUFuZFNjaGVtYS5zY2hlbWEgIT09IGFjdGl2ZVNjaGVtYSkge1xuICAgICAgc2V0QWN0aXZlU2NoZW1hKHRhYmxlQW5kU2NoZW1hLnNjaGVtYSk7XG4gICAgfVxuICB9LCBbdGFibGVBbmRTY2hlbWE/LnNjaGVtYSwgYWN0aXZlU2NoZW1hLCBzZXRBY3RpdmVTY2hlbWFdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChkYXRhVXBkYXRlZEF0ICE9PSAtMSkge1xuICAgICAgZW1pdFRlbGVtZXRyeUV2ZW50KHtcbiAgICAgICAgZXZlbnQ6IFwic3R1ZGlvX2xhdW5jaGVkXCIsXG4gICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICBldmVudF9pZDogdXVpZHY0KCksXG4gICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgdGFibGVfY291bnQ6IHRvdGFsVGFibGVDb3VudCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW3RhYmxlcywgZW1pdFRlbGVtZXRyeUV2ZW50LCBkYXRhVXBkYXRlZEF0LCB0b3RhbFRhYmxlQ291bnRdKTtcblxuICByZXR1cm4ge1xuICAgIHRhYmxlcyxcbiAgICBhY3RpdmVUYWJsZSxcbiAgICBhY3RpdmVTY2hlbWEsXG4gICAgaXNMb2FkaW5nLFxuICAgIGhhbmRsZVRhYmxlQ2hhbmdlLFxuICAgIGhhbmRsZVNjaGVtYUNoYW5nZSxcbiAgfTtcbn1cbiIsICJpbXBvcnQgeyBDb2x1bW5EZWYsIFRhYmxlLCB1c2VSZWFjdFRhYmxlIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBDb21wb25lbnRUeXBlLCBEaXNwYXRjaCwgU2V0U3RhdGVBY3Rpb24gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IG9taXQgfSBmcm9tIFwicmVtZWRhXCI7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCJAL2RhdGFcIjtcbmltcG9ydCB7IFRhYmxlUm93IH0gZnJvbSBcIkAvdWkvY29tcG9uZW50cy91aS90YWJsZVwiO1xuXG5pbXBvcnQgeyB1c2VJc0luc2VydGluZyB9IGZyb20gXCIuLi9ob29rcy91c2UtaXMtaW5zZXJ0aW5nXCI7XG5pbXBvcnQgeyBDZWxsUHJvcHMgfSBmcm9tIFwiLi9jZWxsL0NlbGxcIjtcbmltcG9ydCB7IEVtcHR5Q2VsbCB9IGZyb20gXCIuL2NlbGwvRW1wdHlDZWxsXCI7XG5pbXBvcnQgeyBnZXRDZWxsIH0gZnJvbSBcIi4vY2VsbC9nZXQtY2VsbFwiO1xuaW1wb3J0IHsgV3JpdGVhYmxlQ2VsbCB9IGZyb20gXCIuL2NlbGwvV3JpdGVhYmxlQ2VsbFwiO1xuaW1wb3J0IHsgZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyB9IGZyb20gXCIuL2dyaWQvZmVhdHVyZXMvY29sdW1uLXBpbm5pbmdcIjtcbmltcG9ydCB7IGdldElucHV0IH0gZnJvbSBcIi4vaW5wdXQvZ2V0LWlucHV0XCI7XG5cbnR5cGUgUHJvcHMgPSB7XG4gIHRhYmxlOiBUYWJsZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIHN0YWdlZFJvd3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W107XG4gIHNldFN0YWdlZFJvd3M6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPFJlY29yZDxzdHJpbmcsIHVua25vd24+W10+Pjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBTdGFnZWRSb3dzKHByb3BzOiBQcm9wcykge1xuICBjb25zdCB7IHRhYmxlOiBwYXJlbnRUYWJsZSwgc3RhZ2VkUm93cywgc2V0U3RhZ2VkUm93cyB9ID0gcHJvcHM7XG4gIGNvbnN0IHJlYWRvbmx5ID0gQm9vbGVhbih1c2VJc0luc2VydGluZygpKTtcblxuICBmdW5jdGlvbiB1cGRhdGVTdGFnZWRSb3cocm93SW5kZXg6IG51bWJlciwgcGFydGlhbFJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIHtcbiAgICBzZXRTdGFnZWRSb3dzKChwcmV2Um93cykgPT4ge1xuICAgICAgY29uc3QgbmV3Um93cyA9IFsuLi5wcmV2Um93c107XG4gICAgICBuZXdSb3dzW3Jvd0luZGV4XSA9IHsgLi4ubmV3Um93c1tyb3dJbmRleF0sIC4uLnBhcnRpYWxSb3cgfTtcblxuICAgICAgcmV0dXJuIG5ld1Jvd3M7XG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBjb2x1bW5EZWZzID0gT2JqZWN0LnZhbHVlcyhwYXJlbnRUYWJsZS5vcHRpb25zLmNvbHVtbnMpLm1hcCgoY29sdW1uKSA9PiB7XG4gICAgaWYgKGNvbHVtbi5pZCA9PT0gXCJfX3BzX3NlbGVjdFwiKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5jb2x1bW4sXG4gICAgICAgIGNlbGwoKSB7XG4gICAgICAgICAgcmV0dXJuICgpID0+IDxFbXB0eUNlbGwgLz47XG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi5jb2x1bW4sXG4gICAgICBjZWxsKHsgY2VsbCB9KSB7XG4gICAgICAgIHJldHVybiAocHJvcHM6IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPiAmIHsgcm93SW5kZXg6IG51bWJlciB9KSA9PiAoXG4gICAgICAgICAgPFdyaXRlYWJsZUNlbGxcbiAgICAgICAgICAgIGNlbGxDb21wb25lbnQ9e2dldENlbGwoeyBjZWxsLCBjb2x1bW46IGNvbHVtbi5tZXRhIGFzIENvbHVtbiB9KX1cbiAgICAgICAgICAgIGxpbmtDb21wb25lbnQ9e251bGx9XG4gICAgICAgICAgICBpbnB1dENvbXBvbmVudD17Z2V0SW5wdXQoe1xuICAgICAgICAgICAgICBjZWxsLFxuICAgICAgICAgICAgICBjb2x1bW46IGNvbHVtbi5tZXRhIGFzIENvbHVtbixcbiAgICAgICAgICAgICAgb25TdWJtaXQodmFsdWUpIHtcbiAgICAgICAgICAgICAgICB1cGRhdGVTdGFnZWRSb3cocHJvcHMucm93SW5kZXgsIHsgW2NvbHVtbi5pZCFdOiB2YWx1ZSB9KTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgcmVhZG9ubHksXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICAvPlxuICAgICAgICApO1xuICAgICAgfSxcbiAgICB9IHNhdGlzZmllcyBDb2x1bW5EZWY8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuICB9KTtcblxuICBjb25zdCB0YWJsZSA9IHVzZVJlYWN0VGFibGUoe1xuICAgIC4uLnBhcmVudFRhYmxlLm9wdGlvbnMsXG4gICAgY29sdW1uczogY29sdW1uRGVmcyxcbiAgICBlbmFibGVTb3J0aW5nOiBmYWxzZSxcbiAgICBvblBhZ2luYXRpb25DaGFuZ2U6IHVuZGVmaW5lZCxcbiAgICBvblNvcnRpbmdDaGFuZ2U6IHVuZGVmaW5lZCxcbiAgICBkYXRhOiBzdGFnZWRSb3dzLFxuICAgIHN0YXRlOiBvbWl0KHBhcmVudFRhYmxlLm9wdGlvbnMuc3RhdGUsIFtcInBhZ2luYXRpb25cIiwgXCJzb3J0aW5nXCJdKSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge3RhYmxlLmdldFJvd01vZGVsKCkucm93cy5tYXAoKHJvdywgaSkgPT4gKFxuICAgICAgICA8VGFibGVSb3cga2V5PXtpfT5cbiAgICAgICAgICB7cm93LmdldFZpc2libGVDZWxscygpLm1hcCgoY2VsbCwgaikgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjZWxsLmNvbHVtbi5jb2x1bW5EZWYuY2VsbCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgIHR5cGUgQ2VsbCA9IENvbXBvbmVudFR5cGU8T21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+ICYgeyByb3dJbmRleDogbnVtYmVyIH0+O1xuICAgICAgICAgICAgICBjb25zdCBDZWxsID0gY2VsbC5jb2x1bW4uY29sdW1uRGVmLmNlbGwoY2VsbC5nZXRDb250ZXh0KCkpIGFzIENlbGw7XG4gICAgICAgICAgICAgIHJldHVybiA8Q2VsbCBrZXk9e2p9IHsuLi5nZXRDb2x1bW5QaW5uaW5nU3R5bGVzKGNlbGwuY29sdW1uLCBcImNlbGxcIil9IHJvd0luZGV4PXtpfSAvPjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvVGFibGVSb3c+XG4gICAgICApKX1cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyBNYXhpbWl6ZSwgTWluaW1pemUsIFBhbmVsTGVmdENsb3NlLCBQYW5lbExlZnRPcGVuIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuXG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9idXR0b25cIjtcbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuL2NvbnRleHRcIjtcblxuaW50ZXJmYWNlIFN0dWRpb0hlYWRlclByb3BzIHtcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XG4gIGVuZENvbnRlbnQ/OiBSZWFjdC5SZWFjdE5vZGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTdHVkaW9IZWFkZXIocHJvcHM6IFN0dWRpb0hlYWRlclByb3BzKSB7XG4gIGNvbnN0IHsgaXNGdWxsc2NyZWVuLCB0b2dnbGVGdWxsc2NyZWVuLCB0b2dnbGVOYXZpZ2F0aW9uLCBpc05hdmlnYXRpb25PcGVuIH0gPSB1c2VTdHVkaW8oKTtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWJnLXN0dWRpby1oZWFkZXItYmFja2dyb3VuZCBwcy1mbGV4IHBzLXctZnVsbCBwcy1wLTIgcHMtcHktMyBwcy1ib3JkZXItYiBwcy1iZy1jYXJkIHBzLXJvdW5kZWQtdC1sZ1wiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtdy1mdWxsIHBzLWdhcC0yXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWdyb3cgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBzaXplPVwic21cIiBvbkNsaWNrPXt0b2dnbGVOYXZpZ2F0aW9ufT5cbiAgICAgICAgICAgICAge2lzTmF2aWdhdGlvbk9wZW4gPyA8UGFuZWxMZWZ0Q2xvc2UgLz4gOiA8UGFuZWxMZWZ0T3BlbiAvPn1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICAgICAge3Byb3BzLmVuZENvbnRlbnR9XG4gICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lXCIgc2l6ZT1cImljb25cIiBvbkNsaWNrPXt0b2dnbGVGdWxsc2NyZWVufT5cbiAgICAgICAgICAgICAge2lzRnVsbHNjcmVlbiA/IDxNaW5pbWl6ZSAvPiA6IDxNYXhpbWl6ZSAvPn1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuIiwgImV4cG9ydCBmdW5jdGlvbiBCYXNpY1ZpZXcoKSB7XG4gIHJldHVybiA8ZGl2PkJhc2ljVmlldzwvZGl2Pjtcbn1cbiIsICJpbXBvcnQgeyBTbG90IH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zbG90XCI7XG5pbXBvcnQgeyBUYWJsZTIgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5cbmltcG9ydCB7IFNlbGVjdCwgU2VsZWN0Q29udGVudCwgU2VsZWN0SXRlbSwgU2VsZWN0VHJpZ2dlciwgU2VsZWN0VmFsdWUgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9zZWxlY3RcIjtcbmltcG9ydCB7IFNrZWxldG9uIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvc2tlbGV0b25cIjtcbmltcG9ydCB7IHVzZVF1ZXJ5U3RhdGUgfSBmcm9tIFwiLi4vaG9va3MvbnVxc1wiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGUgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZVwiO1xuaW1wb3J0IHsgdXNlSW50cm9zcGVjdGlvbiB9IGZyb20gXCIuLi9ob29rcy91c2UtaW50cm9zcGVjdGlvblwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vbGliL3V0aWxzXCI7XG5cbnR5cGUgTmF2aWdhdGlvblByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59ICYgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+O1xuXG5leHBvcnQgZnVuY3Rpb24gTmF2aWdhdGlvbih7IGNsYXNzTmFtZSB9OiBOYXZpZ2F0aW9uUHJvcHMpIHtcbiAgLy8gVXNlIHRoZSBjdXN0b20gaG9vayB0byBnZXQgYWxsIG5lY2Vzc2FyeSBzdGF0ZSBhbmQgaGFuZGxlcnNcbiAgY29uc3QgeyB0YWJsZXMsIGFjdGl2ZVRhYmxlLCBpc0xvYWRpbmcsIGhhbmRsZVRhYmxlQ2hhbmdlIH0gPSB1c2VBY3RpdmVUYWJsZSgpO1xuICBjb25zdCBbdmlldywgc2V0Vmlld10gPSB1c2VRdWVyeVN0YXRlKFwidmlld1wiKTtcbiAgLy8gUHJvdmlkZSBwYXJzZS9zZXJpYWxpemUgZm9yIHRhYmxlIGFuZCBzY2hlbWEgdG8gaGFuZGxlIG51bGwgY29ycmVjdGx5XG4gIGNvbnN0IFssIHNldFVybFRhYmxlXSA9IHVzZVF1ZXJ5U3RhdGU8c3RyaW5nIHwgbnVsbD4oXCJ0YWJsZVwiLCB7XG4gICAgcGFyc2U6ICh2KSA9PiB2LFxuICAgIHNlcmlhbGl6ZTogKHYpID0+IHYgPz8gXCJcIiwgLy8gU2VyaWFsaXplIG51bGwgdG8gZW1wdHkgc3RyaW5nLCBudXFzIG1pZ2h0IHJlbW92ZSBwYXJhbVxuICB9KTtcbiAgY29uc3QgWywgc2V0VXJsU2NoZW1hXSA9IHVzZVF1ZXJ5U3RhdGU8c3RyaW5nIHwgbnVsbD4oXCJzY2hlbWFcIiwge1xuICAgIHBhcnNlOiAodikgPT4gdixcbiAgICBzZXJpYWxpemU6ICh2KSA9PiB2ID8/IFwiXCIsIC8vIFNlcmlhbGl6ZSBudWxsIHRvIGVtcHR5IHN0cmluZ1xuICB9KTtcblxuICBjb25zdCBzaWRlQmFyQ2xhc3NlcyA9IGNuKFxuICAgIFwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy13LTQ4IHBzLW92ZXJmbG93LXktYXV0byBwcy1tYXgtaC1mdWxsIHBzLW1pbi1oLTAgcHMtdGV4dC1jYXJkLWZvcmVncm91bmQgcHMtc2hhZG93LXhzXCIsXG4gICAgY2xhc3NOYW1lLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e3NpZGVCYXJDbGFzc2VzfT5cbiAgICAgIDxOYXZpZ2F0aW9uLlNjaGVtYVNlbGVjdG9yIC8+XG5cbiAgICAgIDxOYXZpZ2F0aW9uLkJsb2NrIGxhYmVsPVwiU3R1ZGlvXCI+XG4gICAgICAgIDxOYXZpZ2F0aW9uLkl0ZW1cbiAgICAgICAgICBhc0NoaWxkXG4gICAgICAgICAgaXNBY3RpdmU9e3ZpZXcgPT09IFwic2NoZW1hXCJ9XG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgdm9pZCBzZXRVcmxUYWJsZShudWxsKTtcbiAgICAgICAgICAgIHZvaWQgc2V0VXJsU2NoZW1hKG51bGwpO1xuICAgICAgICAgICAgdm9pZCBzZXRWaWV3KFwic2NoZW1hXCIpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgY2xhc3NOYW1lPXtgcHMtcHktMSBwcy1mb250LW1vbm8gcHMtdGV4dC14cyBwcy10ZXh0LWZvcmVncm91bmQvNjAgaG92ZXI6cHMtdGV4dC1mb3JlZ3JvdW5kIHBzLXRyYW5zaXRpb24tYWxsIHBzLWN1cnNvci1wb2ludGVyIGRhdGEtW2FjdGl2ZT10cnVlXTpwcy1iZy1zbGF0ZS0yMDAgZGF0YS1bYWN0aXZlPXRydWVdOnBzLWZvcmVncm91bmQgZGF0YS1bYWN0aXZlPXRydWVdOnBzLXRleHQtZm9yZWdyb3VuZGB9XG4gICAgICAgID5cbiAgICAgICAgICA8YSBocmVmPXtgI3ZpZXc9c2NoZW1hYH0+U2NoZW1hIHZpc3VhbGlzYXRpb248L2E+XG4gICAgICAgIDwvTmF2aWdhdGlvbi5JdGVtPlxuICAgICAgPC9OYXZpZ2F0aW9uLkJsb2NrPlxuXG4gICAgICA8TmF2aWdhdGlvbi5CbG9jayBsYWJlbD1cIlRhYmxlc1wiPlxuICAgICAgICB7dGFibGVzLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgdGFibGVzLm1hcCgodGFibGUpID0+IChcbiAgICAgICAgICAgIDxOYXZpZ2F0aW9uLkl0ZW1cbiAgICAgICAgICAgICAga2V5PXtgJHt0YWJsZS5zY2hlbWF9LSR7dGFibGUubmFtZX1gfVxuICAgICAgICAgICAgICBhc0NoaWxkXG4gICAgICAgICAgICAgIGlzQWN0aXZlPXthY3RpdmVUYWJsZSA9PT0gdGFibGUgJiYgdmlldyA9PT0gXCJ0YWJsZVwifVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgaGFuZGxlVGFibGVDaGFuZ2UodGFibGUpO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Bwcy1weS0xIHBzLWZvbnQtbW9ubyBwcy10ZXh0LXhzIHBzLXRleHQtZm9yZWdyb3VuZC82MCBob3Zlcjpwcy10ZXh0LWZvcmVncm91bmQgcHMtdHJhbnNpdGlvbi1hbGwgcHMtY3Vyc29yLXBvaW50ZXIgZGF0YS1bYWN0aXZlPXRydWVdOnBzLWJnLXNsYXRlLTIwMCBkYXRhLVthY3RpdmU9dHJ1ZV06cHMtZm9yZWdyb3VuZCBkYXRhLVthY3RpdmU9dHJ1ZV06cHMtdGV4dC1mb3JlZ3JvdW5kYH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGEgaHJlZj17YCN0YWJsZT0ke3RhYmxlLm5hbWV9JnNjaGVtYT0ke3RhYmxlLnNjaGVtYX0mdmlldz10YWJsZWB9Pnt0YWJsZS5uYW1lfTwvYT5cbiAgICAgICAgICAgIDwvTmF2aWdhdGlvbi5JdGVtPlxuICAgICAgICAgICkpXG4gICAgICAgICkgOiBpc0xvYWRpbmcgPyAoXG4gICAgICAgICAgQXJyYXkoNClcbiAgICAgICAgICAgIC5maWxsKG51bGwpXG4gICAgICAgICAgICAubWFwKChfLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICA8TmF2aWdhdGlvbi5JdGVtIGtleT17aW5kZXh9IHdyYXBDaGlsZHJlbkluU3Bhbj17ZmFsc2V9PlxuICAgICAgICAgICAgICAgIDxTa2VsZXRvbiBjbGFzc05hbWU9XCJwcy1oLTMgcHMtdy1mdWxsXCIgLz5cbiAgICAgICAgICAgICAgPC9OYXZpZ2F0aW9uLkl0ZW0+XG4gICAgICAgICAgICApKVxuICAgICAgICApIDogKFxuICAgICAgICAgIDxOYXZpZ2F0aW9uLkl0ZW0+Tm8gdGFibGVzIGZvdW5kPC9OYXZpZ2F0aW9uLkl0ZW0+XG4gICAgICAgICl9XG4gICAgICA8L05hdmlnYXRpb24uQmxvY2s+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmNvbnN0IEJsb2NrID0gKHsgY2xhc3NOYW1lLCBsYWJlbCwgY2hpbGRyZW4sIC4uLnByb3BzIH06IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PiAmIHsgbGFiZWw6IHN0cmluZyB9KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZX0gey4uLnByb3BzfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTEgcHMtcHQtNCBwcy1wYi0yIHBzLXB4LTQgcHMtc3RpY2t5IHBzLXRvcC0wIHBzLWJnLXNsYXRlLTUwLzUwIHBzLWJhY2tkcm9wLWJsdXItc21cIj5cbiAgICAgICAgPFRhYmxlMiBzaXplPXsxNn0gY2xhc3NOYW1lPVwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kLzYwXCIgLz5cbiAgICAgICAgPGgyIGNsYXNzTmFtZT1cInBzLXRleHQtc20gcHMtZm9udC1tZWRpdW1cIj57bGFiZWx9PC9oMj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5hdiBhcmlhLWxhYmVsPXtsYWJlbH0gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1nYXAtcHggcHMtcGItMyBwcy1wLTJcIj5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9uYXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5jb25zdCBJdGVtID0gKHtcbiAgY2xhc3NOYW1lLFxuICBhc0NoaWxkID0gZmFsc2UsXG4gIGlzQWN0aXZlLFxuICBzaXplLFxuICBjaGlsZHJlbixcbiAgd3JhcENoaWxkcmVuSW5TcGFuID0gdHJ1ZSxcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPFwiYnV0dG9uXCI+ICYge1xuICBhc0NoaWxkPzogYm9vbGVhbjtcbiAgaXNBY3RpdmU/OiBib29sZWFuO1xuICBzaXplPzogXCJkZWZhdWx0XCIgfCBcInNtXCI7XG4gIHdyYXBDaGlsZHJlbkluU3Bhbj86IGJvb2xlYW47XG59KSA9PiB7XG4gIGNvbnN0IENvbXAgPSBhc0NoaWxkID8gU2xvdCA6IFwiYnV0dG9uXCI7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29tcFxuICAgICAgZGF0YS1zaWRlYmFyPVwibWVudS1idXR0b25cIlxuICAgICAgZGF0YS1zaXplPXtzaXplfVxuICAgICAgZGF0YS1hY3RpdmU9e2lzQWN0aXZlfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy1weS0xLjUgcHMtcHgtMiBwcy10ZXh0LXNtIHBzLWZvbnQtbWVkaXVtIHBzLXJvdW5kZWQtbWQgcHMtZmxleCBwcy1nYXAtMiBwcy1pdGVtcy1jZW50ZXIgcHMtYm9yZGVyIHBzLWJvcmRlci10cmFuc3BhcmVudCBwcy1iZy10cmFuc3BhcmVudFwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgIHt3cmFwQ2hpbGRyZW5JblNwYW4gPyA8c3BhbiBjbGFzc05hbWU9XCJwcy10cnVuY2F0ZVwiPntjaGlsZHJlbn08L3NwYW4+IDogPD5jaGlsZHJlbjwvPn1cbiAgICA8L0NvbXA+XG4gICk7XG59O1xuXG5jb25zdCBTY2hlbWFTZWxlY3RvciA9ICgpID0+IHtcbiAgLy8gR2V0IHNjaGVtYXMgZnJvbSBpbnRyb3NwZWN0aW9uIGFuZCBhY3RpdmUgc2NoZW1hIG1hbmFnZW1lbnRcbiAgY29uc3QgeyBkYXRhOiBpbnRyb3NwZWN0aW9uLCBpc0xvYWRpbmc6IGlzSW50cm9zcGVjdGlvbkxvYWRpbmcgfSA9IHVzZUludHJvc3BlY3Rpb24oKTtcbiAgY29uc3QgeyBhY3RpdmVTY2hlbWEsIGhhbmRsZVNjaGVtYUNoYW5nZSB9ID0gdXNlQWN0aXZlVGFibGUoKTtcblxuICAvLyBFeHRyYWN0IHNjaGVtYSBuYW1lcyBmcm9tIGludHJvc3BlY3Rpb24gZGF0YVxuICBjb25zdCBzY2hlbWFOYW1lcyA9IE9iamVjdC5rZXlzKGludHJvc3BlY3Rpb24uc2NoZW1hcyB8fCB7fSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0xIHBzLXB0LTQgcHMtcGItMiBwcy1weC00IHBzLXN0aWNreSBwcy10b3AtMCBwcy1iZy1zbGF0ZS01MC81MCBwcy1iYWNrZHJvcC1ibHVyLXNtXCI+XG4gICAgICA8U2VsZWN0IHZhbHVlPXthY3RpdmVTY2hlbWF9IG9uVmFsdWVDaGFuZ2U9e2hhbmRsZVNjaGVtYUNoYW5nZX0+XG4gICAgICAgIDxTZWxlY3RUcmlnZ2VyIGNsYXNzTmFtZT1cInBzLXRleHQteHNcIiBsYWJlbD1cIlNjaGVtYVwiPlxuICAgICAgICAgIDxTZWxlY3RWYWx1ZSBwbGFjZWhvbGRlcj1cIlNlbGVjdCBzY2hlbWFcIiAvPlxuICAgICAgICA8L1NlbGVjdFRyaWdnZXI+XG4gICAgICAgIDxTZWxlY3RDb250ZW50PlxuICAgICAgICAgIHtpc0ludHJvc3BlY3Rpb25Mb2FkaW5nID8gKFxuICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJsb2FkaW5nXCI+TG9hZGluZyBzY2hlbWFzLi4uPC9TZWxlY3RJdGVtPlxuICAgICAgICAgICkgOiBzY2hlbWFOYW1lcy5sZW5ndGggPiAwID8gKFxuICAgICAgICAgICAgc2NoZW1hTmFtZXMubWFwKChzY2hlbWEpID0+IChcbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0ga2V5PXtzY2hlbWF9IHZhbHVlPXtzY2hlbWF9IGNsYXNzTmFtZT1cInBzLXRleHQteHNcIj5cbiAgICAgICAgICAgICAgICB7c2NoZW1hfVxuICAgICAgICAgICAgICA8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICApKVxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIm5vLXNjaGVtYXNcIj5ObyBzY2hlbWFzIGZvdW5kPC9TZWxlY3RJdGVtPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvU2VsZWN0Q29udGVudD5cbiAgICAgIDwvU2VsZWN0PlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuTmF2aWdhdGlvbi5CbG9jayA9IEJsb2NrO1xuTmF2aWdhdGlvbi5JdGVtID0gSXRlbTtcbk5hdmlnYXRpb24uU2NoZW1hU2VsZWN0b3IgPSBTY2hlbWFTZWxlY3RvcjtcbiIsICJpbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuLi9zdHVkaW8vY29udGV4dFwiO1xuaW1wb3J0IHsgdXNlSW50cm9zcGVjdGlvbiB9IGZyb20gXCIuL3VzZS1pbnRyb3NwZWN0aW9uXCI7XG5cbi8vIFR5cGVzIG1hdGNoaW5nIHRoZSBzY2hlbWEgdmlzdWFsaXplcidzIGV4cGVjdGVkIGZvcm1hdFxuZXhwb3J0IHR5cGUgRmllbGQgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xuICBpc1ByaW1hcnk/OiBib29sZWFuO1xuICBpc1JlcXVpcmVkPzogYm9vbGVhbjtcbiAgaXNOdWxsYWJsZT86IGJvb2xlYW47XG4gIGlzRm9yZWlnbktleT86IGJvb2xlYW47XG4gIGZvcmVpZ25LZXlUbz86IHsgdGFibGU6IHN0cmluZzsgY29sdW1uOiBzdHJpbmcgfTtcbn07XG5cbmV4cG9ydCB0eXBlIFRhYmxlID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGZpZWxkczogRmllbGRbXTtcbn07XG5cbmV4cG9ydCB0eXBlIFJlbGF0aW9uc2hpcCA9IHtcbiAgZnJvbTogc3RyaW5nO1xuICB0bzogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBTY2hlbWFWaXN1YWxpemF0aW9uRGF0YSA9IHtcbiAgdGFibGVzOiBUYWJsZVtdO1xuICByZWxhdGlvbnNoaXBzOiBSZWxhdGlvbnNoaXBbXTtcbn07XG5cbmNvbnN0IE5PX1RBQkxFU19OT0RFOiBUYWJsZSA9IHtcbiAgbmFtZTogXCJObyBUYWJsZXMgRm91bmRcIixcbiAgZmllbGRzOiBbeyBuYW1lOiBcIm1lc3NhZ2VcIiwgdHlwZTogXCJpbmZvXCIsIGlzUmVxdWlyZWQ6IHRydWUgfV0sXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlU2NoZW1hVmlzdWFsaXphdGlvbigpOiBTY2hlbWFWaXN1YWxpemF0aW9uRGF0YSB7XG4gIGNvbnN0IHsgZGF0YTogaW50cm9zcGVjdGlvbiwgaXNMb2FkaW5nIH0gPSB1c2VJbnRyb3NwZWN0aW9uKCk7XG4gIGNvbnN0IHsgYWN0aXZlU2NoZW1hIH0gPSB1c2VTdHVkaW8oKTtcblxuICByZXR1cm4gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGlzTG9hZGluZyB8fCAhaW50cm9zcGVjdGlvbiB8fCAhYWN0aXZlU2NoZW1hKSB7XG4gICAgICByZXR1cm4geyB0YWJsZXM6IFtOT19UQUJMRVNfTk9ERV0sIHJlbGF0aW9uc2hpcHM6IFtdIH07XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudFNjaGVtYURhdGEgPSBpbnRyb3NwZWN0aW9uLnNjaGVtYXNbYWN0aXZlU2NoZW1hXTtcblxuICAgIGlmICghY3VycmVudFNjaGVtYURhdGEgfHwgT2JqZWN0LmtleXMoY3VycmVudFNjaGVtYURhdGEudGFibGVzKS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB7IHRhYmxlczogW05PX1RBQkxFU19OT0RFXSwgcmVsYXRpb25zaGlwczogW10gfTtcbiAgICB9XG5cbiAgICBjb25zdCB0YWJsZXM6IFRhYmxlW10gPSBbXTtcbiAgICBjb25zdCB0YWJsZU1hcDogUmVjb3JkPHN0cmluZywgVGFibGU+ID0ge307XG5cbiAgICBPYmplY3QudmFsdWVzKGN1cnJlbnRTY2hlbWFEYXRhLnRhYmxlcykuZm9yRWFjaCgodGFibGUpID0+IHtcbiAgICAgIGNvbnN0IGZpZWxkczogRmllbGRbXSA9IFtdO1xuXG4gICAgICBPYmplY3QudmFsdWVzKHRhYmxlLmNvbHVtbnMpLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgICBjb25zdCBmaWVsZERhdGE6IEZpZWxkID0ge1xuICAgICAgICAgIG5hbWU6IGNvbHVtbi5uYW1lLFxuICAgICAgICAgIHR5cGU6IGNvbHVtbi5kYXRhdHlwZS5uYW1lLFxuICAgICAgICAgIGlzUHJpbWFyeTogY29sdW1uLmlzSW5QcmltYXJ5S2V5LFxuICAgICAgICAgIGlzUmVxdWlyZWQ6ICFjb2x1bW4ubnVsbGFibGUsXG4gICAgICAgICAgaXNOdWxsYWJsZTogY29sdW1uLm51bGxhYmxlLFxuICAgICAgICAgIGlzRm9yZWlnbktleTogISFjb2x1bW4uZmtUYWJsZSwgLy8gVHJ1ZSBpZiBma1RhYmxlIGlzIHByZXNlbnRcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGNvbHVtbi5ma1RhYmxlICYmIGNvbHVtbi5ma0NvbHVtbikge1xuICAgICAgICAgIGZpZWxkRGF0YS5mb3JlaWduS2V5VG8gPSB7IHRhYmxlOiBjb2x1bW4uZmtUYWJsZSwgY29sdW1uOiBjb2x1bW4uZmtDb2x1bW4gfTtcbiAgICAgICAgfVxuICAgICAgICBmaWVsZHMucHVzaChmaWVsZERhdGEpO1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHRhYmxlT2JqZWN0OiBUYWJsZSA9IHtcbiAgICAgICAgbmFtZTogdGFibGUubmFtZSxcbiAgICAgICAgZmllbGRzLFxuICAgICAgfTtcblxuICAgICAgdGFibGVzLnB1c2godGFibGVPYmplY3QpO1xuICAgICAgdGFibGVNYXBbdGFibGUubmFtZV0gPSB0YWJsZU9iamVjdDtcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlbGF0aW9uc2hpcHM6IFJlbGF0aW9uc2hpcFtdID0gW107XG5cbiAgICB0YWJsZXMuZm9yRWFjaCgoc291cmNlVGFibGUpID0+IHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsVGFibGVEYXRhID0gY3VycmVudFNjaGVtYURhdGEudGFibGVzW3NvdXJjZVRhYmxlLm5hbWVdO1xuICAgICAgaWYgKG9yaWdpbmFsVGFibGVEYXRhKSB7XG4gICAgICAgIE9iamVjdC52YWx1ZXMob3JpZ2luYWxUYWJsZURhdGEuY29sdW1ucykuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgICAgaWYgKGNvbHVtbi5ma1RhYmxlICYmIGNvbHVtbi5ma0NvbHVtbikge1xuICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBGSyBjb2x1bW4gaW4gdGhlIHNvdXJjZVRhYmxlIGlzIGFsc28gcGFydCBvZiBpdHMgb3duIFByaW1hcnkgS2V5XG4gICAgICAgICAgICBjb25zdCBpc09uZVRvT25lID0gY29sdW1uLmlzSW5QcmltYXJ5S2V5OyAvLyBJZiB0aGUgRksgY29sdW1uIGl0c2VsZiBpcyBhIFBLIGNvbXBvbmVudFxuXG4gICAgICAgICAgICByZWxhdGlvbnNoaXBzLnB1c2goe1xuICAgICAgICAgICAgICBmcm9tOiBjb2x1bW4uZmtUYWJsZSwgLy8gVGhlIHRhYmxlIGJlaW5nIHJlZmVyZW5jZWQgKHBvdGVudGlhbGx5IDEgc2lkZSlcbiAgICAgICAgICAgICAgdG86IHNvdXJjZVRhYmxlLm5hbWUsIC8vIFRoZSB0YWJsZSB3aXRoIHRoZSBmb3JlaWduIGtleSAoTiBzaWRlIG9yIDEgc2lkZSBpZiBGSyBpcyBQSylcbiAgICAgICAgICAgICAgdHlwZTogaXNPbmVUb09uZSA/IFwiMToxXCIgOiBcIjE6blwiLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB7IHRhYmxlcywgcmVsYXRpb25zaGlwcyB9O1xuICB9LCBbaW50cm9zcGVjdGlvbiwgaXNMb2FkaW5nLCBhY3RpdmVTY2hlbWFdKTtcbn1cbiIsICJpbXBvcnQgXCJyZWFjdGZsb3cvZGlzdC9zdHlsZS5jc3NcIjtcblxuaW1wb3J0IHsgQWxlcnRDaXJjbGUsIEtleSwgU3F1YXJlQXJyb3dSaWdodCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB7IHR5cGUgRkMsIG1lbW8sIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBSZWFjdEZsb3csIHtcbiAgYWRkRWRnZSxcbiAgQmFja2dyb3VuZCxcbiAgdHlwZSBDb25uZWN0aW9uLFxuICBDb25uZWN0aW9uTGluZVR5cGUsXG4gIENvbnRyb2xzLFxuICB0eXBlIEVkZ2UsXG4gIEhhbmRsZSxcbiAgTWluaU1hcCxcbiAgdHlwZSBOb2RlLFxuICB0eXBlIE5vZGVQcm9wcyxcbiAgdHlwZSBOb2RlVHlwZXMsXG4gIFBvc2l0aW9uLFxuICB1c2VFZGdlc1N0YXRlLFxuICB1c2VOb2Rlc1N0YXRlLFxufSBmcm9tIFwicmVhY3RmbG93XCI7XG5cbmltcG9ydCB7IFRvb2x0aXAsIFRvb2x0aXBDb250ZW50LCBUb29sdGlwUHJvdmlkZXIsIFRvb2x0aXBUcmlnZ2VyIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvdG9vbHRpcFwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vbGliL3V0aWxzXCI7XG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vY29udGV4dFwiO1xuXG50eXBlIEZpZWxkID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgaXNQcmltYXJ5PzogYm9vbGVhbjtcbiAgaXNSZXF1aXJlZD86IGJvb2xlYW47XG4gIGlzTnVsbGFibGU/OiBib29sZWFuO1xuICBpc0ZvcmVpZ25LZXk/OiBib29sZWFuO1xuICBmb3JlaWduS2V5VG8/OiB7IHRhYmxlOiBzdHJpbmc7IGNvbHVtbjogc3RyaW5nIH07XG59O1xuXG50eXBlIFRhYmxlID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGZpZWxkczogRmllbGRbXTtcbn07XG5cbnR5cGUgU2NoZW1hVmlzdWFsaXphdGlvblByb3BzID0ge1xuICB0YWJsZXM6IFRhYmxlW107XG4gIHJlbGF0aW9uc2hpcHM6IHsgZnJvbTogc3RyaW5nOyB0bzogc3RyaW5nOyB0eXBlOiBzdHJpbmcgfVtdO1xufTtcblxuaW50ZXJmYWNlIFRhYmxlTm9kZURhdGEge1xuICBsYWJlbDogc3RyaW5nO1xuICBmaWVsZHM6IEZpZWxkW107XG59XG5cbi8vIEhlbHBlciBjb21wb25lbnQgZm9yIHJlbmRlcmluZyBhbiBpY29uIHdpdGggYSB0b29sdGlwXG5jb25zdCBJY29uV2l0aFRvb2x0aXA6IEZDPHtcbiAgaWNvbkVsZW1lbnQ6IEpTWC5FbGVtZW50O1xuICB0b29sdGlwVGV4dDogc3RyaW5nO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59PiA9ICh7IGljb25FbGVtZW50LCB0b29sdGlwVGV4dCwgY2xhc3NOYW1lIH0pID0+IChcbiAgPFRvb2x0aXA+XG4gICAgPFRvb2x0aXBUcmlnZ2VyIGFzQ2hpbGQ+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e2NsYXNzTmFtZX0+e2ljb25FbGVtZW50fTwvc3Bhbj5cbiAgICA8L1Rvb2x0aXBUcmlnZ2VyPlxuICAgIDxUb29sdGlwQ29udGVudD5cbiAgICAgIDxwPnt0b29sdGlwVGV4dH08L3A+XG4gICAgPC9Ub29sdGlwQ29udGVudD5cbiAgPC9Ub29sdGlwPlxuKTtcblxuY29uc3QgVGFibGVOb2RlOiBGQzxOb2RlUHJvcHM8VGFibGVOb2RlRGF0YT4+ID0gbWVtbygoeyBkYXRhIH0pID0+IHtcbiAgY29uc3QgeyBhY3RpdmVTY2hlbWEgfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCBpc05vVGFibGVzTm9kZSA9IGRhdGEubGFiZWwgPT09IFwiTm8gVGFibGVzIEZvdW5kXCI7XG5cbiAgLy8gVGhpcyBmdW5jdGlvbiBub3cgcmV0dXJucyBhbiBhcnJheSBvZiBpY29uIGNvbXBvbmVudHMgdG8gcmVuZGVyIGZvciBhIGZpZWxkXG4gIGNvbnN0IGdldEZpZWxkSWNvbnMgPSAoZmllbGQ6IEZpZWxkKTogSlNYLkVsZW1lbnRbXSA9PiB7XG4gICAgY29uc3QgaWNvbnM6IEpTWC5FbGVtZW50W10gPSBbXTtcblxuICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgdGhlIFwiTm8gVGFibGVzIEZvdW5kXCIgbm9kZSBtZXNzYWdlXG4gICAgaWYgKGlzTm9UYWJsZXNOb2RlICYmIGZpZWxkLnR5cGUgPT09IFwiaW5mb1wiKSB7XG4gICAgICBpY29ucy5wdXNoKFxuICAgICAgICA8SWNvbldpdGhUb29sdGlwIGtleT1cImluZm9cIiBpY29uRWxlbWVudD17PEFsZXJ0Q2lyY2xlIHNpemU9ezE2fSAvPn0gdG9vbHRpcFRleHQ9XCJJbmZvcm1hdGlvbmFsIG1lc3NhZ2VcIiAvPixcbiAgICAgICk7XG4gICAgICByZXR1cm4gaWNvbnM7XG4gICAgfVxuXG4gICAgLy8gSWNvbiBmb3IgUHJpbWFyeSBLZXlcbiAgICBpZiAoZmllbGQuaXNQcmltYXJ5KSB7XG4gICAgICBpY29ucy5wdXNoKFxuICAgICAgICA8SWNvbldpdGhUb29sdGlwXG4gICAgICAgICAga2V5PVwicGtcIlxuICAgICAgICAgIGljb25FbGVtZW50PXs8S2V5IHNpemU9ezEyfSBjbGFzc05hbWU9XCJwcy10ZXh0LXByaW1hcnlcIiAvPn1cbiAgICAgICAgICB0b29sdGlwVGV4dD1cIlByaW1hcnkgS2V5XCJcbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1iZy1tdXRlZCBwcy10ZXh0LW11dGVkLWZvcmVncm91bmQgcHMtcm91bmRlZC1mdWxsIHBzLXAtMC41IHBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLXctNSBwcy1oLTVcIlxuICAgICAgICAvPixcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChmaWVsZC5pc051bGxhYmxlKSB7XG4gICAgICAvLyBJY29uIGZvciBOdWxsYWJsZSAob25seSBpZiBub3QgYSBQcmltYXJ5IEtleSwgYXMgUEtzIHVzdWFsbHkgYXJlbid0IG51bGxhYmxlKVxuICAgICAgaWNvbnMucHVzaChcbiAgICAgICAgPEljb25XaXRoVG9vbHRpcFxuICAgICAgICAgIGtleT1cIm51bGxhYmxlXCJcbiAgICAgICAgICBpY29uRWxlbWVudD17PHNwYW4gY2xhc3NOYW1lPVwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHBzLXRleHQtY2VudGVyIHBzLWlubGluZS1ibG9jayBwcy13LTRcIj4/PC9zcGFuPn1cbiAgICAgICAgICB0b29sdGlwVGV4dD1cIk51bGxhYmxlXCJcbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1iZy1tdXRlZCBwcy10ZXh0LW11dGVkLWZvcmVncm91bmQgcHMtcm91bmRlZC1mdWxsIHBzLXAtMC41IHBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLXctNSBwcy1oLTVcIlxuICAgICAgICAvPixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gQWRkaXRpb25hbCBJY29uIGZvciBGb3JlaWduIEtleVxuICAgIGlmIChmaWVsZC5pc0ZvcmVpZ25LZXkpIHtcbiAgICAgIGNvbnN0IGZrVG9vbHRpcCA9IGZpZWxkLmZvcmVpZ25LZXlUb1xuICAgICAgICA/IGBGb3JlaWduIEtleSB0byAke2ZpZWxkLmZvcmVpZ25LZXlUby50YWJsZX0uJHtmaWVsZC5mb3JlaWduS2V5VG8uY29sdW1ufWBcbiAgICAgICAgOiBcIkZvcmVpZ24gS2V5XCI7XG4gICAgICBpY29ucy5wdXNoKFxuICAgICAgICA8SWNvbldpdGhUb29sdGlwXG4gICAgICAgICAga2V5PVwiZmtcIlxuICAgICAgICAgIGljb25FbGVtZW50PXs8S2V5IHNpemU9ezEyfSAvPn1cbiAgICAgICAgICB0b29sdGlwVGV4dD17ZmtUb29sdGlwfVxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWJnLXByaW1hcnkgcHMtdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgcHMtcm91bmRlZC1mdWxsIHBzLXAtMC41IHBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLXctNSBwcy1oLTVcIlxuICAgICAgICAvPixcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBpY29ucztcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxUb29sdGlwUHJvdmlkZXIgZGVsYXlEdXJhdGlvbj17MzAwfT5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICBcInBzLW1pbi13LVsyNTBweF0gcHMtc2hhZG93LXhsIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJvcmRlci1ib3JkZXIgcHMtYmctY2FyZFwiLFxuICAgICAgICAgIGlzTm9UYWJsZXNOb2RlICYmIFwicHMtYm9yZGVyLW9yYW5nZS00MDBcIixcbiAgICAgICAgKX1cbiAgICAgID5cbiAgICAgICAgPEhhbmRsZSB0eXBlPVwidGFyZ2V0XCIgcG9zaXRpb249e1Bvc2l0aW9uLlRvcH0gc3R5bGU9e3sgb3BhY2l0eTogMCB9fSAvPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgIFwicHMtcHgtNCBwcy1weS0zIHBzLWJvcmRlci1iIHBzLWZsZXggcHMtanVzdGlmeS1iZXR3ZWVuIHBzLWl0ZW1zLWNlbnRlclwiLFxuICAgICAgICAgICAgaXNOb1RhYmxlc05vZGUgJiYgXCJwcy1iZy1vcmFuZ2UtMTAwIGRhcms6cHMtYmctb3JhbmdlLTk1MCBwcy10ZXh0LW9yYW5nZS03MDAgZGFyazpwcy10ZXh0LW9yYW5nZS0zMDBcIixcbiAgICAgICAgICApfVxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mb250LXNlbWlib2xkXCI+e2RhdGEubGFiZWx9PC9kaXY+XG4gICAgICAgICAgeyFpc05vVGFibGVzTm9kZSAmJiAoXG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBocmVmPXtgLyN2aWV3PXRhYmxlJnRhYmxlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGRhdGEubGFiZWwpfSZzY2hlbWE9JHtlbmNvZGVVUklDb21wb25lbnQoYWN0aXZlU2NoZW1hKX1gfVxuICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGhvdmVyOnBzLXRleHQtcHJpbWFyeVwiXG4gICAgICAgICAgICAgIHRpdGxlPXtgT3BlbiB0YWJsZSAke2RhdGEubGFiZWx9YH1cbiAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IGUuc3RvcFByb3BhZ2F0aW9uKCl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxTcXVhcmVBcnJvd1JpZ2h0IGNsYXNzTmFtZT1cInBzLXctNCBwcy1oLTRcIiAvPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXB4LTQgcHMtcHktMlwiPlxuICAgICAgICAgIHtpc05vVGFibGVzTm9kZSA/IChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTIgcHMtcHktOCBwcy10ZXh0LXNtIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPlxuICAgICAgICAgICAgICB7Z2V0RmllbGRJY29ucyh7XG4gICAgICAgICAgICAgICAgbmFtZTogXCJtZXNzYWdlXCIsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJpbmZvXCIsXG4gICAgICAgICAgICAgICAgaXNOdWxsYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgaXNQcmltYXJ5OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBpc0ZvcmVpZ25LZXk6IGZhbHNlLFxuICAgICAgICAgICAgICB9KS5tYXAoKGljb24sIGlkeCkgPT4gKFxuICAgICAgICAgICAgICAgIDxkaXYga2V5PXtpZHh9PntpY29ufTwvZGl2PlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleC0xXCI+Tm8gZGF0YWJhc2UgdGFibGVzIGZvdW5kLiBDb25uZWN0IHRvIGEgZGF0YWJhc2UgdG8gc2VlIHlvdXIgc2NoZW1hLjwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICBkYXRhLmZpZWxkcy5tYXAoKGZpZWxkLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgXCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMiBwcy1weS0yIHBzLXRleHQtc21cIixcbiAgICAgICAgICAgICAgICAgIGZpZWxkLmlzUHJpbWFyeSAmJiBcInBzLXRleHQtcHJpbWFyeVwiLFxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7LyogQ29udGFpbmVyIGZvciBpY29ucywgYWxsb3dzIG11bHRpcGxlIGljb25zIHNpZGUtYnktc2lkZSAqL31cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0xIHBzLW1pbi13LVtjYWxjKDEuMjVyZW0qMiswLjI1cmVtKV1cIj5cbiAgICAgICAgICAgICAgICAgIHtnZXRGaWVsZEljb25zKGZpZWxkKS5tYXAoKGljb25Db21wb25lbnQsIGlkeCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aWR4fT57aWNvbkNvbXBvbmVudH08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZsZXgtMSBwcy10cnVuY2F0ZSBwcy1tYXgtdy00NFwiPntmaWVsZC5uYW1lfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZCBwcy1mb250LW1vbm8gcHMtdHJ1bmNhdGVcIj57ZmllbGQudHlwZX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSlcbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPEhhbmRsZSB0eXBlPVwic291cmNlXCIgcG9zaXRpb249e1Bvc2l0aW9uLkJvdHRvbX0gc3R5bGU9e3sgb3BhY2l0eTogMCB9fSAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9Ub29sdGlwUHJvdmlkZXI+XG4gICk7XG59KTtcblxuVGFibGVOb2RlLmRpc3BsYXlOYW1lID0gXCJUYWJsZU5vZGVcIjtcblxuY29uc3Qgbm9kZVR5cGVzID0ge1xuICB0YWJsZU5vZGU6IFRhYmxlTm9kZSxcbn0gYXMgTm9kZVR5cGVzO1xuXG4vKipcbiAqIENyZWF0ZSBhIGxheW91dCBmb3IgdGhlIG5vZGVzIHdpdGggdGFibGVzIHBsYWNlZCBpbiBhIGdyaWQgZm9ybWF0aW9uXG4gKiB3aXRoIHJlbGF0ZWQgdGFibGVzIHBsYWNlZCBjbG9zZXIgdG8gZWFjaCBvdGhlci5cbiAqL1xuZnVuY3Rpb24gZ2V0TGF5b3V0ZWROb2Rlcyh0YWJsZXM6IFRhYmxlW10sIF9yZWxhdGlvbnNoaXBzOiB7IGZyb206IHN0cmluZzsgdG86IHN0cmluZzsgdHlwZTogc3RyaW5nIH1bXSk6IE5vZGVbXSB7XG4gIC8vIElmIHRoZXJlIGFyZSBvbmx5IGEgZmV3IHRhYmxlcywgdXNlIGEgc2ltcGxlIGhvcml6b250YWwgbGF5b3V0XG4gIGlmICh0YWJsZXMubGVuZ3RoIDw9IDMpIHtcbiAgICByZXR1cm4gdGFibGVzLm1hcCgodGFibGUsIGluZGV4KSA9PiAoe1xuICAgICAgaWQ6IHRhYmxlLm5hbWUsXG4gICAgICB0eXBlOiBcInRhYmxlTm9kZVwiLFxuICAgICAgZGF0YToge1xuICAgICAgICBsYWJlbDogdGFibGUubmFtZSxcbiAgICAgICAgZmllbGRzOiB0YWJsZS5maWVsZHMsXG4gICAgICB9LFxuICAgICAgcG9zaXRpb246IHsgeDogMzUwICogaW5kZXgsIHk6IDUwIH0sXG4gICAgfSkpO1xuICB9XG5cbiAgLy8gRm9yIG1vcmUgdGFibGVzLCB1c2UgYSBncmlkIGxheW91dFxuICBjb25zdCBHUklEX0dBUF9YID0gMzUwO1xuICBjb25zdCBHUklEX0dBUF9ZID0gMzAwO1xuICBjb25zdCBDT0xVTU5TID0gTWF0aC5jZWlsKE1hdGguc3FydCh0YWJsZXMubGVuZ3RoKSk7XG5cbiAgcmV0dXJuIHRhYmxlcy5tYXAoKHRhYmxlLCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IGNvbHVtbiA9IGluZGV4ICUgQ09MVU1OUztcbiAgICBjb25zdCByb3cgPSBNYXRoLmZsb29yKGluZGV4IC8gQ09MVU1OUyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHRhYmxlLm5hbWUsXG4gICAgICB0eXBlOiBcInRhYmxlTm9kZVwiLFxuICAgICAgZGF0YToge1xuICAgICAgICBsYWJlbDogdGFibGUubmFtZSxcbiAgICAgICAgZmllbGRzOiB0YWJsZS5maWVsZHMsXG4gICAgICB9LFxuICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgeDogY29sdW1uICogR1JJRF9HQVBfWCxcbiAgICAgICAgeTogcm93ICogR1JJRF9HQVBfWSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTY2hlbWFWaXN1YWxpemF0aW9uKHsgdGFibGVzLCByZWxhdGlvbnNoaXBzIH06IFNjaGVtYVZpc3VhbGl6YXRpb25Qcm9wcykge1xuICAvLyBDcmVhdGUgYSBtYXAgb2Ygbm9kZSBJRHMgZm9yIHF1aWNrIGxvb2t1cFxuICBjb25zdCBub2RlSWRTZXQgPSB1c2VNZW1vKCgpID0+IG5ldyBTZXQodGFibGVzLm1hcCgodGFibGUpID0+IHRhYmxlLm5hbWUpKSwgW3RhYmxlc10pO1xuXG4gIC8vIEZpbHRlciBvdXQgcmVsYXRpb25zaGlwcyB3aGVyZSBlaXRoZXIgc291cmNlIG9yIHRhcmdldCBkb2Vzbid0IGV4aXN0XG4gIGNvbnN0IHZhbGlkUmVsYXRpb25zaGlwcyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gcmVsYXRpb25zaGlwcy5maWx0ZXIoKHJlbCkgPT4gbm9kZUlkU2V0LmhhcyhyZWwuZnJvbSkgJiYgbm9kZUlkU2V0LmhhcyhyZWwudG8pKSxcbiAgICBbcmVsYXRpb25zaGlwcywgbm9kZUlkU2V0XSxcbiAgKTtcblxuICAvLyBDcmVhdGUgYW4gb3JnYW5pemVkIGxheW91dCBmb3Igbm9kZXNcbiAgY29uc3QgaW5pdGlhbE5vZGVzID0gdXNlTWVtbygoKSA9PiBnZXRMYXlvdXRlZE5vZGVzKHRhYmxlcywgdmFsaWRSZWxhdGlvbnNoaXBzKSwgW3RhYmxlcywgdmFsaWRSZWxhdGlvbnNoaXBzXSk7XG5cbiAgLy8gQ3JlYXRlIGVkZ2VzIHdpdGggYXBwcm9wcmlhdGUgc3R5bGluZ1xuICBjb25zdCBpbml0aWFsRWRnZXM6IEVkZ2VbXSA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIHZhbGlkUmVsYXRpb25zaGlwcy5tYXAoKHJlbCwgaW5kZXgpID0+ICh7XG4gICAgICAgIGlkOiBgZSR7aW5kZXh9YCxcbiAgICAgICAgc291cmNlOiByZWwuZnJvbSxcbiAgICAgICAgdGFyZ2V0OiByZWwudG8sXG4gICAgICAgIGFuaW1hdGVkOiB0cnVlLFxuICAgICAgICBsYWJlbDogcmVsLnR5cGUsXG4gICAgICAgIHR5cGU6IFwic21vb3Roc3RlcFwiLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgIHN0cm9rZTogXCJoc2wodmFyKC0tcHJpbWFyeSkpXCIsXG4gICAgICAgICAgc3Ryb2tlV2lkdGg6IDEsXG4gICAgICAgICAgc3Ryb2tlRGFzaGFycmF5OiBcIjUgNVwiLFxuICAgICAgICB9LFxuICAgICAgICBsYWJlbFN0eWxlOiB7XG4gICAgICAgICAgZmlsbDogXCJoc2wodmFyKC0tcHJpbWFyeSkpXCIsXG4gICAgICAgICAgZm9udFNpemU6IDEyLFxuICAgICAgICB9LFxuICAgICAgfSkpLFxuICAgIFt2YWxpZFJlbGF0aW9uc2hpcHNdLFxuICApO1xuXG4gIGNvbnN0IFtub2Rlcywgc2V0Tm9kZXMsIG9uTm9kZXNDaGFuZ2VdID0gdXNlTm9kZXNTdGF0ZShpbml0aWFsTm9kZXMpO1xuICBjb25zdCBbZWRnZXMsIHNldEVkZ2VzLCBvbkVkZ2VzQ2hhbmdlXSA9IHVzZUVkZ2VzU3RhdGUoaW5pdGlhbEVkZ2VzKTtcblxuICAvLyBVcGRhdGUgbm9kZXMgd2hlbiB0YWJsZXMgY2hhbmdlXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0Tm9kZXMoZ2V0TGF5b3V0ZWROb2Rlcyh0YWJsZXMsIHZhbGlkUmVsYXRpb25zaGlwcykpO1xuICB9LCBbdGFibGVzLCB2YWxpZFJlbGF0aW9uc2hpcHMsIHNldE5vZGVzXSk7XG5cbiAgLy8gVXBkYXRlIGVkZ2VzIHdoZW4gcmVsYXRpb25zaGlwcyBjaGFuZ2VcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRFZGdlcyhcbiAgICAgIHZhbGlkUmVsYXRpb25zaGlwcy5tYXAoKHJlbCwgaW5kZXgpID0+ICh7XG4gICAgICAgIGlkOiBgZSR7aW5kZXh9YCxcbiAgICAgICAgc291cmNlOiByZWwuZnJvbSxcbiAgICAgICAgdGFyZ2V0OiByZWwudG8sXG4gICAgICAgIGFuaW1hdGVkOiB0cnVlLFxuICAgICAgICBsYWJlbDogcmVsLnR5cGUsXG4gICAgICAgIHR5cGU6IFwic21vb3Roc3RlcFwiLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgIHN0cm9rZTogXCJoc2wodmFyKC0tcHJpbWFyeSkpXCIsXG4gICAgICAgICAgc3Ryb2tlV2lkdGg6IDEsXG4gICAgICAgICAgc3Ryb2tlRGFzaGFycmF5OiBcIjUgNVwiLFxuICAgICAgICB9LFxuICAgICAgICBsYWJlbFN0eWxlOiB7XG4gICAgICAgICAgZmlsbDogXCJoc2wodmFyKC0tcHJpbWFyeSkpXCIsXG4gICAgICAgICAgZm9udFNpemU6IDEyLFxuICAgICAgICB9LFxuICAgICAgfSkpLFxuICAgICk7XG4gIH0sIFt2YWxpZFJlbGF0aW9uc2hpcHMsIHNldEVkZ2VzXSk7XG5cbiAgY29uc3Qgb25Db25uZWN0ID0gdXNlQ2FsbGJhY2soKHBhcmFtczogRWRnZSB8IENvbm5lY3Rpb24pID0+IHNldEVkZ2VzKChlZHMpID0+IGFkZEVkZ2UocGFyYW1zLCBlZHMpKSwgW3NldEVkZ2VzXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy13LWZ1bGwgcHMtaC1mdWxsIHBzLWJnLWNhcmRcIj5cbiAgICAgICAgPFJlYWN0Rmxvd1xuICAgICAgICAgIG5vZGVzPXtub2Rlc31cbiAgICAgICAgICBlZGdlcz17ZWRnZXN9XG4gICAgICAgICAgb25Ob2Rlc0NoYW5nZT17b25Ob2Rlc0NoYW5nZX1cbiAgICAgICAgICBvbkVkZ2VzQ2hhbmdlPXtvbkVkZ2VzQ2hhbmdlfVxuICAgICAgICAgIG9uQ29ubmVjdD17b25Db25uZWN0fVxuICAgICAgICAgIGNvbm5lY3Rpb25MaW5lVHlwZT17Q29ubmVjdGlvbkxpbmVUeXBlLlNtb290aFN0ZXB9XG4gICAgICAgICAgbm9kZVR5cGVzPXtub2RlVHlwZXN9XG4gICAgICAgICAgZml0Vmlld1xuICAgICAgICAgIGZpdFZpZXdPcHRpb25zPXt7IHBhZGRpbmc6IDAuMiB9fVxuICAgICAgICA+XG4gICAgICAgICAgPEJhY2tncm91bmQgY2xhc3NOYW1lPVwicHMtYmctbXV0ZWRcIiBnYXA9ezE2fSAvPlxuICAgICAgICAgIDxDb250cm9sc1xuICAgICAgICAgICAgc2hvd0ludGVyYWN0aXZlPXtmYWxzZX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cIiFwcy1iZy1baHNsKHZhcigtLXN0dWRpby1iYWNrZ3JvdW5kKSldICFwcy1ib3JkZXItW2hzbCh2YXIoLS1zdHVkaW8tYm9yZGVyKSldICFwcy10ZXh0LVtoc2wodmFyKC0tc3R1ZGlvLWZvcmVncm91bmQpKV1cIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPE1pbmlNYXAgcGFubmFibGUgLz5cbiAgICAgICAgPC9SZWFjdEZsb3c+XG4gICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyBLZXkgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5cbmltcG9ydCB7IHVzZVNjaGVtYVZpc3VhbGl6YXRpb24gfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlLXNjaGVtYS12aXN1YWxpemF0aW9uXCI7XG5pbXBvcnQgeyBTdHVkaW9IZWFkZXIgfSBmcm9tIFwiLi4vU3R1ZGlvSGVhZGVyXCI7XG5pbXBvcnQgeyBTY2hlbWFWaXN1YWxpemF0aW9uIH0gZnJvbSBcIi4vVmlzdWFsaXNlclwiO1xuXG5leHBvcnQgZnVuY3Rpb24gU2NoZW1hVmlldygpIHtcbiAgY29uc3QgeyB0YWJsZXMsIHJlbGF0aW9uc2hpcHMgfSA9IHVzZVNjaGVtYVZpc3VhbGl6YXRpb24oKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8U3R1ZGlvSGVhZGVyIC8+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXAtNCBwcy1mbGV4IHBzLWdhcC02IHBzLWl0ZW1zLWNlbnRlciBwcy1ib3JkZXItYiBwcy1iZy1jYXJkXCI+XG4gICAgICAgIHsvKiBMZWdlbmQgSXRlbTogUHJpbWFyeSBLZXkgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1iZy1tdXRlZCBwcy10ZXh0LW11dGVkLWZvcmVncm91bmQgcHMtcm91bmRlZC1mdWxsIHBzLXAtMC41IHBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLXctNSBwcy1oLTVcIj5cbiAgICAgICAgICAgIDxLZXkgc2l6ZT17MTJ9IGNsYXNzTmFtZT1cInBzLXRleHQtcHJpbWFyeVwiIC8+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+UHJpbWFyeSBLZXk8L3A+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIHsvKiBMZWdlbmQgSXRlbTogTnVsbGFibGUgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1iZy1tdXRlZCBwcy10ZXh0LW11dGVkLWZvcmVncm91bmQgcHMtcm91bmRlZC1mdWxsIHBzLXAtMC41IHBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLXctNSBwcy1oLTVcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLXRleHQtY2VudGVyIHBzLWxlYWRpbmctbm9uZVwiPj88L3NwYW4+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+TnVsbGFibGU8L3A+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIHsvKiBMZWdlbmQgSXRlbTogRm9yZWlnbiBLZXkgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1iZy1wcmltYXJ5IHBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIHBzLXJvdW5kZWQtZnVsbCBwcy1wLTAuNSBwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlciBwcy13LTUgcHMtaC01XCI+XG4gICAgICAgICAgICA8S2V5IHNpemU9ezEyfSAvPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8cCBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPkZvcmVpZ24gS2V5PC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy13LWZ1bGwgcHMtaC1bY2FsYygxMDAlLXRoZW1lKHNwYWNlLjI4KSldXCI+XG4gICAgICAgIDxTY2hlbWFWaXN1YWxpemF0aW9uIHRhYmxlcz17dGFibGVzfSByZWxhdGlvbnNoaXBzPXtyZWxhdGlvbnNoaXBzfSAvPlxuICAgICAgPC9kaXY+XG4gICAgPC8+XG4gICk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiNE1BQUEs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OiBbIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAibnVxc19leHBvcnRzIiwgIl9fZXhwb3J0IiwgImtleU1hcCIsICJ1cmxLZXlzIiwgInVzZVF1ZXJ5U3RhdGUiLCAidXNlUXVlcnlTdGF0ZXMiLCAiX19yZUV4cG9ydCIsICJudXFzX2V4cG9ydHMiLCAibnVxc19zdGFyIiwgInVzZVF1ZXJ5U3RhdGVPcmlnaW5hbCIsICJ1c2VRdWVyeVN0YXRlc09yaWdpbmFsIiwgImtleU1hcCIsICJ1cmxLZXlzIiwgIl9CUkFORF9TWU1CT0wiLCAidXNlUXVlcnlTdGF0ZSIsICJrZXkiLCAib3B0aW9ucyIsICJ1c2VRdWVyeVN0YXRlcyIsICJjbHN4IiwgIkNMQVNTX1BBUlRfU0VQQVJBVE9SIiwgImNyZWF0ZUNsYXNzR3JvdXBVdGlscyIsICJjb25maWciLCAiY2xhc3NNYXAiLCAiY3JlYXRlQ2xhc3NNYXAiLCAiY29uZmxpY3RpbmdDbGFzc0dyb3VwcyIsICJjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnMiLCAiZ2V0Q2xhc3NHcm91cElkIiwgImNsYXNzTmFtZSIsICJjbGFzc1BhcnRzIiwgInNwbGl0IiwgImxlbmd0aCIsICJzaGlmdCIsICJnZXRHcm91cFJlY3Vyc2l2ZSIsICJnZXRHcm91cElkRm9yQXJiaXRyYXJ5UHJvcGVydHkiLCAiZ2V0Q29uZmxpY3RpbmdDbGFzc0dyb3VwSWRzIiwgImNsYXNzR3JvdXBJZCIsICJoYXNQb3N0Zml4TW9kaWZpZXIiLCAiY29uZmxpY3RzIiwgImNsYXNzUGFydE9iamVjdCIsICJjdXJyZW50Q2xhc3NQYXJ0IiwgIm5leHRDbGFzc1BhcnRPYmplY3QiLCAibmV4dFBhcnQiLCAiZ2V0IiwgImNsYXNzR3JvdXBGcm9tTmV4dENsYXNzUGFydCIsICJzbGljZSIsICJ1bmRlZmluZWQiLCAidmFsaWRhdG9ycyIsICJjbGFzc1Jlc3QiLCAiam9pbiIsICJmaW5kIiwgInZhbGlkYXRvciIsICJhcmJpdHJhcnlQcm9wZXJ0eVJlZ2V4IiwgInRlc3QiLCAiYXJiaXRyYXJ5UHJvcGVydHlDbGFzc05hbWUiLCAiZXhlYyIsICJwcm9wZXJ0eSIsICJzdWJzdHJpbmciLCAiaW5kZXhPZiIsICJ0aGVtZSIsICJwcmVmaXgiLCAiTWFwIiwgInByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMiLCAiZ2V0UHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcyIsICJPYmplY3QiLCAiZW50cmllcyIsICJjbGFzc0dyb3VwcyIsICJmb3JFYWNoIiwgImNsYXNzR3JvdXAiLCAicHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseSIsICJjbGFzc0RlZmluaXRpb24iLCAiY2xhc3NQYXJ0T2JqZWN0VG9FZGl0IiwgImdldFBhcnQiLCAiaXNUaGVtZUdldHRlciIsICJwdXNoIiwgImtleSIsICJwYXRoIiwgImN1cnJlbnRDbGFzc1BhcnRPYmplY3QiLCAicGF0aFBhcnQiLCAiaGFzIiwgInNldCIsICJmdW5jIiwgImNsYXNzR3JvdXBFbnRyaWVzIiwgIm1hcCIsICJwcmVmaXhlZENsYXNzR3JvdXAiLCAiZnJvbUVudHJpZXMiLCAidmFsdWUiLCAiY3JlYXRlTHJ1Q2FjaGUiLCAibWF4Q2FjaGVTaXplIiwgImNhY2hlU2l6ZSIsICJjYWNoZSIsICJwcmV2aW91c0NhY2hlIiwgInVwZGF0ZSIsICJJTVBPUlRBTlRfTU9ESUZJRVIiLCAiY3JlYXRlUGFyc2VDbGFzc05hbWUiLCAic2VwYXJhdG9yIiwgImV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lIiwgImlzU2VwYXJhdG9yU2luZ2xlQ2hhcmFjdGVyIiwgImZpcnN0U2VwYXJhdG9yQ2hhcmFjdGVyIiwgInNlcGFyYXRvckxlbmd0aCIsICJwYXJzZUNsYXNzTmFtZSIsICJtb2RpZmllcnMiLCAiYnJhY2tldERlcHRoIiwgIm1vZGlmaWVyU3RhcnQiLCAicG9zdGZpeE1vZGlmaWVyUG9zaXRpb24iLCAiaW5kZXgiLCAiY3VycmVudENoYXJhY3RlciIsICJiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyIiwgImhhc0ltcG9ydGFudE1vZGlmaWVyIiwgInN0YXJ0c1dpdGgiLCAiYmFzZUNsYXNzTmFtZSIsICJtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uIiwgInNvcnRNb2RpZmllcnMiLCAic29ydGVkTW9kaWZpZXJzIiwgInVuc29ydGVkTW9kaWZpZXJzIiwgIm1vZGlmaWVyIiwgInNvcnQiLCAiY3JlYXRlQ29uZmlnVXRpbHMiLCAiU1BMSVRfQ0xBU1NFU19SRUdFWCIsICJtZXJnZUNsYXNzTGlzdCIsICJjbGFzc0xpc3QiLCAiY29uZmlnVXRpbHMiLCAiY2xhc3NHcm91cHNJbkNvbmZsaWN0IiwgImNsYXNzTmFtZXMiLCAidHJpbSIsICJyZXN1bHQiLCAib3JpZ2luYWxDbGFzc05hbWUiLCAiQm9vbGVhbiIsICJ2YXJpYW50TW9kaWZpZXIiLCAibW9kaWZpZXJJZCIsICJjbGFzc0lkIiwgImluY2x1ZGVzIiwgImNvbmZsaWN0R3JvdXBzIiwgImkiLCAiZ3JvdXAiLCAidHdKb2luIiwgImFyZ3VtZW50IiwgInJlc29sdmVkVmFsdWUiLCAic3RyaW5nIiwgImFyZ3VtZW50cyIsICJ0b1ZhbHVlIiwgIm1peCIsICJrIiwgImNyZWF0ZVRhaWx3aW5kTWVyZ2UiLCAiY3JlYXRlQ29uZmlnRmlyc3QiLCAiY3JlYXRlQ29uZmlnUmVzdCIsICJjYWNoZUdldCIsICJjYWNoZVNldCIsICJmdW5jdGlvblRvQ2FsbCIsICJpbml0VGFpbHdpbmRNZXJnZSIsICJyZWR1Y2UiLCAicHJldmlvdXNDb25maWciLCAiY3JlYXRlQ29uZmlnQ3VycmVudCIsICJ0YWlsd2luZE1lcmdlIiwgImNhY2hlZFJlc3VsdCIsICJhcHBseSIsICJmcm9tVGhlbWUiLCAidGhlbWVHZXR0ZXIiLCAiYXJiaXRyYXJ5VmFsdWVSZWdleCIsICJmcmFjdGlvblJlZ2V4IiwgInN0cmluZ0xlbmd0aHMiLCAiU2V0IiwgInRzaGlydFVuaXRSZWdleCIsICJsZW5ndGhVbml0UmVnZXgiLCAiY29sb3JGdW5jdGlvblJlZ2V4IiwgInNoYWRvd1JlZ2V4IiwgImltYWdlUmVnZXgiLCAiaXNMZW5ndGgiLCAiaXNOdW1iZXIiLCAiaXNBcmJpdHJhcnlMZW5ndGgiLCAiZ2V0SXNBcmJpdHJhcnlWYWx1ZSIsICJpc0xlbmd0aE9ubHkiLCAiTnVtYmVyIiwgImlzTmFOIiwgImlzQXJiaXRyYXJ5TnVtYmVyIiwgImlzSW50ZWdlciIsICJpc1BlcmNlbnQiLCAiZW5kc1dpdGgiLCAiaXNBcmJpdHJhcnlWYWx1ZSIsICJpc1RzaGlydFNpemUiLCAic2l6ZUxhYmVscyIsICJpc0FyYml0cmFyeVNpemUiLCAiaXNOZXZlciIsICJpc0FyYml0cmFyeVBvc2l0aW9uIiwgImltYWdlTGFiZWxzIiwgImlzQXJiaXRyYXJ5SW1hZ2UiLCAiaXNJbWFnZSIsICJpc0FyYml0cmFyeVNoYWRvdyIsICJpc1NoYWRvdyIsICJpc0FueSIsICJsYWJlbCIsICJ0ZXN0VmFsdWUiLCAiZ2V0RGVmYXVsdENvbmZpZyIsICJjb2xvcnMiLCAiZnJvbVRoZW1lIiwgInNwYWNpbmciLCAiYmx1ciIsICJicmlnaHRuZXNzIiwgImJvcmRlckNvbG9yIiwgImJvcmRlclJhZGl1cyIsICJib3JkZXJTcGFjaW5nIiwgImJvcmRlcldpZHRoIiwgImNvbnRyYXN0IiwgImdyYXlzY2FsZSIsICJodWVSb3RhdGUiLCAiaW52ZXJ0IiwgImdhcCIsICJncmFkaWVudENvbG9yU3RvcHMiLCAiZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnMiLCAiaW5zZXQiLCAibWFyZ2luIiwgIm9wYWNpdHkiLCAicGFkZGluZyIsICJzYXR1cmF0ZSIsICJzY2FsZSIsICJzZXBpYSIsICJza2V3IiwgInNwYWNlIiwgInRyYW5zbGF0ZSIsICJnZXRPdmVyc2Nyb2xsIiwgImdldE92ZXJmbG93IiwgImdldFNwYWNpbmdXaXRoQXV0b0FuZEFyYml0cmFyeSIsICJpc0FyYml0cmFyeVZhbHVlIiwgImdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5IiwgImdldExlbmd0aFdpdGhFbXB0eUFuZEFyYml0cmFyeSIsICJpc0xlbmd0aCIsICJpc0FyYml0cmFyeUxlbmd0aCIsICJnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSIsICJpc051bWJlciIsICJnZXRQb3NpdGlvbnMiLCAiZ2V0TGluZVN0eWxlcyIsICJnZXRCbGVuZE1vZGVzIiwgImdldEFsaWduIiwgImdldFplcm9BbmRFbXB0eSIsICJnZXRCcmVha3MiLCAiZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5IiwgImNhY2hlU2l6ZSIsICJzZXBhcmF0b3IiLCAidGhlbWUiLCAiaXNBbnkiLCAiaXNUc2hpcnRTaXplIiwgImlzUGVyY2VudCIsICJjbGFzc0dyb3VwcyIsICJhc3BlY3QiLCAiY29udGFpbmVyIiwgImNvbHVtbnMiLCAiYm94IiwgImRpc3BsYXkiLCAiZmxvYXQiLCAiY2xlYXIiLCAiaXNvbGF0aW9uIiwgIm9iamVjdCIsICJvdmVyZmxvdyIsICJvdmVyc2Nyb2xsIiwgInBvc2l0aW9uIiwgInN0YXJ0IiwgImVuZCIsICJ0b3AiLCAicmlnaHQiLCAiYm90dG9tIiwgImxlZnQiLCAidmlzaWJpbGl0eSIsICJ6IiwgImlzSW50ZWdlciIsICJiYXNpcyIsICJmbGV4IiwgImdyb3ciLCAic2hyaW5rIiwgIm9yZGVyIiwgImNvbCIsICJzcGFuIiwgInJvdyIsICJqdXN0aWZ5IiwgImNvbnRlbnQiLCAiaXRlbXMiLCAic2VsZiIsICJwIiwgInB4IiwgInB5IiwgInBzIiwgInBlIiwgInB0IiwgInByIiwgInBiIiwgInBsIiwgIm0iLCAibXgiLCAibXkiLCAibXMiLCAibWUiLCAibXQiLCAibXIiLCAibWIiLCAibWwiLCAidyIsICJzY3JlZW4iLCAiaCIsICJzaXplIiwgInRleHQiLCAiZm9udCIsICJpc0FyYml0cmFyeU51bWJlciIsICJ0cmFja2luZyIsICJsZWFkaW5nIiwgImxpc3QiLCAicGxhY2Vob2xkZXIiLCAiZGVjb3JhdGlvbiIsICJpbmRlbnQiLCAiYWxpZ24iLCAid2hpdGVzcGFjZSIsICJicmVhayIsICJoeXBoZW5zIiwgImJnIiwgImlzQXJiaXRyYXJ5UG9zaXRpb24iLCAicmVwZWF0IiwgImlzQXJiaXRyYXJ5U2l6ZSIsICJpc0FyYml0cmFyeUltYWdlIiwgImZyb20iLCAidmlhIiwgInRvIiwgInJvdW5kZWQiLCAiYm9yZGVyIiwgImRpdmlkZSIsICJvdXRsaW5lIiwgInJpbmciLCAic2hhZG93IiwgImlzQXJiaXRyYXJ5U2hhZG93IiwgImZpbHRlciIsICJ0YWJsZSIsICJjYXB0aW9uIiwgInRyYW5zaXRpb24iLCAiZHVyYXRpb24iLCAiZWFzZSIsICJkZWxheSIsICJhbmltYXRlIiwgInRyYW5zZm9ybSIsICJyb3RhdGUiLCAib3JpZ2luIiwgImFjY2VudCIsICJhcHBlYXJhbmNlIiwgImN1cnNvciIsICJjYXJldCIsICJyZXNpemUiLCAic2Nyb2xsIiwgInNuYXAiLCAidG91Y2giLCAic2VsZWN0IiwgImZpbGwiLCAic3Ryb2tlIiwgInNyIiwgImNvbmZsaWN0aW5nQ2xhc3NHcm91cHMiLCAiY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzIiwgIm1lcmdlQ29uZmlncyIsICJiYXNlQ29uZmlnIiwgInByZWZpeCIsICJleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSIsICJleHRlbmQiLCAib3ZlcnJpZGUiLCAib3ZlcnJpZGVQcm9wZXJ0eSIsICJjb25maWdLZXkiLCAib3ZlcnJpZGVDb25maWdQcm9wZXJ0aWVzIiwgImtleSIsICJtZXJnZUNvbmZpZ1Byb3BlcnRpZXMiLCAiYmFzZU9iamVjdCIsICJvdmVycmlkZUtleSIsICJvdmVycmlkZVZhbHVlIiwgInVuZGVmaW5lZCIsICJvdmVycmlkZU9iamVjdCIsICJtZXJnZU9iamVjdCIsICJtZXJnZVZhbHVlIiwgImNvbmNhdCIsICJleHRlbmRUYWlsd2luZE1lcmdlIiwgImNvbmZpZ0V4dGVuc2lvbiIsICJjcmVhdGVDb25maWciLCAiY3JlYXRlVGFpbHdpbmRNZXJnZSIsICJ0d01lcmdlIiwgImV4dGVuZFRhaWx3aW5kTWVyZ2UiLCAiY24iLCAiaW5wdXRzIiwgImNsc3giLCAidXNlSXNNdXRhdGluZyIsICJ0b0tlYmFiQ2FzZSIsICJzdHJpbmciLCAibWVyZ2VDbGFzc2VzIiwgImNsYXNzZXMiLCAiY2xhc3NOYW1lIiwgImluZGV4IiwgImFycmF5IiwgImRlZmF1bHRBdHRyaWJ1dGVzIiwgIkljb24iLCAiZm9yd2FyZFJlZiIsICJjb2xvciIsICJzaXplIiwgInN0cm9rZVdpZHRoIiwgImFic29sdXRlU3Ryb2tlV2lkdGgiLCAiY2xhc3NOYW1lIiwgImNoaWxkcmVuIiwgImljb25Ob2RlIiwgInJlc3QiLCAicmVmIiwgImNyZWF0ZUVsZW1lbnQiLCAiZGVmYXVsdEF0dHJpYnV0ZXMiLCAibWVyZ2VDbGFzc2VzIiwgInRhZyIsICJhdHRycyIsICJjcmVhdGVMdWNpZGVJY29uIiwgImljb25OYW1lIiwgImljb25Ob2RlIiwgIkNvbXBvbmVudCIsICJmb3J3YXJkUmVmIiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJyZWYiLCAiY3JlYXRlRWxlbWVudCIsICJJY29uIiwgIm1lcmdlQ2xhc3NlcyIsICJ0b0tlYmFiQ2FzZSIsICJBcnJvd0Rvd25XaWRlTmFycm93IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQXJyb3dSaWdodCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkFycm93VXBXaWRlTmFycm93IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hlY2siLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uRG93biIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNoZXZyb25MZWZ0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hldnJvblJpZ2h0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hldnJvblVwIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hldnJvbnNMZWZ0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hldnJvbnNSaWdodCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNpcmNsZUFsZXJ0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2lyY2xlSGVscCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNpcmNsZSIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNvcHkiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDb3JuZXJEb3duTGVmdCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkZpbHRlciIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkdyaXBWZXJ0aWNhbCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIktleVJvdW5kIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiS2V5IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiTWF4aW1pemUiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJNaW5pbWl6ZSIsICJjcmVhdGVMdWNpZGVJY29uIiwgIk1vdmVEb3duIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiTW92ZVVwIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUGFuZWxMZWZ0Q2xvc2UiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJQYW5lbExlZnRPcGVuIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUGluT2ZmIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUGluIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUmVmcmVzaEN3IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiU3F1YXJlQXJyb3dSaWdodCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIlRhYmxlMiIsICJjcmVhdGVMdWNpZGVJY29uIiwgIlgiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJBbmltYXRlTnVtYmVyIiwgInVzZUVmZmVjdCIsICJ1c2VTdGF0ZSIsICJ0b2FzdCIsICJjdmEiLCAianN4IiwgImJhZGdlVmFyaWFudHMiLCAiY3ZhIiwgIkJhZGdlIiwgImNsYXNzTmFtZSIsICJ2YXJpYW50IiwgInByb3BzIiwgImNuIiwgIlNsb3QiLCAiY3ZhIiwgIlJlYWN0IiwgImpzeCIsICJidXR0b25WYXJpYW50cyIsICJjdmEiLCAiQnV0dG9uIiwgImNsYXNzTmFtZSIsICJ2YXJpYW50IiwgInNpemUiLCAiYXNDaGlsZCIsICJwcm9wcyIsICJyZWYiLCAiU2xvdCIsICJjbiIsICJQb3BvdmVyUHJpbWl0aXZlIiwgIlJlYWN0IiwgImpzeCIsICJQb3BvdmVyIiwgIlBvcG92ZXJUcmlnZ2VyIiwgIlBvcG92ZXJDb250ZW50IiwgImNsYXNzTmFtZSIsICJhbGlnbiIsICJzaWRlT2Zmc2V0IiwgInByb3BzIiwgInJlZiIsICJqc3giLCAiY24iLCAiUmVhY3QiLCAianN4IiwgIlRhYmxlIiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiVGFibGVIZWFkZXIiLCAiVGFibGVCb2R5IiwgIlRhYmxlRm9vdGVyIiwgIlRhYmxlUm93IiwgIlRhYmxlSGVhZCIsICJUYWJsZUNlbGwiLCAiVGFibGVDYXB0aW9uIiwgInVzZU11dGF0aW9uIiwgInVzZVF1ZXJ5Q2xpZW50IiwgIlF1ZXJ5Q2xpZW50IiwgIlF1ZXJ5Q2xpZW50UHJvdmlkZXIiLCAiUmVhY3QiLCAib25saW5lTWFuYWdlciIsICJ1c2VRdWVyeUNsaWVudCIsICJUYW5zdGFja1F1ZXJ5RGV2dG9vbHMiLCAiI2NsaWVudCIsICIjb25saW5lTWFuYWdlciIsICIjcXVlcnlGbGF2b3IiLCAiI3ZlcnNpb24iLCAiI2lzTW91bnRlZCIsICIjc3R5bGVOb25jZSIsICIjc2hhZG93RE9NVGFyZ2V0IiwgIiNidXR0b25Qb3NpdGlvbiIsICIjcG9zaXRpb24iLCAiI2luaXRpYWxJc09wZW4iLCAiI2Vycm9yVHlwZXMiLCAiI0NvbXBvbmVudCIsICIjZGlzcG9zZSIsICJjb25maWciLCAiY2xpZW50IiwgInF1ZXJ5Rmxhdm9yIiwgInZlcnNpb24iLCAib25saW5lTWFuYWdlciIsICJidXR0b25Qb3NpdGlvbiIsICJwb3NpdGlvbiIsICJpbml0aWFsSXNPcGVuIiwgImVycm9yVHlwZXMiLCAic3R5bGVOb25jZSIsICJzaGFkb3dET01UYXJnZXQiLCAiY3JlYXRlU2lnbmFsIiwgImlzT3BlbiIsICJlbCIsICJkaXNwb3NlIiwgInJlbmRlciIsICJfc2VsZiQiLCAiYnRuUG9zaXRpb24iLCAicG9zIiwgImVycm9ycyIsICJxdWVyeUNsaWVudCIsICJEZXZ0b29scyIsICJsYXp5IiwgInNldHVwU3R5bGVTaGVldCIsICJjcmVhdGVDb21wb25lbnQiLCAibWVyZ2VQcm9wcyIsICJUYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbCIsICIjb25DbG9zZSIsICJvbkNsb3NlIiwgImpzeCIsICJSZWFjdFF1ZXJ5RGV2dG9vbHMiLCAicHJvcHMiLCAicXVlcnlDbGllbnQiLCAidXNlUXVlcnlDbGllbnQiLCAicmVmIiwgImJ1dHRvblBvc2l0aW9uIiwgInBvc2l0aW9uIiwgImluaXRpYWxJc09wZW4iLCAiZXJyb3JUeXBlcyIsICJzdHlsZU5vbmNlIiwgInNoYWRvd0RPTVRhcmdldCIsICJkZXZ0b29scyIsICJUYW5zdGFja1F1ZXJ5RGV2dG9vbHMiLCAib25saW5lTWFuYWdlciIsICJSZWFjdCIsICJvbmxpbmVNYW5hZ2VyIiwgInVzZVF1ZXJ5Q2xpZW50IiwgImpzeCIsICJSZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbCIsICJwcm9wcyIsICJxdWVyeUNsaWVudCIsICJ1c2VRdWVyeUNsaWVudCIsICJyZWYiLCAiZXJyb3JUeXBlcyIsICJzdHlsZU5vbmNlIiwgInNoYWRvd0RPTVRhcmdldCIsICJkZXZ0b29scyIsICJUYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbCIsICJvbmxpbmVNYW5hZ2VyIiwgIlJlYWN0UXVlcnlEZXZ0b29scyIsICJSZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbCIsICJjcmVhdGVDb250ZXh0IiwgInVzZUNvbnRleHQiLCAidXNlTWVtbyIsICJ1c2VTdGF0ZSIsICJ0b2FzdCIsICJTb25uZXIiLCAianN4IiwgIlRvYXN0ZXIiLCAicHJvcHMiLCAiY3JlYXRlQWRhcHRlclByb3ZpZGVyIiwgInVzZUVmZmVjdCIsICJ1c2VTdGF0ZSIsICJ1c2VIYXNoQWRhcHRlciIsICJyYXdIYXNoIiwgImhhc2hQYXJhbXMiLCAic2V0SGFzaFBhcmFtcyIsICJ1cGRhdGVVcmwiLCAidXBkYXRlZCIsICJoaXN0b3J5IiwgInBhdGhuYW1lIiwgInNlYXJjaCIsICJoYXNoIiwgInVybCIsICJnZXRTZWFyY2hQYXJhbXNTbmFwc2hvdCIsICJyYXciLCAiaGFuZGxlSGFzaENoYW5nZSIsICJOdXFzSGFzaEFkYXB0ZXIiLCAidXNlRWZmZWN0IiwgInVzZVF1ZXJ5IiwgIklOSVRJQUxfREFUQV9VUERBVEVEX0FUIiwgInVzZUludHJvc3BlY3Rpb24iLCAiYWRhcHRlciIsICJ1c2VTdHVkaW8iLCAidXNlUXVlcnkiLCAic2lnbmFsIiwgImVycm9yIiwgImludHJvc3BlY3Rpb24iLCAiY3R4IiwgIlVSTERlZmF1bHRzSGFuZGxlciIsICJfdGFibGUiLCAic2V0VGFibGUiLCAidXNlUXVlcnlTdGF0ZSIsICJfc2NoZW1hIiwgInNldFNjaGVtYSIsICJfdmlldyIsICJzZXRWaWV3IiwgImludHJvc3BlY3Rpb24iLCAiaXNJbnRyb3NwZWN0aW9uTG9hZGluZyIsICJ1c2VJbnRyb3NwZWN0aW9uIiwgInVzZUVmZmVjdCIsICJpc1RhYmxlU2V0IiwgImlzU2NoZW1hU2V0IiwgImlzVmlld1NldCIsICJmaXJzdFNjaGVtYU5hbWUiLCAiZmlyc3RUYWJsZSIsICJqc3giLCAianN4cyIsICJxdWVyeUNsaWVudCIsICJRdWVyeUNsaWVudCIsICJTdHVkaW9Db250ZXh0IiwgImNyZWF0ZUNvbnRleHQiLCAiU3R1ZGlvQ29udGV4dFByb3ZpZGVyIiwgInByb3BzIiwgImNoaWxkcmVuIiwgIm90aGVyUHJvcHMiLCAiYWN0aXZlVGFibGUiLCAic2V0QWN0aXZlVGFibGUiLCAidXNlU3RhdGUiLCAiYWN0aXZlU2NoZW1hIiwgInNldEFjdGl2ZVNjaGVtYSIsICJpc0Z1bGxzY3JlZW4iLCAic2V0SXNGdWxsc2NyZWVuIiwgImlzTmF2aWdhdGlvbk9wZW4iLCAic2V0SXNOYXZpZ2F0aW9uT3BlbiIsICJvbkVycm9yIiwgImVycm9yIiwgInRvYXN0IiwgImVtaXRUZWxlbWV0cnlFdmVudCIsICJ1c2VNZW1vIiwgInRvZ2dsZUZ1bGxzY3JlZW4iLCAicHJldiIsICJ0b2dnbGVOYXZpZ2F0aW9uIiwgIlF1ZXJ5Q2xpZW50UHJvdmlkZXIiLCAiUmVhY3RRdWVyeURldnRvb2xzMiIsICJUb2FzdGVyIiwgIk51cXNIYXNoQWRhcHRlciIsICJVUkxEZWZhdWx0c0hhbmRsZXIiLCAidXNlU3R1ZGlvIiwgImNvbnRleHQiLCAidXNlQ29udGV4dCIsICJnZXRSb3dJZCIsICJyb3ciLCAidGFibGUiLCAiaWQiLCAiaW5mZXJSb3dGaWx0ZXIiLCAiYWRkUm93SWRUb1JvdyIsICJhZGRSb3dJZFRvUmVzdWx0IiwgInJlc3VsdCIsICJyb3dzIiwgInVzZUFjdGl2ZVRhYmxlSW5zZXJ0IiwgImFjdGl2ZVRhYmxlIiwgImFkYXB0ZXIiLCAidXNlU3R1ZGlvIiwgInF1ZXJ5Q2xpZW50IiwgInVzZVF1ZXJ5Q2xpZW50IiwgInNjaGVtYSIsICJ0YWJsZSIsICJ1c2VNdXRhdGlvbiIsICJyb3dzIiwgImVycm9yIiwgInJlc3VsdCIsICJhZGRSb3dJZFRvUmVzdWx0IiwgIm5ld0RhdGEiLCAib2xkRGF0YSIsICJ1c2VRdWVyeSIsICJ1c2VBY3RpdmVUYWJsZVF1ZXJ5IiwgInByb3BzIiwgInBhZ2VJbmRleCIsICJwYWdlU2l6ZSIsICJzb3J0T3JkZXIiLCAiZmlsdGVyIiwgImFjdGl2ZVRhYmxlIiwgImFkYXB0ZXIiLCAidXNlU3R1ZGlvIiwgInVzZVF1ZXJ5IiwgInByZXZpb3VzRGF0YSIsICJwcmV2aW91c1F1ZXJ5IiwgInNjaGVtYSIsICJ0YWJsZSIsICJzaWduYWwiLCAiZXJyb3IiLCAicmVzdWx0cyIsICJhZGRSb3dJZFRvUmVzdWx0IiwgIml0ZW0iLCAidXNlTXV0YXRpb24iLCAidXNlUXVlcnlDbGllbnQiLCAidXNlQWN0aXZlVGFibGVVcGRhdGUiLCAiYWN0aXZlVGFibGUiLCAiYWRhcHRlciIsICJvbkVycm9yIiwgInVzZVN0dWRpbyIsICJxdWVyeUNsaWVudCIsICJ1c2VRdWVyeUNsaWVudCIsICJxdWVyeUtleVByZWZpeCIsICJ1c2VNdXRhdGlvbiIsICJwYXJhbXMiLCAiZXJyb3IiLCAicmVzdWx0IiwgImNoYW5nZXMiLCAicm93IiwgIm92ZXJ3cml0ZUNhY2hlZFJvdyIsICJjaGFuZ2VkUm93IiwgInJvd0ZpbHRlciIsICJpbmZlclJvd0ZpbHRlciIsICJjYWNoZWRSb3ciLCAiY29sdW1uTmFtZSIsICJ2YWx1ZSIsICJvcmlnaW5hbFZhbHVlcyIsICJkZXRhaWxzIiwgInVuY2hhbmdlZFJvdyIsICJfX3BzX3VwZGF0ZWRfYXRfXyIsICJnZXRGaW5kZXJGbiIsICJ0YWJsZSIsICJ1cGRhdGVyRm4iLCAiZmluZGVyIiwgImNhY2hlZFJlc3VsdCIsICJjYWNoZWRSb3dzIiwgImNhY2hlZFJvd0luZGV4IiwgIm5ld1JvdyIsICJ1c2VFZmZlY3QiLCAidXNlTWVtbyIsICJ1c2VTdGF0ZSIsICJzaG9ydCIsICJkZWZhdWx0RmlsdGVyIiwgInNob3J0IiwgImNvdW50RmlsdGVyc1JlY3Vyc2l2ZSIsICJmaWx0ZXJHcm91cCIsICJjb3VudCIsICJmaWx0ZXIiLCAidXNlRmlsdGVyaW5nIiwgImZpbHRlclBhcmFtIiwgInNldEZpbHRlclBhcmFtIiwgInVzZVF1ZXJ5U3RhdGUiLCAiYXBwbGllZEZpbHRlciIsICJ1c2VNZW1vIiwgInNldEFwcGxpZWRGaWx0ZXIiLCAiZWRpdGluZ0ZpbHRlciIsICJzZXRFZGl0aW5nRmlsdGVyIiwgInVzZVN0YXRlIiwgInVzZUVmZmVjdCIsICJ0b3RhbEVkaXRpbmdGaWx0ZXJzIiwgInVzZUlzTXV0YXRpbmciLCAidXNlSXNJbnNlcnRpbmciLCAibXV0YXRpb25LZXkiLCAidXNlQ2FsbGJhY2siLCAiREVGQVVMVF9QQUdFX1NJWkUiLCAicGFnaW5hdGlvblBhcnNlcnMiLCAidXNlUGFnaW5hdGlvbiIsICJwYWdlSW5kZXgiLCAicGFnZVNpemUiLCAic2V0UGFnaW5hdGlvbiIsICJ1c2VRdWVyeVN0YXRlcyIsICJzZXRQYWdpbmF0aW9uU3RhdGUiLCAidXNlQ2FsbGJhY2siLCAidXBkYXRlck9yVmFsdWUiLCAib2xkIiwgIm5ld1N0YXRlIiwgInVzZUVmZmVjdCIsICJ1c2VTdGF0ZSIsICJ1c2VNdXRhdGlvbiIsICJ1c2VRdWVyeUNsaWVudCIsICJ1c2VBY3RpdmVUYWJsZURlbGV0ZSIsICJhY3RpdmVUYWJsZSIsICJhZGFwdGVyIiwgInVzZVN0dWRpbyIsICJxdWVyeUNsaWVudCIsICJ1c2VRdWVyeUNsaWVudCIsICJzY2hlbWEiLCAidGFibGUiLCAidXNlTXV0YXRpb24iLCAicm93cyIsICJlcnJvciIsICJyZXN1bHQiLCAidXNlU2VsZWN0aW9uIiwgImRhdGEiLCAiYWN0aXZlVGFibGUiLCAib25FcnJvciIsICJ1c2VTdHVkaW8iLCAicGFnaW5hdGlvblN0YXRlIiwgInVzZVBhZ2luYXRpb24iLCAicm93U2VsZWN0aW9uU3RhdGUiLCAic2V0Um93U2VsZWN0aW9uU3RhdGUiLCAidXNlU3RhdGUiLCAiaXNTZWxlY3RpbmciLCAibXV0YXRlIiwgInVzZUFjdGl2ZVRhYmxlRGVsZXRlIiwgInVzZUVmZmVjdCIsICJkZWxldGVTZWxlY3Rpb24iLCAicm93cyIsICJyb3ciLCAidXNlRWZmZWN0IiwgInVzZVN0YXRlIiwgInVzZVNvcnRpbmciLCAic29ydFBhcmFtIiwgInNldFNvcnRQYXJhbSIsICJ1c2VRdWVyeVN0YXRlIiwgInBhcnNlU29ydGluZyIsICJpdGVtIiwgImNvbHVtbiIsICJkaXJlY3Rpb24iLCAiZSIsICJzb3J0aW5nU3RhdGUiLCAic2V0U29ydGluZ1N0YXRlIiwgInVzZVN0YXRlIiwgInVzZUVmZmVjdCIsICJuZXdTb3J0aW5nU3RhdGUiLCAibmV3U3RhdGUiLCAicmVzb2x2ZWRTdGF0ZSIsICJzb3J0U3RyaW5nIiwgImlzVmFsaWRFbGVtZW50IiwgIkNvbnRleHRNZW51UHJpbWl0aXZlIiwgIlJlYWN0IiwgImpzeCIsICJqc3hzIiwgIkNvbnRleHRNZW51IiwgIkNvbnRleHRNZW51VHJpZ2dlciIsICJDb250ZXh0TWVudVN1YlRyaWdnZXIiLCAiY2xhc3NOYW1lIiwgImluc2V0IiwgImNoaWxkcmVuIiwgInByb3BzIiwgInJlZiIsICJqc3hzIiwgImNuIiwgImpzeCIsICJDaGV2cm9uUmlnaHQiLCAiQ29udGV4dE1lbnVTdWJDb250ZW50IiwgIkNvbnRleHRNZW51Q29udGVudCIsICJDb250ZXh0TWVudUl0ZW0iLCAiQ29udGV4dE1lbnVDaGVja2JveEl0ZW0iLCAiY2hlY2tlZCIsICJDaGVjayIsICJDb250ZXh0TWVudVJhZGlvSXRlbSIsICJDaXJjbGUiLCAiQ29udGV4dE1lbnVMYWJlbCIsICJDb250ZXh0TWVudVNlcGFyYXRvciIsICJDb250ZXh0TWVudVNob3J0Y3V0IiwgImpzeCIsICJqc3hzIiwgIkRhdGFHcmlkQ2VsbENvbnRleHRNZW51IiwgInByb3BzIiwgImNoaWxkcmVuIiwgIkNvbnRleHRNZW51IiwgIkNvbnRleHRNZW51VHJpZ2dlciIsICJDb250ZXh0TWVudUNvbnRlbnQiLCAiQ29udGV4dE1lbnVJdGVtIiwgImNvbnRlbnQiLCAiZXh0cmFjdFRleHRDb250ZW50IiwgImVycm9yIiwgIkNvcHkiLCAibm9kZSIsICJpc1ZhbGlkRWxlbWVudCIsICJqc3giLCAiQ2VsbCIsICJwcm9wcyIsICJjaGlsZHJlbiIsICJjbGFzc05hbWUiLCAicmVmIiwgInN0eWxlIiwgImZvcndhcmRlZFByb3BzIiwgIlRhYmxlQ2VsbCIsICJjbiIsICJEYXRhR3JpZENlbGxDb250ZXh0TWVudSIsICJpc09iamVjdFR5cGUiLCAianN4IiwgIkJvb2xlYW5DZWxsIiwgInByb3BzIiwgInZhbHVlIiwgIkZyYWdtZW50IiwgImpzeCIsICJEYXRlQ2VsbCIsICJwcm9wcyIsICJ2YWx1ZSIsICJGcmFnbWVudCIsICJqc3giLCAiRW1wdHlDZWxsIiwgIl9wcm9wcyIsICJGcmFnbWVudCIsICJqc3giLCAiRW51bUNlbGwiLCAicHJvcHMiLCAidmFsdWUiLCAiRnJhZ21lbnQiLCAianN4IiwgIkpTT05DZWxsIiwgInByb3BzIiwgInZhbHVlIiwgImpzeCIsICJOdWxsQ2VsbCIsICJfcHJvcHMiLCAianN4IiwgIk51bWVyaWNDZWxsIiwgInByb3BzIiwgInZhbHVlIiwgIkZyYWdtZW50IiwgImpzeCIsICJSYXdDZWxsIiwgInByb3BzIiwgInZhbHVlIiwgIkZyYWdtZW50IiwgImpzeCIsICJUaW1lQ2VsbCIsICJwcm9wcyIsICJ2YWx1ZSIsICJqc3giLCAiZ2V0Q2VsbCIsICJjZWxsIiwgImNvbHVtbiIsICJ2YWx1ZSIsICJFbXB0eUNlbGwiLCAiTnVsbENlbGwiLCAiZ3JvdXAiLCAiaXNBcnJheSIsICJKU09OQ2VsbCIsICJSYXdDZWxsIiwgIkVudW1DZWxsIiwgIkJvb2xlYW5DZWxsIiwgIkRhdGVDZWxsIiwgIlRpbWVDZWxsIiwgIk51bWVyaWNDZWxsIiwgImlzT2JqZWN0VHlwZSIsICJDaGVja2JveFByaW1pdGl2ZSIsICJSZWFjdCIsICJqc3giLCAiQ2hlY2tib3giLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgInJlZiIsICJjbiIsICJDaGVjayIsICJqc3giLCAiU2VsZWN0SGVhZGVyQ2VsbCIsICJwcm9wcyIsICJ0YWJsZSIsICJyZWFkb25seSIsICJDaGVja2JveCIsICJ2YWx1ZSIsICJqc3giLCAiU2VsZWN0Um93Q2VsbCIsICJwcm9wcyIsICJyb3ciLCAicmVhZG9ubHkiLCAiQ2hlY2tib3giLCAiUG9wb3ZlclByaW1pdGl2ZSIsICJSZWFjdCIsICJqc3giLCAiUG9wb3ZlckNlbGxDb250ZXh0IiwgIlBvcG92ZXJDZWxsIiwgImNoaWxkcmVuIiwgInByb3BzIiwgIm9wZW4iLCAic2V0T3BlbiIsICJQb3BvdmVyQ2VsbFRyaWdnZXIiLCAib25Eb3VibGVDbGljayIsICJjbGFzc05hbWUiLCAicmVmIiwgInRyaWdnZXJSZWYiLCAibm9kZSIsICJjbiIsICJQb3BvdmVyQ2VsbENvbnRlbnQiLCAiYWxpZ24iLCAic2lkZU9mZnNldCIsICJldmVudCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJhY3Rpb25zIiwgImNvbnRleHQiLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAiaGFuZGxlS2V5RG93biIsICJqc3giLCAianN4cyIsICJXcml0ZWFibGVDZWxsIiwgInByb3BzIiwgImNlbGxDb21wb25lbnQiLCAiaW5wdXRDb21wb25lbnQiLCAibGlua0NvbXBvbmVudCIsICJjb250YWluZXJQcm9wcyIsICJQb3BvdmVyQ2VsbCIsICJQb3BvdmVyQ2VsbFRyaWdnZXIiLCAiQ2VsbCIsICJQb3BvdmVyQ2VsbENvbnRlbnQiLCAiY24iLCAiY2xvc2VzdENlbnRlciIsICJEbmRDb250ZXh0IiwgIkRyYWdPdmVybGF5IiwgIktleWJvYXJkU2Vuc29yIiwgIlBvaW50ZXJTZW5zb3IiLCAidXNlU2Vuc29yIiwgInVzZVNlbnNvcnMiLCAiYXJyYXlNb3ZlIiwgIlNvcnRhYmxlQ29udGV4dCIsICJzb3J0YWJsZUtleWJvYXJkQ29vcmRpbmF0ZXMiLCAidXNlU29ydGFibGUiLCAidmVydGljYWxMaXN0U29ydGluZ1N0cmF0ZWd5IiwgIkNTUyIsICJtb3Rpb24iLCAiQW5pbWF0ZU51bWJlciIsICJ1c2VNZW1vIiwgInVzZVN0YXRlIiwgIkZyYWdtZW50IiwgImNyZWF0ZVBvcnRhbCIsICJzaG9ydCIsICJjb2VyY2VUb1ZhbHVlIiwgImNvbHVtbiIsICJvcGVyYXRvciIsICJ2YWx1ZSIsICJkYXRhVHlwZUdyb3VwIiwgImNvZXJjZVRvU3RyaW5nIiwgIkRyb3Bkb3duTWVudVByaW1pdGl2ZSIsICJSZWFjdCIsICJqc3giLCAianN4cyIsICJEcm9wZG93bk1lbnUiLCAiRHJvcGRvd25NZW51VHJpZ2dlciIsICJEcm9wZG93bk1lbnVTdWJUcmlnZ2VyIiwgImNsYXNzTmFtZSIsICJpbnNldCIsICJjaGlsZHJlbiIsICJwcm9wcyIsICJyZWYiLCAianN4cyIsICJjbiIsICJqc3giLCAiQ2hldnJvblJpZ2h0IiwgIkRyb3Bkb3duTWVudVN1YkNvbnRlbnQiLCAiRHJvcGRvd25NZW51Q29udGVudCIsICJzaWRlT2Zmc2V0IiwgIkRyb3Bkb3duTWVudUl0ZW0iLCAiRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtIiwgImNoZWNrZWQiLCAiQ2hlY2siLCAiRHJvcGRvd25NZW51UmFkaW9JdGVtIiwgIkNpcmNsZSIsICJEcm9wZG93bk1lbnVMYWJlbCIsICJEcm9wZG93bk1lbnVTZXBhcmF0b3IiLCAiRHJvcGRvd25NZW51U2hvcnRjdXQiLCAiUmVhY3QiLCAianN4IiwgIklucHV0IiwgImNsYXNzTmFtZSIsICJ0eXBlIiwgInByb3BzIiwgInJlZiIsICJjbiIsICJTZWxlY3RQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgImpzeHMiLCAiU2VsZWN0IiwgIlNlbGVjdFZhbHVlIiwgIlNlbGVjdFRyaWdnZXIiLCAiY2xhc3NOYW1lIiwgImNoaWxkcmVuIiwgImxhYmVsIiwgInByb3BzIiwgInJlZiIsICJqc3hzIiwgImNuIiwgImpzeCIsICJDaGV2cm9uRG93biIsICJTZWxlY3RTY3JvbGxVcEJ1dHRvbiIsICJDaGV2cm9uVXAiLCAiU2VsZWN0U2Nyb2xsRG93bkJ1dHRvbiIsICJTZWxlY3RDb250ZW50IiwgInBvc2l0aW9uIiwgIlNlbGVjdExhYmVsIiwgIlNlbGVjdEl0ZW0iLCAiQ2hlY2siLCAiU2VsZWN0U2VwYXJhdG9yIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkxlYWRpbmdPcGVyYXRvclNlbGVjdCIsICJ2YWx1ZSIsICJvblZhbHVlQ2hhbmdlIiwgImRpc2FibGVkIiwgInRyaWdnZXJDbGFzc05hbWUiLCAiU2VsZWN0IiwgIlNlbGVjdFRyaWdnZXIiLCAiU2VsZWN0VmFsdWUiLCAiU2VsZWN0Q29udGVudCIsICJTZWxlY3RJdGVtIiwgIkRyYWdnYWJsZUZpbHRlckl0ZW1QcmV2aWV3IiwgImFjdGl2ZUlkIiwgIml0ZW1zIiwgInRhYmxlIiwgImFjdGl2ZUl0ZW0iLCAiaXRlbSIsICJsZWFkaW5nT3BlcmF0b3JWYWx1ZSIsICJzaG93TGVhZGluZ09wRm9yT3ZlcmxheSIsICJhY3RpdmVJdGVtSW5kZXgiLCAicHJldmlvdXNJdGVtIiwgIkZpbHRlckNvbmRpdGlvbiIsICJGaWx0ZXJHcm91cENvbXBvbmVudCIsICJGaWx0ZXJMaXN0SXRlbXMiLCAicGFyZW50R3JvdXBJZCIsICJvblVwZGF0ZUl0ZW0iLCAib25EZWxldGVJdGVtIiwgIm9uUmVvcmRlckl0ZW1zIiwgImFjdGl2ZURyYWdJZCIsICJvbkRyYWdTdGFydCIsICJvbkRyYWdFbmRTaWduYWwiLCAic29ydGFibGVJdGVtSWRzIiwgInVzZU1lbW8iLCAic2Vuc29ycyIsICJ1c2VTZW5zb3JzIiwgInVzZVNlbnNvciIsICJQb2ludGVyU2Vuc29yIiwgIktleWJvYXJkU2Vuc29yIiwgInNvcnRhYmxlS2V5Ym9hcmRDb29yZGluYXRlcyIsICJEbmRDb250ZXh0IiwgImNsb3Nlc3RDZW50ZXIiLCAiZXZlbnQiLCAiYWN0aXZlIiwgIm92ZXIiLCAib2xkSW5kZXgiLCAibmV3SW5kZXgiLCAiU29ydGFibGVDb250ZXh0IiwgInZlcnRpY2FsTGlzdFNvcnRpbmdTdHJhdGVneSIsICJjdXJyZW50RmlsdGVySXRlbSIsICJpbmRleCIsICJzaG93TGVhZGluZ09wIiwgImxlYWRpbmdPcFZhbCIsICJvbkxlYWRpbmdPcENoYW5nZUZuIiwgImlzTGVhZGluZ09wVGFyZ2V0TGFzdCIsICJwcmV2SXRlbSIsICJuZXdWYWx1ZSIsICJ1cGRhdGVkUHJldkl0ZW0iLCAiU29ydGFibGVGaWx0ZXJJdGVtIiwgInVwZGF0ZWRGaWx0ZXIiLCAiY3JlYXRlUG9ydGFsIiwgIkRyYWdPdmVybGF5IiwgImZpbHRlciIsICJvblVwZGF0ZSIsICJvbkRlbGV0ZSIsICJwYXJlbnREbmRJZCIsICJzaG93TGVhZGluZ09wZXJhdG9yIiwgIm9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlIiwgImlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdCIsICJhdHRyaWJ1dGVzIiwgImxpc3RlbmVycyIsICJzZXROb2RlUmVmIiwgInRyYW5zZm9ybSIsICJ0cmFuc2l0aW9uIiwgImlzRHJhZ2dpbmciLCAidXNlU29ydGFibGUiLCAic3R5bGUiLCAiQ1NTIiwgImRyYWdIYW5kbGVQcm9wcyIsICJoYW5kbGVDb2x1bW5DaGFuZ2UiLCAiaGFuZGxlT3BlcmF0b3JDaGFuZ2UiLCAiaGFuZGxlVmFsdWVDaGFuZ2UiLCAiZSIsICJyYXdWYWx1ZSIsICJjb2x1bW5JbmZvIiwgImNvZXJjZVRvVmFsdWUiLCAiZWRpdGVkVmFsdWUiLCAic2V0RWRpdGVkVmFsdWUiLCAidXNlU3RhdGUiLCAiY29lcmNlVG9TdHJpbmciLCAibW90aW9uIiwgIkdyaXBWZXJ0aWNhbCIsICJjb2x1bW4iLCAiSW5wdXQiLCAiQnV0dG9uIiwgIlgiLCAiZ3JvdXAiLCAiaXNSb290IiwgImlzRXhwYW5kZWQiLCAic2V0SXNFeHBhbmRlZCIsICJzZXRBY3RpdmVEcmFnSWQiLCAiaGFuZGxlQWRkRmlsdGVyIiwgIm5ld0ZpbHRlciIsICJzaG9ydCIsICJoYW5kbGVBZGRHcm91cCIsICJuZXdHcm91cCIsICJ1cGRhdGVJdGVtSW5Hcm91cCIsICJ1cGRhdGVkRmlsdGVyT3JHcm91cCIsICJuZXdGaWx0ZXJzIiwgImRlbGV0ZUl0ZW1Gcm9tR3JvdXAiLCAiaGFuZGxlRHJhZ1N0YXJ0IiwgImhhbmRsZURyYWdFbmRTaWduYWwiLCAiaGFuZGxlUmVvcmRlckl0ZW1zIiwgInJlb3JkZXJlZEZpbHRlcnMiLCAiYXJyYXlNb3ZlIiwgInJlbmRlckdyb3VwQ29udGVudCIsICJjbiIsICJDaGV2cm9uRG93biIsICJDaGV2cm9uUmlnaHQiLCAiQmFkZ2UiLCAiQW5pbWF0ZU51bWJlciIsICJEcm9wZG93bk1lbnUiLCAiRHJvcGRvd25NZW51VHJpZ2dlciIsICJDaXJjbGVIZWxwIiwgIkRyb3Bkb3duTWVudUNvbnRlbnQiLCAiUXVlcnlWaXN1YWxpemVyIiwgImlzQW5kR3JvdXBPcGVuIiwgImYiLCAiaSIsICJyZXN1bHQiLCAiaXNMYXN0IiwgIm9wZXJhdG9yIiwgIkZpbHRlclRyZWUiLCAic2V0RmlsdGVyIiwgInNldEFwcGxpZWRGaWx0ZXIiLCAiRG5kQ29udGV4dCIsICJNb3VzZVNlbnNvciIsICJ1c2VTZW5zb3IiLCAidXNlU2Vuc29ycyIsICJhcnJheU1vdmUiLCAiaG9yaXpvbnRhbExpc3RTb3J0aW5nU3RyYXRlZ3kiLCAiU29ydGFibGVDb250ZXh0IiwgImdldENvcmVSb3dNb2RlbCIsICJ1c2VSZWFjdFRhYmxlIiwgImdldEl0ZW0iLCAia2V5IiwgIml0ZW1WYWx1ZSIsICJsb2NhbFN0b3JhZ2UiLCAiSlNPTiIsICJwYXJzZSIsICJ1c2VMb2NhbFN0b3JhZ2UiLCAiZGVmYXVsdFZhbHVlIiwgInZhbHVlIiwgInNldFZhbHVlIiwgIlJlYWN0IiwgInVzZVN0YXRlIiwgInVzZUVmZmVjdCIsICJpbml0aWFsVmFsdWUiLCAic2V0dGVyIiwgInVzZUNhbGxiYWNrIiwgInVwZGF0ZXIiLCAib2xkIiwgIm5ld1ZhbCIsICJzZXRJdGVtIiwgInN0cmluZ2lmeSIsICJkZWZhdWx0VGhlbWUiLCAiYmFja2dyb3VuZCIsICJiYWNrZ3JvdW5kQWx0IiwgImZvcmVncm91bmQiLCAiZ3JheSIsICJncmF5QWx0IiwgImlucHV0QmFja2dyb3VuZENvbG9yIiwgImlucHV0VGV4dENvbG9yIiwgInN1Y2Nlc3MiLCAiZGFuZ2VyIiwgImFjdGl2ZSIsICJ3YXJuaW5nIiwgIlRoZW1lQ29udGV4dCIsICJjcmVhdGVDb250ZXh0IiwgIlRoZW1lUHJvdmlkZXIiLCAiX3JlZiIsICJ0aGVtZSIsICJyZXN0IiwgImNyZWF0ZUVsZW1lbnQiLCAiUHJvdmlkZXIiLCAiX2V4dGVuZHMiLCAidXNlVGhlbWUiLCAidXNlQ29udGV4dCIsICJ1c2VNZWRpYVF1ZXJ5IiwgInF1ZXJ5IiwgImlzTWF0Y2giLCAic2V0SXNNYXRjaCIsICJ3aW5kb3ciLCAibWF0Y2hNZWRpYSIsICJtYXRjaGVzIiwgIm1hdGNoZXIiLCAib25DaGFuZ2UiLCAiYWRkTGlzdGVuZXIiLCAicmVtb3ZlTGlzdGVuZXIiLCAiaXNTZXJ2ZXIiLCAic3R5bGVkIiwgInR5cGUiLCAibmV3U3R5bGVzIiwgInF1ZXJpZXMiLCAiZm9yd2FyZFJlZiIsICJyZWYiLCAic3R5bGUiLCAibWVkaWFTdHlsZXMiLCAiT2JqZWN0IiwgImVudHJpZXMiLCAicmVkdWNlIiwgImN1cnJlbnQiLCAiX3JlZjIiLCAidXNlSXNNb3VudGVkIiwgIm1vdW50ZWRSZWYiLCAidXNlUmVmIiwgImlzTW91bnRlZCIsICJQYW5lbCIsICJfcHJvcHMiLCAiZm9udFNpemUiLCAiZm9udEZhbWlseSIsICJkaXNwbGF5IiwgImJhY2tncm91bmRDb2xvciIsICJjb2xvciIsICJmbGV4RGlyZWN0aW9uIiwgImZsZXgiLCAib3ZlcmZsb3ciLCAiaGVpZ2h0IiwgIihtYXgtd2lkdGg6IDcwMHB4KSIsICJib3JkZXJUb3AiLCAiQnV0dG9uIiwgInByb3BzIiwgImFwcGVhcmFuY2UiLCAiZm9udFdlaWdodCIsICJib3JkZXIiLCAiYm9yZGVyUmFkaXVzIiwgInBhZGRpbmciLCAib3BhY2l0eSIsICJkaXNhYmxlZCIsICJ1bmRlZmluZWQiLCAiY3Vyc29yIiwgImxpbmVIZWlnaHQiLCAiV2Via2l0QXBwZWFyYW5jZSIsICJiYWNrZ3JvdW5kSW1hZ2UiLCAiYmFja2dyb3VuZFJlcGVhdCIsICJiYWNrZ3JvdW5kUG9zaXRpb24iLCAiYmFja2dyb3VuZFNpemUiLCAiRW50cnkiLCAib3V0bGluZSIsICJ3b3JkQnJlYWsiLCAiTGFiZWwiLCAiVmFsdWUiLCAiU3ViRW50cmllcyIsICJtYXJnaW5MZWZ0IiwgInBhZGRpbmdMZWZ0IiwgImJvcmRlckxlZnQiLCAiSW5mbyIsICJFeHBhbmRlciIsICJleHBhbmRlZCIsICJ0cmFuc2l0aW9uIiwgInRyYW5zZm9ybSIsICJEZWZhdWx0UmVuZGVyZXIiLCAiaGFuZGxlRW50cnkiLCAibGFiZWwiLCAic3ViRW50cmllcyIsICJzdWJFbnRyeVBhZ2VzIiwgInRvZ2dsZSIsICJwYWdlU2l6ZSIsICJyZW5kZXJlciIsICJ2YWx1ZVNuYXBzaG90IiwgInNldFZhbHVlU25hcHNob3QiLCAiZXhwYW5kZWRQYWdlcyIsICJzZXRFeHBhbmRlZFBhZ2VzIiwgInJlZnJlc2hWYWx1ZVNuYXBzaG90IiwgImxlbmd0aCIsICJGcmFnbWVudCIsICJvbkNsaWNrIiwgIlN0cmluZyIsICJ0b0xvd2VyQ2FzZSIsICJtYXAiLCAiZW50cnkiLCAiaW5kZXgiLCAiaW5jbHVkZXMiLCAiZmlsdGVyIiwgImQiLCAiRXhwbG9yZXIiLCAiZGVmYXVsdEV4cGFuZGVkIiwgImdldE93blByb3BlcnR5TmFtZXMiLCAiX3JlZjMiLCAiZGVwdGgiLCAic2V0RXhwYW5kZWQiLCAic2V0IiwgInBhdGgiLCAibWFrZVByb3BlcnR5IiwgInN1YiIsICJuZXdQYXRoIiwgImNvbmNhdCIsICJzdWJEZWZhdWx0RXhwYW5kZWQiLCAic3ViUGF0aCIsICJBcnJheSIsICJpc0FycmF5IiwgImkiLCAiU3ltYm9sIiwgIml0ZXJhdG9yIiwgImZyb20iLCAidmFsIiwgIl9yZWY0IiwgInB1c2giLCAic2xpY2UiLCAiTG9nbyIsICJ3aWR0aCIsICJ2aWV3Qm94IiwgInZlcnNpb24iLCAic3Ryb2tlIiwgInN0cm9rZVdpZHRoIiwgImZpbGwiLCAiZmlsbFJ1bGUiLCAiaWQiLCAiUmVhY3RUYWJsZURldnRvb2xzIiwgImluaXRpYWxJc09wZW4iLCAidGFibGUiLCAicGFuZWxQcm9wcyIsICJ0b2dnbGVCdXR0b25Qcm9wcyIsICJjb250YWluZXJFbGVtZW50IiwgIkNvbnRhaW5lciIsICJyb290UmVmIiwgInBhbmVsUmVmIiwgImlzT3BlbiIsICJzZXRJc09wZW4iLCAicGFuZWxTdHlsZSIsICJvdGhlclBhbmVsUHJvcHMiLCAidG9nZ2xlQnV0dG9uU3R5bGUiLCAib25Ub2dnbGVDbGljayIsICJvdGhlclRvZ2dsZUJ1dHRvblByb3BzIiwgImNsYXNzTmFtZSIsICJSZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCIsICJtYXhIZWlnaHQiLCAiZSIsICJtYXJnaW4iLCAiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiLCAiX19odG1sIiwgIm1pbkhlaWdodCIsICJib3JkZXJSaWdodCIsICJqdXN0aWZ5Q29udGVudCIsICJhbGlnbkl0ZW1zIiwgIm1hcmdpblJpZ2h0IiwgImZsZXhXcmFwIiwgIm92ZXJmbG93WSIsICJnZXRTdGF0ZSIsICJnZXRBbGxDb2x1bW5zIiwgImdldENvcmVSb3dNb2RlbCIsICJnZXRGaWx0ZXJlZFJvd01vZGVsIiwgImdldFNvcnRlZFJvd01vZGVsIiwgImdldEdyb3VwZWRSb3dNb2RlbCIsICJnZXRFeHBhbmRlZFJvd01vZGVsIiwgIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAidXNlRWZmZWN0IiwgInVzZU1lbW8iLCAidXNlU3RhdGUiLCAianN4IiwgIlNrZWxldG9uIiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJjbiIsICJqc3giLCAiRGF0YUdyaWRMb2FkaW5nQmFyIiwgImNsYXNzTmFtZSIsICJjbiIsICJqc3giLCAianN4cyIsICJEYXRhR3JpZFBhZ2luYXRpb24iLCAicHJvcHMiLCAidGFibGUiLCAidmFyaWFudCIsICJwYWdlSW5kZXgiLCAicGFnZUNvdW50IiwgIkJ1dHRvbiIsICJDaGV2cm9uc0xlZnQiLCAiQ2hldnJvbkxlZnQiLCAiSW5wdXQiLCAiZSIsICJDaGV2cm9uUmlnaHQiLCAiQ2hldnJvbnNSaWdodCIsICJnZXRDb2x1bW5QaW5uaW5nU3R5bGVzIiwgImNvbHVtbiIsICJraW5kIiwgImlzUGlubmVkIiwgImlzTGVmdFBpbm5lZCIsICJpc1JpZ2h0UGlubmVkIiwgImNuIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkRhdGFHcmlkIiwgInByb3BzIiwgImNvbHVtbkRlZnMiLCAiZ2V0QmVmb3JlUm93cyIsICJpc0xvYWRpbmciLCAiaXNQcm9jZXNzaW5nIiwgIm9uUGFnaW5hdGlvbkNoYW5nZSIsICJvblJvd1NlbGVjdGlvbkNoYW5nZSIsICJvblNvcnRpbmdDaGFuZ2UiLCAicGFnZUNvdW50IiwgInBhZ2luYXRpb25TdGF0ZSIsICJyb3dzIiwgInJvd1NlbGVjdGlvblN0YXRlIiwgInNvcnRpbmdTdGF0ZSIsICJjb2x1bW5PcmRlciIsICJzZXRDb2x1bW5PcmRlciIsICJ1c2VTdGF0ZSIsICJjb2x1bW5QaW5uaW5nIiwgInNldENvbHVtblBpbm5pbmciLCAiY29sdW1uU2l6aW5nIiwgInNldENvbHVtblNpemluZyIsICJzb3J0aW5nIiwgInVzZU1lbW8iLCAidG9Tb3J0aW5nU3RhdGUiLCAiZGlzcGxheUxvYWRlciIsICJ1c2VFZmZlY3QiLCAiYWNjZXNzb3JLZXkiLCAiaGFuZGxlRHJhZ0VuZCIsICJhY3RpdmUiLCAib3ZlciIsICJvcmRlciIsICJhY3RpdmVJbmRleCIsICJvdmVySW5kZXgiLCAiYXJyYXlNb3ZlIiwgIm1vdXNlU2Vuc29yIiwgInVzZVNlbnNvciIsICJNb3VzZVNlbnNvciIsICJzZW5zb3JzIiwgInVzZVNlbnNvcnMiLCAidGFibGUiLCAidXNlUmVhY3RUYWJsZSIsICJnZXRDb3JlUm93TW9kZWwiLCAiX19wc19yb3dpZCIsICJ1cGRhdGVyT3JWYWx1ZSIsICJvbGQiLCAidG9Tb3J0T3JkZXJJdGVtcyIsICJSZWFjdFRhYmxlRGV2dG9vbHMiLCAiRGF0YUdyaWRMb2FkaW5nQmFyIiwgIkRuZENvbnRleHQiLCAiVGFibGUiLCAiVGFibGVIZWFkZXIiLCAiaGVhZGVyR3JvdXAiLCAiVGFibGVSb3ciLCAiU29ydGFibGVDb250ZXh0IiwgImhlYWRlciIsICJob3Jpem9udGFsTGlzdFNvcnRpbmdTdHJhdGVneSIsICJpIiwgIkhlYWRlciIsICJnZXRDb2x1bW5QaW5uaW5nU3R5bGVzIiwgIlRhYmxlQm9keSIsICJyb3ciLCAiY24iLCAiY2VsbCIsICJDZWxsIiwgIlRhYmxlQ2VsbCIsICJTa2VsZXRvbiIsICJEYXRhR3JpZFBhZ2luYXRpb24iLCAiQW5pbWF0ZVByZXNlbmNlIiwgIm1vdGlvbiIsICJmcm9tIiwgIml0ZW0iLCAidXNlU29ydGFibGUiLCAiQ1NTIiwgImpzeCIsICJEYXRhR3JpZERyYWdnYWJsZUhlYWRlckNlbGwiLCAicHJvcHMiLCAiY2hpbGRyZW4iLCAiY2xhc3NOYW1lIiwgImhlYWRlciIsICJjb21tb25TdHlsZSIsICJhdHRyaWJ1dGVzIiwgImxpc3RlbmVycyIsICJ0cmFuc2Zvcm0iLCAidHJhbnNpdGlvbiIsICJzZXROb2RlUmVmIiwgImlzRHJhZ2dpbmciLCAidXNlU29ydGFibGUiLCAic3R5bGUiLCAiQ1NTIiwgImRyYWdDbGFzcyIsICJjbiIsICJUYWJsZUhlYWQiLCAiQW5pbWF0ZVByZXNlbmNlIiwgIm1vdGlvbiIsICJUb29sdGlwUHJpbWl0aXZlIiwgIlJlYWN0IiwgImpzeCIsICJUb29sdGlwUHJvdmlkZXIiLCAiVG9vbHRpcCIsICJUb29sdGlwVHJpZ2dlciIsICJUb29sdGlwQ29udGVudCIsICJjbGFzc05hbWUiLCAic2lkZU9mZnNldCIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAianN4IiwgImpzeHMiLCAiRGF0YUdyaWRIZWFkZXJDZWxsIiwgImNvbHVtbiIsICJUb29sdGlwUHJvdmlkZXIiLCAiVG9vbHRpcCIsICJUb29sdGlwVHJpZ2dlciIsICJLZXlSb3VuZCIsICJUb29sdGlwQ29udGVudCIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJEYXRhR3JpZEhlYWRlciIsICJwcm9wcyIsICJjb2x1bW4iLCAiaGVhZGVyIiwgImNsYXNzTmFtZSIsICJjbiIsICJEYXRhR3JpZEhlYWRlckNlbGwiLCAiQW5pbWF0ZVByZXNlbmNlIiwgIm1vdGlvbiIsICJNb3ZlRG93biIsICJNb3ZlVXAiLCAiRHJvcGRvd25NZW51IiwgIkRyb3Bkb3duTWVudVRyaWdnZXIiLCAiQnV0dG9uIiwgIkNoZXZyb25Eb3duIiwgIkRyb3Bkb3duTWVudUNvbnRlbnQiLCAiRHJvcGRvd25NZW51SXRlbSIsICJBcnJvd0Rvd25XaWRlTmFycm93IiwgIkFycm93VXBXaWRlTmFycm93IiwgIlgiLCAiUGluT2ZmIiwgIlBpbiIsICJlIiwgImlzT2JqZWN0VHlwZSIsICJtb3Rpb24iLCAiUmVhY3QiLCAidXNlU3RhdGUiLCAiTGFiZWxQcmltaXRpdmUiLCAiY3ZhIiwgIlJlYWN0IiwgImpzeCIsICJsYWJlbFZhcmlhbnRzIiwgImN2YSIsICJMYWJlbCIsICJjbGFzc05hbWUiLCAicHJvcHMiLCAicmVmIiwgImNuIiwgIlN3aXRjaFByaW1pdGl2ZXMiLCAiUmVhY3QiLCAianN4IiwgIlN3aXRjaCIsICJjbGFzc05hbWUiLCAicHJvcHMiLCAicmVmIiwgImNuIiwgImRheWpzIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIklucHV0QWN0aW9ucyIsICJvblNhdmUiLCAib25DYW5jZWwiLCAib25DbG9zZSIsICJvbk51bGxDaGFuZ2UiLCAiaXNOdWxsIiwgInJlYWRvbmx5IiwgIm9uU2V0Tm93IiwgInNob3dTZXROb3ciLCAiQ29ybmVyRG93bkxlZnQiLCAiU3dpdGNoIiwgImNoZWNrZWQiLCAiVG9vbHRpcFByb3ZpZGVyIiwgIlRvb2x0aXAiLCAiVG9vbHRpcFRyaWdnZXIiLCAiVG9vbHRpcENvbnRlbnQiLCAiZGF5anMiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiQm9vbGVhbklucHV0IiwgInByb3BzIiwgInZhbHVlIiwgIm9uU3VibWl0IiwgImNvbHVtbiIsICJyZWFkb25seSIsICJpc051bGxhYmxlIiwgImN1cnJlbnRWYWx1ZSIsICJzZXRDdXJyZW50VmFsdWUiLCAidXNlU3RhdGUiLCAic2V0VG9OdWxsIiwgInNldFNldFRvTnVsbCIsICJpbml0aWFsVmFsdWUiLCAiaGFuZGxlQ2hhbmdlIiwgImNoZWNrZWQiLCAiaGFuZGxlTnVsbENoYW5nZSIsICJoYW5kbGVJbnB1dFN1Ym1pdCIsICJSZWFjdCIsICJ2YWx1ZVRvU3VibWl0IiwgImNhbmNlbEFjdGlvbiIsICJoYW5kbGVTYXZlIiwgImhhbmRsZUNhbmNlbCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJMYWJlbCIsICJtb3Rpb24iLCAiU3dpdGNoIiwgIklucHV0QWN0aW9ucyIsICJkYXlqcyIsICJsb2NhbGl6ZWRGb3JtYXQiLCAidXNlQ2FsbGJhY2siLCAidXNlRWZmZWN0IiwgInVzZU1lbW8iLCAidXNlU3RhdGUiLCAiRGF5UGlja2VyIiwgImpzeCIsICJDYWxlbmRhciIsICJjbGFzc05hbWUiLCAiY2xhc3NOYW1lcyIsICJzaG93T3V0c2lkZURheXMiLCAiaGlkZU5hdmlnYXRpb24iLCAicHJvcHMiLCAiX21vbnRoc0NsYXNzTmFtZSIsICJjbiIsICJfbW9udGhDYXB0aW9uQ2xhc3NOYW1lIiwgIl9kcm9wZG93bnNDbGFzc05hbWUiLCAiX2Zvb3RlckNsYXNzTmFtZSIsICJfd2Vla2RheXNDbGFzc05hbWUiLCAiX3dlZWtkYXlDbGFzc05hbWUiLCAiX2NhcHRpb25MYWJlbENsYXNzTmFtZSIsICJfbW9udGhHcmlkQ2xhc3NOYW1lIiwgIl93ZWVrQ2xhc3NOYW1lIiwgIl9kYXlDbGFzc05hbWUiLCAiX2RheUJ1dHRvbkNsYXNzTmFtZSIsICJidXR0b25WYXJpYW50cyIsICJidXR0b25SYW5nZUNsYXNzTmFtZSIsICJfcmFuZ2VTdGFydENsYXNzTmFtZSIsICJfcmFuZ2VFbmRDbGFzc05hbWUiLCAiX3JhbmdlTWlkZGxlQ2xhc3NOYW1lIiwgIl9zZWxlY3RlZENsYXNzTmFtZSIsICJfdG9kYXlDbGFzc05hbWUiLCAiX291dHNpZGVDbGFzc05hbWUiLCAiX2Rpc2FibGVkQ2xhc3NOYW1lIiwgIl9oaWRkZW5DbGFzc05hbWUiLCAiRGF5UGlja2VyIiwgInVzZVN0YXRlIiwgInVzZUlucHV0IiwgInByb3BzIiwgImluaXRpYWxWYWx1ZSIsICJ2YWx1ZSIsICJzZXRWYWx1ZSIsICJldmVudCIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJkYXlqcyIsICJsb2NhbGl6ZWRGb3JtYXQiLCAiRGF0ZUlucHV0IiwgInByb3BzIiwgIm9uU3VibWl0IiwgInZhbHVlIiwgInJlYWRvbmx5IiwgImNvbHVtbiIsICJpbml0aWFsVmFsdWUiLCAicGFyc2VkSW5pdGlhbERhdGUiLCAidXNlTWVtbyIsICJwYXJzZWQiLCAiZ2V0Rm9ybWF0Rm9yVHlwZSIsICJ0eXBlIiwgInNlbGVjdGVkRGF0ZSIsICJzZXRTZWxlY3RlZERhdGUiLCAidXNlU3RhdGUiLCAiY3VycmVudE1vbnRoIiwgInNldEN1cnJlbnRNb250aCIsICJob3VyVmFsdWUiLCAic2V0SG91clZhbHVlIiwgIm1pbnV0ZVZhbHVlIiwgInNldE1pbnV0ZVZhbHVlIiwgInNlY29uZFZhbHVlIiwgInNldFNlY29uZFZhbHVlIiwgImJhc2VIYW5kbGVPbkNoYW5nZSIsICJpbnB1dFZhbHVlIiwgInNldFZhbHVlIiwgInVzZUlucHV0IiwgImNvbHVtblR5cGUiLCAiZGJGb3JtYXQiLCAiaGFzVGltZVByZWNpc2lvbiIsICJoYW5kbGVPbkNoYW5nZSIsICJldmVudCIsICJuZXdWYWx1ZSIsICJuZXdEYXRlIiwgImhhbmRsZUNhbGVuZGFyU2VsZWN0IiwgImRhdGUiLCAibmV3U2VsZWN0ZWREYXRlIiwgImZpbmFsRGF0ZSIsICJub3ciLCAiZm9ybWF0dGVkRGF0ZSIsICJoYW5kbGVPblN1Ym1pdCIsICJoYW5kbGVJbnB1dFN1Ym1pdCIsICJ1c2VDYWxsYmFjayIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiaGFuZGxlU2V0Tm93IiwgImUiLCAic2V0WWVhclZhbHVlIiwgIm1vbnRocyIsICJjdXJyZW50TW9udGhWYWx1ZSIsICJ5ZWFyVmFsdWUiLCAidXBkYXRlRGF0ZUZyb21JbnB1dHMiLCAibmV3RGF0ZVBhcnRzIiwgImJhc2VEYXRlIiwgImhhbmRsZU1vbnRoQ2hhbmdlIiwgIm1vbnRoSW5kZXgiLCAiaGFuZGxlWWVhckNoYW5nZSIsICJuZXdZZWFyU3RyIiwgInllYXIiLCAiaGFuZGxlVGltZUNoYW5nZSIsICJwYXJ0IiwgIm51bWVyaWNWYWx1ZSIsICJuZXdIb3VyIiwgIm5ld01pbnV0ZSIsICJuZXdTZWNvbmQiLCAiaXNDb21wbGV0ZUhvdXIiLCAiaXNDb21wbGV0ZU1pbnV0ZSIsICJpc0NvbXBsZXRlU2Vjb25kIiwgInVzZUVmZmVjdCIsICJkanNEYXRlIiwgIklucHV0IiwgIlNlbGVjdCIsICJTZWxlY3RUcmlnZ2VyIiwgIlNlbGVjdFZhbHVlIiwgIlNlbGVjdENvbnRlbnQiLCAibW9udGgiLCAiU2VsZWN0SXRlbSIsICJEYXlQaWNrZXJXcmFwcGVyIiwgIklucHV0QWN0aW9ucyIsICJzZWxlY3RlZCIsICJvblNlbGVjdCIsICJvbk1vbnRoQ2hhbmdlIiwgImRpc2FibGVkIiwgIkNhbGVuZGFyIiwgInVzZUNhbGxiYWNrIiwgInVzZVN0YXRlIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkVudW1JbnB1dCIsICJwcm9wcyIsICJvblN1Ym1pdCIsICJjb2x1bW4iLCAidmFsdWUiLCAib3B0aW9ucyIsICJyZWFkb25seSIsICJpc051bGxhYmxlIiwgImluaXRpYWxWYWx1ZSIsICJjdXJyZW50VmFsdWUiLCAic2V0Q3VycmVudFZhbHVlIiwgInVzZVN0YXRlIiwgInNldFRvTnVsbCIsICJzZXRTZXRUb051bGwiLCAiaGFuZGxlU2VsZWN0T3B0aW9uIiwgIm9wdGlvbiIsICJoYW5kbGVOdWxsQ2hhbmdlIiwgImNoZWNrZWQiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAidXNlQ2FsbGJhY2siLCAiY2FuY2VsQWN0aW9uIiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgInVzZVBvcG92ZXJBY3Rpb25zIiwgImJhZGdlVmFyaWFudHMiLCAiSW5wdXRBY3Rpb25zIiwgIlJlYWN0IiwgInVzZVN0YXRlIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkpzb25JbnB1dCIsICJwcm9wcyIsICJ2YWx1ZSIsICJvblN1Ym1pdCIsICJjb2x1bW4iLCAicmVhZG9ubHkiLCAiaXNOdWxsYWJsZSIsICJpbml0aWFsVmFsdWUiLCAiY3VycmVudFZhbHVlIiwgInNldEN1cnJlbnRWYWx1ZSIsICJ1c2VTdGF0ZSIsICJzZXRUb051bGwiLCAic2V0U2V0VG9OdWxsIiwgImhhbmRsZUNoYW5nZSIsICJlIiwgImhhbmRsZU51bGxDaGFuZ2UiLCAiY2hlY2tlZCIsICJoYW5kbGVJbnB1dFN1Ym1pdCIsICJSZWFjdCIsICJqc29uVmFsdWUiLCAiY2FuY2VsQWN0aW9uIiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgInVzZVBvcG92ZXJBY3Rpb25zIiwgIklucHV0QWN0aW9ucyIsICJSZWFjdCIsICJ1c2VTdGF0ZSIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJOdW1lcmljSW5wdXQiLCAicHJvcHMiLCAidmFsdWUiLCAib25TdWJtaXQiLCAiY29sdW1uIiwgInJlYWRvbmx5IiwgImlzTnVsbGFibGUiLCAiY3VycmVudFZhbHVlIiwgInNldEN1cnJlbnRWYWx1ZSIsICJ1c2VTdGF0ZSIsICJzZXRUb051bGwiLCAic2V0U2V0VG9OdWxsIiwgImluaXRpYWxWYWx1ZSIsICJoYW5kbGVDaGFuZ2UiLCAiZSIsICJoYW5kbGVOdWxsQ2hhbmdlIiwgImNoZWNrZWQiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAiUmVhY3QiLCAibnVtZXJpY1ZhbHVlIiwgImNhbmNlbEFjdGlvbiIsICJoYW5kbGVTYXZlIiwgImhhbmRsZUNhbmNlbCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJMYWJlbCIsICJJbnB1dEFjdGlvbnMiLCAiUmVhY3QiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiUmF3SW5wdXQiLCAicHJvcHMiLCAib25TdWJtaXQiLCAidmFsdWUiLCAicmVhZG9ubHkiLCAiaW5pdGlhbFZhbHVlIiwgImhhbmRsZU9uQ2hhbmdlIiwgImlucHV0VmFsdWUiLCAidXNlSW5wdXQiLCAiaGFuZGxlT25TdWJtaXQiLCAiZXZlbnQiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAiUmVhY3QiLCAiY2FuY2VsQWN0aW9uIiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgInVzZVBvcG92ZXJBY3Rpb25zIiwgIklucHV0IiwgIklucHV0QWN0aW9ucyIsICJkYXlqcyIsICJsb2NhbGl6ZWRGb3JtYXQiLCAidXNlQ2FsbGJhY2siLCAidXNlTWVtbyIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJkYXlqcyIsICJsb2NhbGl6ZWRGb3JtYXQiLCAiVGltZUlucHV0IiwgInByb3BzIiwgIm9uU3VibWl0IiwgInZhbHVlIiwgInJlYWRvbmx5IiwgImluaXRpYWxWYWx1ZSIsICJoYW5kbGVPbkNoYW5nZSIsICJpbnB1dFZhbHVlIiwgInVzZUlucHV0IiwgImZvcm1hdHRlZFRpbWUiLCAidXNlTWVtbyIsICJoYXNUaW1lem9uZSIsICJkYXRlIiwgInRpbWVSZWdleCIsICJtYXRjaCIsICJob3VycyIsICJtaW51dGVzIiwgInR6T2Zmc2V0IiwgInBlcmlvZCIsICJoYW5kbGVPblN1Ym1pdCIsICJldmVudCIsICJoYW5kbGVJbnB1dFN1Ym1pdCIsICJ1c2VDYWxsYmFjayIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiSW5wdXQiLCAiSW5wdXRBY3Rpb25zIiwgImpzeCIsICJnZXRJbnB1dCIsICJwcm9wcyIsICJjZWxsIiwgImNvbHVtbiIsICJvblN1Ym1pdCIsICJncm91cCIsICJvcHRpb25zIiwgImlzQXJyYXkiLCAicmVhZG9ubHkiLCAiY2VsbFZhbHVlIiwgInZhbHVlIiwgIkRhdGVJbnB1dCIsICJUaW1lSW5wdXQiLCAiSnNvbklucHV0IiwgIkJvb2xlYW5JbnB1dCIsICJFbnVtSW5wdXQiLCAiTnVtZXJpY0lucHV0IiwgIlJhd0lucHV0IiwgImlzT2JqZWN0VHlwZSIsICJ1dWlkIiwgInVzZUNhbGxiYWNrIiwgInVzZUVmZmVjdCIsICJ1c2VNZW1vIiwgInV1aWR2NCIsICJ1c2VBY3RpdmVUYWJsZSIsICJhY3RpdmVUYWJsZSIsICJzZXRBY3RpdmVUYWJsZSIsICJhY3RpdmVTY2hlbWEiLCAic2V0QWN0aXZlU2NoZW1hIiwgImFkYXB0ZXIiLCAiZW1pdFRlbGVtZXRyeUV2ZW50IiwgInVzZVN0dWRpbyIsICJpbnRyb3NwZWN0aW9uIiwgImRhdGFVcGRhdGVkQXQiLCAidXNlSW50cm9zcGVjdGlvbiIsICJpc0xvYWRpbmciLCAiSU5JVElBTF9EQVRBX1VQREFURURfQVQiLCAiY3VycmVudFZpZXdWYWx1ZSIsICJ1c2VRdWVyeVN0YXRlIiwgInRhYmxlQW5kU2NoZW1hIiwgInNldFRhYmxlQW5kU2NoZW1hIiwgInVzZVF1ZXJ5U3RhdGVzIiwgInNldFBhZ2VQYXJhbSIsICJzZXRTb3J0UGFyYW0iLCAic2V0VmlldyIsICJ0YWJsZXMiLCAidXNlTWVtbyIsICJ0b3RhbFRhYmxlQ291bnQiLCAic3VtIiwgInNjaGVtYSIsICJmaXJzdFRhYmxlIiwgInVzZUVmZmVjdCIsICJ2aWV3UGFyYW1FeGlzdHMiLCAidGFibGVGcm9tUGFyYW0iLCAidCIsICJpc0NvbnRleHRUYWJsZVZhbGlkRm9yQ3VycmVudFNjaGVtYSIsICJoYW5kbGVUYWJsZUNoYW5nZSIsICJ1c2VDYWxsYmFjayIsICJuZXdUYWJsZSIsICJoYW5kbGVTY2hlbWFDaGFuZ2UiLCAibmV3U2NoZW1hIiwgInByZXYiLCAidXVpZHY0IiwgImpzeCIsICJMaW5rIiwgInByb3BzIiwgImNlbGwiLCAiY29sdW1uIiwgImZrU2NoZW1hIiwgImZrVGFibGUiLCAiZmtDb2x1bW4iLCAiaGFuZGxlU2NoZW1hQ2hhbmdlIiwgImhhbmRsZVRhYmxlQ2hhbmdlIiwgInVzZUFjdGl2ZVRhYmxlIiwgInNldEFwcGxpZWRGaWx0ZXIiLCAidXNlRmlsdGVyaW5nIiwgImludHJvc3BlY3Rpb24iLCAidXNlSW50cm9zcGVjdGlvbiIsICJ0YWJsZSIsICJCdXR0b24iLCAiZSIsICJ1dWlkIiwgIkFycm93UmlnaHQiLCAidXNlUmVhY3RUYWJsZSIsICJvbWl0IiwgIkZyYWdtZW50IiwgImpzeCIsICJTdGFnZWRSb3dzIiwgInByb3BzIiwgInBhcmVudFRhYmxlIiwgInN0YWdlZFJvd3MiLCAic2V0U3RhZ2VkUm93cyIsICJyZWFkb25seSIsICJ1c2VJc0luc2VydGluZyIsICJ1cGRhdGVTdGFnZWRSb3ciLCAicm93SW5kZXgiLCAicGFydGlhbFJvdyIsICJwcmV2Um93cyIsICJuZXdSb3dzIiwgImNvbHVtbkRlZnMiLCAiY29sdW1uIiwgIkVtcHR5Q2VsbCIsICJjZWxsIiwgIldyaXRlYWJsZUNlbGwiLCAiZ2V0Q2VsbCIsICJnZXRJbnB1dCIsICJ2YWx1ZSIsICJ0YWJsZSIsICJ1c2VSZWFjdFRhYmxlIiwgIm9taXQiLCAicm93IiwgImkiLCAiVGFibGVSb3ciLCAiaiIsICJDZWxsIiwgImdldENvbHVtblBpbm5pbmdTdHlsZXMiLCAianN4IiwgImpzeHMiLCAiU3R1ZGlvSGVhZGVyIiwgInByb3BzIiwgImlzRnVsbHNjcmVlbiIsICJ0b2dnbGVGdWxsc2NyZWVuIiwgInRvZ2dsZU5hdmlnYXRpb24iLCAiaXNOYXZpZ2F0aW9uT3BlbiIsICJ1c2VTdHVkaW8iLCAiQnV0dG9uIiwgIlBhbmVsTGVmdENsb3NlIiwgIlBhbmVsTGVmdE9wZW4iLCAiTWluaW1pemUiLCAiTWF4aW1pemUiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiQWN0aXZlVGFibGVWaWV3IiwgIl9wcm9wcyIsICJpc011dGF0aW5nIiwgInVzZUlzTXV0YXRpbmciLCAiYWN0aXZlVGFibGUiLCAib25FcnJvciIsICJ1c2VTdHVkaW8iLCAic29ydGluZ1N0YXRlIiwgInNldFNvcnRpbmdTdGF0ZSIsICJ1c2VTb3J0aW5nIiwgInBhZ2luYXRpb25TdGF0ZSIsICJzZXRQYWdpbmF0aW9uU3RhdGUiLCAidXNlUGFnaW5hdGlvbiIsICJzdGFnZWRSb3dzIiwgInNldFN0YWdlZFJvd3MiLCAidXNlU3RhdGUiLCAiYXBwbGllZEZpbHRlciIsICJzZXRBcHBsaWVkRmlsdGVyIiwgImVkaXRpbmdGaWx0ZXIiLCAic2V0RWRpdGluZ0ZpbHRlciIsICJ0b3RhbEVkaXRpbmdGaWx0ZXJzIiwgInVzZUZpbHRlcmluZyIsICJkYXRhIiwgImlzRmV0Y2hpbmciLCAicmVmZXRjaCIsICJ1c2VBY3RpdmVUYWJsZVF1ZXJ5IiwgImRlbGV0ZVNlbGVjdGlvbiIsICJpc1NlbGVjdGluZyIsICJyb3dTZWxlY3Rpb25TdGF0ZSIsICJzZXRSb3dTZWxlY3Rpb25TdGF0ZSIsICJ1c2VTZWxlY3Rpb24iLCAicmVhZG9ubHkiLCAiY29sdW1uIiwgImlzSW5zZXJ0aW5nIiwgInVzZUlzSW5zZXJ0aW5nIiwgImluc2VydCIsICJ1c2VBY3RpdmVUYWJsZUluc2VydCIsICJ1cGRhdGUiLCAidXNlQWN0aXZlVGFibGVVcGRhdGUiLCAidXNlRWZmZWN0IiwgInNhdmVTdGFnZWRSb3dzIiwgInRvYXN0IiwgIm5ld1N0YWdlZFJvdyIsICJvbGQiLCAiZHJvcFN0YWdlZFJvd3MiLCAiaGFuZGxlQ2VsbElucHV0U3VibWl0IiwgInZhbHVlIiwgInJvdyIsICJvbkZpbHRlck9wZW5DaGFuZ2UiLCAib3BlbiIsICJjb25jcmV0ZUNvbHVtbkRlZnMiLCAidGFibGUiLCAiaGVhZGVyIiwgInByb3BzIiwgIkRhdGFHcmlkRHJhZ2dhYmxlSGVhZGVyQ2VsbCIsICJEYXRhR3JpZEhlYWRlciIsICJjZWxsIiwgIldyaXRlYWJsZUNlbGwiLCAiZ2V0Q2VsbCIsICJMaW5rIiwgImdldElucHV0IiwgInZpcnR1YWxDb2x1bW5EZWZzIiwgIlRhYmxlSGVhZCIsICJTZWxlY3RIZWFkZXJDZWxsIiwgIkNlbGwiLCAiU2VsZWN0Um93Q2VsbCIsICJjb2x1bW5EZWZzIiwgImRlZmF1bHRDb2x1bW5Tb3J0aW5nIiwgIlN0dWRpb0hlYWRlciIsICJCdXR0b24iLCAiUmVmcmVzaEN3IiwgImNuIiwgIlBvcG92ZXIiLCAiUG9wb3ZlclRyaWdnZXIiLCAiRmlsdGVyIiwgIkJhZGdlIiwgIkFuaW1hdGVOdW1iZXIiLCAiUG9wb3ZlckNvbnRlbnQiLCAiRmlsdGVyVHJlZSIsICJmaWx0ZXIiLCAiRGF0YUdyaWQiLCAiU3RhZ2VkUm93cyIsICJnZXRQYWdlQ291bnQiLCAicm93Q291bnQiLCAicGFnZVNpemUiLCAicGFnZUNvdW50IiwgImEiLCAiYiIsICJhTWV0YSIsICJiTWV0YSIsICJqc3giLCAiQmFzaWNWaWV3IiwgIlNsb3QiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiTmF2aWdhdGlvbiIsICJjbGFzc05hbWUiLCAidGFibGVzIiwgImFjdGl2ZVRhYmxlIiwgImlzTG9hZGluZyIsICJoYW5kbGVUYWJsZUNoYW5nZSIsICJ1c2VBY3RpdmVUYWJsZSIsICJ2aWV3IiwgInNldFZpZXciLCAidXNlUXVlcnlTdGF0ZSIsICJzZXRVcmxUYWJsZSIsICJ2IiwgInNldFVybFNjaGVtYSIsICJzaWRlQmFyQ2xhc3NlcyIsICJjbiIsICJ0YWJsZSIsICJfIiwgImluZGV4IiwgIlNrZWxldG9uIiwgIkJsb2NrIiwgImxhYmVsIiwgImNoaWxkcmVuIiwgInByb3BzIiwgIlRhYmxlMiIsICJJdGVtIiwgImFzQ2hpbGQiLCAiaXNBY3RpdmUiLCAic2l6ZSIsICJ3cmFwQ2hpbGRyZW5JblNwYW4iLCAiU2xvdCIsICJTY2hlbWFTZWxlY3RvciIsICJpbnRyb3NwZWN0aW9uIiwgImlzSW50cm9zcGVjdGlvbkxvYWRpbmciLCAidXNlSW50cm9zcGVjdGlvbiIsICJhY3RpdmVTY2hlbWEiLCAiaGFuZGxlU2NoZW1hQ2hhbmdlIiwgInNjaGVtYU5hbWVzIiwgIlNlbGVjdCIsICJTZWxlY3RUcmlnZ2VyIiwgIlNlbGVjdFZhbHVlIiwgIlNlbGVjdENvbnRlbnQiLCAiU2VsZWN0SXRlbSIsICJzY2hlbWEiLCAidXNlTWVtbyIsICJOT19UQUJMRVNfTk9ERSIsICJ1c2VTY2hlbWFWaXN1YWxpemF0aW9uIiwgImludHJvc3BlY3Rpb24iLCAiaXNMb2FkaW5nIiwgInVzZUludHJvc3BlY3Rpb24iLCAiYWN0aXZlU2NoZW1hIiwgInVzZVN0dWRpbyIsICJ1c2VNZW1vIiwgImN1cnJlbnRTY2hlbWFEYXRhIiwgInRhYmxlcyIsICJ0YWJsZU1hcCIsICJ0YWJsZSIsICJmaWVsZHMiLCAiY29sdW1uIiwgImZpZWxkRGF0YSIsICJ0YWJsZU9iamVjdCIsICJyZWxhdGlvbnNoaXBzIiwgInNvdXJjZVRhYmxlIiwgIm9yaWdpbmFsVGFibGVEYXRhIiwgImlzT25lVG9PbmUiLCAibWVtbyIsICJ1c2VDYWxsYmFjayIsICJ1c2VFZmZlY3QiLCAidXNlTWVtbyIsICJSZWFjdEZsb3ciLCAiYWRkRWRnZSIsICJCYWNrZ3JvdW5kIiwgIkNvbm5lY3Rpb25MaW5lVHlwZSIsICJDb250cm9scyIsICJIYW5kbGUiLCAiTWluaU1hcCIsICJQb3NpdGlvbiIsICJ1c2VFZGdlc1N0YXRlIiwgInVzZU5vZGVzU3RhdGUiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiSWNvbldpdGhUb29sdGlwIiwgImljb25FbGVtZW50IiwgInRvb2x0aXBUZXh0IiwgImNsYXNzTmFtZSIsICJUb29sdGlwIiwgIlRvb2x0aXBUcmlnZ2VyIiwgIlRvb2x0aXBDb250ZW50IiwgIlRhYmxlTm9kZSIsICJtZW1vIiwgImRhdGEiLCAiYWN0aXZlU2NoZW1hIiwgInVzZVN0dWRpbyIsICJpc05vVGFibGVzTm9kZSIsICJnZXRGaWVsZEljb25zIiwgImZpZWxkIiwgImljb25zIiwgIkNpcmNsZUFsZXJ0IiwgIktleSIsICJma1Rvb2x0aXAiLCAiVG9vbHRpcFByb3ZpZGVyIiwgImNuIiwgIkhhbmRsZSIsICJQb3NpdGlvbiIsICJlIiwgIlNxdWFyZUFycm93UmlnaHQiLCAiaWNvbiIsICJpZHgiLCAiaW5kZXgiLCAiaWNvbkNvbXBvbmVudCIsICJub2RlVHlwZXMiLCAiZ2V0TGF5b3V0ZWROb2RlcyIsICJ0YWJsZXMiLCAiX3JlbGF0aW9uc2hpcHMiLCAidGFibGUiLCAiR1JJRF9HQVBfWCIsICJHUklEX0dBUF9ZIiwgIkNPTFVNTlMiLCAiY29sdW1uIiwgInJvdyIsICJTY2hlbWFWaXN1YWxpemF0aW9uIiwgInJlbGF0aW9uc2hpcHMiLCAibm9kZUlkU2V0IiwgInVzZU1lbW8iLCAidmFsaWRSZWxhdGlvbnNoaXBzIiwgInJlbCIsICJpbml0aWFsTm9kZXMiLCAiaW5pdGlhbEVkZ2VzIiwgIm5vZGVzIiwgInNldE5vZGVzIiwgIm9uTm9kZXNDaGFuZ2UiLCAidXNlTm9kZXNTdGF0ZSIsICJlZGdlcyIsICJzZXRFZGdlcyIsICJvbkVkZ2VzQ2hhbmdlIiwgInVzZUVkZ2VzU3RhdGUiLCAidXNlRWZmZWN0IiwgIm9uQ29ubmVjdCIsICJ1c2VDYWxsYmFjayIsICJwYXJhbXMiLCAiZWRzIiwgImFkZEVkZ2UiLCAiUmVhY3RGbG93IiwgIkNvbm5lY3Rpb25MaW5lVHlwZSIsICJCYWNrZ3JvdW5kIiwgIkNvbnRyb2xzIiwgIk1pbmlNYXAiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiU2NoZW1hVmlldyIsICJ0YWJsZXMiLCAicmVsYXRpb25zaGlwcyIsICJ1c2VTY2hlbWFWaXN1YWxpemF0aW9uIiwgIlN0dWRpb0hlYWRlciIsICJLZXkiLCAiU2NoZW1hVmlzdWFsaXphdGlvbiIsICJqc3giLCAianN4cyIsICJTdHVkaW8iLCAicHJvcHMiLCAiYWRhcHRlciIsICJvbkVycm9yIiwgIm9uVGVsZW1ldHJ5RXZlbnQiLCAiU3R1ZGlvQ29udGV4dFByb3ZpZGVyIiwgIlN0dWRpb0NvbnRlbnQiLCAiaXNGdWxsc2NyZWVuIiwgImlzTmF2aWdhdGlvbk9wZW4iLCAidXNlU3R1ZGlvIiwgInZpZXciLCAidXNlUXVlcnlTdGF0ZSIsICJjb250YWluZXJDbGFzc2VzIiwgImNuIiwgIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAiTmF2aWdhdGlvbiIsICJTY2hlbWFWaWV3IiwgIkFjdGl2ZVRhYmxlVmlldyIsICJCYXNpY1ZpZXciXQp9Cg==