@decaf-ts/integrations 0.4.1-2 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/integrations.cjs +4 -4
  2. package/dist/integrations.js +4 -4
  3. package/lib/cjs/feature-flags/services/FeatureFlag.service.cjs +13 -5
  4. package/lib/cjs/graph/engine/errors/GraphBreakSignal.cjs +37 -0
  5. package/lib/cjs/graph/engine/errors/index.cjs +3 -2
  6. package/lib/cjs/graph/engine/execution/BreakGraphNodeExecutor.cjs +22 -0
  7. package/lib/cjs/graph/engine/execution/index.cjs +3 -2
  8. package/lib/cjs/graph/engine/index.cjs +4 -2
  9. package/lib/cjs/graph/engine/loops/ForeachGraphNodeExecutor.cjs +54 -19
  10. package/lib/cjs/graph/engine/types.cjs +2 -2
  11. package/lib/cjs/graph/shared/nodes/flow-control.cjs +41 -3
  12. package/lib/cjs/index.cjs +3 -3
  13. package/lib/cjs/nest/graph/GraphExecutorRegistryFactory.cjs +7 -2
  14. package/lib/cjs/nest/keycloakAuthHandler.cjs +5 -3
  15. package/lib/cjs/nest/utils.cjs +15 -4
  16. package/lib/cjs/plugins/superset/templates.cjs +14 -20
  17. package/lib/esm/feature-flags/services/FeatureFlag.service.js +13 -5
  18. package/lib/esm/graph/engine/errors/GraphBreakSignal.js +32 -0
  19. package/lib/esm/graph/engine/errors/index.js +2 -1
  20. package/lib/esm/graph/engine/execution/BreakGraphNodeExecutor.js +17 -0
  21. package/lib/esm/graph/engine/execution/index.js +2 -1
  22. package/lib/esm/graph/engine/index.js +3 -1
  23. package/lib/esm/graph/engine/loops/ForeachGraphNodeExecutor.js +53 -18
  24. package/lib/esm/graph/engine/types.js +1 -1
  25. package/lib/esm/graph/shared/nodes/flow-control.js +39 -1
  26. package/lib/esm/index.js +3 -3
  27. package/lib/esm/nest/graph/GraphExecutorRegistryFactory.js +7 -2
  28. package/lib/esm/nest/keycloakAuthHandler.js +4 -2
  29. package/lib/esm/nest/utils.js +14 -3
  30. package/lib/esm/plugins/superset/templates.js +13 -19
  31. package/lib/types/graph/engine/errors/GraphBreakSignal.d.cts +28 -0
  32. package/lib/types/graph/engine/errors/GraphBreakSignal.d.mts +28 -0
  33. package/lib/types/graph/engine/errors/index.d.cts +1 -0
  34. package/lib/types/graph/engine/errors/index.d.mts +1 -0
  35. package/lib/types/graph/engine/execution/BreakGraphNodeExecutor.d.cts +22 -0
  36. package/lib/types/graph/engine/execution/BreakGraphNodeExecutor.d.mts +22 -0
  37. package/lib/types/graph/engine/execution/index.d.cts +1 -0
  38. package/lib/types/graph/engine/execution/index.d.mts +1 -0
  39. package/lib/types/graph/engine/index.d.cts +2 -0
  40. package/lib/types/graph/engine/index.d.mts +2 -0
  41. package/lib/types/graph/engine/loops/ForeachGraphNodeExecutor.d.cts +11 -3
  42. package/lib/types/graph/engine/loops/ForeachGraphNodeExecutor.d.mts +11 -3
  43. package/lib/types/graph/engine/types.d.cts +6 -0
  44. package/lib/types/graph/engine/types.d.mts +6 -0
  45. package/lib/types/graph/shared/nodes/flow-control.d.cts +12 -1
  46. package/lib/types/graph/shared/nodes/flow-control.d.mts +12 -1
  47. package/lib/types/index.d.cts +2 -2
  48. package/lib/types/index.d.mts +2 -2
  49. package/package.json +6 -3
  50. package/plugins/superset/Dockerfile +9 -9
@@ -104,25 +104,19 @@ def patch_react_import(content: str) -> str:
104
104
  def locate_embedded_component(
105
105
  content: str,
106
106
  ) -> tuple[re.Match[str], str]:
107
- names = [
108
- "EmbeddedLazyDashboardPage",
109
- "EmbededLazyDashboardPage",
110
- ]
111
-
112
- for name in names:
113
- pattern = re.compile(
114
- rf"const {name} = \\(\\) => \\{{.*?\\n\\}};\\n"
115
- rf"(?=const EmbeddedRoute)",
116
- re.DOTALL,
117
- )
107
+ pattern = re.compile(
108
+ r"const\\s+([A-Za-z0-9_]+)\\s*=\\s*\\(\\)\\s*=>\\s*\\{.*?\\};\\s*"
109
+ r"(?=const\\s+EmbeddedRoute)",
110
+ re.DOTALL,
111
+ )
118
112
 
119
- match = pattern.search(content)
113
+ match = pattern.search(content)
120
114
 
121
- if match:
122
- return match, name
115
+ if match:
116
+ return match, match.group(1)
123
117
 
124
118
  raise PatchError(
125
- "Could not find EmbeddedLazyDashboardPage before EmbeddedRoute"
119
+ "Could not find an embedded dashboard component before EmbeddedRoute"
126
120
  )
127
121
 
128
122
 
@@ -139,7 +133,7 @@ def patch_frontend(frontend_path: Path) -> None:
139
133
  content
140
134
  )
141
135
 
142
- replacement_component = \`// SUPERSET_SWITCHABLE_EMBED_PATCH
136
+ replacement_component = """// SUPERSET_SWITCHABLE_EMBED_PATCH
143
137
  //
144
138
  // Allows the existing embedded Superset document to replace DashboardPage
145
139
  // without navigating or recreating the iframe.
@@ -166,7 +160,7 @@ type DashboardSwitchHandler = (
166
160
 
167
161
  let dashboardSwitchHandler: DashboardSwitchHandler | undefined;
168
162
 
169
- const \${component_name} = () => {
163
+ const __COMPONENT_NAME__ = () => {
170
164
  const uiConfig = useUiConfig();
171
165
 
172
166
  const [dashboardId, setDashboardId] = useState<string | null>(
@@ -253,7 +247,7 @@ const \${component_name} = () => {
253
247
  />
254
248
  );
255
249
  };
256
- \`
250
+ """.replace("__COMPONENT_NAME__", component_name)
257
251
 
258
252
  content = (
259
253
  content[: component_match.start()]
@@ -840,5 +834,5 @@ function supersetPatchFiles() {
840
834
  { path: "README.md", content: README },
841
835
  ];
842
836
  }
843
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3BsdWdpbnMvc3VwZXJzZXQvdGVtcGxhdGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsdUJBQXVCLEVBQUUsc0JBQW1CO0FBV3pFLE1BQU0sY0FBYyxHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXNtQnRCLENBQUM7QUFFRixNQUFNLGVBQWUsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0F5Q3ZCLENBQUM7QUFFRixNQUFNLFlBQVksR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBMkJwQixDQUFDO0FBRUYsTUFBTSxpQkFBaUIsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FvQnpCLENBQUM7QUFFRixNQUFNLGtCQUFrQixHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBK0IxQixDQUFDO0FBRUYsTUFBTSxlQUFlLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBZ0N2QixDQUFDO0FBRUYsTUFBTSxNQUFNLEdBQUcsS0FBSyxrQkFBa0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7V0FxQzNCLHVCQUF1QjtDQUNqQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCO0lBQ2hDLE9BQU87UUFDTCxFQUFFLElBQUksRUFBRSxxQ0FBcUMsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7UUFDMUYsRUFBRSxJQUFJLEVBQUUseUJBQXlCLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFO1FBQy9FLEVBQUUsSUFBSSxFQUFFLG9CQUFvQixFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTtRQUN2RSxFQUFFLElBQUksRUFBRSxrQ0FBa0MsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTtRQUMxRixFQUFFLElBQUksRUFBRSwwQkFBMEIsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTtRQUNuRixFQUFFLElBQUksRUFBRSw2QkFBNkIsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7UUFDbkYsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUU7S0FDdkMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL3BsdWdpbnMvc3VwZXJzZXQvdGVtcGxhdGVzXG4gKiBAc3VtbWFyeSBQYXRjaCBhbmQgYnVpbGQgc2NyaXB0IHRlbXBsYXRlcyBmb3IgdGhlIFN1cGVyc2V0IGVtYmVkIHBsdWdpbi5cbiAqIEBkZXNjcmlwdGlvbiBIb2xkcyBhbGwgcGF0Y2ggc2NyaXB0cyAoUHl0aG9uICsgQmFzaCkgYW5kIGJ1aWxkIHNjcmlwdHMgYXNcbiAqIHN0cmluZyB0ZW1wbGF0ZXMuIFRoZXNlIGFyZSBtYXRlcmlhbGl6ZWQgb250byBkaXNrIGJ5IHRoZSBpbnN0YWxsZXIuIERlY2FmXG4gKiBkb2VzIG5vdCBnZW5lcmF0ZSBuZXcgU3VwZXJzZXQgc291cmNlIOKAlCBpdCBwYXRjaGVzIGV4aXN0aW5nIGludGVybmFsIGZpbGVzXG4gKiAoYHN1cGVyc2V0LWZyb250ZW5kL3NyYy9lbWJlZGRlZC9pbmRleC50c3hgIGFuZFxuICogYHN1cGVyc2V0LWVtYmVkZGVkLXNkay9zcmMvaW5kZXgudHNgKSBmb2xsb3dpbmcgdGhlIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvblxuICogZnJvbSBERUNBRi00MCDCpzkuXG4gKlxuICogVGhlIHBhdGNoIGFkZHMgYSBgc3dpdGNoRGFzaGJvYXJkYCBtZXRob2QgdG8gU3VwZXJzZXQncyBleGlzdGluZyBTd2l0Y2hib2FyZFxuICogY2hhbm5lbCwgcmVwbGFjaW5nIG9ubHkgYERhc2hib2FyZFBhZ2VgIHdoaWxlIGtlZXBpbmcgdGhlIGlmcmFtZSBlbGVtZW50LFxuICogZG9jdW1lbnQsIGNvbnRlbnRXaW5kb3csIFJlYWN0IHJ1bnRpbWUsIGFuZCBtZXNzYWdlIGNoYW5uZWwgYWxpdmUuXG4gKi9cbmltcG9ydCB7IFNVUEVSU0VUX1BMVUdJTl9JRCwgU1VQRVJTRVRfUExVR0lOX1ZFUlNJT04gfSBmcm9tIFwiLi9tYW5pZmVzdFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN1cGVyc2V0UGF0Y2hGaWxlIHtcbiAgLyoqIFJlbGF0aXZlIHBhdGggd2l0aGluIHRoZSB0YXJnZXQgZGlyZWN0b3J5LiAqL1xuICBwYXRoOiBzdHJpbmc7XG4gIC8qKiBGaWxlIGNvbnRlbnRzLiAqL1xuICBjb250ZW50OiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHRvIG1hcmsgdGhlIGZpbGUgZXhlY3V0YWJsZSBvbiBQT1NJWC4gKi9cbiAgZXhlY3V0YWJsZT86IGJvb2xlYW47XG59XG5cbmNvbnN0IEFQUExZX1BBVENIX1BZID0gYCMhL3Vzci9iaW4vZW52IHB5dGhvbjNcblxuZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhbm5vdGF0aW9uc1xuXG5pbXBvcnQgYXJncGFyc2VcbmltcG9ydCByZVxuaW1wb3J0IHN5c1xuZnJvbSBwYXRobGliIGltcG9ydCBQYXRoXG5cblxuRlJPTlRFTkRfRklMRSA9IFBhdGgoXCJzdXBlcnNldC1mcm9udGVuZC9zcmMvZW1iZWRkZWQvaW5kZXgudHN4XCIpXG5TREtfRklMRSA9IFBhdGgoXCJzdXBlcnNldC1lbWJlZGRlZC1zZGsvc3JjL2luZGV4LnRzXCIpXG5cblxuY2xhc3MgUGF0Y2hFcnJvcihSdW50aW1lRXJyb3IpOlxuICAgIHBhc3NcblxuXG5kZWYgcmVwbGFjZV9vbmNlKFxuICAgIGNvbnRlbnQ6IHN0cixcbiAgICBvbGQ6IHN0cixcbiAgICBuZXc6IHN0cixcbiAgICBkZXNjcmlwdGlvbjogc3RyLFxuKSAtPiBzdHI6XG4gICAgY291bnQgPSBjb250ZW50LmNvdW50KG9sZClcblxuICAgIGlmIGNvdW50ICE9IDE6XG4gICAgICAgIHJhaXNlIFBhdGNoRXJyb3IoXG4gICAgICAgICAgICBmXCJ7ZGVzY3JpcHRpb259OiBleHBlY3RlZCBleGFjdGx5IG9uZSBvY2N1cnJlbmNlLCBmb3VuZCB7Y291bnR9XCJcbiAgICAgICAgKVxuXG4gICAgcmV0dXJuIGNvbnRlbnQucmVwbGFjZShvbGQsIG5ldywgMSlcblxuXG5kZWYgcmVwbGFjZV9yZWdleF9vbmNlKFxuICAgIGNvbnRlbnQ6IHN0cixcbiAgICBwYXR0ZXJuOiByZS5QYXR0ZXJuW3N0cl0sXG4gICAgcmVwbGFjZW1lbnQ6IHN0cixcbiAgICBkZXNjcmlwdGlvbjogc3RyLFxuKSAtPiBzdHI6XG4gICAgdXBkYXRlZCwgY291bnQgPSBwYXR0ZXJuLnN1Ym4ocmVwbGFjZW1lbnQsIGNvbnRlbnQsIGNvdW50PTEpXG5cbiAgICBpZiBjb3VudCAhPSAxOlxuICAgICAgICByYWlzZSBQYXRjaEVycm9yKFxuICAgICAgICAgICAgZlwie2Rlc2NyaXB0aW9ufTogZXhwZWN0ZWQgZXhhY3RseSBvbmUgbWF0Y2gsIGZvdW5kIHtjb3VudH1cIlxuICAgICAgICApXG5cbiAgICByZXR1cm4gdXBkYXRlZFxuXG5cbmRlZiBwYXRjaF9yZWFjdF9pbXBvcnQoY29udGVudDogc3RyKSAtPiBzdHI6XG4gICAgcmVhY3RfaW1wb3J0X3BhdHRlcm4gPSByZS5jb21waWxlKFxuICAgICAgICByXCJpbXBvcnRcXFxccypcXFxce1xcXFxzKihbXn1dKylcXFxccypcXFxcfVxcXFxzKmZyb21cXFxccyoncmVhY3QnO1wiXG4gICAgKVxuXG4gICAgbWF0Y2ggPSByZWFjdF9pbXBvcnRfcGF0dGVybi5zZWFyY2goY29udGVudClcblxuICAgIGlmIG5vdCBtYXRjaDpcbiAgICAgICAgcmFpc2UgUGF0Y2hFcnJvcihcIkNvdWxkIG5vdCBsb2NhdGUgdGhlIG5hbWVkIFJlYWN0IGltcG9ydFwiKVxuXG4gICAgaW1wb3J0cyA9IFtcbiAgICAgICAgdmFsdWUuc3RyaXAoKVxuICAgICAgICBmb3IgdmFsdWUgaW4gbWF0Y2guZ3JvdXAoMSkucmVwbGFjZShcIlxcXFxuXCIsIFwiIFwiKS5zcGxpdChcIixcIilcbiAgICAgICAgaWYgdmFsdWUuc3RyaXAoKVxuICAgIF1cblxuICAgIHJlcXVpcmVkX2ltcG9ydHMgPSBbXCJsYXp5XCIsIFwiU3VzcGVuc2VcIiwgXCJ1c2VFZmZlY3RcIiwgXCJ1c2VTdGF0ZVwiXVxuXG4gICAgZm9yIHJlcXVpcmVkX2ltcG9ydCBpbiByZXF1aXJlZF9pbXBvcnRzOlxuICAgICAgICBpZiByZXF1aXJlZF9pbXBvcnQgbm90IGluIGltcG9ydHM6XG4gICAgICAgICAgICBpbXBvcnRzLmFwcGVuZChyZXF1aXJlZF9pbXBvcnQpXG5cbiAgICByZXBsYWNlbWVudCA9IChcbiAgICAgICAgXCJpbXBvcnQge1xcXFxuICBcIlxuICAgICAgICArIFwiLFxcXFxuICBcIi5qb2luKGltcG9ydHMpXG4gICAgICAgICsgXCIsXFxcXG59IGZyb20gJ3JlYWN0JztcIlxuICAgIClcblxuICAgIHJldHVybiAoXG4gICAgICAgIGNvbnRlbnRbOiBtYXRjaC5zdGFydCgpXVxuICAgICAgICArIHJlcGxhY2VtZW50XG4gICAgICAgICsgY29udGVudFttYXRjaC5lbmQoKSA6XVxuICAgIClcblxuXG5kZWYgbG9jYXRlX2VtYmVkZGVkX2NvbXBvbmVudChcbiAgICBjb250ZW50OiBzdHIsXG4pIC0+IHR1cGxlW3JlLk1hdGNoW3N0cl0sIHN0cl06XG4gICAgbmFtZXMgPSBbXG4gICAgICAgIFwiRW1iZWRkZWRMYXp5RGFzaGJvYXJkUGFnZVwiLFxuICAgICAgICBcIkVtYmVkZWRMYXp5RGFzaGJvYXJkUGFnZVwiLFxuICAgIF1cblxuICAgIGZvciBuYW1lIGluIG5hbWVzOlxuICAgICAgICBwYXR0ZXJuID0gcmUuY29tcGlsZShcbiAgICAgICAgICAgIHJmXCJjb25zdCB7bmFtZX0gPSBcXFxcKFxcXFwpID0+IFxcXFx7ey4qP1xcXFxuXFxcXH19O1xcXFxuXCJcbiAgICAgICAgICAgIHJmXCIoPz1jb25zdCBFbWJlZGRlZFJvdXRlKVwiLFxuICAgICAgICAgICAgcmUuRE9UQUxMLFxuICAgICAgICApXG5cbiAgICAgICAgbWF0Y2ggPSBwYXR0ZXJuLnNlYXJjaChjb250ZW50KVxuXG4gICAgICAgIGlmIG1hdGNoOlxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoLCBuYW1lXG5cbiAgICByYWlzZSBQYXRjaEVycm9yKFxuICAgICAgICBcIkNvdWxkIG5vdCBmaW5kIEVtYmVkZGVkTGF6eURhc2hib2FyZFBhZ2UgYmVmb3JlIEVtYmVkZGVkUm91dGVcIlxuICAgIClcblxuXG5kZWYgcGF0Y2hfZnJvbnRlbmQoZnJvbnRlbmRfcGF0aDogUGF0aCkgLT4gTm9uZTpcbiAgICBjb250ZW50ID0gZnJvbnRlbmRfcGF0aC5yZWFkX3RleHQoZW5jb2Rpbmc9XCJ1dGYtOFwiKVxuXG4gICAgaWYgXCJTVVBFUlNFVF9TV0lUQ0hBQkxFX0VNQkVEX1BBVENIXCIgaW4gY29udGVudDpcbiAgICAgICAgcHJpbnQoZlwiQWxyZWFkeSBwYXRjaGVkOiB7ZnJvbnRlbmRfcGF0aH1cIilcbiAgICAgICAgcmV0dXJuXG5cbiAgICBjb250ZW50ID0gcGF0Y2hfcmVhY3RfaW1wb3J0KGNvbnRlbnQpXG5cbiAgICBjb21wb25lbnRfbWF0Y2gsIGNvbXBvbmVudF9uYW1lID0gbG9jYXRlX2VtYmVkZGVkX2NvbXBvbmVudChcbiAgICAgICAgY29udGVudFxuICAgIClcblxuICAgIHJlcGxhY2VtZW50X2NvbXBvbmVudCA9IFxcYC8vIFNVUEVSU0VUX1NXSVRDSEFCTEVfRU1CRURfUEFUQ0hcbi8vXG4vLyBBbGxvd3MgdGhlIGV4aXN0aW5nIGVtYmVkZGVkIFN1cGVyc2V0IGRvY3VtZW50IHRvIHJlcGxhY2UgRGFzaGJvYXJkUGFnZVxuLy8gd2l0aG91dCBuYXZpZ2F0aW5nIG9yIHJlY3JlYXRpbmcgdGhlIGlmcmFtZS5cbi8vXG4vLyBTZWN1cml0eTpcbi8vIC0gVGhpcyBtZXRob2QgaXMgZXhwb3NlZCBvbmx5IHRocm91Z2ggU3VwZXJzZXQncyBleGlzdGluZyBTd2l0Y2hib2FyZFxuLy8gICBNZXNzYWdlQ2hhbm5lbC5cbi8vIC0gVGhlIGhvc3QgYXBwbGljYXRpb24gbXVzdCBvYnRhaW4gYSBndWVzdCB0b2tlbiBmb3IgdGhlIHRhcmdldCBkYXNoYm9hcmQuXG4vLyAtIFN1cGVyc2V0J3Mgbm9ybWFsIEFsbG93ZWQgRG9tYWlucyB2YWxpZGF0aW9uIHJlbWFpbnMgaW4gZWZmZWN0LlxuXG5pbnRlcmZhY2UgU3dpdGNoRGFzaGJvYXJkUGF5bG9hZCB7XG4gIGRhc2hib2FyZElkOiBzdHJpbmc7XG4gIGd1ZXN0VG9rZW46IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFN3aXRjaERhc2hib2FyZFJlc3VsdCB7XG4gIGRhc2hib2FyZElkOiBzdHJpbmc7XG4gIGFjY2VwdGVkOiB0cnVlO1xufVxuXG50eXBlIERhc2hib2FyZFN3aXRjaEhhbmRsZXIgPSAoXG4gIHBheWxvYWQ6IFN3aXRjaERhc2hib2FyZFBheWxvYWQsXG4pID0+IFByb21pc2U8U3dpdGNoRGFzaGJvYXJkUmVzdWx0PjtcblxubGV0IGRhc2hib2FyZFN3aXRjaEhhbmRsZXI6IERhc2hib2FyZFN3aXRjaEhhbmRsZXIgfCB1bmRlZmluZWQ7XG5cbmNvbnN0IFxcJHtjb21wb25lbnRfbmFtZX0gPSAoKSA9PiB7XG4gIGNvbnN0IHVpQ29uZmlnID0gdXNlVWlDb25maWcoKTtcblxuICBjb25zdCBbZGFzaGJvYXJkSWQsIHNldERhc2hib2FyZElkXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KFxuICAgIGJvb3RzdHJhcERhdGEuZW1iZWRkZWQhLmRhc2hib2FyZF9pZCxcbiAgKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRhc2hib2FyZFN3aXRjaEhhbmRsZXIgPSBhc3luYyAoe1xuICAgICAgZGFzaGJvYXJkSWQ6IHJlcXVlc3RlZERhc2hib2FyZElkLFxuICAgICAgZ3Vlc3RUb2tlbixcbiAgICB9OiBTd2l0Y2hEYXNoYm9hcmRQYXlsb2FkKSA9PiB7XG4gICAgICBjb25zdCBuZXh0RGFzaGJvYXJkSWQgPSByZXF1ZXN0ZWREYXNoYm9hcmRJZC50cmltKCk7XG5cbiAgICAgIGlmICghbmV4dERhc2hib2FyZElkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnZGFzaGJvYXJkSWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIHR5cGVvZiBndWVzdFRva2VuICE9PSAnc3RyaW5nJyB8fFxuICAgICAgICBndWVzdFRva2VuLnRyaW0oKS5sZW5ndGggPT09IDBcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ2d1ZXN0VG9rZW4gbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBzZXREYXNoYm9hcmRJZChudWxsKTtcblxuICAgICAgZGlzcGxheWVkVW5hdXRob3JpemVkVG9hc3QgPSBmYWxzZTtcblxuICAgICAgc2V0dXBHdWVzdENsaWVudChndWVzdFRva2VuKTtcblxuICAgICAgYXdhaXQgbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gcmVzb2x2ZSgpKTtcbiAgICAgIH0pO1xuXG4gICAgICBzZXREYXNoYm9hcmRJZChuZXh0RGFzaGJvYXJkSWQpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXNoYm9hcmRJZDogbmV4dERhc2hib2FyZElkLFxuICAgICAgICBhY2NlcHRlZDogdHJ1ZSxcbiAgICAgIH07XG4gICAgfTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkYXNoYm9hcmRTd2l0Y2hIYW5kbGVyID0gdW5kZWZpbmVkO1xuICAgIH07XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghdWlDb25maWc/LmVtaXREYXRhTWFza3MpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbGV0IHByZXZpb3VzRGF0YU1hc2sgPSBzdG9yZS5nZXRTdGF0ZSgpLmRhdGFNYXNrO1xuXG4gICAgcmV0dXJuIHN0b3JlLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50RGF0YU1hc2sgPSBzdG9yZS5nZXRTdGF0ZSgpLmRhdGFNYXNrO1xuXG4gICAgICBpZiAocHJldmlvdXNEYXRhTWFzayAhPT0gY3VycmVudERhdGFNYXNrKSB7XG4gICAgICAgIFN3aXRjaGJvYXJkLmVtaXQoJ29ic2VydmVEYXRhTWFzaycsIHtcbiAgICAgICAgICAuLi5jdXJyZW50RGF0YU1hc2ssXG4gICAgICAgICAgLi4uZ2V0RGF0YU1hc2tDaGFuZ2VUcmlnZ2VyKFxuICAgICAgICAgICAgY3VycmVudERhdGFNYXNrLFxuICAgICAgICAgICAgcHJldmlvdXNEYXRhTWFzayxcbiAgICAgICAgICApLFxuICAgICAgICB9KTtcblxuICAgICAgICBwcmV2aW91c0RhdGFNYXNrID0gY3VycmVudERhdGFNYXNrO1xuICAgICAgfVxuICAgIH0pO1xuICB9LCBbdWlDb25maWc/LmVtaXREYXRhTWFza3NdKTtcblxuICBpZiAoIWRhc2hib2FyZElkKSB7XG4gICAgcmV0dXJuIDxMb2FkaW5nIC8+O1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8TGF6eURhc2hib2FyZFBhZ2VcbiAgICAgIGtleT17ZGFzaGJvYXJkSWR9XG4gICAgICBpZE9yU2x1Zz17ZGFzaGJvYXJkSWR9XG4gICAgLz5cbiAgKTtcbn07XG5cXGBcblxuICAgIGNvbnRlbnQgPSAoXG4gICAgICAgIGNvbnRlbnRbOiBjb21wb25lbnRfbWF0Y2guc3RhcnQoKV1cbiAgICAgICAgKyByZXBsYWNlbWVudF9jb21wb25lbnRcbiAgICAgICAgKyBjb250ZW50W2NvbXBvbmVudF9tYXRjaC5lbmQoKSA6XVxuICAgIClcblxuICAgIHN3aXRjaGJvYXJkX2FuY2hvcl9jYW5kaWRhdGVzID0gW1xuICAgICAgICAoXG4gICAgICAgICAgICBcIiAgICBTd2l0Y2hib2FyZC5kZWZpbmVNZXRob2QoXCJcbiAgICAgICAgICAgIFwiJ2dldFNjcm9sbFNpemUnLCBlbWJlZGRlZEFwaS5nZXRTY3JvbGxTaXplKTtcIlxuICAgICAgICApLFxuICAgICAgICAoXG4gICAgICAgICAgICBcIiAgICBTd2l0Y2hib2FyZC5kZWZpbmVNZXRob2QoXFxcXG5cIlxuICAgICAgICAgICAgXCIgICAgICAnZ2V0U2Nyb2xsU2l6ZScsXFxcXG5cIlxuICAgICAgICAgICAgXCIgICAgICBlbWJlZGRlZEFwaS5nZXRTY3JvbGxTaXplLFxcXFxuXCJcbiAgICAgICAgICAgIFwiICAgICk7XCJcbiAgICAgICAgKSxcbiAgICBdXG5cbiAgICBzd2l0Y2hib2FyZF9tZXRob2QgPSBcIlwiXCIgICAgU3dpdGNoYm9hcmQuZGVmaW5lTWV0aG9kKFxuICAgICAgJ3N3aXRjaERhc2hib2FyZCcsXG4gICAgICBhc3luYyAoXG4gICAgICAgIHBheWxvYWQ6IFN3aXRjaERhc2hib2FyZFBheWxvYWQsXG4gICAgICApOiBQcm9taXNlPFN3aXRjaERhc2hib2FyZFJlc3VsdD4gPT4ge1xuICAgICAgICBpZiAoIWRhc2hib2FyZFN3aXRjaEhhbmRsZXIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnVGhlIGVtYmVkZGVkIGRhc2hib2FyZCBpcyBub3QgcmVhZHkgdG8gc3dpdGNoJyxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhc2hib2FyZFN3aXRjaEhhbmRsZXIocGF5bG9hZCk7XG4gICAgICB9LFxuICAgICk7XG5cblwiXCJcIlxuXG4gICAgYW5jaG9yX2ZvdW5kID0gRmFsc2VcblxuICAgIGZvciBhbmNob3IgaW4gc3dpdGNoYm9hcmRfYW5jaG9yX2NhbmRpZGF0ZXM6XG4gICAgICAgIGlmIGNvbnRlbnQuY291bnQoYW5jaG9yKSA9PSAxOlxuICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnQucmVwbGFjZShcbiAgICAgICAgICAgICAgICBhbmNob3IsXG4gICAgICAgICAgICAgICAgc3dpdGNoYm9hcmRfbWV0aG9kICsgYW5jaG9yLFxuICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBhbmNob3JfZm91bmQgPSBUcnVlXG4gICAgICAgICAgICBicmVha1xuXG4gICAgaWYgbm90IGFuY2hvcl9mb3VuZDpcbiAgICAgICAgcmFpc2UgUGF0Y2hFcnJvcihcbiAgICAgICAgICAgIFwiQ291bGQgbm90IGxvY2F0ZSB0aGUgZ2V0U2Nyb2xsU2l6ZSBTd2l0Y2hib2FyZCBtZXRob2RcIlxuICAgICAgICApXG5cbiAgICBmcm9udGVuZF9wYXRoLndyaXRlX3RleHQoY29udGVudCwgZW5jb2Rpbmc9XCJ1dGYtOFwiKVxuICAgIHByaW50KGZcIlBhdGNoZWQ6IHtmcm9udGVuZF9wYXRofVwiKVxuXG5cbmRlZiBwYXRjaF9ndWVzdF90b2tlbl9mZXRjaF90eXBlKGNvbnRlbnQ6IHN0cikgLT4gc3RyOlxuICAgIGNhbmRpZGF0ZXMgPSBbXG4gICAgICAgIFwiZXhwb3J0IHR5cGUgR3Vlc3RUb2tlbkZldGNoRm4gPSAoKSA9PiBQcm9taXNlPHN0cmluZz47XCIsXG4gICAgICAgIChcbiAgICAgICAgICAgIFwiZXhwb3J0IHR5cGUgR3Vlc3RUb2tlbkZldGNoRm4gPSBcIlxuICAgICAgICAgICAgXCIoKSA9PiBQcm9taXNlPHN0cmluZz47XCJcbiAgICAgICAgKSxcbiAgICBdXG5cbiAgICByZXBsYWNlbWVudCA9IFwiXCJcIi8vIFNVUEVSU0VUX1NXSVRDSEFCTEVfRU1CRURfU0RLX1BBVENIXG4vL1xuLy8gZGFzaGJvYXJkSWQgaXMgdW5kZWZpbmVkIGZvciB0aGUgaW5pdGlhbCBkYXNoYm9hcmQgYm9vdHN0cmFwLlxuLy8gQWZ0ZXIgYSBzdWNjZXNzZnVsIGRhc2hib2FyZCBzd2l0Y2gsIHRva2VuIHJlZnJlc2hlcyByZWNlaXZlIHRoZSBhY3RpdmVcbi8vIGRhc2hib2FyZCBVVUlELlxuZXhwb3J0IHR5cGUgR3Vlc3RUb2tlbkZldGNoRm4gPSAoXG4gIGRhc2hib2FyZElkPzogc3RyaW5nLFxuKSA9PiBQcm9taXNlPHN0cmluZz47XCJcIlwiXG5cbiAgICBmb3IgY2FuZGlkYXRlIGluIGNhbmRpZGF0ZXM6XG4gICAgICAgIGlmIGNvbnRlbnQuY291bnQoY2FuZGlkYXRlKSA9PSAxOlxuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQucmVwbGFjZShcbiAgICAgICAgICAgICAgICBjYW5kaWRhdGUsXG4gICAgICAgICAgICAgICAgcmVwbGFjZW1lbnQsXG4gICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgIClcblxuICAgIHJhaXNlIFBhdGNoRXJyb3IoXCJDb3VsZCBub3QgbG9jYXRlIEd1ZXN0VG9rZW5GZXRjaEZuXCIpXG5cblxuZGVmIHBhdGNoX2VtYmVkZGVkX2Rhc2hib2FyZF90eXBlKGNvbnRlbnQ6IHN0cikgLT4gc3RyOlxuICAgIHR5cGVfcGF0dGVybiA9IHJlLmNvbXBpbGUoXG4gICAgICAgIHJcIihleHBvcnRcXFxccysoPzppbnRlcmZhY2V8dHlwZSlcXFxccytFbWJlZGRlZERhc2hib2FyZFwiXG4gICAgICAgIHJcIi4qP1xcXFx7KSguKj8pKFxcXFxuXFxcXH07KVwiLFxuICAgICAgICByZS5ET1RBTEwsXG4gICAgKVxuXG4gICAgbWF0Y2ggPSB0eXBlX3BhdHRlcm4uc2VhcmNoKGNvbnRlbnQpXG5cbiAgICBpZiBub3QgbWF0Y2g6XG4gICAgICAgIHJhaXNlIFBhdGNoRXJyb3IoXG4gICAgICAgICAgICBcIkNvdWxkIG5vdCBsb2NhdGUgdGhlIEVtYmVkZGVkRGFzaGJvYXJkIHB1YmxpYyB0eXBlXCJcbiAgICAgICAgKVxuXG4gICAgYm9keSA9IG1hdGNoLmdyb3VwKDIpXG5cbiAgICBpZiBcInN3aXRjaERhc2hib2FyZDpcIiBpbiBib2R5OlxuICAgICAgICByZXR1cm4gY29udGVudFxuXG4gICAgbWV0aG9kID0gXCJcIlwiXG4gIC8qKlxuICAgKiBSZXBsYWNlcyBEYXNoYm9hcmRQYWdlIGluIHRoZSBleGlzdGluZyBpZnJhbWUgZG9jdW1lbnQuXG4gICAqXG4gICAqIFRoZSB2YWx1ZSBtdXN0IGJlIHRoZSB0YXJnZXQgZGFzaGJvYXJkIFVVSUQvaWQgYWNjZXB0ZWQgYnlcbiAgICogRGFzaGJvYXJkUGFnZSwgbm90IHRoZSBlbWJlZGRlZC1jb25maWd1cmF0aW9uIFVVSUQgdXNlZCBpbiB0aGVcbiAgICogaW5pdGlhbCAvZW1iZWRkZWQvOnV1aWQgVVJMLlxuICAgKi9cbiAgc3dpdGNoRGFzaGJvYXJkOiAoXG4gICAgZGFzaGJvYXJkSWQ6IHN0cmluZyxcbiAgKSA9PiBQcm9taXNlPHtcbiAgICBkYXNoYm9hcmRJZDogc3RyaW5nO1xuICAgIGFjY2VwdGVkOiB0cnVlO1xuICB9PjtcblwiXCJcIlxuXG4gICAgdXBkYXRlZF90eXBlID0gKFxuICAgICAgICBtYXRjaC5ncm91cCgxKVxuICAgICAgICArIGJvZHkucnN0cmlwKClcbiAgICAgICAgKyBcIlxcXFxuXCJcbiAgICAgICAgKyBtZXRob2QucnN0cmlwKClcbiAgICAgICAgKyBtYXRjaC5ncm91cCgzKVxuICAgIClcblxuICAgIHJldHVybiAoXG4gICAgICAgIGNvbnRlbnRbOiBtYXRjaC5zdGFydCgpXVxuICAgICAgICArIHVwZGF0ZWRfdHlwZVxuICAgICAgICArIGNvbnRlbnRbbWF0Y2guZW5kKCkgOl1cbiAgICApXG5cblxuZGVmIHBhdGNoX2luaXRpYWxfZ3Vlc3RfdG9rZW5fZmV0Y2goY29udGVudDogc3RyKSAtPiBzdHI6XG4gICAgY2FuZGlkYXRlcyA9IFtcbiAgICAgICAgXCJmZXRjaEd1ZXN0VG9rZW4oKSxcIixcbiAgICAgICAgXCJhd2FpdCBmZXRjaEd1ZXN0VG9rZW4oKSxcIixcbiAgICBdXG5cbiAgICBmb3IgY2FuZGlkYXRlIGluIGNhbmRpZGF0ZXM6XG4gICAgICAgIGlmIGNvbnRlbnQuY291bnQoY2FuZGlkYXRlKSA+PSAxOlxuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQucmVwbGFjZShcbiAgICAgICAgICAgICAgICBjYW5kaWRhdGUsXG4gICAgICAgICAgICAgICAgY2FuZGlkYXRlLnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgICAgIFwiZmV0Y2hHdWVzdFRva2VuKClcIixcbiAgICAgICAgICAgICAgICAgICAgXCJmZXRjaEd1ZXN0VG9rZW4odW5kZWZpbmVkKVwiLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgIClcblxuICAgIHJhaXNlIFBhdGNoRXJyb3IoXG4gICAgICAgIFwiQ291bGQgbm90IGxvY2F0ZSB0aGUgaW5pdGlhbCBmZXRjaEd1ZXN0VG9rZW4gY2FsbFwiXG4gICAgKVxuXG5cbmRlZiBwYXRjaF9ndWVzdF90b2tlbl9yZWZyZXNoKGNvbnRlbnQ6IHN0cikgLT4gc3RyOlxuICAgIHBhdHRlcm5zID0gW1xuICAgICAgICByZS5jb21waWxlKFxuICAgICAgICAgICAgclwiYXN5bmMgZnVuY3Rpb24gcmVmcmVzaEd1ZXN0VG9rZW5cXFxcKFxcXFwpIFxcXFx7XFxcXHMqXCJcbiAgICAgICAgICAgIHJcImNvbnN0IG5ld0d1ZXN0VG9rZW4gPSBhd2FpdCBmZXRjaEd1ZXN0VG9rZW5cXFxcKFxcXFwpO1xcXFxzKlwiXG4gICAgICAgICAgICByXCJvdXJQb3J0XFxcXC5lbWl0XFxcXChcIlxuICAgICAgICAgICAgclwiJ2d1ZXN0VG9rZW4nLFxcXFxzKlxcXFx7XFxcXHMqZ3Vlc3RUb2tlbjpcXFxccypuZXdHdWVzdFRva2VuXFxcXHMqXFxcXH1cIlxuICAgICAgICAgICAgclwiXFxcXCk7XFxcXHMqXCJcbiAgICAgICAgICAgIHJcInNldFRpbWVvdXRcXFxcKFwiXG4gICAgICAgICAgICByXCJyZWZyZXNoR3Vlc3RUb2tlbixcXFxccypcIlxuICAgICAgICAgICAgclwiZ2V0R3Vlc3RUb2tlblJlZnJlc2hUaW1pbmdcXFxcKG5ld0d1ZXN0VG9rZW5cXFxcKVwiXG4gICAgICAgICAgICByXCJcXFxcKTtcXFxccypcIlxuICAgICAgICAgICAgclwiXFxcXH1cIixcbiAgICAgICAgICAgIHJlLkRPVEFMTCxcbiAgICAgICAgKSxcbiAgICAgICAgcmUuY29tcGlsZShcbiAgICAgICAgICAgIHJcImNvbnN0IHJlZnJlc2hHdWVzdFRva2VuID0gYXN5bmMgXFxcXChcXFxcKSA9PiBcXFxce1xcXFxzKlwiXG4gICAgICAgICAgICByXCJjb25zdCBuZXdHdWVzdFRva2VuID0gYXdhaXQgZmV0Y2hHdWVzdFRva2VuXFxcXChcXFxcKTtcXFxccypcIlxuICAgICAgICAgICAgclwib3VyUG9ydFxcXFwuZW1pdFxcXFwoXCJcbiAgICAgICAgICAgIHJcIidndWVzdFRva2VuJyxcXFxccypcXFxce1xcXFxzKmd1ZXN0VG9rZW46XFxcXHMqbmV3R3Vlc3RUb2tlblxcXFxzKlxcXFx9XCJcbiAgICAgICAgICAgIHJcIlxcXFwpO1xcXFxzKlwiXG4gICAgICAgICAgICByXCJzZXRUaW1lb3V0XFxcXChcIlxuICAgICAgICAgICAgclwicmVmcmVzaEd1ZXN0VG9rZW4sXFxcXHMqXCJcbiAgICAgICAgICAgIHJcImdldEd1ZXN0VG9rZW5SZWZyZXNoVGltaW5nXFxcXChuZXdHdWVzdFRva2VuXFxcXClcIlxuICAgICAgICAgICAgclwiXFxcXCk7XFxcXHMqXCJcbiAgICAgICAgICAgIHJcIlxcXFx9O1wiLFxuICAgICAgICAgICAgcmUuRE9UQUxMLFxuICAgICAgICApLFxuICAgIF1cblxuICAgIHJlcGxhY2VtZW50ID0gXCJcIlwibGV0IGFjdGl2ZURhc2hib2FyZElkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgYXN5bmMgZnVuY3Rpb24gcmVmcmVzaEd1ZXN0VG9rZW4oKSB7XG4gICAgY29uc3QgbmV3R3Vlc3RUb2tlbiA9IGF3YWl0IGZldGNoR3Vlc3RUb2tlbihcbiAgICAgIGFjdGl2ZURhc2hib2FyZElkLFxuICAgICk7XG5cbiAgICBvdXJQb3J0LmVtaXQoJ2d1ZXN0VG9rZW4nLCB7XG4gICAgICBndWVzdFRva2VuOiBuZXdHdWVzdFRva2VuLFxuICAgIH0pO1xuXG4gICAgc2V0VGltZW91dChcbiAgICAgIHJlZnJlc2hHdWVzdFRva2VuLFxuICAgICAgZ2V0R3Vlc3RUb2tlblJlZnJlc2hUaW1pbmcobmV3R3Vlc3RUb2tlbiksXG4gICAgKTtcbiAgfVwiXCJcIlxuXG4gICAgZm9yIHBhdHRlcm4gaW4gcGF0dGVybnM6XG4gICAgICAgIHVwZGF0ZWQsIGNvdW50ID0gcGF0dGVybi5zdWJuKFxuICAgICAgICAgICAgcmVwbGFjZW1lbnQsXG4gICAgICAgICAgICBjb250ZW50LFxuICAgICAgICAgICAgY291bnQ9MSxcbiAgICAgICAgKVxuXG4gICAgICAgIGlmIGNvdW50ID09IDE6XG4gICAgICAgICAgICByZXR1cm4gdXBkYXRlZFxuXG4gICAgcmFpc2UgUGF0Y2hFcnJvcihcbiAgICAgICAgXCJDb3VsZCBub3QgbG9jYXRlIHRoZSBndWVzdC10b2tlbiByZWZyZXNoIGZ1bmN0aW9uXCJcbiAgICApXG5cblxuZGVmIHBhdGNoX3Nka19mdW5jdGlvbnMoY29udGVudDogc3RyKSAtPiBzdHI6XG4gICAgYW5jaG9yX2NhbmRpZGF0ZXMgPSBbXG4gICAgICAgIChcbiAgICAgICAgICAgIFwiICBjb25zdCBnZXRTY3JvbGxTaXplID0gKCkgPT4gXCJcbiAgICAgICAgICAgIFwib3VyUG9ydC5nZXQ8U2l6ZT4oJ2dldFNjcm9sbFNpemUnKTtcIlxuICAgICAgICApLFxuICAgICAgICAoXG4gICAgICAgICAgICBcIiAgY29uc3QgZ2V0U2Nyb2xsU2l6ZSA9ICgpID0+XFxcXG5cIlxuICAgICAgICAgICAgXCIgICAgb3VyUG9ydC5nZXQ8U2l6ZT4oJ2dldFNjcm9sbFNpemUnKTtcIlxuICAgICAgICApLFxuICAgIF1cblxuICAgIHN3aXRjaF9mdW5jdGlvbiA9IFwiXCJcIiAgY29uc3Qgc3dpdGNoRGFzaGJvYXJkID0gYXN5bmMgKFxuICAgIGRhc2hib2FyZElkOiBzdHJpbmcsXG4gICk6IFByb21pc2U8e1xuICAgIGRhc2hib2FyZElkOiBzdHJpbmc7XG4gICAgYWNjZXB0ZWQ6IHRydWU7XG4gIH0+ID0+IHtcbiAgICBjb25zdCBub3JtYWxpemVkRGFzaGJvYXJkSWQgPSBkYXNoYm9hcmRJZC50cmltKCk7XG5cbiAgICBpZiAoIW5vcm1hbGl6ZWREYXNoYm9hcmRJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnZGFzaGJvYXJkSWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBndWVzdFRva2VuID0gYXdhaXQgZmV0Y2hHdWVzdFRva2VuKFxuICAgICAgbm9ybWFsaXplZERhc2hib2FyZElkLFxuICAgICk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBvdXJQb3J0LmdldDx7XG4gICAgICBkYXNoYm9hcmRJZDogc3RyaW5nO1xuICAgICAgYWNjZXB0ZWQ6IHRydWU7XG4gICAgfT4oJ3N3aXRjaERhc2hib2FyZCcsIHtcbiAgICAgIGRhc2hib2FyZElkOiBub3JtYWxpemVkRGFzaGJvYXJkSWQsXG4gICAgICBndWVzdFRva2VuLFxuICAgIH0pO1xuXG4gICAgYWN0aXZlRGFzaGJvYXJkSWQgPSBub3JtYWxpemVkRGFzaGJvYXJkSWQ7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG5cIlwiXCJcblxuICAgIGZvciBhbmNob3IgaW4gYW5jaG9yX2NhbmRpZGF0ZXM6XG4gICAgICAgIGlmIGNvbnRlbnQuY291bnQoYW5jaG9yKSA9PSAxOlxuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQucmVwbGFjZShcbiAgICAgICAgICAgICAgICBhbmNob3IsXG4gICAgICAgICAgICAgICAgc3dpdGNoX2Z1bmN0aW9uICsgYW5jaG9yLFxuICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICApXG5cbiAgICByYWlzZSBQYXRjaEVycm9yKFxuICAgICAgICBcIkNvdWxkIG5vdCBsb2NhdGUgdGhlIFNESyBnZXRTY3JvbGxTaXplIGZ1bmN0aW9uXCJcbiAgICApXG5cblxuZGVmIHBhdGNoX3Nka19yZXR1cm5fb2JqZWN0KGNvbnRlbnQ6IHN0cikgLT4gc3RyOlxuICAgIGNhbmRpZGF0ZXMgPSBbXG4gICAgICAgIFwiICAgIHNldFRoZW1lTW9kZSxcXFxcbiAgfTtcIixcbiAgICAgICAgXCIgICAgc2V0VGhlbWVNb2RlLFxcXFxuICAgIHVubW91bnQsXFxcXG4gIH07XCIsXG4gICAgICAgIFwiICAgIHVubW91bnQsXFxcXG4gICAgc2V0VGhlbWVNb2RlLFxcXFxuICB9O1wiLFxuICAgIF1cblxuICAgIGZvciBjYW5kaWRhdGUgaW4gY2FuZGlkYXRlczpcbiAgICAgICAgaWYgY29udGVudC5jb3VudChjYW5kaWRhdGUpID09IDE6XG4gICAgICAgICAgICBsaW5lcyA9IGNhbmRpZGF0ZS5zcGxpdGxpbmVzKClcblxuICAgICAgICAgICAgY2xvc2luZyA9IGxpbmVzLnBvcCgpXG4gICAgICAgICAgICBib2R5ID0gXCJcXFxcblwiLmpvaW4obGluZXMpXG5cbiAgICAgICAgICAgIHJldHVybiBjb250ZW50LnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgY2FuZGlkYXRlLFxuICAgICAgICAgICAgICAgIGJvZHlcbiAgICAgICAgICAgICAgICArIFwiXFxcXG5cIlxuICAgICAgICAgICAgICAgICsgXCIgICAgc3dpdGNoRGFzaGJvYXJkLFxcXFxuXCJcbiAgICAgICAgICAgICAgICArIGNsb3NpbmcsXG4gICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgIClcblxuICAgIHJhaXNlIFBhdGNoRXJyb3IoXG4gICAgICAgIFwiQ291bGQgbm90IGxvY2F0ZSB0aGUgRW1iZWRkZWREYXNoYm9hcmQgcmV0dXJuIG9iamVjdFwiXG4gICAgKVxuXG5cbmRlZiBwYXRjaF9zZGsoc2RrX3BhdGg6IFBhdGgpIC0+IE5vbmU6XG4gICAgY29udGVudCA9IHNka19wYXRoLnJlYWRfdGV4dChlbmNvZGluZz1cInV0Zi04XCIpXG5cbiAgICBpZiBcIlNVUEVSU0VUX1NXSVRDSEFCTEVfRU1CRURfU0RLX1BBVENIXCIgaW4gY29udGVudDpcbiAgICAgICAgcHJpbnQoZlwiQWxyZWFkeSBwYXRjaGVkOiB7c2RrX3BhdGh9XCIpXG4gICAgICAgIHJldHVyblxuXG4gICAgY29udGVudCA9IHBhdGNoX2d1ZXN0X3Rva2VuX2ZldGNoX3R5cGUoY29udGVudClcbiAgICBjb250ZW50ID0gcGF0Y2hfZW1iZWRkZWRfZGFzaGJvYXJkX3R5cGUoY29udGVudClcbiAgICBjb250ZW50ID0gcGF0Y2hfaW5pdGlhbF9ndWVzdF90b2tlbl9mZXRjaChjb250ZW50KVxuICAgIGNvbnRlbnQgPSBwYXRjaF9ndWVzdF90b2tlbl9yZWZyZXNoKGNvbnRlbnQpXG4gICAgY29udGVudCA9IHBhdGNoX3Nka19mdW5jdGlvbnMoY29udGVudClcbiAgICBjb250ZW50ID0gcGF0Y2hfc2RrX3JldHVybl9vYmplY3QoY29udGVudClcblxuICAgIHNka19wYXRoLndyaXRlX3RleHQoY29udGVudCwgZW5jb2Rpbmc9XCJ1dGYtOFwiKVxuICAgIHByaW50KGZcIlBhdGNoZWQ6IHtzZGtfcGF0aH1cIilcblxuXG5kZWYgbWFpbigpIC0+IGludDpcbiAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihcbiAgICAgICAgZGVzY3JpcHRpb249KFxuICAgICAgICAgICAgXCJBcHBseSB0aGUgc3dpdGNoYWJsZS1kYXNoYm9hcmQgcGF0Y2ggdG8gYSBcIlxuICAgICAgICAgICAgXCJTdXBlcnNldCA2LjEueCBzb3VyY2UgY2hlY2tvdXQuXCJcbiAgICAgICAgKVxuICAgIClcblxuICAgIHBhcnNlci5hZGRfYXJndW1lbnQoXG4gICAgICAgIFwic3VwZXJzZXRfcm9vdFwiLFxuICAgICAgICB0eXBlPVBhdGgsXG4gICAgICAgIGhlbHA9XCJQYXRoIHRvIHRoZSBBcGFjaGUgU3VwZXJzZXQgc291cmNlIGNoZWNrb3V0XCIsXG4gICAgKVxuXG4gICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKClcbiAgICByb290ID0gYXJncy5zdXBlcnNldF9yb290LnJlc29sdmUoKVxuXG4gICAgZnJvbnRlbmRfcGF0aCA9IHJvb3QgLyBGUk9OVEVORF9GSUxFXG4gICAgc2RrX3BhdGggPSByb290IC8gU0RLX0ZJTEVcblxuICAgIG1pc3NpbmcgPSBbXG4gICAgICAgIHBhdGhcbiAgICAgICAgZm9yIHBhdGggaW4gW2Zyb250ZW5kX3BhdGgsIHNka19wYXRoXVxuICAgICAgICBpZiBub3QgcGF0aC5leGlzdHMoKVxuICAgIF1cblxuICAgIGlmIG1pc3Npbmc6XG4gICAgICAgIHByaW50KFxuICAgICAgICAgICAgXCJUaGUgdGFyZ2V0IGRvZXMgbm90IGFwcGVhciB0byBiZSBhIGNvbXBhdGlibGUgXCJcbiAgICAgICAgICAgIFwiU3VwZXJzZXQgc291cmNlIGNoZWNrb3V0LlwiLFxuICAgICAgICAgICAgZmlsZT1zeXMuc3RkZXJyLFxuICAgICAgICApXG5cbiAgICAgICAgZm9yIG1pc3NpbmdfcGF0aCBpbiBtaXNzaW5nOlxuICAgICAgICAgICAgcHJpbnQoZlwiTWlzc2luZzoge21pc3NpbmdfcGF0aH1cIiwgZmlsZT1zeXMuc3RkZXJyKVxuXG4gICAgICAgIHJldHVybiAyXG5cbiAgICB0cnk6XG4gICAgICAgIHBhdGNoX2Zyb250ZW5kKGZyb250ZW5kX3BhdGgpXG4gICAgICAgIHBhdGNoX3NkayhzZGtfcGF0aClcbiAgICBleGNlcHQgUGF0Y2hFcnJvciBhcyBlcnJvcjpcbiAgICAgICAgcHJpbnQoZlwiUGF0Y2ggZmFpbGVkOiB7ZXJyb3J9XCIsIGZpbGU9c3lzLnN0ZGVycilcbiAgICAgICAgcmV0dXJuIDFcblxuICAgIHByaW50KFwiUGF0Y2ggY29tcGxldGVkIHN1Y2Nlc3NmdWxseS5cIilcbiAgICByZXR1cm4gMFxuXG5cbmlmIF9fbmFtZV9fID09IFwiX19tYWluX19cIjpcbiAgICByYWlzZSBTeXN0ZW1FeGl0KG1haW4oKSlcbmA7XG5cbmNvbnN0IFZFUklGWV9QQVRDSF9TSCA9IGAjIS91c3IvYmluL2VudiBiYXNoXG5cbnNldCAtZXVvIHBpcGVmYWlsXG5cblNVUEVSU0VUX1JPT1Q9XFwkezE6P1VzYWdlOiB2ZXJpZnlfcGF0Y2guc2ggL3BhdGgvdG8vc3VwZXJzZXR9XG5cbkZST05URU5EX0ZJTEU9XCIkU1VQRVJTRVRfUk9PVC9zdXBlcnNldC1mcm9udGVuZC9zcmMvZW1iZWRkZWQvaW5kZXgudHN4XCJcblNES19GSUxFPVwiJFNVUEVSU0VUX1JPT1Qvc3VwZXJzZXQtZW1iZWRkZWQtc2RrL3NyYy9pbmRleC50c1wiXG5cbnRlc3QgLWYgXCIkRlJPTlRFTkRfRklMRVwiXG50ZXN0IC1mIFwiJFNES19GSUxFXCJcblxuZ3JlcCAtcSBcXFxcXG4gIFwiU1VQRVJTRVRfU1dJVENIQUJMRV9FTUJFRF9QQVRDSFwiIFxcXFxcbiAgXCIkRlJPTlRFTkRfRklMRVwiXG5cbmdyZXAgLXEgXFxcXFxuICBcIidzd2l0Y2hEYXNoYm9hcmQnXCIgXFxcXFxuICBcIiRGUk9OVEVORF9GSUxFXCJcblxuZ3JlcCAtcSBcXFxcXG4gIFwiZGFzaGJvYXJkU3dpdGNoSGFuZGxlclwiIFxcXFxcbiAgXCIkRlJPTlRFTkRfRklMRVwiXG5cbmdyZXAgLXEgXFxcXFxuICBcIlNVUEVSU0VUX1NXSVRDSEFCTEVfRU1CRURfU0RLX1BBVENIXCIgXFxcXFxuICBcIiRTREtfRklMRVwiXG5cbmdyZXAgLXEgXFxcXFxuICBcInN3aXRjaERhc2hib2FyZDpcIiBcXFxcXG4gIFwiJFNES19GSUxFXCJcblxuZ3JlcCAtcSBcXFxcXG4gIFwiYWN0aXZlRGFzaGJvYXJkSWRcIiBcXFxcXG4gIFwiJFNES19GSUxFXCJcblxuZ3JlcCAtcSBcXFxcXG4gIFwiZmV0Y2hHdWVzdFRva2VuKFwiIFxcXFxcbiAgXCIkU0RLX0ZJTEVcIlxuXG5lY2hvIFwiVGhlIHN3aXRjaGFibGUtZGFzaGJvYXJkIHBhdGNoIGlzIHByZXNlbnQuXCJcbmA7XG5cbmNvbnN0IEJVSUxEX1NES19TSCA9IGAjIS91c3IvYmluL2VudiBiYXNoXG5cbnNldCAtZXVvIHBpcGVmYWlsXG5cblNVUEVSU0VUX1JPT1Q9XFwkezE6P1VzYWdlOiBidWlsZC1zZGsuc2ggL3BhdGgvdG8vc3VwZXJzZXR9XG5cblNES19ST09UPVwiJFNVUEVSU0VUX1JPT1Qvc3VwZXJzZXQtZW1iZWRkZWQtc2RrXCJcblxuaWYgWyAhIC1mIFwiJFNES19ST09UL3BhY2thZ2UuanNvblwiIF07IHRoZW5cbiAgZWNobyBcIk1pc3NpbmcgU0RLIHBhY2thZ2U6ICRTREtfUk9PVFwiID4mMlxuICBleGl0IDFcbmZpXG5cbmNkIFwiJFNES19ST09UXCJcblxubnBtIGNpXG5cbm5wbSBydW4gYnVpbGRcblxuZWNob1xuZWNobyBcIkVtYmVkZGVkIFNESyBidWlsZCBjb21wbGV0ZWQuXCJcbmVjaG8gXCJPdXRwdXQgZGlyZWN0b3J5OlwiXG5maW5kIC4gXFxcXFxuICAtbWF4ZGVwdGggMiBcXFxcXG4gIC10eXBlIGQgXFxcXFxuICBcXFxcKCAtbmFtZSBkaXN0IC1vIC1uYW1lIGxpYiBcXFxcKSBcXFxcXG4gIC1wcmludFxuYDtcblxuY29uc3QgQlVJTERfRlJPTlRFTkRfU0ggPSBgIyEvdXNyL2Jpbi9lbnYgYmFzaFxuXG5zZXQgLWV1byBwaXBlZmFpbFxuXG5TVVBFUlNFVF9ST09UPVxcJHsxOj9Vc2FnZTogYnVpbGQtc3VwZXJzZXQtZnJvbnRlbmQuc2ggL3BhdGgvdG8vc3VwZXJzZXR9XG5cbkZST05URU5EX1JPT1Q9XCIkU1VQRVJTRVRfUk9PVC9zdXBlcnNldC1mcm9udGVuZFwiXG5cbmlmIFsgISAtZiBcIiRGUk9OVEVORF9ST09UL3BhY2thZ2UuanNvblwiIF07IHRoZW5cbiAgZWNobyBcIk1pc3NpbmcgU3VwZXJzZXQgZnJvbnRlbmQ6ICRGUk9OVEVORF9ST09UXCIgPiYyXG4gIGV4aXQgMVxuZmlcblxuY2QgXCIkRlJPTlRFTkRfUk9PVFwiXG5cbm5wbSBjaVxuXG5ucG0gcnVuIGJ1aWxkXG5cbmVjaG8gXCJTdXBlcnNldCBmcm9udGVuZCBidWlsZCBjb21wbGV0ZWQuXCJcbmA7XG5cbmNvbnN0IFBBVENIX0FORF9CVUlMRF9TSCA9IGAjIS91c3IvYmluL2VudiBiYXNoXG5cbnNldCAtZXVvIHBpcGVmYWlsXG5cblNVUEVSU0VUX1JPT1Q9XFwkezE6P1VzYWdlOiBwYXRjaC1hbmQtYnVpbGQuc2ggL3BhdGgvdG8vc3VwZXJzZXR9XG5cblNDUklQVF9ESVI9JChcbiAgY2QgXCIkKGRpcm5hbWUgXCJcXCR7QkFTSF9TT1VSQ0VbMF19XCIpXCJcbiAgcHdkXG4pXG5cblBST0pFQ1RfUk9PVD0kKFxuICBjZCBcIiRTQ1JJUFRfRElSLy4uXCJcbiAgcHdkXG4pXG5cbnB5dGhvbjMgXFxcXFxuICBcIiRQUk9KRUNUX1JPT1QvcGF0Y2hlcy9hcHBseV9zdXBlcnNldF82XzFfcGF0Y2gucHlcIiBcXFxcXG4gIFwiJFNVUEVSU0VUX1JPT1RcIlxuXG5cIiRQUk9KRUNUX1JPT1QvcGF0Y2hlcy92ZXJpZnlfcGF0Y2guc2hcIiBcXFxcXG4gIFwiJFNVUEVSU0VUX1JPT1RcIlxuXG5cIiRTQ1JJUFRfRElSL2J1aWxkLXNkay5zaFwiIFxcXFxcbiAgXCIkU1VQRVJTRVRfUk9PVFwiXG5cblwiJFNDUklQVF9ESVIvYnVpbGQtc3VwZXJzZXQtZnJvbnRlbmQuc2hcIiBcXFxcXG4gIFwiJFNVUEVSU0VUX1JPT1RcIlxuXG5lY2hvXG5lY2hvIFwiUGF0Y2ggYW5kIGZyb250ZW5kIGJ1aWxkcyBjb21wbGV0ZWQuXCJcbmA7XG5cbmNvbnN0IEJVSUxEX0RPQ0tFUl9TSCA9IGAjIS91c3IvYmluL2VudiBiYXNoXG5cbnNldCAtZXVvIHBpcGVmYWlsXG5cblNVUEVSU0VUX1JPT1Q9XFwkezE6P1VzYWdlOiBidWlsZC1kb2NrZXItaW1hZ2Uuc2ggL3BhdGgvdG8vc3VwZXJzZXQgW2ltYWdlLXRhZ119XG5JTUFHRV9UQUc9XFwkezI6LWxvY2FsL3N1cGVyc2V0LXN3aXRjaGFibGU6Ni4xLjB9XG5cblNDUklQVF9ESVI9JChcbiAgY2QgXCIkKGRpcm5hbWUgXCJcXCR7QkFTSF9TT1VSQ0VbMF19XCIpXCJcbiAgcHdkXG4pXG5cblBST0pFQ1RfUk9PVD0kKFxuICBjZCBcIiRTQ1JJUFRfRElSLy4uXCJcbiAgcHdkXG4pXG5cbnB5dGhvbjMgXFxcXFxuICBcIiRQUk9KRUNUX1JPT1QvcGF0Y2hlcy9hcHBseV9zdXBlcnNldF82XzFfcGF0Y2gucHlcIiBcXFxcXG4gIFwiJFNVUEVSU0VUX1JPT1RcIlxuXG5cIiRQUk9KRUNUX1JPT1QvcGF0Y2hlcy92ZXJpZnlfcGF0Y2guc2hcIiBcXFxcXG4gIFwiJFNVUEVSU0VUX1JPT1RcIlxuXG5jZCBcIiRTVVBFUlNFVF9ST09UXCJcblxuZG9ja2VyIGJ1aWxkIFxcXFxcbiAgLS10YXJnZXQgbGVhbiBcXFxcXG4gIC0tdGFnIFwiJElNQUdFX1RBR1wiIFxcXFxcbiAgLlxuXG5lY2hvIFwiQnVpbHQgRG9ja2VyIGltYWdlOiAkSU1BR0VfVEFHXCJcbmA7XG5cbmNvbnN0IFJFQURNRSA9IGAjICR7U1VQRVJTRVRfUExVR0lOX0lEfVxuXG5NdWx0aS10ZW5hbnQsIG9yZy1hZ25vc3RpYyBTdXBlcnNldCBkYXNoYm9hcmQgZW1iZWQgcGx1Z2luIChwYXRjaC1hbmQtYnVpbGQgc3RyYXRlZ3kpLlxuXG5UaGlzIGlzIG5vdCBhIGdlbmVyYXRlZCBwbHVnaW4gbGlrZSB0aGUgS2liYW5hIHZhcmlhbnQuIEluc3RlYWQsIERlY2FmIGhvbGRzXG5wYXRjaCBzY3JpcHRzIHRoYXQgbW9kaWZ5IFN1cGVyc2V0J3MgaW50ZXJuYWwgZW1iZWRkZWQgZnJvbnRlbmQgYW5kIGVtYmVkZGVkXG5TREsgc291cmNlIGZpbGVzIHRvIGFkZCBhIFxcYHN3aXRjaERhc2hib2FyZFxcYCBtZXRob2QuIFRoZSBleGlzdGluZyBpZnJhbWVcbmVsZW1lbnQsIGRvY3VtZW50LCBjb250ZW50V2luZG93LCBSZWFjdCBydW50aW1lLCBhbmQgU3dpdGNoYm9hcmQgTWVzc2FnZUNoYW5uZWxcbmFyZSBwcmVzZXJ2ZWQgYWNyb3NzIGRhc2hib2FyZCBzd2l0Y2hlcy5cblxuIyMgV2hhdCBpdCBwYXRjaGVzXG5cbi0gXFxgc3VwZXJzZXQtZnJvbnRlbmQvc3JjL2VtYmVkZGVkL2luZGV4LnRzeFxcYCDigJQgYWRkcyBcXGBzd2l0Y2hEYXNoYm9hcmRcXGAgdG8gdGhlXG4gIFN3aXRjaGJvYXJkIGNoYW5uZWw7IHJlcGxhY2VzIG9ubHkgXFxgRGFzaGJvYXJkUGFnZVxcYC5cbi0gXFxgc3VwZXJzZXQtZW1iZWRkZWQtc2RrL3NyYy9pbmRleC50c1xcYCDigJQgYWRkc1xuICBcXGBlbWJlZGRlZERhc2hib2FyZC5zd2l0Y2hEYXNoYm9hcmQoZGFzaGJvYXJkSWQpXFxgOyByZXF1ZXN0cyBhIGd1ZXN0IHRva2VuIGZvclxuICB0aGUgc2VsZWN0ZWQgZGFzaGJvYXJkOyByZWZyZXNoZXMgZnV0dXJlIGd1ZXN0IHRva2VucyBmb3IgdGhlIGFjdGl2ZSBkYXNoYm9hcmQuXG5cbiMjIEJ1aWxkXG5cblxcYFxcYFxcYGJhc2hcbiMgQXBwbHkgcGF0Y2ggKyB2ZXJpZnkgKyBidWlsZCBTREsgKyBidWlsZCBmcm9udGVuZFxuYnVpbGQvcGF0Y2gtYW5kLWJ1aWxkLnNoIC9wYXRoL3RvL3N1cGVyc2V0XG5cbiMgT3IgYnVpbGQgYSBEb2NrZXIgaW1hZ2VcbmJ1aWxkL2J1aWxkLWRvY2tlci1pbWFnZS5zaCAvcGF0aC90by9zdXBlcnNldCByZWdpc3RyeS5leGFtcGxlLmNvbS9zdXBlcnNldC1zd2l0Y2hhYmxlOjYuMS4wXG5cXGBcXGBcXGBcblxuVGhlIHBhdGNoZWQgU0RLIG11c3QgYmUgcGFja2VkIGFuZCBpbnN0YWxsZWQgaW50byB0aGUgQW5ndWxhciBhcHBsaWNhdGlvbjpcblxuXFxgXFxgXFxgYmFzaFxuY2QgL3BhdGgvdG8vc3VwZXJzZXQvc3VwZXJzZXQtZW1iZWRkZWQtc2RrXG5ucG0gY2kgJiYgbnBtIHJ1biBidWlsZCAmJiBucG0gcGFja1xuY2QgL3BhdGgvdG8vYW5ndWxhci1hcHBcbm5wbSBpbnN0YWxsIC9wYXRoL3RvL3N1cGVyc2V0L3N1cGVyc2V0LWVtYmVkZGVkLXNkay9zdXBlcnNldC11aS1lbWJlZGRlZC1zZGstKi50Z3pcblxcYFxcYFxcYFxuXG5WZXJzaW9uOiAke1NVUEVSU0VUX1BMVUdJTl9WRVJTSU9OfVxuYDtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBmdWxsIHNldCBvZiBwYXRjaCBhbmQgYnVpbGQgc2NyaXB0IGZpbGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3VwZXJzZXRQYXRjaEZpbGVzKCk6IFN1cGVyc2V0UGF0Y2hGaWxlW10ge1xuICByZXR1cm4gW1xuICAgIHsgcGF0aDogXCJwYXRjaGVzL2FwcGx5X3N1cGVyc2V0XzZfMV9wYXRjaC5weVwiLCBjb250ZW50OiBBUFBMWV9QQVRDSF9QWSwgZXhlY3V0YWJsZTogdHJ1ZSB9LFxuICAgIHsgcGF0aDogXCJwYXRjaGVzL3ZlcmlmeV9wYXRjaC5zaFwiLCBjb250ZW50OiBWRVJJRllfUEFUQ0hfU0gsIGV4ZWN1dGFibGU6IHRydWUgfSxcbiAgICB7IHBhdGg6IFwiYnVpbGQvYnVpbGQtc2RrLnNoXCIsIGNvbnRlbnQ6IEJVSUxEX1NES19TSCwgZXhlY3V0YWJsZTogdHJ1ZSB9LFxuICAgIHsgcGF0aDogXCJidWlsZC9idWlsZC1zdXBlcnNldC1mcm9udGVuZC5zaFwiLCBjb250ZW50OiBCVUlMRF9GUk9OVEVORF9TSCwgZXhlY3V0YWJsZTogdHJ1ZSB9LFxuICAgIHsgcGF0aDogXCJidWlsZC9wYXRjaC1hbmQtYnVpbGQuc2hcIiwgY29udGVudDogUEFUQ0hfQU5EX0JVSUxEX1NILCBleGVjdXRhYmxlOiB0cnVlIH0sXG4gICAgeyBwYXRoOiBcImJ1aWxkL2J1aWxkLWRvY2tlci1pbWFnZS5zaFwiLCBjb250ZW50OiBCVUlMRF9ET0NLRVJfU0gsIGV4ZWN1dGFibGU6IHRydWUgfSxcbiAgICB7IHBhdGg6IFwiUkVBRE1FLm1kXCIsIGNvbnRlbnQ6IFJFQURNRSB9LFxuICBdO1xufVxuIl19
844
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGVtcGxhdGVzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBNHpCQSxnREFVQztBQXQwQkQ7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILCtDQUE0RTtBQUM1RSxNQUFNLGNBQWMsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FzbUJ0QixDQUFDO0FBQ0YsTUFBTSxlQUFlLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBeUN2QixDQUFDO0FBQ0YsTUFBTSxZQUFZLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQTJCcEIsQ0FBQztBQUNGLE1BQU0saUJBQWlCLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBb0J6QixDQUFDO0FBQ0YsTUFBTSxrQkFBa0IsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQStCMUIsQ0FBQztBQUNGLE1BQU0sZUFBZSxHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQWdDdkIsQ0FBQztBQUNGLE1BQU0sTUFBTSxHQUFHLEtBQUssZ0NBQWtCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1dBcUMzQixxQ0FBdUI7Q0FDakMsQ0FBQztBQUNGOztHQUVHO0FBQ0gsU0FBZ0Isa0JBQWtCO0lBQzlCLE9BQU87UUFDSCxFQUFFLElBQUksRUFBRSxxQ0FBcUMsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7UUFDMUYsRUFBRSxJQUFJLEVBQUUseUJBQXlCLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFO1FBQy9FLEVBQUUsSUFBSSxFQUFFLG9CQUFvQixFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTtRQUN2RSxFQUFFLElBQUksRUFBRSxrQ0FBa0MsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTtRQUMxRixFQUFFLElBQUksRUFBRSwwQkFBMEIsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTtRQUNuRixFQUFFLElBQUksRUFBRSw2QkFBNkIsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7UUFDbkYsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUU7S0FDekMsQ0FBQztBQUNOLENBQUM7QUFDRCw4MitCQUE4MitCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9wbHVnaW5zL3N1cGVyc2V0L3RlbXBsYXRlc1xuICogQHN1bW1hcnkgUGF0Y2ggYW5kIGJ1aWxkIHNjcmlwdCB0ZW1wbGF0ZXMgZm9yIHRoZSBTdXBlcnNldCBlbWJlZCBwbHVnaW4uXG4gKiBAZGVzY3JpcHRpb24gSG9sZHMgYWxsIHBhdGNoIHNjcmlwdHMgKFB5dGhvbiArIEJhc2gpIGFuZCBidWlsZCBzY3JpcHRzIGFzXG4gKiBzdHJpbmcgdGVtcGxhdGVzLiBUaGVzZSBhcmUgbWF0ZXJpYWxpemVkIG9udG8gZGlzayBieSB0aGUgaW5zdGFsbGVyLiBEZWNhZlxuICogZG9lcyBub3QgZ2VuZXJhdGUgbmV3IFN1cGVyc2V0IHNvdXJjZSDigJQgaXQgcGF0Y2hlcyBleGlzdGluZyBpbnRlcm5hbCBmaWxlc1xuICogKGBzdXBlcnNldC1mcm9udGVuZC9zcmMvZW1iZWRkZWQvaW5kZXgudHN4YCBhbmRcbiAqIGBzdXBlcnNldC1lbWJlZGRlZC1zZGsvc3JjL2luZGV4LnRzYCkgZm9sbG93aW5nIHRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb25cbiAqIGZyb20gREVDQUYtNDAgwqc5LlxuICpcbiAqIFRoZSBwYXRjaCBhZGRzIGEgYHN3aXRjaERhc2hib2FyZGAgbWV0aG9kIHRvIFN1cGVyc2V0J3MgZXhpc3RpbmcgU3dpdGNoYm9hcmRcbiAqIGNoYW5uZWwsIHJlcGxhY2luZyBvbmx5IGBEYXNoYm9hcmRQYWdlYCB3aGlsZSBrZWVwaW5nIHRoZSBpZnJhbWUgZWxlbWVudCxcbiAqIGRvY3VtZW50LCBjb250ZW50V2luZG93LCBSZWFjdCBydW50aW1lLCBhbmQgbWVzc2FnZSBjaGFubmVsIGFsaXZlLlxuICovXG5pbXBvcnQgeyBTVVBFUlNFVF9QTFVHSU5fSUQsIFNVUEVSU0VUX1BMVUdJTl9WRVJTSU9OIH0gZnJvbSBcIi4vbWFuaWZlc3QuanNcIjtcbmNvbnN0IEFQUExZX1BBVENIX1BZID0gYCMhL3Vzci9iaW4vZW52IHB5dGhvbjNcblxuZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhbm5vdGF0aW9uc1xuXG5pbXBvcnQgYXJncGFyc2VcbmltcG9ydCByZVxuaW1wb3J0IHN5c1xuZnJvbSBwYXRobGliIGltcG9ydCBQYXRoXG5cblxuRlJPTlRFTkRfRklMRSA9IFBhdGgoXCJzdXBlcnNldC1mcm9udGVuZC9zcmMvZW1iZWRkZWQvaW5kZXgudHN4XCIpXG5TREtfRklMRSA9IFBhdGgoXCJzdXBlcnNldC1lbWJlZGRlZC1zZGsvc3JjL2luZGV4LnRzXCIpXG5cblxuY2xhc3MgUGF0Y2hFcnJvcihSdW50aW1lRXJyb3IpOlxuICAgIHBhc3NcblxuXG5kZWYgcmVwbGFjZV9vbmNlKFxuICAgIGNvbnRlbnQ6IHN0cixcbiAgICBvbGQ6IHN0cixcbiAgICBuZXc6IHN0cixcbiAgICBkZXNjcmlwdGlvbjogc3RyLFxuKSAtPiBzdHI6XG4gICAgY291bnQgPSBjb250ZW50LmNvdW50KG9sZClcblxuICAgIGlmIGNvdW50ICE9IDE6XG4gICAgICAgIHJhaXNlIFBhdGNoRXJyb3IoXG4gICAgICAgICAgICBmXCJ7ZGVzY3JpcHRpb259OiBleHBlY3RlZCBleGFjdGx5IG9uZSBvY2N1cnJlbmNlLCBmb3VuZCB7Y291bnR9XCJcbiAgICAgICAgKVxuXG4gICAgcmV0dXJuIGNvbnRlbnQucmVwbGFjZShvbGQsIG5ldywgMSlcblxuXG5kZWYgcmVwbGFjZV9yZWdleF9vbmNlKFxuICAgIGNvbnRlbnQ6IHN0cixcbiAgICBwYXR0ZXJuOiByZS5QYXR0ZXJuW3N0cl0sXG4gICAgcmVwbGFjZW1lbnQ6IHN0cixcbiAgICBkZXNjcmlwdGlvbjogc3RyLFxuKSAtPiBzdHI6XG4gICAgdXBkYXRlZCwgY291bnQgPSBwYXR0ZXJuLnN1Ym4ocmVwbGFjZW1lbnQsIGNvbnRlbnQsIGNvdW50PTEpXG5cbiAgICBpZiBjb3VudCAhPSAxOlxuICAgICAgICByYWlzZSBQYXRjaEVycm9yKFxuICAgICAgICAgICAgZlwie2Rlc2NyaXB0aW9ufTogZXhwZWN0ZWQgZXhhY3RseSBvbmUgbWF0Y2gsIGZvdW5kIHtjb3VudH1cIlxuICAgICAgICApXG5cbiAgICByZXR1cm4gdXBkYXRlZFxuXG5cbmRlZiBwYXRjaF9yZWFjdF9pbXBvcnQoY29udGVudDogc3RyKSAtPiBzdHI6XG4gICAgcmVhY3RfaW1wb3J0X3BhdHRlcm4gPSByZS5jb21waWxlKFxuICAgICAgICByXCJpbXBvcnRcXFxccypcXFxce1xcXFxzKihbXn1dKylcXFxccypcXFxcfVxcXFxzKmZyb21cXFxccyoncmVhY3QnO1wiXG4gICAgKVxuXG4gICAgbWF0Y2ggPSByZWFjdF9pbXBvcnRfcGF0dGVybi5zZWFyY2goY29udGVudClcblxuICAgIGlmIG5vdCBtYXRjaDpcbiAgICAgICAgcmFpc2UgUGF0Y2hFcnJvcihcIkNvdWxkIG5vdCBsb2NhdGUgdGhlIG5hbWVkIFJlYWN0IGltcG9ydFwiKVxuXG4gICAgaW1wb3J0cyA9IFtcbiAgICAgICAgdmFsdWUuc3RyaXAoKVxuICAgICAgICBmb3IgdmFsdWUgaW4gbWF0Y2guZ3JvdXAoMSkucmVwbGFjZShcIlxcXFxuXCIsIFwiIFwiKS5zcGxpdChcIixcIilcbiAgICAgICAgaWYgdmFsdWUuc3RyaXAoKVxuICAgIF1cblxuICAgIHJlcXVpcmVkX2ltcG9ydHMgPSBbXCJsYXp5XCIsIFwiU3VzcGVuc2VcIiwgXCJ1c2VFZmZlY3RcIiwgXCJ1c2VTdGF0ZVwiXVxuXG4gICAgZm9yIHJlcXVpcmVkX2ltcG9ydCBpbiByZXF1aXJlZF9pbXBvcnRzOlxuICAgICAgICBpZiByZXF1aXJlZF9pbXBvcnQgbm90IGluIGltcG9ydHM6XG4gICAgICAgICAgICBpbXBvcnRzLmFwcGVuZChyZXF1aXJlZF9pbXBvcnQpXG5cbiAgICByZXBsYWNlbWVudCA9IChcbiAgICAgICAgXCJpbXBvcnQge1xcXFxuICBcIlxuICAgICAgICArIFwiLFxcXFxuICBcIi5qb2luKGltcG9ydHMpXG4gICAgICAgICsgXCIsXFxcXG59IGZyb20gJ3JlYWN0JztcIlxuICAgIClcblxuICAgIHJldHVybiAoXG4gICAgICAgIGNvbnRlbnRbOiBtYXRjaC5zdGFydCgpXVxuICAgICAgICArIHJlcGxhY2VtZW50XG4gICAgICAgICsgY29udGVudFttYXRjaC5lbmQoKSA6XVxuICAgIClcblxuXG5kZWYgbG9jYXRlX2VtYmVkZGVkX2NvbXBvbmVudChcbiAgICBjb250ZW50OiBzdHIsXG4pIC0+IHR1cGxlW3JlLk1hdGNoW3N0cl0sIHN0cl06XG4gICAgbmFtZXMgPSBbXG4gICAgICAgIFwiRW1iZWRkZWRMYXp5RGFzaGJvYXJkUGFnZVwiLFxuICAgICAgICBcIkVtYmVkZWRMYXp5RGFzaGJvYXJkUGFnZVwiLFxuICAgIF1cblxuICAgIGZvciBuYW1lIGluIG5hbWVzOlxuICAgICAgICBwYXR0ZXJuID0gcmUuY29tcGlsZShcbiAgICAgICAgICAgIHJmXCJjb25zdCB7bmFtZX0gPSBcXFxcKFxcXFwpID0+IFxcXFx7ey4qP1xcXFxuXFxcXH19O1xcXFxuXCJcbiAgICAgICAgICAgIHJmXCIoPz1jb25zdCBFbWJlZGRlZFJvdXRlKVwiLFxuICAgICAgICAgICAgcmUuRE9UQUxMLFxuICAgICAgICApXG5cbiAgICAgICAgbWF0Y2ggPSBwYXR0ZXJuLnNlYXJjaChjb250ZW50KVxuXG4gICAgICAgIGlmIG1hdGNoOlxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoLCBuYW1lXG5cbiAgICByYWlzZSBQYXRjaEVycm9yKFxuICAgICAgICBcIkNvdWxkIG5vdCBmaW5kIEVtYmVkZGVkTGF6eURhc2hib2FyZFBhZ2UgYmVmb3JlIEVtYmVkZGVkUm91dGVcIlxuICAgIClcblxuXG5kZWYgcGF0Y2hfZnJvbnRlbmQoZnJvbnRlbmRfcGF0aDogUGF0aCkgLT4gTm9uZTpcbiAgICBjb250ZW50ID0gZnJvbnRlbmRfcGF0aC5yZWFkX3RleHQoZW5jb2Rpbmc9XCJ1dGYtOFwiKVxuXG4gICAgaWYgXCJTVVBFUlNFVF9TV0lUQ0hBQkxFX0VNQkVEX1BBVENIXCIgaW4gY29udGVudDpcbiAgICAgICAgcHJpbnQoZlwiQWxyZWFkeSBwYXRjaGVkOiB7ZnJvbnRlbmRfcGF0aH1cIilcbiAgICAgICAgcmV0dXJuXG5cbiAgICBjb250ZW50ID0gcGF0Y2hfcmVhY3RfaW1wb3J0KGNvbnRlbnQpXG5cbiAgICBjb21wb25lbnRfbWF0Y2gsIGNvbXBvbmVudF9uYW1lID0gbG9jYXRlX2VtYmVkZGVkX2NvbXBvbmVudChcbiAgICAgICAgY29udGVudFxuICAgIClcblxuICAgIHJlcGxhY2VtZW50X2NvbXBvbmVudCA9IFxcYC8vIFNVUEVSU0VUX1NXSVRDSEFCTEVfRU1CRURfUEFUQ0hcbi8vXG4vLyBBbGxvd3MgdGhlIGV4aXN0aW5nIGVtYmVkZGVkIFN1cGVyc2V0IGRvY3VtZW50IHRvIHJlcGxhY2UgRGFzaGJvYXJkUGFnZVxuLy8gd2l0aG91dCBuYXZpZ2F0aW5nIG9yIHJlY3JlYXRpbmcgdGhlIGlmcmFtZS5cbi8vXG4vLyBTZWN1cml0eTpcbi8vIC0gVGhpcyBtZXRob2QgaXMgZXhwb3NlZCBvbmx5IHRocm91Z2ggU3VwZXJzZXQncyBleGlzdGluZyBTd2l0Y2hib2FyZFxuLy8gICBNZXNzYWdlQ2hhbm5lbC5cbi8vIC0gVGhlIGhvc3QgYXBwbGljYXRpb24gbXVzdCBvYnRhaW4gYSBndWVzdCB0b2tlbiBmb3IgdGhlIHRhcmdldCBkYXNoYm9hcmQuXG4vLyAtIFN1cGVyc2V0J3Mgbm9ybWFsIEFsbG93ZWQgRG9tYWlucyB2YWxpZGF0aW9uIHJlbWFpbnMgaW4gZWZmZWN0LlxuXG5pbnRlcmZhY2UgU3dpdGNoRGFzaGJvYXJkUGF5bG9hZCB7XG4gIGRhc2hib2FyZElkOiBzdHJpbmc7XG4gIGd1ZXN0VG9rZW46IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFN3aXRjaERhc2hib2FyZFJlc3VsdCB7XG4gIGRhc2hib2FyZElkOiBzdHJpbmc7XG4gIGFjY2VwdGVkOiB0cnVlO1xufVxuXG50eXBlIERhc2hib2FyZFN3aXRjaEhhbmRsZXIgPSAoXG4gIHBheWxvYWQ6IFN3aXRjaERhc2hib2FyZFBheWxvYWQsXG4pID0+IFByb21pc2U8U3dpdGNoRGFzaGJvYXJkUmVzdWx0PjtcblxubGV0IGRhc2hib2FyZFN3aXRjaEhhbmRsZXI6IERhc2hib2FyZFN3aXRjaEhhbmRsZXIgfCB1bmRlZmluZWQ7XG5cbmNvbnN0IFxcJHtjb21wb25lbnRfbmFtZX0gPSAoKSA9PiB7XG4gIGNvbnN0IHVpQ29uZmlnID0gdXNlVWlDb25maWcoKTtcblxuICBjb25zdCBbZGFzaGJvYXJkSWQsIHNldERhc2hib2FyZElkXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KFxuICAgIGJvb3RzdHJhcERhdGEuZW1iZWRkZWQhLmRhc2hib2FyZF9pZCxcbiAgKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRhc2hib2FyZFN3aXRjaEhhbmRsZXIgPSBhc3luYyAoe1xuICAgICAgZGFzaGJvYXJkSWQ6IHJlcXVlc3RlZERhc2hib2FyZElkLFxuICAgICAgZ3Vlc3RUb2tlbixcbiAgICB9OiBTd2l0Y2hEYXNoYm9hcmRQYXlsb2FkKSA9PiB7XG4gICAgICBjb25zdCBuZXh0RGFzaGJvYXJkSWQgPSByZXF1ZXN0ZWREYXNoYm9hcmRJZC50cmltKCk7XG5cbiAgICAgIGlmICghbmV4dERhc2hib2FyZElkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnZGFzaGJvYXJkSWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIHR5cGVvZiBndWVzdFRva2VuICE9PSAnc3RyaW5nJyB8fFxuICAgICAgICBndWVzdFRva2VuLnRyaW0oKS5sZW5ndGggPT09IDBcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ2d1ZXN0VG9rZW4gbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBzZXREYXNoYm9hcmRJZChudWxsKTtcblxuICAgICAgZGlzcGxheWVkVW5hdXRob3JpemVkVG9hc3QgPSBmYWxzZTtcblxuICAgICAgc2V0dXBHdWVzdENsaWVudChndWVzdFRva2VuKTtcblxuICAgICAgYXdhaXQgbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gcmVzb2x2ZSgpKTtcbiAgICAgIH0pO1xuXG4gICAgICBzZXREYXNoYm9hcmRJZChuZXh0RGFzaGJvYXJkSWQpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXNoYm9hcmRJZDogbmV4dERhc2hib2FyZElkLFxuICAgICAgICBhY2NlcHRlZDogdHJ1ZSxcbiAgICAgIH07XG4gICAgfTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkYXNoYm9hcmRTd2l0Y2hIYW5kbGVyID0gdW5kZWZpbmVkO1xuICAgIH07XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghdWlDb25maWc/LmVtaXREYXRhTWFza3MpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbGV0IHByZXZpb3VzRGF0YU1hc2sgPSBzdG9yZS5nZXRTdGF0ZSgpLmRhdGFNYXNrO1xuXG4gICAgcmV0dXJuIHN0b3JlLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50RGF0YU1hc2sgPSBzdG9yZS5nZXRTdGF0ZSgpLmRhdGFNYXNrO1xuXG4gICAgICBpZiAocHJldmlvdXNEYXRhTWFzayAhPT0gY3VycmVudERhdGFNYXNrKSB7XG4gICAgICAgIFN3aXRjaGJvYXJkLmVtaXQoJ29ic2VydmVEYXRhTWFzaycsIHtcbiAgICAgICAgICAuLi5jdXJyZW50RGF0YU1hc2ssXG4gICAgICAgICAgLi4uZ2V0RGF0YU1hc2tDaGFuZ2VUcmlnZ2VyKFxuICAgICAgICAgICAgY3VycmVudERhdGFNYXNrLFxuICAgICAgICAgICAgcHJldmlvdXNEYXRhTWFzayxcbiAgICAgICAgICApLFxuICAgICAgICB9KTtcblxuICAgICAgICBwcmV2aW91c0RhdGFNYXNrID0gY3VycmVudERhdGFNYXNrO1xuICAgICAgfVxuICAgIH0pO1xuICB9LCBbdWlDb25maWc/LmVtaXREYXRhTWFza3NdKTtcblxuICBpZiAoIWRhc2hib2FyZElkKSB7XG4gICAgcmV0dXJuIDxMb2FkaW5nIC8+O1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8TGF6eURhc2hib2FyZFBhZ2VcbiAgICAgIGtleT17ZGFzaGJvYXJkSWR9XG4gICAgICBpZE9yU2x1Zz17ZGFzaGJvYXJkSWR9XG4gICAgLz5cbiAgKTtcbn07XG5cXGBcblxuICAgIGNvbnRlbnQgPSAoXG4gICAgICAgIGNvbnRlbnRbOiBjb21wb25lbnRfbWF0Y2guc3RhcnQoKV1cbiAgICAgICAgKyByZXBsYWNlbWVudF9jb21wb25lbnRcbiAgICAgICAgKyBjb250ZW50W2NvbXBvbmVudF9tYXRjaC5lbmQoKSA6XVxuICAgIClcblxuICAgIHN3aXRjaGJvYXJkX2FuY2hvcl9jYW5kaWRhdGVzID0gW1xuICAgICAgICAoXG4gICAgICAgICAgICBcIiAgICBTd2l0Y2hib2FyZC5kZWZpbmVNZXRob2QoXCJcbiAgICAgICAgICAgIFwiJ2dldFNjcm9sbFNpemUnLCBlbWJlZGRlZEFwaS5nZXRTY3JvbGxTaXplKTtcIlxuICAgICAgICApLFxuICAgICAgICAoXG4gICAgICAgICAgICBcIiAgICBTd2l0Y2hib2FyZC5kZWZpbmVNZXRob2QoXFxcXG5cIlxuICAgICAgICAgICAgXCIgICAgICAnZ2V0U2Nyb2xsU2l6ZScsXFxcXG5cIlxuICAgICAgICAgICAgXCIgICAgICBlbWJlZGRlZEFwaS5nZXRTY3JvbGxTaXplLFxcXFxuXCJcbiAgICAgICAgICAgIFwiICAgICk7XCJcbiAgICAgICAgKSxcbiAgICBdXG5cbiAgICBzd2l0Y2hib2FyZF9tZXRob2QgPSBcIlwiXCIgICAgU3dpdGNoYm9hcmQuZGVmaW5lTWV0aG9kKFxuICAgICAgJ3N3aXRjaERhc2hib2FyZCcsXG4gICAgICBhc3luYyAoXG4gICAgICAgIHBheWxvYWQ6IFN3aXRjaERhc2hib2FyZFBheWxvYWQsXG4gICAgICApOiBQcm9taXNlPFN3aXRjaERhc2hib2FyZFJlc3VsdD4gPT4ge1xuICAgICAgICBpZiAoIWRhc2hib2FyZFN3aXRjaEhhbmRsZXIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnVGhlIGVtYmVkZGVkIGRhc2hib2FyZCBpcyBub3QgcmVhZHkgdG8gc3dpdGNoJyxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhc2hib2FyZFN3aXRjaEhhbmRsZXIocGF5bG9hZCk7XG4gICAgICB9LFxuICAgICk7XG5cblwiXCJcIlxuXG4gICAgYW5jaG9yX2ZvdW5kID0gRmFsc2VcblxuICAgIGZvciBhbmNob3IgaW4gc3dpdGNoYm9hcmRfYW5jaG9yX2NhbmRpZGF0ZXM6XG4gICAgICAgIGlmIGNvbnRlbnQuY291bnQoYW5jaG9yKSA9PSAxOlxuICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnQucmVwbGFjZShcbiAgICAgICAgICAgICAgICBhbmNob3IsXG4gICAgICAgICAgICAgICAgc3dpdGNoYm9hcmRfbWV0aG9kICsgYW5jaG9yLFxuICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBhbmNob3JfZm91bmQgPSBUcnVlXG4gICAgICAgICAgICBicmVha1xuXG4gICAgaWYgbm90IGFuY2hvcl9mb3VuZDpcbiAgICAgICAgcmFpc2UgUGF0Y2hFcnJvcihcbiAgICAgICAgICAgIFwiQ291bGQgbm90IGxvY2F0ZSB0aGUgZ2V0U2Nyb2xsU2l6ZSBTd2l0Y2hib2FyZCBtZXRob2RcIlxuICAgICAgICApXG5cbiAgICBmcm9udGVuZF9wYXRoLndyaXRlX3RleHQoY29udGVudCwgZW5jb2Rpbmc9XCJ1dGYtOFwiKVxuICAgIHByaW50KGZcIlBhdGNoZWQ6IHtmcm9udGVuZF9wYXRofVwiKVxuXG5cbmRlZiBwYXRjaF9ndWVzdF90b2tlbl9mZXRjaF90eXBlKGNvbnRlbnQ6IHN0cikgLT4gc3RyOlxuICAgIGNhbmRpZGF0ZXMgPSBbXG4gICAgICAgIFwiZXhwb3J0IHR5cGUgR3Vlc3RUb2tlbkZldGNoRm4gPSAoKSA9PiBQcm9taXNlPHN0cmluZz47XCIsXG4gICAgICAgIChcbiAgICAgICAgICAgIFwiZXhwb3J0IHR5cGUgR3Vlc3RUb2tlbkZldGNoRm4gPSBcIlxuICAgICAgICAgICAgXCIoKSA9PiBQcm9taXNlPHN0cmluZz47XCJcbiAgICAgICAgKSxcbiAgICBdXG5cbiAgICByZXBsYWNlbWVudCA9IFwiXCJcIi8vIFNVUEVSU0VUX1NXSVRDSEFCTEVfRU1CRURfU0RLX1BBVENIXG4vL1xuLy8gZGFzaGJvYXJkSWQgaXMgdW5kZWZpbmVkIGZvciB0aGUgaW5pdGlhbCBkYXNoYm9hcmQgYm9vdHN0cmFwLlxuLy8gQWZ0ZXIgYSBzdWNjZXNzZnVsIGRhc2hib2FyZCBzd2l0Y2gsIHRva2VuIHJlZnJlc2hlcyByZWNlaXZlIHRoZSBhY3RpdmVcbi8vIGRhc2hib2FyZCBVVUlELlxuZXhwb3J0IHR5cGUgR3Vlc3RUb2tlbkZldGNoRm4gPSAoXG4gIGRhc2hib2FyZElkPzogc3RyaW5nLFxuKSA9PiBQcm9taXNlPHN0cmluZz47XCJcIlwiXG5cbiAgICBmb3IgY2FuZGlkYXRlIGluIGNhbmRpZGF0ZXM6XG4gICAgICAgIGlmIGNvbnRlbnQuY291bnQoY2FuZGlkYXRlKSA9PSAxOlxuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQucmVwbGFjZShcbiAgICAgICAgICAgICAgICBjYW5kaWRhdGUsXG4gICAgICAgICAgICAgICAgcmVwbGFjZW1lbnQsXG4gICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgIClcblxuICAgIHJhaXNlIFBhdGNoRXJyb3IoXCJDb3VsZCBub3QgbG9jYXRlIEd1ZXN0VG9rZW5GZXRjaEZuXCIpXG5cblxuZGVmIHBhdGNoX2VtYmVkZGVkX2Rhc2hib2FyZF90eXBlKGNvbnRlbnQ6IHN0cikgLT4gc3RyOlxuICAgIHR5cGVfcGF0dGVybiA9IHJlLmNvbXBpbGUoXG4gICAgICAgIHJcIihleHBvcnRcXFxccysoPzppbnRlcmZhY2V8dHlwZSlcXFxccytFbWJlZGRlZERhc2hib2FyZFwiXG4gICAgICAgIHJcIi4qP1xcXFx7KSguKj8pKFxcXFxuXFxcXH07KVwiLFxuICAgICAgICByZS5ET1RBTEwsXG4gICAgKVxuXG4gICAgbWF0Y2ggPSB0eXBlX3BhdHRlcm4uc2VhcmNoKGNvbnRlbnQpXG5cbiAgICBpZiBub3QgbWF0Y2g6XG4gICAgICAgIHJhaXNlIFBhdGNoRXJyb3IoXG4gICAgICAgICAgICBcIkNvdWxkIG5vdCBsb2NhdGUgdGhlIEVtYmVkZGVkRGFzaGJvYXJkIHB1YmxpYyB0eXBlXCJcbiAgICAgICAgKVxuXG4gICAgYm9keSA9IG1hdGNoLmdyb3VwKDIpXG5cbiAgICBpZiBcInN3aXRjaERhc2hib2FyZDpcIiBpbiBib2R5OlxuICAgICAgICByZXR1cm4gY29udGVudFxuXG4gICAgbWV0aG9kID0gXCJcIlwiXG4gIC8qKlxuICAgKiBSZXBsYWNlcyBEYXNoYm9hcmRQYWdlIGluIHRoZSBleGlzdGluZyBpZnJhbWUgZG9jdW1lbnQuXG4gICAqXG4gICAqIFRoZSB2YWx1ZSBtdXN0IGJlIHRoZSB0YXJnZXQgZGFzaGJvYXJkIFVVSUQvaWQgYWNjZXB0ZWQgYnlcbiAgICogRGFzaGJvYXJkUGFnZSwgbm90IHRoZSBlbWJlZGRlZC1jb25maWd1cmF0aW9uIFVVSUQgdXNlZCBpbiB0aGVcbiAgICogaW5pdGlhbCAvZW1iZWRkZWQvOnV1aWQgVVJMLlxuICAgKi9cbiAgc3dpdGNoRGFzaGJvYXJkOiAoXG4gICAgZGFzaGJvYXJkSWQ6IHN0cmluZyxcbiAgKSA9PiBQcm9taXNlPHtcbiAgICBkYXNoYm9hcmRJZDogc3RyaW5nO1xuICAgIGFjY2VwdGVkOiB0cnVlO1xuICB9PjtcblwiXCJcIlxuXG4gICAgdXBkYXRlZF90eXBlID0gKFxuICAgICAgICBtYXRjaC5ncm91cCgxKVxuICAgICAgICArIGJvZHkucnN0cmlwKClcbiAgICAgICAgKyBcIlxcXFxuXCJcbiAgICAgICAgKyBtZXRob2QucnN0cmlwKClcbiAgICAgICAgKyBtYXRjaC5ncm91cCgzKVxuICAgIClcblxuICAgIHJldHVybiAoXG4gICAgICAgIGNvbnRlbnRbOiBtYXRjaC5zdGFydCgpXVxuICAgICAgICArIHVwZGF0ZWRfdHlwZVxuICAgICAgICArIGNvbnRlbnRbbWF0Y2guZW5kKCkgOl1cbiAgICApXG5cblxuZGVmIHBhdGNoX2luaXRpYWxfZ3Vlc3RfdG9rZW5fZmV0Y2goY29udGVudDogc3RyKSAtPiBzdHI6XG4gICAgY2FuZGlkYXRlcyA9IFtcbiAgICAgICAgXCJmZXRjaEd1ZXN0VG9rZW4oKSxcIixcbiAgICAgICAgXCJhd2FpdCBmZXRjaEd1ZXN0VG9rZW4oKSxcIixcbiAgICBdXG5cbiAgICBmb3IgY2FuZGlkYXRlIGluIGNhbmRpZGF0ZXM6XG4gICAgICAgIGlmIGNvbnRlbnQuY291bnQoY2FuZGlkYXRlKSA+PSAxOlxuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQucmVwbGFjZShcbiAgICAgICAgICAgICAgICBjYW5kaWRhdGUsXG4gICAgICAgICAgICAgICAgY2FuZGlkYXRlLnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgICAgIFwiZmV0Y2hHdWVzdFRva2VuKClcIixcbiAgICAgICAgICAgICAgICAgICAgXCJmZXRjaEd1ZXN0VG9rZW4odW5kZWZpbmVkKVwiLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgIClcblxuICAgIHJhaXNlIFBhdGNoRXJyb3IoXG4gICAgICAgIFwiQ291bGQgbm90IGxvY2F0ZSB0aGUgaW5pdGlhbCBmZXRjaEd1ZXN0VG9rZW4gY2FsbFwiXG4gICAgKVxuXG5cbmRlZiBwYXRjaF9ndWVzdF90b2tlbl9yZWZyZXNoKGNvbnRlbnQ6IHN0cikgLT4gc3RyOlxuICAgIHBhdHRlcm5zID0gW1xuICAgICAgICByZS5jb21waWxlKFxuICAgICAgICAgICAgclwiYXN5bmMgZnVuY3Rpb24gcmVmcmVzaEd1ZXN0VG9rZW5cXFxcKFxcXFwpIFxcXFx7XFxcXHMqXCJcbiAgICAgICAgICAgIHJcImNvbnN0IG5ld0d1ZXN0VG9rZW4gPSBhd2FpdCBmZXRjaEd1ZXN0VG9rZW5cXFxcKFxcXFwpO1xcXFxzKlwiXG4gICAgICAgICAgICByXCJvdXJQb3J0XFxcXC5lbWl0XFxcXChcIlxuICAgICAgICAgICAgclwiJ2d1ZXN0VG9rZW4nLFxcXFxzKlxcXFx7XFxcXHMqZ3Vlc3RUb2tlbjpcXFxccypuZXdHdWVzdFRva2VuXFxcXHMqXFxcXH1cIlxuICAgICAgICAgICAgclwiXFxcXCk7XFxcXHMqXCJcbiAgICAgICAgICAgIHJcInNldFRpbWVvdXRcXFxcKFwiXG4gICAgICAgICAgICByXCJyZWZyZXNoR3Vlc3RUb2tlbixcXFxccypcIlxuICAgICAgICAgICAgclwiZ2V0R3Vlc3RUb2tlblJlZnJlc2hUaW1pbmdcXFxcKG5ld0d1ZXN0VG9rZW5cXFxcKVwiXG4gICAgICAgICAgICByXCJcXFxcKTtcXFxccypcIlxuICAgICAgICAgICAgclwiXFxcXH1cIixcbiAgICAgICAgICAgIHJlLkRPVEFMTCxcbiAgICAgICAgKSxcbiAgICAgICAgcmUuY29tcGlsZShcbiAgICAgICAgICAgIHJcImNvbnN0IHJlZnJlc2hHdWVzdFRva2VuID0gYXN5bmMgXFxcXChcXFxcKSA9PiBcXFxce1xcXFxzKlwiXG4gICAgICAgICAgICByXCJjb25zdCBuZXdHdWVzdFRva2VuID0gYXdhaXQgZmV0Y2hHdWVzdFRva2VuXFxcXChcXFxcKTtcXFxccypcIlxuICAgICAgICAgICAgclwib3VyUG9ydFxcXFwuZW1pdFxcXFwoXCJcbiAgICAgICAgICAgIHJcIidndWVzdFRva2VuJyxcXFxccypcXFxce1xcXFxzKmd1ZXN0VG9rZW46XFxcXHMqbmV3R3Vlc3RUb2tlblxcXFxzKlxcXFx9XCJcbiAgICAgICAgICAgIHJcIlxcXFwpO1xcXFxzKlwiXG4gICAgICAgICAgICByXCJzZXRUaW1lb3V0XFxcXChcIlxuICAgICAgICAgICAgclwicmVmcmVzaEd1ZXN0VG9rZW4sXFxcXHMqXCJcbiAgICAgICAgICAgIHJcImdldEd1ZXN0VG9rZW5SZWZyZXNoVGltaW5nXFxcXChuZXdHdWVzdFRva2VuXFxcXClcIlxuICAgICAgICAgICAgclwiXFxcXCk7XFxcXHMqXCJcbiAgICAgICAgICAgIHJcIlxcXFx9O1wiLFxuICAgICAgICAgICAgcmUuRE9UQUxMLFxuICAgICAgICApLFxuICAgIF1cblxuICAgIHJlcGxhY2VtZW50ID0gXCJcIlwibGV0IGFjdGl2ZURhc2hib2FyZElkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgYXN5bmMgZnVuY3Rpb24gcmVmcmVzaEd1ZXN0VG9rZW4oKSB7XG4gICAgY29uc3QgbmV3R3Vlc3RUb2tlbiA9IGF3YWl0IGZldGNoR3Vlc3RUb2tlbihcbiAgICAgIGFjdGl2ZURhc2hib2FyZElkLFxuICAgICk7XG5cbiAgICBvdXJQb3J0LmVtaXQoJ2d1ZXN0VG9rZW4nLCB7XG4gICAgICBndWVzdFRva2VuOiBuZXdHdWVzdFRva2VuLFxuICAgIH0pO1xuXG4gICAgc2V0VGltZW91dChcbiAgICAgIHJlZnJlc2hHdWVzdFRva2VuLFxuICAgICAgZ2V0R3Vlc3RUb2tlblJlZnJlc2hUaW1pbmcobmV3R3Vlc3RUb2tlbiksXG4gICAgKTtcbiAgfVwiXCJcIlxuXG4gICAgZm9yIHBhdHRlcm4gaW4gcGF0dGVybnM6XG4gICAgICAgIHVwZGF0ZWQsIGNvdW50ID0gcGF0dGVybi5zdWJuKFxuICAgICAgICAgICAgcmVwbGFjZW1lbnQsXG4gICAgICAgICAgICBjb250ZW50LFxuICAgICAgICAgICAgY291bnQ9MSxcbiAgICAgICAgKVxuXG4gICAgICAgIGlmIGNvdW50ID09IDE6XG4gICAgICAgICAgICByZXR1cm4gdXBkYXRlZFxuXG4gICAgcmFpc2UgUGF0Y2hFcnJvcihcbiAgICAgICAgXCJDb3VsZCBub3QgbG9jYXRlIHRoZSBndWVzdC10b2tlbiByZWZyZXNoIGZ1bmN0aW9uXCJcbiAgICApXG5cblxuZGVmIHBhdGNoX3Nka19mdW5jdGlvbnMoY29udGVudDogc3RyKSAtPiBzdHI6XG4gICAgYW5jaG9yX2NhbmRpZGF0ZXMgPSBbXG4gICAgICAgIChcbiAgICAgICAgICAgIFwiICBjb25zdCBnZXRTY3JvbGxTaXplID0gKCkgPT4gXCJcbiAgICAgICAgICAgIFwib3VyUG9ydC5nZXQ8U2l6ZT4oJ2dldFNjcm9sbFNpemUnKTtcIlxuICAgICAgICApLFxuICAgICAgICAoXG4gICAgICAgICAgICBcIiAgY29uc3QgZ2V0U2Nyb2xsU2l6ZSA9ICgpID0+XFxcXG5cIlxuICAgICAgICAgICAgXCIgICAgb3VyUG9ydC5nZXQ8U2l6ZT4oJ2dldFNjcm9sbFNpemUnKTtcIlxuICAgICAgICApLFxuICAgIF1cblxuICAgIHN3aXRjaF9mdW5jdGlvbiA9IFwiXCJcIiAgY29uc3Qgc3dpdGNoRGFzaGJvYXJkID0gYXN5bmMgKFxuICAgIGRhc2hib2FyZElkOiBzdHJpbmcsXG4gICk6IFByb21pc2U8e1xuICAgIGRhc2hib2FyZElkOiBzdHJpbmc7XG4gICAgYWNjZXB0ZWQ6IHRydWU7XG4gIH0+ID0+IHtcbiAgICBjb25zdCBub3JtYWxpemVkRGFzaGJvYXJkSWQgPSBkYXNoYm9hcmRJZC50cmltKCk7XG5cbiAgICBpZiAoIW5vcm1hbGl6ZWREYXNoYm9hcmRJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnZGFzaGJvYXJkSWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBndWVzdFRva2VuID0gYXdhaXQgZmV0Y2hHdWVzdFRva2VuKFxuICAgICAgbm9ybWFsaXplZERhc2hib2FyZElkLFxuICAgICk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBvdXJQb3J0LmdldDx7XG4gICAgICBkYXNoYm9hcmRJZDogc3RyaW5nO1xuICAgICAgYWNjZXB0ZWQ6IHRydWU7XG4gICAgfT4oJ3N3aXRjaERhc2hib2FyZCcsIHtcbiAgICAgIGRhc2hib2FyZElkOiBub3JtYWxpemVkRGFzaGJvYXJkSWQsXG4gICAgICBndWVzdFRva2VuLFxuICAgIH0pO1xuXG4gICAgYWN0aXZlRGFzaGJvYXJkSWQgPSBub3JtYWxpemVkRGFzaGJvYXJkSWQ7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG5cIlwiXCJcblxuICAgIGZvciBhbmNob3IgaW4gYW5jaG9yX2NhbmRpZGF0ZXM6XG4gICAgICAgIGlmIGNvbnRlbnQuY291bnQoYW5jaG9yKSA9PSAxOlxuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQucmVwbGFjZShcbiAgICAgICAgICAgICAgICBhbmNob3IsXG4gICAgICAgICAgICAgICAgc3dpdGNoX2Z1bmN0aW9uICsgYW5jaG9yLFxuICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICApXG5cbiAgICByYWlzZSBQYXRjaEVycm9yKFxuICAgICAgICBcIkNvdWxkIG5vdCBsb2NhdGUgdGhlIFNESyBnZXRTY3JvbGxTaXplIGZ1bmN0aW9uXCJcbiAgICApXG5cblxuZGVmIHBhdGNoX3Nka19yZXR1cm5fb2JqZWN0KGNvbnRlbnQ6IHN0cikgLT4gc3RyOlxuICAgIGNhbmRpZGF0ZXMgPSBbXG4gICAgICAgIFwiICAgIHNldFRoZW1lTW9kZSxcXFxcbiAgfTtcIixcbiAgICAgICAgXCIgICAgc2V0VGhlbWVNb2RlLFxcXFxuICAgIHVubW91bnQsXFxcXG4gIH07XCIsXG4gICAgICAgIFwiICAgIHVubW91bnQsXFxcXG4gICAgc2V0VGhlbWVNb2RlLFxcXFxuICB9O1wiLFxuICAgIF1cblxuICAgIGZvciBjYW5kaWRhdGUgaW4gY2FuZGlkYXRlczpcbiAgICAgICAgaWYgY29udGVudC5jb3VudChjYW5kaWRhdGUpID09IDE6XG4gICAgICAgICAgICBsaW5lcyA9IGNhbmRpZGF0ZS5zcGxpdGxpbmVzKClcblxuICAgICAgICAgICAgY2xvc2luZyA9IGxpbmVzLnBvcCgpXG4gICAgICAgICAgICBib2R5ID0gXCJcXFxcblwiLmpvaW4obGluZXMpXG5cbiAgICAgICAgICAgIHJldHVybiBjb250ZW50LnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgY2FuZGlkYXRlLFxuICAgICAgICAgICAgICAgIGJvZHlcbiAgICAgICAgICAgICAgICArIFwiXFxcXG5cIlxuICAgICAgICAgICAgICAgICsgXCIgICAgc3dpdGNoRGFzaGJvYXJkLFxcXFxuXCJcbiAgICAgICAgICAgICAgICArIGNsb3NpbmcsXG4gICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgIClcblxuICAgIHJhaXNlIFBhdGNoRXJyb3IoXG4gICAgICAgIFwiQ291bGQgbm90IGxvY2F0ZSB0aGUgRW1iZWRkZWREYXNoYm9hcmQgcmV0dXJuIG9iamVjdFwiXG4gICAgKVxuXG5cbmRlZiBwYXRjaF9zZGsoc2RrX3BhdGg6IFBhdGgpIC0+IE5vbmU6XG4gICAgY29udGVudCA9IHNka19wYXRoLnJlYWRfdGV4dChlbmNvZGluZz1cInV0Zi04XCIpXG5cbiAgICBpZiBcIlNVUEVSU0VUX1NXSVRDSEFCTEVfRU1CRURfU0RLX1BBVENIXCIgaW4gY29udGVudDpcbiAgICAgICAgcHJpbnQoZlwiQWxyZWFkeSBwYXRjaGVkOiB7c2RrX3BhdGh9XCIpXG4gICAgICAgIHJldHVyblxuXG4gICAgY29udGVudCA9IHBhdGNoX2d1ZXN0X3Rva2VuX2ZldGNoX3R5cGUoY29udGVudClcbiAgICBjb250ZW50ID0gcGF0Y2hfZW1iZWRkZWRfZGFzaGJvYXJkX3R5cGUoY29udGVudClcbiAgICBjb250ZW50ID0gcGF0Y2hfaW5pdGlhbF9ndWVzdF90b2tlbl9mZXRjaChjb250ZW50KVxuICAgIGNvbnRlbnQgPSBwYXRjaF9ndWVzdF90b2tlbl9yZWZyZXNoKGNvbnRlbnQpXG4gICAgY29udGVudCA9IHBhdGNoX3Nka19mdW5jdGlvbnMoY29udGVudClcbiAgICBjb250ZW50ID0gcGF0Y2hfc2RrX3JldHVybl9vYmplY3QoY29udGVudClcblxuICAgIHNka19wYXRoLndyaXRlX3RleHQoY29udGVudCwgZW5jb2Rpbmc9XCJ1dGYtOFwiKVxuICAgIHByaW50KGZcIlBhdGNoZWQ6IHtzZGtfcGF0aH1cIilcblxuXG5kZWYgbWFpbigpIC0+IGludDpcbiAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihcbiAgICAgICAgZGVzY3JpcHRpb249KFxuICAgICAgICAgICAgXCJBcHBseSB0aGUgc3dpdGNoYWJsZS1kYXNoYm9hcmQgcGF0Y2ggdG8gYSBcIlxuICAgICAgICAgICAgXCJTdXBlcnNldCA2LjEueCBzb3VyY2UgY2hlY2tvdXQuXCJcbiAgICAgICAgKVxuICAgIClcblxuICAgIHBhcnNlci5hZGRfYXJndW1lbnQoXG4gICAgICAgIFwic3VwZXJzZXRfcm9vdFwiLFxuICAgICAgICB0eXBlPVBhdGgsXG4gICAgICAgIGhlbHA9XCJQYXRoIHRvIHRoZSBBcGFjaGUgU3VwZXJzZXQgc291cmNlIGNoZWNrb3V0XCIsXG4gICAgKVxuXG4gICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKClcbiAgICByb290ID0gYXJncy5zdXBlcnNldF9yb290LnJlc29sdmUoKVxuXG4gICAgZnJvbnRlbmRfcGF0aCA9IHJvb3QgLyBGUk9OVEVORF9GSUxFXG4gICAgc2RrX3BhdGggPSByb290IC8gU0RLX0ZJTEVcblxuICAgIG1pc3NpbmcgPSBbXG4gICAgICAgIHBhdGhcbiAgICAgICAgZm9yIHBhdGggaW4gW2Zyb250ZW5kX3BhdGgsIHNka19wYXRoXVxuICAgICAgICBpZiBub3QgcGF0aC5leGlzdHMoKVxuICAgIF1cblxuICAgIGlmIG1pc3Npbmc6XG4gICAgICAgIHByaW50KFxuICAgICAgICAgICAgXCJUaGUgdGFyZ2V0IGRvZXMgbm90IGFwcGVhciB0byBiZSBhIGNvbXBhdGlibGUgXCJcbiAgICAgICAgICAgIFwiU3VwZXJzZXQgc291cmNlIGNoZWNrb3V0LlwiLFxuICAgICAgICAgICAgZmlsZT1zeXMuc3RkZXJyLFxuICAgICAgICApXG5cbiAgICAgICAgZm9yIG1pc3NpbmdfcGF0aCBpbiBtaXNzaW5nOlxuICAgICAgICAgICAgcHJpbnQoZlwiTWlzc2luZzoge21pc3NpbmdfcGF0aH1cIiwgZmlsZT1zeXMuc3RkZXJyKVxuXG4gICAgICAgIHJldHVybiAyXG5cbiAgICB0cnk6XG4gICAgICAgIHBhdGNoX2Zyb250ZW5kKGZyb250ZW5kX3BhdGgpXG4gICAgICAgIHBhdGNoX3NkayhzZGtfcGF0aClcbiAgICBleGNlcHQgUGF0Y2hFcnJvciBhcyBlcnJvcjpcbiAgICAgICAgcHJpbnQoZlwiUGF0Y2ggZmFpbGVkOiB7ZXJyb3J9XCIsIGZpbGU9c3lzLnN0ZGVycilcbiAgICAgICAgcmV0dXJuIDFcblxuICAgIHByaW50KFwiUGF0Y2ggY29tcGxldGVkIHN1Y2Nlc3NmdWxseS5cIilcbiAgICByZXR1cm4gMFxuXG5cbmlmIF9fbmFtZV9fID09IFwiX19tYWluX19cIjpcbiAgICByYWlzZSBTeXN0ZW1FeGl0KG1haW4oKSlcbmA7XG5jb25zdCBWRVJJRllfUEFUQ0hfU0ggPSBgIyEvdXNyL2Jpbi9lbnYgYmFzaFxuXG5zZXQgLWV1byBwaXBlZmFpbFxuXG5TVVBFUlNFVF9ST09UPVxcJHsxOj9Vc2FnZTogdmVyaWZ5X3BhdGNoLnNoIC9wYXRoL3RvL3N1cGVyc2V0fVxuXG5GUk9OVEVORF9GSUxFPVwiJFNVUEVSU0VUX1JPT1Qvc3VwZXJzZXQtZnJvbnRlbmQvc3JjL2VtYmVkZGVkL2luZGV4LnRzeFwiXG5TREtfRklMRT1cIiRTVVBFUlNFVF9ST09UL3N1cGVyc2V0LWVtYmVkZGVkLXNkay9zcmMvaW5kZXgudHNcIlxuXG50ZXN0IC1mIFwiJEZST05URU5EX0ZJTEVcIlxudGVzdCAtZiBcIiRTREtfRklMRVwiXG5cbmdyZXAgLXEgXFxcXFxuICBcIlNVUEVSU0VUX1NXSVRDSEFCTEVfRU1CRURfUEFUQ0hcIiBcXFxcXG4gIFwiJEZST05URU5EX0ZJTEVcIlxuXG5ncmVwIC1xIFxcXFxcbiAgXCInc3dpdGNoRGFzaGJvYXJkJ1wiIFxcXFxcbiAgXCIkRlJPTlRFTkRfRklMRVwiXG5cbmdyZXAgLXEgXFxcXFxuICBcImRhc2hib2FyZFN3aXRjaEhhbmRsZXJcIiBcXFxcXG4gIFwiJEZST05URU5EX0ZJTEVcIlxuXG5ncmVwIC1xIFxcXFxcbiAgXCJTVVBFUlNFVF9TV0lUQ0hBQkxFX0VNQkVEX1NES19QQVRDSFwiIFxcXFxcbiAgXCIkU0RLX0ZJTEVcIlxuXG5ncmVwIC1xIFxcXFxcbiAgXCJzd2l0Y2hEYXNoYm9hcmQ6XCIgXFxcXFxuICBcIiRTREtfRklMRVwiXG5cbmdyZXAgLXEgXFxcXFxuICBcImFjdGl2ZURhc2hib2FyZElkXCIgXFxcXFxuICBcIiRTREtfRklMRVwiXG5cbmdyZXAgLXEgXFxcXFxuICBcImZldGNoR3Vlc3RUb2tlbihcIiBcXFxcXG4gIFwiJFNES19GSUxFXCJcblxuZWNobyBcIlRoZSBzd2l0Y2hhYmxlLWRhc2hib2FyZCBwYXRjaCBpcyBwcmVzZW50LlwiXG5gO1xuY29uc3QgQlVJTERfU0RLX1NIID0gYCMhL3Vzci9iaW4vZW52IGJhc2hcblxuc2V0IC1ldW8gcGlwZWZhaWxcblxuU1VQRVJTRVRfUk9PVD1cXCR7MTo/VXNhZ2U6IGJ1aWxkLXNkay5zaCAvcGF0aC90by9zdXBlcnNldH1cblxuU0RLX1JPT1Q9XCIkU1VQRVJTRVRfUk9PVC9zdXBlcnNldC1lbWJlZGRlZC1zZGtcIlxuXG5pZiBbICEgLWYgXCIkU0RLX1JPT1QvcGFja2FnZS5qc29uXCIgXTsgdGhlblxuICBlY2hvIFwiTWlzc2luZyBTREsgcGFja2FnZTogJFNES19ST09UXCIgPiYyXG4gIGV4aXQgMVxuZmlcblxuY2QgXCIkU0RLX1JPT1RcIlxuXG5ucG0gY2lcblxubnBtIHJ1biBidWlsZFxuXG5lY2hvXG5lY2hvIFwiRW1iZWRkZWQgU0RLIGJ1aWxkIGNvbXBsZXRlZC5cIlxuZWNobyBcIk91dHB1dCBkaXJlY3Rvcnk6XCJcbmZpbmQgLiBcXFxcXG4gIC1tYXhkZXB0aCAyIFxcXFxcbiAgLXR5cGUgZCBcXFxcXG4gIFxcXFwoIC1uYW1lIGRpc3QgLW8gLW5hbWUgbGliIFxcXFwpIFxcXFxcbiAgLXByaW50XG5gO1xuY29uc3QgQlVJTERfRlJPTlRFTkRfU0ggPSBgIyEvdXNyL2Jpbi9lbnYgYmFzaFxuXG5zZXQgLWV1byBwaXBlZmFpbFxuXG5TVVBFUlNFVF9ST09UPVxcJHsxOj9Vc2FnZTogYnVpbGQtc3VwZXJzZXQtZnJvbnRlbmQuc2ggL3BhdGgvdG8vc3VwZXJzZXR9XG5cbkZST05URU5EX1JPT1Q9XCIkU1VQRVJTRVRfUk9PVC9zdXBlcnNldC1mcm9udGVuZFwiXG5cbmlmIFsgISAtZiBcIiRGUk9OVEVORF9ST09UL3BhY2thZ2UuanNvblwiIF07IHRoZW5cbiAgZWNobyBcIk1pc3NpbmcgU3VwZXJzZXQgZnJvbnRlbmQ6ICRGUk9OVEVORF9ST09UXCIgPiYyXG4gIGV4aXQgMVxuZmlcblxuY2QgXCIkRlJPTlRFTkRfUk9PVFwiXG5cbm5wbSBjaVxuXG5ucG0gcnVuIGJ1aWxkXG5cbmVjaG8gXCJTdXBlcnNldCBmcm9udGVuZCBidWlsZCBjb21wbGV0ZWQuXCJcbmA7XG5jb25zdCBQQVRDSF9BTkRfQlVJTERfU0ggPSBgIyEvdXNyL2Jpbi9lbnYgYmFzaFxuXG5zZXQgLWV1byBwaXBlZmFpbFxuXG5TVVBFUlNFVF9ST09UPVxcJHsxOj9Vc2FnZTogcGF0Y2gtYW5kLWJ1aWxkLnNoIC9wYXRoL3RvL3N1cGVyc2V0fVxuXG5TQ1JJUFRfRElSPSQoXG4gIGNkIFwiJChkaXJuYW1lIFwiXFwke0JBU0hfU09VUkNFWzBdfVwiKVwiXG4gIHB3ZFxuKVxuXG5QUk9KRUNUX1JPT1Q9JChcbiAgY2QgXCIkU0NSSVBUX0RJUi8uLlwiXG4gIHB3ZFxuKVxuXG5weXRob24zIFxcXFxcbiAgXCIkUFJPSkVDVF9ST09UL3BhdGNoZXMvYXBwbHlfc3VwZXJzZXRfNl8xX3BhdGNoLnB5XCIgXFxcXFxuICBcIiRTVVBFUlNFVF9ST09UXCJcblxuXCIkUFJPSkVDVF9ST09UL3BhdGNoZXMvdmVyaWZ5X3BhdGNoLnNoXCIgXFxcXFxuICBcIiRTVVBFUlNFVF9ST09UXCJcblxuXCIkU0NSSVBUX0RJUi9idWlsZC1zZGsuc2hcIiBcXFxcXG4gIFwiJFNVUEVSU0VUX1JPT1RcIlxuXG5cIiRTQ1JJUFRfRElSL2J1aWxkLXN1cGVyc2V0LWZyb250ZW5kLnNoXCIgXFxcXFxuICBcIiRTVVBFUlNFVF9ST09UXCJcblxuZWNob1xuZWNobyBcIlBhdGNoIGFuZCBmcm9udGVuZCBidWlsZHMgY29tcGxldGVkLlwiXG5gO1xuY29uc3QgQlVJTERfRE9DS0VSX1NIID0gYCMhL3Vzci9iaW4vZW52IGJhc2hcblxuc2V0IC1ldW8gcGlwZWZhaWxcblxuU1VQRVJTRVRfUk9PVD1cXCR7MTo/VXNhZ2U6IGJ1aWxkLWRvY2tlci1pbWFnZS5zaCAvcGF0aC90by9zdXBlcnNldCBbaW1hZ2UtdGFnXX1cbklNQUdFX1RBRz1cXCR7MjotbG9jYWwvc3VwZXJzZXQtc3dpdGNoYWJsZTo2LjEuMH1cblxuU0NSSVBUX0RJUj0kKFxuICBjZCBcIiQoZGlybmFtZSBcIlxcJHtCQVNIX1NPVVJDRVswXX1cIilcIlxuICBwd2RcbilcblxuUFJPSkVDVF9ST09UPSQoXG4gIGNkIFwiJFNDUklQVF9ESVIvLi5cIlxuICBwd2RcbilcblxucHl0aG9uMyBcXFxcXG4gIFwiJFBST0pFQ1RfUk9PVC9wYXRjaGVzL2FwcGx5X3N1cGVyc2V0XzZfMV9wYXRjaC5weVwiIFxcXFxcbiAgXCIkU1VQRVJTRVRfUk9PVFwiXG5cblwiJFBST0pFQ1RfUk9PVC9wYXRjaGVzL3ZlcmlmeV9wYXRjaC5zaFwiIFxcXFxcbiAgXCIkU1VQRVJTRVRfUk9PVFwiXG5cbmNkIFwiJFNVUEVSU0VUX1JPT1RcIlxuXG5kb2NrZXIgYnVpbGQgXFxcXFxuICAtLXRhcmdldCBsZWFuIFxcXFxcbiAgLS10YWcgXCIkSU1BR0VfVEFHXCIgXFxcXFxuICAuXG5cbmVjaG8gXCJCdWlsdCBEb2NrZXIgaW1hZ2U6ICRJTUFHRV9UQUdcIlxuYDtcbmNvbnN0IFJFQURNRSA9IGAjICR7U1VQRVJTRVRfUExVR0lOX0lEfVxuXG5NdWx0aS10ZW5hbnQsIG9yZy1hZ25vc3RpYyBTdXBlcnNldCBkYXNoYm9hcmQgZW1iZWQgcGx1Z2luIChwYXRjaC1hbmQtYnVpbGQgc3RyYXRlZ3kpLlxuXG5UaGlzIGlzIG5vdCBhIGdlbmVyYXRlZCBwbHVnaW4gbGlrZSB0aGUgS2liYW5hIHZhcmlhbnQuIEluc3RlYWQsIERlY2FmIGhvbGRzXG5wYXRjaCBzY3JpcHRzIHRoYXQgbW9kaWZ5IFN1cGVyc2V0J3MgaW50ZXJuYWwgZW1iZWRkZWQgZnJvbnRlbmQgYW5kIGVtYmVkZGVkXG5TREsgc291cmNlIGZpbGVzIHRvIGFkZCBhIFxcYHN3aXRjaERhc2hib2FyZFxcYCBtZXRob2QuIFRoZSBleGlzdGluZyBpZnJhbWVcbmVsZW1lbnQsIGRvY3VtZW50LCBjb250ZW50V2luZG93LCBSZWFjdCBydW50aW1lLCBhbmQgU3dpdGNoYm9hcmQgTWVzc2FnZUNoYW5uZWxcbmFyZSBwcmVzZXJ2ZWQgYWNyb3NzIGRhc2hib2FyZCBzd2l0Y2hlcy5cblxuIyMgV2hhdCBpdCBwYXRjaGVzXG5cbi0gXFxgc3VwZXJzZXQtZnJvbnRlbmQvc3JjL2VtYmVkZGVkL2luZGV4LnRzeFxcYCDigJQgYWRkcyBcXGBzd2l0Y2hEYXNoYm9hcmRcXGAgdG8gdGhlXG4gIFN3aXRjaGJvYXJkIGNoYW5uZWw7IHJlcGxhY2VzIG9ubHkgXFxgRGFzaGJvYXJkUGFnZVxcYC5cbi0gXFxgc3VwZXJzZXQtZW1iZWRkZWQtc2RrL3NyYy9pbmRleC50c1xcYCDigJQgYWRkc1xuICBcXGBlbWJlZGRlZERhc2hib2FyZC5zd2l0Y2hEYXNoYm9hcmQoZGFzaGJvYXJkSWQpXFxgOyByZXF1ZXN0cyBhIGd1ZXN0IHRva2VuIGZvclxuICB0aGUgc2VsZWN0ZWQgZGFzaGJvYXJkOyByZWZyZXNoZXMgZnV0dXJlIGd1ZXN0IHRva2VucyBmb3IgdGhlIGFjdGl2ZSBkYXNoYm9hcmQuXG5cbiMjIEJ1aWxkXG5cblxcYFxcYFxcYGJhc2hcbiMgQXBwbHkgcGF0Y2ggKyB2ZXJpZnkgKyBidWlsZCBTREsgKyBidWlsZCBmcm9udGVuZFxuYnVpbGQvcGF0Y2gtYW5kLWJ1aWxkLnNoIC9wYXRoL3RvL3N1cGVyc2V0XG5cbiMgT3IgYnVpbGQgYSBEb2NrZXIgaW1hZ2VcbmJ1aWxkL2J1aWxkLWRvY2tlci1pbWFnZS5zaCAvcGF0aC90by9zdXBlcnNldCByZWdpc3RyeS5leGFtcGxlLmNvbS9zdXBlcnNldC1zd2l0Y2hhYmxlOjYuMS4wXG5cXGBcXGBcXGBcblxuVGhlIHBhdGNoZWQgU0RLIG11c3QgYmUgcGFja2VkIGFuZCBpbnN0YWxsZWQgaW50byB0aGUgQW5ndWxhciBhcHBsaWNhdGlvbjpcblxuXFxgXFxgXFxgYmFzaFxuY2QgL3BhdGgvdG8vc3VwZXJzZXQvc3VwZXJzZXQtZW1iZWRkZWQtc2RrXG5ucG0gY2kgJiYgbnBtIHJ1biBidWlsZCAmJiBucG0gcGFja1xuY2QgL3BhdGgvdG8vYW5ndWxhci1hcHBcbm5wbSBpbnN0YWxsIC9wYXRoL3RvL3N1cGVyc2V0L3N1cGVyc2V0LWVtYmVkZGVkLXNkay9zdXBlcnNldC11aS1lbWJlZGRlZC1zZGstKi50Z3pcblxcYFxcYFxcYFxuXG5WZXJzaW9uOiAke1NVUEVSU0VUX1BMVUdJTl9WRVJTSU9OfVxuYDtcbi8qKlxuICogUmV0dXJucyB0aGUgZnVsbCBzZXQgb2YgcGF0Y2ggYW5kIGJ1aWxkIHNjcmlwdCBmaWxlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN1cGVyc2V0UGF0Y2hGaWxlcygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgICB7IHBhdGg6IFwicGF0Y2hlcy9hcHBseV9zdXBlcnNldF82XzFfcGF0Y2gucHlcIiwgY29udGVudDogQVBQTFlfUEFUQ0hfUFksIGV4ZWN1dGFibGU6IHRydWUgfSxcbiAgICAgICAgeyBwYXRoOiBcInBhdGNoZXMvdmVyaWZ5X3BhdGNoLnNoXCIsIGNvbnRlbnQ6IFZFUklGWV9QQVRDSF9TSCwgZXhlY3V0YWJsZTogdHJ1ZSB9LFxuICAgICAgICB7IHBhdGg6IFwiYnVpbGQvYnVpbGQtc2RrLnNoXCIsIGNvbnRlbnQ6IEJVSUxEX1NES19TSCwgZXhlY3V0YWJsZTogdHJ1ZSB9LFxuICAgICAgICB7IHBhdGg6IFwiYnVpbGQvYnVpbGQtc3VwZXJzZXQtZnJvbnRlbmQuc2hcIiwgY29udGVudDogQlVJTERfRlJPTlRFTkRfU0gsIGV4ZWN1dGFibGU6IHRydWUgfSxcbiAgICAgICAgeyBwYXRoOiBcImJ1aWxkL3BhdGNoLWFuZC1idWlsZC5zaFwiLCBjb250ZW50OiBQQVRDSF9BTkRfQlVJTERfU0gsIGV4ZWN1dGFibGU6IHRydWUgfSxcbiAgICAgICAgeyBwYXRoOiBcImJ1aWxkL2J1aWxkLWRvY2tlci1pbWFnZS5zaFwiLCBjb250ZW50OiBCVUlMRF9ET0NLRVJfU0gsIGV4ZWN1dGFibGU6IHRydWUgfSxcbiAgICAgICAgeyBwYXRoOiBcIlJFQURNRS5tZFwiLCBjb250ZW50OiBSRUFETUUgfSxcbiAgICBdO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZEdWdGNHeGhkR1Z6TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dkxpNHZMaTR2YzNKakwzQnNkV2RwYm5NdmMzVndaWEp6WlhRdmRHVnRjR3hoZEdWekxuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCT3pzN096czdPenM3T3pzN08wZEJZVWM3UVVGRFNDeFBRVUZQTEVWQlFVVXNhMEpCUVd0Q0xFVkJRVVVzZFVKQlFYVkNMRVZCUVVVc2MwSkJRVzFDTzBGQlYzcEZMRTFCUVUwc1kwRkJZeXhIUVVGSE96czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096dERRWE50UW5SQ0xFTkJRVU03UVVGRlJpeE5RVUZOTEdWQlFXVXNSMEZCUnpzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdRMEY1UTNaQ0xFTkJRVU03UVVGRlJpeE5RVUZOTEZsQlFWa3NSMEZCUnpzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3TzBOQk1rSndRaXhEUVVGRE8wRkJSVVlzVFVGQlRTeHBRa0ZCYVVJc1IwRkJSenM3T3pzN096czdPenM3T3pzN096czdPenM3UTBGdlFucENMRU5CUVVNN1FVRkZSaXhOUVVGTkxHdENRVUZyUWl4SFFVRkhPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3TzBOQkswSXhRaXhEUVVGRE8wRkJSVVlzVFVGQlRTeGxRVUZsTEVkQlFVYzdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3TzBOQlowTjJRaXhEUVVGRE8wRkJSVVlzVFVGQlRTeE5RVUZOTEVkQlFVY3NTMEZCU3l4clFrRkJhMEk3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3VjBGeFF6TkNMSFZDUVVGMVFqdERRVU5xUXl4RFFVRkRPMEZCUlVZN08wZEJSVWM3UVVGRFNDeE5RVUZOTEZWQlFWVXNhMEpCUVd0Q08wbEJRMmhETEU5QlFVODdVVUZEVEN4RlFVRkZMRWxCUVVrc1JVRkJSU3h4UTBGQmNVTXNSVUZCUlN4UFFVRlBMRVZCUVVVc1kwRkJZeXhGUVVGRkxGVkJRVlVzUlVGQlJTeEpRVUZKTEVWQlFVVTdVVUZETVVZc1JVRkJSU3hKUVVGSkxFVkJRVVVzZVVKQlFYbENMRVZCUVVVc1QwRkJUeXhGUVVGRkxHVkJRV1VzUlVGQlJTeFZRVUZWTEVWQlFVVXNTVUZCU1N4RlFVRkZPMUZCUXk5RkxFVkJRVVVzU1VGQlNTeEZRVUZGTEc5Q1FVRnZRaXhGUVVGRkxFOUJRVThzUlVGQlJTeFpRVUZaTEVWQlFVVXNWVUZCVlN4RlFVRkZMRWxCUVVrc1JVRkJSVHRSUVVOMlJTeEZRVUZGTEVsQlFVa3NSVUZCUlN4clEwRkJhME1zUlVGQlJTeFBRVUZQTEVWQlFVVXNhVUpCUVdsQ0xFVkJRVVVzVlVGQlZTeEZRVUZGTEVsQlFVa3NSVUZCUlR0UlFVTXhSaXhGUVVGRkxFbEJRVWtzUlVGQlJTd3dRa0ZCTUVJc1JVRkJSU3hQUVVGUExFVkJRVVVzYTBKQlFXdENMRVZCUVVVc1ZVRkJWU3hGUVVGRkxFbEJRVWtzUlVGQlJUdFJRVU51Uml4RlFVRkZMRWxCUVVrc1JVRkJSU3cyUWtGQk5rSXNSVUZCUlN4UFFVRlBMRVZCUVVVc1pVRkJaU3hGUVVGRkxGVkJRVlVzUlVGQlJTeEpRVUZKTEVWQlFVVTdVVUZEYmtZc1JVRkJSU3hKUVVGSkxFVkJRVVVzVjBGQlZ5eEZRVUZGTEU5QlFVOHNSVUZCUlN4TlFVRk5MRVZCUVVVN1MwRkRka01zUTBGQlF6dEJRVU5LTEVOQlFVTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUl2S2lwY2JpQXFJRUJ0YjJSMWJHVWdhVzUwWldkeVlYUnBiMjV6TDNCc2RXZHBibk12YzNWd1pYSnpaWFF2ZEdWdGNHeGhkR1Z6WEc0Z0tpQkFjM1Z0YldGeWVTQlFZWFJqYUNCaGJtUWdZblZwYkdRZ2MyTnlhWEIwSUhSbGJYQnNZWFJsY3lCbWIzSWdkR2hsSUZOMWNHVnljMlYwSUdWdFltVmtJSEJzZFdkcGJpNWNiaUFxSUVCa1pYTmpjbWx3ZEdsdmJpQkliMnhrY3lCaGJHd2djR0YwWTJnZ2MyTnlhWEIwY3lBb1VIbDBhRzl1SUNzZ1FtRnphQ2tnWVc1a0lHSjFhV3hrSUhOamNtbHdkSE1nWVhOY2JpQXFJSE4wY21sdVp5QjBaVzF3YkdGMFpYTXVJRlJvWlhObElHRnlaU0J0WVhSbGNtbGhiR2w2WldRZ2IyNTBieUJrYVhOcklHSjVJSFJvWlNCcGJuTjBZV3hzWlhJdUlFUmxZMkZtWEc0Z0tpQmtiMlZ6SUc1dmRDQm5aVzVsY21GMFpTQnVaWGNnVTNWd1pYSnpaWFFnYzI5MWNtTmxJT0tBbENCcGRDQndZWFJqYUdWeklHVjRhWE4wYVc1bklHbHVkR1Z5Ym1Gc0lHWnBiR1Z6WEc0Z0tpQW9ZSE4xY0dWeWMyVjBMV1p5YjI1MFpXNWtMM055WXk5bGJXSmxaR1JsWkM5cGJtUmxlQzUwYzNoZ0lHRnVaRnh1SUNvZ1lITjFjR1Z5YzJWMExXVnRZbVZrWkdWa0xYTmtheTl6Y21NdmFXNWtaWGd1ZEhOZ0tTQm1iMnhzYjNkcGJtY2dkR2hsSUhKbFptVnlaVzVqWlNCcGJYQnNaVzFsYm5SaGRHbHZibHh1SUNvZ1puSnZiU0JFUlVOQlJpMDBNQ0RDcHprdVhHNGdLbHh1SUNvZ1ZHaGxJSEJoZEdOb0lHRmtaSE1nWVNCZ2MzZHBkR05vUkdGemFHSnZZWEprWUNCdFpYUm9iMlFnZEc4Z1UzVndaWEp6WlhRbmN5QmxlR2x6ZEdsdVp5QlRkMmwwWTJoaWIyRnlaRnh1SUNvZ1kyaGhibTVsYkN3Z2NtVndiR0ZqYVc1bklHOXViSGtnWUVSaGMyaGliMkZ5WkZCaFoyVmdJSGRvYVd4bElHdGxaWEJwYm1jZ2RHaGxJR2xtY21GdFpTQmxiR1Z0Wlc1MExGeHVJQ29nWkc5amRXMWxiblFzSUdOdmJuUmxiblJYYVc1a2IzY3NJRkpsWVdOMElISjFiblJwYldVc0lHRnVaQ0J0WlhOellXZGxJR05vWVc1dVpXd2dZV3hwZG1VdVhHNGdLaTljYm1sdGNHOXlkQ0I3SUZOVlVFVlNVMFZVWDFCTVZVZEpUbDlKUkN3Z1UxVlFSVkpUUlZSZlVFeFZSMGxPWDFaRlVsTkpUMDRnZlNCbWNtOXRJRndpTGk5dFlXNXBabVZ6ZEZ3aU8xeHVYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRk4xY0dWeWMyVjBVR0YwWTJoR2FXeGxJSHRjYmlBZ0x5b3FJRkpsYkdGMGFYWmxJSEJoZEdnZ2QybDBhR2x1SUhSb1pTQjBZWEpuWlhRZ1pHbHlaV04wYjNKNUxpQXFMMXh1SUNCd1lYUm9PaUJ6ZEhKcGJtYzdYRzRnSUM4cUtpQkdhV3hsSUdOdmJuUmxiblJ6TGlBcUwxeHVJQ0JqYjI1MFpXNTBPaUJ6ZEhKcGJtYzdYRzRnSUM4cUtpQlhhR1YwYUdWeUlIUnZJRzFoY21zZ2RHaGxJR1pwYkdVZ1pYaGxZM1YwWVdKc1pTQnZiaUJRVDFOSldDNGdLaTljYmlBZ1pYaGxZM1YwWVdKc1pUODZJR0p2YjJ4bFlXNDdYRzU5WEc1Y2JtTnZibk4wSUVGUVVFeFpYMUJCVkVOSVgxQlpJRDBnWUNNaEwzVnpjaTlpYVc0dlpXNTJJSEI1ZEdodmJqTmNibHh1Wm5KdmJTQmZYMloxZEhWeVpWOWZJR2x0Y0c5eWRDQmhibTV2ZEdGMGFXOXVjMXh1WEc1cGJYQnZjblFnWVhKbmNHRnljMlZjYm1sdGNHOXlkQ0J5WlZ4dWFXMXdiM0owSUhONWMxeHVabkp2YlNCd1lYUm9iR2xpSUdsdGNHOXlkQ0JRWVhSb1hHNWNibHh1UmxKUFRsUkZUa1JmUmtsTVJTQTlJRkJoZEdnb1hDSnpkWEJsY25ObGRDMW1jbTl1ZEdWdVpDOXpjbU12WlcxaVpXUmtaV1F2YVc1a1pYZ3VkSE40WENJcFhHNVRSRXRmUmtsTVJTQTlJRkJoZEdnb1hDSnpkWEJsY25ObGRDMWxiV0psWkdSbFpDMXpaR3N2YzNKakwybHVaR1Y0TG5SelhDSXBYRzVjYmx4dVkyeGhjM01nVUdGMFkyaEZjbkp2Y2loU2RXNTBhVzFsUlhKeWIzSXBPbHh1SUNBZ0lIQmhjM05jYmx4dVhHNWtaV1lnY21Wd2JHRmpaVjl2Ym1ObEtGeHVJQ0FnSUdOdmJuUmxiblE2SUhOMGNpeGNiaUFnSUNCdmJHUTZJSE4wY2l4Y2JpQWdJQ0J1WlhjNklITjBjaXhjYmlBZ0lDQmtaWE5qY21sd2RHbHZiam9nYzNSeUxGeHVLU0F0UGlCemRISTZYRzRnSUNBZ1kyOTFiblFnUFNCamIyNTBaVzUwTG1OdmRXNTBLRzlzWkNsY2JseHVJQ0FnSUdsbUlHTnZkVzUwSUNFOUlERTZYRzRnSUNBZ0lDQWdJSEpoYVhObElGQmhkR05vUlhKeWIzSW9YRzRnSUNBZ0lDQWdJQ0FnSUNCbVhDSjdaR1Z6WTNKcGNIUnBiMjU5T2lCbGVIQmxZM1JsWkNCbGVHRmpkR3g1SUc5dVpTQnZZMk4xY25KbGJtTmxMQ0JtYjNWdVpDQjdZMjkxYm5SOVhDSmNiaUFnSUNBZ0lDQWdLVnh1WEc0Z0lDQWdjbVYwZFhKdUlHTnZiblJsYm5RdWNtVndiR0ZqWlNodmJHUXNJRzVsZHl3Z01TbGNibHh1WEc1a1pXWWdjbVZ3YkdGalpWOXlaV2RsZUY5dmJtTmxLRnh1SUNBZ0lHTnZiblJsYm5RNklITjBjaXhjYmlBZ0lDQndZWFIwWlhKdU9pQnlaUzVRWVhSMFpYSnVXM04wY2wwc1hHNGdJQ0FnY21Wd2JHRmpaVzFsYm5RNklITjBjaXhjYmlBZ0lDQmtaWE5qY21sd2RHbHZiam9nYzNSeUxGeHVLU0F0UGlCemRISTZYRzRnSUNBZ2RYQmtZWFJsWkN3Z1kyOTFiblFnUFNCd1lYUjBaWEp1TG5OMVltNG9jbVZ3YkdGalpXMWxiblFzSUdOdmJuUmxiblFzSUdOdmRXNTBQVEVwWEc1Y2JpQWdJQ0JwWmlCamIzVnVkQ0FoUFNBeE9seHVJQ0FnSUNBZ0lDQnlZV2x6WlNCUVlYUmphRVZ5Y205eUtGeHVJQ0FnSUNBZ0lDQWdJQ0FnWmx3aWUyUmxjMk55YVhCMGFXOXVmVG9nWlhod1pXTjBaV1FnWlhoaFkzUnNlU0J2Ym1VZ2JXRjBZMmdzSUdadmRXNWtJSHRqYjNWdWRIMWNJbHh1SUNBZ0lDQWdJQ0FwWEc1Y2JpQWdJQ0J5WlhSMWNtNGdkWEJrWVhSbFpGeHVYRzVjYm1SbFppQndZWFJqYUY5eVpXRmpkRjlwYlhCdmNuUW9ZMjl1ZEdWdWREb2djM1J5S1NBdFBpQnpkSEk2WEc0Z0lDQWdjbVZoWTNSZmFXMXdiM0owWDNCaGRIUmxjbTRnUFNCeVpTNWpiMjF3YVd4bEtGeHVJQ0FnSUNBZ0lDQnlYQ0pwYlhCdmNuUmNYRnhjY3lwY1hGeGNlMXhjWEZ4ektpaGJYbjFkS3lsY1hGeGNjeXBjWEZ4Y2ZWeGNYRnh6S21aeWIyMWNYRnhjY3lvbmNtVmhZM1FuTzF3aVhHNGdJQ0FnS1Z4dVhHNGdJQ0FnYldGMFkyZ2dQU0J5WldGamRGOXBiWEJ2Y25SZmNHRjBkR1Z5Ymk1elpXRnlZMmdvWTI5dWRHVnVkQ2xjYmx4dUlDQWdJR2xtSUc1dmRDQnRZWFJqYURwY2JpQWdJQ0FnSUNBZ2NtRnBjMlVnVUdGMFkyaEZjbkp2Y2loY0lrTnZkV3hrSUc1dmRDQnNiMk5oZEdVZ2RHaGxJRzVoYldWa0lGSmxZV04wSUdsdGNHOXlkRndpS1Z4dVhHNGdJQ0FnYVcxd2IzSjBjeUE5SUZ0Y2JpQWdJQ0FnSUNBZ2RtRnNkV1V1YzNSeWFYQW9LVnh1SUNBZ0lDQWdJQ0JtYjNJZ2RtRnNkV1VnYVc0Z2JXRjBZMmd1WjNKdmRYQW9NU2t1Y21Wd2JHRmpaU2hjSWx4Y1hGeHVYQ0lzSUZ3aUlGd2lLUzV6Y0d4cGRDaGNJaXhjSWlsY2JpQWdJQ0FnSUNBZ2FXWWdkbUZzZFdVdWMzUnlhWEFvS1Z4dUlDQWdJRjFjYmx4dUlDQWdJSEpsY1hWcGNtVmtYMmx0Y0c5eWRITWdQU0JiWENKc1lYcDVYQ0lzSUZ3aVUzVnpjR1Z1YzJWY0lpd2dYQ0oxYzJWRlptWmxZM1JjSWl3Z1hDSjFjMlZUZEdGMFpWd2lYVnh1WEc0Z0lDQWdabTl5SUhKbGNYVnBjbVZrWDJsdGNHOXlkQ0JwYmlCeVpYRjFhWEpsWkY5cGJYQnZjblJ6T2x4dUlDQWdJQ0FnSUNCcFppQnlaWEYxYVhKbFpGOXBiWEJ2Y25RZ2JtOTBJR2x1SUdsdGNHOXlkSE02WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBiWEJ2Y25SekxtRndjR1Z1WkNoeVpYRjFhWEpsWkY5cGJYQnZjblFwWEc1Y2JpQWdJQ0J5WlhCc1lXTmxiV1Z1ZENBOUlDaGNiaUFnSUNBZ0lDQWdYQ0pwYlhCdmNuUWdlMXhjWEZ4dUlDQmNJbHh1SUNBZ0lDQWdJQ0FySUZ3aUxGeGNYRnh1SUNCY0lpNXFiMmx1S0dsdGNHOXlkSE1wWEc0Z0lDQWdJQ0FnSUNzZ1hDSXNYRnhjWEc1OUlHWnliMjBnSjNKbFlXTjBKenRjSWx4dUlDQWdJQ2xjYmx4dUlDQWdJSEpsZEhWeWJpQW9YRzRnSUNBZ0lDQWdJR052Ym5SbGJuUmJPaUJ0WVhSamFDNXpkR0Z5ZENncFhWeHVJQ0FnSUNBZ0lDQXJJSEpsY0d4aFkyVnRaVzUwWEc0Z0lDQWdJQ0FnSUNzZ1kyOXVkR1Z1ZEZ0dFlYUmphQzVsYm1Rb0tTQTZYVnh1SUNBZ0lDbGNibHh1WEc1a1pXWWdiRzlqWVhSbFgyVnRZbVZrWkdWa1gyTnZiWEJ2Ym1WdWRDaGNiaUFnSUNCamIyNTBaVzUwT2lCemRISXNYRzRwSUMwK0lIUjFjR3hsVzNKbExrMWhkR05vVzNOMGNsMHNJSE4wY2wwNlhHNGdJQ0FnYm1GdFpYTWdQU0JiWEc0Z0lDQWdJQ0FnSUZ3aVJXMWlaV1JrWldSTVlYcDVSR0Z6YUdKdllYSmtVR0ZuWlZ3aUxGeHVJQ0FnSUNBZ0lDQmNJa1Z0WW1Wa1pXUk1ZWHA1UkdGemFHSnZZWEprVUdGblpWd2lMRnh1SUNBZ0lGMWNibHh1SUNBZ0lHWnZjaUJ1WVcxbElHbHVJRzVoYldWek9seHVJQ0FnSUNBZ0lDQndZWFIwWlhKdUlEMGdjbVV1WTI5dGNHbHNaU2hjYmlBZ0lDQWdJQ0FnSUNBZ0lISm1YQ0pqYjI1emRDQjdibUZ0WlgwZ1BTQmNYRnhjS0Z4Y1hGd3BJRDArSUZ4Y1hGeDdleTRxUDF4Y1hGeHVYRnhjWEgxOU8xeGNYRnh1WENKY2JpQWdJQ0FnSUNBZ0lDQWdJSEptWENJb1B6MWpiMjV6ZENCRmJXSmxaR1JsWkZKdmRYUmxLVndpTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdjbVV1UkU5VVFVeE1MRnh1SUNBZ0lDQWdJQ0FwWEc1Y2JpQWdJQ0FnSUNBZ2JXRjBZMmdnUFNCd1lYUjBaWEp1TG5ObFlYSmphQ2hqYjI1MFpXNTBLVnh1WEc0Z0lDQWdJQ0FnSUdsbUlHMWhkR05vT2x4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHMWhkR05vTENCdVlXMWxYRzVjYmlBZ0lDQnlZV2x6WlNCUVlYUmphRVZ5Y205eUtGeHVJQ0FnSUNBZ0lDQmNJa052ZFd4a0lHNXZkQ0JtYVc1a0lFVnRZbVZrWkdWa1RHRjZlVVJoYzJoaWIyRnlaRkJoWjJVZ1ltVm1iM0psSUVWdFltVmtaR1ZrVW05MWRHVmNJbHh1SUNBZ0lDbGNibHh1WEc1a1pXWWdjR0YwWTJoZlpuSnZiblJsYm1Rb1puSnZiblJsYm1SZmNHRjBhRG9nVUdGMGFDa2dMVDRnVG05dVpUcGNiaUFnSUNCamIyNTBaVzUwSUQwZ1puSnZiblJsYm1SZmNHRjBhQzV5WldGa1gzUmxlSFFvWlc1amIyUnBibWM5WENKMWRHWXRPRndpS1Z4dVhHNGdJQ0FnYVdZZ1hDSlRWVkJGVWxORlZGOVRWMGxVUTBoQlFreEZYMFZOUWtWRVgxQkJWRU5JWENJZ2FXNGdZMjl1ZEdWdWREcGNiaUFnSUNBZ0lDQWdjSEpwYm5Rb1psd2lRV3h5WldGa2VTQndZWFJqYUdWa09pQjdabkp2Ym5SbGJtUmZjR0YwYUgxY0lpbGNiaUFnSUNBZ0lDQWdjbVYwZFhKdVhHNWNiaUFnSUNCamIyNTBaVzUwSUQwZ2NHRjBZMmhmY21WaFkzUmZhVzF3YjNKMEtHTnZiblJsYm5RcFhHNWNiaUFnSUNCamIyMXdiMjVsYm5SZmJXRjBZMmdzSUdOdmJYQnZibVZ1ZEY5dVlXMWxJRDBnYkc5allYUmxYMlZ0WW1Wa1pHVmtYMk52YlhCdmJtVnVkQ2hjYmlBZ0lDQWdJQ0FnWTI5dWRHVnVkRnh1SUNBZ0lDbGNibHh1SUNBZ0lISmxjR3hoWTJWdFpXNTBYMk52YlhCdmJtVnVkQ0E5SUZ4Y1lDOHZJRk5WVUVWU1UwVlVYMU5YU1ZSRFNFRkNURVZmUlUxQ1JVUmZVRUZVUTBoY2JpOHZYRzR2THlCQmJHeHZkM01nZEdobElHVjRhWE4wYVc1bklHVnRZbVZrWkdWa0lGTjFjR1Z5YzJWMElHUnZZM1Z0Wlc1MElIUnZJSEpsY0d4aFkyVWdSR0Z6YUdKdllYSmtVR0ZuWlZ4dUx5OGdkMmwwYUc5MWRDQnVZWFpwWjJGMGFXNW5JRzl5SUhKbFkzSmxZWFJwYm1jZ2RHaGxJR2xtY21GdFpTNWNiaTh2WEc0dkx5QlRaV04xY21sMGVUcGNiaTh2SUMwZ1ZHaHBjeUJ0WlhSb2IyUWdhWE1nWlhod2IzTmxaQ0J2Ym14NUlIUm9jbTkxWjJnZ1UzVndaWEp6WlhRbmN5QmxlR2x6ZEdsdVp5QlRkMmwwWTJoaWIyRnlaRnh1THk4Z0lDQk5aWE56WVdkbFEyaGhibTVsYkM1Y2JpOHZJQzBnVkdobElHaHZjM1FnWVhCd2JHbGpZWFJwYjI0Z2JYVnpkQ0J2WW5SaGFXNGdZU0JuZFdWemRDQjBiMnRsYmlCbWIzSWdkR2hsSUhSaGNtZGxkQ0JrWVhOb1ltOWhjbVF1WEc0dkx5QXRJRk4xY0dWeWMyVjBKM01nYm05eWJXRnNJRUZzYkc5M1pXUWdSRzl0WVdsdWN5QjJZV3hwWkdGMGFXOXVJSEpsYldGcGJuTWdhVzRnWldabVpXTjBMbHh1WEc1cGJuUmxjbVpoWTJVZ1UzZHBkR05vUkdGemFHSnZZWEprVUdGNWJHOWhaQ0I3WEc0Z0lHUmhjMmhpYjJGeVpFbGtPaUJ6ZEhKcGJtYzdYRzRnSUdkMVpYTjBWRzlyWlc0NklITjBjbWx1Wnp0Y2JuMWNibHh1YVc1MFpYSm1ZV05sSUZOM2FYUmphRVJoYzJoaWIyRnlaRkpsYzNWc2RDQjdYRzRnSUdSaGMyaGliMkZ5WkVsa09pQnpkSEpwYm1jN1hHNGdJR0ZqWTJWd2RHVmtPaUIwY25WbE8xeHVmVnh1WEc1MGVYQmxJRVJoYzJoaWIyRnlaRk4zYVhSamFFaGhibVJzWlhJZ1BTQW9YRzRnSUhCaGVXeHZZV1E2SUZOM2FYUmphRVJoYzJoaWIyRnlaRkJoZVd4dllXUXNYRzRwSUQwK0lGQnliMjFwYzJVOFUzZHBkR05vUkdGemFHSnZZWEprVW1WemRXeDBQanRjYmx4dWJHVjBJR1JoYzJoaWIyRnlaRk4zYVhSamFFaGhibVJzWlhJNklFUmhjMmhpYjJGeVpGTjNhWFJqYUVoaGJtUnNaWElnZkNCMWJtUmxabWx1WldRN1hHNWNibU52Ym5OMElGeGNKSHRqYjIxd2IyNWxiblJmYm1GdFpYMGdQU0FvS1NBOVBpQjdYRzRnSUdOdmJuTjBJSFZwUTI5dVptbG5JRDBnZFhObFZXbERiMjVtYVdjb0tUdGNibHh1SUNCamIyNXpkQ0JiWkdGemFHSnZZWEprU1dRc0lITmxkRVJoYzJoaWIyRnlaRWxrWFNBOUlIVnpaVk4wWVhSbFBITjBjbWx1WnlCOElHNTFiR3crS0Z4dUlDQWdJR0p2YjNSemRISmhjRVJoZEdFdVpXMWlaV1JrWldRaExtUmhjMmhpYjJGeVpGOXBaQ3hjYmlBZ0tUdGNibHh1SUNCMWMyVkZabVpsWTNRb0tDa2dQVDRnZTF4dUlDQWdJR1JoYzJoaWIyRnlaRk4zYVhSamFFaGhibVJzWlhJZ1BTQmhjM2x1WXlBb2UxeHVJQ0FnSUNBZ1pHRnphR0p2WVhKa1NXUTZJSEpsY1hWbGMzUmxaRVJoYzJoaWIyRnlaRWxrTEZ4dUlDQWdJQ0FnWjNWbGMzUlViMnRsYml4Y2JpQWdJQ0I5T2lCVGQybDBZMmhFWVhOb1ltOWhjbVJRWVhsc2IyRmtLU0E5UGlCN1hHNGdJQ0FnSUNCamIyNXpkQ0J1WlhoMFJHRnphR0p2WVhKa1NXUWdQU0J5WlhGMVpYTjBaV1JFWVhOb1ltOWhjbVJKWkM1MGNtbHRLQ2s3WEc1Y2JpQWdJQ0FnSUdsbUlDZ2hibVY0ZEVSaGMyaGliMkZ5WkVsa0tTQjdYRzRnSUNBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpaGNiaUFnSUNBZ0lDQWdJQ0FuWkdGemFHSnZZWEprU1dRZ2JYVnpkQ0JpWlNCaElHNXZiaTFsYlhCMGVTQnpkSEpwYm1jbkxGeHVJQ0FnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0JwWmlBb1hHNGdJQ0FnSUNBZ0lIUjVjR1Z2WmlCbmRXVnpkRlJ2YTJWdUlDRTlQU0FuYzNSeWFXNW5KeUI4ZkZ4dUlDQWdJQ0FnSUNCbmRXVnpkRlJ2YTJWdUxuUnlhVzBvS1M1c1pXNW5kR2dnUFQwOUlEQmNiaUFnSUNBZ0lDa2dlMXh1SUNBZ0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9YRzRnSUNBZ0lDQWdJQ0FnSjJkMVpYTjBWRzlyWlc0Z2JYVnpkQ0JpWlNCaElHNXZiaTFsYlhCMGVTQnpkSEpwYm1jbkxGeHVJQ0FnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0J6WlhSRVlYTm9ZbTloY21SSlpDaHVkV3hzS1R0Y2JseHVJQ0FnSUNBZ1pHbHpjR3hoZVdWa1ZXNWhkWFJvYjNKcGVtVmtWRzloYzNRZ1BTQm1ZV3h6WlR0Y2JseHVJQ0FnSUNBZ2MyVjBkWEJIZFdWemRFTnNhV1Z1ZENobmRXVnpkRlJ2YTJWdUtUdGNibHh1SUNBZ0lDQWdZWGRoYVhRZ2JtVjNJRkJ5YjIxcGMyVThkbTlwWkQ0b2NtVnpiMngyWlNBOVBpQjdYRzRnSUNBZ0lDQWdJSGRwYm1SdmR5NXlaWEYxWlhOMFFXNXBiV0YwYVc5dVJuSmhiV1VvS0NrZ1BUNGdjbVZ6YjJ4MlpTZ3BLVHRjYmlBZ0lDQWdJSDBwTzF4dVhHNGdJQ0FnSUNCelpYUkVZWE5vWW05aGNtUkpaQ2h1WlhoMFJHRnphR0p2WVhKa1NXUXBPMXh1WEc0Z0lDQWdJQ0J5WlhSMWNtNGdlMXh1SUNBZ0lDQWdJQ0JrWVhOb1ltOWhjbVJKWkRvZ2JtVjRkRVJoYzJoaWIyRnlaRWxrTEZ4dUlDQWdJQ0FnSUNCaFkyTmxjSFJsWkRvZ2RISjFaU3hjYmlBZ0lDQWdJSDA3WEc0Z0lDQWdmVHRjYmx4dUlDQWdJSEpsZEhWeWJpQW9LU0E5UGlCN1hHNGdJQ0FnSUNCa1lYTm9ZbTloY21SVGQybDBZMmhJWVc1a2JHVnlJRDBnZFc1a1pXWnBibVZrTzF4dUlDQWdJSDA3WEc0Z0lIMHNJRnRkS1R0Y2JseHVJQ0IxYzJWRlptWmxZM1FvS0NrZ1BUNGdlMXh1SUNBZ0lHbG1JQ2doZFdsRGIyNW1hV2MvTG1WdGFYUkVZWFJoVFdGemEzTXBJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQjFibVJsWm1sdVpXUTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2JHVjBJSEJ5WlhacGIzVnpSR0YwWVUxaGMyc2dQU0J6ZEc5eVpTNW5aWFJUZEdGMFpTZ3BMbVJoZEdGTllYTnJPMXh1WEc0Z0lDQWdjbVYwZFhKdUlITjBiM0psTG5OMVluTmpjbWxpWlNnb0tTQTlQaUI3WEc0Z0lDQWdJQ0JqYjI1emRDQmpkWEp5Wlc1MFJHRjBZVTFoYzJzZ1BTQnpkRzl5WlM1blpYUlRkR0YwWlNncExtUmhkR0ZOWVhOck8xeHVYRzRnSUNBZ0lDQnBaaUFvY0hKbGRtbHZkWE5FWVhSaFRXRnpheUFoUFQwZ1kzVnljbVZ1ZEVSaGRHRk5ZWE5yS1NCN1hHNGdJQ0FnSUNBZ0lGTjNhWFJqYUdKdllYSmtMbVZ0YVhRb0oyOWljMlZ5ZG1WRVlYUmhUV0Z6YXljc0lIdGNiaUFnSUNBZ0lDQWdJQ0F1TGk1amRYSnlaVzUwUkdGMFlVMWhjMnNzWEc0Z0lDQWdJQ0FnSUNBZ0xpNHVaMlYwUkdGMFlVMWhjMnREYUdGdVoyVlVjbWxuWjJWeUtGeHVJQ0FnSUNBZ0lDQWdJQ0FnWTNWeWNtVnVkRVJoZEdGTllYTnJMRnh1SUNBZ0lDQWdJQ0FnSUNBZ2NISmxkbWx2ZFhORVlYUmhUV0Z6YXl4Y2JpQWdJQ0FnSUNBZ0lDQXBMRnh1SUNBZ0lDQWdJQ0I5S1R0Y2JseHVJQ0FnSUNBZ0lDQndjbVYyYVc5MWMwUmhkR0ZOWVhOcklEMGdZM1Z5Y21WdWRFUmhkR0ZOWVhOck8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwcE8xeHVJQ0I5TENCYmRXbERiMjVtYVdjL0xtVnRhWFJFWVhSaFRXRnphM05kS1R0Y2JseHVJQ0JwWmlBb0lXUmhjMmhpYjJGeVpFbGtLU0I3WEc0Z0lDQWdjbVYwZFhKdUlEeE1iMkZrYVc1bklDOCtPMXh1SUNCOVhHNWNiaUFnY21WMGRYSnVJQ2hjYmlBZ0lDQThUR0Y2ZVVSaGMyaGliMkZ5WkZCaFoyVmNiaUFnSUNBZ0lHdGxlVDE3WkdGemFHSnZZWEprU1dSOVhHNGdJQ0FnSUNCcFpFOXlVMngxWnoxN1pHRnphR0p2WVhKa1NXUjlYRzRnSUNBZ0x6NWNiaUFnS1R0Y2JuMDdYRzVjWEdCY2JseHVJQ0FnSUdOdmJuUmxiblFnUFNBb1hHNGdJQ0FnSUNBZ0lHTnZiblJsYm5SYk9pQmpiMjF3YjI1bGJuUmZiV0YwWTJndWMzUmhjblFvS1YxY2JpQWdJQ0FnSUNBZ0t5QnlaWEJzWVdObGJXVnVkRjlqYjIxd2IyNWxiblJjYmlBZ0lDQWdJQ0FnS3lCamIyNTBaVzUwVzJOdmJYQnZibVZ1ZEY5dFlYUmphQzVsYm1Rb0tTQTZYVnh1SUNBZ0lDbGNibHh1SUNBZ0lITjNhWFJqYUdKdllYSmtYMkZ1WTJodmNsOWpZVzVrYVdSaGRHVnpJRDBnVzF4dUlDQWdJQ0FnSUNBb1hHNGdJQ0FnSUNBZ0lDQWdJQ0JjSWlBZ0lDQlRkMmwwWTJoaWIyRnlaQzVrWldacGJtVk5aWFJvYjJRb1hDSmNiaUFnSUNBZ0lDQWdJQ0FnSUZ3aUoyZGxkRk5qY205c2JGTnBlbVVuTENCbGJXSmxaR1JsWkVGd2FTNW5aWFJUWTNKdmJHeFRhWHBsS1R0Y0lseHVJQ0FnSUNBZ0lDQXBMRnh1SUNBZ0lDQWdJQ0FvWEc0Z0lDQWdJQ0FnSUNBZ0lDQmNJaUFnSUNCVGQybDBZMmhpYjJGeVpDNWtaV1pwYm1WTlpYUm9iMlFvWEZ4Y1hHNWNJbHh1SUNBZ0lDQWdJQ0FnSUNBZ1hDSWdJQ0FnSUNBbloyVjBVMk55YjJ4c1UybDZaU2NzWEZ4Y1hHNWNJbHh1SUNBZ0lDQWdJQ0FnSUNBZ1hDSWdJQ0FnSUNCbGJXSmxaR1JsWkVGd2FTNW5aWFJUWTNKdmJHeFRhWHBsTEZ4Y1hGeHVYQ0pjYmlBZ0lDQWdJQ0FnSUNBZ0lGd2lJQ0FnSUNrN1hDSmNiaUFnSUNBZ0lDQWdLU3hjYmlBZ0lDQmRYRzVjYmlBZ0lDQnpkMmwwWTJoaWIyRnlaRjl0WlhSb2IyUWdQU0JjSWx3aVhDSWdJQ0FnVTNkcGRHTm9ZbTloY21RdVpHVm1hVzVsVFdWMGFHOWtLRnh1SUNBZ0lDQWdKM04zYVhSamFFUmhjMmhpYjJGeVpDY3NYRzRnSUNBZ0lDQmhjM2x1WXlBb1hHNGdJQ0FnSUNBZ0lIQmhlV3h2WVdRNklGTjNhWFJqYUVSaGMyaGliMkZ5WkZCaGVXeHZZV1FzWEc0Z0lDQWdJQ0FwT2lCUWNtOXRhWE5sUEZOM2FYUmphRVJoYzJoaWIyRnlaRkpsYzNWc2RENGdQVDRnZTF4dUlDQWdJQ0FnSUNCcFppQW9JV1JoYzJoaWIyRnlaRk4zYVhSamFFaGhibVJzWlhJcElIdGNiaUFnSUNBZ0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9YRzRnSUNBZ0lDQWdJQ0FnSUNBblZHaGxJR1Z0WW1Wa1pHVmtJR1JoYzJoaWIyRnlaQ0JwY3lCdWIzUWdjbVZoWkhrZ2RHOGdjM2RwZEdOb0p5eGNiaUFnSUNBZ0lDQWdJQ0FwTzF4dUlDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHUmhjMmhpYjJGeVpGTjNhWFJqYUVoaGJtUnNaWElvY0dGNWJHOWhaQ2s3WEc0Z0lDQWdJQ0I5TEZ4dUlDQWdJQ2s3WEc1Y2Jsd2lYQ0pjSWx4dVhHNGdJQ0FnWVc1amFHOXlYMlp2ZFc1a0lEMGdSbUZzYzJWY2JseHVJQ0FnSUdadmNpQmhibU5vYjNJZ2FXNGdjM2RwZEdOb1ltOWhjbVJmWVc1amFHOXlYMk5oYm1ScFpHRjBaWE02WEc0Z0lDQWdJQ0FnSUdsbUlHTnZiblJsYm5RdVkyOTFiblFvWVc1amFHOXlLU0E5UFNBeE9seHVJQ0FnSUNBZ0lDQWdJQ0FnWTI5dWRHVnVkQ0E5SUdOdmJuUmxiblF1Y21Wd2JHRmpaU2hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JoYm1Ob2IzSXNYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjM2RwZEdOb1ltOWhjbVJmYldWMGFHOWtJQ3NnWVc1amFHOXlMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJREVzWEc0Z0lDQWdJQ0FnSUNBZ0lDQXBYRzRnSUNBZ0lDQWdJQ0FnSUNCaGJtTm9iM0pmWm05MWJtUWdQU0JVY25WbFhHNGdJQ0FnSUNBZ0lDQWdJQ0JpY21WaGExeHVYRzRnSUNBZ2FXWWdibTkwSUdGdVkyaHZjbDltYjNWdVpEcGNiaUFnSUNBZ0lDQWdjbUZwYzJVZ1VHRjBZMmhGY25KdmNpaGNiaUFnSUNBZ0lDQWdJQ0FnSUZ3aVEyOTFiR1FnYm05MElHeHZZMkYwWlNCMGFHVWdaMlYwVTJOeWIyeHNVMmw2WlNCVGQybDBZMmhpYjJGeVpDQnRaWFJvYjJSY0lseHVJQ0FnSUNBZ0lDQXBYRzVjYmlBZ0lDQm1jbTl1ZEdWdVpGOXdZWFJvTG5keWFYUmxYM1JsZUhRb1kyOXVkR1Z1ZEN3Z1pXNWpiMlJwYm1jOVhDSjFkR1l0T0Z3aUtWeHVJQ0FnSUhCeWFXNTBLR1pjSWxCaGRHTm9aV1E2SUh0bWNtOXVkR1Z1WkY5d1lYUm9mVndpS1Z4dVhHNWNibVJsWmlCd1lYUmphRjluZFdWemRGOTBiMnRsYmw5bVpYUmphRjkwZVhCbEtHTnZiblJsYm5RNklITjBjaWtnTFQ0Z2MzUnlPbHh1SUNBZ0lHTmhibVJwWkdGMFpYTWdQU0JiWEc0Z0lDQWdJQ0FnSUZ3aVpYaHdiM0owSUhSNWNHVWdSM1ZsYzNSVWIydGxia1psZEdOb1JtNGdQU0FvS1NBOVBpQlFjbTl0YVhObFBITjBjbWx1Wno0N1hDSXNYRzRnSUNBZ0lDQWdJQ2hjYmlBZ0lDQWdJQ0FnSUNBZ0lGd2laWGh3YjNKMElIUjVjR1VnUjNWbGMzUlViMnRsYmtabGRHTm9SbTRnUFNCY0lseHVJQ0FnSUNBZ0lDQWdJQ0FnWENJb0tTQTlQaUJRY205dGFYTmxQSE4wY21sdVp6NDdYQ0pjYmlBZ0lDQWdJQ0FnS1N4Y2JpQWdJQ0JkWEc1Y2JpQWdJQ0J5WlhCc1lXTmxiV1Z1ZENBOUlGd2lYQ0pjSWk4dklGTlZVRVZTVTBWVVgxTlhTVlJEU0VGQ1RFVmZSVTFDUlVSZlUwUkxYMUJCVkVOSVhHNHZMMXh1THk4Z1pHRnphR0p2WVhKa1NXUWdhWE1nZFc1a1pXWnBibVZrSUdadmNpQjBhR1VnYVc1cGRHbGhiQ0JrWVhOb1ltOWhjbVFnWW05dmRITjBjbUZ3TGx4dUx5OGdRV1owWlhJZ1lTQnpkV05qWlhOelpuVnNJR1JoYzJoaWIyRnlaQ0J6ZDJsMFkyZ3NJSFJ2YTJWdUlISmxabkpsYzJobGN5QnlaV05sYVhabElIUm9aU0JoWTNScGRtVmNiaTh2SUdSaGMyaGliMkZ5WkNCVlZVbEVMbHh1Wlhod2IzSjBJSFI1Y0dVZ1IzVmxjM1JVYjJ0bGJrWmxkR05vUm00Z1BTQW9YRzRnSUdSaGMyaGliMkZ5WkVsa1B6b2djM1J5YVc1bkxGeHVLU0E5UGlCUWNtOXRhWE5sUEhOMGNtbHVaejQ3WENKY0lsd2lYRzVjYmlBZ0lDQm1iM0lnWTJGdVpHbGtZWFJsSUdsdUlHTmhibVJwWkdGMFpYTTZYRzRnSUNBZ0lDQWdJR2xtSUdOdmJuUmxiblF1WTI5MWJuUW9ZMkZ1Wkdsa1lYUmxLU0E5UFNBeE9seHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJR052Ym5SbGJuUXVjbVZ3YkdGalpTaGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpZVzVrYVdSaGRHVXNYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVZ3YkdGalpXMWxiblFzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTVN4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ2xjYmx4dUlDQWdJSEpoYVhObElGQmhkR05vUlhKeWIzSW9YQ0pEYjNWc1pDQnViM1FnYkc5allYUmxJRWQxWlhOMFZHOXJaVzVHWlhSamFFWnVYQ0lwWEc1Y2JseHVaR1ZtSUhCaGRHTm9YMlZ0WW1Wa1pHVmtYMlJoYzJoaWIyRnlaRjkwZVhCbEtHTnZiblJsYm5RNklITjBjaWtnTFQ0Z2MzUnlPbHh1SUNBZ0lIUjVjR1ZmY0dGMGRHVnliaUE5SUhKbExtTnZiWEJwYkdVb1hHNGdJQ0FnSUNBZ0lISmNJaWhsZUhCdmNuUmNYRnhjY3lzb1B6cHBiblJsY21aaFkyVjhkSGx3WlNsY1hGeGNjeXRGYldKbFpHUmxaRVJoYzJoaWIyRnlaRndpWEc0Z0lDQWdJQ0FnSUhKY0lpNHFQMXhjWEZ4N0tTZ3VLajhwS0Z4Y1hGeHVYRnhjWEgwN0tWd2lMRnh1SUNBZ0lDQWdJQ0J5WlM1RVQxUkJURXdzWEc0Z0lDQWdLVnh1WEc0Z0lDQWdiV0YwWTJnZ1BTQjBlWEJsWDNCaGRIUmxjbTR1YzJWaGNtTm9LR052Ym5SbGJuUXBYRzVjYmlBZ0lDQnBaaUJ1YjNRZ2JXRjBZMmc2WEc0Z0lDQWdJQ0FnSUhKaGFYTmxJRkJoZEdOb1JYSnliM0lvWEc0Z0lDQWdJQ0FnSUNBZ0lDQmNJa052ZFd4a0lHNXZkQ0JzYjJOaGRHVWdkR2hsSUVWdFltVmtaR1ZrUkdGemFHSnZZWEprSUhCMVlteHBZeUIwZVhCbFhDSmNiaUFnSUNBZ0lDQWdLVnh1WEc0Z0lDQWdZbTlrZVNBOUlHMWhkR05vTG1keWIzVndLRElwWEc1Y2JpQWdJQ0JwWmlCY0luTjNhWFJqYUVSaGMyaGliMkZ5WkRwY0lpQnBiaUJpYjJSNU9seHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1kyOXVkR1Z1ZEZ4dVhHNGdJQ0FnYldWMGFHOWtJRDBnWENKY0lsd2lYRzRnSUM4cUtseHVJQ0FnS2lCU1pYQnNZV05sY3lCRVlYTm9ZbTloY21SUVlXZGxJR2x1SUhSb1pTQmxlR2x6ZEdsdVp5QnBabkpoYldVZ1pHOWpkVzFsYm5RdVhHNGdJQ0FxWEc0Z0lDQXFJRlJvWlNCMllXeDFaU0J0ZFhOMElHSmxJSFJvWlNCMFlYSm5aWFFnWkdGemFHSnZZWEprSUZWVlNVUXZhV1FnWVdOalpYQjBaV1FnWW5sY2JpQWdJQ29nUkdGemFHSnZZWEprVUdGblpTd2dibTkwSUhSb1pTQmxiV0psWkdSbFpDMWpiMjVtYVdkMWNtRjBhVzl1SUZWVlNVUWdkWE5sWkNCcGJpQjBhR1ZjYmlBZ0lDb2dhVzVwZEdsaGJDQXZaVzFpWldSa1pXUXZPblYxYVdRZ1ZWSk1MbHh1SUNBZ0tpOWNiaUFnYzNkcGRHTm9SR0Z6YUdKdllYSmtPaUFvWEc0Z0lDQWdaR0Z6YUdKdllYSmtTV1E2SUhOMGNtbHVaeXhjYmlBZ0tTQTlQaUJRY205dGFYTmxQSHRjYmlBZ0lDQmtZWE5vWW05aGNtUkpaRG9nYzNSeWFXNW5PMXh1SUNBZ0lHRmpZMlZ3ZEdWa09pQjBjblZsTzF4dUlDQjlQanRjYmx3aVhDSmNJbHh1WEc0Z0lDQWdkWEJrWVhSbFpGOTBlWEJsSUQwZ0tGeHVJQ0FnSUNBZ0lDQnRZWFJqYUM1bmNtOTFjQ2d4S1Z4dUlDQWdJQ0FnSUNBcklHSnZaSGt1Y25OMGNtbHdLQ2xjYmlBZ0lDQWdJQ0FnS3lCY0lseGNYRnh1WENKY2JpQWdJQ0FnSUNBZ0t5QnRaWFJvYjJRdWNuTjBjbWx3S0NsY2JpQWdJQ0FnSUNBZ0t5QnRZWFJqYUM1bmNtOTFjQ2d6S1Z4dUlDQWdJQ2xjYmx4dUlDQWdJSEpsZEhWeWJpQW9YRzRnSUNBZ0lDQWdJR052Ym5SbGJuUmJPaUJ0WVhSamFDNXpkR0Z5ZENncFhWeHVJQ0FnSUNBZ0lDQXJJSFZ3WkdGMFpXUmZkSGx3WlZ4dUlDQWdJQ0FnSUNBcklHTnZiblJsYm5SYmJXRjBZMmd1Wlc1a0tDa2dPbDFjYmlBZ0lDQXBYRzVjYmx4dVpHVm1JSEJoZEdOb1gybHVhWFJwWVd4ZlozVmxjM1JmZEc5clpXNWZabVYwWTJnb1kyOXVkR1Z1ZERvZ2MzUnlLU0F0UGlCemRISTZYRzRnSUNBZ1kyRnVaR2xrWVhSbGN5QTlJRnRjYmlBZ0lDQWdJQ0FnWENKbVpYUmphRWQxWlhOMFZHOXJaVzRvS1N4Y0lpeGNiaUFnSUNBZ0lDQWdYQ0poZDJGcGRDQm1aWFJqYUVkMVpYTjBWRzlyWlc0b0tTeGNJaXhjYmlBZ0lDQmRYRzVjYmlBZ0lDQm1iM0lnWTJGdVpHbGtZWFJsSUdsdUlHTmhibVJwWkdGMFpYTTZYRzRnSUNBZ0lDQWdJR2xtSUdOdmJuUmxiblF1WTI5MWJuUW9ZMkZ1Wkdsa1lYUmxLU0ErUFNBeE9seHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJR052Ym5SbGJuUXVjbVZ3YkdGalpTaGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpZVzVrYVdSaGRHVXNYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMkZ1Wkdsa1lYUmxMbkpsY0d4aFkyVW9YRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUZ3aVptVjBZMmhIZFdWemRGUnZhMlZ1S0NsY0lpeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWENKbVpYUmphRWQxWlhOMFZHOXJaVzRvZFc1a1pXWnBibVZrS1Z3aUxGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDa3NYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdNU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDbGNibHh1SUNBZ0lISmhhWE5sSUZCaGRHTm9SWEp5YjNJb1hHNGdJQ0FnSUNBZ0lGd2lRMjkxYkdRZ2JtOTBJR3h2WTJGMFpTQjBhR1VnYVc1cGRHbGhiQ0JtWlhSamFFZDFaWE4wVkc5clpXNGdZMkZzYkZ3aVhHNGdJQ0FnS1Z4dVhHNWNibVJsWmlCd1lYUmphRjluZFdWemRGOTBiMnRsYmw5eVpXWnlaWE5vS0dOdmJuUmxiblE2SUhOMGNpa2dMVDRnYzNSeU9seHVJQ0FnSUhCaGRIUmxjbTV6SUQwZ1cxeHVJQ0FnSUNBZ0lDQnlaUzVqYjIxd2FXeGxLRnh1SUNBZ0lDQWdJQ0FnSUNBZ2Nsd2lZWE41Ym1NZ1puVnVZM1JwYjI0Z2NtVm1jbVZ6YUVkMVpYTjBWRzlyWlc1Y1hGeGNLRnhjWEZ3cElGeGNYRng3WEZ4Y1hITXFYQ0pjYmlBZ0lDQWdJQ0FnSUNBZ0lISmNJbU52Ym5OMElHNWxkMGQxWlhOMFZHOXJaVzRnUFNCaGQyRnBkQ0JtWlhSamFFZDFaWE4wVkc5clpXNWNYRnhjS0Z4Y1hGd3BPMXhjWEZ4ektsd2lYRzRnSUNBZ0lDQWdJQ0FnSUNCeVhDSnZkWEpRYjNKMFhGeGNYQzVsYldsMFhGeGNYQ2hjSWx4dUlDQWdJQ0FnSUNBZ0lDQWdjbHdpSjJkMVpYTjBWRzlyWlc0bkxGeGNYRnh6S2x4Y1hGeDdYRnhjWEhNcVozVmxjM1JVYjJ0bGJqcGNYRnhjY3lwdVpYZEhkV1Z6ZEZSdmEyVnVYRnhjWEhNcVhGeGNYSDFjSWx4dUlDQWdJQ0FnSUNBZ0lDQWdjbHdpWEZ4Y1hDazdYRnhjWEhNcVhDSmNiaUFnSUNBZ0lDQWdJQ0FnSUhKY0luTmxkRlJwYldWdmRYUmNYRnhjS0Z3aVhHNGdJQ0FnSUNBZ0lDQWdJQ0J5WENKeVpXWnlaWE5vUjNWbGMzUlViMnRsYml4Y1hGeGNjeXBjSWx4dUlDQWdJQ0FnSUNBZ0lDQWdjbHdpWjJWMFIzVmxjM1JVYjJ0bGJsSmxabkpsYzJoVWFXMXBibWRjWEZ4Y0tHNWxkMGQxWlhOMFZHOXJaVzVjWEZ4Y0tWd2lYRzRnSUNBZ0lDQWdJQ0FnSUNCeVhDSmNYRnhjS1R0Y1hGeGNjeXBjSWx4dUlDQWdJQ0FnSUNBZ0lDQWdjbHdpWEZ4Y1hIMWNJaXhjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxMa1JQVkVGTVRDeGNiaUFnSUNBZ0lDQWdLU3hjYmlBZ0lDQWdJQ0FnY21VdVkyOXRjR2xzWlNoY2JpQWdJQ0FnSUNBZ0lDQWdJSEpjSW1OdmJuTjBJSEpsWm5KbGMyaEhkV1Z6ZEZSdmEyVnVJRDBnWVhONWJtTWdYRnhjWENoY1hGeGNLU0E5UGlCY1hGeGNlMXhjWEZ4ektsd2lYRzRnSUNBZ0lDQWdJQ0FnSUNCeVhDSmpiMjV6ZENCdVpYZEhkV1Z6ZEZSdmEyVnVJRDBnWVhkaGFYUWdabVYwWTJoSGRXVnpkRlJ2YTJWdVhGeGNYQ2hjWEZ4Y0tUdGNYRnhjY3lwY0lseHVJQ0FnSUNBZ0lDQWdJQ0FnY2x3aWIzVnlVRzl5ZEZ4Y1hGd3VaVzFwZEZ4Y1hGd29YQ0pjYmlBZ0lDQWdJQ0FnSUNBZ0lISmNJaWRuZFdWemRGUnZhMlZ1Snl4Y1hGeGNjeXBjWEZ4Y2UxeGNYRnh6S21kMVpYTjBWRzlyWlc0NlhGeGNYSE1xYm1WM1IzVmxjM1JVYjJ0bGJseGNYRnh6S2x4Y1hGeDlYQ0pjYmlBZ0lDQWdJQ0FnSUNBZ0lISmNJbHhjWEZ3cE8xeGNYRnh6S2x3aVhHNGdJQ0FnSUNBZ0lDQWdJQ0J5WENKelpYUlVhVzFsYjNWMFhGeGNYQ2hjSWx4dUlDQWdJQ0FnSUNBZ0lDQWdjbHdpY21WbWNtVnphRWQxWlhOMFZHOXJaVzRzWEZ4Y1hITXFYQ0pjYmlBZ0lDQWdJQ0FnSUNBZ0lISmNJbWRsZEVkMVpYTjBWRzlyWlc1U1pXWnlaWE5vVkdsdGFXNW5YRnhjWENodVpYZEhkV1Z6ZEZSdmEyVnVYRnhjWENsY0lseHVJQ0FnSUNBZ0lDQWdJQ0FnY2x3aVhGeGNYQ2s3WEZ4Y1hITXFYQ0pjYmlBZ0lDQWdJQ0FnSUNBZ0lISmNJbHhjWEZ4OU8xd2lMRnh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVXVSRTlVUVV4TUxGeHVJQ0FnSUNBZ0lDQXBMRnh1SUNBZ0lGMWNibHh1SUNBZ0lISmxjR3hoWTJWdFpXNTBJRDBnWENKY0lsd2liR1YwSUdGamRHbDJaVVJoYzJoaWIyRnlaRWxrT2lCemRISnBibWNnZkNCMWJtUmxabWx1WldRN1hHNWNiaUFnWVhONWJtTWdablZ1WTNScGIyNGdjbVZtY21WemFFZDFaWE4wVkc5clpXNG9LU0I3WEc0Z0lDQWdZMjl1YzNRZ2JtVjNSM1ZsYzNSVWIydGxiaUE5SUdGM1lXbDBJR1psZEdOb1IzVmxjM1JVYjJ0bGJpaGNiaUFnSUNBZ0lHRmpkR2wyWlVSaGMyaGliMkZ5WkVsa0xGeHVJQ0FnSUNrN1hHNWNiaUFnSUNCdmRYSlFiM0owTG1WdGFYUW9KMmQxWlhOMFZHOXJaVzRuTENCN1hHNGdJQ0FnSUNCbmRXVnpkRlJ2YTJWdU9pQnVaWGRIZFdWemRGUnZhMlZ1TEZ4dUlDQWdJSDBwTzF4dVhHNGdJQ0FnYzJWMFZHbHRaVzkxZENoY2JpQWdJQ0FnSUhKbFpuSmxjMmhIZFdWemRGUnZhMlZ1TEZ4dUlDQWdJQ0FnWjJWMFIzVmxjM1JVYjJ0bGJsSmxabkpsYzJoVWFXMXBibWNvYm1WM1IzVmxjM1JVYjJ0bGJpa3NYRzRnSUNBZ0tUdGNiaUFnZlZ3aVhDSmNJbHh1WEc0Z0lDQWdabTl5SUhCaGRIUmxjbTRnYVc0Z2NHRjBkR1Z5Ym5NNlhHNGdJQ0FnSUNBZ0lIVndaR0YwWldRc0lHTnZkVzUwSUQwZ2NHRjBkR1Z5Ymk1emRXSnVLRnh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVndiR0ZqWlcxbGJuUXNYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyNTBaVzUwTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdZMjkxYm5ROU1TeGNiaUFnSUNBZ0lDQWdLVnh1WEc0Z0lDQWdJQ0FnSUdsbUlHTnZkVzUwSUQwOUlERTZYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnZFhCa1lYUmxaRnh1WEc0Z0lDQWdjbUZwYzJVZ1VHRjBZMmhGY25KdmNpaGNiaUFnSUNBZ0lDQWdYQ0pEYjNWc1pDQnViM1FnYkc5allYUmxJSFJvWlNCbmRXVnpkQzEwYjJ0bGJpQnlaV1p5WlhOb0lHWjFibU4wYVc5dVhDSmNiaUFnSUNBcFhHNWNibHh1WkdWbUlIQmhkR05vWDNOa2ExOW1kVzVqZEdsdmJuTW9ZMjl1ZEdWdWREb2djM1J5S1NBdFBpQnpkSEk2WEc0Z0lDQWdZVzVqYUc5eVgyTmhibVJwWkdGMFpYTWdQU0JiWEc0Z0lDQWdJQ0FnSUNoY2JpQWdJQ0FnSUNBZ0lDQWdJRndpSUNCamIyNXpkQ0JuWlhSVFkzSnZiR3hUYVhwbElEMGdLQ2tnUFQ0Z1hDSmNiaUFnSUNBZ0lDQWdJQ0FnSUZ3aWIzVnlVRzl5ZEM1blpYUThVMmw2WlQ0b0oyZGxkRk5qY205c2JGTnBlbVVuS1R0Y0lseHVJQ0FnSUNBZ0lDQXBMRnh1SUNBZ0lDQWdJQ0FvWEc0Z0lDQWdJQ0FnSUNBZ0lDQmNJaUFnWTI5dWMzUWdaMlYwVTJOeWIyeHNVMmw2WlNBOUlDZ3BJRDArWEZ4Y1hHNWNJbHh1SUNBZ0lDQWdJQ0FnSUNBZ1hDSWdJQ0FnYjNWeVVHOXlkQzVuWlhROFUybDZaVDRvSjJkbGRGTmpjbTlzYkZOcGVtVW5LVHRjSWx4dUlDQWdJQ0FnSUNBcExGeHVJQ0FnSUYxY2JseHVJQ0FnSUhOM2FYUmphRjltZFc1amRHbHZiaUE5SUZ3aVhDSmNJaUFnWTI5dWMzUWdjM2RwZEdOb1JHRnphR0p2WVhKa0lEMGdZWE41Ym1NZ0tGeHVJQ0FnSUdSaGMyaGliMkZ5WkVsa09pQnpkSEpwYm1jc1hHNGdJQ2s2SUZCeWIyMXBjMlU4ZTF4dUlDQWdJR1JoYzJoaWIyRnlaRWxrT2lCemRISnBibWM3WEc0Z0lDQWdZV05qWlhCMFpXUTZJSFJ5ZFdVN1hHNGdJSDArSUQwK0lIdGNiaUFnSUNCamIyNXpkQ0J1YjNKdFlXeHBlbVZrUkdGemFHSnZZWEprU1dRZ1BTQmtZWE5vWW05aGNtUkpaQzUwY21sdEtDazdYRzVjYmlBZ0lDQnBaaUFvSVc1dmNtMWhiR2w2WldSRVlYTm9ZbTloY21SSlpDa2dlMXh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtGeHVJQ0FnSUNBZ0lDQW5aR0Z6YUdKdllYSmtTV1FnYlhWemRDQmlaU0JoSUc1dmJpMWxiWEIwZVNCemRISnBibWNuTEZ4dUlDQWdJQ0FnS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JqYjI1emRDQm5kV1Z6ZEZSdmEyVnVJRDBnWVhkaGFYUWdabVYwWTJoSGRXVnpkRlJ2YTJWdUtGeHVJQ0FnSUNBZ2JtOXliV0ZzYVhwbFpFUmhjMmhpYjJGeVpFbGtMRnh1SUNBZ0lDazdYRzVjYmlBZ0lDQmpiMjV6ZENCeVpYTjFiSFFnUFNCaGQyRnBkQ0J2ZFhKUWIzSjBMbWRsZER4N1hHNGdJQ0FnSUNCa1lYTm9ZbTloY21SSlpEb2djM1J5YVc1bk8xeHVJQ0FnSUNBZ1lXTmpaWEIwWldRNklIUnlkV1U3WEc0Z0lDQWdmVDRvSjNOM2FYUmphRVJoYzJoaWIyRnlaQ2NzSUh0Y2JpQWdJQ0FnSUdSaGMyaGliMkZ5WkVsa09pQnViM0p0WVd4cGVtVmtSR0Z6YUdKdllYSmtTV1FzWEc0Z0lDQWdJQ0JuZFdWemRGUnZhMlZ1TEZ4dUlDQWdJSDBwTzF4dVhHNGdJQ0FnWVdOMGFYWmxSR0Z6YUdKdllYSmtTV1FnUFNCdWIzSnRZV3hwZW1Wa1JHRnphR0p2WVhKa1NXUTdYRzVjYmlBZ0lDQnlaWFIxY200Z2NtVnpkV3gwTzF4dUlDQjlPMXh1WEc1Y0lsd2lYQ0pjYmx4dUlDQWdJR1p2Y2lCaGJtTm9iM0lnYVc0Z1lXNWphRzl5WDJOaGJtUnBaR0YwWlhNNlhHNGdJQ0FnSUNBZ0lHbG1JR052Ym5SbGJuUXVZMjkxYm5Rb1lXNWphRzl5S1NBOVBTQXhPbHh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUdOdmJuUmxiblF1Y21Wd2JHRmpaU2hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JoYm1Ob2IzSXNYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjM2RwZEdOb1gyWjFibU4wYVc5dUlDc2dZVzVqYUc5eUxGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lERXNYRzRnSUNBZ0lDQWdJQ0FnSUNBcFhHNWNiaUFnSUNCeVlXbHpaU0JRWVhSamFFVnljbTl5S0Z4dUlDQWdJQ0FnSUNCY0lrTnZkV3hrSUc1dmRDQnNiMk5oZEdVZ2RHaGxJRk5FU3lCblpYUlRZM0p2Ykd4VGFYcGxJR1oxYm1OMGFXOXVYQ0pjYmlBZ0lDQXBYRzVjYmx4dVpHVm1JSEJoZEdOb1gzTmthMTl5WlhSMWNtNWZiMkpxWldOMEtHTnZiblJsYm5RNklITjBjaWtnTFQ0Z2MzUnlPbHh1SUNBZ0lHTmhibVJwWkdGMFpYTWdQU0JiWEc0Z0lDQWdJQ0FnSUZ3aUlDQWdJSE5sZEZSb1pXMWxUVzlrWlN4Y1hGeGNiaUFnZlR0Y0lpeGNiaUFnSUNBZ0lDQWdYQ0lnSUNBZ2MyVjBWR2hsYldWTmIyUmxMRnhjWEZ4dUlDQWdJSFZ1Ylc5MWJuUXNYRnhjWEc0Z0lIMDdYQ0lzWEc0Z0lDQWdJQ0FnSUZ3aUlDQWdJSFZ1Ylc5MWJuUXNYRnhjWEc0Z0lDQWdjMlYwVkdobGJXVk5iMlJsTEZ4Y1hGeHVJQ0I5TzF3aUxGeHVJQ0FnSUYxY2JseHVJQ0FnSUdadmNpQmpZVzVrYVdSaGRHVWdhVzRnWTJGdVpHbGtZWFJsY3pwY2JpQWdJQ0FnSUNBZ2FXWWdZMjl1ZEdWdWRDNWpiM1Z1ZENoallXNWthV1JoZEdVcElEMDlJREU2WEc0Z0lDQWdJQ0FnSUNBZ0lDQnNhVzVsY3lBOUlHTmhibVJwWkdGMFpTNXpjR3hwZEd4cGJtVnpLQ2xjYmx4dUlDQWdJQ0FnSUNBZ0lDQWdZMnh2YzJsdVp5QTlJR3hwYm1WekxuQnZjQ2dwWEc0Z0lDQWdJQ0FnSUNBZ0lDQmliMlI1SUQwZ1hDSmNYRnhjYmx3aUxtcHZhVzRvYkdsdVpYTXBYRzVjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCamIyNTBaVzUwTG5KbGNHeGhZMlVvWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTJGdVpHbGtZWFJsTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdKdlpIbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXJJRndpWEZ4Y1hHNWNJbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ3NnWENJZ0lDQWdjM2RwZEdOb1JHRnphR0p2WVhKa0xGeGNYRnh1WENKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBcklHTnNiM05wYm1jc1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ01TeGNiaUFnSUNBZ0lDQWdJQ0FnSUNsY2JseHVJQ0FnSUhKaGFYTmxJRkJoZEdOb1JYSnliM0lvWEc0Z0lDQWdJQ0FnSUZ3aVEyOTFiR1FnYm05MElHeHZZMkYwWlNCMGFHVWdSVzFpWldSa1pXUkVZWE5vWW05aGNtUWdjbVYwZFhKdUlHOWlhbVZqZEZ3aVhHNGdJQ0FnS1Z4dVhHNWNibVJsWmlCd1lYUmphRjl6Wkdzb2MyUnJYM0JoZEdnNklGQmhkR2dwSUMwK0lFNXZibVU2WEc0Z0lDQWdZMjl1ZEdWdWRDQTlJSE5rYTE5d1lYUm9MbkpsWVdSZmRHVjRkQ2hsYm1OdlpHbHVaejFjSW5WMFppMDRYQ0lwWEc1Y2JpQWdJQ0JwWmlCY0lsTlZVRVZTVTBWVVgxTlhTVlJEU0VGQ1RFVmZSVTFDUlVSZlUwUkxYMUJCVkVOSVhDSWdhVzRnWTI5dWRHVnVkRHBjYmlBZ0lDQWdJQ0FnY0hKcGJuUW9abHdpUVd4eVpXRmtlU0J3WVhSamFHVmtPaUI3YzJSclgzQmhkR2g5WENJcFhHNGdJQ0FnSUNBZ0lISmxkSFZ5Ymx4dVhHNGdJQ0FnWTI5dWRHVnVkQ0E5SUhCaGRHTm9YMmQxWlhOMFgzUnZhMlZ1WDJabGRHTm9YM1I1Y0dVb1kyOXVkR1Z1ZENsY2JpQWdJQ0JqYjI1MFpXNTBJRDBnY0dGMFkyaGZaVzFpWldSa1pXUmZaR0Z6YUdKdllYSmtYM1I1Y0dVb1kyOXVkR1Z1ZENsY2JpQWdJQ0JqYjI1MFpXNTBJRDBnY0dGMFkyaGZhVzVwZEdsaGJGOW5kV1Z6ZEY5MGIydGxibDltWlhSamFDaGpiMjUwWlc1MEtWeHVJQ0FnSUdOdmJuUmxiblFnUFNCd1lYUmphRjluZFdWemRGOTBiMnRsYmw5eVpXWnlaWE5vS0dOdmJuUmxiblFwWEc0Z0lDQWdZMjl1ZEdWdWRDQTlJSEJoZEdOb1gzTmthMTltZFc1amRHbHZibk1vWTI5dWRHVnVkQ2xjYmlBZ0lDQmpiMjUwWlc1MElEMGdjR0YwWTJoZmMyUnJYM0psZEhWeWJsOXZZbXBsWTNRb1kyOXVkR1Z1ZENsY2JseHVJQ0FnSUhOa2ExOXdZWFJvTG5keWFYUmxYM1JsZUhRb1kyOXVkR1Z1ZEN3Z1pXNWpiMlJwYm1jOVhDSjFkR1l0T0Z3aUtWeHVJQ0FnSUhCeWFXNTBLR1pjSWxCaGRHTm9aV1E2SUh0elpHdGZjR0YwYUgxY0lpbGNibHh1WEc1a1pXWWdiV0ZwYmlncElDMCtJR2x1ZERwY2JpQWdJQ0J3WVhKelpYSWdQU0JoY21kd1lYSnpaUzVCY21kMWJXVnVkRkJoY25ObGNpaGNiaUFnSUNBZ0lDQWdaR1Z6WTNKcGNIUnBiMjQ5S0Z4dUlDQWdJQ0FnSUNBZ0lDQWdYQ0pCY0hCc2VTQjBhR1VnYzNkcGRHTm9ZV0pzWlMxa1lYTm9ZbTloY21RZ2NHRjBZMmdnZEc4Z1lTQmNJbHh1SUNBZ0lDQWdJQ0FnSUNBZ1hDSlRkWEJsY25ObGRDQTJMakV1ZUNCemIzVnlZMlVnWTJobFkydHZkWFF1WENKY2JpQWdJQ0FnSUNBZ0tWeHVJQ0FnSUNsY2JseHVJQ0FnSUhCaGNuTmxjaTVoWkdSZllYSm5kVzFsYm5Rb1hHNGdJQ0FnSUNBZ0lGd2ljM1Z3WlhKelpYUmZjbTl2ZEZ3aUxGeHVJQ0FnSUNBZ0lDQjBlWEJsUFZCaGRHZ3NYRzRnSUNBZ0lDQWdJR2hsYkhBOVhDSlFZWFJvSUhSdklIUm9aU0JCY0dGamFHVWdVM1Z3WlhKelpYUWdjMjkxY21ObElHTm9aV05yYjNWMFhDSXNYRzRnSUNBZ0tWeHVYRzRnSUNBZ1lYSm5jeUE5SUhCaGNuTmxjaTV3WVhKelpWOWhjbWR6S0NsY2JpQWdJQ0J5YjI5MElEMGdZWEpuY3k1emRYQmxjbk5sZEY5eWIyOTBMbkpsYzI5c2RtVW9LVnh1WEc0Z0lDQWdabkp2Ym5SbGJtUmZjR0YwYUNBOUlISnZiM1FnTHlCR1VrOU9WRVZPUkY5R1NVeEZYRzRnSUNBZ2MyUnJYM0JoZEdnZ1BTQnliMjkwSUM4Z1UwUkxYMFpKVEVWY2JseHVJQ0FnSUcxcGMzTnBibWNnUFNCYlhHNGdJQ0FnSUNBZ0lIQmhkR2hjYmlBZ0lDQWdJQ0FnWm05eUlIQmhkR2dnYVc0Z1cyWnliMjUwWlc1a1gzQmhkR2dzSUhOa2ExOXdZWFJvWFZ4dUlDQWdJQ0FnSUNCcFppQnViM1FnY0dGMGFDNWxlR2x6ZEhNb0tWeHVJQ0FnSUYxY2JseHVJQ0FnSUdsbUlHMXBjM05wYm1jNlhHNGdJQ0FnSUNBZ0lIQnlhVzUwS0Z4dUlDQWdJQ0FnSUNBZ0lDQWdYQ0pVYUdVZ2RHRnlaMlYwSUdSdlpYTWdibTkwSUdGd2NHVmhjaUIwYnlCaVpTQmhJR052YlhCaGRHbGliR1VnWENKY2JpQWdJQ0FnSUNBZ0lDQWdJRndpVTNWd1pYSnpaWFFnYzI5MWNtTmxJR05vWldOcmIzVjBMbHdpTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdabWxzWlQxemVYTXVjM1JrWlhKeUxGeHVJQ0FnSUNBZ0lDQXBYRzVjYmlBZ0lDQWdJQ0FnWm05eUlHMXBjM05wYm1kZmNHRjBhQ0JwYmlCdGFYTnphVzVuT2x4dUlDQWdJQ0FnSUNBZ0lDQWdjSEpwYm5Rb1psd2lUV2x6YzJsdVp6b2dlMjFwYzNOcGJtZGZjR0YwYUgxY0lpd2dabWxzWlQxemVYTXVjM1JrWlhKeUtWeHVYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQXlYRzVjYmlBZ0lDQjBjbms2WEc0Z0lDQWdJQ0FnSUhCaGRHTm9YMlp5YjI1MFpXNWtLR1p5YjI1MFpXNWtYM0JoZEdncFhHNGdJQ0FnSUNBZ0lIQmhkR05vWDNOa2F5aHpaR3RmY0dGMGFDbGNiaUFnSUNCbGVHTmxjSFFnVUdGMFkyaEZjbkp2Y2lCaGN5Qmxjbkp2Y2pwY2JpQWdJQ0FnSUNBZ2NISnBiblFvWmx3aVVHRjBZMmdnWm1GcGJHVmtPaUI3WlhKeWIzSjlYQ0lzSUdacGJHVTljM2x6TG5OMFpHVnljaWxjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJREZjYmx4dUlDQWdJSEJ5YVc1MEtGd2lVR0YwWTJnZ1kyOXRjR3hsZEdWa0lITjFZMk5sYzNObWRXeHNlUzVjSWlsY2JpQWdJQ0J5WlhSMWNtNGdNRnh1WEc1Y2JtbG1JRjlmYm1GdFpWOWZJRDA5SUZ3aVgxOXRZV2x1WDE5Y0lqcGNiaUFnSUNCeVlXbHpaU0JUZVhOMFpXMUZlR2wwS0cxaGFXNG9LU2xjYm1BN1hHNWNibU52Ym5OMElGWkZVa2xHV1Y5UVFWUkRTRjlUU0NBOUlHQWpJUzkxYzNJdlltbHVMMlZ1ZGlCaVlYTm9YRzVjYm5ObGRDQXRaWFZ2SUhCcGNHVm1ZV2xzWEc1Y2JsTlZVRVZTVTBWVVgxSlBUMVE5WEZ3a2V6RTZQMVZ6WVdkbE9pQjJaWEpwWm5sZmNHRjBZMmd1YzJnZ0wzQmhkR2d2ZEc4dmMzVndaWEp6WlhSOVhHNWNia1pTVDA1VVJVNUVYMFpKVEVVOVhDSWtVMVZRUlZKVFJWUmZVazlQVkM5emRYQmxjbk5sZEMxbWNtOXVkR1Z1WkM5emNtTXZaVzFpWldSa1pXUXZhVzVrWlhndWRITjRYQ0pjYmxORVMxOUdTVXhGUFZ3aUpGTlZVRVZTVTBWVVgxSlBUMVF2YzNWd1pYSnpaWFF0WlcxaVpXUmtaV1F0YzJSckwzTnlZeTlwYm1SbGVDNTBjMXdpWEc1Y2JuUmxjM1FnTFdZZ1hDSWtSbEpQVGxSRlRrUmZSa2xNUlZ3aVhHNTBaWE4wSUMxbUlGd2lKRk5FUzE5R1NVeEZYQ0pjYmx4dVozSmxjQ0F0Y1NCY1hGeGNYRzRnSUZ3aVUxVlFSVkpUUlZSZlUxZEpWRU5JUVVKTVJWOUZUVUpGUkY5UVFWUkRTRndpSUZ4Y1hGeGNiaUFnWENJa1JsSlBUbFJGVGtSZlJrbE1SVndpWEc1Y2JtZHlaWEFnTFhFZ1hGeGNYRnh1SUNCY0lpZHpkMmwwWTJoRVlYTm9ZbTloY21RblhDSWdYRnhjWEZ4dUlDQmNJaVJHVWs5T1ZFVk9SRjlHU1V4RlhDSmNibHh1WjNKbGNDQXRjU0JjWEZ4Y1hHNGdJRndpWkdGemFHSnZZWEprVTNkcGRHTm9TR0Z1Wkd4bGNsd2lJRnhjWEZ4Y2JpQWdYQ0lrUmxKUFRsUkZUa1JmUmtsTVJWd2lYRzVjYm1keVpYQWdMWEVnWEZ4Y1hGeHVJQ0JjSWxOVlVFVlNVMFZVWDFOWFNWUkRTRUZDVEVWZlJVMUNSVVJmVTBSTFgxQkJWRU5JWENJZ1hGeGNYRnh1SUNCY0lpUlRSRXRmUmtsTVJWd2lYRzVjYm1keVpYQWdMWEVnWEZ4Y1hGeHVJQ0JjSW5OM2FYUmphRVJoYzJoaWIyRnlaRHBjSWlCY1hGeGNYRzRnSUZ3aUpGTkVTMTlHU1V4RlhDSmNibHh1WjNKbGNDQXRjU0JjWEZ4Y1hHNGdJRndpWVdOMGFYWmxSR0Z6YUdKdllYSmtTV1JjSWlCY1hGeGNYRzRnSUZ3aUpGTkVTMTlHU1V4RlhDSmNibHh1WjNKbGNDQXRjU0JjWEZ4Y1hHNGdJRndpWm1WMFkyaEhkV1Z6ZEZSdmEyVnVLRndpSUZ4Y1hGeGNiaUFnWENJa1UwUkxYMFpKVEVWY0lseHVYRzVsWTJodklGd2lWR2hsSUhOM2FYUmphR0ZpYkdVdFpHRnphR0p2WVhKa0lIQmhkR05vSUdseklIQnlaWE5sYm5RdVhDSmNibUE3WEc1Y2JtTnZibk4wSUVKVlNVeEVYMU5FUzE5VFNDQTlJR0FqSVM5MWMzSXZZbWx1TDJWdWRpQmlZWE5vWEc1Y2JuTmxkQ0F0WlhWdklIQnBjR1ZtWVdsc1hHNWNibE5WVUVWU1UwVlVYMUpQVDFROVhGd2tlekU2UDFWellXZGxPaUJpZFdsc1pDMXpaR3N1YzJnZ0wzQmhkR2d2ZEc4dmMzVndaWEp6WlhSOVhHNWNibE5FUzE5U1QwOVVQVndpSkZOVlVFVlNVMFZVWDFKUFQxUXZjM1Z3WlhKelpYUXRaVzFpWldSa1pXUXRjMlJyWENKY2JseHVhV1lnV3lBaElDMW1JRndpSkZORVMxOVNUMDlVTDNCaFkydGhaMlV1YW5OdmJsd2lJRjA3SUhSb1pXNWNiaUFnWldOb2J5QmNJazFwYzNOcGJtY2dVMFJMSUhCaFkydGhaMlU2SUNSVFJFdGZVazlQVkZ3aUlENG1NbHh1SUNCbGVHbDBJREZjYm1acFhHNWNibU5rSUZ3aUpGTkVTMTlTVDA5VVhDSmNibHh1Ym5CdElHTnBYRzVjYm01d2JTQnlkVzRnWW5WcGJHUmNibHh1WldOb2IxeHVaV05vYnlCY0lrVnRZbVZrWkdWa0lGTkVTeUJpZFdsc1pDQmpiMjF3YkdWMFpXUXVYQ0pjYm1WamFHOGdYQ0pQZFhSd2RYUWdaR2x5WldOMGIzSjVPbHdpWEc1bWFXNWtJQzRnWEZ4Y1hGeHVJQ0F0YldGNFpHVndkR2dnTWlCY1hGeGNYRzRnSUMxMGVYQmxJR1FnWEZ4Y1hGeHVJQ0JjWEZ4Y0tDQXRibUZ0WlNCa2FYTjBJQzF2SUMxdVlXMWxJR3hwWWlCY1hGeGNLU0JjWEZ4Y1hHNGdJQzF3Y21sdWRGeHVZRHRjYmx4dVkyOXVjM1FnUWxWSlRFUmZSbEpQVGxSRlRrUmZVMGdnUFNCZ0l5RXZkWE55TDJKcGJpOWxibllnWW1GemFGeHVYRzV6WlhRZ0xXVjFieUJ3YVhCbFptRnBiRnh1WEc1VFZWQkZVbE5GVkY5U1QwOVVQVnhjSkhzeE9qOVZjMkZuWlRvZ1luVnBiR1F0YzNWd1pYSnpaWFF0Wm5KdmJuUmxibVF1YzJnZ0wzQmhkR2d2ZEc4dmMzVndaWEp6WlhSOVhHNWNia1pTVDA1VVJVNUVYMUpQVDFROVhDSWtVMVZRUlZKVFJWUmZVazlQVkM5emRYQmxjbk5sZEMxbWNtOXVkR1Z1WkZ3aVhHNWNibWxtSUZzZ0lTQXRaaUJjSWlSR1VrOU9WRVZPUkY5U1QwOVVMM0JoWTJ0aFoyVXVhbk52Ymx3aUlGMDdJSFJvWlc1Y2JpQWdaV05vYnlCY0lrMXBjM05wYm1jZ1UzVndaWEp6WlhRZ1puSnZiblJsYm1RNklDUkdVazlPVkVWT1JGOVNUMDlVWENJZ1BpWXlYRzRnSUdWNGFYUWdNVnh1Wm1sY2JseHVZMlFnWENJa1JsSlBUbFJGVGtSZlVrOVBWRndpWEc1Y2JtNXdiU0JqYVZ4dVhHNXVjRzBnY25WdUlHSjFhV3hrWEc1Y2JtVmphRzhnWENKVGRYQmxjbk5sZENCbWNtOXVkR1Z1WkNCaWRXbHNaQ0JqYjIxd2JHVjBaV1F1WENKY2JtQTdYRzVjYm1OdmJuTjBJRkJCVkVOSVgwRk9SRjlDVlVsTVJGOVRTQ0E5SUdBaklTOTFjM0l2WW1sdUwyVnVkaUJpWVhOb1hHNWNibk5sZENBdFpYVnZJSEJwY0dWbVlXbHNYRzVjYmxOVlVFVlNVMFZVWDFKUFQxUTlYRndrZXpFNlAxVnpZV2RsT2lCd1lYUmphQzFoYm1RdFluVnBiR1F1YzJnZ0wzQmhkR2d2ZEc4dmMzVndaWEp6WlhSOVhHNWNibE5EVWtsUVZGOUVTVkk5SkNoY2JpQWdZMlFnWENJa0tHUnBjbTVoYldVZ1hDSmNYQ1I3UWtGVFNGOVRUMVZTUTBWYk1GMTlYQ0lwWENKY2JpQWdjSGRrWEc0cFhHNWNibEJTVDBwRlExUmZVazlQVkQwa0tGeHVJQ0JqWkNCY0lpUlRRMUpKVUZSZlJFbFNMeTR1WENKY2JpQWdjSGRrWEc0cFhHNWNibkI1ZEdodmJqTWdYRnhjWEZ4dUlDQmNJaVJRVWs5S1JVTlVYMUpQVDFRdmNHRjBZMmhsY3k5aGNIQnNlVjl6ZFhCbGNuTmxkRjgyWHpGZmNHRjBZMmd1Y0hsY0lpQmNYRnhjWEc0Z0lGd2lKRk5WVUVWU1UwVlVYMUpQVDFSY0lseHVYRzVjSWlSUVVrOUtSVU5VWDFKUFQxUXZjR0YwWTJobGN5OTJaWEpwWm5sZmNHRjBZMmd1YzJoY0lpQmNYRnhjWEc0Z0lGd2lKRk5WVUVWU1UwVlVYMUpQVDFSY0lseHVYRzVjSWlSVFExSkpVRlJmUkVsU0wySjFhV3hrTFhOa2F5NXphRndpSUZ4Y1hGeGNiaUFnWENJa1UxVlFSVkpUUlZSZlVrOVBWRndpWEc1Y2Jsd2lKRk5EVWtsUVZGOUVTVkl2WW5WcGJHUXRjM1Z3WlhKelpYUXRabkp2Ym5SbGJtUXVjMmhjSWlCY1hGeGNYRzRnSUZ3aUpGTlZVRVZTVTBWVVgxSlBUMVJjSWx4dVhHNWxZMmh2WEc1bFkyaHZJRndpVUdGMFkyZ2dZVzVrSUdaeWIyNTBaVzVrSUdKMWFXeGtjeUJqYjIxd2JHVjBaV1F1WENKY2JtQTdYRzVjYm1OdmJuTjBJRUpWU1V4RVgwUlBRMHRGVWw5VFNDQTlJR0FqSVM5MWMzSXZZbWx1TDJWdWRpQmlZWE5vWEc1Y2JuTmxkQ0F0WlhWdklIQnBjR1ZtWVdsc1hHNWNibE5WVUVWU1UwVlVYMUpQVDFROVhGd2tlekU2UDFWellXZGxPaUJpZFdsc1pDMWtiMk5yWlhJdGFXMWhaMlV1YzJnZ0wzQmhkR2d2ZEc4dmMzVndaWEp6WlhRZ1cybHRZV2RsTFhSaFoxMTlYRzVKVFVGSFJWOVVRVWM5WEZ3a2V6STZMV3h2WTJGc0wzTjFjR1Z5YzJWMExYTjNhWFJqYUdGaWJHVTZOaTR4TGpCOVhHNWNibE5EVWtsUVZGOUVTVkk5SkNoY2JpQWdZMlFnWENJa0tHUnBjbTVoYldVZ1hDSmNYQ1I3UWtGVFNGOVRUMVZTUTBWYk1GMTlYQ0lwWENKY2JpQWdjSGRrWEc0cFhHNWNibEJTVDBwRlExUmZVazlQVkQwa0tGeHVJQ0JqWkNCY0lpUlRRMUpKVUZSZlJFbFNMeTR1WENKY2JpQWdjSGRrWEc0cFhHNWNibkI1ZEdodmJqTWdYRnhjWEZ4dUlDQmNJaVJRVWs5S1JVTlVYMUpQVDFRdmNHRjBZMmhsY3k5aGNIQnNlVjl6ZFhCbGNuTmxkRjgyWHpGZmNHRjBZMmd1Y0hsY0lpQmNYRnhjWEc0Z0lGd2lKRk5WVUVWU1UwVlVYMUpQVDFSY0lseHVYRzVjSWlSUVVrOUtSVU5VWDFKUFQxUXZjR0YwWTJobGN5OTJaWEpwWm5sZmNHRjBZMmd1YzJoY0lpQmNYRnhjWEc0Z0lGd2lKRk5WVUVWU1UwVlVYMUpQVDFSY0lseHVYRzVqWkNCY0lpUlRWVkJGVWxORlZGOVNUMDlVWENKY2JseHVaRzlqYTJWeUlHSjFhV3hrSUZ4Y1hGeGNiaUFnTFMxMFlYSm5aWFFnYkdWaGJpQmNYRnhjWEc0Z0lDMHRkR0ZuSUZ3aUpFbE5RVWRGWDFSQlIxd2lJRnhjWEZ4Y2JpQWdMbHh1WEc1bFkyaHZJRndpUW5WcGJIUWdSRzlqYTJWeUlHbHRZV2RsT2lBa1NVMUJSMFZmVkVGSFhDSmNibUE3WEc1Y2JtTnZibk4wSUZKRlFVUk5SU0E5SUdBaklDUjdVMVZRUlZKVFJWUmZVRXhWUjBsT1gwbEVmVnh1WEc1TmRXeDBhUzEwWlc1aGJuUXNJRzl5WnkxaFoyNXZjM1JwWXlCVGRYQmxjbk5sZENCa1lYTm9ZbTloY21RZ1pXMWlaV1FnY0d4MVoybHVJQ2h3WVhSamFDMWhibVF0WW5WcGJHUWdjM1J5WVhSbFoza3BMbHh1WEc1VWFHbHpJR2x6SUc1dmRDQmhJR2RsYm1WeVlYUmxaQ0J3YkhWbmFXNGdiR2xyWlNCMGFHVWdTMmxpWVc1aElIWmhjbWxoYm5RdUlFbHVjM1JsWVdRc0lFUmxZMkZtSUdodmJHUnpYRzV3WVhSamFDQnpZM0pwY0hSeklIUm9ZWFFnYlc5a2FXWjVJRk4xY0dWeWMyVjBKM01nYVc1MFpYSnVZV3dnWlcxaVpXUmtaV1FnWm5KdmJuUmxibVFnWVc1a0lHVnRZbVZrWkdWa1hHNVRSRXNnYzI5MWNtTmxJR1pwYkdWeklIUnZJR0ZrWkNCaElGeGNZSE4zYVhSamFFUmhjMmhpYjJGeVpGeGNZQ0J0WlhSb2IyUXVJRlJvWlNCbGVHbHpkR2x1WnlCcFpuSmhiV1ZjYm1Wc1pXMWxiblFzSUdSdlkzVnRaVzUwTENCamIyNTBaVzUwVjJsdVpHOTNMQ0JTWldGamRDQnlkVzUwYVcxbExDQmhibVFnVTNkcGRHTm9ZbTloY21RZ1RXVnpjMkZuWlVOb1lXNXVaV3hjYm1GeVpTQndjbVZ6WlhKMlpXUWdZV055YjNOeklHUmhjMmhpYjJGeVpDQnpkMmwwWTJobGN5NWNibHh1SXlNZ1YyaGhkQ0JwZENCd1lYUmphR1Z6WEc1Y2JpMGdYRnhnYzNWd1pYSnpaWFF0Wm5KdmJuUmxibVF2YzNKakwyVnRZbVZrWkdWa0wybHVaR1Y0TG5SemVGeGNZQ0RpZ0pRZ1lXUmtjeUJjWEdCemQybDBZMmhFWVhOb1ltOWhjbVJjWEdBZ2RHOGdkR2hsWEc0Z0lGTjNhWFJqYUdKdllYSmtJR05vWVc1dVpXdzdJSEpsY0d4aFkyVnpJRzl1YkhrZ1hGeGdSR0Z6YUdKdllYSmtVR0ZuWlZ4Y1lDNWNiaTBnWEZ4Z2MzVndaWEp6WlhRdFpXMWlaV1JrWldRdGMyUnJMM055WXk5cGJtUmxlQzUwYzF4Y1lDRGlnSlFnWVdSa2MxeHVJQ0JjWEdCbGJXSmxaR1JsWkVSaGMyaGliMkZ5WkM1emQybDBZMmhFWVhOb1ltOWhjbVFvWkdGemFHSnZZWEprU1dRcFhGeGdPeUJ5WlhGMVpYTjBjeUJoSUdkMVpYTjBJSFJ2YTJWdUlHWnZjbHh1SUNCMGFHVWdjMlZzWldOMFpXUWdaR0Z6YUdKdllYSmtPeUJ5WldaeVpYTm9aWE1nWm5WMGRYSmxJR2QxWlhOMElIUnZhMlZ1Y3lCbWIzSWdkR2hsSUdGamRHbDJaU0JrWVhOb1ltOWhjbVF1WEc1Y2JpTWpJRUoxYVd4a1hHNWNibHhjWUZ4Y1lGeGNZR0poYzJoY2JpTWdRWEJ3YkhrZ2NHRjBZMmdnS3lCMlpYSnBabmtnS3lCaWRXbHNaQ0JUUkVzZ0t5QmlkV2xzWkNCbWNtOXVkR1Z1WkZ4dVluVnBiR1F2Y0dGMFkyZ3RZVzVrTFdKMWFXeGtMbk5vSUM5d1lYUm9MM1J2TDNOMWNHVnljMlYwWEc1Y2JpTWdUM0lnWW5WcGJHUWdZU0JFYjJOclpYSWdhVzFoWjJWY2JtSjFhV3hrTDJKMWFXeGtMV1J2WTJ0bGNpMXBiV0ZuWlM1emFDQXZjR0YwYUM5MGJ5OXpkWEJsY25ObGRDQnlaV2RwYzNSeWVTNWxlR0Z0Y0d4bExtTnZiUzl6ZFhCbGNuTmxkQzF6ZDJsMFkyaGhZbXhsT2pZdU1TNHdYRzVjWEdCY1hHQmNYR0JjYmx4dVZHaGxJSEJoZEdOb1pXUWdVMFJMSUcxMWMzUWdZbVVnY0dGamEyVmtJR0Z1WkNCcGJuTjBZV3hzWldRZ2FXNTBieUIwYUdVZ1FXNW5kV3hoY2lCaGNIQnNhV05oZEdsdmJqcGNibHh1WEZ4Z1hGeGdYRnhnWW1GemFGeHVZMlFnTDNCaGRHZ3ZkRzh2YzNWd1pYSnpaWFF2YzNWd1pYSnpaWFF0WlcxaVpXUmtaV1F0YzJSclhHNXVjRzBnWTJrZ0ppWWdibkJ0SUhKMWJpQmlkV2xzWkNBbUppQnVjRzBnY0dGamExeHVZMlFnTDNCaGRHZ3ZkRzh2WVc1bmRXeGhjaTFoY0hCY2JtNXdiU0JwYm5OMFlXeHNJQzl3WVhSb0wzUnZMM04xY0dWeWMyVjBMM04xY0dWeWMyVjBMV1Z0WW1Wa1pHVmtMWE5rYXk5emRYQmxjbk5sZEMxMWFTMWxiV0psWkdSbFpDMXpaR3N0S2k1MFozcGNibHhjWUZ4Y1lGeGNZRnh1WEc1V1pYSnphVzl1T2lBa2UxTlZVRVZTVTBWVVgxQk1WVWRKVGw5V1JWSlRTVTlPZlZ4dVlEdGNibHh1THlvcVhHNGdLaUJTWlhSMWNtNXpJSFJvWlNCbWRXeHNJSE5sZENCdlppQndZWFJqYUNCaGJtUWdZblZwYkdRZ2MyTnlhWEIwSUdacGJHVnpMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2MzVndaWEp6WlhSUVlYUmphRVpwYkdWektDazZJRk4xY0dWeWMyVjBVR0YwWTJoR2FXeGxXMTBnZTF4dUlDQnlaWFIxY200Z1cxeHVJQ0FnSUhzZ2NHRjBhRG9nWENKd1lYUmphR1Z6TDJGd2NHeDVYM04xY0dWeWMyVjBYelpmTVY5d1lYUmphQzV3ZVZ3aUxDQmpiMjUwWlc1ME9pQkJVRkJNV1Y5UVFWUkRTRjlRV1N3Z1pYaGxZM1YwWVdKc1pUb2dkSEoxWlNCOUxGeHVJQ0FnSUhzZ2NHRjBhRG9nWENKd1lYUmphR1Z6TDNabGNtbG1lVjl3WVhSamFDNXphRndpTENCamIyNTBaVzUwT2lCV1JWSkpSbGxmVUVGVVEwaGZVMGdzSUdWNFpXTjFkR0ZpYkdVNklIUnlkV1VnZlN4Y2JpQWdJQ0I3SUhCaGRHZzZJRndpWW5WcGJHUXZZblZwYkdRdGMyUnJMbk5vWENJc0lHTnZiblJsYm5RNklFSlZTVXhFWDFORVMxOVRTQ3dnWlhobFkzVjBZV0pzWlRvZ2RISjFaU0I5TEZ4dUlDQWdJSHNnY0dGMGFEb2dYQ0ppZFdsc1pDOWlkV2xzWkMxemRYQmxjbk5sZEMxbWNtOXVkR1Z1WkM1emFGd2lMQ0JqYjI1MFpXNTBPaUJDVlVsTVJGOUdVazlPVkVWT1JGOVRTQ3dnWlhobFkzVjBZV0pzWlRvZ2RISjFaU0I5TEZ4dUlDQWdJSHNnY0dGMGFEb2dYQ0ppZFdsc1pDOXdZWFJqYUMxaGJtUXRZblZwYkdRdWMyaGNJaXdnWTI5dWRHVnVkRG9nVUVGVVEwaGZRVTVFWDBKVlNVeEVYMU5JTENCbGVHVmpkWFJoWW14bE9pQjBjblZsSUgwc1hHNGdJQ0FnZXlCd1lYUm9PaUJjSW1KMWFXeGtMMkoxYVd4a0xXUnZZMnRsY2kxcGJXRm5aUzV6YUZ3aUxDQmpiMjUwWlc1ME9pQkNWVWxNUkY5RVQwTkxSVkpmVTBnc0lHVjRaV04xZEdGaWJHVTZJSFJ5ZFdVZ2ZTeGNiaUFnSUNCN0lIQmhkR2c2SUZ3aVVrVkJSRTFGTG0xa1hDSXNJR052Ym5SbGJuUTZJRkpGUVVSTlJTQjlMRnh1SUNCZE8xeHVmVnh1SWwxOSJdfQ==
837
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3BsdWdpbnMvc3VwZXJzZXQvdGVtcGxhdGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsdUJBQXVCLEVBQUUsc0JBQW1CO0FBV3pFLE1BQU0sY0FBYyxHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQWdtQnRCLENBQUM7QUFFRixNQUFNLGVBQWUsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0F5Q3ZCLENBQUM7QUFFRixNQUFNLFlBQVksR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBMkJwQixDQUFDO0FBRUYsTUFBTSxpQkFBaUIsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FvQnpCLENBQUM7QUFFRixNQUFNLGtCQUFrQixHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBK0IxQixDQUFDO0FBRUYsTUFBTSxlQUFlLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBZ0N2QixDQUFDO0FBRUYsTUFBTSxNQUFNLEdBQUcsS0FBSyxrQkFBa0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7V0FxQzNCLHVCQUF1QjtDQUNqQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCO0lBQ2hDLE9BQU87UUFDTCxFQUFFLElBQUksRUFBRSxxQ0FBcUMsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7UUFDMUYsRUFBRSxJQUFJLEVBQUUseUJBQXlCLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFO1FBQy9FLEVBQUUsSUFBSSxFQUFFLG9CQUFvQixFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTtRQUN2RSxFQUFFLElBQUksRUFBRSxrQ0FBa0MsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTtRQUMxRixFQUFFLElBQUksRUFBRSwwQkFBMEIsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTtRQUNuRixFQUFFLElBQUksRUFBRSw2QkFBNkIsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7UUFDbkYsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUU7S0FDdkMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL3BsdWdpbnMvc3VwZXJzZXQvdGVtcGxhdGVzXG4gKiBAc3VtbWFyeSBQYXRjaCBhbmQgYnVpbGQgc2NyaXB0IHRlbXBsYXRlcyBmb3IgdGhlIFN1cGVyc2V0IGVtYmVkIHBsdWdpbi5cbiAqIEBkZXNjcmlwdGlvbiBIb2xkcyBhbGwgcGF0Y2ggc2NyaXB0cyAoUHl0aG9uICsgQmFzaCkgYW5kIGJ1aWxkIHNjcmlwdHMgYXNcbiAqIHN0cmluZyB0ZW1wbGF0ZXMuIFRoZXNlIGFyZSBtYXRlcmlhbGl6ZWQgb250byBkaXNrIGJ5IHRoZSBpbnN0YWxsZXIuIERlY2FmXG4gKiBkb2VzIG5vdCBnZW5lcmF0ZSBuZXcgU3VwZXJzZXQgc291cmNlIOKAlCBpdCBwYXRjaGVzIGV4aXN0aW5nIGludGVybmFsIGZpbGVzXG4gKiAoYHN1cGVyc2V0LWZyb250ZW5kL3NyYy9lbWJlZGRlZC9pbmRleC50c3hgIGFuZFxuICogYHN1cGVyc2V0LWVtYmVkZGVkLXNkay9zcmMvaW5kZXgudHNgKSBmb2xsb3dpbmcgdGhlIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvblxuICogZnJvbSBERUNBRi00MCDCpzkuXG4gKlxuICogVGhlIHBhdGNoIGFkZHMgYSBgc3dpdGNoRGFzaGJvYXJkYCBtZXRob2QgdG8gU3VwZXJzZXQncyBleGlzdGluZyBTd2l0Y2hib2FyZFxuICogY2hhbm5lbCwgcmVwbGFjaW5nIG9ubHkgYERhc2hib2FyZFBhZ2VgIHdoaWxlIGtlZXBpbmcgdGhlIGlmcmFtZSBlbGVtZW50LFxuICogZG9jdW1lbnQsIGNvbnRlbnRXaW5kb3csIFJlYWN0IHJ1bnRpbWUsIGFuZCBtZXNzYWdlIGNoYW5uZWwgYWxpdmUuXG4gKi9cbmltcG9ydCB7IFNVUEVSU0VUX1BMVUdJTl9JRCwgU1VQRVJTRVRfUExVR0lOX1ZFUlNJT04gfSBmcm9tIFwiLi9tYW5pZmVzdFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN1cGVyc2V0UGF0Y2hGaWxlIHtcbiAgLyoqIFJlbGF0aXZlIHBhdGggd2l0aGluIHRoZSB0YXJnZXQgZGlyZWN0b3J5LiAqL1xuICBwYXRoOiBzdHJpbmc7XG4gIC8qKiBGaWxlIGNvbnRlbnRzLiAqL1xuICBjb250ZW50OiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHRvIG1hcmsgdGhlIGZpbGUgZXhlY3V0YWJsZSBvbiBQT1NJWC4gKi9cbiAgZXhlY3V0YWJsZT86IGJvb2xlYW47XG59XG5cbmNvbnN0IEFQUExZX1BBVENIX1BZID0gYCMhL3Vzci9iaW4vZW52IHB5dGhvbjNcblxuZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhbm5vdGF0aW9uc1xuXG5pbXBvcnQgYXJncGFyc2VcbmltcG9ydCByZVxuaW1wb3J0IHN5c1xuZnJvbSBwYXRobGliIGltcG9ydCBQYXRoXG5cblxuRlJPTlRFTkRfRklMRSA9IFBhdGgoXCJzdXBlcnNldC1mcm9udGVuZC9zcmMvZW1iZWRkZWQvaW5kZXgudHN4XCIpXG5TREtfRklMRSA9IFBhdGgoXCJzdXBlcnNldC1lbWJlZGRlZC1zZGsvc3JjL2luZGV4LnRzXCIpXG5cblxuY2xhc3MgUGF0Y2hFcnJvcihSdW50aW1lRXJyb3IpOlxuICAgIHBhc3NcblxuXG5kZWYgcmVwbGFjZV9vbmNlKFxuICAgIGNvbnRlbnQ6IHN0cixcbiAgICBvbGQ6IHN0cixcbiAgICBuZXc6IHN0cixcbiAgICBkZXNjcmlwdGlvbjogc3RyLFxuKSAtPiBzdHI6XG4gICAgY291bnQgPSBjb250ZW50LmNvdW50KG9sZClcblxuICAgIGlmIGNvdW50ICE9IDE6XG4gICAgICAgIHJhaXNlIFBhdGNoRXJyb3IoXG4gICAgICAgICAgICBmXCJ7ZGVzY3JpcHRpb259OiBleHBlY3RlZCBleGFjdGx5IG9uZSBvY2N1cnJlbmNlLCBmb3VuZCB7Y291bnR9XCJcbiAgICAgICAgKVxuXG4gICAgcmV0dXJuIGNvbnRlbnQucmVwbGFjZShvbGQsIG5ldywgMSlcblxuXG5kZWYgcmVwbGFjZV9yZWdleF9vbmNlKFxuICAgIGNvbnRlbnQ6IHN0cixcbiAgICBwYXR0ZXJuOiByZS5QYXR0ZXJuW3N0cl0sXG4gICAgcmVwbGFjZW1lbnQ6IHN0cixcbiAgICBkZXNjcmlwdGlvbjogc3RyLFxuKSAtPiBzdHI6XG4gICAgdXBkYXRlZCwgY291bnQgPSBwYXR0ZXJuLnN1Ym4ocmVwbGFjZW1lbnQsIGNvbnRlbnQsIGNvdW50PTEpXG5cbiAgICBpZiBjb3VudCAhPSAxOlxuICAgICAgICByYWlzZSBQYXRjaEVycm9yKFxuICAgICAgICAgICAgZlwie2Rlc2NyaXB0aW9ufTogZXhwZWN0ZWQgZXhhY3RseSBvbmUgbWF0Y2gsIGZvdW5kIHtjb3VudH1cIlxuICAgICAgICApXG5cbiAgICByZXR1cm4gdXBkYXRlZFxuXG5cbmRlZiBwYXRjaF9yZWFjdF9pbXBvcnQoY29udGVudDogc3RyKSAtPiBzdHI6XG4gICAgcmVhY3RfaW1wb3J0X3BhdHRlcm4gPSByZS5jb21waWxlKFxuICAgICAgICByXCJpbXBvcnRcXFxccypcXFxce1xcXFxzKihbXn1dKylcXFxccypcXFxcfVxcXFxzKmZyb21cXFxccyoncmVhY3QnO1wiXG4gICAgKVxuXG4gICAgbWF0Y2ggPSByZWFjdF9pbXBvcnRfcGF0dGVybi5zZWFyY2goY29udGVudClcblxuICAgIGlmIG5vdCBtYXRjaDpcbiAgICAgICAgcmFpc2UgUGF0Y2hFcnJvcihcIkNvdWxkIG5vdCBsb2NhdGUgdGhlIG5hbWVkIFJlYWN0IGltcG9ydFwiKVxuXG4gICAgaW1wb3J0cyA9IFtcbiAgICAgICAgdmFsdWUuc3RyaXAoKVxuICAgICAgICBmb3IgdmFsdWUgaW4gbWF0Y2guZ3JvdXAoMSkucmVwbGFjZShcIlxcXFxuXCIsIFwiIFwiKS5zcGxpdChcIixcIilcbiAgICAgICAgaWYgdmFsdWUuc3RyaXAoKVxuICAgIF1cblxuICAgIHJlcXVpcmVkX2ltcG9ydHMgPSBbXCJsYXp5XCIsIFwiU3VzcGVuc2VcIiwgXCJ1c2VFZmZlY3RcIiwgXCJ1c2VTdGF0ZVwiXVxuXG4gICAgZm9yIHJlcXVpcmVkX2ltcG9ydCBpbiByZXF1aXJlZF9pbXBvcnRzOlxuICAgICAgICBpZiByZXF1aXJlZF9pbXBvcnQgbm90IGluIGltcG9ydHM6XG4gICAgICAgICAgICBpbXBvcnRzLmFwcGVuZChyZXF1aXJlZF9pbXBvcnQpXG5cbiAgICByZXBsYWNlbWVudCA9IChcbiAgICAgICAgXCJpbXBvcnQge1xcXFxuICBcIlxuICAgICAgICArIFwiLFxcXFxuICBcIi5qb2luKGltcG9ydHMpXG4gICAgICAgICsgXCIsXFxcXG59IGZyb20gJ3JlYWN0JztcIlxuICAgIClcblxuICAgIHJldHVybiAoXG4gICAgICAgIGNvbnRlbnRbOiBtYXRjaC5zdGFydCgpXVxuICAgICAgICArIHJlcGxhY2VtZW50XG4gICAgICAgICsgY29udGVudFttYXRjaC5lbmQoKSA6XVxuICAgIClcblxuXG5kZWYgbG9jYXRlX2VtYmVkZGVkX2NvbXBvbmVudChcbiAgICBjb250ZW50OiBzdHIsXG4pIC0+IHR1cGxlW3JlLk1hdGNoW3N0cl0sIHN0cl06XG4gICAgcGF0dGVybiA9IHJlLmNvbXBpbGUoXG4gICAgICAgIHJcImNvbnN0XFxcXHMrKFtBLVphLXowLTlfXSspXFxcXHMqPVxcXFxzKlxcXFwoXFxcXClcXFxccyo9PlxcXFxzKlxcXFx7Lio/XFxcXH07XFxcXHMqXCJcbiAgICAgICAgclwiKD89Y29uc3RcXFxccytFbWJlZGRlZFJvdXRlKVwiLFxuICAgICAgICByZS5ET1RBTEwsXG4gICAgKVxuXG4gICAgbWF0Y2ggPSBwYXR0ZXJuLnNlYXJjaChjb250ZW50KVxuXG4gICAgaWYgbWF0Y2g6XG4gICAgICAgIHJldHVybiBtYXRjaCwgbWF0Y2guZ3JvdXAoMSlcblxuICAgIHJhaXNlIFBhdGNoRXJyb3IoXG4gICAgICAgIFwiQ291bGQgbm90IGZpbmQgYW4gZW1iZWRkZWQgZGFzaGJvYXJkIGNvbXBvbmVudCBiZWZvcmUgRW1iZWRkZWRSb3V0ZVwiXG4gICAgKVxuXG5cbmRlZiBwYXRjaF9mcm9udGVuZChmcm9udGVuZF9wYXRoOiBQYXRoKSAtPiBOb25lOlxuICAgIGNvbnRlbnQgPSBmcm9udGVuZF9wYXRoLnJlYWRfdGV4dChlbmNvZGluZz1cInV0Zi04XCIpXG5cbiAgICBpZiBcIlNVUEVSU0VUX1NXSVRDSEFCTEVfRU1CRURfUEFUQ0hcIiBpbiBjb250ZW50OlxuICAgICAgICBwcmludChmXCJBbHJlYWR5IHBhdGNoZWQ6IHtmcm9udGVuZF9wYXRofVwiKVxuICAgICAgICByZXR1cm5cblxuICAgIGNvbnRlbnQgPSBwYXRjaF9yZWFjdF9pbXBvcnQoY29udGVudClcblxuICAgIGNvbXBvbmVudF9tYXRjaCwgY29tcG9uZW50X25hbWUgPSBsb2NhdGVfZW1iZWRkZWRfY29tcG9uZW50KFxuICAgICAgICBjb250ZW50XG4gICAgKVxuXG4gICAgcmVwbGFjZW1lbnRfY29tcG9uZW50ID0gXCJcIlwiLy8gU1VQRVJTRVRfU1dJVENIQUJMRV9FTUJFRF9QQVRDSFxuLy9cbi8vIEFsbG93cyB0aGUgZXhpc3RpbmcgZW1iZWRkZWQgU3VwZXJzZXQgZG9jdW1lbnQgdG8gcmVwbGFjZSBEYXNoYm9hcmRQYWdlXG4vLyB3aXRob3V0IG5hdmlnYXRpbmcgb3IgcmVjcmVhdGluZyB0aGUgaWZyYW1lLlxuLy9cbi8vIFNlY3VyaXR5OlxuLy8gLSBUaGlzIG1ldGhvZCBpcyBleHBvc2VkIG9ubHkgdGhyb3VnaCBTdXBlcnNldCdzIGV4aXN0aW5nIFN3aXRjaGJvYXJkXG4vLyAgIE1lc3NhZ2VDaGFubmVsLlxuLy8gLSBUaGUgaG9zdCBhcHBsaWNhdGlvbiBtdXN0IG9idGFpbiBhIGd1ZXN0IHRva2VuIGZvciB0aGUgdGFyZ2V0IGRhc2hib2FyZC5cbi8vIC0gU3VwZXJzZXQncyBub3JtYWwgQWxsb3dlZCBEb21haW5zIHZhbGlkYXRpb24gcmVtYWlucyBpbiBlZmZlY3QuXG5cbmludGVyZmFjZSBTd2l0Y2hEYXNoYm9hcmRQYXlsb2FkIHtcbiAgZGFzaGJvYXJkSWQ6IHN0cmluZztcbiAgZ3Vlc3RUb2tlbjogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgU3dpdGNoRGFzaGJvYXJkUmVzdWx0IHtcbiAgZGFzaGJvYXJkSWQ6IHN0cmluZztcbiAgYWNjZXB0ZWQ6IHRydWU7XG59XG5cbnR5cGUgRGFzaGJvYXJkU3dpdGNoSGFuZGxlciA9IChcbiAgcGF5bG9hZDogU3dpdGNoRGFzaGJvYXJkUGF5bG9hZCxcbikgPT4gUHJvbWlzZTxTd2l0Y2hEYXNoYm9hcmRSZXN1bHQ+O1xuXG5sZXQgZGFzaGJvYXJkU3dpdGNoSGFuZGxlcjogRGFzaGJvYXJkU3dpdGNoSGFuZGxlciB8IHVuZGVmaW5lZDtcblxuY29uc3QgX19DT01QT05FTlRfTkFNRV9fID0gKCkgPT4ge1xuICBjb25zdCB1aUNvbmZpZyA9IHVzZVVpQ29uZmlnKCk7XG5cbiAgY29uc3QgW2Rhc2hib2FyZElkLCBzZXREYXNoYm9hcmRJZF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihcbiAgICBib290c3RyYXBEYXRhLmVtYmVkZGVkIS5kYXNoYm9hcmRfaWQsXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkYXNoYm9hcmRTd2l0Y2hIYW5kbGVyID0gYXN5bmMgKHtcbiAgICAgIGRhc2hib2FyZElkOiByZXF1ZXN0ZWREYXNoYm9hcmRJZCxcbiAgICAgIGd1ZXN0VG9rZW4sXG4gICAgfTogU3dpdGNoRGFzaGJvYXJkUGF5bG9hZCkgPT4ge1xuICAgICAgY29uc3QgbmV4dERhc2hib2FyZElkID0gcmVxdWVzdGVkRGFzaGJvYXJkSWQudHJpbSgpO1xuXG4gICAgICBpZiAoIW5leHREYXNoYm9hcmRJZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ2Rhc2hib2FyZElkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICB0eXBlb2YgZ3Vlc3RUb2tlbiAhPT0gJ3N0cmluZycgfHxcbiAgICAgICAgZ3Vlc3RUb2tlbi50cmltKCkubGVuZ3RoID09PSAwXG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdndWVzdFRva2VuIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgc2V0RGFzaGJvYXJkSWQobnVsbCk7XG5cbiAgICAgIGRpc3BsYXllZFVuYXV0aG9yaXplZFRvYXN0ID0gZmFsc2U7XG5cbiAgICAgIHNldHVwR3Vlc3RDbGllbnQoZ3Vlc3RUb2tlbik7XG5cbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHJlc29sdmUoKSk7XG4gICAgICB9KTtcblxuICAgICAgc2V0RGFzaGJvYXJkSWQobmV4dERhc2hib2FyZElkKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGFzaGJvYXJkSWQ6IG5leHREYXNoYm9hcmRJZCxcbiAgICAgICAgYWNjZXB0ZWQ6IHRydWUsXG4gICAgICB9O1xuICAgIH07XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZGFzaGJvYXJkU3dpdGNoSGFuZGxlciA9IHVuZGVmaW5lZDtcbiAgICB9O1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXVpQ29uZmlnPy5lbWl0RGF0YU1hc2tzKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGxldCBwcmV2aW91c0RhdGFNYXNrID0gc3RvcmUuZ2V0U3RhdGUoKS5kYXRhTWFzaztcblxuICAgIHJldHVybiBzdG9yZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29uc3QgY3VycmVudERhdGFNYXNrID0gc3RvcmUuZ2V0U3RhdGUoKS5kYXRhTWFzaztcblxuICAgICAgaWYgKHByZXZpb3VzRGF0YU1hc2sgIT09IGN1cnJlbnREYXRhTWFzaykge1xuICAgICAgICBTd2l0Y2hib2FyZC5lbWl0KCdvYnNlcnZlRGF0YU1hc2snLCB7XG4gICAgICAgICAgLi4uY3VycmVudERhdGFNYXNrLFxuICAgICAgICAgIC4uLmdldERhdGFNYXNrQ2hhbmdlVHJpZ2dlcihcbiAgICAgICAgICAgIGN1cnJlbnREYXRhTWFzayxcbiAgICAgICAgICAgIHByZXZpb3VzRGF0YU1hc2ssXG4gICAgICAgICAgKSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcHJldmlvdXNEYXRhTWFzayA9IGN1cnJlbnREYXRhTWFzaztcbiAgICAgIH1cbiAgICB9KTtcbiAgfSwgW3VpQ29uZmlnPy5lbWl0RGF0YU1hc2tzXSk7XG5cbiAgaWYgKCFkYXNoYm9hcmRJZCkge1xuICAgIHJldHVybiA8TG9hZGluZyAvPjtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPExhenlEYXNoYm9hcmRQYWdlXG4gICAgICBrZXk9e2Rhc2hib2FyZElkfVxuICAgICAgaWRPclNsdWc9e2Rhc2hib2FyZElkfVxuICAgIC8+XG4gICk7XG59O1xuXCJcIlwiLnJlcGxhY2UoXCJfX0NPTVBPTkVOVF9OQU1FX19cIiwgY29tcG9uZW50X25hbWUpXG5cbiAgICBjb250ZW50ID0gKFxuICAgICAgICBjb250ZW50WzogY29tcG9uZW50X21hdGNoLnN0YXJ0KCldXG4gICAgICAgICsgcmVwbGFjZW1lbnRfY29tcG9uZW50XG4gICAgICAgICsgY29udGVudFtjb21wb25lbnRfbWF0Y2guZW5kKCkgOl1cbiAgICApXG5cbiAgICBzd2l0Y2hib2FyZF9hbmNob3JfY2FuZGlkYXRlcyA9IFtcbiAgICAgICAgKFxuICAgICAgICAgICAgXCIgICAgU3dpdGNoYm9hcmQuZGVmaW5lTWV0aG9kKFwiXG4gICAgICAgICAgICBcIidnZXRTY3JvbGxTaXplJywgZW1iZWRkZWRBcGkuZ2V0U2Nyb2xsU2l6ZSk7XCJcbiAgICAgICAgKSxcbiAgICAgICAgKFxuICAgICAgICAgICAgXCIgICAgU3dpdGNoYm9hcmQuZGVmaW5lTWV0aG9kKFxcXFxuXCJcbiAgICAgICAgICAgIFwiICAgICAgJ2dldFNjcm9sbFNpemUnLFxcXFxuXCJcbiAgICAgICAgICAgIFwiICAgICAgZW1iZWRkZWRBcGkuZ2V0U2Nyb2xsU2l6ZSxcXFxcblwiXG4gICAgICAgICAgICBcIiAgICApO1wiXG4gICAgICAgICksXG4gICAgXVxuXG4gICAgc3dpdGNoYm9hcmRfbWV0aG9kID0gXCJcIlwiICAgIFN3aXRjaGJvYXJkLmRlZmluZU1ldGhvZChcbiAgICAgICdzd2l0Y2hEYXNoYm9hcmQnLFxuICAgICAgYXN5bmMgKFxuICAgICAgICBwYXlsb2FkOiBTd2l0Y2hEYXNoYm9hcmRQYXlsb2FkLFxuICAgICAgKTogUHJvbWlzZTxTd2l0Y2hEYXNoYm9hcmRSZXN1bHQ+ID0+IHtcbiAgICAgICAgaWYgKCFkYXNoYm9hcmRTd2l0Y2hIYW5kbGVyKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgJ1RoZSBlbWJlZGRlZCBkYXNoYm9hcmQgaXMgbm90IHJlYWR5IHRvIHN3aXRjaCcsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkYXNoYm9hcmRTd2l0Y2hIYW5kbGVyKHBheWxvYWQpO1xuICAgICAgfSxcbiAgICApO1xuXG5cIlwiXCJcblxuICAgIGFuY2hvcl9mb3VuZCA9IEZhbHNlXG5cbiAgICBmb3IgYW5jaG9yIGluIHN3aXRjaGJvYXJkX2FuY2hvcl9jYW5kaWRhdGVzOlxuICAgICAgICBpZiBjb250ZW50LmNvdW50KGFuY2hvcikgPT0gMTpcbiAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgYW5jaG9yLFxuICAgICAgICAgICAgICAgIHN3aXRjaGJvYXJkX21ldGhvZCArIGFuY2hvcixcbiAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgYW5jaG9yX2ZvdW5kID0gVHJ1ZVxuICAgICAgICAgICAgYnJlYWtcblxuICAgIGlmIG5vdCBhbmNob3JfZm91bmQ6XG4gICAgICAgIHJhaXNlIFBhdGNoRXJyb3IoXG4gICAgICAgICAgICBcIkNvdWxkIG5vdCBsb2NhdGUgdGhlIGdldFNjcm9sbFNpemUgU3dpdGNoYm9hcmQgbWV0aG9kXCJcbiAgICAgICAgKVxuXG4gICAgZnJvbnRlbmRfcGF0aC53cml0ZV90ZXh0KGNvbnRlbnQsIGVuY29kaW5nPVwidXRmLThcIilcbiAgICBwcmludChmXCJQYXRjaGVkOiB7ZnJvbnRlbmRfcGF0aH1cIilcblxuXG5kZWYgcGF0Y2hfZ3Vlc3RfdG9rZW5fZmV0Y2hfdHlwZShjb250ZW50OiBzdHIpIC0+IHN0cjpcbiAgICBjYW5kaWRhdGVzID0gW1xuICAgICAgICBcImV4cG9ydCB0eXBlIEd1ZXN0VG9rZW5GZXRjaEZuID0gKCkgPT4gUHJvbWlzZTxzdHJpbmc+O1wiLFxuICAgICAgICAoXG4gICAgICAgICAgICBcImV4cG9ydCB0eXBlIEd1ZXN0VG9rZW5GZXRjaEZuID0gXCJcbiAgICAgICAgICAgIFwiKCkgPT4gUHJvbWlzZTxzdHJpbmc+O1wiXG4gICAgICAgICksXG4gICAgXVxuXG4gICAgcmVwbGFjZW1lbnQgPSBcIlwiXCIvLyBTVVBFUlNFVF9TV0lUQ0hBQkxFX0VNQkVEX1NES19QQVRDSFxuLy9cbi8vIGRhc2hib2FyZElkIGlzIHVuZGVmaW5lZCBmb3IgdGhlIGluaXRpYWwgZGFzaGJvYXJkIGJvb3RzdHJhcC5cbi8vIEFmdGVyIGEgc3VjY2Vzc2Z1bCBkYXNoYm9hcmQgc3dpdGNoLCB0b2tlbiByZWZyZXNoZXMgcmVjZWl2ZSB0aGUgYWN0aXZlXG4vLyBkYXNoYm9hcmQgVVVJRC5cbmV4cG9ydCB0eXBlIEd1ZXN0VG9rZW5GZXRjaEZuID0gKFxuICBkYXNoYm9hcmRJZD86IHN0cmluZyxcbikgPT4gUHJvbWlzZTxzdHJpbmc+O1wiXCJcIlxuXG4gICAgZm9yIGNhbmRpZGF0ZSBpbiBjYW5kaWRhdGVzOlxuICAgICAgICBpZiBjb250ZW50LmNvdW50KGNhbmRpZGF0ZSkgPT0gMTpcbiAgICAgICAgICAgIHJldHVybiBjb250ZW50LnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgY2FuZGlkYXRlLFxuICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50LFxuICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICApXG5cbiAgICByYWlzZSBQYXRjaEVycm9yKFwiQ291bGQgbm90IGxvY2F0ZSBHdWVzdFRva2VuRmV0Y2hGblwiKVxuXG5cbmRlZiBwYXRjaF9lbWJlZGRlZF9kYXNoYm9hcmRfdHlwZShjb250ZW50OiBzdHIpIC0+IHN0cjpcbiAgICB0eXBlX3BhdHRlcm4gPSByZS5jb21waWxlKFxuICAgICAgICByXCIoZXhwb3J0XFxcXHMrKD86aW50ZXJmYWNlfHR5cGUpXFxcXHMrRW1iZWRkZWREYXNoYm9hcmRcIlxuICAgICAgICByXCIuKj9cXFxceykoLio/KShcXFxcblxcXFx9OylcIixcbiAgICAgICAgcmUuRE9UQUxMLFxuICAgIClcblxuICAgIG1hdGNoID0gdHlwZV9wYXR0ZXJuLnNlYXJjaChjb250ZW50KVxuXG4gICAgaWYgbm90IG1hdGNoOlxuICAgICAgICByYWlzZSBQYXRjaEVycm9yKFxuICAgICAgICAgICAgXCJDb3VsZCBub3QgbG9jYXRlIHRoZSBFbWJlZGRlZERhc2hib2FyZCBwdWJsaWMgdHlwZVwiXG4gICAgICAgIClcblxuICAgIGJvZHkgPSBtYXRjaC5ncm91cCgyKVxuXG4gICAgaWYgXCJzd2l0Y2hEYXNoYm9hcmQ6XCIgaW4gYm9keTpcbiAgICAgICAgcmV0dXJuIGNvbnRlbnRcblxuICAgIG1ldGhvZCA9IFwiXCJcIlxuICAvKipcbiAgICogUmVwbGFjZXMgRGFzaGJvYXJkUGFnZSBpbiB0aGUgZXhpc3RpbmcgaWZyYW1lIGRvY3VtZW50LlxuICAgKlxuICAgKiBUaGUgdmFsdWUgbXVzdCBiZSB0aGUgdGFyZ2V0IGRhc2hib2FyZCBVVUlEL2lkIGFjY2VwdGVkIGJ5XG4gICAqIERhc2hib2FyZFBhZ2UsIG5vdCB0aGUgZW1iZWRkZWQtY29uZmlndXJhdGlvbiBVVUlEIHVzZWQgaW4gdGhlXG4gICAqIGluaXRpYWwgL2VtYmVkZGVkLzp1dWlkIFVSTC5cbiAgICovXG4gIHN3aXRjaERhc2hib2FyZDogKFxuICAgIGRhc2hib2FyZElkOiBzdHJpbmcsXG4gICkgPT4gUHJvbWlzZTx7XG4gICAgZGFzaGJvYXJkSWQ6IHN0cmluZztcbiAgICBhY2NlcHRlZDogdHJ1ZTtcbiAgfT47XG5cIlwiXCJcblxuICAgIHVwZGF0ZWRfdHlwZSA9IChcbiAgICAgICAgbWF0Y2guZ3JvdXAoMSlcbiAgICAgICAgKyBib2R5LnJzdHJpcCgpXG4gICAgICAgICsgXCJcXFxcblwiXG4gICAgICAgICsgbWV0aG9kLnJzdHJpcCgpXG4gICAgICAgICsgbWF0Y2guZ3JvdXAoMylcbiAgICApXG5cbiAgICByZXR1cm4gKFxuICAgICAgICBjb250ZW50WzogbWF0Y2guc3RhcnQoKV1cbiAgICAgICAgKyB1cGRhdGVkX3R5cGVcbiAgICAgICAgKyBjb250ZW50W21hdGNoLmVuZCgpIDpdXG4gICAgKVxuXG5cbmRlZiBwYXRjaF9pbml0aWFsX2d1ZXN0X3Rva2VuX2ZldGNoKGNvbnRlbnQ6IHN0cikgLT4gc3RyOlxuICAgIGNhbmRpZGF0ZXMgPSBbXG4gICAgICAgIFwiZmV0Y2hHdWVzdFRva2VuKCksXCIsXG4gICAgICAgIFwiYXdhaXQgZmV0Y2hHdWVzdFRva2VuKCksXCIsXG4gICAgXVxuXG4gICAgZm9yIGNhbmRpZGF0ZSBpbiBjYW5kaWRhdGVzOlxuICAgICAgICBpZiBjb250ZW50LmNvdW50KGNhbmRpZGF0ZSkgPj0gMTpcbiAgICAgICAgICAgIHJldHVybiBjb250ZW50LnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgY2FuZGlkYXRlLFxuICAgICAgICAgICAgICAgIGNhbmRpZGF0ZS5yZXBsYWNlKFxuICAgICAgICAgICAgICAgICAgICBcImZldGNoR3Vlc3RUb2tlbigpXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiZmV0Y2hHdWVzdFRva2VuKHVuZGVmaW5lZClcIixcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICApXG5cbiAgICByYWlzZSBQYXRjaEVycm9yKFxuICAgICAgICBcIkNvdWxkIG5vdCBsb2NhdGUgdGhlIGluaXRpYWwgZmV0Y2hHdWVzdFRva2VuIGNhbGxcIlxuICAgIClcblxuXG5kZWYgcGF0Y2hfZ3Vlc3RfdG9rZW5fcmVmcmVzaChjb250ZW50OiBzdHIpIC0+IHN0cjpcbiAgICBwYXR0ZXJucyA9IFtcbiAgICAgICAgcmUuY29tcGlsZShcbiAgICAgICAgICAgIHJcImFzeW5jIGZ1bmN0aW9uIHJlZnJlc2hHdWVzdFRva2VuXFxcXChcXFxcKSBcXFxce1xcXFxzKlwiXG4gICAgICAgICAgICByXCJjb25zdCBuZXdHdWVzdFRva2VuID0gYXdhaXQgZmV0Y2hHdWVzdFRva2VuXFxcXChcXFxcKTtcXFxccypcIlxuICAgICAgICAgICAgclwib3VyUG9ydFxcXFwuZW1pdFxcXFwoXCJcbiAgICAgICAgICAgIHJcIidndWVzdFRva2VuJyxcXFxccypcXFxce1xcXFxzKmd1ZXN0VG9rZW46XFxcXHMqbmV3R3Vlc3RUb2tlblxcXFxzKlxcXFx9XCJcbiAgICAgICAgICAgIHJcIlxcXFwpO1xcXFxzKlwiXG4gICAgICAgICAgICByXCJzZXRUaW1lb3V0XFxcXChcIlxuICAgICAgICAgICAgclwicmVmcmVzaEd1ZXN0VG9rZW4sXFxcXHMqXCJcbiAgICAgICAgICAgIHJcImdldEd1ZXN0VG9rZW5SZWZyZXNoVGltaW5nXFxcXChuZXdHdWVzdFRva2VuXFxcXClcIlxuICAgICAgICAgICAgclwiXFxcXCk7XFxcXHMqXCJcbiAgICAgICAgICAgIHJcIlxcXFx9XCIsXG4gICAgICAgICAgICByZS5ET1RBTEwsXG4gICAgICAgICksXG4gICAgICAgIHJlLmNvbXBpbGUoXG4gICAgICAgICAgICByXCJjb25zdCByZWZyZXNoR3Vlc3RUb2tlbiA9IGFzeW5jIFxcXFwoXFxcXCkgPT4gXFxcXHtcXFxccypcIlxuICAgICAgICAgICAgclwiY29uc3QgbmV3R3Vlc3RUb2tlbiA9IGF3YWl0IGZldGNoR3Vlc3RUb2tlblxcXFwoXFxcXCk7XFxcXHMqXCJcbiAgICAgICAgICAgIHJcIm91clBvcnRcXFxcLmVtaXRcXFxcKFwiXG4gICAgICAgICAgICByXCInZ3Vlc3RUb2tlbicsXFxcXHMqXFxcXHtcXFxccypndWVzdFRva2VuOlxcXFxzKm5ld0d1ZXN0VG9rZW5cXFxccypcXFxcfVwiXG4gICAgICAgICAgICByXCJcXFxcKTtcXFxccypcIlxuICAgICAgICAgICAgclwic2V0VGltZW91dFxcXFwoXCJcbiAgICAgICAgICAgIHJcInJlZnJlc2hHdWVzdFRva2VuLFxcXFxzKlwiXG4gICAgICAgICAgICByXCJnZXRHdWVzdFRva2VuUmVmcmVzaFRpbWluZ1xcXFwobmV3R3Vlc3RUb2tlblxcXFwpXCJcbiAgICAgICAgICAgIHJcIlxcXFwpO1xcXFxzKlwiXG4gICAgICAgICAgICByXCJcXFxcfTtcIixcbiAgICAgICAgICAgIHJlLkRPVEFMTCxcbiAgICAgICAgKSxcbiAgICBdXG5cbiAgICByZXBsYWNlbWVudCA9IFwiXCJcImxldCBhY3RpdmVEYXNoYm9hcmRJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIGFzeW5jIGZ1bmN0aW9uIHJlZnJlc2hHdWVzdFRva2VuKCkge1xuICAgIGNvbnN0IG5ld0d1ZXN0VG9rZW4gPSBhd2FpdCBmZXRjaEd1ZXN0VG9rZW4oXG4gICAgICBhY3RpdmVEYXNoYm9hcmRJZCxcbiAgICApO1xuXG4gICAgb3VyUG9ydC5lbWl0KCdndWVzdFRva2VuJywge1xuICAgICAgZ3Vlc3RUb2tlbjogbmV3R3Vlc3RUb2tlbixcbiAgICB9KTtcblxuICAgIHNldFRpbWVvdXQoXG4gICAgICByZWZyZXNoR3Vlc3RUb2tlbixcbiAgICAgIGdldEd1ZXN0VG9rZW5SZWZyZXNoVGltaW5nKG5ld0d1ZXN0VG9rZW4pLFxuICAgICk7XG4gIH1cIlwiXCJcblxuICAgIGZvciBwYXR0ZXJuIGluIHBhdHRlcm5zOlxuICAgICAgICB1cGRhdGVkLCBjb3VudCA9IHBhdHRlcm4uc3VibihcbiAgICAgICAgICAgIHJlcGxhY2VtZW50LFxuICAgICAgICAgICAgY29udGVudCxcbiAgICAgICAgICAgIGNvdW50PTEsXG4gICAgICAgIClcblxuICAgICAgICBpZiBjb3VudCA9PSAxOlxuICAgICAgICAgICAgcmV0dXJuIHVwZGF0ZWRcblxuICAgIHJhaXNlIFBhdGNoRXJyb3IoXG4gICAgICAgIFwiQ291bGQgbm90IGxvY2F0ZSB0aGUgZ3Vlc3QtdG9rZW4gcmVmcmVzaCBmdW5jdGlvblwiXG4gICAgKVxuXG5cbmRlZiBwYXRjaF9zZGtfZnVuY3Rpb25zKGNvbnRlbnQ6IHN0cikgLT4gc3RyOlxuICAgIGFuY2hvcl9jYW5kaWRhdGVzID0gW1xuICAgICAgICAoXG4gICAgICAgICAgICBcIiAgY29uc3QgZ2V0U2Nyb2xsU2l6ZSA9ICgpID0+IFwiXG4gICAgICAgICAgICBcIm91clBvcnQuZ2V0PFNpemU+KCdnZXRTY3JvbGxTaXplJyk7XCJcbiAgICAgICAgKSxcbiAgICAgICAgKFxuICAgICAgICAgICAgXCIgIGNvbnN0IGdldFNjcm9sbFNpemUgPSAoKSA9PlxcXFxuXCJcbiAgICAgICAgICAgIFwiICAgIG91clBvcnQuZ2V0PFNpemU+KCdnZXRTY3JvbGxTaXplJyk7XCJcbiAgICAgICAgKSxcbiAgICBdXG5cbiAgICBzd2l0Y2hfZnVuY3Rpb24gPSBcIlwiXCIgIGNvbnN0IHN3aXRjaERhc2hib2FyZCA9IGFzeW5jIChcbiAgICBkYXNoYm9hcmRJZDogc3RyaW5nLFxuICApOiBQcm9taXNlPHtcbiAgICBkYXNoYm9hcmRJZDogc3RyaW5nO1xuICAgIGFjY2VwdGVkOiB0cnVlO1xuICB9PiA9PiB7XG4gICAgY29uc3Qgbm9ybWFsaXplZERhc2hib2FyZElkID0gZGFzaGJvYXJkSWQudHJpbSgpO1xuXG4gICAgaWYgKCFub3JtYWxpemVkRGFzaGJvYXJkSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ2Rhc2hib2FyZElkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgZ3Vlc3RUb2tlbiA9IGF3YWl0IGZldGNoR3Vlc3RUb2tlbihcbiAgICAgIG5vcm1hbGl6ZWREYXNoYm9hcmRJZCxcbiAgICApO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgb3VyUG9ydC5nZXQ8e1xuICAgICAgZGFzaGJvYXJkSWQ6IHN0cmluZztcbiAgICAgIGFjY2VwdGVkOiB0cnVlO1xuICAgIH0+KCdzd2l0Y2hEYXNoYm9hcmQnLCB7XG4gICAgICBkYXNoYm9hcmRJZDogbm9ybWFsaXplZERhc2hib2FyZElkLFxuICAgICAgZ3Vlc3RUb2tlbixcbiAgICB9KTtcblxuICAgIGFjdGl2ZURhc2hib2FyZElkID0gbm9ybWFsaXplZERhc2hib2FyZElkO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuXCJcIlwiXG5cbiAgICBmb3IgYW5jaG9yIGluIGFuY2hvcl9jYW5kaWRhdGVzOlxuICAgICAgICBpZiBjb250ZW50LmNvdW50KGFuY2hvcikgPT0gMTpcbiAgICAgICAgICAgIHJldHVybiBjb250ZW50LnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgYW5jaG9yLFxuICAgICAgICAgICAgICAgIHN3aXRjaF9mdW5jdGlvbiArIGFuY2hvcixcbiAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgKVxuXG4gICAgcmFpc2UgUGF0Y2hFcnJvcihcbiAgICAgICAgXCJDb3VsZCBub3QgbG9jYXRlIHRoZSBTREsgZ2V0U2Nyb2xsU2l6ZSBmdW5jdGlvblwiXG4gICAgKVxuXG5cbmRlZiBwYXRjaF9zZGtfcmV0dXJuX29iamVjdChjb250ZW50OiBzdHIpIC0+IHN0cjpcbiAgICBjYW5kaWRhdGVzID0gW1xuICAgICAgICBcIiAgICBzZXRUaGVtZU1vZGUsXFxcXG4gIH07XCIsXG4gICAgICAgIFwiICAgIHNldFRoZW1lTW9kZSxcXFxcbiAgICB1bm1vdW50LFxcXFxuICB9O1wiLFxuICAgICAgICBcIiAgICB1bm1vdW50LFxcXFxuICAgIHNldFRoZW1lTW9kZSxcXFxcbiAgfTtcIixcbiAgICBdXG5cbiAgICBmb3IgY2FuZGlkYXRlIGluIGNhbmRpZGF0ZXM6XG4gICAgICAgIGlmIGNvbnRlbnQuY291bnQoY2FuZGlkYXRlKSA9PSAxOlxuICAgICAgICAgICAgbGluZXMgPSBjYW5kaWRhdGUuc3BsaXRsaW5lcygpXG5cbiAgICAgICAgICAgIGNsb3NpbmcgPSBsaW5lcy5wb3AoKVxuICAgICAgICAgICAgYm9keSA9IFwiXFxcXG5cIi5qb2luKGxpbmVzKVxuXG4gICAgICAgICAgICByZXR1cm4gY29udGVudC5yZXBsYWNlKFxuICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSxcbiAgICAgICAgICAgICAgICBib2R5XG4gICAgICAgICAgICAgICAgKyBcIlxcXFxuXCJcbiAgICAgICAgICAgICAgICArIFwiICAgIHN3aXRjaERhc2hib2FyZCxcXFxcblwiXG4gICAgICAgICAgICAgICAgKyBjbG9zaW5nLFxuICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICApXG5cbiAgICByYWlzZSBQYXRjaEVycm9yKFxuICAgICAgICBcIkNvdWxkIG5vdCBsb2NhdGUgdGhlIEVtYmVkZGVkRGFzaGJvYXJkIHJldHVybiBvYmplY3RcIlxuICAgIClcblxuXG5kZWYgcGF0Y2hfc2RrKHNka19wYXRoOiBQYXRoKSAtPiBOb25lOlxuICAgIGNvbnRlbnQgPSBzZGtfcGF0aC5yZWFkX3RleHQoZW5jb2Rpbmc9XCJ1dGYtOFwiKVxuXG4gICAgaWYgXCJTVVBFUlNFVF9TV0lUQ0hBQkxFX0VNQkVEX1NES19QQVRDSFwiIGluIGNvbnRlbnQ6XG4gICAgICAgIHByaW50KGZcIkFscmVhZHkgcGF0Y2hlZDoge3Nka19wYXRofVwiKVxuICAgICAgICByZXR1cm5cblxuICAgIGNvbnRlbnQgPSBwYXRjaF9ndWVzdF90b2tlbl9mZXRjaF90eXBlKGNvbnRlbnQpXG4gICAgY29udGVudCA9IHBhdGNoX2VtYmVkZGVkX2Rhc2hib2FyZF90eXBlKGNvbnRlbnQpXG4gICAgY29udGVudCA9IHBhdGNoX2luaXRpYWxfZ3Vlc3RfdG9rZW5fZmV0Y2goY29udGVudClcbiAgICBjb250ZW50ID0gcGF0Y2hfZ3Vlc3RfdG9rZW5fcmVmcmVzaChjb250ZW50KVxuICAgIGNvbnRlbnQgPSBwYXRjaF9zZGtfZnVuY3Rpb25zKGNvbnRlbnQpXG4gICAgY29udGVudCA9IHBhdGNoX3Nka19yZXR1cm5fb2JqZWN0KGNvbnRlbnQpXG5cbiAgICBzZGtfcGF0aC53cml0ZV90ZXh0KGNvbnRlbnQsIGVuY29kaW5nPVwidXRmLThcIilcbiAgICBwcmludChmXCJQYXRjaGVkOiB7c2RrX3BhdGh9XCIpXG5cblxuZGVmIG1haW4oKSAtPiBpbnQ6XG4gICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoXG4gICAgICAgIGRlc2NyaXB0aW9uPShcbiAgICAgICAgICAgIFwiQXBwbHkgdGhlIHN3aXRjaGFibGUtZGFzaGJvYXJkIHBhdGNoIHRvIGEgXCJcbiAgICAgICAgICAgIFwiU3VwZXJzZXQgNi4xLnggc291cmNlIGNoZWNrb3V0LlwiXG4gICAgICAgIClcbiAgICApXG5cbiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KFxuICAgICAgICBcInN1cGVyc2V0X3Jvb3RcIixcbiAgICAgICAgdHlwZT1QYXRoLFxuICAgICAgICBoZWxwPVwiUGF0aCB0byB0aGUgQXBhY2hlIFN1cGVyc2V0IHNvdXJjZSBjaGVja291dFwiLFxuICAgIClcblxuICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpXG4gICAgcm9vdCA9IGFyZ3Muc3VwZXJzZXRfcm9vdC5yZXNvbHZlKClcblxuICAgIGZyb250ZW5kX3BhdGggPSByb290IC8gRlJPTlRFTkRfRklMRVxuICAgIHNka19wYXRoID0gcm9vdCAvIFNES19GSUxFXG5cbiAgICBtaXNzaW5nID0gW1xuICAgICAgICBwYXRoXG4gICAgICAgIGZvciBwYXRoIGluIFtmcm9udGVuZF9wYXRoLCBzZGtfcGF0aF1cbiAgICAgICAgaWYgbm90IHBhdGguZXhpc3RzKClcbiAgICBdXG5cbiAgICBpZiBtaXNzaW5nOlxuICAgICAgICBwcmludChcbiAgICAgICAgICAgIFwiVGhlIHRhcmdldCBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYSBjb21wYXRpYmxlIFwiXG4gICAgICAgICAgICBcIlN1cGVyc2V0IHNvdXJjZSBjaGVja291dC5cIixcbiAgICAgICAgICAgIGZpbGU9c3lzLnN0ZGVycixcbiAgICAgICAgKVxuXG4gICAgICAgIGZvciBtaXNzaW5nX3BhdGggaW4gbWlzc2luZzpcbiAgICAgICAgICAgIHByaW50KGZcIk1pc3Npbmc6IHttaXNzaW5nX3BhdGh9XCIsIGZpbGU9c3lzLnN0ZGVycilcblxuICAgICAgICByZXR1cm4gMlxuXG4gICAgdHJ5OlxuICAgICAgICBwYXRjaF9mcm9udGVuZChmcm9udGVuZF9wYXRoKVxuICAgICAgICBwYXRjaF9zZGsoc2RrX3BhdGgpXG4gICAgZXhjZXB0IFBhdGNoRXJyb3IgYXMgZXJyb3I6XG4gICAgICAgIHByaW50KGZcIlBhdGNoIGZhaWxlZDoge2Vycm9yfVwiLCBmaWxlPXN5cy5zdGRlcnIpXG4gICAgICAgIHJldHVybiAxXG5cbiAgICBwcmludChcIlBhdGNoIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuXCIpXG4gICAgcmV0dXJuIDBcblxuXG5pZiBfX25hbWVfXyA9PSBcIl9fbWFpbl9fXCI6XG4gICAgcmFpc2UgU3lzdGVtRXhpdChtYWluKCkpXG5gO1xuXG5jb25zdCBWRVJJRllfUEFUQ0hfU0ggPSBgIyEvdXNyL2Jpbi9lbnYgYmFzaFxuXG5zZXQgLWV1byBwaXBlZmFpbFxuXG5TVVBFUlNFVF9ST09UPVxcJHsxOj9Vc2FnZTogdmVyaWZ5X3BhdGNoLnNoIC9wYXRoL3RvL3N1cGVyc2V0fVxuXG5GUk9OVEVORF9GSUxFPVwiJFNVUEVSU0VUX1JPT1Qvc3VwZXJzZXQtZnJvbnRlbmQvc3JjL2VtYmVkZGVkL2luZGV4LnRzeFwiXG5TREtfRklMRT1cIiRTVVBFUlNFVF9ST09UL3N1cGVyc2V0LWVtYmVkZGVkLXNkay9zcmMvaW5kZXgudHNcIlxuXG50ZXN0IC1mIFwiJEZST05URU5EX0ZJTEVcIlxudGVzdCAtZiBcIiRTREtfRklMRVwiXG5cbmdyZXAgLXEgXFxcXFxuICBcIlNVUEVSU0VUX1NXSVRDSEFCTEVfRU1CRURfUEFUQ0hcIiBcXFxcXG4gIFwiJEZST05URU5EX0ZJTEVcIlxuXG5ncmVwIC1xIFxcXFxcbiAgXCInc3dpdGNoRGFzaGJvYXJkJ1wiIFxcXFxcbiAgXCIkRlJPTlRFTkRfRklMRVwiXG5cbmdyZXAgLXEgXFxcXFxuICBcImRhc2hib2FyZFN3aXRjaEhhbmRsZXJcIiBcXFxcXG4gIFwiJEZST05URU5EX0ZJTEVcIlxuXG5ncmVwIC1xIFxcXFxcbiAgXCJTVVBFUlNFVF9TV0lUQ0hBQkxFX0VNQkVEX1NES19QQVRDSFwiIFxcXFxcbiAgXCIkU0RLX0ZJTEVcIlxuXG5ncmVwIC1xIFxcXFxcbiAgXCJzd2l0Y2hEYXNoYm9hcmQ6XCIgXFxcXFxuICBcIiRTREtfRklMRVwiXG5cbmdyZXAgLXEgXFxcXFxuICBcImFjdGl2ZURhc2hib2FyZElkXCIgXFxcXFxuICBcIiRTREtfRklMRVwiXG5cbmdyZXAgLXEgXFxcXFxuICBcImZldGNoR3Vlc3RUb2tlbihcIiBcXFxcXG4gIFwiJFNES19GSUxFXCJcblxuZWNobyBcIlRoZSBzd2l0Y2hhYmxlLWRhc2hib2FyZCBwYXRjaCBpcyBwcmVzZW50LlwiXG5gO1xuXG5jb25zdCBCVUlMRF9TREtfU0ggPSBgIyEvdXNyL2Jpbi9lbnYgYmFzaFxuXG5zZXQgLWV1byBwaXBlZmFpbFxuXG5TVVBFUlNFVF9ST09UPVxcJHsxOj9Vc2FnZTogYnVpbGQtc2RrLnNoIC9wYXRoL3RvL3N1cGVyc2V0fVxuXG5TREtfUk9PVD1cIiRTVVBFUlNFVF9ST09UL3N1cGVyc2V0LWVtYmVkZGVkLXNka1wiXG5cbmlmIFsgISAtZiBcIiRTREtfUk9PVC9wYWNrYWdlLmpzb25cIiBdOyB0aGVuXG4gIGVjaG8gXCJNaXNzaW5nIFNESyBwYWNrYWdlOiAkU0RLX1JPT1RcIiA+JjJcbiAgZXhpdCAxXG5maVxuXG5jZCBcIiRTREtfUk9PVFwiXG5cbm5wbSBjaVxuXG5ucG0gcnVuIGJ1aWxkXG5cbmVjaG9cbmVjaG8gXCJFbWJlZGRlZCBTREsgYnVpbGQgY29tcGxldGVkLlwiXG5lY2hvIFwiT3V0cHV0IGRpcmVjdG9yeTpcIlxuZmluZCAuIFxcXFxcbiAgLW1heGRlcHRoIDIgXFxcXFxuICAtdHlwZSBkIFxcXFxcbiAgXFxcXCggLW5hbWUgZGlzdCAtbyAtbmFtZSBsaWIgXFxcXCkgXFxcXFxuICAtcHJpbnRcbmA7XG5cbmNvbnN0IEJVSUxEX0ZST05URU5EX1NIID0gYCMhL3Vzci9iaW4vZW52IGJhc2hcblxuc2V0IC1ldW8gcGlwZWZhaWxcblxuU1VQRVJTRVRfUk9PVD1cXCR7MTo/VXNhZ2U6IGJ1aWxkLXN1cGVyc2V0LWZyb250ZW5kLnNoIC9wYXRoL3RvL3N1cGVyc2V0fVxuXG5GUk9OVEVORF9ST09UPVwiJFNVUEVSU0VUX1JPT1Qvc3VwZXJzZXQtZnJvbnRlbmRcIlxuXG5pZiBbICEgLWYgXCIkRlJPTlRFTkRfUk9PVC9wYWNrYWdlLmpzb25cIiBdOyB0aGVuXG4gIGVjaG8gXCJNaXNzaW5nIFN1cGVyc2V0IGZyb250ZW5kOiAkRlJPTlRFTkRfUk9PVFwiID4mMlxuICBleGl0IDFcbmZpXG5cbmNkIFwiJEZST05URU5EX1JPT1RcIlxuXG5ucG0gY2lcblxubnBtIHJ1biBidWlsZFxuXG5lY2hvIFwiU3VwZXJzZXQgZnJvbnRlbmQgYnVpbGQgY29tcGxldGVkLlwiXG5gO1xuXG5jb25zdCBQQVRDSF9BTkRfQlVJTERfU0ggPSBgIyEvdXNyL2Jpbi9lbnYgYmFzaFxuXG5zZXQgLWV1byBwaXBlZmFpbFxuXG5TVVBFUlNFVF9ST09UPVxcJHsxOj9Vc2FnZTogcGF0Y2gtYW5kLWJ1aWxkLnNoIC9wYXRoL3RvL3N1cGVyc2V0fVxuXG5TQ1JJUFRfRElSPSQoXG4gIGNkIFwiJChkaXJuYW1lIFwiXFwke0JBU0hfU09VUkNFWzBdfVwiKVwiXG4gIHB3ZFxuKVxuXG5QUk9KRUNUX1JPT1Q9JChcbiAgY2QgXCIkU0NSSVBUX0RJUi8uLlwiXG4gIHB3ZFxuKVxuXG5weXRob24zIFxcXFxcbiAgXCIkUFJPSkVDVF9ST09UL3BhdGNoZXMvYXBwbHlfc3VwZXJzZXRfNl8xX3BhdGNoLnB5XCIgXFxcXFxuICBcIiRTVVBFUlNFVF9ST09UXCJcblxuXCIkUFJPSkVDVF9ST09UL3BhdGNoZXMvdmVyaWZ5X3BhdGNoLnNoXCIgXFxcXFxuICBcIiRTVVBFUlNFVF9ST09UXCJcblxuXCIkU0NSSVBUX0RJUi9idWlsZC1zZGsuc2hcIiBcXFxcXG4gIFwiJFNVUEVSU0VUX1JPT1RcIlxuXG5cIiRTQ1JJUFRfRElSL2J1aWxkLXN1cGVyc2V0LWZyb250ZW5kLnNoXCIgXFxcXFxuICBcIiRTVVBFUlNFVF9ST09UXCJcblxuZWNob1xuZWNobyBcIlBhdGNoIGFuZCBmcm9udGVuZCBidWlsZHMgY29tcGxldGVkLlwiXG5gO1xuXG5jb25zdCBCVUlMRF9ET0NLRVJfU0ggPSBgIyEvdXNyL2Jpbi9lbnYgYmFzaFxuXG5zZXQgLWV1byBwaXBlZmFpbFxuXG5TVVBFUlNFVF9ST09UPVxcJHsxOj9Vc2FnZTogYnVpbGQtZG9ja2VyLWltYWdlLnNoIC9wYXRoL3RvL3N1cGVyc2V0IFtpbWFnZS10YWddfVxuSU1BR0VfVEFHPVxcJHsyOi1sb2NhbC9zdXBlcnNldC1zd2l0Y2hhYmxlOjYuMS4wfVxuXG5TQ1JJUFRfRElSPSQoXG4gIGNkIFwiJChkaXJuYW1lIFwiXFwke0JBU0hfU09VUkNFWzBdfVwiKVwiXG4gIHB3ZFxuKVxuXG5QUk9KRUNUX1JPT1Q9JChcbiAgY2QgXCIkU0NSSVBUX0RJUi8uLlwiXG4gIHB3ZFxuKVxuXG5weXRob24zIFxcXFxcbiAgXCIkUFJPSkVDVF9ST09UL3BhdGNoZXMvYXBwbHlfc3VwZXJzZXRfNl8xX3BhdGNoLnB5XCIgXFxcXFxuICBcIiRTVVBFUlNFVF9ST09UXCJcblxuXCIkUFJPSkVDVF9ST09UL3BhdGNoZXMvdmVyaWZ5X3BhdGNoLnNoXCIgXFxcXFxuICBcIiRTVVBFUlNFVF9ST09UXCJcblxuY2QgXCIkU1VQRVJTRVRfUk9PVFwiXG5cbmRvY2tlciBidWlsZCBcXFxcXG4gIC0tdGFyZ2V0IGxlYW4gXFxcXFxuICAtLXRhZyBcIiRJTUFHRV9UQUdcIiBcXFxcXG4gIC5cblxuZWNobyBcIkJ1aWx0IERvY2tlciBpbWFnZTogJElNQUdFX1RBR1wiXG5gO1xuXG5jb25zdCBSRUFETUUgPSBgIyAke1NVUEVSU0VUX1BMVUdJTl9JRH1cblxuTXVsdGktdGVuYW50LCBvcmctYWdub3N0aWMgU3VwZXJzZXQgZGFzaGJvYXJkIGVtYmVkIHBsdWdpbiAocGF0Y2gtYW5kLWJ1aWxkIHN0cmF0ZWd5KS5cblxuVGhpcyBpcyBub3QgYSBnZW5lcmF0ZWQgcGx1Z2luIGxpa2UgdGhlIEtpYmFuYSB2YXJpYW50LiBJbnN0ZWFkLCBEZWNhZiBob2xkc1xucGF0Y2ggc2NyaXB0cyB0aGF0IG1vZGlmeSBTdXBlcnNldCdzIGludGVybmFsIGVtYmVkZGVkIGZyb250ZW5kIGFuZCBlbWJlZGRlZFxuU0RLIHNvdXJjZSBmaWxlcyB0byBhZGQgYSBcXGBzd2l0Y2hEYXNoYm9hcmRcXGAgbWV0aG9kLiBUaGUgZXhpc3RpbmcgaWZyYW1lXG5lbGVtZW50LCBkb2N1bWVudCwgY29udGVudFdpbmRvdywgUmVhY3QgcnVudGltZSwgYW5kIFN3aXRjaGJvYXJkIE1lc3NhZ2VDaGFubmVsXG5hcmUgcHJlc2VydmVkIGFjcm9zcyBkYXNoYm9hcmQgc3dpdGNoZXMuXG5cbiMjIFdoYXQgaXQgcGF0Y2hlc1xuXG4tIFxcYHN1cGVyc2V0LWZyb250ZW5kL3NyYy9lbWJlZGRlZC9pbmRleC50c3hcXGAg4oCUIGFkZHMgXFxgc3dpdGNoRGFzaGJvYXJkXFxgIHRvIHRoZVxuICBTd2l0Y2hib2FyZCBjaGFubmVsOyByZXBsYWNlcyBvbmx5IFxcYERhc2hib2FyZFBhZ2VcXGAuXG4tIFxcYHN1cGVyc2V0LWVtYmVkZGVkLXNkay9zcmMvaW5kZXgudHNcXGAg4oCUIGFkZHNcbiAgXFxgZW1iZWRkZWREYXNoYm9hcmQuc3dpdGNoRGFzaGJvYXJkKGRhc2hib2FyZElkKVxcYDsgcmVxdWVzdHMgYSBndWVzdCB0b2tlbiBmb3JcbiAgdGhlIHNlbGVjdGVkIGRhc2hib2FyZDsgcmVmcmVzaGVzIGZ1dHVyZSBndWVzdCB0b2tlbnMgZm9yIHRoZSBhY3RpdmUgZGFzaGJvYXJkLlxuXG4jIyBCdWlsZFxuXG5cXGBcXGBcXGBiYXNoXG4jIEFwcGx5IHBhdGNoICsgdmVyaWZ5ICsgYnVpbGQgU0RLICsgYnVpbGQgZnJvbnRlbmRcbmJ1aWxkL3BhdGNoLWFuZC1idWlsZC5zaCAvcGF0aC90by9zdXBlcnNldFxuXG4jIE9yIGJ1aWxkIGEgRG9ja2VyIGltYWdlXG5idWlsZC9idWlsZC1kb2NrZXItaW1hZ2Uuc2ggL3BhdGgvdG8vc3VwZXJzZXQgcmVnaXN0cnkuZXhhbXBsZS5jb20vc3VwZXJzZXQtc3dpdGNoYWJsZTo2LjEuMFxuXFxgXFxgXFxgXG5cblRoZSBwYXRjaGVkIFNESyBtdXN0IGJlIHBhY2tlZCBhbmQgaW5zdGFsbGVkIGludG8gdGhlIEFuZ3VsYXIgYXBwbGljYXRpb246XG5cblxcYFxcYFxcYGJhc2hcbmNkIC9wYXRoL3RvL3N1cGVyc2V0L3N1cGVyc2V0LWVtYmVkZGVkLXNka1xubnBtIGNpICYmIG5wbSBydW4gYnVpbGQgJiYgbnBtIHBhY2tcbmNkIC9wYXRoL3RvL2FuZ3VsYXItYXBwXG5ucG0gaW5zdGFsbCAvcGF0aC90by9zdXBlcnNldC9zdXBlcnNldC1lbWJlZGRlZC1zZGsvc3VwZXJzZXQtdWktZW1iZWRkZWQtc2RrLSoudGd6XG5cXGBcXGBcXGBcblxuVmVyc2lvbjogJHtTVVBFUlNFVF9QTFVHSU5fVkVSU0lPTn1cbmA7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZnVsbCBzZXQgb2YgcGF0Y2ggYW5kIGJ1aWxkIHNjcmlwdCBmaWxlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN1cGVyc2V0UGF0Y2hGaWxlcygpOiBTdXBlcnNldFBhdGNoRmlsZVtdIHtcbiAgcmV0dXJuIFtcbiAgICB7IHBhdGg6IFwicGF0Y2hlcy9hcHBseV9zdXBlcnNldF82XzFfcGF0Y2gucHlcIiwgY29udGVudDogQVBQTFlfUEFUQ0hfUFksIGV4ZWN1dGFibGU6IHRydWUgfSxcbiAgICB7IHBhdGg6IFwicGF0Y2hlcy92ZXJpZnlfcGF0Y2guc2hcIiwgY29udGVudDogVkVSSUZZX1BBVENIX1NILCBleGVjdXRhYmxlOiB0cnVlIH0sXG4gICAgeyBwYXRoOiBcImJ1aWxkL2J1aWxkLXNkay5zaFwiLCBjb250ZW50OiBCVUlMRF9TREtfU0gsIGV4ZWN1dGFibGU6IHRydWUgfSxcbiAgICB7IHBhdGg6IFwiYnVpbGQvYnVpbGQtc3VwZXJzZXQtZnJvbnRlbmQuc2hcIiwgY29udGVudDogQlVJTERfRlJPTlRFTkRfU0gsIGV4ZWN1dGFibGU6IHRydWUgfSxcbiAgICB7IHBhdGg6IFwiYnVpbGQvcGF0Y2gtYW5kLWJ1aWxkLnNoXCIsIGNvbnRlbnQ6IFBBVENIX0FORF9CVUlMRF9TSCwgZXhlY3V0YWJsZTogdHJ1ZSB9LFxuICAgIHsgcGF0aDogXCJidWlsZC9idWlsZC1kb2NrZXItaW1hZ2Uuc2hcIiwgY29udGVudDogQlVJTERfRE9DS0VSX1NILCBleGVjdXRhYmxlOiB0cnVlIH0sXG4gICAgeyBwYXRoOiBcIlJFQURNRS5tZFwiLCBjb250ZW50OiBSRUFETUUgfSxcbiAgXTtcbn1cbiJdfQ==
838
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGVtcGxhdGVzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBc3pCQSxnREFVQztBQWgwQkQ7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILCtDQUE0RTtBQUM1RSxNQUFNLGNBQWMsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FnbUJ0QixDQUFDO0FBQ0YsTUFBTSxlQUFlLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBeUN2QixDQUFDO0FBQ0YsTUFBTSxZQUFZLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQTJCcEIsQ0FBQztBQUNGLE1BQU0saUJBQWlCLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBb0J6QixDQUFDO0FBQ0YsTUFBTSxrQkFBa0IsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQStCMUIsQ0FBQztBQUNGLE1BQU0sZUFBZSxHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQWdDdkIsQ0FBQztBQUNGLE1BQU0sTUFBTSxHQUFHLEtBQUssZ0NBQWtCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1dBcUMzQixxQ0FBdUI7Q0FDakMsQ0FBQztBQUNGOztHQUVHO0FBQ0gsU0FBZ0Isa0JBQWtCO0lBQzlCLE9BQU87UUFDSCxFQUFFLElBQUksRUFBRSxxQ0FBcUMsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7UUFDMUYsRUFBRSxJQUFJLEVBQUUseUJBQXlCLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFO1FBQy9FLEVBQUUsSUFBSSxFQUFFLG9CQUFvQixFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTtRQUN2RSxFQUFFLElBQUksRUFBRSxrQ0FBa0MsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTtRQUMxRixFQUFFLElBQUksRUFBRSwwQkFBMEIsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTtRQUNuRixFQUFFLElBQUksRUFBRSw2QkFBNkIsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7UUFDbkYsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUU7S0FDekMsQ0FBQztBQUNOLENBQUM7QUFDRCwweCtCQUEweCtCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9wbHVnaW5zL3N1cGVyc2V0L3RlbXBsYXRlc1xuICogQHN1bW1hcnkgUGF0Y2ggYW5kIGJ1aWxkIHNjcmlwdCB0ZW1wbGF0ZXMgZm9yIHRoZSBTdXBlcnNldCBlbWJlZCBwbHVnaW4uXG4gKiBAZGVzY3JpcHRpb24gSG9sZHMgYWxsIHBhdGNoIHNjcmlwdHMgKFB5dGhvbiArIEJhc2gpIGFuZCBidWlsZCBzY3JpcHRzIGFzXG4gKiBzdHJpbmcgdGVtcGxhdGVzLiBUaGVzZSBhcmUgbWF0ZXJpYWxpemVkIG9udG8gZGlzayBieSB0aGUgaW5zdGFsbGVyLiBEZWNhZlxuICogZG9lcyBub3QgZ2VuZXJhdGUgbmV3IFN1cGVyc2V0IHNvdXJjZSDigJQgaXQgcGF0Y2hlcyBleGlzdGluZyBpbnRlcm5hbCBmaWxlc1xuICogKGBzdXBlcnNldC1mcm9udGVuZC9zcmMvZW1iZWRkZWQvaW5kZXgudHN4YCBhbmRcbiAqIGBzdXBlcnNldC1lbWJlZGRlZC1zZGsvc3JjL2luZGV4LnRzYCkgZm9sbG93aW5nIHRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb25cbiAqIGZyb20gREVDQUYtNDAgwqc5LlxuICpcbiAqIFRoZSBwYXRjaCBhZGRzIGEgYHN3aXRjaERhc2hib2FyZGAgbWV0aG9kIHRvIFN1cGVyc2V0J3MgZXhpc3RpbmcgU3dpdGNoYm9hcmRcbiAqIGNoYW5uZWwsIHJlcGxhY2luZyBvbmx5IGBEYXNoYm9hcmRQYWdlYCB3aGlsZSBrZWVwaW5nIHRoZSBpZnJhbWUgZWxlbWVudCxcbiAqIGRvY3VtZW50LCBjb250ZW50V2luZG93LCBSZWFjdCBydW50aW1lLCBhbmQgbWVzc2FnZSBjaGFubmVsIGFsaXZlLlxuICovXG5pbXBvcnQgeyBTVVBFUlNFVF9QTFVHSU5fSUQsIFNVUEVSU0VUX1BMVUdJTl9WRVJTSU9OIH0gZnJvbSBcIi4vbWFuaWZlc3QuanNcIjtcbmNvbnN0IEFQUExZX1BBVENIX1BZID0gYCMhL3Vzci9iaW4vZW52IHB5dGhvbjNcblxuZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhbm5vdGF0aW9uc1xuXG5pbXBvcnQgYXJncGFyc2VcbmltcG9ydCByZVxuaW1wb3J0IHN5c1xuZnJvbSBwYXRobGliIGltcG9ydCBQYXRoXG5cblxuRlJPTlRFTkRfRklMRSA9IFBhdGgoXCJzdXBlcnNldC1mcm9udGVuZC9zcmMvZW1iZWRkZWQvaW5kZXgudHN4XCIpXG5TREtfRklMRSA9IFBhdGgoXCJzdXBlcnNldC1lbWJlZGRlZC1zZGsvc3JjL2luZGV4LnRzXCIpXG5cblxuY2xhc3MgUGF0Y2hFcnJvcihSdW50aW1lRXJyb3IpOlxuICAgIHBhc3NcblxuXG5kZWYgcmVwbGFjZV9vbmNlKFxuICAgIGNvbnRlbnQ6IHN0cixcbiAgICBvbGQ6IHN0cixcbiAgICBuZXc6IHN0cixcbiAgICBkZXNjcmlwdGlvbjogc3RyLFxuKSAtPiBzdHI6XG4gICAgY291bnQgPSBjb250ZW50LmNvdW50KG9sZClcblxuICAgIGlmIGNvdW50ICE9IDE6XG4gICAgICAgIHJhaXNlIFBhdGNoRXJyb3IoXG4gICAgICAgICAgICBmXCJ7ZGVzY3JpcHRpb259OiBleHBlY3RlZCBleGFjdGx5IG9uZSBvY2N1cnJlbmNlLCBmb3VuZCB7Y291bnR9XCJcbiAgICAgICAgKVxuXG4gICAgcmV0dXJuIGNvbnRlbnQucmVwbGFjZShvbGQsIG5ldywgMSlcblxuXG5kZWYgcmVwbGFjZV9yZWdleF9vbmNlKFxuICAgIGNvbnRlbnQ6IHN0cixcbiAgICBwYXR0ZXJuOiByZS5QYXR0ZXJuW3N0cl0sXG4gICAgcmVwbGFjZW1lbnQ6IHN0cixcbiAgICBkZXNjcmlwdGlvbjogc3RyLFxuKSAtPiBzdHI6XG4gICAgdXBkYXRlZCwgY291bnQgPSBwYXR0ZXJuLnN1Ym4ocmVwbGFjZW1lbnQsIGNvbnRlbnQsIGNvdW50PTEpXG5cbiAgICBpZiBjb3VudCAhPSAxOlxuICAgICAgICByYWlzZSBQYXRjaEVycm9yKFxuICAgICAgICAgICAgZlwie2Rlc2NyaXB0aW9ufTogZXhwZWN0ZWQgZXhhY3RseSBvbmUgbWF0Y2gsIGZvdW5kIHtjb3VudH1cIlxuICAgICAgICApXG5cbiAgICByZXR1cm4gdXBkYXRlZFxuXG5cbmRlZiBwYXRjaF9yZWFjdF9pbXBvcnQoY29udGVudDogc3RyKSAtPiBzdHI6XG4gICAgcmVhY3RfaW1wb3J0X3BhdHRlcm4gPSByZS5jb21waWxlKFxuICAgICAgICByXCJpbXBvcnRcXFxccypcXFxce1xcXFxzKihbXn1dKylcXFxccypcXFxcfVxcXFxzKmZyb21cXFxccyoncmVhY3QnO1wiXG4gICAgKVxuXG4gICAgbWF0Y2ggPSByZWFjdF9pbXBvcnRfcGF0dGVybi5zZWFyY2goY29udGVudClcblxuICAgIGlmIG5vdCBtYXRjaDpcbiAgICAgICAgcmFpc2UgUGF0Y2hFcnJvcihcIkNvdWxkIG5vdCBsb2NhdGUgdGhlIG5hbWVkIFJlYWN0IGltcG9ydFwiKVxuXG4gICAgaW1wb3J0cyA9IFtcbiAgICAgICAgdmFsdWUuc3RyaXAoKVxuICAgICAgICBmb3IgdmFsdWUgaW4gbWF0Y2guZ3JvdXAoMSkucmVwbGFjZShcIlxcXFxuXCIsIFwiIFwiKS5zcGxpdChcIixcIilcbiAgICAgICAgaWYgdmFsdWUuc3RyaXAoKVxuICAgIF1cblxuICAgIHJlcXVpcmVkX2ltcG9ydHMgPSBbXCJsYXp5XCIsIFwiU3VzcGVuc2VcIiwgXCJ1c2VFZmZlY3RcIiwgXCJ1c2VTdGF0ZVwiXVxuXG4gICAgZm9yIHJlcXVpcmVkX2ltcG9ydCBpbiByZXF1aXJlZF9pbXBvcnRzOlxuICAgICAgICBpZiByZXF1aXJlZF9pbXBvcnQgbm90IGluIGltcG9ydHM6XG4gICAgICAgICAgICBpbXBvcnRzLmFwcGVuZChyZXF1aXJlZF9pbXBvcnQpXG5cbiAgICByZXBsYWNlbWVudCA9IChcbiAgICAgICAgXCJpbXBvcnQge1xcXFxuICBcIlxuICAgICAgICArIFwiLFxcXFxuICBcIi5qb2luKGltcG9ydHMpXG4gICAgICAgICsgXCIsXFxcXG59IGZyb20gJ3JlYWN0JztcIlxuICAgIClcblxuICAgIHJldHVybiAoXG4gICAgICAgIGNvbnRlbnRbOiBtYXRjaC5zdGFydCgpXVxuICAgICAgICArIHJlcGxhY2VtZW50XG4gICAgICAgICsgY29udGVudFttYXRjaC5lbmQoKSA6XVxuICAgIClcblxuXG5kZWYgbG9jYXRlX2VtYmVkZGVkX2NvbXBvbmVudChcbiAgICBjb250ZW50OiBzdHIsXG4pIC0+IHR1cGxlW3JlLk1hdGNoW3N0cl0sIHN0cl06XG4gICAgcGF0dGVybiA9IHJlLmNvbXBpbGUoXG4gICAgICAgIHJcImNvbnN0XFxcXHMrKFtBLVphLXowLTlfXSspXFxcXHMqPVxcXFxzKlxcXFwoXFxcXClcXFxccyo9PlxcXFxzKlxcXFx7Lio/XFxcXH07XFxcXHMqXCJcbiAgICAgICAgclwiKD89Y29uc3RcXFxccytFbWJlZGRlZFJvdXRlKVwiLFxuICAgICAgICByZS5ET1RBTEwsXG4gICAgKVxuXG4gICAgbWF0Y2ggPSBwYXR0ZXJuLnNlYXJjaChjb250ZW50KVxuXG4gICAgaWYgbWF0Y2g6XG4gICAgICAgIHJldHVybiBtYXRjaCwgbWF0Y2guZ3JvdXAoMSlcblxuICAgIHJhaXNlIFBhdGNoRXJyb3IoXG4gICAgICAgIFwiQ291bGQgbm90IGZpbmQgYW4gZW1iZWRkZWQgZGFzaGJvYXJkIGNvbXBvbmVudCBiZWZvcmUgRW1iZWRkZWRSb3V0ZVwiXG4gICAgKVxuXG5cbmRlZiBwYXRjaF9mcm9udGVuZChmcm9udGVuZF9wYXRoOiBQYXRoKSAtPiBOb25lOlxuICAgIGNvbnRlbnQgPSBmcm9udGVuZF9wYXRoLnJlYWRfdGV4dChlbmNvZGluZz1cInV0Zi04XCIpXG5cbiAgICBpZiBcIlNVUEVSU0VUX1NXSVRDSEFCTEVfRU1CRURfUEFUQ0hcIiBpbiBjb250ZW50OlxuICAgICAgICBwcmludChmXCJBbHJlYWR5IHBhdGNoZWQ6IHtmcm9udGVuZF9wYXRofVwiKVxuICAgICAgICByZXR1cm5cblxuICAgIGNvbnRlbnQgPSBwYXRjaF9yZWFjdF9pbXBvcnQoY29udGVudClcblxuICAgIGNvbXBvbmVudF9tYXRjaCwgY29tcG9uZW50X25hbWUgPSBsb2NhdGVfZW1iZWRkZWRfY29tcG9uZW50KFxuICAgICAgICBjb250ZW50XG4gICAgKVxuXG4gICAgcmVwbGFjZW1lbnRfY29tcG9uZW50ID0gXCJcIlwiLy8gU1VQRVJTRVRfU1dJVENIQUJMRV9FTUJFRF9QQVRDSFxuLy9cbi8vIEFsbG93cyB0aGUgZXhpc3RpbmcgZW1iZWRkZWQgU3VwZXJzZXQgZG9jdW1lbnQgdG8gcmVwbGFjZSBEYXNoYm9hcmRQYWdlXG4vLyB3aXRob3V0IG5hdmlnYXRpbmcgb3IgcmVjcmVhdGluZyB0aGUgaWZyYW1lLlxuLy9cbi8vIFNlY3VyaXR5OlxuLy8gLSBUaGlzIG1ldGhvZCBpcyBleHBvc2VkIG9ubHkgdGhyb3VnaCBTdXBlcnNldCdzIGV4aXN0aW5nIFN3aXRjaGJvYXJkXG4vLyAgIE1lc3NhZ2VDaGFubmVsLlxuLy8gLSBUaGUgaG9zdCBhcHBsaWNhdGlvbiBtdXN0IG9idGFpbiBhIGd1ZXN0IHRva2VuIGZvciB0aGUgdGFyZ2V0IGRhc2hib2FyZC5cbi8vIC0gU3VwZXJzZXQncyBub3JtYWwgQWxsb3dlZCBEb21haW5zIHZhbGlkYXRpb24gcmVtYWlucyBpbiBlZmZlY3QuXG5cbmludGVyZmFjZSBTd2l0Y2hEYXNoYm9hcmRQYXlsb2FkIHtcbiAgZGFzaGJvYXJkSWQ6IHN0cmluZztcbiAgZ3Vlc3RUb2tlbjogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgU3dpdGNoRGFzaGJvYXJkUmVzdWx0IHtcbiAgZGFzaGJvYXJkSWQ6IHN0cmluZztcbiAgYWNjZXB0ZWQ6IHRydWU7XG59XG5cbnR5cGUgRGFzaGJvYXJkU3dpdGNoSGFuZGxlciA9IChcbiAgcGF5bG9hZDogU3dpdGNoRGFzaGJvYXJkUGF5bG9hZCxcbikgPT4gUHJvbWlzZTxTd2l0Y2hEYXNoYm9hcmRSZXN1bHQ+O1xuXG5sZXQgZGFzaGJvYXJkU3dpdGNoSGFuZGxlcjogRGFzaGJvYXJkU3dpdGNoSGFuZGxlciB8IHVuZGVmaW5lZDtcblxuY29uc3QgX19DT01QT05FTlRfTkFNRV9fID0gKCkgPT4ge1xuICBjb25zdCB1aUNvbmZpZyA9IHVzZVVpQ29uZmlnKCk7XG5cbiAgY29uc3QgW2Rhc2hib2FyZElkLCBzZXREYXNoYm9hcmRJZF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihcbiAgICBib290c3RyYXBEYXRhLmVtYmVkZGVkIS5kYXNoYm9hcmRfaWQsXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkYXNoYm9hcmRTd2l0Y2hIYW5kbGVyID0gYXN5bmMgKHtcbiAgICAgIGRhc2hib2FyZElkOiByZXF1ZXN0ZWREYXNoYm9hcmRJZCxcbiAgICAgIGd1ZXN0VG9rZW4sXG4gICAgfTogU3dpdGNoRGFzaGJvYXJkUGF5bG9hZCkgPT4ge1xuICAgICAgY29uc3QgbmV4dERhc2hib2FyZElkID0gcmVxdWVzdGVkRGFzaGJvYXJkSWQudHJpbSgpO1xuXG4gICAgICBpZiAoIW5leHREYXNoYm9hcmRJZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ2Rhc2hib2FyZElkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICB0eXBlb2YgZ3Vlc3RUb2tlbiAhPT0gJ3N0cmluZycgfHxcbiAgICAgICAgZ3Vlc3RUb2tlbi50cmltKCkubGVuZ3RoID09PSAwXG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdndWVzdFRva2VuIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgc2V0RGFzaGJvYXJkSWQobnVsbCk7XG5cbiAgICAgIGRpc3BsYXllZFVuYXV0aG9yaXplZFRvYXN0ID0gZmFsc2U7XG5cbiAgICAgIHNldHVwR3Vlc3RDbGllbnQoZ3Vlc3RUb2tlbik7XG5cbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHJlc29sdmUoKSk7XG4gICAgICB9KTtcblxuICAgICAgc2V0RGFzaGJvYXJkSWQobmV4dERhc2hib2FyZElkKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGFzaGJvYXJkSWQ6IG5leHREYXNoYm9hcmRJZCxcbiAgICAgICAgYWNjZXB0ZWQ6IHRydWUsXG4gICAgICB9O1xuICAgIH07XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZGFzaGJvYXJkU3dpdGNoSGFuZGxlciA9IHVuZGVmaW5lZDtcbiAgICB9O1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXVpQ29uZmlnPy5lbWl0RGF0YU1hc2tzKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGxldCBwcmV2aW91c0RhdGFNYXNrID0gc3RvcmUuZ2V0U3RhdGUoKS5kYXRhTWFzaztcblxuICAgIHJldHVybiBzdG9yZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29uc3QgY3VycmVudERhdGFNYXNrID0gc3RvcmUuZ2V0U3RhdGUoKS5kYXRhTWFzaztcblxuICAgICAgaWYgKHByZXZpb3VzRGF0YU1hc2sgIT09IGN1cnJlbnREYXRhTWFzaykge1xuICAgICAgICBTd2l0Y2hib2FyZC5lbWl0KCdvYnNlcnZlRGF0YU1hc2snLCB7XG4gICAgICAgICAgLi4uY3VycmVudERhdGFNYXNrLFxuICAgICAgICAgIC4uLmdldERhdGFNYXNrQ2hhbmdlVHJpZ2dlcihcbiAgICAgICAgICAgIGN1cnJlbnREYXRhTWFzayxcbiAgICAgICAgICAgIHByZXZpb3VzRGF0YU1hc2ssXG4gICAgICAgICAgKSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcHJldmlvdXNEYXRhTWFzayA9IGN1cnJlbnREYXRhTWFzaztcbiAgICAgIH1cbiAgICB9KTtcbiAgfSwgW3VpQ29uZmlnPy5lbWl0RGF0YU1hc2tzXSk7XG5cbiAgaWYgKCFkYXNoYm9hcmRJZCkge1xuICAgIHJldHVybiA8TG9hZGluZyAvPjtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPExhenlEYXNoYm9hcmRQYWdlXG4gICAgICBrZXk9e2Rhc2hib2FyZElkfVxuICAgICAgaWRPclNsdWc9e2Rhc2hib2FyZElkfVxuICAgIC8+XG4gICk7XG59O1xuXCJcIlwiLnJlcGxhY2UoXCJfX0NPTVBPTkVOVF9OQU1FX19cIiwgY29tcG9uZW50X25hbWUpXG5cbiAgICBjb250ZW50ID0gKFxuICAgICAgICBjb250ZW50WzogY29tcG9uZW50X21hdGNoLnN0YXJ0KCldXG4gICAgICAgICsgcmVwbGFjZW1lbnRfY29tcG9uZW50XG4gICAgICAgICsgY29udGVudFtjb21wb25lbnRfbWF0Y2guZW5kKCkgOl1cbiAgICApXG5cbiAgICBzd2l0Y2hib2FyZF9hbmNob3JfY2FuZGlkYXRlcyA9IFtcbiAgICAgICAgKFxuICAgICAgICAgICAgXCIgICAgU3dpdGNoYm9hcmQuZGVmaW5lTWV0aG9kKFwiXG4gICAgICAgICAgICBcIidnZXRTY3JvbGxTaXplJywgZW1iZWRkZWRBcGkuZ2V0U2Nyb2xsU2l6ZSk7XCJcbiAgICAgICAgKSxcbiAgICAgICAgKFxuICAgICAgICAgICAgXCIgICAgU3dpdGNoYm9hcmQuZGVmaW5lTWV0aG9kKFxcXFxuXCJcbiAgICAgICAgICAgIFwiICAgICAgJ2dldFNjcm9sbFNpemUnLFxcXFxuXCJcbiAgICAgICAgICAgIFwiICAgICAgZW1iZWRkZWRBcGkuZ2V0U2Nyb2xsU2l6ZSxcXFxcblwiXG4gICAgICAgICAgICBcIiAgICApO1wiXG4gICAgICAgICksXG4gICAgXVxuXG4gICAgc3dpdGNoYm9hcmRfbWV0aG9kID0gXCJcIlwiICAgIFN3aXRjaGJvYXJkLmRlZmluZU1ldGhvZChcbiAgICAgICdzd2l0Y2hEYXNoYm9hcmQnLFxuICAgICAgYXN5bmMgKFxuICAgICAgICBwYXlsb2FkOiBTd2l0Y2hEYXNoYm9hcmRQYXlsb2FkLFxuICAgICAgKTogUHJvbWlzZTxTd2l0Y2hEYXNoYm9hcmRSZXN1bHQ+ID0+IHtcbiAgICAgICAgaWYgKCFkYXNoYm9hcmRTd2l0Y2hIYW5kbGVyKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgJ1RoZSBlbWJlZGRlZCBkYXNoYm9hcmQgaXMgbm90IHJlYWR5IHRvIHN3aXRjaCcsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkYXNoYm9hcmRTd2l0Y2hIYW5kbGVyKHBheWxvYWQpO1xuICAgICAgfSxcbiAgICApO1xuXG5cIlwiXCJcblxuICAgIGFuY2hvcl9mb3VuZCA9IEZhbHNlXG5cbiAgICBmb3IgYW5jaG9yIGluIHN3aXRjaGJvYXJkX2FuY2hvcl9jYW5kaWRhdGVzOlxuICAgICAgICBpZiBjb250ZW50LmNvdW50KGFuY2hvcikgPT0gMTpcbiAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgYW5jaG9yLFxuICAgICAgICAgICAgICAgIHN3aXRjaGJvYXJkX21ldGhvZCArIGFuY2hvcixcbiAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgYW5jaG9yX2ZvdW5kID0gVHJ1ZVxuICAgICAgICAgICAgYnJlYWtcblxuICAgIGlmIG5vdCBhbmNob3JfZm91bmQ6XG4gICAgICAgIHJhaXNlIFBhdGNoRXJyb3IoXG4gICAgICAgICAgICBcIkNvdWxkIG5vdCBsb2NhdGUgdGhlIGdldFNjcm9sbFNpemUgU3dpdGNoYm9hcmQgbWV0aG9kXCJcbiAgICAgICAgKVxuXG4gICAgZnJvbnRlbmRfcGF0aC53cml0ZV90ZXh0KGNvbnRlbnQsIGVuY29kaW5nPVwidXRmLThcIilcbiAgICBwcmludChmXCJQYXRjaGVkOiB7ZnJvbnRlbmRfcGF0aH1cIilcblxuXG5kZWYgcGF0Y2hfZ3Vlc3RfdG9rZW5fZmV0Y2hfdHlwZShjb250ZW50OiBzdHIpIC0+IHN0cjpcbiAgICBjYW5kaWRhdGVzID0gW1xuICAgICAgICBcImV4cG9ydCB0eXBlIEd1ZXN0VG9rZW5GZXRjaEZuID0gKCkgPT4gUHJvbWlzZTxzdHJpbmc+O1wiLFxuICAgICAgICAoXG4gICAgICAgICAgICBcImV4cG9ydCB0eXBlIEd1ZXN0VG9rZW5GZXRjaEZuID0gXCJcbiAgICAgICAgICAgIFwiKCkgPT4gUHJvbWlzZTxzdHJpbmc+O1wiXG4gICAgICAgICksXG4gICAgXVxuXG4gICAgcmVwbGFjZW1lbnQgPSBcIlwiXCIvLyBTVVBFUlNFVF9TV0lUQ0hBQkxFX0VNQkVEX1NES19QQVRDSFxuLy9cbi8vIGRhc2hib2FyZElkIGlzIHVuZGVmaW5lZCBmb3IgdGhlIGluaXRpYWwgZGFzaGJvYXJkIGJvb3RzdHJhcC5cbi8vIEFmdGVyIGEgc3VjY2Vzc2Z1bCBkYXNoYm9hcmQgc3dpdGNoLCB0b2tlbiByZWZyZXNoZXMgcmVjZWl2ZSB0aGUgYWN0aXZlXG4vLyBkYXNoYm9hcmQgVVVJRC5cbmV4cG9ydCB0eXBlIEd1ZXN0VG9rZW5GZXRjaEZuID0gKFxuICBkYXNoYm9hcmRJZD86IHN0cmluZyxcbikgPT4gUHJvbWlzZTxzdHJpbmc+O1wiXCJcIlxuXG4gICAgZm9yIGNhbmRpZGF0ZSBpbiBjYW5kaWRhdGVzOlxuICAgICAgICBpZiBjb250ZW50LmNvdW50KGNhbmRpZGF0ZSkgPT0gMTpcbiAgICAgICAgICAgIHJldHVybiBjb250ZW50LnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgY2FuZGlkYXRlLFxuICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50LFxuICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICApXG5cbiAgICByYWlzZSBQYXRjaEVycm9yKFwiQ291bGQgbm90IGxvY2F0ZSBHdWVzdFRva2VuRmV0Y2hGblwiKVxuXG5cbmRlZiBwYXRjaF9lbWJlZGRlZF9kYXNoYm9hcmRfdHlwZShjb250ZW50OiBzdHIpIC0+IHN0cjpcbiAgICB0eXBlX3BhdHRlcm4gPSByZS5jb21waWxlKFxuICAgICAgICByXCIoZXhwb3J0XFxcXHMrKD86aW50ZXJmYWNlfHR5cGUpXFxcXHMrRW1iZWRkZWREYXNoYm9hcmRcIlxuICAgICAgICByXCIuKj9cXFxceykoLio/KShcXFxcblxcXFx9OylcIixcbiAgICAgICAgcmUuRE9UQUxMLFxuICAgIClcblxuICAgIG1hdGNoID0gdHlwZV9wYXR0ZXJuLnNlYXJjaChjb250ZW50KVxuXG4gICAgaWYgbm90IG1hdGNoOlxuICAgICAgICByYWlzZSBQYXRjaEVycm9yKFxuICAgICAgICAgICAgXCJDb3VsZCBub3QgbG9jYXRlIHRoZSBFbWJlZGRlZERhc2hib2FyZCBwdWJsaWMgdHlwZVwiXG4gICAgICAgIClcblxuICAgIGJvZHkgPSBtYXRjaC5ncm91cCgyKVxuXG4gICAgaWYgXCJzd2l0Y2hEYXNoYm9hcmQ6XCIgaW4gYm9keTpcbiAgICAgICAgcmV0dXJuIGNvbnRlbnRcblxuICAgIG1ldGhvZCA9IFwiXCJcIlxuICAvKipcbiAgICogUmVwbGFjZXMgRGFzaGJvYXJkUGFnZSBpbiB0aGUgZXhpc3RpbmcgaWZyYW1lIGRvY3VtZW50LlxuICAgKlxuICAgKiBUaGUgdmFsdWUgbXVzdCBiZSB0aGUgdGFyZ2V0IGRhc2hib2FyZCBVVUlEL2lkIGFjY2VwdGVkIGJ5XG4gICAqIERhc2hib2FyZFBhZ2UsIG5vdCB0aGUgZW1iZWRkZWQtY29uZmlndXJhdGlvbiBVVUlEIHVzZWQgaW4gdGhlXG4gICAqIGluaXRpYWwgL2VtYmVkZGVkLzp1dWlkIFVSTC5cbiAgICovXG4gIHN3aXRjaERhc2hib2FyZDogKFxuICAgIGRhc2hib2FyZElkOiBzdHJpbmcsXG4gICkgPT4gUHJvbWlzZTx7XG4gICAgZGFzaGJvYXJkSWQ6IHN0cmluZztcbiAgICBhY2NlcHRlZDogdHJ1ZTtcbiAgfT47XG5cIlwiXCJcblxuICAgIHVwZGF0ZWRfdHlwZSA9IChcbiAgICAgICAgbWF0Y2guZ3JvdXAoMSlcbiAgICAgICAgKyBib2R5LnJzdHJpcCgpXG4gICAgICAgICsgXCJcXFxcblwiXG4gICAgICAgICsgbWV0aG9kLnJzdHJpcCgpXG4gICAgICAgICsgbWF0Y2guZ3JvdXAoMylcbiAgICApXG5cbiAgICByZXR1cm4gKFxuICAgICAgICBjb250ZW50WzogbWF0Y2guc3RhcnQoKV1cbiAgICAgICAgKyB1cGRhdGVkX3R5cGVcbiAgICAgICAgKyBjb250ZW50W21hdGNoLmVuZCgpIDpdXG4gICAgKVxuXG5cbmRlZiBwYXRjaF9pbml0aWFsX2d1ZXN0X3Rva2VuX2ZldGNoKGNvbnRlbnQ6IHN0cikgLT4gc3RyOlxuICAgIGNhbmRpZGF0ZXMgPSBbXG4gICAgICAgIFwiZmV0Y2hHdWVzdFRva2VuKCksXCIsXG4gICAgICAgIFwiYXdhaXQgZmV0Y2hHdWVzdFRva2VuKCksXCIsXG4gICAgXVxuXG4gICAgZm9yIGNhbmRpZGF0ZSBpbiBjYW5kaWRhdGVzOlxuICAgICAgICBpZiBjb250ZW50LmNvdW50KGNhbmRpZGF0ZSkgPj0gMTpcbiAgICAgICAgICAgIHJldHVybiBjb250ZW50LnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgY2FuZGlkYXRlLFxuICAgICAgICAgICAgICAgIGNhbmRpZGF0ZS5yZXBsYWNlKFxuICAgICAgICAgICAgICAgICAgICBcImZldGNoR3Vlc3RUb2tlbigpXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiZmV0Y2hHdWVzdFRva2VuKHVuZGVmaW5lZClcIixcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICApXG5cbiAgICByYWlzZSBQYXRjaEVycm9yKFxuICAgICAgICBcIkNvdWxkIG5vdCBsb2NhdGUgdGhlIGluaXRpYWwgZmV0Y2hHdWVzdFRva2VuIGNhbGxcIlxuICAgIClcblxuXG5kZWYgcGF0Y2hfZ3Vlc3RfdG9rZW5fcmVmcmVzaChjb250ZW50OiBzdHIpIC0+IHN0cjpcbiAgICBwYXR0ZXJucyA9IFtcbiAgICAgICAgcmUuY29tcGlsZShcbiAgICAgICAgICAgIHJcImFzeW5jIGZ1bmN0aW9uIHJlZnJlc2hHdWVzdFRva2VuXFxcXChcXFxcKSBcXFxce1xcXFxzKlwiXG4gICAgICAgICAgICByXCJjb25zdCBuZXdHdWVzdFRva2VuID0gYXdhaXQgZmV0Y2hHdWVzdFRva2VuXFxcXChcXFxcKTtcXFxccypcIlxuICAgICAgICAgICAgclwib3VyUG9ydFxcXFwuZW1pdFxcXFwoXCJcbiAgICAgICAgICAgIHJcIidndWVzdFRva2VuJyxcXFxccypcXFxce1xcXFxzKmd1ZXN0VG9rZW46XFxcXHMqbmV3R3Vlc3RUb2tlblxcXFxzKlxcXFx9XCJcbiAgICAgICAgICAgIHJcIlxcXFwpO1xcXFxzKlwiXG4gICAgICAgICAgICByXCJzZXRUaW1lb3V0XFxcXChcIlxuICAgICAgICAgICAgclwicmVmcmVzaEd1ZXN0VG9rZW4sXFxcXHMqXCJcbiAgICAgICAgICAgIHJcImdldEd1ZXN0VG9rZW5SZWZyZXNoVGltaW5nXFxcXChuZXdHdWVzdFRva2VuXFxcXClcIlxuICAgICAgICAgICAgclwiXFxcXCk7XFxcXHMqXCJcbiAgICAgICAgICAgIHJcIlxcXFx9XCIsXG4gICAgICAgICAgICByZS5ET1RBTEwsXG4gICAgICAgICksXG4gICAgICAgIHJlLmNvbXBpbGUoXG4gICAgICAgICAgICByXCJjb25zdCByZWZyZXNoR3Vlc3RUb2tlbiA9IGFzeW5jIFxcXFwoXFxcXCkgPT4gXFxcXHtcXFxccypcIlxuICAgICAgICAgICAgclwiY29uc3QgbmV3R3Vlc3RUb2tlbiA9IGF3YWl0IGZldGNoR3Vlc3RUb2tlblxcXFwoXFxcXCk7XFxcXHMqXCJcbiAgICAgICAgICAgIHJcIm91clBvcnRcXFxcLmVtaXRcXFxcKFwiXG4gICAgICAgICAgICByXCInZ3Vlc3RUb2tlbicsXFxcXHMqXFxcXHtcXFxccypndWVzdFRva2VuOlxcXFxzKm5ld0d1ZXN0VG9rZW5cXFxccypcXFxcfVwiXG4gICAgICAgICAgICByXCJcXFxcKTtcXFxccypcIlxuICAgICAgICAgICAgclwic2V0VGltZW91dFxcXFwoXCJcbiAgICAgICAgICAgIHJcInJlZnJlc2hHdWVzdFRva2VuLFxcXFxzKlwiXG4gICAgICAgICAgICByXCJnZXRHdWVzdFRva2VuUmVmcmVzaFRpbWluZ1xcXFwobmV3R3Vlc3RUb2tlblxcXFwpXCJcbiAgICAgICAgICAgIHJcIlxcXFwpO1xcXFxzKlwiXG4gICAgICAgICAgICByXCJcXFxcfTtcIixcbiAgICAgICAgICAgIHJlLkRPVEFMTCxcbiAgICAgICAgKSxcbiAgICBdXG5cbiAgICByZXBsYWNlbWVudCA9IFwiXCJcImxldCBhY3RpdmVEYXNoYm9hcmRJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIGFzeW5jIGZ1bmN0aW9uIHJlZnJlc2hHdWVzdFRva2VuKCkge1xuICAgIGNvbnN0IG5ld0d1ZXN0VG9rZW4gPSBhd2FpdCBmZXRjaEd1ZXN0VG9rZW4oXG4gICAgICBhY3RpdmVEYXNoYm9hcmRJZCxcbiAgICApO1xuXG4gICAgb3VyUG9ydC5lbWl0KCdndWVzdFRva2VuJywge1xuICAgICAgZ3Vlc3RUb2tlbjogbmV3R3Vlc3RUb2tlbixcbiAgICB9KTtcblxuICAgIHNldFRpbWVvdXQoXG4gICAgICByZWZyZXNoR3Vlc3RUb2tlbixcbiAgICAgIGdldEd1ZXN0VG9rZW5SZWZyZXNoVGltaW5nKG5ld0d1ZXN0VG9rZW4pLFxuICAgICk7XG4gIH1cIlwiXCJcblxuICAgIGZvciBwYXR0ZXJuIGluIHBhdHRlcm5zOlxuICAgICAgICB1cGRhdGVkLCBjb3VudCA9IHBhdHRlcm4uc3VibihcbiAgICAgICAgICAgIHJlcGxhY2VtZW50LFxuICAgICAgICAgICAgY29udGVudCxcbiAgICAgICAgICAgIGNvdW50PTEsXG4gICAgICAgIClcblxuICAgICAgICBpZiBjb3VudCA9PSAxOlxuICAgICAgICAgICAgcmV0dXJuIHVwZGF0ZWRcblxuICAgIHJhaXNlIFBhdGNoRXJyb3IoXG4gICAgICAgIFwiQ291bGQgbm90IGxvY2F0ZSB0aGUgZ3Vlc3QtdG9rZW4gcmVmcmVzaCBmdW5jdGlvblwiXG4gICAgKVxuXG5cbmRlZiBwYXRjaF9zZGtfZnVuY3Rpb25zKGNvbnRlbnQ6IHN0cikgLT4gc3RyOlxuICAgIGFuY2hvcl9jYW5kaWRhdGVzID0gW1xuICAgICAgICAoXG4gICAgICAgICAgICBcIiAgY29uc3QgZ2V0U2Nyb2xsU2l6ZSA9ICgpID0+IFwiXG4gICAgICAgICAgICBcIm91clBvcnQuZ2V0PFNpemU+KCdnZXRTY3JvbGxTaXplJyk7XCJcbiAgICAgICAgKSxcbiAgICAgICAgKFxuICAgICAgICAgICAgXCIgIGNvbnN0IGdldFNjcm9sbFNpemUgPSAoKSA9PlxcXFxuXCJcbiAgICAgICAgICAgIFwiICAgIG91clBvcnQuZ2V0PFNpemU+KCdnZXRTY3JvbGxTaXplJyk7XCJcbiAgICAgICAgKSxcbiAgICBdXG5cbiAgICBzd2l0Y2hfZnVuY3Rpb24gPSBcIlwiXCIgIGNvbnN0IHN3aXRjaERhc2hib2FyZCA9IGFzeW5jIChcbiAgICBkYXNoYm9hcmRJZDogc3RyaW5nLFxuICApOiBQcm9taXNlPHtcbiAgICBkYXNoYm9hcmRJZDogc3RyaW5nO1xuICAgIGFjY2VwdGVkOiB0cnVlO1xuICB9PiA9PiB7XG4gICAgY29uc3Qgbm9ybWFsaXplZERhc2hib2FyZElkID0gZGFzaGJvYXJkSWQudHJpbSgpO1xuXG4gICAgaWYgKCFub3JtYWxpemVkRGFzaGJvYXJkSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ2Rhc2hib2FyZElkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgZ3Vlc3RUb2tlbiA9IGF3YWl0IGZldGNoR3Vlc3RUb2tlbihcbiAgICAgIG5vcm1hbGl6ZWREYXNoYm9hcmRJZCxcbiAgICApO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgb3VyUG9ydC5nZXQ8e1xuICAgICAgZGFzaGJvYXJkSWQ6IHN0cmluZztcbiAgICAgIGFjY2VwdGVkOiB0cnVlO1xuICAgIH0+KCdzd2l0Y2hEYXNoYm9hcmQnLCB7XG4gICAgICBkYXNoYm9hcmRJZDogbm9ybWFsaXplZERhc2hib2FyZElkLFxuICAgICAgZ3Vlc3RUb2tlbixcbiAgICB9KTtcblxuICAgIGFjdGl2ZURhc2hib2FyZElkID0gbm9ybWFsaXplZERhc2hib2FyZElkO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuXCJcIlwiXG5cbiAgICBmb3IgYW5jaG9yIGluIGFuY2hvcl9jYW5kaWRhdGVzOlxuICAgICAgICBpZiBjb250ZW50LmNvdW50KGFuY2hvcikgPT0gMTpcbiAgICAgICAgICAgIHJldHVybiBjb250ZW50LnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgYW5jaG9yLFxuICAgICAgICAgICAgICAgIHN3aXRjaF9mdW5jdGlvbiArIGFuY2hvcixcbiAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgKVxuXG4gICAgcmFpc2UgUGF0Y2hFcnJvcihcbiAgICAgICAgXCJDb3VsZCBub3QgbG9jYXRlIHRoZSBTREsgZ2V0U2Nyb2xsU2l6ZSBmdW5jdGlvblwiXG4gICAgKVxuXG5cbmRlZiBwYXRjaF9zZGtfcmV0dXJuX29iamVjdChjb250ZW50OiBzdHIpIC0+IHN0cjpcbiAgICBjYW5kaWRhdGVzID0gW1xuICAgICAgICBcIiAgICBzZXRUaGVtZU1vZGUsXFxcXG4gIH07XCIsXG4gICAgICAgIFwiICAgIHNldFRoZW1lTW9kZSxcXFxcbiAgICB1bm1vdW50LFxcXFxuICB9O1wiLFxuICAgICAgICBcIiAgICB1bm1vdW50LFxcXFxuICAgIHNldFRoZW1lTW9kZSxcXFxcbiAgfTtcIixcbiAgICBdXG5cbiAgICBmb3IgY2FuZGlkYXRlIGluIGNhbmRpZGF0ZXM6XG4gICAgICAgIGlmIGNvbnRlbnQuY291bnQoY2FuZGlkYXRlKSA9PSAxOlxuICAgICAgICAgICAgbGluZXMgPSBjYW5kaWRhdGUuc3BsaXRsaW5lcygpXG5cbiAgICAgICAgICAgIGNsb3NpbmcgPSBsaW5lcy5wb3AoKVxuICAgICAgICAgICAgYm9keSA9IFwiXFxcXG5cIi5qb2luKGxpbmVzKVxuXG4gICAgICAgICAgICByZXR1cm4gY29udGVudC5yZXBsYWNlKFxuICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSxcbiAgICAgICAgICAgICAgICBib2R5XG4gICAgICAgICAgICAgICAgKyBcIlxcXFxuXCJcbiAgICAgICAgICAgICAgICArIFwiICAgIHN3aXRjaERhc2hib2FyZCxcXFxcblwiXG4gICAgICAgICAgICAgICAgKyBjbG9zaW5nLFxuICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICApXG5cbiAgICByYWlzZSBQYXRjaEVycm9yKFxuICAgICAgICBcIkNvdWxkIG5vdCBsb2NhdGUgdGhlIEVtYmVkZGVkRGFzaGJvYXJkIHJldHVybiBvYmplY3RcIlxuICAgIClcblxuXG5kZWYgcGF0Y2hfc2RrKHNka19wYXRoOiBQYXRoKSAtPiBOb25lOlxuICAgIGNvbnRlbnQgPSBzZGtfcGF0aC5yZWFkX3RleHQoZW5jb2Rpbmc9XCJ1dGYtOFwiKVxuXG4gICAgaWYgXCJTVVBFUlNFVF9TV0lUQ0hBQkxFX0VNQkVEX1NES19QQVRDSFwiIGluIGNvbnRlbnQ6XG4gICAgICAgIHByaW50KGZcIkFscmVhZHkgcGF0Y2hlZDoge3Nka19wYXRofVwiKVxuICAgICAgICByZXR1cm5cblxuICAgIGNvbnRlbnQgPSBwYXRjaF9ndWVzdF90b2tlbl9mZXRjaF90eXBlKGNvbnRlbnQpXG4gICAgY29udGVudCA9IHBhdGNoX2VtYmVkZGVkX2Rhc2hib2FyZF90eXBlKGNvbnRlbnQpXG4gICAgY29udGVudCA9IHBhdGNoX2luaXRpYWxfZ3Vlc3RfdG9rZW5fZmV0Y2goY29udGVudClcbiAgICBjb250ZW50ID0gcGF0Y2hfZ3Vlc3RfdG9rZW5fcmVmcmVzaChjb250ZW50KVxuICAgIGNvbnRlbnQgPSBwYXRjaF9zZGtfZnVuY3Rpb25zKGNvbnRlbnQpXG4gICAgY29udGVudCA9IHBhdGNoX3Nka19yZXR1cm5fb2JqZWN0KGNvbnRlbnQpXG5cbiAgICBzZGtfcGF0aC53cml0ZV90ZXh0KGNvbnRlbnQsIGVuY29kaW5nPVwidXRmLThcIilcbiAgICBwcmludChmXCJQYXRjaGVkOiB7c2RrX3BhdGh9XCIpXG5cblxuZGVmIG1haW4oKSAtPiBpbnQ6XG4gICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoXG4gICAgICAgIGRlc2NyaXB0aW9uPShcbiAgICAgICAgICAgIFwiQXBwbHkgdGhlIHN3aXRjaGFibGUtZGFzaGJvYXJkIHBhdGNoIHRvIGEgXCJcbiAgICAgICAgICAgIFwiU3VwZXJzZXQgNi4xLnggc291cmNlIGNoZWNrb3V0LlwiXG4gICAgICAgIClcbiAgICApXG5cbiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KFxuICAgICAgICBcInN1cGVyc2V0X3Jvb3RcIixcbiAgICAgICAgdHlwZT1QYXRoLFxuICAgICAgICBoZWxwPVwiUGF0aCB0byB0aGUgQXBhY2hlIFN1cGVyc2V0IHNvdXJjZSBjaGVja291dFwiLFxuICAgIClcblxuICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpXG4gICAgcm9vdCA9IGFyZ3Muc3VwZXJzZXRfcm9vdC5yZXNvbHZlKClcblxuICAgIGZyb250ZW5kX3BhdGggPSByb290IC8gRlJPTlRFTkRfRklMRVxuICAgIHNka19wYXRoID0gcm9vdCAvIFNES19GSUxFXG5cbiAgICBtaXNzaW5nID0gW1xuICAgICAgICBwYXRoXG4gICAgICAgIGZvciBwYXRoIGluIFtmcm9udGVuZF9wYXRoLCBzZGtfcGF0aF1cbiAgICAgICAgaWYgbm90IHBhdGguZXhpc3RzKClcbiAgICBdXG5cbiAgICBpZiBtaXNzaW5nOlxuICAgICAgICBwcmludChcbiAgICAgICAgICAgIFwiVGhlIHRhcmdldCBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYSBjb21wYXRpYmxlIFwiXG4gICAgICAgICAgICBcIlN1cGVyc2V0IHNvdXJjZSBjaGVja291dC5cIixcbiAgICAgICAgICAgIGZpbGU9c3lzLnN0ZGVycixcbiAgICAgICAgKVxuXG4gICAgICAgIGZvciBtaXNzaW5nX3BhdGggaW4gbWlzc2luZzpcbiAgICAgICAgICAgIHByaW50KGZcIk1pc3Npbmc6IHttaXNzaW5nX3BhdGh9XCIsIGZpbGU9c3lzLnN0ZGVycilcblxuICAgICAgICByZXR1cm4gMlxuXG4gICAgdHJ5OlxuICAgICAgICBwYXRjaF9mcm9udGVuZChmcm9udGVuZF9wYXRoKVxuICAgICAgICBwYXRjaF9zZGsoc2RrX3BhdGgpXG4gICAgZXhjZXB0IFBhdGNoRXJyb3IgYXMgZXJyb3I6XG4gICAgICAgIHByaW50KGZcIlBhdGNoIGZhaWxlZDoge2Vycm9yfVwiLCBmaWxlPXN5cy5zdGRlcnIpXG4gICAgICAgIHJldHVybiAxXG5cbiAgICBwcmludChcIlBhdGNoIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuXCIpXG4gICAgcmV0dXJuIDBcblxuXG5pZiBfX25hbWVfXyA9PSBcIl9fbWFpbl9fXCI6XG4gICAgcmFpc2UgU3lzdGVtRXhpdChtYWluKCkpXG5gO1xuY29uc3QgVkVSSUZZX1BBVENIX1NIID0gYCMhL3Vzci9iaW4vZW52IGJhc2hcblxuc2V0IC1ldW8gcGlwZWZhaWxcblxuU1VQRVJTRVRfUk9PVD1cXCR7MTo/VXNhZ2U6IHZlcmlmeV9wYXRjaC5zaCAvcGF0aC90by9zdXBlcnNldH1cblxuRlJPTlRFTkRfRklMRT1cIiRTVVBFUlNFVF9ST09UL3N1cGVyc2V0LWZyb250ZW5kL3NyYy9lbWJlZGRlZC9pbmRleC50c3hcIlxuU0RLX0ZJTEU9XCIkU1VQRVJTRVRfUk9PVC9zdXBlcnNldC1lbWJlZGRlZC1zZGsvc3JjL2luZGV4LnRzXCJcblxudGVzdCAtZiBcIiRGUk9OVEVORF9GSUxFXCJcbnRlc3QgLWYgXCIkU0RLX0ZJTEVcIlxuXG5ncmVwIC1xIFxcXFxcbiAgXCJTVVBFUlNFVF9TV0lUQ0hBQkxFX0VNQkVEX1BBVENIXCIgXFxcXFxuICBcIiRGUk9OVEVORF9GSUxFXCJcblxuZ3JlcCAtcSBcXFxcXG4gIFwiJ3N3aXRjaERhc2hib2FyZCdcIiBcXFxcXG4gIFwiJEZST05URU5EX0ZJTEVcIlxuXG5ncmVwIC1xIFxcXFxcbiAgXCJkYXNoYm9hcmRTd2l0Y2hIYW5kbGVyXCIgXFxcXFxuICBcIiRGUk9OVEVORF9GSUxFXCJcblxuZ3JlcCAtcSBcXFxcXG4gIFwiU1VQRVJTRVRfU1dJVENIQUJMRV9FTUJFRF9TREtfUEFUQ0hcIiBcXFxcXG4gIFwiJFNES19GSUxFXCJcblxuZ3JlcCAtcSBcXFxcXG4gIFwic3dpdGNoRGFzaGJvYXJkOlwiIFxcXFxcbiAgXCIkU0RLX0ZJTEVcIlxuXG5ncmVwIC1xIFxcXFxcbiAgXCJhY3RpdmVEYXNoYm9hcmRJZFwiIFxcXFxcbiAgXCIkU0RLX0ZJTEVcIlxuXG5ncmVwIC1xIFxcXFxcbiAgXCJmZXRjaEd1ZXN0VG9rZW4oXCIgXFxcXFxuICBcIiRTREtfRklMRVwiXG5cbmVjaG8gXCJUaGUgc3dpdGNoYWJsZS1kYXNoYm9hcmQgcGF0Y2ggaXMgcHJlc2VudC5cIlxuYDtcbmNvbnN0IEJVSUxEX1NES19TSCA9IGAjIS91c3IvYmluL2VudiBiYXNoXG5cbnNldCAtZXVvIHBpcGVmYWlsXG5cblNVUEVSU0VUX1JPT1Q9XFwkezE6P1VzYWdlOiBidWlsZC1zZGsuc2ggL3BhdGgvdG8vc3VwZXJzZXR9XG5cblNES19ST09UPVwiJFNVUEVSU0VUX1JPT1Qvc3VwZXJzZXQtZW1iZWRkZWQtc2RrXCJcblxuaWYgWyAhIC1mIFwiJFNES19ST09UL3BhY2thZ2UuanNvblwiIF07IHRoZW5cbiAgZWNobyBcIk1pc3NpbmcgU0RLIHBhY2thZ2U6ICRTREtfUk9PVFwiID4mMlxuICBleGl0IDFcbmZpXG5cbmNkIFwiJFNES19ST09UXCJcblxubnBtIGNpXG5cbm5wbSBydW4gYnVpbGRcblxuZWNob1xuZWNobyBcIkVtYmVkZGVkIFNESyBidWlsZCBjb21wbGV0ZWQuXCJcbmVjaG8gXCJPdXRwdXQgZGlyZWN0b3J5OlwiXG5maW5kIC4gXFxcXFxuICAtbWF4ZGVwdGggMiBcXFxcXG4gIC10eXBlIGQgXFxcXFxuICBcXFxcKCAtbmFtZSBkaXN0IC1vIC1uYW1lIGxpYiBcXFxcKSBcXFxcXG4gIC1wcmludFxuYDtcbmNvbnN0IEJVSUxEX0ZST05URU5EX1NIID0gYCMhL3Vzci9iaW4vZW52IGJhc2hcblxuc2V0IC1ldW8gcGlwZWZhaWxcblxuU1VQRVJTRVRfUk9PVD1cXCR7MTo/VXNhZ2U6IGJ1aWxkLXN1cGVyc2V0LWZyb250ZW5kLnNoIC9wYXRoL3RvL3N1cGVyc2V0fVxuXG5GUk9OVEVORF9ST09UPVwiJFNVUEVSU0VUX1JPT1Qvc3VwZXJzZXQtZnJvbnRlbmRcIlxuXG5pZiBbICEgLWYgXCIkRlJPTlRFTkRfUk9PVC9wYWNrYWdlLmpzb25cIiBdOyB0aGVuXG4gIGVjaG8gXCJNaXNzaW5nIFN1cGVyc2V0IGZyb250ZW5kOiAkRlJPTlRFTkRfUk9PVFwiID4mMlxuICBleGl0IDFcbmZpXG5cbmNkIFwiJEZST05URU5EX1JPT1RcIlxuXG5ucG0gY2lcblxubnBtIHJ1biBidWlsZFxuXG5lY2hvIFwiU3VwZXJzZXQgZnJvbnRlbmQgYnVpbGQgY29tcGxldGVkLlwiXG5gO1xuY29uc3QgUEFUQ0hfQU5EX0JVSUxEX1NIID0gYCMhL3Vzci9iaW4vZW52IGJhc2hcblxuc2V0IC1ldW8gcGlwZWZhaWxcblxuU1VQRVJTRVRfUk9PVD1cXCR7MTo/VXNhZ2U6IHBhdGNoLWFuZC1idWlsZC5zaCAvcGF0aC90by9zdXBlcnNldH1cblxuU0NSSVBUX0RJUj0kKFxuICBjZCBcIiQoZGlybmFtZSBcIlxcJHtCQVNIX1NPVVJDRVswXX1cIilcIlxuICBwd2RcbilcblxuUFJPSkVDVF9ST09UPSQoXG4gIGNkIFwiJFNDUklQVF9ESVIvLi5cIlxuICBwd2RcbilcblxucHl0aG9uMyBcXFxcXG4gIFwiJFBST0pFQ1RfUk9PVC9wYXRjaGVzL2FwcGx5X3N1cGVyc2V0XzZfMV9wYXRjaC5weVwiIFxcXFxcbiAgXCIkU1VQRVJTRVRfUk9PVFwiXG5cblwiJFBST0pFQ1RfUk9PVC9wYXRjaGVzL3ZlcmlmeV9wYXRjaC5zaFwiIFxcXFxcbiAgXCIkU1VQRVJTRVRfUk9PVFwiXG5cblwiJFNDUklQVF9ESVIvYnVpbGQtc2RrLnNoXCIgXFxcXFxuICBcIiRTVVBFUlNFVF9ST09UXCJcblxuXCIkU0NSSVBUX0RJUi9idWlsZC1zdXBlcnNldC1mcm9udGVuZC5zaFwiIFxcXFxcbiAgXCIkU1VQRVJTRVRfUk9PVFwiXG5cbmVjaG9cbmVjaG8gXCJQYXRjaCBhbmQgZnJvbnRlbmQgYnVpbGRzIGNvbXBsZXRlZC5cIlxuYDtcbmNvbnN0IEJVSUxEX0RPQ0tFUl9TSCA9IGAjIS91c3IvYmluL2VudiBiYXNoXG5cbnNldCAtZXVvIHBpcGVmYWlsXG5cblNVUEVSU0VUX1JPT1Q9XFwkezE6P1VzYWdlOiBidWlsZC1kb2NrZXItaW1hZ2Uuc2ggL3BhdGgvdG8vc3VwZXJzZXQgW2ltYWdlLXRhZ119XG5JTUFHRV9UQUc9XFwkezI6LWxvY2FsL3N1cGVyc2V0LXN3aXRjaGFibGU6Ni4xLjB9XG5cblNDUklQVF9ESVI9JChcbiAgY2QgXCIkKGRpcm5hbWUgXCJcXCR7QkFTSF9TT1VSQ0VbMF19XCIpXCJcbiAgcHdkXG4pXG5cblBST0pFQ1RfUk9PVD0kKFxuICBjZCBcIiRTQ1JJUFRfRElSLy4uXCJcbiAgcHdkXG4pXG5cbnB5dGhvbjMgXFxcXFxuICBcIiRQUk9KRUNUX1JPT1QvcGF0Y2hlcy9hcHBseV9zdXBlcnNldF82XzFfcGF0Y2gucHlcIiBcXFxcXG4gIFwiJFNVUEVSU0VUX1JPT1RcIlxuXG5cIiRQUk9KRUNUX1JPT1QvcGF0Y2hlcy92ZXJpZnlfcGF0Y2guc2hcIiBcXFxcXG4gIFwiJFNVUEVSU0VUX1JPT1RcIlxuXG5jZCBcIiRTVVBFUlNFVF9ST09UXCJcblxuZG9ja2VyIGJ1aWxkIFxcXFxcbiAgLS10YXJnZXQgbGVhbiBcXFxcXG4gIC0tdGFnIFwiJElNQUdFX1RBR1wiIFxcXFxcbiAgLlxuXG5lY2hvIFwiQnVpbHQgRG9ja2VyIGltYWdlOiAkSU1BR0VfVEFHXCJcbmA7XG5jb25zdCBSRUFETUUgPSBgIyAke1NVUEVSU0VUX1BMVUdJTl9JRH1cblxuTXVsdGktdGVuYW50LCBvcmctYWdub3N0aWMgU3VwZXJzZXQgZGFzaGJvYXJkIGVtYmVkIHBsdWdpbiAocGF0Y2gtYW5kLWJ1aWxkIHN0cmF0ZWd5KS5cblxuVGhpcyBpcyBub3QgYSBnZW5lcmF0ZWQgcGx1Z2luIGxpa2UgdGhlIEtpYmFuYSB2YXJpYW50LiBJbnN0ZWFkLCBEZWNhZiBob2xkc1xucGF0Y2ggc2NyaXB0cyB0aGF0IG1vZGlmeSBTdXBlcnNldCdzIGludGVybmFsIGVtYmVkZGVkIGZyb250ZW5kIGFuZCBlbWJlZGRlZFxuU0RLIHNvdXJjZSBmaWxlcyB0byBhZGQgYSBcXGBzd2l0Y2hEYXNoYm9hcmRcXGAgbWV0aG9kLiBUaGUgZXhpc3RpbmcgaWZyYW1lXG5lbGVtZW50LCBkb2N1bWVudCwgY29udGVudFdpbmRvdywgUmVhY3QgcnVudGltZSwgYW5kIFN3aXRjaGJvYXJkIE1lc3NhZ2VDaGFubmVsXG5hcmUgcHJlc2VydmVkIGFjcm9zcyBkYXNoYm9hcmQgc3dpdGNoZXMuXG5cbiMjIFdoYXQgaXQgcGF0Y2hlc1xuXG4tIFxcYHN1cGVyc2V0LWZyb250ZW5kL3NyYy9lbWJlZGRlZC9pbmRleC50c3hcXGAg4oCUIGFkZHMgXFxgc3dpdGNoRGFzaGJvYXJkXFxgIHRvIHRoZVxuICBTd2l0Y2hib2FyZCBjaGFubmVsOyByZXBsYWNlcyBvbmx5IFxcYERhc2hib2FyZFBhZ2VcXGAuXG4tIFxcYHN1cGVyc2V0LWVtYmVkZGVkLXNkay9zcmMvaW5kZXgudHNcXGAg4oCUIGFkZHNcbiAgXFxgZW1iZWRkZWREYXNoYm9hcmQuc3dpdGNoRGFzaGJvYXJkKGRhc2hib2FyZElkKVxcYDsgcmVxdWVzdHMgYSBndWVzdCB0b2tlbiBmb3JcbiAgdGhlIHNlbGVjdGVkIGRhc2hib2FyZDsgcmVmcmVzaGVzIGZ1dHVyZSBndWVzdCB0b2tlbnMgZm9yIHRoZSBhY3RpdmUgZGFzaGJvYXJkLlxuXG4jIyBCdWlsZFxuXG5cXGBcXGBcXGBiYXNoXG4jIEFwcGx5IHBhdGNoICsgdmVyaWZ5ICsgYnVpbGQgU0RLICsgYnVpbGQgZnJvbnRlbmRcbmJ1aWxkL3BhdGNoLWFuZC1idWlsZC5zaCAvcGF0aC90by9zdXBlcnNldFxuXG4jIE9yIGJ1aWxkIGEgRG9ja2VyIGltYWdlXG5idWlsZC9idWlsZC1kb2NrZXItaW1hZ2Uuc2ggL3BhdGgvdG8vc3VwZXJzZXQgcmVnaXN0cnkuZXhhbXBsZS5jb20vc3VwZXJzZXQtc3dpdGNoYWJsZTo2LjEuMFxuXFxgXFxgXFxgXG5cblRoZSBwYXRjaGVkIFNESyBtdXN0IGJlIHBhY2tlZCBhbmQgaW5zdGFsbGVkIGludG8gdGhlIEFuZ3VsYXIgYXBwbGljYXRpb246XG5cblxcYFxcYFxcYGJhc2hcbmNkIC9wYXRoL3RvL3N1cGVyc2V0L3N1cGVyc2V0LWVtYmVkZGVkLXNka1xubnBtIGNpICYmIG5wbSBydW4gYnVpbGQgJiYgbnBtIHBhY2tcbmNkIC9wYXRoL3RvL2FuZ3VsYXItYXBwXG5ucG0gaW5zdGFsbCAvcGF0aC90by9zdXBlcnNldC9zdXBlcnNldC1lbWJlZGRlZC1zZGsvc3VwZXJzZXQtdWktZW1iZWRkZWQtc2RrLSoudGd6XG5cXGBcXGBcXGBcblxuVmVyc2lvbjogJHtTVVBFUlNFVF9QTFVHSU5fVkVSU0lPTn1cbmA7XG4vKipcbiAqIFJldHVybnMgdGhlIGZ1bGwgc2V0IG9mIHBhdGNoIGFuZCBidWlsZCBzY3JpcHQgZmlsZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdXBlcnNldFBhdGNoRmlsZXMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgeyBwYXRoOiBcInBhdGNoZXMvYXBwbHlfc3VwZXJzZXRfNl8xX3BhdGNoLnB5XCIsIGNvbnRlbnQ6IEFQUExZX1BBVENIX1BZLCBleGVjdXRhYmxlOiB0cnVlIH0sXG4gICAgICAgIHsgcGF0aDogXCJwYXRjaGVzL3ZlcmlmeV9wYXRjaC5zaFwiLCBjb250ZW50OiBWRVJJRllfUEFUQ0hfU0gsIGV4ZWN1dGFibGU6IHRydWUgfSxcbiAgICAgICAgeyBwYXRoOiBcImJ1aWxkL2J1aWxkLXNkay5zaFwiLCBjb250ZW50OiBCVUlMRF9TREtfU0gsIGV4ZWN1dGFibGU6IHRydWUgfSxcbiAgICAgICAgeyBwYXRoOiBcImJ1aWxkL2J1aWxkLXN1cGVyc2V0LWZyb250ZW5kLnNoXCIsIGNvbnRlbnQ6IEJVSUxEX0ZST05URU5EX1NILCBleGVjdXRhYmxlOiB0cnVlIH0sXG4gICAgICAgIHsgcGF0aDogXCJidWlsZC9wYXRjaC1hbmQtYnVpbGQuc2hcIiwgY29udGVudDogUEFUQ0hfQU5EX0JVSUxEX1NILCBleGVjdXRhYmxlOiB0cnVlIH0sXG4gICAgICAgIHsgcGF0aDogXCJidWlsZC9idWlsZC1kb2NrZXItaW1hZ2Uuc2hcIiwgY29udGVudDogQlVJTERfRE9DS0VSX1NILCBleGVjdXRhYmxlOiB0cnVlIH0sXG4gICAgICAgIHsgcGF0aDogXCJSRUFETUUubWRcIiwgY29udGVudDogUkVBRE1FIH0sXG4gICAgXTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRHVnRjR3hoZEdWekxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZMaTR2TGk0dmMzSmpMM0JzZFdkcGJuTXZjM1Z3WlhKelpYUXZkR1Z0Y0d4aGRHVnpMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQk96czdPenM3T3pzN096czdPMGRCWVVjN1FVRkRTQ3hQUVVGUExFVkJRVVVzYTBKQlFXdENMRVZCUVVVc2RVSkJRWFZDTEVWQlFVVXNjMEpCUVcxQ08wRkJWM3BGTEUxQlFVMHNZMEZCWXl4SFFVRkhPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3p0RFFXZHRRblJDTEVOQlFVTTdRVUZGUml4TlFVRk5MR1ZCUVdVc1IwRkJSenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN1EwRjVRM1pDTEVOQlFVTTdRVUZGUml4TlFVRk5MRmxCUVZrc1IwRkJSenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPME5CTWtKd1FpeERRVUZETzBGQlJVWXNUVUZCVFN4cFFrRkJhVUlzUjBGQlJ6czdPenM3T3pzN096czdPenM3T3pzN096czdRMEZ2UW5wQ0xFTkJRVU03UVVGRlJpeE5RVUZOTEd0Q1FVRnJRaXhIUVVGSE96czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPME5CSzBJeFFpeERRVUZETzBGQlJVWXNUVUZCVFN4bFFVRmxMRWRCUVVjN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPME5CWjBOMlFpeERRVUZETzBGQlJVWXNUVUZCVFN4TlFVRk5MRWRCUVVjc1MwRkJTeXhyUWtGQmEwSTdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdWMEZ4UXpOQ0xIVkNRVUYxUWp0RFFVTnFReXhEUVVGRE8wRkJSVVk3TzBkQlJVYzdRVUZEU0N4TlFVRk5MRlZCUVZVc2EwSkJRV3RDTzBsQlEyaERMRTlCUVU4N1VVRkRUQ3hGUVVGRkxFbEJRVWtzUlVGQlJTeHhRMEZCY1VNc1JVRkJSU3hQUVVGUExFVkJRVVVzWTBGQll5eEZRVUZGTEZWQlFWVXNSVUZCUlN4SlFVRkpMRVZCUVVVN1VVRkRNVVlzUlVGQlJTeEpRVUZKTEVWQlFVVXNlVUpCUVhsQ0xFVkJRVVVzVDBGQlR5eEZRVUZGTEdWQlFXVXNSVUZCUlN4VlFVRlZMRVZCUVVVc1NVRkJTU3hGUVVGRk8xRkJReTlGTEVWQlFVVXNTVUZCU1N4RlFVRkZMRzlDUVVGdlFpeEZRVUZGTEU5QlFVOHNSVUZCUlN4WlFVRlpMRVZCUVVVc1ZVRkJWU3hGUVVGRkxFbEJRVWtzUlVGQlJUdFJRVU4yUlN4RlFVRkZMRWxCUVVrc1JVRkJSU3hyUTBGQmEwTXNSVUZCUlN4UFFVRlBMRVZCUVVVc2FVSkJRV2xDTEVWQlFVVXNWVUZCVlN4RlFVRkZMRWxCUVVrc1JVRkJSVHRSUVVNeFJpeEZRVUZGTEVsQlFVa3NSVUZCUlN3d1FrRkJNRUlzUlVGQlJTeFBRVUZQTEVWQlFVVXNhMEpCUVd0Q0xFVkJRVVVzVlVGQlZTeEZRVUZGTEVsQlFVa3NSVUZCUlR0UlFVTnVSaXhGUVVGRkxFbEJRVWtzUlVGQlJTdzJRa0ZCTmtJc1JVRkJSU3hQUVVGUExFVkJRVVVzWlVGQlpTeEZRVUZGTEZWQlFWVXNSVUZCUlN4SlFVRkpMRVZCUVVVN1VVRkRia1lzUlVGQlJTeEpRVUZKTEVWQlFVVXNWMEZCVnl4RlFVRkZMRTlCUVU4c1JVRkJSU3hOUVVGTkxFVkJRVVU3UzBGRGRrTXNRMEZCUXp0QlFVTktMRU5CUVVNaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFQnRiMlIxYkdVZ2FXNTBaV2R5WVhScGIyNXpMM0JzZFdkcGJuTXZjM1Z3WlhKelpYUXZkR1Z0Y0d4aGRHVnpYRzRnS2lCQWMzVnRiV0Z5ZVNCUVlYUmphQ0JoYm1RZ1luVnBiR1FnYzJOeWFYQjBJSFJsYlhCc1lYUmxjeUJtYjNJZ2RHaGxJRk4xY0dWeWMyVjBJR1Z0WW1Wa0lIQnNkV2RwYmk1Y2JpQXFJRUJrWlhOamNtbHdkR2x2YmlCSWIyeGtjeUJoYkd3Z2NHRjBZMmdnYzJOeWFYQjBjeUFvVUhsMGFHOXVJQ3NnUW1GemFDa2dZVzVrSUdKMWFXeGtJSE5qY21sd2RITWdZWE5jYmlBcUlITjBjbWx1WnlCMFpXMXdiR0YwWlhNdUlGUm9aWE5sSUdGeVpTQnRZWFJsY21saGJHbDZaV1FnYjI1MGJ5QmthWE5ySUdKNUlIUm9aU0JwYm5OMFlXeHNaWEl1SUVSbFkyRm1YRzRnS2lCa2IyVnpJRzV2ZENCblpXNWxjbUYwWlNCdVpYY2dVM1Z3WlhKelpYUWdjMjkxY21ObElPS0FsQ0JwZENCd1lYUmphR1Z6SUdWNGFYTjBhVzVuSUdsdWRHVnlibUZzSUdacGJHVnpYRzRnS2lBb1lITjFjR1Z5YzJWMExXWnliMjUwWlc1a0wzTnlZeTlsYldKbFpHUmxaQzlwYm1SbGVDNTBjM2hnSUdGdVpGeHVJQ29nWUhOMWNHVnljMlYwTFdWdFltVmtaR1ZrTFhOa2F5OXpjbU12YVc1a1pYZ3VkSE5nS1NCbWIyeHNiM2RwYm1jZ2RHaGxJSEpsWm1WeVpXNWpaU0JwYlhCc1pXMWxiblJoZEdsdmJseHVJQ29nWm5KdmJTQkVSVU5CUmkwME1DRENwemt1WEc0Z0tseHVJQ29nVkdobElIQmhkR05vSUdGa1pITWdZU0JnYzNkcGRHTm9SR0Z6YUdKdllYSmtZQ0J0WlhSb2IyUWdkRzhnVTNWd1pYSnpaWFFuY3lCbGVHbHpkR2x1WnlCVGQybDBZMmhpYjJGeVpGeHVJQ29nWTJoaGJtNWxiQ3dnY21Wd2JHRmphVzVuSUc5dWJIa2dZRVJoYzJoaWIyRnlaRkJoWjJWZ0lIZG9hV3hsSUd0bFpYQnBibWNnZEdobElHbG1jbUZ0WlNCbGJHVnRaVzUwTEZ4dUlDb2daRzlqZFcxbGJuUXNJR052Ym5SbGJuUlhhVzVrYjNjc0lGSmxZV04wSUhKMWJuUnBiV1VzSUdGdVpDQnRaWE56WVdkbElHTm9ZVzV1Wld3Z1lXeHBkbVV1WEc0Z0tpOWNibWx0Y0c5eWRDQjdJRk5WVUVWU1UwVlVYMUJNVlVkSlRsOUpSQ3dnVTFWUVJWSlRSVlJmVUV4VlIwbE9YMVpGVWxOSlQwNGdmU0JtY205dElGd2lMaTl0WVc1cFptVnpkRndpTzF4dVhHNWxlSEJ2Y25RZ2FXNTBaWEptWVdObElGTjFjR1Z5YzJWMFVHRjBZMmhHYVd4bElIdGNiaUFnTHlvcUlGSmxiR0YwYVhabElIQmhkR2dnZDJsMGFHbHVJSFJvWlNCMFlYSm5aWFFnWkdseVpXTjBiM0o1TGlBcUwxeHVJQ0J3WVhSb09pQnpkSEpwYm1jN1hHNGdJQzhxS2lCR2FXeGxJR052Ym5SbGJuUnpMaUFxTDF4dUlDQmpiMjUwWlc1ME9pQnpkSEpwYm1jN1hHNGdJQzhxS2lCWGFHVjBhR1Z5SUhSdklHMWhjbXNnZEdobElHWnBiR1VnWlhobFkzVjBZV0pzWlNCdmJpQlFUMU5KV0M0Z0tpOWNiaUFnWlhobFkzVjBZV0pzWlQ4NklHSnZiMnhsWVc0N1hHNTlYRzVjYm1OdmJuTjBJRUZRVUV4WlgxQkJWRU5JWDFCWklEMGdZQ01oTDNWemNpOWlhVzR2Wlc1MklIQjVkR2h2YmpOY2JseHVabkp2YlNCZlgyWjFkSFZ5WlY5ZklHbHRjRzl5ZENCaGJtNXZkR0YwYVc5dWMxeHVYRzVwYlhCdmNuUWdZWEpuY0dGeWMyVmNibWx0Y0c5eWRDQnlaVnh1YVcxd2IzSjBJSE41YzF4dVpuSnZiU0J3WVhSb2JHbGlJR2x0Y0c5eWRDQlFZWFJvWEc1Y2JseHVSbEpQVGxSRlRrUmZSa2xNUlNBOUlGQmhkR2dvWENKemRYQmxjbk5sZEMxbWNtOXVkR1Z1WkM5emNtTXZaVzFpWldSa1pXUXZhVzVrWlhndWRITjRYQ0lwWEc1VFJFdGZSa2xNUlNBOUlGQmhkR2dvWENKemRYQmxjbk5sZEMxbGJXSmxaR1JsWkMxelpHc3ZjM0pqTDJsdVpHVjRMblJ6WENJcFhHNWNibHh1WTJ4aGMzTWdVR0YwWTJoRmNuSnZjaWhTZFc1MGFXMWxSWEp5YjNJcE9seHVJQ0FnSUhCaGMzTmNibHh1WEc1a1pXWWdjbVZ3YkdGalpWOXZibU5sS0Z4dUlDQWdJR052Ym5SbGJuUTZJSE4wY2l4Y2JpQWdJQ0J2YkdRNklITjBjaXhjYmlBZ0lDQnVaWGM2SUhOMGNpeGNiaUFnSUNCa1pYTmpjbWx3ZEdsdmJqb2djM1J5TEZ4dUtTQXRQaUJ6ZEhJNlhHNGdJQ0FnWTI5MWJuUWdQU0JqYjI1MFpXNTBMbU52ZFc1MEtHOXNaQ2xjYmx4dUlDQWdJR2xtSUdOdmRXNTBJQ0U5SURFNlhHNGdJQ0FnSUNBZ0lISmhhWE5sSUZCaGRHTm9SWEp5YjNJb1hHNGdJQ0FnSUNBZ0lDQWdJQ0JtWENKN1pHVnpZM0pwY0hScGIyNTlPaUJsZUhCbFkzUmxaQ0JsZUdGamRHeDVJRzl1WlNCdlkyTjFjbkpsYm1ObExDQm1iM1Z1WkNCN1kyOTFiblI5WENKY2JpQWdJQ0FnSUNBZ0tWeHVYRzRnSUNBZ2NtVjBkWEp1SUdOdmJuUmxiblF1Y21Wd2JHRmpaU2h2YkdRc0lHNWxkeXdnTVNsY2JseHVYRzVrWldZZ2NtVndiR0ZqWlY5eVpXZGxlRjl2Ym1ObEtGeHVJQ0FnSUdOdmJuUmxiblE2SUhOMGNpeGNiaUFnSUNCd1lYUjBaWEp1T2lCeVpTNVFZWFIwWlhKdVczTjBjbDBzWEc0Z0lDQWdjbVZ3YkdGalpXMWxiblE2SUhOMGNpeGNiaUFnSUNCa1pYTmpjbWx3ZEdsdmJqb2djM1J5TEZ4dUtTQXRQaUJ6ZEhJNlhHNGdJQ0FnZFhCa1lYUmxaQ3dnWTI5MWJuUWdQU0J3WVhSMFpYSnVMbk4xWW00b2NtVndiR0ZqWlcxbGJuUXNJR052Ym5SbGJuUXNJR052ZFc1MFBURXBYRzVjYmlBZ0lDQnBaaUJqYjNWdWRDQWhQU0F4T2x4dUlDQWdJQ0FnSUNCeVlXbHpaU0JRWVhSamFFVnljbTl5S0Z4dUlDQWdJQ0FnSUNBZ0lDQWdabHdpZTJSbGMyTnlhWEIwYVc5dWZUb2daWGh3WldOMFpXUWdaWGhoWTNSc2VTQnZibVVnYldGMFkyZ3NJR1p2ZFc1a0lIdGpiM1Z1ZEgxY0lseHVJQ0FnSUNBZ0lDQXBYRzVjYmlBZ0lDQnlaWFIxY200Z2RYQmtZWFJsWkZ4dVhHNWNibVJsWmlCd1lYUmphRjl5WldGamRGOXBiWEJ2Y25Rb1kyOXVkR1Z1ZERvZ2MzUnlLU0F0UGlCemRISTZYRzRnSUNBZ2NtVmhZM1JmYVcxd2IzSjBYM0JoZEhSbGNtNGdQU0J5WlM1amIyMXdhV3hsS0Z4dUlDQWdJQ0FnSUNCeVhDSnBiWEJ2Y25SY1hGeGNjeXBjWEZ4Y2UxeGNYRnh6S2loYlhuMWRLeWxjWEZ4Y2N5cGNYRnhjZlZ4Y1hGeHpLbVp5YjIxY1hGeGNjeW9uY21WaFkzUW5PMXdpWEc0Z0lDQWdLVnh1WEc0Z0lDQWdiV0YwWTJnZ1BTQnlaV0ZqZEY5cGJYQnZjblJmY0dGMGRHVnliaTV6WldGeVkyZ29ZMjl1ZEdWdWRDbGNibHh1SUNBZ0lHbG1JRzV2ZENCdFlYUmphRHBjYmlBZ0lDQWdJQ0FnY21GcGMyVWdVR0YwWTJoRmNuSnZjaWhjSWtOdmRXeGtJRzV2ZENCc2IyTmhkR1VnZEdobElHNWhiV1ZrSUZKbFlXTjBJR2x0Y0c5eWRGd2lLVnh1WEc0Z0lDQWdhVzF3YjNKMGN5QTlJRnRjYmlBZ0lDQWdJQ0FnZG1Gc2RXVXVjM1J5YVhBb0tWeHVJQ0FnSUNBZ0lDQm1iM0lnZG1Gc2RXVWdhVzRnYldGMFkyZ3VaM0p2ZFhBb01Ta3VjbVZ3YkdGalpTaGNJbHhjWEZ4dVhDSXNJRndpSUZ3aUtTNXpjR3hwZENoY0lpeGNJaWxjYmlBZ0lDQWdJQ0FnYVdZZ2RtRnNkV1V1YzNSeWFYQW9LVnh1SUNBZ0lGMWNibHh1SUNBZ0lISmxjWFZwY21Wa1gybHRjRzl5ZEhNZ1BTQmJYQ0pzWVhwNVhDSXNJRndpVTNWemNHVnVjMlZjSWl3Z1hDSjFjMlZGWm1abFkzUmNJaXdnWENKMWMyVlRkR0YwWlZ3aVhWeHVYRzRnSUNBZ1ptOXlJSEpsY1hWcGNtVmtYMmx0Y0c5eWRDQnBiaUJ5WlhGMWFYSmxaRjlwYlhCdmNuUnpPbHh1SUNBZ0lDQWdJQ0JwWmlCeVpYRjFhWEpsWkY5cGJYQnZjblFnYm05MElHbHVJR2x0Y0c5eWRITTZYRzRnSUNBZ0lDQWdJQ0FnSUNCcGJYQnZjblJ6TG1Gd2NHVnVaQ2h5WlhGMWFYSmxaRjlwYlhCdmNuUXBYRzVjYmlBZ0lDQnlaWEJzWVdObGJXVnVkQ0E5SUNoY2JpQWdJQ0FnSUNBZ1hDSnBiWEJ2Y25RZ2UxeGNYRnh1SUNCY0lseHVJQ0FnSUNBZ0lDQXJJRndpTEZ4Y1hGeHVJQ0JjSWk1cWIybHVLR2x0Y0c5eWRITXBYRzRnSUNBZ0lDQWdJQ3NnWENJc1hGeGNYRzU5SUdaeWIyMGdKM0psWVdOMEp6dGNJbHh1SUNBZ0lDbGNibHh1SUNBZ0lISmxkSFZ5YmlBb1hHNGdJQ0FnSUNBZ0lHTnZiblJsYm5SYk9pQnRZWFJqYUM1emRHRnlkQ2dwWFZ4dUlDQWdJQ0FnSUNBcklISmxjR3hoWTJWdFpXNTBYRzRnSUNBZ0lDQWdJQ3NnWTI5dWRHVnVkRnR0WVhSamFDNWxibVFvS1NBNlhWeHVJQ0FnSUNsY2JseHVYRzVrWldZZ2JHOWpZWFJsWDJWdFltVmtaR1ZrWDJOdmJYQnZibVZ1ZENoY2JpQWdJQ0JqYjI1MFpXNTBPaUJ6ZEhJc1hHNHBJQzArSUhSMWNHeGxXM0psTGsxaGRHTm9XM04wY2wwc0lITjBjbDA2WEc0Z0lDQWdjR0YwZEdWeWJpQTlJSEpsTG1OdmJYQnBiR1VvWEc0Z0lDQWdJQ0FnSUhKY0ltTnZibk4wWEZ4Y1hITXJLRnRCTFZwaExYb3dMVGxmWFNzcFhGeGNYSE1xUFZ4Y1hGeHpLbHhjWEZ3b1hGeGNYQ2xjWEZ4Y2N5bzlQbHhjWEZ4ektseGNYRng3TGlvL1hGeGNYSDA3WEZ4Y1hITXFYQ0pjYmlBZ0lDQWdJQ0FnY2x3aUtEODlZMjl1YzNSY1hGeGNjeXRGYldKbFpHUmxaRkp2ZFhSbEtWd2lMRnh1SUNBZ0lDQWdJQ0J5WlM1RVQxUkJURXdzWEc0Z0lDQWdLVnh1WEc0Z0lDQWdiV0YwWTJnZ1BTQndZWFIwWlhKdUxuTmxZWEpqYUNoamIyNTBaVzUwS1Z4dVhHNGdJQ0FnYVdZZ2JXRjBZMmc2WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJ0WVhSamFDd2diV0YwWTJndVozSnZkWEFvTVNsY2JseHVJQ0FnSUhKaGFYTmxJRkJoZEdOb1JYSnliM0lvWEc0Z0lDQWdJQ0FnSUZ3aVEyOTFiR1FnYm05MElHWnBibVFnWVc0Z1pXMWlaV1JrWldRZ1pHRnphR0p2WVhKa0lHTnZiWEJ2Ym1WdWRDQmlaV1p2Y21VZ1JXMWlaV1JrWldSU2IzVjBaVndpWEc0Z0lDQWdLVnh1WEc1Y2JtUmxaaUJ3WVhSamFGOW1jbTl1ZEdWdVpDaG1jbTl1ZEdWdVpGOXdZWFJvT2lCUVlYUm9LU0F0UGlCT2IyNWxPbHh1SUNBZ0lHTnZiblJsYm5RZ1BTQm1jbTl1ZEdWdVpGOXdZWFJvTG5KbFlXUmZkR1Y0ZENobGJtTnZaR2x1WnoxY0luVjBaaTA0WENJcFhHNWNiaUFnSUNCcFppQmNJbE5WVUVWU1UwVlVYMU5YU1ZSRFNFRkNURVZmUlUxQ1JVUmZVRUZVUTBoY0lpQnBiaUJqYjI1MFpXNTBPbHh1SUNBZ0lDQWdJQ0J3Y21sdWRDaG1YQ0pCYkhKbFlXUjVJSEJoZEdOb1pXUTZJSHRtY205dWRHVnVaRjl3WVhSb2ZWd2lLVnh1SUNBZ0lDQWdJQ0J5WlhSMWNtNWNibHh1SUNBZ0lHTnZiblJsYm5RZ1BTQndZWFJqYUY5eVpXRmpkRjlwYlhCdmNuUW9ZMjl1ZEdWdWRDbGNibHh1SUNBZ0lHTnZiWEJ2Ym1WdWRGOXRZWFJqYUN3Z1kyOXRjRzl1Wlc1MFgyNWhiV1VnUFNCc2IyTmhkR1ZmWlcxaVpXUmtaV1JmWTI5dGNHOXVaVzUwS0Z4dUlDQWdJQ0FnSUNCamIyNTBaVzUwWEc0Z0lDQWdLVnh1WEc0Z0lDQWdjbVZ3YkdGalpXMWxiblJmWTI5dGNHOXVaVzUwSUQwZ1hDSmNJbHdpTHk4Z1UxVlFSVkpUUlZSZlUxZEpWRU5JUVVKTVJWOUZUVUpGUkY5UVFWUkRTRnh1THk5Y2JpOHZJRUZzYkc5M2N5QjBhR1VnWlhocGMzUnBibWNnWlcxaVpXUmtaV1FnVTNWd1pYSnpaWFFnWkc5amRXMWxiblFnZEc4Z2NtVndiR0ZqWlNCRVlYTm9ZbTloY21SUVlXZGxYRzR2THlCM2FYUm9iM1YwSUc1aGRtbG5ZWFJwYm1jZ2IzSWdjbVZqY21WaGRHbHVaeUIwYUdVZ2FXWnlZVzFsTGx4dUx5OWNiaTh2SUZObFkzVnlhWFI1T2x4dUx5OGdMU0JVYUdseklHMWxkR2h2WkNCcGN5QmxlSEJ2YzJWa0lHOXViSGtnZEdoeWIzVm5hQ0JUZFhCbGNuTmxkQ2R6SUdWNGFYTjBhVzVuSUZOM2FYUmphR0p2WVhKa1hHNHZMeUFnSUUxbGMzTmhaMlZEYUdGdWJtVnNMbHh1THk4Z0xTQlVhR1VnYUc5emRDQmhjSEJzYVdOaGRHbHZiaUJ0ZFhOMElHOWlkR0ZwYmlCaElHZDFaWE4wSUhSdmEyVnVJR1p2Y2lCMGFHVWdkR0Z5WjJWMElHUmhjMmhpYjJGeVpDNWNiaTh2SUMwZ1UzVndaWEp6WlhRbmN5QnViM0p0WVd3Z1FXeHNiM2RsWkNCRWIyMWhhVzV6SUhaaGJHbGtZWFJwYjI0Z2NtVnRZV2x1Y3lCcGJpQmxabVpsWTNRdVhHNWNibWx1ZEdWeVptRmpaU0JUZDJsMFkyaEVZWE5vWW05aGNtUlFZWGxzYjJGa0lIdGNiaUFnWkdGemFHSnZZWEprU1dRNklITjBjbWx1Wnp0Y2JpQWdaM1ZsYzNSVWIydGxiam9nYzNSeWFXNW5PMXh1ZlZ4dVhHNXBiblJsY21aaFkyVWdVM2RwZEdOb1JHRnphR0p2WVhKa1VtVnpkV3gwSUh0Y2JpQWdaR0Z6YUdKdllYSmtTV1E2SUhOMGNtbHVaenRjYmlBZ1lXTmpaWEIwWldRNklIUnlkV1U3WEc1OVhHNWNiblI1Y0dVZ1JHRnphR0p2WVhKa1UzZHBkR05vU0dGdVpHeGxjaUE5SUNoY2JpQWdjR0Y1Ykc5aFpEb2dVM2RwZEdOb1JHRnphR0p2WVhKa1VHRjViRzloWkN4Y2Jpa2dQVDRnVUhKdmJXbHpaVHhUZDJsMFkyaEVZWE5vWW05aGNtUlNaWE4xYkhRK08xeHVYRzVzWlhRZ1pHRnphR0p2WVhKa1UzZHBkR05vU0dGdVpHeGxjam9nUkdGemFHSnZZWEprVTNkcGRHTm9TR0Z1Wkd4bGNpQjhJSFZ1WkdWbWFXNWxaRHRjYmx4dVkyOXVjM1FnWDE5RFQwMVFUMDVGVGxSZlRrRk5SVjlmSUQwZ0tDa2dQVDRnZTF4dUlDQmpiMjV6ZENCMWFVTnZibVpwWnlBOUlIVnpaVlZwUTI5dVptbG5LQ2s3WEc1Y2JpQWdZMjl1YzNRZ1cyUmhjMmhpYjJGeVpFbGtMQ0J6WlhSRVlYTm9ZbTloY21SSlpGMGdQU0IxYzJWVGRHRjBaVHh6ZEhKcGJtY2dmQ0J1ZFd4c1BpaGNiaUFnSUNCaWIyOTBjM1J5WVhCRVlYUmhMbVZ0WW1Wa1pHVmtJUzVrWVhOb1ltOWhjbVJmYVdRc1hHNGdJQ2s3WEc1Y2JpQWdkWE5sUldabVpXTjBLQ2dwSUQwK0lIdGNiaUFnSUNCa1lYTm9ZbTloY21SVGQybDBZMmhJWVc1a2JHVnlJRDBnWVhONWJtTWdLSHRjYmlBZ0lDQWdJR1JoYzJoaWIyRnlaRWxrT2lCeVpYRjFaWE4wWldSRVlYTm9ZbTloY21SSlpDeGNiaUFnSUNBZ0lHZDFaWE4wVkc5clpXNHNYRzRnSUNBZ2ZUb2dVM2RwZEdOb1JHRnphR0p2WVhKa1VHRjViRzloWkNrZ1BUNGdlMXh1SUNBZ0lDQWdZMjl1YzNRZ2JtVjRkRVJoYzJoaWIyRnlaRWxrSUQwZ2NtVnhkV1Z6ZEdWa1JHRnphR0p2WVhKa1NXUXVkSEpwYlNncE8xeHVYRzRnSUNBZ0lDQnBaaUFvSVc1bGVIUkVZWE5vWW05aGNtUkpaQ2tnZTF4dUlDQWdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvWEc0Z0lDQWdJQ0FnSUNBZ0oyUmhjMmhpYjJGeVpFbGtJRzExYzNRZ1ltVWdZU0J1YjI0dFpXMXdkSGtnYzNSeWFXNW5KeXhjYmlBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ2FXWWdLRnh1SUNBZ0lDQWdJQ0IwZVhCbGIyWWdaM1ZsYzNSVWIydGxiaUFoUFQwZ0ozTjBjbWx1WnljZ2ZIeGNiaUFnSUNBZ0lDQWdaM1ZsYzNSVWIydGxiaTUwY21sdEtDa3ViR1Z1WjNSb0lEMDlQU0F3WEc0Z0lDQWdJQ0FwSUh0Y2JpQWdJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0Z4dUlDQWdJQ0FnSUNBZ0lDZG5kV1Z6ZEZSdmEyVnVJRzExYzNRZ1ltVWdZU0J1YjI0dFpXMXdkSGtnYzNSeWFXNW5KeXhjYmlBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ2MyVjBSR0Z6YUdKdllYSmtTV1FvYm5Wc2JDazdYRzVjYmlBZ0lDQWdJR1JwYzNCc1lYbGxaRlZ1WVhWMGFHOXlhWHBsWkZSdllYTjBJRDBnWm1Gc2MyVTdYRzVjYmlBZ0lDQWdJSE5sZEhWd1IzVmxjM1JEYkdsbGJuUW9aM1ZsYzNSVWIydGxiaWs3WEc1Y2JpQWdJQ0FnSUdGM1lXbDBJRzVsZHlCUWNtOXRhWE5sUEhadmFXUStLSEpsYzI5c2RtVWdQVDRnZTF4dUlDQWdJQ0FnSUNCM2FXNWtiM2N1Y21WeGRXVnpkRUZ1YVcxaGRHbHZia1p5WVcxbEtDZ3BJRDArSUhKbGMyOXNkbVVvS1NrN1hHNGdJQ0FnSUNCOUtUdGNibHh1SUNBZ0lDQWdjMlYwUkdGemFHSnZZWEprU1dRb2JtVjRkRVJoYzJoaWIyRnlaRWxrS1R0Y2JseHVJQ0FnSUNBZ2NtVjBkWEp1SUh0Y2JpQWdJQ0FnSUNBZ1pHRnphR0p2WVhKa1NXUTZJRzVsZUhSRVlYTm9ZbTloY21SSlpDeGNiaUFnSUNBZ0lDQWdZV05qWlhCMFpXUTZJSFJ5ZFdVc1hHNGdJQ0FnSUNCOU8xeHVJQ0FnSUgwN1hHNWNiaUFnSUNCeVpYUjFjbTRnS0NrZ1BUNGdlMXh1SUNBZ0lDQWdaR0Z6YUdKdllYSmtVM2RwZEdOb1NHRnVaR3hsY2lBOUlIVnVaR1ZtYVc1bFpEdGNiaUFnSUNCOU8xeHVJQ0I5TENCYlhTazdYRzVjYmlBZ2RYTmxSV1ptWldOMEtDZ3BJRDArSUh0Y2JpQWdJQ0JwWmlBb0lYVnBRMjl1Wm1sblB5NWxiV2wwUkdGMFlVMWhjMnR6S1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnZFc1a1pXWnBibVZrTzF4dUlDQWdJSDFjYmx4dUlDQWdJR3hsZENCd2NtVjJhVzkxYzBSaGRHRk5ZWE5ySUQwZ2MzUnZjbVV1WjJWMFUzUmhkR1VvS1M1a1lYUmhUV0Z6YXp0Y2JseHVJQ0FnSUhKbGRIVnliaUJ6ZEc5eVpTNXpkV0p6WTNKcFltVW9LQ2tnUFQ0Z2UxeHVJQ0FnSUNBZ1kyOXVjM1FnWTNWeWNtVnVkRVJoZEdGTllYTnJJRDBnYzNSdmNtVXVaMlYwVTNSaGRHVW9LUzVrWVhSaFRXRnphenRjYmx4dUlDQWdJQ0FnYVdZZ0tIQnlaWFpwYjNWelJHRjBZVTFoYzJzZ0lUMDlJR04xY25KbGJuUkVZWFJoVFdGemF5a2dlMXh1SUNBZ0lDQWdJQ0JUZDJsMFkyaGliMkZ5WkM1bGJXbDBLQ2R2WW5ObGNuWmxSR0YwWVUxaGMyc25MQ0I3WEc0Z0lDQWdJQ0FnSUNBZ0xpNHVZM1Z5Y21WdWRFUmhkR0ZOWVhOckxGeHVJQ0FnSUNBZ0lDQWdJQzR1TG1kbGRFUmhkR0ZOWVhOclEyaGhibWRsVkhKcFoyZGxjaWhjYmlBZ0lDQWdJQ0FnSUNBZ0lHTjFjbkpsYm5SRVlYUmhUV0Z6YXl4Y2JpQWdJQ0FnSUNBZ0lDQWdJSEJ5WlhacGIzVnpSR0YwWVUxaGMyc3NYRzRnSUNBZ0lDQWdJQ0FnS1N4Y2JpQWdJQ0FnSUNBZ2ZTazdYRzVjYmlBZ0lDQWdJQ0FnY0hKbGRtbHZkWE5FWVhSaFRXRnpheUE5SUdOMWNuSmxiblJFWVhSaFRXRnphenRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlLVHRjYmlBZ2ZTd2dXM1ZwUTI5dVptbG5QeTVsYldsMFJHRjBZVTFoYzJ0elhTazdYRzVjYmlBZ2FXWWdLQ0ZrWVhOb1ltOWhjbVJKWkNrZ2UxeHVJQ0FnSUhKbGRIVnliaUE4VEc5aFpHbHVaeUF2UGp0Y2JpQWdmVnh1WEc0Z0lISmxkSFZ5YmlBb1hHNGdJQ0FnUEV4aGVubEVZWE5vWW05aGNtUlFZV2RsWEc0Z0lDQWdJQ0JyWlhrOWUyUmhjMmhpYjJGeVpFbGtmVnh1SUNBZ0lDQWdhV1JQY2xOc2RXYzllMlJoYzJoaWIyRnlaRWxrZlZ4dUlDQWdJQzgrWEc0Z0lDazdYRzU5TzF4dVhDSmNJbHdpTG5KbGNHeGhZMlVvWENKZlgwTlBUVkJQVGtWT1ZGOU9RVTFGWDE5Y0lpd2dZMjl0Y0c5dVpXNTBYMjVoYldVcFhHNWNiaUFnSUNCamIyNTBaVzUwSUQwZ0tGeHVJQ0FnSUNBZ0lDQmpiMjUwWlc1MFd6b2dZMjl0Y0c5dVpXNTBYMjFoZEdOb0xuTjBZWEowS0NsZFhHNGdJQ0FnSUNBZ0lDc2djbVZ3YkdGalpXMWxiblJmWTI5dGNHOXVaVzUwWEc0Z0lDQWdJQ0FnSUNzZ1kyOXVkR1Z1ZEZ0amIyMXdiMjVsYm5SZmJXRjBZMmd1Wlc1a0tDa2dPbDFjYmlBZ0lDQXBYRzVjYmlBZ0lDQnpkMmwwWTJoaWIyRnlaRjloYm1Ob2IzSmZZMkZ1Wkdsa1lYUmxjeUE5SUZ0Y2JpQWdJQ0FnSUNBZ0tGeHVJQ0FnSUNBZ0lDQWdJQ0FnWENJZ0lDQWdVM2RwZEdOb1ltOWhjbVF1WkdWbWFXNWxUV1YwYUc5a0tGd2lYRzRnSUNBZ0lDQWdJQ0FnSUNCY0lpZG5aWFJUWTNKdmJHeFRhWHBsSnl3Z1pXMWlaV1JrWldSQmNHa3VaMlYwVTJOeWIyeHNVMmw2WlNrN1hDSmNiaUFnSUNBZ0lDQWdLU3hjYmlBZ0lDQWdJQ0FnS0Z4dUlDQWdJQ0FnSUNBZ0lDQWdYQ0lnSUNBZ1UzZHBkR05vWW05aGNtUXVaR1ZtYVc1bFRXVjBhRzlrS0Z4Y1hGeHVYQ0pjYmlBZ0lDQWdJQ0FnSUNBZ0lGd2lJQ0FnSUNBZ0oyZGxkRk5qY205c2JGTnBlbVVuTEZ4Y1hGeHVYQ0pjYmlBZ0lDQWdJQ0FnSUNBZ0lGd2lJQ0FnSUNBZ1pXMWlaV1JrWldSQmNHa3VaMlYwVTJOeWIyeHNVMmw2WlN4Y1hGeGNibHdpWEc0Z0lDQWdJQ0FnSUNBZ0lDQmNJaUFnSUNBcE8xd2lYRzRnSUNBZ0lDQWdJQ2tzWEc0Z0lDQWdYVnh1WEc0Z0lDQWdjM2RwZEdOb1ltOWhjbVJmYldWMGFHOWtJRDBnWENKY0lsd2lJQ0FnSUZOM2FYUmphR0p2WVhKa0xtUmxabWx1WlUxbGRHaHZaQ2hjYmlBZ0lDQWdJQ2R6ZDJsMFkyaEVZWE5vWW05aGNtUW5MRnh1SUNBZ0lDQWdZWE41Ym1NZ0tGeHVJQ0FnSUNBZ0lDQndZWGxzYjJGa09pQlRkMmwwWTJoRVlYTm9ZbTloY21SUVlYbHNiMkZrTEZ4dUlDQWdJQ0FnS1RvZ1VISnZiV2x6WlR4VGQybDBZMmhFWVhOb1ltOWhjbVJTWlhOMWJIUStJRDArSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLQ0ZrWVhOb1ltOWhjbVJUZDJsMFkyaElZVzVrYkdWeUtTQjdYRzRnSUNBZ0lDQWdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLRnh1SUNBZ0lDQWdJQ0FnSUNBZ0oxUm9aU0JsYldKbFpHUmxaQ0JrWVhOb1ltOWhjbVFnYVhNZ2JtOTBJSEpsWVdSNUlIUnZJSE4zYVhSamFDY3NYRzRnSUNBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmtZWE5vWW05aGNtUlRkMmwwWTJoSVlXNWtiR1Z5S0hCaGVXeHZZV1FwTzF4dUlDQWdJQ0FnZlN4Y2JpQWdJQ0FwTzF4dVhHNWNJbHdpWENKY2JseHVJQ0FnSUdGdVkyaHZjbDltYjNWdVpDQTlJRVpoYkhObFhHNWNiaUFnSUNCbWIzSWdZVzVqYUc5eUlHbHVJSE4zYVhSamFHSnZZWEprWDJGdVkyaHZjbDlqWVc1a2FXUmhkR1Z6T2x4dUlDQWdJQ0FnSUNCcFppQmpiMjUwWlc1MExtTnZkVzUwS0dGdVkyaHZjaWtnUFQwZ01UcGNiaUFnSUNBZ0lDQWdJQ0FnSUdOdmJuUmxiblFnUFNCamIyNTBaVzUwTG5KbGNHeGhZMlVvWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWVc1amFHOXlMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSE4zYVhSamFHSnZZWEprWDIxbGRHaHZaQ0FySUdGdVkyaHZjaXhjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0F4TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdLVnh1SUNBZ0lDQWdJQ0FnSUNBZ1lXNWphRzl5WDJadmRXNWtJRDBnVkhKMVpWeHVJQ0FnSUNBZ0lDQWdJQ0FnWW5KbFlXdGNibHh1SUNBZ0lHbG1JRzV2ZENCaGJtTm9iM0pmWm05MWJtUTZYRzRnSUNBZ0lDQWdJSEpoYVhObElGQmhkR05vUlhKeWIzSW9YRzRnSUNBZ0lDQWdJQ0FnSUNCY0lrTnZkV3hrSUc1dmRDQnNiMk5oZEdVZ2RHaGxJR2RsZEZOamNtOXNiRk5wZW1VZ1UzZHBkR05vWW05aGNtUWdiV1YwYUc5a1hDSmNiaUFnSUNBZ0lDQWdLVnh1WEc0Z0lDQWdabkp2Ym5SbGJtUmZjR0YwYUM1M2NtbDBaVjkwWlhoMEtHTnZiblJsYm5Rc0lHVnVZMjlrYVc1blBWd2lkWFJtTFRoY0lpbGNiaUFnSUNCd2NtbHVkQ2htWENKUVlYUmphR1ZrT2lCN1puSnZiblJsYm1SZmNHRjBhSDFjSWlsY2JseHVYRzVrWldZZ2NHRjBZMmhmWjNWbGMzUmZkRzlyWlc1ZlptVjBZMmhmZEhsd1pTaGpiMjUwWlc1ME9pQnpkSElwSUMwK0lITjBjanBjYmlBZ0lDQmpZVzVrYVdSaGRHVnpJRDBnVzF4dUlDQWdJQ0FnSUNCY0ltVjRjRzl5ZENCMGVYQmxJRWQxWlhOMFZHOXJaVzVHWlhSamFFWnVJRDBnS0NrZ1BUNGdVSEp2YldselpUeHpkSEpwYm1jK08xd2lMRnh1SUNBZ0lDQWdJQ0FvWEc0Z0lDQWdJQ0FnSUNBZ0lDQmNJbVY0Y0c5eWRDQjBlWEJsSUVkMVpYTjBWRzlyWlc1R1pYUmphRVp1SUQwZ1hDSmNiaUFnSUNBZ0lDQWdJQ0FnSUZ3aUtDa2dQVDRnVUhKdmJXbHpaVHh6ZEhKcGJtYytPMXdpWEc0Z0lDQWdJQ0FnSUNrc1hHNGdJQ0FnWFZ4dVhHNGdJQ0FnY21Wd2JHRmpaVzFsYm5RZ1BTQmNJbHdpWENJdkx5QlRWVkJGVWxORlZGOVRWMGxVUTBoQlFreEZYMFZOUWtWRVgxTkVTMTlRUVZSRFNGeHVMeTljYmk4dklHUmhjMmhpYjJGeVpFbGtJR2x6SUhWdVpHVm1hVzVsWkNCbWIzSWdkR2hsSUdsdWFYUnBZV3dnWkdGemFHSnZZWEprSUdKdmIzUnpkSEpoY0M1Y2JpOHZJRUZtZEdWeUlHRWdjM1ZqWTJWemMyWjFiQ0JrWVhOb1ltOWhjbVFnYzNkcGRHTm9MQ0IwYjJ0bGJpQnlaV1p5WlhOb1pYTWdjbVZqWldsMlpTQjBhR1VnWVdOMGFYWmxYRzR2THlCa1lYTm9ZbTloY21RZ1ZWVkpSQzVjYm1WNGNHOXlkQ0IwZVhCbElFZDFaWE4wVkc5clpXNUdaWFJqYUVadUlEMGdLRnh1SUNCa1lYTm9ZbTloY21SSlpEODZJSE4wY21sdVp5eGNiaWtnUFQ0Z1VISnZiV2x6WlR4emRISnBibWMrTzF3aVhDSmNJbHh1WEc0Z0lDQWdabTl5SUdOaGJtUnBaR0YwWlNCcGJpQmpZVzVrYVdSaGRHVnpPbHh1SUNBZ0lDQWdJQ0JwWmlCamIyNTBaVzUwTG1OdmRXNTBLR05oYm1ScFpHRjBaU2tnUFQwZ01UcGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJqYjI1MFpXNTBMbkpsY0d4aFkyVW9YRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMkZ1Wkdsa1lYUmxMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsY0d4aFkyVnRaVzUwTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSURFc1hHNGdJQ0FnSUNBZ0lDQWdJQ0FwWEc1Y2JpQWdJQ0J5WVdselpTQlFZWFJqYUVWeWNtOXlLRndpUTI5MWJHUWdibTkwSUd4dlkyRjBaU0JIZFdWemRGUnZhMlZ1Um1WMFkyaEdibHdpS1Z4dVhHNWNibVJsWmlCd1lYUmphRjlsYldKbFpHUmxaRjlrWVhOb1ltOWhjbVJmZEhsd1pTaGpiMjUwWlc1ME9pQnpkSElwSUMwK0lITjBjanBjYmlBZ0lDQjBlWEJsWDNCaGRIUmxjbTRnUFNCeVpTNWpiMjF3YVd4bEtGeHVJQ0FnSUNBZ0lDQnlYQ0lvWlhod2IzSjBYRnhjWEhNcktEODZhVzUwWlhKbVlXTmxmSFI1Y0dVcFhGeGNYSE1yUlcxaVpXUmtaV1JFWVhOb1ltOWhjbVJjSWx4dUlDQWdJQ0FnSUNCeVhDSXVLajljWEZ4Y2V5a29MaW8vS1NoY1hGeGNibHhjWEZ4OU95bGNJaXhjYmlBZ0lDQWdJQ0FnY21VdVJFOVVRVXhNTEZ4dUlDQWdJQ2xjYmx4dUlDQWdJRzFoZEdOb0lEMGdkSGx3WlY5d1lYUjBaWEp1TG5ObFlYSmphQ2hqYjI1MFpXNTBLVnh1WEc0Z0lDQWdhV1lnYm05MElHMWhkR05vT2x4dUlDQWdJQ0FnSUNCeVlXbHpaU0JRWVhSamFFVnljbTl5S0Z4dUlDQWdJQ0FnSUNBZ0lDQWdYQ0pEYjNWc1pDQnViM1FnYkc5allYUmxJSFJvWlNCRmJXSmxaR1JsWkVSaGMyaGliMkZ5WkNCd2RXSnNhV01nZEhsd1pWd2lYRzRnSUNBZ0lDQWdJQ2xjYmx4dUlDQWdJR0p2WkhrZ1BTQnRZWFJqYUM1bmNtOTFjQ2d5S1Z4dVhHNGdJQ0FnYVdZZ1hDSnpkMmwwWTJoRVlYTm9ZbTloY21RNlhDSWdhVzRnWW05a2VUcGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHTnZiblJsYm5SY2JseHVJQ0FnSUcxbGRHaHZaQ0E5SUZ3aVhDSmNJbHh1SUNBdktpcGNiaUFnSUNvZ1VtVndiR0ZqWlhNZ1JHRnphR0p2WVhKa1VHRm5aU0JwYmlCMGFHVWdaWGhwYzNScGJtY2dhV1p5WVcxbElHUnZZM1Z0Wlc1MExseHVJQ0FnS2x4dUlDQWdLaUJVYUdVZ2RtRnNkV1VnYlhWemRDQmlaU0IwYUdVZ2RHRnlaMlYwSUdSaGMyaGliMkZ5WkNCVlZVbEVMMmxrSUdGalkyVndkR1ZrSUdKNVhHNGdJQ0FxSUVSaGMyaGliMkZ5WkZCaFoyVXNJRzV2ZENCMGFHVWdaVzFpWldSa1pXUXRZMjl1Wm1sbmRYSmhkR2x2YmlCVlZVbEVJSFZ6WldRZ2FXNGdkR2hsWEc0Z0lDQXFJR2x1YVhScFlXd2dMMlZ0WW1Wa1pHVmtMenAxZFdsa0lGVlNUQzVjYmlBZ0lDb3ZYRzRnSUhOM2FYUmphRVJoYzJoaWIyRnlaRG9nS0Z4dUlDQWdJR1JoYzJoaWIyRnlaRWxrT2lCemRISnBibWNzWEc0Z0lDa2dQVDRnVUhKdmJXbHpaVHg3WEc0Z0lDQWdaR0Z6YUdKdllYSmtTV1E2SUhOMGNtbHVaenRjYmlBZ0lDQmhZMk5sY0hSbFpEb2dkSEoxWlR0Y2JpQWdmVDQ3WEc1Y0lsd2lYQ0pjYmx4dUlDQWdJSFZ3WkdGMFpXUmZkSGx3WlNBOUlDaGNiaUFnSUNBZ0lDQWdiV0YwWTJndVozSnZkWEFvTVNsY2JpQWdJQ0FnSUNBZ0t5QmliMlI1TG5KemRISnBjQ2dwWEc0Z0lDQWdJQ0FnSUNzZ1hDSmNYRnhjYmx3aVhHNGdJQ0FnSUNBZ0lDc2diV1YwYUc5a0xuSnpkSEpwY0NncFhHNGdJQ0FnSUNBZ0lDc2diV0YwWTJndVozSnZkWEFvTXlsY2JpQWdJQ0FwWEc1Y2JpQWdJQ0J5WlhSMWNtNGdLRnh1SUNBZ0lDQWdJQ0JqYjI1MFpXNTBXem9nYldGMFkyZ3VjM1JoY25Rb0tWMWNiaUFnSUNBZ0lDQWdLeUIxY0dSaGRHVmtYM1I1Y0dWY2JpQWdJQ0FnSUNBZ0t5QmpiMjUwWlc1MFcyMWhkR05vTG1WdVpDZ3BJRHBkWEc0Z0lDQWdLVnh1WEc1Y2JtUmxaaUJ3WVhSamFGOXBibWwwYVdGc1gyZDFaWE4wWDNSdmEyVnVYMlpsZEdOb0tHTnZiblJsYm5RNklITjBjaWtnTFQ0Z2MzUnlPbHh1SUNBZ0lHTmhibVJwWkdGMFpYTWdQU0JiWEc0Z0lDQWdJQ0FnSUZ3aVptVjBZMmhIZFdWemRGUnZhMlZ1S0Nrc1hDSXNYRzRnSUNBZ0lDQWdJRndpWVhkaGFYUWdabVYwWTJoSGRXVnpkRlJ2YTJWdUtDa3NYQ0lzWEc0Z0lDQWdYVnh1WEc0Z0lDQWdabTl5SUdOaGJtUnBaR0YwWlNCcGJpQmpZVzVrYVdSaGRHVnpPbHh1SUNBZ0lDQWdJQ0JwWmlCamIyNTBaVzUwTG1OdmRXNTBLR05oYm1ScFpHRjBaU2tnUGowZ01UcGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJqYjI1MFpXNTBMbkpsY0d4aFkyVW9YRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMkZ1Wkdsa1lYUmxMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR05oYm1ScFpHRjBaUzV5WlhCc1lXTmxLRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCY0ltWmxkR05vUjNWbGMzUlViMnRsYmlncFhDSXNYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUZ3aVptVjBZMmhIZFdWemRGUnZhMlZ1S0hWdVpHVm1hVzVsWkNsY0lpeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXBMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJREVzWEc0Z0lDQWdJQ0FnSUNBZ0lDQXBYRzVjYmlBZ0lDQnlZV2x6WlNCUVlYUmphRVZ5Y205eUtGeHVJQ0FnSUNBZ0lDQmNJa052ZFd4a0lHNXZkQ0JzYjJOaGRHVWdkR2hsSUdsdWFYUnBZV3dnWm1WMFkyaEhkV1Z6ZEZSdmEyVnVJR05oYkd4Y0lseHVJQ0FnSUNsY2JseHVYRzVrWldZZ2NHRjBZMmhmWjNWbGMzUmZkRzlyWlc1ZmNtVm1jbVZ6YUNoamIyNTBaVzUwT2lCemRISXBJQzArSUhOMGNqcGNiaUFnSUNCd1lYUjBaWEp1Y3lBOUlGdGNiaUFnSUNBZ0lDQWdjbVV1WTI5dGNHbHNaU2hjYmlBZ0lDQWdJQ0FnSUNBZ0lISmNJbUZ6ZVc1aklHWjFibU4wYVc5dUlISmxabkpsYzJoSGRXVnpkRlJ2YTJWdVhGeGNYQ2hjWEZ4Y0tTQmNYRnhjZTF4Y1hGeHpLbHdpWEc0Z0lDQWdJQ0FnSUNBZ0lDQnlYQ0pqYjI1emRDQnVaWGRIZFdWemRGUnZhMlZ1SUQwZ1lYZGhhWFFnWm1WMFkyaEhkV1Z6ZEZSdmEyVnVYRnhjWENoY1hGeGNLVHRjWEZ4Y2N5cGNJbHh1SUNBZ0lDQWdJQ0FnSUNBZ2Nsd2liM1Z5VUc5eWRGeGNYRnd1WlcxcGRGeGNYRndvWENKY2JpQWdJQ0FnSUNBZ0lDQWdJSEpjSWlkbmRXVnpkRlJ2YTJWdUp5eGNYRnhjY3lwY1hGeGNlMXhjWEZ4ekttZDFaWE4wVkc5clpXNDZYRnhjWEhNcWJtVjNSM1ZsYzNSVWIydGxibHhjWEZ4ektseGNYRng5WENKY2JpQWdJQ0FnSUNBZ0lDQWdJSEpjSWx4Y1hGd3BPMXhjWEZ4ektsd2lYRzRnSUNBZ0lDQWdJQ0FnSUNCeVhDSnpaWFJVYVcxbGIzVjBYRnhjWENoY0lseHVJQ0FnSUNBZ0lDQWdJQ0FnY2x3aWNtVm1jbVZ6YUVkMVpYTjBWRzlyWlc0c1hGeGNYSE1xWENKY2JpQWdJQ0FnSUNBZ0lDQWdJSEpjSW1kbGRFZDFaWE4wVkc5clpXNVNaV1p5WlhOb1ZHbHRhVzVuWEZ4Y1hDaHVaWGRIZFdWemRGUnZhMlZ1WEZ4Y1hDbGNJbHh1SUNBZ0lDQWdJQ0FnSUNBZ2Nsd2lYRnhjWENrN1hGeGNYSE1xWENKY2JpQWdJQ0FnSUNBZ0lDQWdJSEpjSWx4Y1hGeDlYQ0lzWEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaUzVFVDFSQlRFd3NYRzRnSUNBZ0lDQWdJQ2tzWEc0Z0lDQWdJQ0FnSUhKbExtTnZiWEJwYkdVb1hHNGdJQ0FnSUNBZ0lDQWdJQ0J5WENKamIyNXpkQ0J5WldaeVpYTm9SM1ZsYzNSVWIydGxiaUE5SUdGemVXNWpJRnhjWEZ3b1hGeGNYQ2tnUFQ0Z1hGeGNYSHRjWEZ4Y2N5cGNJbHh1SUNBZ0lDQWdJQ0FnSUNBZ2Nsd2lZMjl1YzNRZ2JtVjNSM1ZsYzNSVWIydGxiaUE5SUdGM1lXbDBJR1psZEdOb1IzVmxjM1JVYjJ0bGJseGNYRndvWEZ4Y1hDazdYRnhjWEhNcVhDSmNiaUFnSUNBZ0lDQWdJQ0FnSUhKY0ltOTFjbEJ2Y25SY1hGeGNMbVZ0YVhSY1hGeGNLRndpWEc0Z0lDQWdJQ0FnSUNBZ0lDQnlYQ0luWjNWbGMzUlViMnRsYmljc1hGeGNYSE1xWEZ4Y1hIdGNYRnhjY3lwbmRXVnpkRlJ2YTJWdU9seGNYRnh6S201bGQwZDFaWE4wVkc5clpXNWNYRnhjY3lwY1hGeGNmVndpWEc0Z0lDQWdJQ0FnSUNBZ0lDQnlYQ0pjWEZ4Y0tUdGNYRnhjY3lwY0lseHVJQ0FnSUNBZ0lDQWdJQ0FnY2x3aWMyVjBWR2x0Wlc5MWRGeGNYRndvWENKY2JpQWdJQ0FnSUNBZ0lDQWdJSEpjSW5KbFpuSmxjMmhIZFdWemRGUnZhMlZ1TEZ4Y1hGeHpLbHdpWEc0Z0lDQWdJQ0FnSUNBZ0lDQnlYQ0puWlhSSGRXVnpkRlJ2YTJWdVVtVm1jbVZ6YUZScGJXbHVaMXhjWEZ3b2JtVjNSM1ZsYzNSVWIydGxibHhjWEZ3cFhDSmNiaUFnSUNBZ0lDQWdJQ0FnSUhKY0lseGNYRndwTzF4Y1hGeHpLbHdpWEc0Z0lDQWdJQ0FnSUNBZ0lDQnlYQ0pjWEZ4Y2ZUdGNJaXhjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxMa1JQVkVGTVRDeGNiaUFnSUNBZ0lDQWdLU3hjYmlBZ0lDQmRYRzVjYmlBZ0lDQnlaWEJzWVdObGJXVnVkQ0E5SUZ3aVhDSmNJbXhsZENCaFkzUnBkbVZFWVhOb1ltOWhjbVJKWkRvZ2MzUnlhVzVuSUh3Z2RXNWtaV1pwYm1Wa08xeHVYRzRnSUdGemVXNWpJR1oxYm1OMGFXOXVJSEpsWm5KbGMyaEhkV1Z6ZEZSdmEyVnVLQ2tnZTF4dUlDQWdJR052Ym5OMElHNWxkMGQxWlhOMFZHOXJaVzRnUFNCaGQyRnBkQ0JtWlhSamFFZDFaWE4wVkc5clpXNG9YRzRnSUNBZ0lDQmhZM1JwZG1WRVlYTm9ZbTloY21SSlpDeGNiaUFnSUNBcE8xeHVYRzRnSUNBZ2IzVnlVRzl5ZEM1bGJXbDBLQ2RuZFdWemRGUnZhMlZ1Snl3Z2UxeHVJQ0FnSUNBZ1ozVmxjM1JVYjJ0bGJqb2dibVYzUjNWbGMzUlViMnRsYml4Y2JpQWdJQ0I5S1R0Y2JseHVJQ0FnSUhObGRGUnBiV1Z2ZFhRb1hHNGdJQ0FnSUNCeVpXWnlaWE5vUjNWbGMzUlViMnRsYml4Y2JpQWdJQ0FnSUdkbGRFZDFaWE4wVkc5clpXNVNaV1p5WlhOb1ZHbHRhVzVuS0c1bGQwZDFaWE4wVkc5clpXNHBMRnh1SUNBZ0lDazdYRzRnSUgxY0lsd2lYQ0pjYmx4dUlDQWdJR1p2Y2lCd1lYUjBaWEp1SUdsdUlIQmhkSFJsY201ek9seHVJQ0FnSUNBZ0lDQjFjR1JoZEdWa0xDQmpiM1Z1ZENBOUlIQmhkSFJsY200dWMzVmliaWhjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxjR3hoWTJWdFpXNTBMRnh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVkR1Z1ZEN4Y2JpQWdJQ0FnSUNBZ0lDQWdJR052ZFc1MFBURXNYRzRnSUNBZ0lDQWdJQ2xjYmx4dUlDQWdJQ0FnSUNCcFppQmpiM1Z1ZENBOVBTQXhPbHh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhWd1pHRjBaV1JjYmx4dUlDQWdJSEpoYVhObElGQmhkR05vUlhKeWIzSW9YRzRnSUNBZ0lDQWdJRndpUTI5MWJHUWdibTkwSUd4dlkyRjBaU0IwYUdVZ1ozVmxjM1F0ZEc5clpXNGdjbVZtY21WemFDQm1kVzVqZEdsdmJsd2lYRzRnSUNBZ0tWeHVYRzVjYm1SbFppQndZWFJqYUY5elpHdGZablZ1WTNScGIyNXpLR052Ym5SbGJuUTZJSE4wY2lrZ0xUNGdjM1J5T2x4dUlDQWdJR0Z1WTJodmNsOWpZVzVrYVdSaGRHVnpJRDBnVzF4dUlDQWdJQ0FnSUNBb1hHNGdJQ0FnSUNBZ0lDQWdJQ0JjSWlBZ1kyOXVjM1FnWjJWMFUyTnliMnhzVTJsNlpTQTlJQ2dwSUQwK0lGd2lYRzRnSUNBZ0lDQWdJQ0FnSUNCY0ltOTFjbEJ2Y25RdVoyVjBQRk5wZW1VK0tDZG5aWFJUWTNKdmJHeFRhWHBsSnlrN1hDSmNiaUFnSUNBZ0lDQWdLU3hjYmlBZ0lDQWdJQ0FnS0Z4dUlDQWdJQ0FnSUNBZ0lDQWdYQ0lnSUdOdmJuTjBJR2RsZEZOamNtOXNiRk5wZW1VZ1BTQW9LU0E5UGx4Y1hGeHVYQ0pjYmlBZ0lDQWdJQ0FnSUNBZ0lGd2lJQ0FnSUc5MWNsQnZjblF1WjJWMFBGTnBlbVUrS0NkblpYUlRZM0p2Ykd4VGFYcGxKeWs3WENKY2JpQWdJQ0FnSUNBZ0tTeGNiaUFnSUNCZFhHNWNiaUFnSUNCemQybDBZMmhmWm5WdVkzUnBiMjRnUFNCY0lsd2lYQ0lnSUdOdmJuTjBJSE4zYVhSamFFUmhjMmhpYjJGeVpDQTlJR0Z6ZVc1aklDaGNiaUFnSUNCa1lYTm9ZbTloY21SSlpEb2djM1J5YVc1bkxGeHVJQ0FwT2lCUWNtOXRhWE5sUEh0Y2JpQWdJQ0JrWVhOb1ltOWhjbVJKWkRvZ2MzUnlhVzVuTzF4dUlDQWdJR0ZqWTJWd2RHVmtPaUIwY25WbE8xeHVJQ0I5UGlBOVBpQjdYRzRnSUNBZ1kyOXVjM1FnYm05eWJXRnNhWHBsWkVSaGMyaGliMkZ5WkVsa0lEMGdaR0Z6YUdKdllYSmtTV1F1ZEhKcGJTZ3BPMXh1WEc0Z0lDQWdhV1lnS0NGdWIzSnRZV3hwZW1Wa1JHRnphR0p2WVhKa1NXUXBJSHRjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpaGNiaUFnSUNBZ0lDQWdKMlJoYzJoaWIyRnlaRWxrSUcxMWMzUWdZbVVnWVNCdWIyNHRaVzF3ZEhrZ2MzUnlhVzVuSnl4Y2JpQWdJQ0FnSUNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWTI5dWMzUWdaM1ZsYzNSVWIydGxiaUE5SUdGM1lXbDBJR1psZEdOb1IzVmxjM1JVYjJ0bGJpaGNiaUFnSUNBZ0lHNXZjbTFoYkdsNlpXUkVZWE5vWW05aGNtUkpaQ3hjYmlBZ0lDQXBPMXh1WEc0Z0lDQWdZMjl1YzNRZ2NtVnpkV3gwSUQwZ1lYZGhhWFFnYjNWeVVHOXlkQzVuWlhROGUxeHVJQ0FnSUNBZ1pHRnphR0p2WVhKa1NXUTZJSE4wY21sdVp6dGNiaUFnSUNBZ0lHRmpZMlZ3ZEdWa09pQjBjblZsTzF4dUlDQWdJSDArS0NkemQybDBZMmhFWVhOb1ltOWhjbVFuTENCN1hHNGdJQ0FnSUNCa1lYTm9ZbTloY21SSlpEb2dibTl5YldGc2FYcGxaRVJoYzJoaWIyRnlaRWxrTEZ4dUlDQWdJQ0FnWjNWbGMzUlViMnRsYml4Y2JpQWdJQ0I5S1R0Y2JseHVJQ0FnSUdGamRHbDJaVVJoYzJoaWIyRnlaRWxrSUQwZ2JtOXliV0ZzYVhwbFpFUmhjMmhpYjJGeVpFbGtPMXh1WEc0Z0lDQWdjbVYwZFhKdUlISmxjM1ZzZER0Y2JpQWdmVHRjYmx4dVhDSmNJbHdpWEc1Y2JpQWdJQ0JtYjNJZ1lXNWphRzl5SUdsdUlHRnVZMmh2Y2w5allXNWthV1JoZEdWek9seHVJQ0FnSUNBZ0lDQnBaaUJqYjI1MFpXNTBMbU52ZFc1MEtHRnVZMmh2Y2lrZ1BUMGdNVHBjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCamIyNTBaVzUwTG5KbGNHeGhZMlVvWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWVc1amFHOXlMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSE4zYVhSamFGOW1kVzVqZEdsdmJpQXJJR0Z1WTJodmNpeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXhMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0tWeHVYRzRnSUNBZ2NtRnBjMlVnVUdGMFkyaEZjbkp2Y2loY2JpQWdJQ0FnSUNBZ1hDSkRiM1ZzWkNCdWIzUWdiRzlqWVhSbElIUm9aU0JUUkVzZ1oyVjBVMk55YjJ4c1UybDZaU0JtZFc1amRHbHZibHdpWEc0Z0lDQWdLVnh1WEc1Y2JtUmxaaUJ3WVhSamFGOXpaR3RmY21WMGRYSnVYMjlpYW1WamRDaGpiMjUwWlc1ME9pQnpkSElwSUMwK0lITjBjanBjYmlBZ0lDQmpZVzVrYVdSaGRHVnpJRDBnVzF4dUlDQWdJQ0FnSUNCY0lpQWdJQ0J6WlhSVWFHVnRaVTF2WkdVc1hGeGNYRzRnSUgwN1hDSXNYRzRnSUNBZ0lDQWdJRndpSUNBZ0lITmxkRlJvWlcxbFRXOWtaU3hjWEZ4Y2JpQWdJQ0IxYm0xdmRXNTBMRnhjWEZ4dUlDQjlPMXdpTEZ4dUlDQWdJQ0FnSUNCY0lpQWdJQ0IxYm0xdmRXNTBMRnhjWEZ4dUlDQWdJSE5sZEZSb1pXMWxUVzlrWlN4Y1hGeGNiaUFnZlR0Y0lpeGNiaUFnSUNCZFhHNWNiaUFnSUNCbWIzSWdZMkZ1Wkdsa1lYUmxJR2x1SUdOaGJtUnBaR0YwWlhNNlhHNGdJQ0FnSUNBZ0lHbG1JR052Ym5SbGJuUXVZMjkxYm5Rb1kyRnVaR2xrWVhSbEtTQTlQU0F4T2x4dUlDQWdJQ0FnSUNBZ0lDQWdiR2x1WlhNZ1BTQmpZVzVrYVdSaGRHVXVjM0JzYVhSc2FXNWxjeWdwWEc1Y2JpQWdJQ0FnSUNBZ0lDQWdJR05zYjNOcGJtY2dQU0JzYVc1bGN5NXdiM0FvS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdZbTlrZVNBOUlGd2lYRnhjWEc1Y0lpNXFiMmx1S0d4cGJtVnpLVnh1WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1kyOXVkR1Z1ZEM1eVpYQnNZV05sS0Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOaGJtUnBaR0YwWlN4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCaWIyUjVYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdLeUJjSWx4Y1hGeHVYQ0pjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FySUZ3aUlDQWdJSE4zYVhSamFFUmhjMmhpYjJGeVpDeGNYRnhjYmx3aVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0t5QmpiRzl6YVc1bkxGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lERXNYRzRnSUNBZ0lDQWdJQ0FnSUNBcFhHNWNiaUFnSUNCeVlXbHpaU0JRWVhSamFFVnljbTl5S0Z4dUlDQWdJQ0FnSUNCY0lrTnZkV3hrSUc1dmRDQnNiMk5oZEdVZ2RHaGxJRVZ0WW1Wa1pHVmtSR0Z6YUdKdllYSmtJSEpsZEhWeWJpQnZZbXBsWTNSY0lseHVJQ0FnSUNsY2JseHVYRzVrWldZZ2NHRjBZMmhmYzJScktITmthMTl3WVhSb09pQlFZWFJvS1NBdFBpQk9iMjVsT2x4dUlDQWdJR052Ym5SbGJuUWdQU0J6Wkd0ZmNHRjBhQzV5WldGa1gzUmxlSFFvWlc1amIyUnBibWM5WENKMWRHWXRPRndpS1Z4dVhHNGdJQ0FnYVdZZ1hDSlRWVkJGVWxORlZGOVRWMGxVUTBoQlFreEZYMFZOUWtWRVgxTkVTMTlRUVZSRFNGd2lJR2x1SUdOdmJuUmxiblE2WEc0Z0lDQWdJQ0FnSUhCeWFXNTBLR1pjSWtGc2NtVmhaSGtnY0dGMFkyaGxaRG9nZTNOa2ExOXdZWFJvZlZ3aUtWeHVJQ0FnSUNBZ0lDQnlaWFIxY201Y2JseHVJQ0FnSUdOdmJuUmxiblFnUFNCd1lYUmphRjluZFdWemRGOTBiMnRsYmw5bVpYUmphRjkwZVhCbEtHTnZiblJsYm5RcFhHNGdJQ0FnWTI5dWRHVnVkQ0E5SUhCaGRHTm9YMlZ0WW1Wa1pHVmtYMlJoYzJoaWIyRnlaRjkwZVhCbEtHTnZiblJsYm5RcFhHNGdJQ0FnWTI5dWRHVnVkQ0E5SUhCaGRHTm9YMmx1YVhScFlXeGZaM1ZsYzNSZmRHOXJaVzVmWm1WMFkyZ29ZMjl1ZEdWdWRDbGNiaUFnSUNCamIyNTBaVzUwSUQwZ2NHRjBZMmhmWjNWbGMzUmZkRzlyWlc1ZmNtVm1jbVZ6YUNoamIyNTBaVzUwS1Z4dUlDQWdJR052Ym5SbGJuUWdQU0J3WVhSamFGOXpaR3RmWm5WdVkzUnBiMjV6S0dOdmJuUmxiblFwWEc0Z0lDQWdZMjl1ZEdWdWRDQTlJSEJoZEdOb1gzTmthMTl5WlhSMWNtNWZiMkpxWldOMEtHTnZiblJsYm5RcFhHNWNiaUFnSUNCelpHdGZjR0YwYUM1M2NtbDBaVjkwWlhoMEtHTnZiblJsYm5Rc0lHVnVZMjlrYVc1blBWd2lkWFJtTFRoY0lpbGNiaUFnSUNCd2NtbHVkQ2htWENKUVlYUmphR1ZrT2lCN2MyUnJYM0JoZEdoOVhDSXBYRzVjYmx4dVpHVm1JRzFoYVc0b0tTQXRQaUJwYm5RNlhHNGdJQ0FnY0dGeWMyVnlJRDBnWVhKbmNHRnljMlV1UVhKbmRXMWxiblJRWVhKelpYSW9YRzRnSUNBZ0lDQWdJR1JsYzJOeWFYQjBhVzl1UFNoY2JpQWdJQ0FnSUNBZ0lDQWdJRndpUVhCd2JIa2dkR2hsSUhOM2FYUmphR0ZpYkdVdFpHRnphR0p2WVhKa0lIQmhkR05vSUhSdklHRWdYQ0pjYmlBZ0lDQWdJQ0FnSUNBZ0lGd2lVM1Z3WlhKelpYUWdOaTR4TG5nZ2MyOTFjbU5sSUdOb1pXTnJiM1YwTGx3aVhHNGdJQ0FnSUNBZ0lDbGNiaUFnSUNBcFhHNWNiaUFnSUNCd1lYSnpaWEl1WVdSa1gyRnlaM1Z0Wlc1MEtGeHVJQ0FnSUNBZ0lDQmNJbk4xY0dWeWMyVjBYM0p2YjNSY0lpeGNiaUFnSUNBZ0lDQWdkSGx3WlQxUVlYUm9MRnh1SUNBZ0lDQWdJQ0JvWld4d1BWd2lVR0YwYUNCMGJ5QjBhR1VnUVhCaFkyaGxJRk4xY0dWeWMyVjBJSE52ZFhKalpTQmphR1ZqYTI5MWRGd2lMRnh1SUNBZ0lDbGNibHh1SUNBZ0lHRnlaM01nUFNCd1lYSnpaWEl1Y0dGeWMyVmZZWEpuY3lncFhHNGdJQ0FnY205dmRDQTlJR0Z5WjNNdWMzVndaWEp6WlhSZmNtOXZkQzV5WlhOdmJIWmxLQ2xjYmx4dUlDQWdJR1p5YjI1MFpXNWtYM0JoZEdnZ1BTQnliMjkwSUM4Z1JsSlBUbFJGVGtSZlJrbE1SVnh1SUNBZ0lITmthMTl3WVhSb0lEMGdjbTl2ZENBdklGTkVTMTlHU1V4RlhHNWNiaUFnSUNCdGFYTnphVzVuSUQwZ1cxeHVJQ0FnSUNBZ0lDQndZWFJvWEc0Z0lDQWdJQ0FnSUdadmNpQndZWFJvSUdsdUlGdG1jbTl1ZEdWdVpGOXdZWFJvTENCelpHdGZjR0YwYUYxY2JpQWdJQ0FnSUNBZ2FXWWdibTkwSUhCaGRHZ3VaWGhwYzNSektDbGNiaUFnSUNCZFhHNWNiaUFnSUNCcFppQnRhWE56YVc1bk9seHVJQ0FnSUNBZ0lDQndjbWx1ZENoY2JpQWdJQ0FnSUNBZ0lDQWdJRndpVkdobElIUmhjbWRsZENCa2IyVnpJRzV2ZENCaGNIQmxZWElnZEc4Z1ltVWdZU0JqYjIxd1lYUnBZbXhsSUZ3aVhHNGdJQ0FnSUNBZ0lDQWdJQ0JjSWxOMWNHVnljMlYwSUhOdmRYSmpaU0JqYUdWamEyOTFkQzVjSWl4Y2JpQWdJQ0FnSUNBZ0lDQWdJR1pwYkdVOWMzbHpMbk4wWkdWeWNpeGNiaUFnSUNBZ0lDQWdLVnh1WEc0Z0lDQWdJQ0FnSUdadmNpQnRhWE56YVc1blgzQmhkR2dnYVc0Z2JXbHpjMmx1WnpwY2JpQWdJQ0FnSUNBZ0lDQWdJSEJ5YVc1MEtHWmNJazFwYzNOcGJtYzZJSHR0YVhOemFXNW5YM0JoZEdoOVhDSXNJR1pwYkdVOWMzbHpMbk4wWkdWeWNpbGNibHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdNbHh1WEc0Z0lDQWdkSEo1T2x4dUlDQWdJQ0FnSUNCd1lYUmphRjltY205dWRHVnVaQ2htY205dWRHVnVaRjl3WVhSb0tWeHVJQ0FnSUNBZ0lDQndZWFJqYUY5elpHc29jMlJyWDNCaGRHZ3BYRzRnSUNBZ1pYaGpaWEIwSUZCaGRHTm9SWEp5YjNJZ1lYTWdaWEp5YjNJNlhHNGdJQ0FnSUNBZ0lIQnlhVzUwS0daY0lsQmhkR05vSUdaaGFXeGxaRG9nZTJWeWNtOXlmVndpTENCbWFXeGxQWE41Y3k1emRHUmxjbklwWEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUF4WEc1Y2JpQWdJQ0J3Y21sdWRDaGNJbEJoZEdOb0lHTnZiWEJzWlhSbFpDQnpkV05qWlhOelpuVnNiSGt1WENJcFhHNGdJQ0FnY21WMGRYSnVJREJjYmx4dVhHNXBaaUJmWDI1aGJXVmZYeUE5UFNCY0lsOWZiV0ZwYmw5ZlhDSTZYRzRnSUNBZ2NtRnBjMlVnVTNsemRHVnRSWGhwZENodFlXbHVLQ2twWEc1Z08xeHVYRzVqYjI1emRDQldSVkpKUmxsZlVFRlVRMGhmVTBnZ1BTQmdJeUV2ZFhOeUwySnBiaTlsYm5ZZ1ltRnphRnh1WEc1elpYUWdMV1YxYnlCd2FYQmxabUZwYkZ4dVhHNVRWVkJGVWxORlZGOVNUMDlVUFZ4Y0pIc3hPajlWYzJGblpUb2dkbVZ5YVdaNVgzQmhkR05vTG5Ob0lDOXdZWFJvTDNSdkwzTjFjR1Z5YzJWMGZWeHVYRzVHVWs5T1ZFVk9SRjlHU1V4RlBWd2lKRk5WVUVWU1UwVlVYMUpQVDFRdmMzVndaWEp6WlhRdFpuSnZiblJsYm1RdmMzSmpMMlZ0WW1Wa1pHVmtMMmx1WkdWNExuUnplRndpWEc1VFJFdGZSa2xNUlQxY0lpUlRWVkJGVWxORlZGOVNUMDlVTDNOMWNHVnljMlYwTFdWdFltVmtaR1ZrTFhOa2F5OXpjbU12YVc1a1pYZ3VkSE5jSWx4dVhHNTBaWE4wSUMxbUlGd2lKRVpTVDA1VVJVNUVYMFpKVEVWY0lseHVkR1Z6ZENBdFppQmNJaVJUUkV0ZlJrbE1SVndpWEc1Y2JtZHlaWEFnTFhFZ1hGeGNYRnh1SUNCY0lsTlZVRVZTVTBWVVgxTlhTVlJEU0VGQ1RFVmZSVTFDUlVSZlVFRlVRMGhjSWlCY1hGeGNYRzRnSUZ3aUpFWlNUMDVVUlU1RVgwWkpURVZjSWx4dVhHNW5jbVZ3SUMxeElGeGNYRnhjYmlBZ1hDSW5jM2RwZEdOb1JHRnphR0p2WVhKa0oxd2lJRnhjWEZ4Y2JpQWdYQ0lrUmxKUFRsUkZUa1JmUmtsTVJWd2lYRzVjYm1keVpYQWdMWEVnWEZ4Y1hGeHVJQ0JjSW1SaGMyaGliMkZ5WkZOM2FYUmphRWhoYm1Sc1pYSmNJaUJjWEZ4Y1hHNGdJRndpSkVaU1QwNVVSVTVFWDBaSlRFVmNJbHh1WEc1bmNtVndJQzF4SUZ4Y1hGeGNiaUFnWENKVFZWQkZVbE5GVkY5VFYwbFVRMGhCUWt4RlgwVk5Ra1ZFWDFORVMxOVFRVlJEU0Z3aUlGeGNYRnhjYmlBZ1hDSWtVMFJMWDBaSlRFVmNJbHh1WEc1bmNtVndJQzF4SUZ4Y1hGeGNiaUFnWENKemQybDBZMmhFWVhOb1ltOWhjbVE2WENJZ1hGeGNYRnh1SUNCY0lpUlRSRXRmUmtsTVJWd2lYRzVjYm1keVpYQWdMWEVnWEZ4Y1hGeHVJQ0JjSW1GamRHbDJaVVJoYzJoaWIyRnlaRWxrWENJZ1hGeGNYRnh1SUNCY0lpUlRSRXRmUmtsTVJWd2lYRzVjYm1keVpYQWdMWEVnWEZ4Y1hGeHVJQ0JjSW1abGRHTm9SM1ZsYzNSVWIydGxiaWhjSWlCY1hGeGNYRzRnSUZ3aUpGTkVTMTlHU1V4RlhDSmNibHh1WldOb2J5QmNJbFJvWlNCemQybDBZMmhoWW14bExXUmhjMmhpYjJGeVpDQndZWFJqYUNCcGN5QndjbVZ6Wlc1MExsd2lYRzVnTzF4dVhHNWpiMjV6ZENCQ1ZVbE1SRjlUUkV0ZlUwZ2dQU0JnSXlFdmRYTnlMMkpwYmk5bGJuWWdZbUZ6YUZ4dVhHNXpaWFFnTFdWMWJ5QndhWEJsWm1GcGJGeHVYRzVUVlZCRlVsTkZWRjlTVDA5VVBWeGNKSHN4T2o5VmMyRm5aVG9nWW5WcGJHUXRjMlJyTG5Ob0lDOXdZWFJvTDNSdkwzTjFjR1Z5YzJWMGZWeHVYRzVUUkV0ZlVrOVBWRDFjSWlSVFZWQkZVbE5GVkY5U1QwOVVMM04xY0dWeWMyVjBMV1Z0WW1Wa1pHVmtMWE5rYTF3aVhHNWNibWxtSUZzZ0lTQXRaaUJjSWlSVFJFdGZVazlQVkM5d1lXTnJZV2RsTG1wemIyNWNJaUJkT3lCMGFHVnVYRzRnSUdWamFHOGdYQ0pOYVhOemFXNW5JRk5FU3lCd1lXTnJZV2RsT2lBa1UwUkxYMUpQVDFSY0lpQStKakpjYmlBZ1pYaHBkQ0F4WEc1bWFWeHVYRzVqWkNCY0lpUlRSRXRmVWs5UFZGd2lYRzVjYm01d2JTQmphVnh1WEc1dWNHMGdjblZ1SUdKMWFXeGtYRzVjYm1WamFHOWNibVZqYUc4Z1hDSkZiV0psWkdSbFpDQlRSRXNnWW5WcGJHUWdZMjl0Y0d4bGRHVmtMbHdpWEc1bFkyaHZJRndpVDNWMGNIVjBJR1JwY21WamRHOXllVHBjSWx4dVptbHVaQ0F1SUZ4Y1hGeGNiaUFnTFcxaGVHUmxjSFJvSURJZ1hGeGNYRnh1SUNBdGRIbHdaU0JrSUZ4Y1hGeGNiaUFnWEZ4Y1hDZ2dMVzVoYldVZ1pHbHpkQ0F0YnlBdGJtRnRaU0JzYVdJZ1hGeGNYQ2tnWEZ4Y1hGeHVJQ0F0Y0hKcGJuUmNibUE3WEc1Y2JtTnZibk4wSUVKVlNVeEVYMFpTVDA1VVJVNUVYMU5JSUQwZ1lDTWhMM1Z6Y2k5aWFXNHZaVzUySUdKaGMyaGNibHh1YzJWMElDMWxkVzhnY0dsd1pXWmhhV3hjYmx4dVUxVlFSVkpUUlZSZlVrOVBWRDFjWENSN01Uby9WWE5oWjJVNklHSjFhV3hrTFhOMWNHVnljMlYwTFdaeWIyNTBaVzVrTG5Ob0lDOXdZWFJvTDNSdkwzTjFjR1Z5YzJWMGZWeHVYRzVHVWs5T1ZFVk9SRjlTVDA5VVBWd2lKRk5WVUVWU1UwVlVYMUpQVDFRdmMzVndaWEp6WlhRdFpuSnZiblJsYm1SY0lseHVYRzVwWmlCYklDRWdMV1lnWENJa1JsSlBUbFJGVGtSZlVrOVBWQzl3WVdOcllXZGxMbXB6YjI1Y0lpQmRPeUIwYUdWdVhHNGdJR1ZqYUc4Z1hDSk5hWE56YVc1bklGTjFjR1Z5YzJWMElHWnliMjUwWlc1a09pQWtSbEpQVGxSRlRrUmZVazlQVkZ3aUlENG1NbHh1SUNCbGVHbDBJREZjYm1acFhHNWNibU5rSUZ3aUpFWlNUMDVVUlU1RVgxSlBUMVJjSWx4dVhHNXVjRzBnWTJsY2JseHVibkJ0SUhKMWJpQmlkV2xzWkZ4dVhHNWxZMmh2SUZ3aVUzVndaWEp6WlhRZ1puSnZiblJsYm1RZ1luVnBiR1FnWTI5dGNHeGxkR1ZrTGx3aVhHNWdPMXh1WEc1amIyNXpkQ0JRUVZSRFNGOUJUa1JmUWxWSlRFUmZVMGdnUFNCZ0l5RXZkWE55TDJKcGJpOWxibllnWW1GemFGeHVYRzV6WlhRZ0xXVjFieUJ3YVhCbFptRnBiRnh1WEc1VFZWQkZVbE5GVkY5U1QwOVVQVnhjSkhzeE9qOVZjMkZuWlRvZ2NHRjBZMmd0WVc1a0xXSjFhV3hrTG5Ob0lDOXdZWFJvTDNSdkwzTjFjR1Z5YzJWMGZWeHVYRzVUUTFKSlVGUmZSRWxTUFNRb1hHNGdJR05rSUZ3aUpDaGthWEp1WVcxbElGd2lYRndrZTBKQlUwaGZVMDlWVWtORld6QmRmVndpS1Z3aVhHNGdJSEIzWkZ4dUtWeHVYRzVRVWs5S1JVTlVYMUpQVDFROUpDaGNiaUFnWTJRZ1hDSWtVME5TU1ZCVVgwUkpVaTh1TGx3aVhHNGdJSEIzWkZ4dUtWeHVYRzV3ZVhSb2IyNHpJRnhjWEZ4Y2JpQWdYQ0lrVUZKUFNrVkRWRjlTVDA5VUwzQmhkR05vWlhNdllYQndiSGxmYzNWd1pYSnpaWFJmTmw4eFgzQmhkR05vTG5CNVhDSWdYRnhjWEZ4dUlDQmNJaVJUVlZCRlVsTkZWRjlTVDA5VVhDSmNibHh1WENJa1VGSlBTa1ZEVkY5U1QwOVVMM0JoZEdOb1pYTXZkbVZ5YVdaNVgzQmhkR05vTG5Ob1hDSWdYRnhjWEZ4dUlDQmNJaVJUVlZCRlVsTkZWRjlTVDA5VVhDSmNibHh1WENJa1UwTlNTVkJVWDBSSlVpOWlkV2xzWkMxelpHc3VjMmhjSWlCY1hGeGNYRzRnSUZ3aUpGTlZVRVZTVTBWVVgxSlBUMVJjSWx4dVhHNWNJaVJUUTFKSlVGUmZSRWxTTDJKMWFXeGtMWE4xY0dWeWMyVjBMV1p5YjI1MFpXNWtMbk5vWENJZ1hGeGNYRnh1SUNCY0lpUlRWVkJGVWxORlZGOVNUMDlVWENKY2JseHVaV05vYjF4dVpXTm9ieUJjSWxCaGRHTm9JR0Z1WkNCbWNtOXVkR1Z1WkNCaWRXbHNaSE1nWTI5dGNHeGxkR1ZrTGx3aVhHNWdPMXh1WEc1amIyNXpkQ0JDVlVsTVJGOUVUME5MUlZKZlUwZ2dQU0JnSXlFdmRYTnlMMkpwYmk5bGJuWWdZbUZ6YUZ4dVhHNXpaWFFnTFdWMWJ5QndhWEJsWm1GcGJGeHVYRzVUVlZCRlVsTkZWRjlTVDA5VVBWeGNKSHN4T2o5VmMyRm5aVG9nWW5WcGJHUXRaRzlqYTJWeUxXbHRZV2RsTG5Ob0lDOXdZWFJvTDNSdkwzTjFjR1Z5YzJWMElGdHBiV0ZuWlMxMFlXZGRmVnh1U1UxQlIwVmZWRUZIUFZ4Y0pIc3lPaTFzYjJOaGJDOXpkWEJsY25ObGRDMXpkMmwwWTJoaFlteGxPall1TVM0d2ZWeHVYRzVUUTFKSlVGUmZSRWxTUFNRb1hHNGdJR05rSUZ3aUpDaGthWEp1WVcxbElGd2lYRndrZTBKQlUwaGZVMDlWVWtORld6QmRmVndpS1Z3aVhHNGdJSEIzWkZ4dUtWeHVYRzVRVWs5S1JVTlVYMUpQVDFROUpDaGNiaUFnWTJRZ1hDSWtVME5TU1ZCVVgwUkpVaTh1TGx3aVhHNGdJSEIzWkZ4dUtWeHVYRzV3ZVhSb2IyNHpJRnhjWEZ4Y2JpQWdYQ0lrVUZKUFNrVkRWRjlTVDA5VUwzQmhkR05vWlhNdllYQndiSGxmYzNWd1pYSnpaWFJmTmw4eFgzQmhkR05vTG5CNVhDSWdYRnhjWEZ4dUlDQmNJaVJUVlZCRlVsTkZWRjlTVDA5VVhDSmNibHh1WENJa1VGSlBTa1ZEVkY5U1QwOVVMM0JoZEdOb1pYTXZkbVZ5YVdaNVgzQmhkR05vTG5Ob1hDSWdYRnhjWEZ4dUlDQmNJaVJUVlZCRlVsTkZWRjlTVDA5VVhDSmNibHh1WTJRZ1hDSWtVMVZRUlZKVFJWUmZVazlQVkZ3aVhHNWNibVJ2WTJ0bGNpQmlkV2xzWkNCY1hGeGNYRzRnSUMwdGRHRnlaMlYwSUd4bFlXNGdYRnhjWEZ4dUlDQXRMWFJoWnlCY0lpUkpUVUZIUlY5VVFVZGNJaUJjWEZ4Y1hHNGdJQzVjYmx4dVpXTm9ieUJjSWtKMWFXeDBJRVJ2WTJ0bGNpQnBiV0ZuWlRvZ0pFbE5RVWRGWDFSQlIxd2lYRzVnTzF4dVhHNWpiMjV6ZENCU1JVRkVUVVVnUFNCZ0l5QWtlMU5WVUVWU1UwVlVYMUJNVlVkSlRsOUpSSDFjYmx4dVRYVnNkR2t0ZEdWdVlXNTBMQ0J2Y21jdFlXZHViM04wYVdNZ1UzVndaWEp6WlhRZ1pHRnphR0p2WVhKa0lHVnRZbVZrSUhCc2RXZHBiaUFvY0dGMFkyZ3RZVzVrTFdKMWFXeGtJSE4wY21GMFpXZDVLUzVjYmx4dVZHaHBjeUJwY3lCdWIzUWdZU0JuWlc1bGNtRjBaV1FnY0d4MVoybHVJR3hwYTJVZ2RHaGxJRXRwWW1GdVlTQjJZWEpwWVc1MExpQkpibk4wWldGa0xDQkVaV05oWmlCb2IyeGtjMXh1Y0dGMFkyZ2djMk55YVhCMGN5QjBhR0YwSUcxdlpHbG1lU0JUZFhCbGNuTmxkQ2R6SUdsdWRHVnlibUZzSUdWdFltVmtaR1ZrSUdaeWIyNTBaVzVrSUdGdVpDQmxiV0psWkdSbFpGeHVVMFJMSUhOdmRYSmpaU0JtYVd4bGN5QjBieUJoWkdRZ1lTQmNYR0J6ZDJsMFkyaEVZWE5vWW05aGNtUmNYR0FnYldWMGFHOWtMaUJVYUdVZ1pYaHBjM1JwYm1jZ2FXWnlZVzFsWEc1bGJHVnRaVzUwTENCa2IyTjFiV1Z1ZEN3Z1kyOXVkR1Z1ZEZkcGJtUnZkeXdnVW1WaFkzUWdjblZ1ZEdsdFpTd2dZVzVrSUZOM2FYUmphR0p2WVhKa0lFMWxjM05oWjJWRGFHRnVibVZzWEc1aGNtVWdjSEpsYzJWeWRtVmtJR0ZqY205emN5QmtZWE5vWW05aGNtUWdjM2RwZEdOb1pYTXVYRzVjYmlNaklGZG9ZWFFnYVhRZ2NHRjBZMmhsYzF4dVhHNHRJRnhjWUhOMWNHVnljMlYwTFdaeWIyNTBaVzVrTDNOeVl5OWxiV0psWkdSbFpDOXBibVJsZUM1MGMzaGNYR0FnNG9DVUlHRmtaSE1nWEZ4Z2MzZHBkR05vUkdGemFHSnZZWEprWEZ4Z0lIUnZJSFJvWlZ4dUlDQlRkMmwwWTJoaWIyRnlaQ0JqYUdGdWJtVnNPeUJ5WlhCc1lXTmxjeUJ2Ym14NUlGeGNZRVJoYzJoaWIyRnlaRkJoWjJWY1hHQXVYRzR0SUZ4Y1lITjFjR1Z5YzJWMExXVnRZbVZrWkdWa0xYTmtheTl6Y21NdmFXNWtaWGd1ZEhOY1hHQWc0b0NVSUdGa1pITmNiaUFnWEZ4Z1pXMWlaV1JrWldSRVlYTm9ZbTloY21RdWMzZHBkR05vUkdGemFHSnZZWEprS0dSaGMyaGliMkZ5WkVsa0tWeGNZRHNnY21WeGRXVnpkSE1nWVNCbmRXVnpkQ0IwYjJ0bGJpQm1iM0pjYmlBZ2RHaGxJSE5sYkdWamRHVmtJR1JoYzJoaWIyRnlaRHNnY21WbWNtVnphR1Z6SUdaMWRIVnlaU0JuZFdWemRDQjBiMnRsYm5NZ1ptOXlJSFJvWlNCaFkzUnBkbVVnWkdGemFHSnZZWEprTGx4dVhHNGpJeUJDZFdsc1pGeHVYRzVjWEdCY1hHQmNYR0JpWVhOb1hHNGpJRUZ3Y0d4NUlIQmhkR05vSUNzZ2RtVnlhV1o1SUNzZ1luVnBiR1FnVTBSTElDc2dZblZwYkdRZ1puSnZiblJsYm1SY2JtSjFhV3hrTDNCaGRHTm9MV0Z1WkMxaWRXbHNaQzV6YUNBdmNHRjBhQzkwYnk5emRYQmxjbk5sZEZ4dVhHNGpJRTl5SUdKMWFXeGtJR0VnUkc5amEyVnlJR2x0WVdkbFhHNWlkV2xzWkM5aWRXbHNaQzFrYjJOclpYSXRhVzFoWjJVdWMyZ2dMM0JoZEdndmRHOHZjM1Z3WlhKelpYUWdjbVZuYVhOMGNua3VaWGhoYlhCc1pTNWpiMjB2YzNWd1pYSnpaWFF0YzNkcGRHTm9ZV0pzWlRvMkxqRXVNRnh1WEZ4Z1hGeGdYRnhnWEc1Y2JsUm9aU0J3WVhSamFHVmtJRk5FU3lCdGRYTjBJR0psSUhCaFkydGxaQ0JoYm1RZ2FXNXpkR0ZzYkdWa0lHbHVkRzhnZEdobElFRnVaM1ZzWVhJZ1lYQndiR2xqWVhScGIyNDZYRzVjYmx4Y1lGeGNZRnhjWUdKaGMyaGNibU5rSUM5d1lYUm9MM1J2TDNOMWNHVnljMlYwTDNOMWNHVnljMlYwTFdWdFltVmtaR1ZrTFhOa2ExeHVibkJ0SUdOcElDWW1JRzV3YlNCeWRXNGdZblZwYkdRZ0ppWWdibkJ0SUhCaFkydGNibU5rSUM5d1lYUm9MM1J2TDJGdVozVnNZWEl0WVhCd1hHNXVjRzBnYVc1emRHRnNiQ0F2Y0dGMGFDOTBieTl6ZFhCbGNuTmxkQzl6ZFhCbGNuTmxkQzFsYldKbFpHUmxaQzF6WkdzdmMzVndaWEp6WlhRdGRXa3RaVzFpWldSa1pXUXRjMlJyTFNvdWRHZDZYRzVjWEdCY1hHQmNYR0JjYmx4dVZtVnljMmx2YmpvZ0pIdFRWVkJGVWxORlZGOVFURlZIU1U1ZlZrVlNVMGxQVG4xY2JtQTdYRzVjYmk4cUtseHVJQ29nVW1WMGRYSnVjeUIwYUdVZ1puVnNiQ0J6WlhRZ2IyWWdjR0YwWTJnZ1lXNWtJR0oxYVd4a0lITmpjbWx3ZENCbWFXeGxjeTVjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlITjFjR1Z5YzJWMFVHRjBZMmhHYVd4bGN5Z3BPaUJUZFhCbGNuTmxkRkJoZEdOb1JtbHNaVnRkSUh0Y2JpQWdjbVYwZFhKdUlGdGNiaUFnSUNCN0lIQmhkR2c2SUZ3aWNHRjBZMmhsY3k5aGNIQnNlVjl6ZFhCbGNuTmxkRjgyWHpGZmNHRjBZMmd1Y0hsY0lpd2dZMjl1ZEdWdWREb2dRVkJRVEZsZlVFRlVRMGhmVUZrc0lHVjRaV04xZEdGaWJHVTZJSFJ5ZFdVZ2ZTeGNiaUFnSUNCN0lIQmhkR2c2SUZ3aWNHRjBZMmhsY3k5MlpYSnBabmxmY0dGMFkyZ3VjMmhjSWl3Z1kyOXVkR1Z1ZERvZ1ZrVlNTVVpaWDFCQlZFTklYMU5JTENCbGVHVmpkWFJoWW14bE9pQjBjblZsSUgwc1hHNGdJQ0FnZXlCd1lYUm9PaUJjSW1KMWFXeGtMMkoxYVd4a0xYTmtheTV6YUZ3aUxDQmpiMjUwWlc1ME9pQkNWVWxNUkY5VFJFdGZVMGdzSUdWNFpXTjFkR0ZpYkdVNklIUnlkV1VnZlN4Y2JpQWdJQ0I3SUhCaGRHZzZJRndpWW5WcGJHUXZZblZwYkdRdGMzVndaWEp6WlhRdFpuSnZiblJsYm1RdWMyaGNJaXdnWTI5dWRHVnVkRG9nUWxWSlRFUmZSbEpQVGxSRlRrUmZVMGdzSUdWNFpXTjFkR0ZpYkdVNklIUnlkV1VnZlN4Y2JpQWdJQ0I3SUhCaGRHZzZJRndpWW5WcGJHUXZjR0YwWTJndFlXNWtMV0oxYVd4a0xuTm9YQ0lzSUdOdmJuUmxiblE2SUZCQlZFTklYMEZPUkY5Q1ZVbE1SRjlUU0N3Z1pYaGxZM1YwWVdKc1pUb2dkSEoxWlNCOUxGeHVJQ0FnSUhzZ2NHRjBhRG9nWENKaWRXbHNaQzlpZFdsc1pDMWtiMk5yWlhJdGFXMWhaMlV1YzJoY0lpd2dZMjl1ZEdWdWREb2dRbFZKVEVSZlJFOURTMFZTWDFOSUxDQmxlR1ZqZFhSaFlteGxPaUIwY25WbElIMHNYRzRnSUNBZ2V5QndZWFJvT2lCY0lsSkZRVVJOUlM1dFpGd2lMQ0JqYjI1MFpXNTBPaUJTUlVGRVRVVWdmU3hjYmlBZ1hUdGNibjFjYmlKZGZRPT0iXX0=