@bluedynamics/cdk8s-plone 0.1.30 → 0.1.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +127 -51
- package/API.md +69 -0
- package/documentation/sources/how-to/deploy-with-vinyl-cache.md +22 -0
- package/lib/httpcache.js +1 -1
- package/lib/plone.js +1 -1
- package/lib/vinylcache.d.ts +30 -0
- package/lib/vinylcache.js +25 -3
- package/package.json +1 -1
package/.jsii
CHANGED
|
@@ -1770,7 +1770,7 @@
|
|
|
1770
1770
|
},
|
|
1771
1771
|
"locationInModule": {
|
|
1772
1772
|
"filename": "src/vinylcache.ts",
|
|
1773
|
-
"line":
|
|
1773
|
+
"line": 350
|
|
1774
1774
|
},
|
|
1775
1775
|
"parameters": [
|
|
1776
1776
|
{
|
|
@@ -1796,7 +1796,7 @@
|
|
|
1796
1796
|
"kind": "class",
|
|
1797
1797
|
"locationInModule": {
|
|
1798
1798
|
"filename": "src/vinylcache.ts",
|
|
1799
|
-
"line":
|
|
1799
|
+
"line": 343
|
|
1800
1800
|
},
|
|
1801
1801
|
"name": "PloneVinylCache",
|
|
1802
1802
|
"properties": [
|
|
@@ -1809,7 +1809,7 @@
|
|
|
1809
1809
|
"immutable": true,
|
|
1810
1810
|
"locationInModule": {
|
|
1811
1811
|
"filename": "src/vinylcache.ts",
|
|
1812
|
-
"line":
|
|
1812
|
+
"line": 348
|
|
1813
1813
|
},
|
|
1814
1814
|
"name": "vinylCacheServiceName",
|
|
1815
1815
|
"type": {
|
|
@@ -1831,7 +1831,7 @@
|
|
|
1831
1831
|
"kind": "interface",
|
|
1832
1832
|
"locationInModule": {
|
|
1833
1833
|
"filename": "src/vinylcache.ts",
|
|
1834
|
-
"line":
|
|
1834
|
+
"line": 124
|
|
1835
1835
|
},
|
|
1836
1836
|
"name": "PloneVinylCacheOptions",
|
|
1837
1837
|
"properties": [
|
|
@@ -1845,7 +1845,7 @@
|
|
|
1845
1845
|
"immutable": true,
|
|
1846
1846
|
"locationInModule": {
|
|
1847
1847
|
"filename": "src/vinylcache.ts",
|
|
1848
|
-
"line":
|
|
1848
|
+
"line": 129
|
|
1849
1849
|
},
|
|
1850
1850
|
"name": "plone",
|
|
1851
1851
|
"type": {
|
|
@@ -1862,7 +1862,7 @@
|
|
|
1862
1862
|
"immutable": true,
|
|
1863
1863
|
"locationInModule": {
|
|
1864
1864
|
"filename": "src/vinylcache.ts",
|
|
1865
|
-
"line":
|
|
1865
|
+
"line": 172
|
|
1866
1866
|
},
|
|
1867
1867
|
"name": "director",
|
|
1868
1868
|
"optional": true,
|
|
@@ -1881,7 +1881,7 @@
|
|
|
1881
1881
|
"immutable": true,
|
|
1882
1882
|
"locationInModule": {
|
|
1883
1883
|
"filename": "src/vinylcache.ts",
|
|
1884
|
-
"line":
|
|
1884
|
+
"line": 136
|
|
1885
1885
|
},
|
|
1886
1886
|
"name": "extraBackends",
|
|
1887
1887
|
"optional": true,
|
|
@@ -1904,7 +1904,7 @@
|
|
|
1904
1904
|
"immutable": true,
|
|
1905
1905
|
"locationInModule": {
|
|
1906
1906
|
"filename": "src/vinylcache.ts",
|
|
1907
|
-
"line":
|
|
1907
|
+
"line": 238
|
|
1908
1908
|
},
|
|
1909
1909
|
"name": "image",
|
|
1910
1910
|
"optional": true,
|
|
@@ -1922,7 +1922,7 @@
|
|
|
1922
1922
|
"immutable": true,
|
|
1923
1923
|
"locationInModule": {
|
|
1924
1924
|
"filename": "src/vinylcache.ts",
|
|
1925
|
-
"line":
|
|
1925
|
+
"line": 226
|
|
1926
1926
|
},
|
|
1927
1927
|
"name": "invalidation",
|
|
1928
1928
|
"optional": true,
|
|
@@ -1940,7 +1940,7 @@
|
|
|
1940
1940
|
"immutable": true,
|
|
1941
1941
|
"locationInModule": {
|
|
1942
1942
|
"filename": "src/vinylcache.ts",
|
|
1943
|
-
"line":
|
|
1943
|
+
"line": 160
|
|
1944
1944
|
},
|
|
1945
1945
|
"name": "limitCpu",
|
|
1946
1946
|
"optional": true,
|
|
@@ -1958,7 +1958,7 @@
|
|
|
1958
1958
|
"immutable": true,
|
|
1959
1959
|
"locationInModule": {
|
|
1960
1960
|
"filename": "src/vinylcache.ts",
|
|
1961
|
-
"line":
|
|
1961
|
+
"line": 166
|
|
1962
1962
|
},
|
|
1963
1963
|
"name": "limitMemory",
|
|
1964
1964
|
"optional": true,
|
|
@@ -1976,7 +1976,7 @@
|
|
|
1976
1976
|
"immutable": true,
|
|
1977
1977
|
"locationInModule": {
|
|
1978
1978
|
"filename": "src/vinylcache.ts",
|
|
1979
|
-
"line":
|
|
1979
|
+
"line": 232
|
|
1980
1980
|
},
|
|
1981
1981
|
"name": "monitoring",
|
|
1982
1982
|
"optional": true,
|
|
@@ -1995,7 +1995,7 @@
|
|
|
1995
1995
|
"immutable": true,
|
|
1996
1996
|
"locationInModule": {
|
|
1997
1997
|
"filename": "src/vinylcache.ts",
|
|
1998
|
-
"line":
|
|
1998
|
+
"line": 251
|
|
1999
1999
|
},
|
|
2000
2000
|
"name": "nodeSelector",
|
|
2001
2001
|
"optional": true,
|
|
@@ -2018,7 +2018,7 @@
|
|
|
2018
2018
|
"immutable": true,
|
|
2019
2019
|
"locationInModule": {
|
|
2020
2020
|
"filename": "src/vinylcache.ts",
|
|
2021
|
-
"line":
|
|
2021
|
+
"line": 142
|
|
2022
2022
|
},
|
|
2023
2023
|
"name": "replicas",
|
|
2024
2024
|
"optional": true,
|
|
@@ -2036,7 +2036,7 @@
|
|
|
2036
2036
|
"immutable": true,
|
|
2037
2037
|
"locationInModule": {
|
|
2038
2038
|
"filename": "src/vinylcache.ts",
|
|
2039
|
-
"line":
|
|
2039
|
+
"line": 148
|
|
2040
2040
|
},
|
|
2041
2041
|
"name": "requestCpu",
|
|
2042
2042
|
"optional": true,
|
|
@@ -2054,7 +2054,7 @@
|
|
|
2054
2054
|
"immutable": true,
|
|
2055
2055
|
"locationInModule": {
|
|
2056
2056
|
"filename": "src/vinylcache.ts",
|
|
2057
|
-
"line":
|
|
2057
|
+
"line": 154
|
|
2058
2058
|
},
|
|
2059
2059
|
"name": "requestMemory",
|
|
2060
2060
|
"optional": true,
|
|
@@ -2062,6 +2062,82 @@
|
|
|
2062
2062
|
"primitive": "string"
|
|
2063
2063
|
}
|
|
2064
2064
|
},
|
|
2065
|
+
{
|
|
2066
|
+
"abstract": true,
|
|
2067
|
+
"docs": {
|
|
2068
|
+
"default": "- operator default (\"HASH\")",
|
|
2069
|
+
"remarks": "\"HASH\" uses the Varnish hash (default); \"URL\" uses the request URL.\nOnly applied when director is \"shard\".\nRequires cloud-vinyl operator >= 0.4.2.",
|
|
2070
|
+
"stability": "stable",
|
|
2071
|
+
"summary": "Shard director: what value is hashed for shard selection."
|
|
2072
|
+
},
|
|
2073
|
+
"immutable": true,
|
|
2074
|
+
"locationInModule": {
|
|
2075
|
+
"filename": "src/vinylcache.ts",
|
|
2076
|
+
"line": 181
|
|
2077
|
+
},
|
|
2078
|
+
"name": "shardBy",
|
|
2079
|
+
"optional": true,
|
|
2080
|
+
"type": {
|
|
2081
|
+
"primitive": "string"
|
|
2082
|
+
}
|
|
2083
|
+
},
|
|
2084
|
+
{
|
|
2085
|
+
"abstract": true,
|
|
2086
|
+
"docs": {
|
|
2087
|
+
"default": "- operator default (\"CHOSEN\")",
|
|
2088
|
+
"remarks": "\"CHOSEN\" (default) only considers the chosen backend healthy; \"ALL\" requires all\nbackends to be healthy.\nOnly applied when director is \"shard\".\nRequires cloud-vinyl operator >= 0.4.2.",
|
|
2089
|
+
"stability": "stable",
|
|
2090
|
+
"summary": "Shard director: which backends the director considers when selecting a shard."
|
|
2091
|
+
},
|
|
2092
|
+
"immutable": true,
|
|
2093
|
+
"locationInModule": {
|
|
2094
|
+
"filename": "src/vinylcache.ts",
|
|
2095
|
+
"line": 191
|
|
2096
|
+
},
|
|
2097
|
+
"name": "shardHealthy",
|
|
2098
|
+
"optional": true,
|
|
2099
|
+
"type": {
|
|
2100
|
+
"primitive": "string"
|
|
2101
|
+
}
|
|
2102
|
+
},
|
|
2103
|
+
{
|
|
2104
|
+
"abstract": true,
|
|
2105
|
+
"docs": {
|
|
2106
|
+
"default": "- operator default (\"30s\")",
|
|
2107
|
+
"remarks": "Only applied when director is \"shard\".",
|
|
2108
|
+
"stability": "stable",
|
|
2109
|
+
"summary": "Shard director: time after adding a backend before it receives its full share of traffic, preventing thundering-herd."
|
|
2110
|
+
},
|
|
2111
|
+
"immutable": true,
|
|
2112
|
+
"locationInModule": {
|
|
2113
|
+
"filename": "src/vinylcache.ts",
|
|
2114
|
+
"line": 199
|
|
2115
|
+
},
|
|
2116
|
+
"name": "shardRampup",
|
|
2117
|
+
"optional": true,
|
|
2118
|
+
"type": {
|
|
2119
|
+
"primitive": "string"
|
|
2120
|
+
}
|
|
2121
|
+
},
|
|
2122
|
+
{
|
|
2123
|
+
"abstract": true,
|
|
2124
|
+
"docs": {
|
|
2125
|
+
"default": "- operator default (67)",
|
|
2126
|
+
"remarks": "Only applied when director is \"shard\".",
|
|
2127
|
+
"stability": "stable",
|
|
2128
|
+
"summary": "Shard director: number of Ketama replicas per backend in the hash ring."
|
|
2129
|
+
},
|
|
2130
|
+
"immutable": true,
|
|
2131
|
+
"locationInModule": {
|
|
2132
|
+
"filename": "src/vinylcache.ts",
|
|
2133
|
+
"line": 206
|
|
2134
|
+
},
|
|
2135
|
+
"name": "shardReplicas",
|
|
2136
|
+
"optional": true,
|
|
2137
|
+
"type": {
|
|
2138
|
+
"primitive": "number"
|
|
2139
|
+
}
|
|
2140
|
+
},
|
|
2065
2141
|
{
|
|
2066
2142
|
"abstract": true,
|
|
2067
2143
|
"docs": {
|
|
@@ -2072,7 +2148,7 @@
|
|
|
2072
2148
|
"immutable": true,
|
|
2073
2149
|
"locationInModule": {
|
|
2074
2150
|
"filename": "src/vinylcache.ts",
|
|
2075
|
-
"line":
|
|
2151
|
+
"line": 244
|
|
2076
2152
|
},
|
|
2077
2153
|
"name": "tolerations",
|
|
2078
2154
|
"optional": true,
|
|
@@ -2095,7 +2171,7 @@
|
|
|
2095
2171
|
"immutable": true,
|
|
2096
2172
|
"locationInModule": {
|
|
2097
2173
|
"filename": "src/vinylcache.ts",
|
|
2098
|
-
"line":
|
|
2174
|
+
"line": 323
|
|
2099
2175
|
},
|
|
2100
2176
|
"name": "vclBackendErrorSnippet",
|
|
2101
2177
|
"optional": true,
|
|
@@ -2113,7 +2189,7 @@
|
|
|
2113
2189
|
"immutable": true,
|
|
2114
2190
|
"locationInModule": {
|
|
2115
2191
|
"filename": "src/vinylcache.ts",
|
|
2116
|
-
"line":
|
|
2192
|
+
"line": 317
|
|
2117
2193
|
},
|
|
2118
2194
|
"name": "vclBackendFetchSnippet",
|
|
2119
2195
|
"optional": true,
|
|
@@ -2132,7 +2208,7 @@
|
|
|
2132
2208
|
"immutable": true,
|
|
2133
2209
|
"locationInModule": {
|
|
2134
2210
|
"filename": "src/vinylcache.ts",
|
|
2135
|
-
"line":
|
|
2211
|
+
"line": 220
|
|
2136
2212
|
},
|
|
2137
2213
|
"name": "vclBackendResponseSnippet",
|
|
2138
2214
|
"optional": true,
|
|
@@ -2150,7 +2226,7 @@
|
|
|
2150
2226
|
"immutable": true,
|
|
2151
2227
|
"locationInModule": {
|
|
2152
2228
|
"filename": "src/vinylcache.ts",
|
|
2153
|
-
"line":
|
|
2229
|
+
"line": 257
|
|
2154
2230
|
},
|
|
2155
2231
|
"name": "vclDeliverSnippet",
|
|
2156
2232
|
"optional": true,
|
|
@@ -2168,7 +2244,7 @@
|
|
|
2168
2244
|
"immutable": true,
|
|
2169
2245
|
"locationInModule": {
|
|
2170
2246
|
"filename": "src/vinylcache.ts",
|
|
2171
|
-
"line":
|
|
2247
|
+
"line": 311
|
|
2172
2248
|
},
|
|
2173
2249
|
"name": "vclFiniSnippet",
|
|
2174
2250
|
"optional": true,
|
|
@@ -2186,7 +2262,7 @@
|
|
|
2186
2262
|
"immutable": true,
|
|
2187
2263
|
"locationInModule": {
|
|
2188
2264
|
"filename": "src/vinylcache.ts",
|
|
2189
|
-
"line":
|
|
2265
|
+
"line": 299
|
|
2190
2266
|
},
|
|
2191
2267
|
"name": "vclHashSnippet",
|
|
2192
2268
|
"optional": true,
|
|
@@ -2204,7 +2280,7 @@
|
|
|
2204
2280
|
"immutable": true,
|
|
2205
2281
|
"locationInModule": {
|
|
2206
2282
|
"filename": "src/vinylcache.ts",
|
|
2207
|
-
"line":
|
|
2283
|
+
"line": 263
|
|
2208
2284
|
},
|
|
2209
2285
|
"name": "vclHitSnippet",
|
|
2210
2286
|
"optional": true,
|
|
@@ -2222,7 +2298,7 @@
|
|
|
2222
2298
|
"immutable": true,
|
|
2223
2299
|
"locationInModule": {
|
|
2224
2300
|
"filename": "src/vinylcache.ts",
|
|
2225
|
-
"line":
|
|
2301
|
+
"line": 305
|
|
2226
2302
|
},
|
|
2227
2303
|
"name": "vclInitSnippet",
|
|
2228
2304
|
"optional": true,
|
|
@@ -2240,7 +2316,7 @@
|
|
|
2240
2316
|
"immutable": true,
|
|
2241
2317
|
"locationInModule": {
|
|
2242
2318
|
"filename": "src/vinylcache.ts",
|
|
2243
|
-
"line":
|
|
2319
|
+
"line": 269
|
|
2244
2320
|
},
|
|
2245
2321
|
"name": "vclMissSnippet",
|
|
2246
2322
|
"optional": true,
|
|
@@ -2258,7 +2334,7 @@
|
|
|
2258
2334
|
"immutable": true,
|
|
2259
2335
|
"locationInModule": {
|
|
2260
2336
|
"filename": "src/vinylcache.ts",
|
|
2261
|
-
"line":
|
|
2337
|
+
"line": 275
|
|
2262
2338
|
},
|
|
2263
2339
|
"name": "vclPassSnippet",
|
|
2264
2340
|
"optional": true,
|
|
@@ -2276,7 +2352,7 @@
|
|
|
2276
2352
|
"immutable": true,
|
|
2277
2353
|
"locationInModule": {
|
|
2278
2354
|
"filename": "src/vinylcache.ts",
|
|
2279
|
-
"line":
|
|
2355
|
+
"line": 281
|
|
2280
2356
|
},
|
|
2281
2357
|
"name": "vclPipeSnippet",
|
|
2282
2358
|
"optional": true,
|
|
@@ -2294,7 +2370,7 @@
|
|
|
2294
2370
|
"immutable": true,
|
|
2295
2371
|
"locationInModule": {
|
|
2296
2372
|
"filename": "src/vinylcache.ts",
|
|
2297
|
-
"line":
|
|
2373
|
+
"line": 293
|
|
2298
2374
|
},
|
|
2299
2375
|
"name": "vclPurgeSnippet",
|
|
2300
2376
|
"optional": true,
|
|
@@ -2313,7 +2389,7 @@
|
|
|
2313
2389
|
"immutable": true,
|
|
2314
2390
|
"locationInModule": {
|
|
2315
2391
|
"filename": "src/vinylcache.ts",
|
|
2316
|
-
"line":
|
|
2392
|
+
"line": 213
|
|
2317
2393
|
},
|
|
2318
2394
|
"name": "vclRecvSnippet",
|
|
2319
2395
|
"optional": true,
|
|
@@ -2331,7 +2407,7 @@
|
|
|
2331
2407
|
"immutable": true,
|
|
2332
2408
|
"locationInModule": {
|
|
2333
2409
|
"filename": "src/vinylcache.ts",
|
|
2334
|
-
"line":
|
|
2410
|
+
"line": 287
|
|
2335
2411
|
},
|
|
2336
2412
|
"name": "vclSynthSnippet",
|
|
2337
2413
|
"optional": true,
|
|
@@ -2353,7 +2429,7 @@
|
|
|
2353
2429
|
"kind": "interface",
|
|
2354
2430
|
"locationInModule": {
|
|
2355
2431
|
"filename": "src/vinylcache.ts",
|
|
2356
|
-
"line":
|
|
2432
|
+
"line": 59
|
|
2357
2433
|
},
|
|
2358
2434
|
"name": "VinylCacheBackend",
|
|
2359
2435
|
"properties": [
|
|
@@ -2367,7 +2443,7 @@
|
|
|
2367
2443
|
"immutable": true,
|
|
2368
2444
|
"locationInModule": {
|
|
2369
2445
|
"filename": "src/vinylcache.ts",
|
|
2370
|
-
"line":
|
|
2446
|
+
"line": 63
|
|
2371
2447
|
},
|
|
2372
2448
|
"name": "name",
|
|
2373
2449
|
"type": {
|
|
@@ -2383,7 +2459,7 @@
|
|
|
2383
2459
|
"immutable": true,
|
|
2384
2460
|
"locationInModule": {
|
|
2385
2461
|
"filename": "src/vinylcache.ts",
|
|
2386
|
-
"line":
|
|
2462
|
+
"line": 73
|
|
2387
2463
|
},
|
|
2388
2464
|
"name": "port",
|
|
2389
2465
|
"type": {
|
|
@@ -2399,7 +2475,7 @@
|
|
|
2399
2475
|
"immutable": true,
|
|
2400
2476
|
"locationInModule": {
|
|
2401
2477
|
"filename": "src/vinylcache.ts",
|
|
2402
|
-
"line":
|
|
2478
|
+
"line": 68
|
|
2403
2479
|
},
|
|
2404
2480
|
"name": "serviceName",
|
|
2405
2481
|
"type": {
|
|
@@ -2416,7 +2492,7 @@
|
|
|
2416
2492
|
"immutable": true,
|
|
2417
2493
|
"locationInModule": {
|
|
2418
2494
|
"filename": "src/vinylcache.ts",
|
|
2419
|
-
"line":
|
|
2495
|
+
"line": 79
|
|
2420
2496
|
},
|
|
2421
2497
|
"name": "probe",
|
|
2422
2498
|
"optional": true,
|
|
@@ -2435,7 +2511,7 @@
|
|
|
2435
2511
|
"immutable": true,
|
|
2436
2512
|
"locationInModule": {
|
|
2437
2513
|
"filename": "src/vinylcache.ts",
|
|
2438
|
-
"line":
|
|
2514
|
+
"line": 85
|
|
2439
2515
|
},
|
|
2440
2516
|
"name": "weight",
|
|
2441
2517
|
"optional": true,
|
|
@@ -2457,7 +2533,7 @@
|
|
|
2457
2533
|
"kind": "interface",
|
|
2458
2534
|
"locationInModule": {
|
|
2459
2535
|
"filename": "src/vinylcache.ts",
|
|
2460
|
-
"line":
|
|
2536
|
+
"line": 18
|
|
2461
2537
|
},
|
|
2462
2538
|
"name": "VinylCacheBackendProbe",
|
|
2463
2539
|
"properties": [
|
|
@@ -2471,7 +2547,7 @@
|
|
|
2471
2547
|
"immutable": true,
|
|
2472
2548
|
"locationInModule": {
|
|
2473
2549
|
"filename": "src/vinylcache.ts",
|
|
2474
|
-
"line":
|
|
2550
|
+
"line": 53
|
|
2475
2551
|
},
|
|
2476
2552
|
"name": "expectedResponse",
|
|
2477
2553
|
"optional": true,
|
|
@@ -2489,7 +2565,7 @@
|
|
|
2489
2565
|
"immutable": true,
|
|
2490
2566
|
"locationInModule": {
|
|
2491
2567
|
"filename": "src/vinylcache.ts",
|
|
2492
|
-
"line":
|
|
2568
|
+
"line": 29
|
|
2493
2569
|
},
|
|
2494
2570
|
"name": "interval",
|
|
2495
2571
|
"optional": true,
|
|
@@ -2507,7 +2583,7 @@
|
|
|
2507
2583
|
"immutable": true,
|
|
2508
2584
|
"locationInModule": {
|
|
2509
2585
|
"filename": "src/vinylcache.ts",
|
|
2510
|
-
"line":
|
|
2586
|
+
"line": 47
|
|
2511
2587
|
},
|
|
2512
2588
|
"name": "threshold",
|
|
2513
2589
|
"optional": true,
|
|
@@ -2525,7 +2601,7 @@
|
|
|
2525
2601
|
"immutable": true,
|
|
2526
2602
|
"locationInModule": {
|
|
2527
2603
|
"filename": "src/vinylcache.ts",
|
|
2528
|
-
"line":
|
|
2604
|
+
"line": 35
|
|
2529
2605
|
},
|
|
2530
2606
|
"name": "timeout",
|
|
2531
2607
|
"optional": true,
|
|
@@ -2543,7 +2619,7 @@
|
|
|
2543
2619
|
"immutable": true,
|
|
2544
2620
|
"locationInModule": {
|
|
2545
2621
|
"filename": "src/vinylcache.ts",
|
|
2546
|
-
"line":
|
|
2622
|
+
"line": 23
|
|
2547
2623
|
},
|
|
2548
2624
|
"name": "url",
|
|
2549
2625
|
"optional": true,
|
|
@@ -2561,7 +2637,7 @@
|
|
|
2561
2637
|
"immutable": true,
|
|
2562
2638
|
"locationInModule": {
|
|
2563
2639
|
"filename": "src/vinylcache.ts",
|
|
2564
|
-
"line":
|
|
2640
|
+
"line": 41
|
|
2565
2641
|
},
|
|
2566
2642
|
"name": "window",
|
|
2567
2643
|
"optional": true,
|
|
@@ -2583,7 +2659,7 @@
|
|
|
2583
2659
|
"kind": "interface",
|
|
2584
2660
|
"locationInModule": {
|
|
2585
2661
|
"filename": "src/vinylcache.ts",
|
|
2586
|
-
"line":
|
|
2662
|
+
"line": 91
|
|
2587
2663
|
},
|
|
2588
2664
|
"name": "VinylCacheToleration",
|
|
2589
2665
|
"properties": [
|
|
@@ -2596,7 +2672,7 @@
|
|
|
2596
2672
|
"immutable": true,
|
|
2597
2673
|
"locationInModule": {
|
|
2598
2674
|
"filename": "src/vinylcache.ts",
|
|
2599
|
-
"line":
|
|
2675
|
+
"line": 95
|
|
2600
2676
|
},
|
|
2601
2677
|
"name": "key",
|
|
2602
2678
|
"type": {
|
|
@@ -2613,7 +2689,7 @@
|
|
|
2613
2689
|
"immutable": true,
|
|
2614
2690
|
"locationInModule": {
|
|
2615
2691
|
"filename": "src/vinylcache.ts",
|
|
2616
|
-
"line":
|
|
2692
|
+
"line": 113
|
|
2617
2693
|
},
|
|
2618
2694
|
"name": "effect",
|
|
2619
2695
|
"optional": true,
|
|
@@ -2631,7 +2707,7 @@
|
|
|
2631
2707
|
"immutable": true,
|
|
2632
2708
|
"locationInModule": {
|
|
2633
2709
|
"filename": "src/vinylcache.ts",
|
|
2634
|
-
"line":
|
|
2710
|
+
"line": 101
|
|
2635
2711
|
},
|
|
2636
2712
|
"name": "operator",
|
|
2637
2713
|
"optional": true,
|
|
@@ -2649,7 +2725,7 @@
|
|
|
2649
2725
|
"immutable": true,
|
|
2650
2726
|
"locationInModule": {
|
|
2651
2727
|
"filename": "src/vinylcache.ts",
|
|
2652
|
-
"line":
|
|
2728
|
+
"line": 107
|
|
2653
2729
|
},
|
|
2654
2730
|
"name": "value",
|
|
2655
2731
|
"optional": true,
|
|
@@ -2661,6 +2737,6 @@
|
|
|
2661
2737
|
"symbolId": "src/vinylcache:VinylCacheToleration"
|
|
2662
2738
|
}
|
|
2663
2739
|
},
|
|
2664
|
-
"version": "0.1.
|
|
2665
|
-
"fingerprint": "/
|
|
2740
|
+
"version": "0.1.31",
|
|
2741
|
+
"fingerprint": "DfZRICJpeVu1djonNCdX/hOFxrPq8dB12aL/F8F4W1c="
|
|
2666
2742
|
}
|
package/API.md
CHANGED
|
@@ -1794,6 +1794,10 @@ const ploneVinylCacheOptions: PloneVinylCacheOptions = { ... }
|
|
|
1794
1794
|
| <code><a href="#@bluedynamics/cdk8s-plone.PloneVinylCacheOptions.property.replicas">replicas</a></code> | <code>number</code> | Number of Varnish pod replicas. |
|
|
1795
1795
|
| <code><a href="#@bluedynamics/cdk8s-plone.PloneVinylCacheOptions.property.requestCpu">requestCpu</a></code> | <code>string</code> | CPU request for Varnish pods. |
|
|
1796
1796
|
| <code><a href="#@bluedynamics/cdk8s-plone.PloneVinylCacheOptions.property.requestMemory">requestMemory</a></code> | <code>string</code> | Memory request for Varnish pods. |
|
|
1797
|
+
| <code><a href="#@bluedynamics/cdk8s-plone.PloneVinylCacheOptions.property.shardBy">shardBy</a></code> | <code>string</code> | Shard director: what value is hashed for shard selection. |
|
|
1798
|
+
| <code><a href="#@bluedynamics/cdk8s-plone.PloneVinylCacheOptions.property.shardHealthy">shardHealthy</a></code> | <code>string</code> | Shard director: which backends the director considers when selecting a shard. |
|
|
1799
|
+
| <code><a href="#@bluedynamics/cdk8s-plone.PloneVinylCacheOptions.property.shardRampup">shardRampup</a></code> | <code>string</code> | Shard director: time after adding a backend before it receives its full share of traffic, preventing thundering-herd. |
|
|
1800
|
+
| <code><a href="#@bluedynamics/cdk8s-plone.PloneVinylCacheOptions.property.shardReplicas">shardReplicas</a></code> | <code>number</code> | Shard director: number of Ketama replicas per backend in the hash ring. |
|
|
1797
1801
|
| <code><a href="#@bluedynamics/cdk8s-plone.PloneVinylCacheOptions.property.tolerations">tolerations</a></code> | <code><a href="#@bluedynamics/cdk8s-plone.VinylCacheToleration">VinylCacheToleration</a>[]</code> | Tolerations for the Varnish pods. |
|
|
1798
1802
|
| <code><a href="#@bluedynamics/cdk8s-plone.PloneVinylCacheOptions.property.vclBackendErrorSnippet">vclBackendErrorSnippet</a></code> | <code>string</code> | Custom VCL snippet for vcl_backend_error subroutine. |
|
|
1799
1803
|
| <code><a href="#@bluedynamics/cdk8s-plone.PloneVinylCacheOptions.property.vclBackendFetchSnippet">vclBackendFetchSnippet</a></code> | <code>string</code> | Custom VCL snippet for vcl_backend_fetch subroutine. |
|
|
@@ -1973,6 +1977,71 @@ Memory request for Varnish pods.
|
|
|
1973
1977
|
|
|
1974
1978
|
---
|
|
1975
1979
|
|
|
1980
|
+
##### `shardBy`<sup>Optional</sup> <a name="shardBy" id="@bluedynamics/cdk8s-plone.PloneVinylCacheOptions.property.shardBy"></a>
|
|
1981
|
+
|
|
1982
|
+
```typescript
|
|
1983
|
+
public readonly shardBy: string;
|
|
1984
|
+
```
|
|
1985
|
+
|
|
1986
|
+
- *Type:* string
|
|
1987
|
+
- *Default:* operator default ("HASH")
|
|
1988
|
+
|
|
1989
|
+
Shard director: what value is hashed for shard selection.
|
|
1990
|
+
|
|
1991
|
+
"HASH" uses the Varnish hash (default); "URL" uses the request URL.
|
|
1992
|
+
Only applied when director is "shard".
|
|
1993
|
+
Requires cloud-vinyl operator >= 0.4.2.
|
|
1994
|
+
|
|
1995
|
+
---
|
|
1996
|
+
|
|
1997
|
+
##### `shardHealthy`<sup>Optional</sup> <a name="shardHealthy" id="@bluedynamics/cdk8s-plone.PloneVinylCacheOptions.property.shardHealthy"></a>
|
|
1998
|
+
|
|
1999
|
+
```typescript
|
|
2000
|
+
public readonly shardHealthy: string;
|
|
2001
|
+
```
|
|
2002
|
+
|
|
2003
|
+
- *Type:* string
|
|
2004
|
+
- *Default:* operator default ("CHOSEN")
|
|
2005
|
+
|
|
2006
|
+
Shard director: which backends the director considers when selecting a shard.
|
|
2007
|
+
|
|
2008
|
+
"CHOSEN" (default) only considers the chosen backend healthy; "ALL" requires all
|
|
2009
|
+
backends to be healthy.
|
|
2010
|
+
Only applied when director is "shard".
|
|
2011
|
+
Requires cloud-vinyl operator >= 0.4.2.
|
|
2012
|
+
|
|
2013
|
+
---
|
|
2014
|
+
|
|
2015
|
+
##### `shardRampup`<sup>Optional</sup> <a name="shardRampup" id="@bluedynamics/cdk8s-plone.PloneVinylCacheOptions.property.shardRampup"></a>
|
|
2016
|
+
|
|
2017
|
+
```typescript
|
|
2018
|
+
public readonly shardRampup: string;
|
|
2019
|
+
```
|
|
2020
|
+
|
|
2021
|
+
- *Type:* string
|
|
2022
|
+
- *Default:* operator default ("30s")
|
|
2023
|
+
|
|
2024
|
+
Shard director: time after adding a backend before it receives its full share of traffic, preventing thundering-herd.
|
|
2025
|
+
|
|
2026
|
+
Only applied when director is "shard".
|
|
2027
|
+
|
|
2028
|
+
---
|
|
2029
|
+
|
|
2030
|
+
##### `shardReplicas`<sup>Optional</sup> <a name="shardReplicas" id="@bluedynamics/cdk8s-plone.PloneVinylCacheOptions.property.shardReplicas"></a>
|
|
2031
|
+
|
|
2032
|
+
```typescript
|
|
2033
|
+
public readonly shardReplicas: number;
|
|
2034
|
+
```
|
|
2035
|
+
|
|
2036
|
+
- *Type:* number
|
|
2037
|
+
- *Default:* operator default (67)
|
|
2038
|
+
|
|
2039
|
+
Shard director: number of Ketama replicas per backend in the hash ring.
|
|
2040
|
+
|
|
2041
|
+
Only applied when director is "shard".
|
|
2042
|
+
|
|
2043
|
+
---
|
|
2044
|
+
|
|
1976
2045
|
##### `tolerations`<sup>Optional</sup> <a name="tolerations" id="@bluedynamics/cdk8s-plone.PloneVinylCacheOptions.property.tolerations"></a>
|
|
1977
2046
|
|
|
1978
2047
|
```typescript
|
|
@@ -82,6 +82,11 @@ new PloneVinylCache(chart, 'cache', {
|
|
|
82
82
|
|
|
83
83
|
Invalidation is enabled by default (PURGE, BAN, xkey). Configure `plone.cachepurging` to point to the VinylCache invalidation proxy endpoint.
|
|
84
84
|
|
|
85
|
+
:::{note}
|
|
86
|
+
BAN-based invalidation requires **cloud-vinyl operator ≥ 0.4.2**. Earlier versions accept the spec but do not emit the BAN ACL / handler.
|
|
87
|
+
Starting with 0.4.2 the operator's own pod IP is automatically added to the PURGE ACL, so purges from the operator itself work without additional configuration.
|
|
88
|
+
:::
|
|
89
|
+
|
|
85
90
|
To disable invalidation:
|
|
86
91
|
|
|
87
92
|
```typescript
|
|
@@ -91,6 +96,23 @@ new PloneVinylCache(chart, 'cache', {
|
|
|
91
96
|
});
|
|
92
97
|
```
|
|
93
98
|
|
|
99
|
+
### Shard Director Tuning
|
|
100
|
+
|
|
101
|
+
For shard-based load distribution (the default), you can fine-tune the consistent-hash behavior. These options require **cloud-vinyl ≥ 0.4.2** to be honored by the generated VCL.
|
|
102
|
+
|
|
103
|
+
```typescript
|
|
104
|
+
new PloneVinylCache(chart, 'cache', {
|
|
105
|
+
plone: plone,
|
|
106
|
+
director: 'shard',
|
|
107
|
+
shardBy: 'URL', // hash the request URL instead of Varnish's hash
|
|
108
|
+
shardHealthy: 'ALL', // require all backends healthy (vs. only "CHOSEN")
|
|
109
|
+
shardRampup: '45s', // warm-up window for newly added backends
|
|
110
|
+
shardReplicas: 128, // Ketama replicas per backend
|
|
111
|
+
});
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Shard options are ignored for non-shard directors (`round_robin`, `random`, `hash`).
|
|
115
|
+
|
|
94
116
|
## Migrating from PloneHttpcache
|
|
95
117
|
|
|
96
118
|
Replace `PloneHttpcache` with `PloneVinylCache`:
|
package/lib/httpcache.js
CHANGED
|
@@ -118,5 +118,5 @@ class PloneHttpcache extends constructs_1.Construct {
|
|
|
118
118
|
}
|
|
119
119
|
exports.PloneHttpcache = PloneHttpcache;
|
|
120
120
|
_a = JSII_RTTI_SYMBOL_1;
|
|
121
|
-
PloneHttpcache[_a] = { fqn: "@bluedynamics/cdk8s-plone.PloneHttpcache", version: "0.1.
|
|
121
|
+
PloneHttpcache[_a] = { fqn: "@bluedynamics/cdk8s-plone.PloneHttpcache", version: "0.1.31" };
|
|
122
122
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cGNhY2hlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2h0dHBjYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFDN0IsaUNBQTZCO0FBQzdCLDJDQUF1QztBQXdKdkM7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsTUFBYSxjQUFlLFNBQVEsc0JBQVM7SUFPM0MsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxPQUE4QjtRQUN0RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLElBQUksVUFBa0IsQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3hCLElBQUksT0FBZSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztZQUM5RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUM7WUFDbkMsQ0FBQztZQUNELFVBQVUsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNoRCxDQUFDO2FBQU0sQ0FBQztZQUNOLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO1FBQ2xDLENBQUM7UUFDRCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUM7UUFDNUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxZQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRTtZQUM1Qyx1REFBdUQ7WUFDdkQsSUFBSSxFQUFFLDBCQUEwQjtZQUNoQyxLQUFLLEVBQUUsZ0JBQWdCO1lBQ3ZCLE9BQU8sRUFBRSxPQUFPLENBQUMsWUFBWTtZQUM3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QUFJLGdCQUFnQixLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLG9CQUFvQixHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQztJQUNwRCxDQUFDOztBQS9GSCx3Q0FnR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgSGVsbSB9IGZyb20gJ2NkazhzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgUGxvbmUgfSBmcm9tICcuL3Bsb25lJztcblxuLyoqXG4gKiBBbiBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBwYXNzIHRvIHRoZSBrdWJlLWh0dHBjYWNoZSBjb250YWluZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cGNhY2hlRW52VmFyIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBLdWJlcm5ldGVzIHRvbGVyYXRpb24gZm9yIHRoZSBWYXJuaXNoIHBvZHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cGNhY2hlVG9sZXJhdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgdGFpbnQga2V5IHRvIHRvbGVyYXRlLlxuICAgKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBvcGVyYXRvciAoRXF1YWwgb3IgRXhpc3RzKS5cbiAgICogQGRlZmF1bHQgJ0VxdWFsJ1xuICAgKi9cbiAgcmVhZG9ubHkgb3BlcmF0b3I/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWludCB2YWx1ZSB0byBtYXRjaCAod2hlbiBvcGVyYXRvciBpcyBFcXVhbCkuXG4gICAqIEBkZWZhdWx0IC0gbm8gdmFsdWVcbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFpbnQgZWZmZWN0IHRvIHRvbGVyYXRlIChOb1NjaGVkdWxlLCBQcmVmZXJOb1NjaGVkdWxlLCBOb0V4ZWN1dGUpLlxuICAgKiBAZGVmYXVsdCAtIHRvbGVyYXRlIGFsbCBlZmZlY3RzXG4gICAqL1xuICByZWFkb25seSBlZmZlY3Q/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBQbG9uZUh0dHBjYWNoZSAoVmFybmlzaCBjYWNoaW5nIGxheWVyKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbG9uZUh0dHBjYWNoZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIFBsb25lIGNvbnN0cnVjdCB0byBhdHRhY2ggdGhlIEhUVFAgY2FjaGUgdG8uXG4gICAqIFRoZSBjYWNoZSB3aWxsIGF1dG9tYXRpY2FsbHkgY29ubmVjdCB0byB0aGUgYmFja2VuZCBhbmQgZnJvbnRlbmQgc2VydmljZXMuXG4gICAqL1xuICByZWFkb25seSBwbG9uZTogUGxvbmU7XG5cbiAgLyoqXG4gICAqIFZhcm5pc2ggVkNMIGNvbmZpZ3VyYXRpb24gYXMgYSBzdHJpbmcuXG4gICAqIElmIHByb3ZpZGVkLCB0aGlzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB2YXJuaXNoVmNsRmlsZS5cbiAgICogQGRlZmF1bHQgLSBsb2FkZWQgZnJvbSB2YXJuaXNoVmNsRmlsZSBvciBkZWZhdWx0IGNvbmZpZyBmaWxlXG4gICAqL1xuICByZWFkb25seSB2YXJuaXNoVmNsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQYXRoIHRvIGEgVmFybmlzaCBWQ0wgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKiBJZiBub3QgcHJvdmlkZWQsIHVzZXMgdGhlIGRlZmF1bHQgVkNMIGZpbGUgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkuXG4gICAqIEBkZWZhdWx0IC0gdXNlcyBkZWZhdWx0IGNvbmZpZy92YXJuaXNoLnRwbC52Y2xcbiAgICovXG4gIHJlYWRvbmx5IHZhcm5pc2hWY2xGaWxlPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIGFuIGV4aXN0aW5nIEt1YmVybmV0ZXMgc2VjcmV0IGNvbnRhaW5pbmcgVmFybmlzaCBhZG1pbiBjcmVkZW50aWFscy5cbiAgICogVGhlIHNlY3JldCBzaG91bGQgYmUgY3JlYXRlZCBzZXBhcmF0ZWx5IGluIHRoZSBzYW1lIG5hbWVzcGFjZS5cbiAgICogQGRlZmF1bHQgLSB1bmRlZmluZWQgKG5vIGV4aXN0aW5nIHNlY3JldClcbiAgICovXG4gIHJlYWRvbmx5IGV4aXN0aW5nU2VjcmV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDUFUgbGltaXQgZm9yIFZhcm5pc2ggcG9kcy5cbiAgICogQGRlZmF1bHQgJzUwMG0nXG4gICAqL1xuICByZWFkb25seSBsaW1pdENwdT86IHN0cmluZztcblxuICAvKipcbiAgICogTWVtb3J5IGxpbWl0IGZvciBWYXJuaXNoIHBvZHMuXG4gICAqIEBkZWZhdWx0ICc1MDBNaSdcbiAgICovXG4gIHJlYWRvbmx5IGxpbWl0TWVtb3J5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDUFUgcmVxdWVzdCBmb3IgVmFybmlzaCBwb2RzLlxuICAgKiBAZGVmYXVsdCAnMTAwbSdcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVlc3RDcHU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE1lbW9yeSByZXF1ZXN0IGZvciBWYXJuaXNoIHBvZHMuXG4gICAqIEBkZWZhdWx0ICcxMDBNaSdcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVlc3RNZW1vcnk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBQcm9tZXRoZXVzIFNlcnZpY2VNb25pdG9yIGZvciBtZXRyaWNzIGNvbGxlY3Rpb24uXG4gICAqIFJlcXVpcmVzIFByb21ldGhldXMgT3BlcmF0b3IgdG8gYmUgaW5zdGFsbGVkIGluIHRoZSBjbHVzdGVyLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZW1vbml0b3I/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgdGhlIFByb21ldGhldXMgZXhwb3J0ZXIgZm9yIFZhcm5pc2ggbWV0cmljcy5cbiAgICogV2hlbiBlbmFibGVkLCB0aGUgZXhwb3J0ZXIgc2lkZWNhciBjb250YWluZXIgd2lsbCBiZSBkZXBsb3llZCBhbG9uZ3NpZGUgVmFybmlzaC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZXhwb3J0ZXJFbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVmVyc2lvbiBvZiB0aGUga3ViZS1odHRwY2FjaGUgSGVsbSBjaGFydCB0byB1c2UuXG4gICAqIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBsYXRlc3QgdmVyc2lvbiBmcm9tIHRoZSByZXBvc2l0b3J5IHdpbGwgYmUgdXNlZC5cbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkIChsYXRlc3QpXG4gICAqL1xuICByZWFkb25seSBjaGFydFZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZlcnNpb24gb2YgdGhlIGt1YmUtaHR0cGNhY2hlIENvbnRhaW5lciBJbWFnZSB0byB1c2UuXG4gICAqIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBsYXRlc3QgdmVyc2lvbiBmcm9tIHRoZSByZXBvc2l0b3J5IHdpbGwgYmUgdXNlZC5cbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkIChjaGFydFZlcnNpb24gPSB3aXRoIGVhY2ggY2hhcnQgcmVsZWFzZSB0aGVyZSBpcyBhbiBpbWFnZSByZWxlYXNlIHRvbyApXG4gICAqL1xuICByZWFkb25seSBhcHBWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgVmFybmlzaCBwb2QgcmVwbGljYXMgdG8gcnVuLlxuICAgKiBAZGVmYXVsdCAyXG4gICAqL1xuICByZWFkb25seSByZXBsaWNhcz86IG51bWJlcjtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gcGFzcyB0byB0aGUga3ViZS1odHRwY2FjaGUgY29udGFpbmVyLlxuICAgKiBUaGVzZSBhcmUgYXBwZW5kZWQgdG8gdGhlIGJ1aWx0LWluIGVudiB2YXJzIChCQUNLRU5EX1NFUlZJQ0VfTkFNRSwgZXRjLilcbiAgICogYW5kIGNhbiBiZSByZWZlcmVuY2VkIGluIFZDTCB0ZW1wbGF0ZXMgdXNpbmcgR28gdGVtcGxhdGUgc3ludGF4OiB7eyAuRW52LlZBUl9OQU1FIH19XG4gICAqIEBkZWZhdWx0IC0gbm8gYWRkaXRpb25hbCBlbnYgdmFyc1xuICAgKi9cbiAgcmVhZG9ubHkgZXh0cmFFbnZWYXJzPzogSHR0cGNhY2hlRW52VmFyW107XG5cbiAgLyoqXG4gICAqIFRvbGVyYXRpb25zIGZvciB0aGUgVmFybmlzaCBwb2RzLlxuICAgKiBVc2UgdGhpcyB0byBhbGxvdyBzY2hlZHVsaW5nIG9uIG5vZGVzIHdpdGggc3BlY2lmaWMgdGFpbnRzLFxuICAgKiBlLmcuIG5vZGVzIHRhaW50ZWQgd2l0aCBrdWJlcm5ldGVzLmlvL2FyY2g9YW1kNjQ6Tm9TY2hlZHVsZS5cbiAgICogQGRlZmF1bHQgLSBubyB0b2xlcmF0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgdG9sZXJhdGlvbnM/OiBIdHRwY2FjaGVUb2xlcmF0aW9uW107XG59XG5cbi8qKlxuICogUGxvbmVIdHRwY2FjaGUgY29uc3RydWN0IGZvciBkZXBsb3lpbmcgVmFybmlzaCBIVFRQIGNhY2hpbmcgbGF5ZXIuXG4gKlxuICogVXNlcyB0aGUgbWl0dHdhbGQva3ViZS1odHRwY2FjaGUgSGVsbSBjaGFydCB0byBkZXBsb3kgVmFybmlzaCBhcyBhXG4gKiBjYWNoaW5nIHByb3h5IGluIGZyb250IG9mIFBsb25lIGJhY2tlbmQgYW5kL29yIGZyb250ZW5kIHNlcnZpY2VzLlxuICpcbiAqIFRoZSBjYWNoZSBhdXRvbWF0aWNhbGx5IGNvbm5lY3RzIHRvIHRoZSBQbG9uZSBzZXJ2aWNlcyBhbmQgcHJvdmlkZXNcbiAqIEhUVFAgY2FjaGUgaW52YWxpZGF0aW9uIGNhcGFiaWxpdGllcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgcGxvbmUgPSBuZXcgUGxvbmUoY2hhcnQsICdwbG9uZScpO1xuICogY29uc3QgY2FjaGUgPSBuZXcgUGxvbmVIdHRwY2FjaGUoY2hhcnQsICdjYWNoZScsIHtcbiAqICAgcGxvbmU6IHBsb25lLFxuICogICBleGlzdGluZ1NlY3JldDogJ3Zhcm5pc2gtc2VjcmV0JyxcbiAqIH0pO1xuICovXG5leHBvcnQgY2xhc3MgUGxvbmVIdHRwY2FjaGUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgVmFybmlzaCBzZXJ2aWNlIGNyZWF0ZWQgYnkgdGhlIEhlbG0gY2hhcnQuXG4gICAqIFVzZSB0aGlzIHRvIHJlZmVyZW5jZSB0aGUgY2FjaGUgc2VydmljZSBmcm9tIGluZ3Jlc3Mgb3Igb3RoZXIgY29uc3RydWN0cy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBodHRwY2FjaGVTZXJ2aWNlTmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IFBsb25lSHR0cGNhY2hlT3B0aW9ucykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgbGV0IHZhcm5pc2hWY2w6IHN0cmluZztcbiAgICBpZiAoIW9wdGlvbnMudmFybmlzaFZjbCkge1xuICAgICAgbGV0IHZjbFBhdGg6IHN0cmluZztcbiAgICAgIGlmICghb3B0aW9ucy52YXJuaXNoVmNsRmlsZSkge1xuICAgICAgICB2Y2xQYXRoID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJ2NvbmZpZycsICd2YXJuaXNoLnRwbC52Y2wnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZjbFBhdGggPSBvcHRpb25zLnZhcm5pc2hWY2xGaWxlO1xuICAgICAgfVxuICAgICAgdmFybmlzaFZjbCA9IGZzLnJlYWRGaWxlU3luYyh2Y2xQYXRoLCAndXRmOCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXJuaXNoVmNsID0gb3B0aW9ucy52YXJuaXNoVmNsO1xuICAgIH1cbiAgICBjb25zdCBpbWFnZVRhZyA9IG9wdGlvbnMuYXBwVmVyc2lvbiA/PyBvcHRpb25zLmNoYXJ0VmVyc2lvbjtcbiAgICBjb25zdCBodHRwY2FjaGUgPSBuZXcgSGVsbSh0aGlzLCAnaHR0cGNhY2hlJywge1xuICAgICAgLy8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9taXR0d2FsZC9rdWJlLWh0dHBjYWNoZS9jaGFydFxuICAgICAgcmVwbzogJ2h0dHBzOi8vaGVsbS5taXR0d2FsZC5kZScsXG4gICAgICBjaGFydDogJ2t1YmUtaHR0cGNhY2hlJyxcbiAgICAgIHZlcnNpb246IG9wdGlvbnMuY2hhcnRWZXJzaW9uLFxuICAgICAgdmFsdWVzOiB7XG4gICAgICAgIHJlcGxpY2FDb3VudDogb3B0aW9ucy5yZXBsaWNhcyA/PyAyLFxuICAgICAgICAuLi4oaW1hZ2VUYWcgJiYgeyBpbWFnZTogeyB0YWc6IGltYWdlVGFnIH0gfSksXG4gICAgICAgIGNhY2hlOiB7XG4gICAgICAgICAgYmFja2VuZFNlcnZpY2U6IG9wdGlvbnMucGxvbmUuYmFja2VuZFNlcnZpY2VOYW1lLFxuICAgICAgICAgIGZyb250ZW5kV2F0Y2g6IGZhbHNlLFxuICAgICAgICAgIGJhY2tlbmRXYXRjaDogdHJ1ZSxcbiAgICAgICAgICBleGlzdGluZ1NlY3JldDogb3B0aW9ucy5leGlzdGluZ1NlY3JldCA/PyB1bmRlZmluZWQsXG4gICAgICAgIH0sXG4gICAgICAgIC8vIFdvcmthcm91bmQ6IHVwc3RyZWFtIGNoYXJ0IGFjY2VwdHMgYmFja2VuZFBvcnROYW1lIGJ1dCBuZXZlclxuICAgICAgICAvLyByZW5kZXJzIGl0IGFzIENMSSBhcmcuIFBhc3MgdmlhIGNhY2hlRXh0cmFBcmdzIGluc3RlYWQuXG4gICAgICAgIGNhY2hlRXh0cmFBcmdzOiAnLSAtYmFja2VuZC1wb3J0bmFtZT1iYWNrZW5kLWh0dHAnLFxuICAgICAgICB2Y2xUZW1wbGF0ZTogdmFybmlzaFZjbCxcbiAgICAgICAgZXh0cmFFbnZWYXJzOiBbXG4gICAgICAgICAgeyBuYW1lOiAnQkFDS0VORF9TRVJWSUNFX05BTUUnLCB2YWx1ZTogb3B0aW9ucy5wbG9uZS5iYWNrZW5kU2VydmljZU5hbWUgfSxcbiAgICAgICAgICB7IG5hbWU6ICdCQUNLRU5EX1NFUlZJQ0VfUE9SVCcsIHZhbHVlOiAnODA4MCcgfSxcbiAgICAgICAgICB7IG5hbWU6ICdCQUNLRU5EX1NJVEVfSUQnLCB2YWx1ZTogb3B0aW9ucy5wbG9uZS5zaXRlSWQgfSxcbiAgICAgICAgICB7IG5hbWU6ICdGUk9OVEVORF9TRVJWSUNFX05BTUUnLCB2YWx1ZTogb3B0aW9ucy5wbG9uZS5mcm9udGVuZFNlcnZpY2VOYW1lIH0sXG4gICAgICAgICAgeyBuYW1lOiAnRlJPTlRFTkRfU0VSVklDRV9QT1JUJywgdmFsdWU6ICczMDAwJyB9LFxuICAgICAgICAgIC4uLihvcHRpb25zLmV4dHJhRW52VmFycyA/PyBbXSksXG4gICAgICAgIF0sXG4gICAgICAgIC8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vbWl0dHdhbGQva3ViZS1odHRwY2FjaGUvaXNzdWVzLzI1M1xuICAgICAgICBub2RlU2VsZWN0b3I6IHtcbiAgICAgICAgICAna3ViZXJuZXRlcy5pby9hcmNoJzogJ2FtZDY0JyxcbiAgICAgICAgfSxcbiAgICAgICAgLi4uKG9wdGlvbnMudG9sZXJhdGlvbnMgJiYgeyB0b2xlcmF0aW9uczogb3B0aW9ucy50b2xlcmF0aW9ucyB9KSxcbiAgICAgICAgcmVzb3VyY2VzOiB7XG4gICAgICAgICAgbGltaXRzOiB7XG4gICAgICAgICAgICBjcHU6IG9wdGlvbnMubGltaXRDcHUgfHwgJzUwMG0nLFxuICAgICAgICAgICAgbWVtb3J5OiBvcHRpb25zLmxpbWl0TWVtb3J5IHx8ICc1MDBNaScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1ZXN0czoge1xuICAgICAgICAgICAgY3B1OiBvcHRpb25zLnJlcXVlc3RDcHUgfHwgJzEwMG0nLFxuICAgICAgICAgICAgbWVtb3J5OiBvcHRpb25zLnJlcXVlc3RNZW1vcnkgfHwgJzEwME1pJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICByYmFjOiB7XG4gICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZXhwb3J0ZXI6IHtcbiAgICAgICAgICBlbmFibGVkOiBvcHRpb25zLmV4cG9ydGVyRW5hYmxlZCA/PyB0cnVlLFxuICAgICAgICAgIHJlc291cmNlczoge1xuICAgICAgICAgICAgbGltaXRzOiB7XG4gICAgICAgICAgICAgIGNwdTogJzEwMG0nLFxuICAgICAgICAgICAgICBtZW1vcnk6ICcxMDBNaScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVxdWVzdHM6IHtcbiAgICAgICAgICAgICAgY3B1OiAnMTBtJyxcbiAgICAgICAgICAgICAgbWVtb3J5OiAnNTBNaScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHNlcnZpY2VNb25pdG9yOiB7XG4gICAgICAgICAgZW5hYmxlZDogb3B0aW9ucy5zZXJ2aWNlbW9uaXRvciB8fCBmYWxzZSxcbiAgICAgICAgICBzY3JhcGVTaWduYWxsZXI6IG9wdGlvbnMuc2VydmljZW1vbml0b3IgfHwgZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICAgIGNvbnN0IGh0dHBjYWNoZVNlcnZpY2UgPSBodHRwY2FjaGUuYXBpT2JqZWN0cy5maW5kKChjb25zdHJ1Y3QpID0+IHtcbiAgICAgIGlmICgoY29uc3RydWN0LmtpbmQgPT09ICdTZXJ2aWNlJykgJiYgKGNvbnN0cnVjdC5tZXRhZGF0YS5uYW1lPy5lbmRzV2l0aCgna3ViZS1odHRwY2FjaGUnKSkpIHtcbiAgICAgICAgcmV0dXJuIGNvbnN0cnVjdC5uYW1lO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgICBpZiAoaHR0cGNhY2hlU2VydmljZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIGh0dHBjYWNoZSBzZXJ2aWNlJyk7XG4gICAgfVxuICAgIHRoaXMuaHR0cGNhY2hlU2VydmljZU5hbWUgPSBodHRwY2FjaGVTZXJ2aWNlLm5hbWU7XG4gIH1cbn0iXX0=
|
package/lib/plone.js
CHANGED
|
@@ -262,5 +262,5 @@ class Plone extends constructs_1.Construct {
|
|
|
262
262
|
}
|
|
263
263
|
exports.Plone = Plone;
|
|
264
264
|
_a = JSII_RTTI_SYMBOL_1;
|
|
265
|
-
Plone[_a] = { fqn: "@bluedynamics/cdk8s-plone.Plone", version: "0.1.
|
|
265
|
+
Plone[_a] = { fqn: "@bluedynamics/cdk8s-plone.Plone", version: "0.1.31" };
|
|
266
266
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxvbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcGxvbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxpQ0FBOEI7QUFDOUIsdUNBQXVDO0FBQ3ZDLDJDQUF1QztBQUN2Qyw2Q0FBdUU7QUFDdkUsdUNBQTRDO0FBRTVDLDJFQUF3RztBQUN4Ryx1Q0FBeUM7QUF3UnpDOztHQUVHO0FBQ0gsSUFBWSxZQVlYO0FBWkQsV0FBWSxZQUFZO0lBQ3RCOzs7T0FHRztJQUNILCtCQUFlLENBQUE7SUFFZjs7O09BR0c7SUFDSCx1Q0FBdUIsQ0FBQTtBQUN6QixDQUFDLEVBWlcsWUFBWSw0QkFBWixZQUFZLFFBWXZCO0FBZ0REOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUNILE1BQWEsS0FBTSxTQUFRLHNCQUFTO0lBdUJsQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLFVBQXdCLEVBQUU7UUFDbEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsU0FBUyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUM7UUFDeEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFFckQsMkVBQTJFO1FBQzNFLFVBQVU7UUFDVixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUN0QyxNQUFNLGFBQWEsR0FBRztZQUNwQix3QkFBd0IsRUFBRSxlQUFlO1lBQ3pDLDZCQUE2QixFQUFFLFNBQVM7WUFDeEMsMkJBQTJCLEVBQUUsT0FBTyxDQUFDLE9BQU8sSUFBSSxXQUFXO1NBQzVELENBQUM7UUFDRixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFFekIsVUFBVTtRQUNWLElBQUksY0FBYyxHQUEyQjtZQUMz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b0JBQ1IsV0FBVyxFQUFFO3dCQUNYLHdCQUF3QixFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUM7cUJBQ25FO2lCQUNGO2dCQUNELFNBQVMsRUFBRTtvQkFDVDt3QkFDRSxHQUFHLENBQUMsUUFBUSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDO3dCQUNuQyxHQUFHLENBQUMsVUFBVSxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxDQUFDO3dCQUM3QyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7d0JBQ2pCLFFBQVEsRUFBRSxLQUFLO3FCQUNoQjtpQkFDRjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUF6UEgsc0JBMFBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmFtZXMgfSBmcm9tICdjZGs4cyc7XG5pbXBvcnQgKiBhcyBrcGx1cyBmcm9tICdjZGs4cy1wbHVzLTMwJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgUGxvbmVEZXBsb3ltZW50LCBQbG9uZURlcGxveW1lbnRPcHRpb25zIH0gZnJvbSAnLi9kZXBsb3ltZW50JztcbmltcG9ydCB7IEludE9yU3RyaW5nIH0gZnJvbSAnLi9pbXBvcnRzL2s4cyc7XG5pbXBvcnQgKiBhcyBrOHMgZnJvbSAnLi9pbXBvcnRzL2s4cyc7XG5pbXBvcnQgeyBTZXJ2aWNlTW9uaXRvciwgU2VydmljZU1vbml0b3JTcGVjRW5kcG9pbnRzVGFyZ2V0UG9ydCB9IGZyb20gJy4vaW1wb3J0cy9tb25pdG9yaW5nLmNvcmVvcy5jb20nO1xuaW1wb3J0IHsgUGxvbmVTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlJztcblxuLyoqXG4gKiBMaW51eCBjYXBhYmlsaXRpZXMgdG8gYWRkIG9yIGRyb3Agb24gYSBjb250YWluZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGxvbmVDYXBhYmlsaXRpZXMge1xuICAvKipcbiAgICogQ2FwYWJpbGl0aWVzIHRvIGFkZCAoZS5nLiAnU1lTX1BUUkFDRScsICdORVRfQURNSU4nKS5cbiAgICogQGRlZmF1bHQgLSBubyBjYXBhYmlsaXRpZXMgYWRkZWRcbiAgICovXG4gIHJlYWRvbmx5IGFkZD86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBDYXBhYmlsaXRpZXMgdG8gZHJvcCAoZS5nLiAnQUxMJywgJ05FVF9SQVcnKS5cbiAgICogQGRlZmF1bHQgLSBubyBjYXBhYmlsaXRpZXMgZHJvcHBlZFxuICAgKi9cbiAgcmVhZG9ubHkgZHJvcD86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFNlY3VyaXR5IGNvbnRleHQgZm9yIGEgUGxvbmUgY29udGFpbmVyLlxuICogQ29udHJvbHMgcHJpdmlsZWdlIGFuZCBhY2Nlc3Mgc2V0dGluZ3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGxvbmVTZWN1cml0eUNvbnRleHQge1xuICAvKipcbiAgICogTGludXggY2FwYWJpbGl0aWVzIHRvIGFkZCBvciBkcm9wLlxuICAgKiBAZXhhbXBsZSB7IGFkZDogWydTWVNfUFRSQUNFJ10gfVxuICAgKiBAZGVmYXVsdCAtIG5vIGNhcGFiaWxpdHkgY2hhbmdlc1xuICAgKi9cbiAgcmVhZG9ubHkgY2FwYWJpbGl0aWVzPzogUGxvbmVDYXBhYmlsaXRpZXM7XG5cbiAgLyoqXG4gICAqIFJ1biB0aGUgY29udGFpbmVyIGFzIGEgc3BlY2lmaWMgdXNlciBJRC5cbiAgICogQGRlZmF1bHQgLSBjb250YWluZXIgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgcnVuQXNVc2VyPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBSdW4gdGhlIGNvbnRhaW5lciBhcyBhIHNwZWNpZmljIGdyb3VwIElELlxuICAgKiBAZGVmYXVsdCAtIGNvbnRhaW5lciBkZWZhdWx0XG4gICAqL1xuICByZWFkb25seSBydW5Bc0dyb3VwPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBSZXF1aXJlIHRoZSBjb250YWluZXIgdG8gcnVuIGFzIG5vbi1yb290LlxuICAgKiBAZGVmYXVsdCAtIHVuZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkgcnVuQXNOb25Sb290PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTW91bnQgdGhlIHJvb3QgZmlsZXN5c3RlbSBhcyByZWFkLW9ubHkuXG4gICAqIEBkZWZhdWx0IC0gdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSByZWFkT25seVJvb3RGaWxlc3lzdGVtPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWxsb3cgcHJpdmlsZWdlIGVzY2FsYXRpb24gZm9yIHRoZSBjb250YWluZXIgcHJvY2Vzcy5cbiAgICogQGRlZmF1bHQgLSB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93UHJpdmlsZWdlRXNjYWxhdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJ1biB0aGUgY29udGFpbmVyIGluIHByaXZpbGVnZWQgbW9kZS5cbiAgICogQGRlZmF1bHQgLSB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IHByaXZpbGVnZWQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEJhc2Ugb3B0aW9ucyBmb3IgUGxvbmUgYmFja2VuZCBvciBmcm9udGVuZCBjb25maWd1cmF0aW9uLlxuICogVGhlc2Ugb3B0aW9ucyBjb250cm9sIGNvbnRhaW5lciBpbWFnZSwgcmVwbGljYSBjb3VudCwgcmVzb3VyY2UgbGltaXRzLFxuICogZW52aXJvbm1lbnQgdmFyaWFibGVzLCBhbmQgaGVhbHRoIHByb2Jlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbG9uZUJhc2VPcHRpb25zIHtcbiAgLyoqXG4gICAqIENvbnRhaW5lciBpbWFnZSB0byB1c2UgZm9yIHRoZSBkZXBsb3ltZW50LlxuICAgKiBAZXhhbXBsZSAncGxvbmUvcGxvbmUtYmFja2VuZDo2LjAuMTAnIG9yICdwbG9uZS9wbG9uZS1mcm9udGVuZDoxNi4wLjAnXG4gICAqIEBkZWZhdWx0IC0gJ3Bsb25lL3Bsb25lLWJhY2tlbmQ6bGF0ZXN0JyBmb3IgYmFja2VuZCwgJ3Bsb25lL3Bsb25lLWZyb250ZW5kOmxhdGVzdCcgZm9yIGZyb250ZW5kXG4gICAqL1xuICByZWFkb25seSBpbWFnZT86IHN0cmluZztcblxuICAvKipcbiAgICogSW1hZ2UgcHVsbCBwb2xpY3kgZm9yIHRoZSBjb250YWluZXIuXG4gICAqIEBkZWZhdWx0ICdJZk5vdFByZXNlbnQnXG4gICAqL1xuICByZWFkb25seSBpbWFnZVB1bGxQb2xpY3k/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiBwb2QgcmVwbGljYXMgdG8gcnVuLlxuICAgKiBAZGVmYXVsdCAyXG4gICAqL1xuICByZWFkb25seSByZXBsaWNhcz86IG51bWJlcjtcblxuICAvKipcbiAgICogTWF4aW11bSBudW1iZXIgb2YgcG9kcyB0aGF0IGNhbiBiZSB1bmF2YWlsYWJsZSBkdXJpbmcgdXBkYXRlcy5cbiAgICogQ2FuIGJlIGFuIGFic29sdXRlIG51bWJlciAoZS5nLiwgMSkgb3IgYSBwZXJjZW50YWdlIChlLmcuLCAnNTAlJykuXG4gICAqIFVzZWQgaW4gUG9kRGlzcnVwdGlvbkJ1ZGdldCBpZiBzcGVjaWZpZWQuXG4gICAqIEBkZWZhdWx0IC0gdW5kZWZpbmVkIChub3Qgc2V0KVxuICAgKi9cbiAgcmVhZG9ubHkgbWF4VW5hdmFpbGFibGU/OiBudW1iZXIgfCBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE1pbmltdW0gbnVtYmVyIG9mIHBvZHMgdGhhdCBtdXN0IGJlIGF2YWlsYWJsZSBkdXJpbmcgdXBkYXRlcy5cbiAgICogQ2FuIGJlIGFuIGFic29sdXRlIG51bWJlciAoZS5nLiwgMSkgb3IgYSBwZXJjZW50YWdlIChlLmcuLCAnNTAlJykuXG4gICAqIFVzZWQgaW4gUG9kRGlzcnVwdGlvbkJ1ZGdldCBpZiBzcGVjaWZpZWQuXG4gICAqIEBkZWZhdWx0IC0gdW5kZWZpbmVkIChub3Qgc2V0KVxuICAgKi9cbiAgcmVhZG9ubHkgbWluQXZhaWxhYmxlPzogbnVtYmVyIHwgc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDUFUgbGltaXQgZm9yIHRoZSBjb250YWluZXIuXG4gICAqIEBleGFtcGxlICc1MDBtJyBvciAnMScgb3IgJzIwMDBtJ1xuICAgKiBAZGVmYXVsdCAnNTAwbScgZm9yIGJvdGggYmFja2VuZCBhbmQgZnJvbnRlbmRcbiAgICovXG4gIHJlYWRvbmx5IGxpbWl0Q3B1Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNZW1vcnkgbGltaXQgZm9yIHRoZSBjb250YWluZXIuXG4gICAqIEBleGFtcGxlICc1MTJNaScgb3IgJzFHaSdcbiAgICogQGRlZmF1bHQgJzUxMk1pJyBmb3IgYmFja2VuZCwgJzFHaScgZm9yIGZyb250ZW5kXG4gICAqL1xuICByZWFkb25seSBsaW1pdE1lbW9yeT86IHN0cmluZztcblxuICAvKipcbiAgICogQ1BVIHJlcXVlc3QgZm9yIHRoZSBjb250YWluZXIuXG4gICAqIEBleGFtcGxlICcyMDBtJyBvciAnMC41J1xuICAgKiBAZGVmYXVsdCAnMjAwbSdcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVlc3RDcHU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE1lbW9yeSByZXF1ZXN0IGZvciB0aGUgY29udGFpbmVyLlxuICAgKiBAZXhhbXBsZSAnMjU2TWknIG9yICc1MTJNaSdcbiAgICogQGRlZmF1bHQgJzI1Nk1pJ1xuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWVzdE1lbW9yeT86IHN0cmluZztcblxuICAvKipcbiAgICogRW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHNldCBpbiB0aGUgY29udGFpbmVyLlxuICAgKiBVc2UgY2RrOHMtcGx1cy0zMCBFbnYgY2xhc3MgdG8gZGVmaW5lIHZhcmlhYmxlcyBhbmQgc291cmNlcy5cbiAgICogQGRlZmF1bHQgLSB1bmRlZmluZWQgKG5vIGFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzKVxuICAgKi9cbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ/OiBrcGx1cy5FbnY7XG5cbiAgLyoqXG4gICAqIEVuYWJsZSByZWFkaW5lc3MgcHJvYmUgZm9yIHRoZSBjb250YWluZXIuXG4gICAqIFJlYWRpbmVzcyBwcm9iZXMgZGV0ZXJtaW5lIHdoZW4gYSBjb250YWluZXIgaXMgcmVhZHkgdG8gYWNjZXB0IHRyYWZmaWMuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHJlYWRpbmVzc0VuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2Ygc2Vjb25kcyBhZnRlciBjb250YWluZXIgc3RhcnQgYmVmb3JlIHJlYWRpbmVzcyBwcm9iZSBpcyBpbml0aWF0ZWQuXG4gICAqIEBkZWZhdWx0IDEwXG4gICAqL1xuICByZWFkb25seSByZWFkaW5lc3NJbml0aWFsRGVsYXlTZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2Ygc2Vjb25kcyBhZnRlciB3aGljaCB0aGUgcmVhZGluZXNzIHByb2JlIHRpbWVzIG91dC5cbiAgICogQGRlZmF1bHQgMTVcbiAgICovXG4gIHJlYWRvbmx5IHJlYWRpbmVzc1RpbWVvdXRTZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBIb3cgb2Z0ZW4gKGluIHNlY29uZHMpIHRvIHBlcmZvcm0gdGhlIHJlYWRpbmVzcyBwcm9iZS5cbiAgICogQGRlZmF1bHQgMTBcbiAgICovXG4gIHJlYWRvbmx5IHJlYWRpbmVzc1BlcmlvZFNlY29uZHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1pbmltdW0gY29uc2VjdXRpdmUgc3VjY2Vzc2VzIGZvciB0aGUgcmVhZGluZXNzIHByb2JlIHRvIGJlIGNvbnNpZGVyZWQgc3VjY2Vzc2Z1bC5cbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgcmVhZG9ubHkgcmVhZGluZXNzU3VjY2Vzc1RocmVzaG9sZD86IG51bWJlcjtcblxuICAvKipcbiAgICogTWluaW11bSBjb25zZWN1dGl2ZSBmYWlsdXJlcyBmb3IgdGhlIHJlYWRpbmVzcyBwcm9iZSB0byBiZSBjb25zaWRlcmVkIGZhaWxlZC5cbiAgICogQGRlZmF1bHQgM1xuICAgKi9cbiAgcmVhZG9ubHkgcmVhZGluZXNzRmFpbHVyZVRocmVzaG9sZD86IG51bWJlcjtcblxuICAvKipcbiAgICogRW5hYmxlIGxpdmVuZXNzIHByb2JlIGZvciB0aGUgY29udGFpbmVyLlxuICAgKiBMaXZlbmVzcyBwcm9iZXMgZGV0ZXJtaW5lIHdoZW4gdG8gcmVzdGFydCBhIGNvbnRhaW5lci5cbiAgICogUmVjb21tZW5kZWQ6IHRydWUgZm9yIGZyb250ZW5kLCBmYWxzZSBmb3IgYmFja2VuZCAoWm9wZSBoYXMgaXRzIG93biByZWNvdmVyeSkuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBsaXZlbmVzc0VuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2Ygc2Vjb25kcyBhZnRlciBjb250YWluZXIgc3RhcnQgYmVmb3JlIGxpdmVuZXNzIHByb2JlIGlzIGluaXRpYXRlZC5cbiAgICogQGRlZmF1bHQgMzBcbiAgICovXG4gIHJlYWRvbmx5IGxpdmVuZXNzSW5pdGlhbERlbGF5U2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIHNlY29uZHMgYWZ0ZXIgd2hpY2ggdGhlIGxpdmVuZXNzIHByb2JlIHRpbWVzIG91dC5cbiAgICogQGRlZmF1bHQgNVxuICAgKi9cbiAgcmVhZG9ubHkgbGl2ZW5lc3NUaW1lb3V0U2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogSG93IG9mdGVuIChpbiBzZWNvbmRzKSB0byBwZXJmb3JtIHRoZSBsaXZlbmVzcyBwcm9iZS5cbiAgICogQGRlZmF1bHQgMTBcbiAgICovXG4gIHJlYWRvbmx5IGxpdmVuZXNzUGVyaW9kU2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogTWluaW11bSBjb25zZWN1dGl2ZSBzdWNjZXNzZXMgZm9yIHRoZSBsaXZlbmVzcyBwcm9iZSB0byBiZSBjb25zaWRlcmVkIHN1Y2Nlc3NmdWwuXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIHJlYWRvbmx5IGxpdmVuZXNzU3VjY2Vzc1RocmVzaG9sZD86IG51bWJlcjtcblxuICAvKipcbiAgICogTWluaW11bSBjb25zZWN1dGl2ZSBmYWlsdXJlcyBmb3IgdGhlIGxpdmVuZXNzIHByb2JlIHRvIGJlIGNvbnNpZGVyZWQgZmFpbGVkLlxuICAgKiBAZGVmYXVsdCAzXG4gICAqL1xuICByZWFkb25seSBsaXZlbmVzc0ZhaWx1cmVUaHJlc2hvbGQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEFubm90YXRpb25zIHRvIGFkZCB0byB0aGUgRGVwbG95bWVudCBtZXRhZGF0YS5cbiAgICogQGV4YW1wbGUgeyAnZGVwbG95bWVudC5rdWJlcm5ldGVzLmlvL3JldmlzaW9uJzogJzEnIH1cbiAgICogQGRlZmF1bHQgLSBubyBhZGRpdGlvbmFsIGFubm90YXRpb25zXG4gICAqL1xuICByZWFkb25seSBhbm5vdGF0aW9ucz86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBBbm5vdGF0aW9ucyB0byBhZGQgdG8gdGhlIFBvZCB0ZW1wbGF0ZSBtZXRhZGF0YS5cbiAgICogQ29tbW9uIGZvciBQcm9tZXRoZXVzLCBJc3RpbywgYmFja3VwIHBvbGljaWVzLCBldGMuXG4gICAqIEBleGFtcGxlIHsgJ3Byb21ldGhldXMuaW8vc2NyYXBlJzogJ3RydWUnLCAncHJvbWV0aGV1cy5pby9wb3J0JzogJzgwODAnIH1cbiAgICogQGRlZmF1bHQgLSBubyBhZGRpdGlvbmFsIGFubm90YXRpb25zXG4gICAqL1xuICByZWFkb25seSBwb2RBbm5vdGF0aW9ucz86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBBbm5vdGF0aW9ucyB0byBhZGQgdG8gdGhlIFNlcnZpY2UgbWV0YWRhdGEuXG4gICAqIENvbW1vbiBmb3IgZXh0ZXJuYWwtZG5zLCBsb2FkIGJhbGFuY2Vycywgc2VydmljZSBtZXNoLCBldGMuXG4gICAqIEBleGFtcGxlIHsgJ2V4dGVybmFsLWRucy5hbHBoYS5rdWJlcm5ldGVzLmlvL2hvc3RuYW1lJzogJ3Bsb25lLmV4YW1wbGUuY29tJyB9XG4gICAqIEBkZWZhdWx0IC0gbm8gYWRkaXRpb25hbCBhbm5vdGF0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZUFubm90YXRpb25zPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBQcm9tZXRoZXVzIFNlcnZpY2VNb25pdG9yIGZvciBtZXRyaWNzIGNvbGxlY3Rpb24uXG4gICAqIFJlcXVpcmVzIFByb21ldGhldXMgT3BlcmF0b3IgdG8gYmUgaW5zdGFsbGVkIGluIHRoZSBjbHVzdGVyLlxuICAgKiBXaGVuIGVuYWJsZWQsIGEgU2VydmljZU1vbml0b3IgcmVzb3VyY2Ugd2lsbCBiZSBjcmVhdGVkIHRvIHNjcmFwZSBtZXRyaWNzLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZW1vbml0b3I/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBQb3J0IG5hbWUgb3IgbnVtYmVyIHRvIHNjcmFwZSBtZXRyaWNzIGZyb20uXG4gICAqIE9ubHkgdXNlZCB3aGVuIHNlcnZpY2Vtb25pdG9yIGlzIGVuYWJsZWQuXG4gICAqIEBkZWZhdWx0IC0gdXNlcyB0aGUgbWFpbiBzZXJ2aWNlIHBvcnRcbiAgICovXG4gIHJlYWRvbmx5IG1ldHJpY3NQb3J0Pzogc3RyaW5nIHwgbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBQYXRoIHRvIHNjcmFwZSBtZXRyaWNzIGZyb20uXG4gICAqIE9ubHkgdXNlZCB3aGVuIHNlcnZpY2Vtb25pdG9yIGlzIGVuYWJsZWQuXG4gICAqIEBkZWZhdWx0ICcvbWV0cmljcydcbiAgICovXG4gIHJlYWRvbmx5IG1ldHJpY3NQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOb2RlIHNlbGVjdG9yIGxhYmVscyBmb3IgcG9kIHNjaGVkdWxpbmcuXG4gICAqIFVzZSB0byBjb25zdHJhaW4gcG9kcyB0byBub2RlcyB3aXRoIG1hdGNoaW5nIGxhYmVscywgZS5nLiBmb3IgcmVnaW9uIGFmZmluaXR5LlxuICAgKiBAZXhhbXBsZSB7ICd0b3BvbG9neS5rdWJlcm5ldGVzLmlvL3JlZ2lvbic6ICdmc24xJyB9XG4gICAqIEBkZWZhdWx0IC0gbm8gbm9kZSBzZWxlY3RvclxuICAgKi9cbiAgcmVhZG9ubHkgbm9kZVNlbGVjdG9yPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogU2VjdXJpdHkgY29udGV4dCBmb3IgdGhlIGNvbnRhaW5lci5cbiAgICogVXNlIHRvIHNldCBjYXBhYmlsaXRpZXMsIHJ1biBhcyBub24tcm9vdCwgcmVhZC1vbmx5IGZpbGVzeXN0ZW0sIGV0Yy5cbiAgICogQGV4YW1wbGUgeyBjYXBhYmlsaXRpZXM6IHsgYWRkOiBbJ1NZU19QVFJBQ0UnXSB9IH1cbiAgICogQGRlZmF1bHQgLSBubyBzZWN1cml0eSBjb250ZXh0XG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUNvbnRleHQ/OiBQbG9uZVNlY3VyaXR5Q29udGV4dDtcbn1cbi8qKlxuICogUGxvbmUgZGVwbG95bWVudCB2YXJpYW50cy5cbiAqL1xuZXhwb3J0IGVudW0gUGxvbmVWYXJpYW50IHtcbiAgLyoqXG4gICAqIFZvbHRvIHZhcmlhbnQ6IFJlYWN0SlMgZnJvbnRlbmQgKFZvbHRvKSB3aXRoIFJFU1QgQVBJIGJhY2tlbmQuXG4gICAqIERlcGxveXMgYm90aCBmcm9udGVuZCBhbmQgYmFja2VuZCBzZXJ2aWNlcy5cbiAgICovXG4gIFZPTFRPID0gJ3ZvbHRvJyxcblxuICAvKipcbiAgICogQ2xhc3NpYyBVSSB2YXJpYW50OiBUcmFkaXRpb25hbCBQbG9uZSB3aXRoIHNlcnZlci1zaWRlIHJlbmRlcmluZy5cbiAgICogRGVwbG95cyBvbmx5IHRoZSBiYWNrZW5kIHNlcnZpY2UuXG4gICAqL1xuICBDTEFTU0lDVUkgPSAnY2xhc3NpY3VpJyxcbn1cblxuLyoqXG4gKiBNYWluIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgUGxvbmUgZGVwbG95bWVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbG9uZU9wdGlvbnMge1xuICAvKipcbiAgICogVmVyc2lvbiBzdHJpbmcgZm9yIGxhYmVsaW5nIHRoZSBkZXBsb3ltZW50LlxuICAgKiBUaGlzIGlzIHVzZWQgaW4gS3ViZXJuZXRlcyBsYWJlbHMgYW5kIGRvZXNuJ3QgYWZmZWN0IHRoZSBhY3R1YWwgaW1hZ2UgdmVyc2lvbnMuXG4gICAqIEBkZWZhdWx0ICd1bmRlZmluZWQnXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQbG9uZSBzaXRlIElEIGluIHRoZSBaT0RCLlxuICAgKiBUaGlzIGlzIHVzZWQgdG8gY29uc3RydWN0IHRoZSBpbnRlcm5hbCBBUEkgcGF0aCBmb3IgVm9sdG8gZnJvbnRlbmQuXG4gICAqIEBkZWZhdWx0ICdQbG9uZSdcbiAgICovXG4gIHJlYWRvbmx5IHNpdGVJZD86IHN0cmluZztcblxuICAvKipcbiAgICogUGxvbmUgZGVwbG95bWVudCB2YXJpYW50IHRvIHVzZS5cbiAgICogQGRlZmF1bHQgUGxvbmVWYXJpYW50LlZPTFRPXG4gICAqL1xuICByZWFkb25seSB2YXJpYW50PzogUGxvbmVWYXJpYW50O1xuXG4gIC8qKlxuICAgKiBCYWNrZW5kIChQbG9uZSBBUEkpIGNvbmZpZ3VyYXRpb24uXG4gICAqIEBkZWZhdWx0IHt9ICh1c2VzIGRlZmF1bHQgdmFsdWVzIGZyb20gUGxvbmVCYXNlT3B0aW9ucylcbiAgICovXG4gIHJlYWRvbmx5IGJhY2tlbmQ/OiBQbG9uZUJhc2VPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBGcm9udGVuZCAoVm9sdG8pIGNvbmZpZ3VyYXRpb24uXG4gICAqIE9ubHkgdXNlZCB3aGVuIHZhcmlhbnQgaXMgUGxvbmVWYXJpYW50LlZPTFRPLlxuICAgKiBAZGVmYXVsdCB7fSAodXNlcyBkZWZhdWx0IHZhbHVlcyBmcm9tIFBsb25lQmFzZU9wdGlvbnMpXG4gICAqL1xuICByZWFkb25seSBmcm9udGVuZD86IFBsb25lQmFzZU9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIE5hbWVzIG9mIEt1YmVybmV0ZXMgc2VjcmV0cyB0byB1c2UgZm9yIHB1bGxpbmcgcHJpdmF0ZSBjb250YWluZXIgaW1hZ2VzLlxuICAgKiBUaGVzZSBzZWNyZXRzIG11c3QgZXhpc3QgaW4gdGhlIHNhbWUgbmFtZXNwYWNlIGFzIHRoZSBkZXBsb3ltZW50LlxuICAgKiBAZXhhbXBsZSBbJ215LXJlZ2lzdHJ5LXNlY3JldCddXG4gICAqIEBkZWZhdWx0IFtdIChubyBpbWFnZSBwdWxsIHNlY3JldHMpXG4gICAqL1xuICByZWFkb25seSBpbWFnZVB1bGxTZWNyZXRzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogUGxvbmUgY29uc3RydWN0IGZvciBkZXBsb3lpbmcgUGxvbmUgQ01TIHRvIEt1YmVybmV0ZXMuXG4gKlxuICogVGhpcyBjb25zdHJ1Y3QgY3JlYXRlcyBhbGwgbmVjZXNzYXJ5IEt1YmVybmV0ZXMgcmVzb3VyY2VzIGZvciBydW5uaW5nIFBsb25lOlxuICogLSBEZXBsb3ltZW50KHMpIGZvciBiYWNrZW5kIChhbmQgb3B0aW9uYWxseSBmcm9udGVuZClcbiAqIC0gU2VydmljZShzKSBmb3IgbmV0d29yayBhY2Nlc3NcbiAqIC0gT3B0aW9uYWwgUG9kRGlzcnVwdGlvbkJ1ZGdldCBmb3IgaGlnaCBhdmFpbGFiaWxpdHlcbiAqXG4gKiBTdXBwb3J0cyB0d28gZGVwbG95bWVudCB2YXJpYW50czpcbiAqIC0gVk9MVE86IE1vZGVybiBSZWFjdCBmcm9udGVuZCB3aXRoIFJFU1QgQVBJIGJhY2tlbmQgKGRlZmF1bHQpXG4gKiAtIENMQVNTSUNVSTogVHJhZGl0aW9uYWwgc2VydmVyLXNpZGUgcmVuZGVyZWQgUGxvbmVcbiAqXG4gKiBAZXhhbXBsZVxuICogbmV3IFBsb25lKGNoYXJ0LCAnbXktcGxvbmUnLCB7XG4gKiAgIHZhcmlhbnQ6IFBsb25lVmFyaWFudC5WT0xUTyxcbiAqICAgYmFja2VuZDoge1xuICogICAgIGltYWdlOiAncGxvbmUvcGxvbmUtYmFja2VuZDo2LjAuMTAnLFxuICogICAgIHJlcGxpY2FzOiAzLFxuICogICB9LFxuICogICBmcm9udGVuZDoge1xuICogICAgIGltYWdlOiAncGxvbmUvcGxvbmUtZnJvbnRlbmQ6MTYuMC4wJyxcbiAqICAgfSxcbiAqIH0pO1xuICovXG5leHBvcnQgY2xhc3MgUGxvbmUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgYmFja2VuZCBLdWJlcm5ldGVzIHNlcnZpY2UuXG4gICAqIFVzZSB0aGlzIHRvIHJlZmVyZW5jZSB0aGUgYmFja2VuZCBzZXJ2aWNlIGZyb20gb3RoZXIgY29uc3RydWN0cy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBiYWNrZW5kU2VydmljZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgZnJvbnRlbmQgS3ViZXJuZXRlcyBzZXJ2aWNlLlxuICAgKiBPbmx5IHNldCB3aGVuIHZhcmlhbnQgaXMgVk9MVE8sIG90aGVyd2lzZSB1bmRlZmluZWQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZnJvbnRlbmRTZXJ2aWNlTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVwbG95bWVudCB2YXJpYW50IGJlaW5nIHVzZWQgKFZPTFRPIG9yIENMQVNTSUNVSSkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFyaWFudDogUGxvbmVWYXJpYW50O1xuXG4gIC8qKlxuICAgKiBUaGUgUGxvbmUgc2l0ZSBJRCBpbiBaT0RCLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNpdGVJZDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IFBsb25lT3B0aW9ucyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICB0aGlzLmZyb250ZW5kU2VydmljZU5hbWUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5zaXRlSWQgPSBvcHRpb25zLnNpdGVJZCA/PyAnUGxvbmUnO1xuICAgIHRoaXMudmFyaWFudCA9IG9wdGlvbnMudmFyaWFudCA/PyBQbG9uZVZhcmlhbnQuVk9MVE87XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBCYWNrZW5kXG4gICAgY29uc3QgYmFja2VuZCA9IG9wdGlvbnMuYmFja2VuZCA/PyB7fTtcbiAgICBjb25zdCBiYWNrZW5kTGFiZWxzID0ge1xuICAgICAgJ2FwcC5rdWJlcm5ldGVzLmlvL25hbWUnOiAncGxvbmUtYmFja2VuZCcsXG4gICAgICAnYXBwLmt1YmVybmV0ZXMuaW8vY29tcG9uZW50JzogJ2JhY2tlbmQnLFxuICAgICAgJ2FwcC5rdWJlcm5ldGVzLmlvL3ZlcnNpb24nOiBvcHRpb25zLnZlcnNpb24gPz8gJ3VuZGVmaW5lZCcsXG4gICAgfTtcbiAgICBjb25zdCBiYWNrZW5kUG9ydCA9IDgwODA7XG5cbiAgICAvLyBPcHRpb25zXG4gICAgdmFyIGJhY2tlbmRPcHRpb25zOiBQbG9uZURlcGxveW1lbnRPcHRpb25zID0ge1xuICAgICAgbGFiZWxzOiBiYWNrZW5kTGFiZWxzLFxuICAgICAgaW1hZ2U6IHtcbiAgICAgICAgaW1hZ2U6IGJhY2tlbmQuaW1hZ2UgPz8gJ3Bsb25lL3Bsb25lLWJhY2tlbmQ6bGF0ZXN0JyxcbiAgICAgICAgaW1hZ2VQdWxsU2VjcmV0czogb3B0aW9ucy5pbWFnZVB1bGxTZWNyZXRzID8/IFtdLFxuICAgICAgICBpbWFnZVB1bGxQb2xpY3k6IGJhY2tlbmQuaW1hZ2VQdWxsUG9saWN5ID8/ICdJZk5vdFByZXNlbnQnLFxuICAgICAgfSxcbiAgICAgIHJlcGxpY2FzOiBiYWNrZW5kLnJlcGxpY2FzLFxuICAgICAgbGltaXRDcHU6IGJhY2tlbmQubGltaXRDcHUgPz8gJzUwMG0nLFxuICAgICAgbGltaXRNZW1vcnk6IGJhY2tlbmQubGltaXRNZW1vcnkgPz8gJzUxMk1pJyxcbiAgICAgIHJlcXVlc3RDcHU6IGJhY2tlbmQucmVxdWVzdENwdSA/PyAnMjAwbScsXG4gICAgICByZXF1ZXN0TWVtb3J5OiBiYWNrZW5kLnJlcXVlc3RNZW1vcnkgPz8gJzI1Nk1pJyxcbiAgICAgIHBkYjoge1xuICAgICAgICBtYXhVbmF2YWlsYWJsZTogYmFja2VuZC5tYXhVbmF2YWlsYWJsZSA/PyB1bmRlZmluZWQsXG4gICAgICAgIG1pbkF2YWlsYWJsZTogYmFja2VuZC5taW5BdmFpbGFibGUgPz8gdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICAgIHBvcnQ6IGJhY2tlbmRQb3J0LFxuICAgICAgZW52aXJvbm1lbnQ6IGJhY2tlbmQuZW52aXJvbm1lbnQsXG4gICAgICBhbm5vdGF0aW9uczogYmFja2VuZC5hbm5vdGF0aW9ucyxcbiAgICAgIHBvZEFubm90YXRpb25zOiBiYWNrZW5kLnBvZEFubm90YXRpb25zLFxuICAgICAgbm9kZVNlbGVjdG9yOiBiYWNrZW5kLm5vZGVTZWxlY3RvcixcbiAgICAgIHNlY3VyaXR5Q29udGV4dDogYmFja2VuZC5zZWN1cml0eUNvbnRleHQgYXMgazhzLlNlY3VyaXR5Q29udGV4dCxcbiAgICB9O1xuXG4gICAgLy8gUHJvYmluZ1xuICAgIGNvbnN0IGJhY2tlbmRBY3Rpb25IdHRwR2V0OiBrOHMuSHR0cEdldEFjdGlvbiA9IHtcbiAgICAgIHBhdGg6ICcvJyxcbiAgICAgIHBvcnQ6IEludE9yU3RyaW5nLmZyb21OdW1iZXIoYmFja2VuZFBvcnQpLFxuICAgIH07XG4gICAgaWYgKGJhY2tlbmQubGl2ZW5lc3NFbmFibGVkID8/IGZhbHNlKSB7XG4gICAgICBiYWNrZW5kT3B0aW9ucy5saXZlbmVzc1Byb2JlID0ge1xuICAgICAgICBodHRwR2V0OiBiYWNrZW5kQWN0aW9uSHR0cEdldCxcbiAgICAgICAgaW5pdGlhbERlbGF5U2Vjb25kczogYmFja2VuZC5saXZlbmVzc0luaXRpYWxEZWxheVNlY29uZHMgPz8gMzAsXG4gICAgICAgIHRpbWVvdXRTZWNvbmRzOiBiYWNrZW5kLmxpdmVuZXNzVGltZW91dFNlY29uZHMgPz8gNSxcbiAgICAgICAgcGVyaW9kU2Vjb25kczogYmFja2VuZC5saXZlbmVzc1BlcmlvZFNlY29uZHMgPz8gMTAsXG4gICAgICAgIHN1Y2Nlc3NUaHJlc2hvbGQ6IGJhY2tlbmQubGl2ZW5lc3NTdWNjZXNzVGhyZXNob2xkID8/IDEsXG4gICAgICAgIGZhaWx1cmVUaHJlc2hvbGQ6IGJhY2tlbmQubGl2ZW5lc3NGYWlsdXJlVGhyZXNob2xkID8/IDMsXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAoYmFja2VuZC5yZWFkaW5lc3NFbmFibGVkID8/IHRydWUpIHtcbiAgICAgIGJhY2tlbmRPcHRpb25zLnJlYWRpbmVzc1Byb2JlID0ge1xuICAgICAgICBodHRwR2V0OiBiYWNrZW5kQWN0aW9uSHR0cEdldCxcbiAgICAgICAgaW5pdGlhbERlbGF5U2Vjb25kczogYmFja2VuZC5yZWFkaW5lc3NJbml0aWFsRGVsYXlTZWNvbmRzID8/IDEwLFxuICAgICAgICB0aW1lb3V0U2Vjb25kczogYmFja2VuZC5yZWFkaW5lc3NUaW1lb3V0U2Vjb25kcyA/PyAxNSxcbiAgICAgICAgcGVyaW9kU2Vjb25kczogYmFja2VuZC5yZWFkaW5lc3NQZXJpb2RTZWNvbmRzID8/IDEwLFxuICAgICAgICBzdWNjZXNzVGhyZXNob2xkOiBiYWNrZW5kLnJlYWRpbmVzc1N1Y2Nlc3NUaHJlc2hvbGQgPz8gMSxcbiAgICAgICAgZmFpbHVyZVRocmVzaG9sZDogYmFja2VuZC5yZWFkaW5lc3NGYWlsdXJlVGhyZXNob2xkID8/IDMsXG4gICAgICB9O1xuICAgIH1cbiAgICAvLyBEZXBsb3ltZW50XG4gICAgdmFyIGJhY2tlbmREZXBsb3ltZW50ID0gbmV3IFBsb25lRGVwbG95bWVudCh0aGlzLCAnYmFja2VuZCcsIGJhY2tlbmRPcHRpb25zKTtcblxuICAgIC8vIFNlcnZpY2VcbiAgICBjb25zdCBiYWNrZW5kU2VydmljZSA9IG5ldyBQbG9uZVNlcnZpY2UoYmFja2VuZERlcGxveW1lbnQsICdzZXJ2aWNlJywge1xuICAgICAgbGFiZWxzOiB7XG4gICAgICAgICdhcHAua3ViZXJuZXRlcy5pby9uYW1lJzogJ3Bsb25lLWJhY2tlbmQtc2VydmljZScsXG4gICAgICAgICdhcHAua3ViZXJuZXRlcy5pby9jb21wb25lbnQnOiAnc2VydmljZScsXG4gICAgICB9LFxuICAgICAgdGFyZ2V0UG9ydDogYmFja2VuZFBvcnQsXG4gICAgICBzZWxlY3RvckxhYmVsOiB7IGFwcDogTmFtZXMudG9MYWJlbFZhbHVlKGJhY2tlbmREZXBsb3ltZW50KSB9LFxuICAgICAgcG9ydE5hbWU6ICdiYWNrZW5kLWh0dHAnLFxuICAgICAgYW5ub3RhdGlvbnM6IGJhY2tlbmQuc2VydmljZUFubm90YXRpb25zLFxuICAgIH0pO1xuICAgIHRoaXMuYmFja2VuZFNlcnZpY2VOYW1lID0gYmFja2VuZFNlcnZpY2UubmFtZTtcblxuICAgIC8vIFNlcnZpY2VNb25pdG9yIGZvciBiYWNrZW5kXG4gICAgaWYgKGJhY2tlbmQuc2VydmljZW1vbml0b3IpIHtcbiAgICAgIHRoaXMuY3JlYXRlU2VydmljZU1vbml0b3IoYmFja2VuZFNlcnZpY2UsICdiYWNrZW5kJywge1xuICAgICAgICBwb3J0OiBiYWNrZW5kLm1ldHJpY3NQb3J0ID8/ICdiYWNrZW5kLWh0dHAnLFxuICAgICAgICBwYXRoOiBiYWNrZW5kLm1ldHJpY3NQYXRoID8/ICcvbWV0cmljcycsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBGcm9udGVuZFxuICAgIGlmICh0aGlzLnZhcmlhbnQgPT0gUGxvbmVWYXJpYW50LlZPTFRPKSB7XG4gICAgICBjb25zdCBmcm9udGVuZCA9IG9wdGlvbnMuZnJvbnRlbmQgPz8ge307XG4gICAgICBjb25zdCBmcm9udGVuZFBvcnQgPSAzMDAwO1xuICAgICAgY29uc3QgZnJvbnRlbmRMYWJlbHMgPSB7XG4gICAgICAgICdhcHAua3ViZXJuZXRlcy5pby9uYW1lJzogJ3Bsb25lLWZyb250ZW5kJyxcbiAgICAgICAgJ2FwcC5rdWJlcm5ldGVzLmlvL2NvbXBvbmVudCc6ICdmcm9udGVuZCcsXG4gICAgICAgICdhcHAua3ViZXJuZXRlcy5pby92ZXJzaW9uJzogb3B0aW9ucy52ZXJzaW9uID8/ICd1bmRlZmluZWQnLFxuICAgICAgfTtcblxuICAgICAgLy8gRW52aXJvbm1lbnQgZm9yIFJBWlpMRVxuICAgICAgdmFyIGZyb250ZW5kRW52aXJvbm1lbnQgPSBmcm9udGVuZC5lbnZpcm9ubWVudCA/PyBuZXcga3BsdXMuRW52KFtdLCB7fSk7XG4gICAgICBpZiAoZnJvbnRlbmRFbnZpcm9ubWVudC52YXJpYWJsZXMuUkFaWkxFX0lOVEVSTkFMX0FQSV9QQVRIID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gY29ubmVjdCB3aXRoIGJhY2tlbmQgc2VydmljZVxuICAgICAgICBmcm9udGVuZEVudmlyb25tZW50Py5hZGRWYXJpYWJsZSgnUkFaWkxFX0lOVEVSTkFMX0FQSV9QQVRIJywga3BsdXMuRW52VmFsdWUuZnJvbVZhbHVlKGBodHRwOi8vJHtiYWNrZW5kU2VydmljZS5uYW1lfToke2JhY2tlbmRQb3J0fS8ke3RoaXMuc2l0ZUlkfWApKTtcbiAgICAgIH1cblxuICAgICAgLy8gT3B0aW9uc1xuICAgICAgdmFyIGZyb250ZW5kT3B0aW9uczogUGxvbmVEZXBsb3ltZW50T3B0aW9ucyA9IHtcbiAgICAgICAgbGFiZWxzOiBmcm9udGVuZExhYmVscyxcbiAgICAgICAgaW1hZ2U6IHtcbiAgICAgICAgICBpbWFnZTogZnJvbnRlbmQuaW1hZ2UgPz8gJ3Bsb25lL3Bsb25lLWZyb250ZW5kOmxhdGVzdCcsXG4gICAgICAgICAgaW1hZ2VQdWxsU2VjcmV0czogb3B0aW9ucy5pbWFnZVB1bGxTZWNyZXRzID8/IFtdLFxuICAgICAgICAgIGltYWdlUHVsbFBvbGljeTogZnJvbnRlbmQuaW1hZ2VQdWxsUG9saWN5ID8/ICdJZk5vdFByZXNlbnQnLFxuICAgICAgICB9LFxuICAgICAgICByZXBsaWNhczogZnJvbnRlbmQucmVwbGljYXMsXG4gICAgICAgIGxpbWl0Q3B1OiBmcm9udGVuZC5saW1pdENwdSA/PyAnNTAwbScsXG4gICAgICAgIGxpbWl0TWVtb3J5OiBmcm9udGVuZC5saW1pdE1lbW9yeSA/PyAnMUdpJyxcbiAgICAgICAgcmVxdWVzdENwdTogZnJvbnRlbmQucmVxdWVzdENwdSA/PyAnMjAwbScsXG4gICAgICAgIHJlcXVlc3RNZW1vcnk6IGZyb250ZW5kLnJlcXVlc3RNZW1vcnkgPz8gJzI1Nk1pJyxcblxuICAgICAgICBwZGI6IHtcbiAgICAgICAgICBtYXhVbmF2YWlsYWJsZTogZnJvbnRlbmQubWF4VW5hdmFpbGFibGUgPz8gdW5kZWZpbmVkLFxuICAgICAgICAgIG1pbkF2YWlsYWJsZTogZnJvbnRlbmQubWluQXZhaWxhYmxlID8/IHVuZGVmaW5lZCxcbiAgICAgICAgfSxcbiAgICAgICAgcG9ydDogZnJvbnRlbmRQb3J0LFxuICAgICAgICBlbnZpcm9ubWVudDogZnJvbnRlbmRFbnZpcm9ubWVudCxcbiAgICAgICAgYW5ub3RhdGlvbnM6IGZyb250ZW5kLmFubm90YXRpb25zLFxuICAgICAgICBwb2RBbm5vdGF0aW9uczogZnJvbnRlbmQucG9kQW5ub3RhdGlvbnMsXG4gICAgICAgIG5vZGVTZWxlY3RvcjogZnJvbnRlbmQubm9kZVNlbGVjdG9yLFxuICAgICAgICBzZWN1cml0eUNvbnRleHQ6IGZyb250ZW5kLnNlY3VyaXR5Q29udGV4dCBhcyBrOHMuU2VjdXJpdHlDb250ZXh0LFxuICAgICAgfTtcblxuICAgICAgLy8gUHJvYmluZ1xuICAgICAgY29uc3QgZnJvbnRlbmRBY3Rpb25IdHRwR2V0OiBrOHMuSHR0cEdldEFjdGlvbiA9IHtcbiAgICAgICAgcGF0aDogJy8nLFxuICAgICAgICBwb3J0OiBJbnRPclN0cmluZy5mcm9tTnVtYmVyKGZyb250ZW5kUG9ydCksXG4gICAgICB9O1xuICAgICAgaWYgKGZyb250ZW5kLmxpdmVuZXNzRW5hYmxlZCA/PyBmYWxzZSkge1xuICAgICAgICBmcm9udGVuZE9wdGlvbnMubGl2ZW5lc3NQcm9iZSA9IHtcbiAgICAgICAgICBodHRwR2V0OiBmcm9udGVuZEFjdGlvbkh0dHBHZXQsXG4gICAgICAgICAgaW5pdGlhbERlbGF5U2Vjb25kczogZnJvbnRlbmQubGl2ZW5lc3NJbml0aWFsRGVsYXlTZWNvbmRzID8/IDMwLFxuICAgICAgICAgIHRpbWVvdXRTZWNvbmRzOiBmcm9udGVuZC5saXZlbmVzc1RpbWVvdXRTZWNvbmRzID8/IDUsXG4gICAgICAgICAgcGVyaW9kU2Vjb25kczogZnJvbnRlbmQubGl2ZW5lc3NQZXJpb2RTZWNvbmRzID8/IDEwLFxuICAgICAgICAgIHN1Y2Nlc3NUaHJlc2hvbGQ6IGZyb250ZW5kLmxpdmVuZXNzU3VjY2Vzc1RocmVzaG9sZCA/PyAxLFxuICAgICAgICAgIGZhaWx1cmVUaHJlc2hvbGQ6IGZyb250ZW5kLmxpdmVuZXNzRmFpbHVyZVRocmVzaG9sZCA/PyAzLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgaWYgKGZyb250ZW5kLnJlYWRpbmVzc0VuYWJsZWQgPz8gdHJ1ZSkge1xuICAgICAgICBmcm9udGVuZE9wdGlvbnMucmVhZGluZXNzUHJvYmUgPSB7XG4gICAgICAgICAgaHR0cEdldDogZnJvbnRlbmRBY3Rpb25IdHRwR2V0LFxuICAgICAgICAgIGluaXRpYWxEZWxheVNlY29uZHM6IGZyb250ZW5kLnJlYWRpbmVzc0luaXRpYWxEZWxheVNlY29uZHMgPz8gMTAsXG4gICAgICAgICAgdGltZW91dFNlY29uZHM6IGZyb250ZW5kLnJlYWRpbmVzc1RpbWVvdXRTZWNvbmRzID8/IDE1LFxuICAgICAgICAgIHBlcmlvZFNlY29uZHM6IGZyb250ZW5kLnJlYWRpbmVzc1BlcmlvZFNlY29uZHMgPz8gMTAsXG4gICAgICAgICAgc3VjY2Vzc1RocmVzaG9sZDogZnJvbnRlbmQucmVhZGluZXNzU3VjY2Vzc1RocmVzaG9sZCA/PyAxLFxuICAgICAgICAgIGZhaWx1cmVUaHJlc2hvbGQ6IGZyb250ZW5kLnJlYWRpbmVzc0ZhaWx1cmVUaHJlc2hvbGQgPz8gMyxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgLy8gRGVwbG95bWVudFxuICAgICAgY29uc3QgZnJvbnRlbmREZXBsb3ltZW50ID0gbmV3IFBsb25lRGVwbG95bWVudCh0aGlzLCAnZnJvbnRlbmQnLCBmcm9udGVuZE9wdGlvbnMpO1xuXG4gICAgICAvLyBTZXJ2aWNlXG4gICAgICBjb25zdCBmcm9udGVuZFNlcnZpY2UgPSBuZXcgUGxvbmVTZXJ2aWNlKGZyb250ZW5kRGVwbG95bWVudCwgJ3NlcnZpY2UnLCB7XG4gICAgICAgIGxhYmVsczoge1xuICAgICAgICAgICdhcHAua3ViZXJuZXRlcy5pby9uYW1lJzogJ3Bsb25lLWZyb250ZW5kLXNlcnZpY2UnLFxuICAgICAgICAgICdhcHAua3ViZXJuZXRlcy5pby9jb21wb25lbnQnOiAnc2VydmljZScsXG4gICAgICAgIH0sXG4gICAgICAgIHRhcmdldFBvcnQ6IGZyb250ZW5kUG9ydCxcbiAgICAgICAgc2VsZWN0b3JMYWJlbDogeyBhcHA6IE5hbWVzLnRvTGFiZWxWYWx1ZShmcm9udGVuZERlcGxveW1lbnQpIH0sXG4gICAgICAgIHBvcnROYW1lOiAnZnJvbnRlbmQtaHR0cCcsXG4gICAgICAgIGFubm90YXRpb25zOiBmcm9udGVuZC5zZXJ2aWNlQW5ub3RhdGlvbnMsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZnJvbnRlbmRTZXJ2aWNlTmFtZSA9IGZyb250ZW5kU2VydmljZS5uYW1lO1xuXG4gICAgICAvLyBTZXJ2aWNlTW9uaXRvciBmb3IgZnJvbnRlbmRcbiAgICAgIGlmIChmcm9udGVuZC5zZXJ2aWNlbW9uaXRvcikge1xuICAgICAgICB0aGlzLmNyZWF0ZVNlcnZpY2VNb25pdG9yKGZyb250ZW5kU2VydmljZSwgJ2Zyb250ZW5kJywge1xuICAgICAgICAgIHBvcnQ6IGZyb250ZW5kLm1ldHJpY3NQb3J0ID8/ICdmcm9udGVuZC1odHRwJyxcbiAgICAgICAgICBwYXRoOiBmcm9udGVuZC5tZXRyaWNzUGF0aCA/PyAnL21ldHJpY3MnLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIFByb21ldGhldXMgU2VydmljZU1vbml0b3IgcmVzb3VyY2UgZm9yIHRoZSBnaXZlbiBzZXJ2aWNlLlxuICAgKiBAcGFyYW0gc2VydmljZSBUaGUgUGxvbmVTZXJ2aWNlIHRvIG1vbml0b3JcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgU2VydmljZU1vbml0b3JcbiAgICogQHBhcmFtIGNvbmZpZyBDb25maWd1cmF0aW9uIGZvciB0aGUgU2VydmljZU1vbml0b3JcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlU2VydmljZU1vbml0b3IoXG4gICAgc2VydmljZTogUGxvbmVTZXJ2aWNlLFxuICAgIGlkOiBzdHJpbmcsXG4gICAgY29uZmlnOiB7IHBvcnQ6IHN0cmluZyB8IG51bWJlcjsgcGF0aDogc3RyaW5nIH0sXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHBvcnROYW1lID0gdHlwZW9mIGNvbmZpZy5wb3J0ID09PSAnc3RyaW5nJyA/IGNvbmZpZy5wb3J0IDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHBvcnROdW1iZXIgPSB0eXBlb2YgY29uZmlnLnBvcnQgPT09ICdudW1iZXInXG4gICAgICA/IFNlcnZpY2VNb25pdG9yU3BlY0VuZHBvaW50c1RhcmdldFBvcnQuZnJvbU51bWJlcihjb25maWcucG9ydClcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgbmV3IFNlcnZpY2VNb25pdG9yKHRoaXMsIGBzZXJ2aWNlbW9uaXRvci0ke2lkfWAsIHtcbiAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgIG5hbWU6IGAke3NlcnZpY2UubmFtZX0tbW9uaXRvcmAsXG4gICAgICAgIGxhYmVsczoge1xuICAgICAgICAgICdhcHAua3ViZXJuZXRlcy5pby9uYW1lJzogc2VydmljZS5uYW1lLFxuICAgICAgICAgICdhcHAua3ViZXJuZXRlcy5pby9jb21wb25lbnQnOiAnc2VydmljZW1vbml0b3InLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHNwZWM6IHtcbiAgICAgICAgc2VsZWN0b3I6IHtcbiAgICAgICAgICBtYXRjaExhYmVsczoge1xuICAgICAgICAgICAgJ2FwcC5rdWJlcm5ldGVzLmlvL25hbWUnOiBzZXJ2aWNlLmxhYmVsc1snYXBwLmt1YmVybmV0ZXMuaW8vbmFtZSddLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGVuZHBvaW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIC4uLihwb3J0TmFtZSAmJiB7IHBvcnQ6IHBvcnROYW1lIH0pLFxuICAgICAgICAgICAgLi4uKHBvcnROdW1iZXIgJiYgeyB0YXJnZXRQb3J0OiBwb3J0TnVtYmVyIH0pLFxuICAgICAgICAgICAgcGF0aDogY29uZmlnLnBhdGgsXG4gICAgICAgICAgICBpbnRlcnZhbDogJzMwcycsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn0iXX0=
|
package/lib/vinylcache.d.ts
CHANGED
|
@@ -136,6 +136,36 @@ export interface PloneVinylCacheOptions {
|
|
|
136
136
|
* @default 'shard'
|
|
137
137
|
*/
|
|
138
138
|
readonly director?: string;
|
|
139
|
+
/**
|
|
140
|
+
* Shard director: what value is hashed for shard selection.
|
|
141
|
+
* "HASH" uses the Varnish hash (default); "URL" uses the request URL.
|
|
142
|
+
* Only applied when director is "shard".
|
|
143
|
+
* Requires cloud-vinyl operator >= 0.4.2.
|
|
144
|
+
* @default - operator default ("HASH")
|
|
145
|
+
*/
|
|
146
|
+
readonly shardBy?: string;
|
|
147
|
+
/**
|
|
148
|
+
* Shard director: which backends the director considers when selecting a shard.
|
|
149
|
+
* "CHOSEN" (default) only considers the chosen backend healthy; "ALL" requires all
|
|
150
|
+
* backends to be healthy.
|
|
151
|
+
* Only applied when director is "shard".
|
|
152
|
+
* Requires cloud-vinyl operator >= 0.4.2.
|
|
153
|
+
* @default - operator default ("CHOSEN")
|
|
154
|
+
*/
|
|
155
|
+
readonly shardHealthy?: string;
|
|
156
|
+
/**
|
|
157
|
+
* Shard director: time after adding a backend before it receives its full share of
|
|
158
|
+
* traffic, preventing thundering-herd.
|
|
159
|
+
* Only applied when director is "shard".
|
|
160
|
+
* @default - operator default ("30s")
|
|
161
|
+
*/
|
|
162
|
+
readonly shardRampup?: string;
|
|
163
|
+
/**
|
|
164
|
+
* Shard director: number of Ketama replicas per backend in the hash ring.
|
|
165
|
+
* Only applied when director is "shard".
|
|
166
|
+
* @default - operator default (67)
|
|
167
|
+
*/
|
|
168
|
+
readonly shardReplicas?: number;
|
|
139
169
|
/**
|
|
140
170
|
* Custom VCL snippet for vcl_recv subroutine.
|
|
141
171
|
* Replaces the default Plone recv snippet.
|
package/lib/vinylcache.js
CHANGED
|
@@ -47,6 +47,28 @@ class PloneVinylCache extends constructs_1.Construct {
|
|
|
47
47
|
default:
|
|
48
48
|
directorType = vinyl_bluedynamics_eu_1.VinylCacheSpecDirectorType.SHARD;
|
|
49
49
|
}
|
|
50
|
+
// Shard director tuning: only honored by the operator when director type is "shard".
|
|
51
|
+
// Emit the shard block only for shard directors so manifests stay minimal.
|
|
52
|
+
let shardSpec;
|
|
53
|
+
if (directorType === vinyl_bluedynamics_eu_1.VinylCacheSpecDirectorType.SHARD &&
|
|
54
|
+
(options.shardBy || options.shardHealthy || options.shardRampup || options.shardReplicas !== undefined)) {
|
|
55
|
+
let shardBy;
|
|
56
|
+
if (options.shardBy === 'URL')
|
|
57
|
+
shardBy = vinyl_bluedynamics_eu_1.VinylCacheSpecDirectorShardBy.URL;
|
|
58
|
+
else if (options.shardBy === 'HASH')
|
|
59
|
+
shardBy = vinyl_bluedynamics_eu_1.VinylCacheSpecDirectorShardBy.HASH;
|
|
60
|
+
let shardHealthy;
|
|
61
|
+
if (options.shardHealthy === 'ALL')
|
|
62
|
+
shardHealthy = vinyl_bluedynamics_eu_1.VinylCacheSpecDirectorShardHealthy.ALL;
|
|
63
|
+
else if (options.shardHealthy === 'CHOSEN')
|
|
64
|
+
shardHealthy = vinyl_bluedynamics_eu_1.VinylCacheSpecDirectorShardHealthy.CHOSEN;
|
|
65
|
+
shardSpec = {
|
|
66
|
+
by: shardBy,
|
|
67
|
+
healthy: shardHealthy,
|
|
68
|
+
rampup: options.shardRampup,
|
|
69
|
+
replicas: options.shardReplicas,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
50
72
|
// Load default VCL snippets
|
|
51
73
|
const vclRecv = options.vclRecvSnippet ??
|
|
52
74
|
fs.readFileSync(path.join(__dirname, 'config', 'plone-vinyl-recv.vcl'), 'utf8');
|
|
@@ -102,7 +124,7 @@ class PloneVinylCache extends constructs_1.Construct {
|
|
|
102
124
|
replicas,
|
|
103
125
|
image: options.image ?? 'varnish:7.6',
|
|
104
126
|
backends,
|
|
105
|
-
director: { type: directorType },
|
|
127
|
+
director: { type: directorType, shard: shardSpec },
|
|
106
128
|
vcl: {
|
|
107
129
|
snippets: {
|
|
108
130
|
vclRecv: vclRecv,
|
|
@@ -157,5 +179,5 @@ class PloneVinylCache extends constructs_1.Construct {
|
|
|
157
179
|
}
|
|
158
180
|
exports.PloneVinylCache = PloneVinylCache;
|
|
159
181
|
_a = JSII_RTTI_SYMBOL_1;
|
|
160
|
-
PloneVinylCache[_a] = { fqn: "@bluedynamics/cdk8s-plone.PloneVinylCache", version: "0.1.
|
|
161
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlueWxjYWNoZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92aW55bGNhY2hlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3QixpQ0FBOEI7QUFDOUIsMkNBQXVDO0FBQ3ZDLDJFQUt5QztBQXdSekM7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFhLGVBQWdCLFNBQVEsc0JBQVM7SUFPNUMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxPQUErQjtRQUN2RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDO1FBQ2xELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDO1FBRS9DLDZCQUE2QjtRQUM3QixNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQztRQUNoRCxJQUFJLFlBQXdDLENBQUM7UUFDN0MsUUFBUSxXQUFXLEVBQUUsQ0FBQztZQUNwQixLQUFLLGFBQWE7Z0JBQ2hCLFlBQVksR0FBRyxrREFBMEIsQ0FBQyxzQkFBc0IsQ0FBQztnQkFDakUsTUFBTTtZQUNSLEtBQUssUUFBUTtnQkFDWCxZQUFZLEdBQUcsa0RBQTBCLENBQUMsTUFBTSxDQUFDO2dCQUNqRCxNQUFNO1lBQ1IsS0FBSyxNQUFNO2dCQUNULFlBQVksR0FBRyxrREFBMEIsQ0FBQyxJQUFJLENBQUM7Z0JBQy9DLE1BQU07WUFDUjtnQkFDRSxZQUFZLEdBQUcsa0RBQTBCLENBQUMsS0FBSyxDQUFDO1FBQ3BELENBQUM7UUFFRCw0QkFBNEI7UUFDNUIsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLGNBQWM7WUFDcEMsRUFBRSxDQUFDLFlBQVks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QUUsT0FBTyxFQUFFLElBQUksRUFBRTtpQkFDbEMsQ0FBQyxDQUFDLENBQUMsU0FBUztnQkFDYixHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLE1BQU0sSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUMzRCxXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUMxQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUc7d0JBQ1YsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRO3dCQUNwQixLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUs7d0JBQ2QsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNO3FCQUNqQixDQUFDLENBQUM7b0JBQ0gsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUFZO2lCQUNuQyxDQUFDLENBQUMsQ0FBQyxTQUFTO2FBQ2Q7U0FDRixDQUFDLENBQUM7UUFFSCwrRUFBK0U7UUFDL0UsSUFBSSxDQUFDLHFCQUFxQixHQUFHLGFBQUssQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDOUQsQ0FBQzs7QUExSkgsMENBMkpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IE5hbWVzIH0gZnJvbSAnY2RrOHMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQge1xuICBWaW55bENhY2hlLFxuICBWaW55bENhY2hlU3BlY0RpcmVjdG9yVHlwZSxcbiAgVmlueWxDYWNoZVNwZWNSZXNvdXJjZXNMaW1pdHMsXG4gIFZpbnlsQ2FjaGVTcGVjUmVzb3VyY2VzUmVxdWVzdHMsXG59IGZyb20gJy4vaW1wb3J0cy92aW55bC5ibHVlZHluYW1pY3MuZXUnO1xuaW1wb3J0IHsgUGxvbmUgfSBmcm9tICcuL3Bsb25lJztcblxuLyoqXG4gKiBIZWFsdGggcHJvYmUgY29uZmlndXJhdGlvbiBmb3IgYSBWaW55bENhY2hlIGJhY2tlbmQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmlueWxDYWNoZUJhY2tlbmRQcm9iZSB7XG4gIC8qKlxuICAgKiBVUkwgdG8gcHJvYmUuXG4gICAqIEBkZWZhdWx0ICcvJ1xuICAgKi9cbiAgcmVhZG9ubHkgdXJsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBIb3cgb2Z0ZW4gdG8gcHJvYmUgdGhlIGJhY2tlbmQuXG4gICAqIEBkZWZhdWx0ICc1cydcbiAgICovXG4gIHJlYWRvbmx5IGludGVydmFsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIHRpbWUgdG8gd2FpdCBmb3IgYSBwcm9iZSByZXNwb25zZS5cbiAgICogQGRlZmF1bHQgJzJzJ1xuICAgKi9cbiAgcmVhZG9ubHkgdGltZW91dD86IHN0cmluZztcblxuICAvKipcbiAgICogTnVtYmVyIG9mIG1vc3QgcmVjZW50IHByb2JlcyB0byBjb25zaWRlci5cbiAgICogQGRlZmF1bHQgMTBcbiAgICovXG4gIHJlYWRvbmx5IHdpbmRvdz86IG51bWJlcjtcblxuICAvKipcbiAgICogTWluaW11bSBzdWNjZXNzZnVsIHByb2JlcyB3aXRoaW4gd2luZG93IGZvciBoZWFsdGh5IHN0YXR1cy5cbiAgICogQGRlZmF1bHQgOFxuICAgKi9cbiAgcmVhZG9ubHkgdGhyZXNob2xkPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBFeHBlY3RlZCBIVFRQIHJlc3BvbnNlIHN0YXR1cyBjb2RlLlxuICAgKiBAZGVmYXVsdCAyMDBcbiAgICovXG4gIHJlYWRvbmx5IGV4cGVjdGVkUmVzcG9uc2U/OiBudW1iZXI7XG59XG5cbi8qKlxuICogQW4gYWRkaXRpb25hbCBiYWNrZW5kIGZvciB0aGUgVmlueWxDYWNoZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWaW55bENhY2hlQmFja2VuZCB7XG4gIC8qKlxuICAgKiBWQ0wgaWRlbnRpZmllciBmb3IgdGhpcyBiYWNrZW5kLiBNdXN0IG1hdGNoIF5bYS16QS1aXVthLXpBLVowLTlfXSokLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBLdWJlcm5ldGVzIFNlcnZpY2UgbmFtZSB0byB1c2UgYXMgYmFja2VuZC5cbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBvcnQgdG8gdXNlIGZvciB0aGlzIGJhY2tlbmQuXG4gICAqL1xuICByZWFkb25seSBwb3J0OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEhlYWx0aCBwcm9iZSBjb25maWd1cmF0aW9uLlxuICAgKiBAZGVmYXVsdCAtIG5vIHByb2JlXG4gICAqL1xuICByZWFkb25seSBwcm9iZT86IFZpbnlsQ2FjaGVCYWNrZW5kUHJvYmU7XG5cbiAgLyoqXG4gICAqIFJlbGF0aXZlIHdlaWdodCBmb3IgdGhlIGRpcmVjdG9yLiAwIG1lYW5zIHN0YW5kYnkuXG4gICAqIEBkZWZhdWx0IC0gb3BlcmF0b3IgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgd2VpZ2h0PzogbnVtYmVyO1xufVxuXG4vKipcbiAqIEEgS3ViZXJuZXRlcyB0b2xlcmF0aW9uIGZvciB0aGUgVmFybmlzaCBwb2RzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZpbnlsQ2FjaGVUb2xlcmF0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSB0YWludCBrZXkgdG8gdG9sZXJhdGUuXG4gICAqL1xuICByZWFkb25seSBrZXk6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG9wZXJhdG9yIChFcXVhbCBvciBFeGlzdHMpLlxuICAgKiBAZGVmYXVsdCAnRXF1YWwnXG4gICAqL1xuICByZWFkb25seSBvcGVyYXRvcj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHRhaW50IHZhbHVlIHRvIG1hdGNoICh3aGVuIG9wZXJhdG9yIGlzIEVxdWFsKS5cbiAgICogQGRlZmF1bHQgLSBubyB2YWx1ZVxuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWludCBlZmZlY3QgdG8gdG9sZXJhdGUgKE5vU2NoZWR1bGUsIFByZWZlck5vU2NoZWR1bGUsIE5vRXhlY3V0ZSkuXG4gICAqIEBkZWZhdWx0IC0gdG9sZXJhdGUgYWxsIGVmZmVjdHNcbiAgICovXG4gIHJlYWRvbmx5IGVmZmVjdD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIFBsb25lVmlueWxDYWNoZSAoY2xvdWQtdmlueWwgb3BlcmF0b3IpLlxuICpcbiAqIENyZWF0ZXMgYSBWaW55bENhY2hlIGN1c3RvbSByZXNvdXJjZSB0aGF0IHRoZSBjbG91ZC12aW55bCBvcGVyYXRvclxuICogcmVjb25jaWxlcyBpbnRvIGEgVmFybmlzaCBDYWNoZSBjbHVzdGVyIHdpdGggYWdlbnQtYmFzZWQgVkNMIGRlbGl2ZXJ5LlxuICpcbiAqIFJlcXVpcmVzIHRoZSBjbG91ZC12aW55bCBvcGVyYXRvciB0byBiZSBpbnN0YWxsZWQgaW4gdGhlIGNsdXN0ZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGxvbmVWaW55bENhY2hlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgUGxvbmUgY29uc3RydWN0IHRvIGF0dGFjaCB0aGUgY2FjaGUgdG8uXG4gICAqIEJhY2tlbmRzIGFyZSBhdXRvLWNvbmZpZ3VyZWQgZnJvbSB0aGUgUGxvbmUgc2VydmljZXMuXG4gICAqL1xuICByZWFkb25seSBwbG9uZTogUGxvbmU7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgYmFja2VuZHMgdG8gYWRkIGFmdGVyIHRoZSBhdXRvLWdlbmVyYXRlZCBQbG9uZSBiYWNrZW5kcy5cbiAgICogVXNlcyB0aGUgc2FtZSBiYWNrZW5kIHR5cGUgc3RydWN0dXJlIGFzIHRoZSBWaW55bENhY2hlIENSRC5cbiAgICogQGRlZmF1bHQgLSBubyBleHRyYSBiYWNrZW5kc1xuICAgKi9cbiAgcmVhZG9ubHkgZXh0cmFCYWNrZW5kcz86IFZpbnlsQ2FjaGVCYWNrZW5kW107XG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiBWYXJuaXNoIHBvZCByZXBsaWNhcy5cbiAgICogQGRlZmF1bHQgMlxuICAgKi9cbiAgcmVhZG9ubHkgcmVwbGljYXM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENQVSByZXF1ZXN0IGZvciBWYXJuaXNoIHBvZHMuXG4gICAqIEBkZWZhdWx0ICcxMDBtJ1xuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWVzdENwdT86IHN0cmluZztcblxuICAvKipcbiAgICogTWVtb3J5IHJlcXVlc3QgZm9yIFZhcm5pc2ggcG9kcy5cbiAgICogQGRlZmF1bHQgJzI1Nk1pJ1xuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWVzdE1lbW9yeT86IHN0cmluZztcblxuICAvKipcbiAgICogQ1BVIGxpbWl0IGZvciBWYXJuaXNoIHBvZHMuXG4gICAqIEBkZWZhdWx0ICc1MDBtJ1xuICAgKi9cbiAgcmVhZG9ubHkgbGltaXRDcHU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE1lbW9yeSBsaW1pdCBmb3IgVmFybmlzaCBwb2RzLlxuICAgKiBAZGVmYXVsdCAnNTEyTWknXG4gICAqL1xuICByZWFkb25seSBsaW1pdE1lbW9yeT86IHN0cmluZztcblxuICAvKipcbiAgICogRGlyZWN0b3IgdHlwZSBmb3IgbG9hZCBkaXN0cmlidXRpb24uXG4gICAqIEBkZWZhdWx0ICdzaGFyZCdcbiAgICovXG4gIHJlYWRvbmx5IGRpcmVjdG9yPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gVkNMIHNuaXBwZXQgZm9yIHZjbF9yZWN2IHN1YnJvdXRpbmUuXG4gICAqIFJlcGxhY2VzIHRoZSBkZWZhdWx0IFBsb25lIHJlY3Ygc25pcHBldC5cbiAgICogQGRlZmF1bHQgLSB1c2VzIGJ1aWx0LWluIHBsb25lLXZpbnlsLXJlY3YudmNsXG4gICAqL1xuICByZWFkb25seSB2Y2xSZWN2U25pcHBldD86IHN0cmluZztcblxuICAvKipcbiAgICogQ3VzdG9tIFZDTCBzbmlwcGV0IGZvciB2Y2xfYmFja2VuZF9yZXNwb25zZSBzdWJyb3V0aW5lLlxuICAgKiBSZXBsYWNlcyB0aGUgZGVmYXVsdCBQbG9uZSBiYWNrZW5kX3Jlc3BvbnNlIHNuaXBwZXQuXG4gICAqIEBkZWZhdWx0IC0gdXNlcyBidWlsdC1pbiBwbG9uZS12aW55bC1iYWNrZW5kLXJlc3BvbnNlLnZjbFxuICAgKi9cbiAgcmVhZG9ubHkgdmNsQmFja2VuZFJlc3BvbnNlU25pcHBldD86IHN0cmluZztcblxuICAvKipcbiAgICogRW5hYmxlIGNhY2hlIGludmFsaWRhdGlvbiAoUFVSR0UsIEJBTiwgeGtleSkuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGludmFsaWRhdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBQcm9tZXRoZXVzIG1vbml0b3JpbmcgKG1ldHJpY3MgKyBTZXJ2aWNlTW9uaXRvcikuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBtb25pdG9yaW5nPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ29udGFpbmVyIGltYWdlIGZvciB0aGUgVmFybmlzaCBwb2RzLlxuICAgKiBAZGVmYXVsdCAndmFybmlzaDo3LjYnXG4gICAqL1xuICByZWFkb25seSBpbWFnZT86IHN0cmluZztcblxuICAvKipcbiAgICogVG9sZXJhdGlvbnMgZm9yIHRoZSBWYXJuaXNoIHBvZHMuXG4gICAqIEBkZWZhdWx0IC0gbm8gdG9sZXJhdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IHRvbGVyYXRpb25zPzogVmlueWxDYWNoZVRvbGVyYXRpb25bXTtcblxuICAvKipcbiAgICogTm9kZSBzZWxlY3RvciBsYWJlbHMgZm9yIHRoZSBWYXJuaXNoIHBvZHMuXG4gICAqIENvbnN0cmFpbnMgcG9kcyB0byBub2RlcyBtYXRjaGluZyBhbGwgc3BlY2lmaWVkIGxhYmVscy5cbiAgICogQGRlZmF1bHQgLSBubyBub2RlIHNlbGVjdG9yXG4gICAqL1xuICByZWFkb25seSBub2RlU2VsZWN0b3I/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBDdXN0b20gVkNMIHNuaXBwZXQgZm9yIHZjbF9kZWxpdmVyIHN1YnJvdXRpbmUuXG4gICAqIEBkZWZhdWx0IC0gbm8gc25pcHBldFxuICAgKi9cbiAgcmVhZG9ubHkgdmNsRGVsaXZlclNuaXBwZXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBWQ0wgc25pcHBldCBmb3IgdmNsX2hpdCBzdWJyb3V0aW5lLlxuICAgKiBAZGVmYXVsdCAtIG5vIHNuaXBwZXRcbiAgICovXG4gIHJlYWRvbmx5IHZjbEhpdFNuaXBwZXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBWQ0wgc25pcHBldCBmb3IgdmNsX21pc3Mgc3Vicm91dGluZS5cbiAgICogQGRlZmF1bHQgLSBubyBzbmlwcGV0XG4gICAqL1xuICByZWFkb25seSB2Y2xNaXNzU25pcHBldD86IHN0cmluZztcblxuICAvKipcbiAgICogQ3VzdG9tIFZDTCBzbmlwcGV0IGZvciB2Y2xfcGFzcyBzdWJyb3V0aW5lLlxuICAgKiBAZGVmYXVsdCAtIG5vIHNuaXBwZXRcbiAgICovXG4gIHJlYWRvbmx5IHZjbFBhc3NTbmlwcGV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gVkNMIHNuaXBwZXQgZm9yIHZjbF9waXBlIHN1YnJvdXRpbmUuXG4gICAqIEBkZWZhdWx0IC0gbm8gc25pcHBldFxuICAgKi9cbiAgcmVhZG9ubHkgdmNsUGlwZVNuaXBwZXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBWQ0wgc25pcHBldCBmb3IgdmNsX3N5bnRoIHN1YnJvdXRpbmUuXG4gICAqIEBkZWZhdWx0IC0gbm8gc25pcHBldFxuICAgKi9cbiAgcmVhZG9ubHkgdmNsU3ludGhTbmlwcGV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gVkNMIHNuaXBwZXQgZm9yIHZjbF9wdXJnZSBzdWJyb3V0aW5lLlxuICAgKiBAZGVmYXVsdCAtIG5vIHNuaXBwZXRcbiAgICovXG4gIHJlYWRvbmx5IHZjbFB1cmdlU25pcHBldD86IHN0cmluZztcblxuICAvKipcbiAgICogQ3VzdG9tIFZDTCBzbmlwcGV0IGZvciB2Y2xfaGFzaCBzdWJyb3V0aW5lLlxuICAgKiBAZGVmYXVsdCAtIG5vIHNuaXBwZXRcbiAgICovXG4gIHJlYWRvbmx5IHZjbEhhc2hTbmlwcGV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gVkNMIHNuaXBwZXQgZm9yIHZjbF9pbml0IHN1YnJvdXRpbmUuXG4gICAqIEBkZWZhdWx0IC0gbm8gc25pcHBldFxuICAgKi9cbiAgcmVhZG9ubHkgdmNsSW5pdFNuaXBwZXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBWQ0wgc25pcHBldCBmb3IgdmNsX2Zpbmkgc3Vicm91dGluZS5cbiAgICogQGRlZmF1bHQgLSBubyBzbmlwcGV0XG4gICAqL1xuICByZWFkb25seSB2Y2xGaW5pU25pcHBldD86IHN0cmluZztcblxuICAvKipcbiAgICogQ3VzdG9tIFZDTCBzbmlwcGV0IGZvciB2Y2xfYmFja2VuZF9mZXRjaCBzdWJyb3V0aW5lLlxuICAgKiBAZGVmYXVsdCAtIG5vIHNuaXBwZXRcbiAgICovXG4gIHJlYWRvbmx5IHZjbEJhY2tlbmRGZXRjaFNuaXBwZXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBWQ0wgc25pcHBldCBmb3IgdmNsX2JhY2tlbmRfZXJyb3Igc3Vicm91dGluZS5cbiAgICogQGRlZmF1bHQgLSBubyBzbmlwcGV0XG4gICAqL1xuICByZWFkb25seSB2Y2xCYWNrZW5kRXJyb3JTbmlwcGV0Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBsb25lVmlueWxDYWNoZSBjb25zdHJ1Y3QgZm9yIGRlcGxveWluZyBWYXJuaXNoIENhY2hlIHZpYSBjbG91ZC12aW55bCBvcGVyYXRvci5cbiAqXG4gKiBDcmVhdGVzIGEgVmlueWxDYWNoZSBjdXN0b20gcmVzb3VyY2Ugd2l0aCBQbG9uZSBiYWNrZW5kL2Zyb250ZW5kIHNlcnZpY2VzXG4gKiBhdXRvLWNvbmZpZ3VyZWQgYXMgYmFja2VuZHMuIFRoZSBjbG91ZC12aW55bCBvcGVyYXRvciBtYW5hZ2VzIHRoZSBmdWxsXG4gKiBWYXJuaXNoIGxpZmVjeWNsZSBpbmNsdWRpbmcgVkNMIGdlbmVyYXRpb24sIGFnZW50IGRlbGl2ZXJ5LCBhbmQgbW9uaXRvcmluZy5cbiAqXG4gKiBSZXF1aXJlcyB0aGUgY2xvdWQtdmlueWwgb3BlcmF0b3IgdG8gYmUgaW5zdGFsbGVkIGluIHRoZSBjbHVzdGVyLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBwbG9uZSA9IG5ldyBQbG9uZShjaGFydCwgJ3Bsb25lJyk7XG4gKiBjb25zdCBjYWNoZSA9IG5ldyBQbG9uZVZpbnlsQ2FjaGUoY2hhcnQsICdjYWNoZScsIHtcbiAqICAgcGxvbmU6IHBsb25lLFxuICogICByZXBsaWNhczogMixcbiAqIH0pO1xuICogLy8gVXNlIGNhY2hlLnZpbnlsQ2FjaGVTZXJ2aWNlTmFtZSBmb3IgSW5ncmVzc1JvdXRlXG4gKi9cbmV4cG9ydCBjbGFzcyBQbG9uZVZpbnlsQ2FjaGUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgVmlueWxDYWNoZSBzZXJ2aWNlIGNyZWF0ZWQgYnkgdGhlIG9wZXJhdG9yLlxuICAgKiBVc2UgdGhpcyB0byByZWZlcmVuY2UgdGhlIGNhY2hlIHNlcnZpY2UgZnJvbSBpbmdyZXNzIG9yIG90aGVyIGNvbnN0cnVjdHMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmlueWxDYWNoZVNlcnZpY2VOYW1lOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgb3B0aW9uczogUGxvbmVWaW55bENhY2hlT3B0aW9ucykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCByZXBsaWNhcyA9IG9wdGlvbnMucmVwbGljYXMgPz8gMjtcbiAgICBjb25zdCBpbnZhbGlkYXRpb24gPSBvcHRpb25zLmludmFsaWRhdGlvbiA/PyB0cnVlO1xuICAgIGNvbnN0IG1vbml0b3JpbmcgPSBvcHRpb25zLm1vbml0b3JpbmcgPz8gZmFsc2U7XG5cbiAgICAvLyBSZXNvbHZlIGRpcmVjdG9yIHR5cGUgZW51bVxuICAgIGNvbnN0IGRpcmVjdG9yU3RyID0gb3B0aW9ucy5kaXJlY3RvciA/PyAnc2hhcmQnO1xuICAgIGxldCBkaXJlY3RvclR5cGU6IFZpbnlsQ2FjaGVTcGVjRGlyZWN0b3JUeXBlO1xuICAgIHN3aXRjaCAoZGlyZWN0b3JTdHIpIHtcbiAgICAgIGNhc2UgJ3JvdW5kX3JvYmluJzpcbiAgICAgICAgZGlyZWN0b3JUeXBlID0gVmlueWxDYWNoZVNwZWNEaXJlY3RvclR5cGUuUk9VTkRfVU5ERVJTQ09SRV9ST0JJTjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyYW5kb20nOlxuICAgICAgICBkaXJlY3RvclR5cGUgPSBWaW55bENhY2hlU3BlY0RpcmVjdG9yVHlwZS5SQU5ET007XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaGFzaCc6XG4gICAgICAgIGRpcmVjdG9yVHlwZSA9IFZpbnlsQ2FjaGVTcGVjRGlyZWN0b3JUeXBlLkhBU0g7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgZGlyZWN0b3JUeXBlID0gVmlueWxDYWNoZVNwZWNEaXJlY3RvclR5cGUuU0hBUkQ7XG4gICAgfVxuXG4gICAgLy8gTG9hZCBkZWZhdWx0IFZDTCBzbmlwcGV0c1xuICAgIGNvbnN0IHZjbFJlY3YgPSBvcHRpb25zLnZjbFJlY3ZTbmlwcGV0ID8/XG4gICAgICBmcy5yZWFkRmlsZVN5bmMocGF0aC5qb2luKF9fZGlybmFtZSwgJ2NvbmZpZycsICdwbG9uZS12aW55bC1yZWN2LnZjbCcpLCAndXRmOCcpO1xuICAgIGNvbnN0IHZjbEJhY2tlbmRSZXNwb25zZSA9IG9wdGlvbnMudmNsQmFja2VuZFJlc3BvbnNlU25pcHBldCA/P1xuICAgICAgZnMucmVhZEZpbGVTeW5jKHBhdGguam9pbihfX2Rpcm5hbWUsICdjb25maWcnLCAncGxvbmUtdmlueWwtYmFja2VuZC1yZXNwb25zZS52Y2wnKSwgJ3V0ZjgnKTtcblxuICAgIC8vIEJ1aWxkIGJhY2tlbmRzIGZyb20gUGxvbmUgc2VydmljZXNcbiAgICBjb25zdCBiYWNrZW5kczogQXJyYXk8e1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgc2VydmljZVJlZjogeyBuYW1lOiBzdHJpbmcgfTtcbiAgICAgIHBvcnQ6IG51bWJlcjtcbiAgICAgIHByb2JlPzoge1xuICAgICAgICB1cmw6IHN0cmluZztcbiAgICAgICAgaW50ZXJ2YWw6IHN0cmluZztcbiAgICAgICAgdGltZW91dDogc3RyaW5nO1xuICAgICAgICB3aW5kb3c6IG51bWJlcjtcbiAgICAgICAgdGhyZXNob2xkOiBudW1iZXI7XG4gICAgICB9O1xuICAgICAgd2VpZ2h0PzogbnVtYmVyO1xuICAgIH0+ID0gW1xuICAgICAge1xuICAgICAgICBuYW1lOiAncGxvbmVfYmFja2VuZCcsXG4gICAgICAgIHNlcnZpY2VSZWY6IHsgbmFtZTogb3B0aW9ucy5wbG9uZS5iYWNrZW5kU2VydmljZU5hbWUgfSxcbiAgICAgICAgcG9ydDogODA4MCxcbiAgICAgICAgcHJvYmU6IHtcbiAgICAgICAgICB1cmw6ICcvb2snLFxuICAgICAgICAgIGludGVydmFsOiAnNXMnLFxuICAgICAgICAgIHRpbWVvdXQ6ICcycycsXG4gICAgICAgICAgd2luZG93OiAxMCxcbiAgICAgICAgICB0aHJlc2hvbGQ6IDgsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF07XG5cbiAgICBpZiAob3B0aW9ucy5wbG9uZS5mcm9udGVuZFNlcnZpY2VOYW1lKSB7XG4gICAgICBiYWNrZW5kcy5wdXNoKHtcbiAgICAgICAgbmFtZTogJ3Bsb25lX2Zyb250ZW5kJyxcbiAgICAgICAgc2VydmljZVJlZjogeyBuYW1lOiBvcHRpb25zLnBsb25lLmZyb250ZW5kU2VydmljZU5hbWUgfSxcbiAgICAgICAgcG9ydDogMzAwMCxcbiAgICAgICAgcHJvYmU6IHtcbiAgICAgICAgICB1cmw6ICcvJyxcbiAgICAgICAgICBpbnRlcnZhbDogJzVzJyxcbiAgICAgICAgICB0aW1lb3V0OiAnMnMnLFxuICAgICAgICAgIHdpbmRvdzogMTAsXG4gICAgICAgICAgdGhyZXNob2xkOiA4LFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuZXh0cmFCYWNrZW5kcykge1xuICAgICAgZm9yIChjb25zdCBlYiBvZiBvcHRpb25zLmV4dHJhQmFja2VuZHMpIHtcbiAgICAgICAgYmFja2VuZHMucHVzaCh7XG4gICAgICAgICAgbmFtZTogZWIubmFtZSxcbiAgICAgICAgICBzZXJ2aWNlUmVmOiB7IG5hbWU6IGViLnNlcnZpY2VOYW1lIH0sXG4gICAgICAgICAgcG9ydDogZWIucG9ydCxcbiAgICAgICAgICBwcm9iZTogZWIucHJvYmUgPyB7XG4gICAgICAgICAgICB1cmw6IGViLnByb2JlLnVybCA/PyAnLycsXG4gICAgICAgICAgICBpbnRlcnZhbDogZWIucHJvYmUuaW50ZXJ2YWwgPz8gJzVzJyxcbiAgICAgICAgICAgIHRpbWVvdXQ6IGViLnByb2JlLnRpbWVvdXQgPz8gJzJzJyxcbiAgICAgICAgICAgIHdpbmRvdzogZWIucHJvYmUud2luZG93ID8/IDEwLFxuICAgICAgICAgICAgdGhyZXNob2xkOiBlYi5wcm9iZS50aHJlc2hvbGQgPz8gOCxcbiAgICAgICAgICB9IDogdW5kZWZpbmVkLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB2aW55bENhY2hlID0gbmV3IFZpbnlsQ2FjaGUodGhpcywgJ3ZpbnlsY2FjaGUnLCB7XG4gICAgICBzcGVjOiB7XG4gICAgICAgIHJlcGxpY2FzLFxuICAgICAgICBpbWFnZTogb3B0aW9ucy5pbWFnZSA/PyAndmFybmlzaDo3LjYnLFxuICAgICAgICBiYWNrZW5kcyxcbiAgICAgICAgZGlyZWN0b3I6IHsgdHlwZTogZGlyZWN0b3JUeXBlIH0sXG4gICAgICAgIHZjbDoge1xuICAgICAgICAgIHNuaXBwZXRzOiB7XG4gICAgICAgICAgICB2Y2xSZWN2OiB2Y2xSZWN2LFxuICAgICAgICAgICAgdmNsQmFja2VuZFJlc3BvbnNlOiB2Y2xCYWNrZW5kUmVzcG9uc2UsXG4gICAgICAgICAgICB2Y2xEZWxpdmVyOiBvcHRpb25zLnZjbERlbGl2ZXJTbmlwcGV0LFxuICAgICAgICAgICAgdmNsSGl0OiBvcHRpb25zLnZjbEhpdFNuaXBwZXQsXG4gICAgICAgICAgICB2Y2xNaXNzOiBvcHRpb25zLnZjbE1pc3NTbmlwcGV0LFxuICAgICAgICAgICAgdmNsUGFzczogb3B0aW9ucy52Y2xQYXNzU25pcHBldCxcbiAgICAgICAgICAgIHZjbFBpcGU6IG9wdGlvbnMudmNsUGlwZVNuaXBwZXQsXG4gICAgICAgICAgICB2Y2xTeW50aDogb3B0aW9ucy52Y2xTeW50aFNuaXBwZXQsXG4gICAgICAgICAgICB2Y2xQdXJnZTogb3B0aW9ucy52Y2xQdXJnZVNuaXBwZXQsXG4gICAgICAgICAgICB2Y2xIYXNoOiBvcHRpb25zLnZjbEhhc2hTbmlwcGV0LFxuICAgICAgICAgICAgdmNsSW5pdDogb3B0aW9ucy52Y2xJbml0U25pcHBldCxcbiAgICAgICAgICAgIHZjbEZpbmk6IG9wdGlvbnMudmNsRmluaVNuaXBwZXQsXG4gICAgICAgICAgICB2Y2xCYWNrZW5kRmV0Y2g6IG9wdGlvbnMudmNsQmFja2VuZEZldGNoU25pcHBldCxcbiAgICAgICAgICAgIHZjbEJhY2tlbmRFcnJvcjogb3B0aW9ucy52Y2xCYWNrZW5kRXJyb3JTbmlwcGV0LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHJlc291cmNlczoge1xuICAgICAgICAgIHJlcXVlc3RzOiB7XG4gICAgICAgICAgICBjcHU6IFZpbnlsQ2FjaGVTcGVjUmVzb3VyY2VzUmVxdWVzdHMuZnJvbVN0cmluZyhvcHRpb25zLnJlcXVlc3RDcHUgPz8gJzEwMG0nKSxcbiAgICAgICAgICAgIG1lbW9yeTogVmlueWxDYWNoZVNwZWNSZXNvdXJjZXNSZXF1ZXN0cy5mcm9tU3RyaW5nKG9wdGlvbnMucmVxdWVzdE1lbW9yeSA/PyAnMjU2TWknKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGxpbWl0czoge1xuICAgICAgICAgICAgY3B1OiBWaW55bENhY2hlU3BlY1Jlc291cmNlc0xpbWl0cy5mcm9tU3RyaW5nKG9wdGlvbnMubGltaXRDcHUgPz8gJzUwMG0nKSxcbiAgICAgICAgICAgIG1lbW9yeTogVmlueWxDYWNoZVNwZWNSZXNvdXJjZXNMaW1pdHMuZnJvbVN0cmluZyhvcHRpb25zLmxpbWl0TWVtb3J5ID8/ICc1MTJNaScpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGludmFsaWRhdGlvbjogaW52YWxpZGF0aW9uID8ge1xuICAgICAgICAgIHB1cmdlOiB7IGVuYWJsZWQ6IHRydWUgfSxcbiAgICAgICAgICBiYW46IHsgZW5hYmxlZDogdHJ1ZSB9LFxuICAgICAgICAgIHhrZXk6IHsgZW5hYmxlZDogdHJ1ZSB9LFxuICAgICAgICB9IDogdW5kZWZpbmVkLFxuICAgICAgICBtb25pdG9yaW5nOiBtb25pdG9yaW5nID8ge1xuICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgc2VydmljZU1vbml0b3I6IHsgZW5hYmxlZDogdHJ1ZSB9LFxuICAgICAgICB9IDogdW5kZWZpbmVkLFxuICAgICAgICBwb2Q6IChvcHRpb25zLnRvbGVyYXRpb25zPy5sZW5ndGggfHwgb3B0aW9ucy5ub2RlU2VsZWN0b3IpID8ge1xuICAgICAgICAgIHRvbGVyYXRpb25zOiBvcHRpb25zLnRvbGVyYXRpb25zPy5tYXAodCA9PiAoe1xuICAgICAgICAgICAga2V5OiB0LmtleSxcbiAgICAgICAgICAgIG9wZXJhdG9yOiB0Lm9wZXJhdG9yLFxuICAgICAgICAgICAgdmFsdWU6IHQudmFsdWUsXG4gICAgICAgICAgICBlZmZlY3Q6IHQuZWZmZWN0LFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgICBub2RlU2VsZWN0b3I6IG9wdGlvbnMubm9kZVNlbGVjdG9yLFxuICAgICAgICB9IDogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIFRoZSBvcGVyYXRvciBjcmVhdGVzIGEgc2VydmljZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgdGhlIFZpbnlsQ2FjaGUgcmVzb3VyY2VcbiAgICB0aGlzLnZpbnlsQ2FjaGVTZXJ2aWNlTmFtZSA9IE5hbWVzLnRvTGFiZWxWYWx1ZSh2aW55bENhY2hlKTtcbiAgfVxufVxuIl19
|
|
182
|
+
PloneVinylCache[_a] = { fqn: "@bluedynamics/cdk8s-plone.PloneVinylCache", version: "0.1.31" };
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlueWxjYWNoZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92aW55bGNhY2hlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3QixpQ0FBOEI7QUFDOUIsMkNBQXVDO0FBQ3ZDLDJFQU95QztBQTBUekM7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFhLGVBQWdCLFNBQVEsc0JBQVM7SUFPNUMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxPQUErQjtRQUN2RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDO1FBQ2xELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDO1FBRS9DLDZCQUE2QjtRQUM3QixNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQztRQUNoRCxJQUFJLFlBQXdDLENBQUM7UUFDN0MsUUFBUSxXQUFXLEVBQUUsQ0FBQztZQUNwQixLQUFLLGFBQWE7Z0JBQ2hCLFlBQVksR0FBRyxrREFBMEIsQ0FBQyxzQkFBc0IsQ0FBQztnQkFDakUsTUFBTTtZQUNSLEtBQUssUUFBUTtnQkFDWCxZQUFZLEdBQUcsa0RBQTBCLENBQUMsTUFBTSxDQUFDO2dCQUNqRCxNQUFNO1lBQ1IsS0FBSyxNQUFNO2dCQUNULFlBQVksR0FBRyxrREFBMEIsQ0FBQyxJQUFJLENBQUM7Z0JBQy9DLE1BQU07WUFDUjtnQkFDRSxZQUFZLEdBQUcsa0RBQTBCLENBQUMsS0FBSyxDQUFDO1FBQ3BELENBQUM7UUFFRCxxRkFBcUY7UUFDckYsMkVBQTJFO1FBQzNFLElBQUksU0FLUyxDQUFDO1FBQ2QsSUFBSSxZQUFZLEtBQUssa0RB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QyxDQUFDO3dCQUMxQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUc7d0JBQ1YsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRO3dCQUNwQixLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUs7d0JBQ2QsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNO3FCQUNqQixDQUFDLENBQUM7b0JBQ0gsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUFZO2lCQUNuQyxDQUFDLENBQUMsQ0FBQyxTQUFTO2FBQ2Q7U0FDRixDQUFDLENBQUM7UUFFSCwrRUFBK0U7UUFDL0UsSUFBSSxDQUFDLHFCQUFxQixHQUFHLGFBQUssQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDOUQsQ0FBQzs7QUFwTEgsMENBcUxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IE5hbWVzIH0gZnJvbSAnY2RrOHMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQge1xuICBWaW55bENhY2hlLFxuICBWaW55bENhY2hlU3BlY0RpcmVjdG9yU2hhcmRCeSxcbiAgVmlueWxDYWNoZVNwZWNEaXJlY3RvclNoYXJkSGVhbHRoeSxcbiAgVmlueWxDYWNoZVNwZWNEaXJlY3RvclR5cGUsXG4gIFZpbnlsQ2FjaGVTcGVjUmVzb3VyY2VzTGltaXRzLFxuICBWaW55bENhY2hlU3BlY1Jlc291cmNlc1JlcXVlc3RzLFxufSBmcm9tICcuL2ltcG9ydHMvdmlueWwuYmx1ZWR5bmFtaWNzLmV1JztcbmltcG9ydCB7IFBsb25lIH0gZnJvbSAnLi9wbG9uZSc7XG5cbi8qKlxuICogSGVhbHRoIHByb2JlIGNvbmZpZ3VyYXRpb24gZm9yIGEgVmlueWxDYWNoZSBiYWNrZW5kLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZpbnlsQ2FjaGVCYWNrZW5kUHJvYmUge1xuICAvKipcbiAgICogVVJMIHRvIHByb2JlLlxuICAgKiBAZGVmYXVsdCAnLydcbiAgICovXG4gIHJlYWRvbmx5IHVybD86IHN0cmluZztcblxuICAvKipcbiAgICogSG93IG9mdGVuIHRvIHByb2JlIHRoZSBiYWNrZW5kLlxuICAgKiBAZGVmYXVsdCAnNXMnXG4gICAqL1xuICByZWFkb25seSBpbnRlcnZhbD86IHN0cmluZztcblxuICAvKipcbiAgICogTWF4aW11bSB0aW1lIHRvIHdhaXQgZm9yIGEgcHJvYmUgcmVzcG9uc2UuXG4gICAqIEBkZWZhdWx0ICcycydcbiAgICovXG4gIHJlYWRvbmx5IHRpbWVvdXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiBtb3N0IHJlY2VudCBwcm9iZXMgdG8gY29uc2lkZXIuXG4gICAqIEBkZWZhdWx0IDEwXG4gICAqL1xuICByZWFkb25seSB3aW5kb3c/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1pbmltdW0gc3VjY2Vzc2Z1bCBwcm9iZXMgd2l0aGluIHdpbmRvdyBmb3IgaGVhbHRoeSBzdGF0dXMuXG4gICAqIEBkZWZhdWx0IDhcbiAgICovXG4gIHJlYWRvbmx5IHRocmVzaG9sZD86IG51bWJlcjtcblxuICAvKipcbiAgICogRXhwZWN0ZWQgSFRUUCByZXNwb25zZSBzdGF0dXMgY29kZS5cbiAgICogQGRlZmF1bHQgMjAwXG4gICAqL1xuICByZWFkb25seSBleHBlY3RlZFJlc3BvbnNlPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIEFuIGFkZGl0aW9uYWwgYmFja2VuZCBmb3IgdGhlIFZpbnlsQ2FjaGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmlueWxDYWNoZUJhY2tlbmQge1xuICAvKipcbiAgICogVkNMIGlkZW50aWZpZXIgZm9yIHRoaXMgYmFja2VuZC4gTXVzdCBtYXRjaCBeW2EtekEtWl1bYS16QS1aMC05X10qJC5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogS3ViZXJuZXRlcyBTZXJ2aWNlIG5hbWUgdG8gdXNlIGFzIGJhY2tlbmQuXG4gICAqL1xuICByZWFkb25seSBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQb3J0IHRvIHVzZSBmb3IgdGhpcyBiYWNrZW5kLlxuICAgKi9cbiAgcmVhZG9ubHkgcG9ydDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBIZWFsdGggcHJvYmUgY29uZmlndXJhdGlvbi5cbiAgICogQGRlZmF1bHQgLSBubyBwcm9iZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJvYmU/OiBWaW55bENhY2hlQmFja2VuZFByb2JlO1xuXG4gIC8qKlxuICAgKiBSZWxhdGl2ZSB3ZWlnaHQgZm9yIHRoZSBkaXJlY3Rvci4gMCBtZWFucyBzdGFuZGJ5LlxuICAgKiBAZGVmYXVsdCAtIG9wZXJhdG9yIGRlZmF1bHRcbiAgICovXG4gIHJlYWRvbmx5IHdlaWdodD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBIEt1YmVybmV0ZXMgdG9sZXJhdGlvbiBmb3IgdGhlIFZhcm5pc2ggcG9kcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWaW55bENhY2hlVG9sZXJhdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgdGFpbnQga2V5IHRvIHRvbGVyYXRlLlxuICAgKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBvcGVyYXRvciAoRXF1YWwgb3IgRXhpc3RzKS5cbiAgICogQGRlZmF1bHQgJ0VxdWFsJ1xuICAgKi9cbiAgcmVhZG9ubHkgb3BlcmF0b3I/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWludCB2YWx1ZSB0byBtYXRjaCAod2hlbiBvcGVyYXRvciBpcyBFcXVhbCkuXG4gICAqIEBkZWZhdWx0IC0gbm8gdmFsdWVcbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFpbnQgZWZmZWN0IHRvIHRvbGVyYXRlIChOb1NjaGVkdWxlLCBQcmVmZXJOb1NjaGVkdWxlLCBOb0V4ZWN1dGUpLlxuICAgKiBAZGVmYXVsdCAtIHRvbGVyYXRlIGFsbCBlZmZlY3RzXG4gICAqL1xuICByZWFkb25seSBlZmZlY3Q/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBQbG9uZVZpbnlsQ2FjaGUgKGNsb3VkLXZpbnlsIG9wZXJhdG9yKS5cbiAqXG4gKiBDcmVhdGVzIGEgVmlueWxDYWNoZSBjdXN0b20gcmVzb3VyY2UgdGhhdCB0aGUgY2xvdWQtdmlueWwgb3BlcmF0b3JcbiAqIHJlY29uY2lsZXMgaW50byBhIFZhcm5pc2ggQ2FjaGUgY2x1c3RlciB3aXRoIGFnZW50LWJhc2VkIFZDTCBkZWxpdmVyeS5cbiAqXG4gKiBSZXF1aXJlcyB0aGUgY2xvdWQtdmlueWwgb3BlcmF0b3IgdG8gYmUgaW5zdGFsbGVkIGluIHRoZSBjbHVzdGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsb25lVmlueWxDYWNoZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIFBsb25lIGNvbnN0cnVjdCB0byBhdHRhY2ggdGhlIGNhY2hlIHRvLlxuICAgKiBCYWNrZW5kcyBhcmUgYXV0by1jb25maWd1cmVkIGZyb20gdGhlIFBsb25lIHNlcnZpY2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgcGxvbmU6IFBsb25lO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGJhY2tlbmRzIHRvIGFkZCBhZnRlciB0aGUgYXV0by1nZW5lcmF0ZWQgUGxvbmUgYmFja2VuZHMuXG4gICAqIFVzZXMgdGhlIHNhbWUgYmFja2VuZCB0eXBlIHN0cnVjdHVyZSBhcyB0aGUgVmlueWxDYWNoZSBDUkQuXG4gICAqIEBkZWZhdWx0IC0gbm8gZXh0cmEgYmFja2VuZHNcbiAgICovXG4gIHJlYWRvbmx5IGV4dHJhQmFja2VuZHM/OiBWaW55bENhY2hlQmFja2VuZFtdO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgVmFybmlzaCBwb2QgcmVwbGljYXMuXG4gICAqIEBkZWZhdWx0IDJcbiAgICovXG4gIHJlYWRvbmx5IHJlcGxpY2FzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDUFUgcmVxdWVzdCBmb3IgVmFybmlzaCBwb2RzLlxuICAgKiBAZGVmYXVsdCAnMTAwbSdcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVlc3RDcHU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE1lbW9yeSByZXF1ZXN0IGZvciBWYXJuaXNoIHBvZHMuXG4gICAqIEBkZWZhdWx0ICcyNTZNaSdcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVlc3RNZW1vcnk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENQVSBsaW1pdCBmb3IgVmFybmlzaCBwb2RzLlxuICAgKiBAZGVmYXVsdCAnNTAwbSdcbiAgICovXG4gIHJlYWRvbmx5IGxpbWl0Q3B1Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNZW1vcnkgbGltaXQgZm9yIFZhcm5pc2ggcG9kcy5cbiAgICogQGRlZmF1bHQgJzUxMk1pJ1xuICAgKi9cbiAgcmVhZG9ubHkgbGltaXRNZW1vcnk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERpcmVjdG9yIHR5cGUgZm9yIGxvYWQgZGlzdHJpYnV0aW9uLlxuICAgKiBAZGVmYXVsdCAnc2hhcmQnXG4gICAqL1xuICByZWFkb25seSBkaXJlY3Rvcj86IHN0cmluZztcblxuICAvKipcbiAgICogU2hhcmQgZGlyZWN0b3I6IHdoYXQgdmFsdWUgaXMgaGFzaGVkIGZvciBzaGFyZCBzZWxlY3Rpb24uXG4gICAqIFwiSEFTSFwiIHVzZXMgdGhlIFZhcm5pc2ggaGFzaCAoZGVmYXVsdCk7IFwiVVJMXCIgdXNlcyB0aGUgcmVxdWVzdCBVUkwuXG4gICAqIE9ubHkgYXBwbGllZCB3aGVuIGRpcmVjdG9yIGlzIFwic2hhcmRcIi5cbiAgICogUmVxdWlyZXMgY2xvdWQtdmlueWwgb3BlcmF0b3IgPj0gMC40LjIuXG4gICAqIEBkZWZhdWx0IC0gb3BlcmF0b3IgZGVmYXVsdCAoXCJIQVNIXCIpXG4gICAqL1xuICByZWFkb25seSBzaGFyZEJ5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTaGFyZCBkaXJlY3Rvcjogd2hpY2ggYmFja2VuZHMgdGhlIGRpcmVjdG9yIGNvbnNpZGVycyB3aGVuIHNlbGVjdGluZyBhIHNoYXJkLlxuICAgKiBcIkNIT1NFTlwiIChkZWZhdWx0KSBvbmx5IGNvbnNpZGVycyB0aGUgY2hvc2VuIGJhY2tlbmQgaGVhbHRoeTsgXCJBTExcIiByZXF1aXJlcyBhbGxcbiAgICogYmFja2VuZHMgdG8gYmUgaGVhbHRoeS5cbiAgICogT25seSBhcHBsaWVkIHdoZW4gZGlyZWN0b3IgaXMgXCJzaGFyZFwiLlxuICAgKiBSZXF1aXJlcyBjbG91ZC12aW55bCBvcGVyYXRvciA+PSAwLjQuMi5cbiAgICogQGRlZmF1bHQgLSBvcGVyYXRvciBkZWZhdWx0IChcIkNIT1NFTlwiKVxuICAgKi9cbiAgcmVhZG9ubHkgc2hhcmRIZWFsdGh5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTaGFyZCBkaXJlY3RvcjogdGltZSBhZnRlciBhZGRpbmcgYSBiYWNrZW5kIGJlZm9yZSBpdCByZWNlaXZlcyBpdHMgZnVsbCBzaGFyZSBvZlxuICAgKiB0cmFmZmljLCBwcmV2ZW50aW5nIHRodW5kZXJpbmctaGVyZC5cbiAgICogT25seSBhcHBsaWVkIHdoZW4gZGlyZWN0b3IgaXMgXCJzaGFyZFwiLlxuICAgKiBAZGVmYXVsdCAtIG9wZXJhdG9yIGRlZmF1bHQgKFwiMzBzXCIpXG4gICAqL1xuICByZWFkb25seSBzaGFyZFJhbXB1cD86IHN0cmluZztcblxuICAvKipcbiAgICogU2hhcmQgZGlyZWN0b3I6IG51bWJlciBvZiBLZXRhbWEgcmVwbGljYXMgcGVyIGJhY2tlbmQgaW4gdGhlIGhhc2ggcmluZy5cbiAgICogT25seSBhcHBsaWVkIHdoZW4gZGlyZWN0b3IgaXMgXCJzaGFyZFwiLlxuICAgKiBAZGVmYXVsdCAtIG9wZXJhdG9yIGRlZmF1bHQgKDY3KVxuICAgKi9cbiAgcmVhZG9ubHkgc2hhcmRSZXBsaWNhcz86IG51bWJlcjtcblxuICAvKipcbiAgICogQ3VzdG9tIFZDTCBzbmlwcGV0IGZvciB2Y2xfcmVjdiBzdWJyb3V0aW5lLlxuICAgKiBSZXBsYWNlcyB0aGUgZGVmYXVsdCBQbG9uZSByZWN2IHNuaXBwZXQuXG4gICAqIEBkZWZhdWx0IC0gdXNlcyBidWlsdC1pbiBwbG9uZS12aW55bC1yZWN2LnZjbFxuICAgKi9cbiAgcmVhZG9ubHkgdmNsUmVjdlNuaXBwZXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBWQ0wgc25pcHBldCBmb3IgdmNsX2JhY2tlbmRfcmVzcG9uc2Ugc3Vicm91dGluZS5cbiAgICogUmVwbGFjZXMgdGhlIGRlZmF1bHQgUGxvbmUgYmFja2VuZF9yZXNwb25zZSBzbmlwcGV0LlxuICAgKiBAZGVmYXVsdCAtIHVzZXMgYnVpbHQtaW4gcGxvbmUtdmlueWwtYmFja2VuZC1yZXNwb25zZS52Y2xcbiAgICovXG4gIHJlYWRvbmx5IHZjbEJhY2tlbmRSZXNwb25zZVNuaXBwZXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBjYWNoZSBpbnZhbGlkYXRpb24gKFBVUkdFLCBCQU4sIHhrZXkpLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBpbnZhbGlkYXRpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgUHJvbWV0aGV1cyBtb25pdG9yaW5nIChtZXRyaWNzICsgU2VydmljZU1vbml0b3IpLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgbW9uaXRvcmluZz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENvbnRhaW5lciBpbWFnZSBmb3IgdGhlIFZhcm5pc2ggcG9kcy5cbiAgICogQGRlZmF1bHQgJ3Zhcm5pc2g6Ny42J1xuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRvbGVyYXRpb25zIGZvciB0aGUgVmFybmlzaCBwb2RzLlxuICAgKiBAZGVmYXVsdCAtIG5vIHRvbGVyYXRpb25zXG4gICAqL1xuICByZWFkb25seSB0b2xlcmF0aW9ucz86IFZpbnlsQ2FjaGVUb2xlcmF0aW9uW107XG5cbiAgLyoqXG4gICAqIE5vZGUgc2VsZWN0b3IgbGFiZWxzIGZvciB0aGUgVmFybmlzaCBwb2RzLlxuICAgKiBDb25zdHJhaW5zIHBvZHMgdG8gbm9kZXMgbWF0Y2hpbmcgYWxsIHNwZWNpZmllZCBsYWJlbHMuXG4gICAqIEBkZWZhdWx0IC0gbm8gbm9kZSBzZWxlY3RvclxuICAgKi9cbiAgcmVhZG9ubHkgbm9kZVNlbGVjdG9yPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogQ3VzdG9tIFZDTCBzbmlwcGV0IGZvciB2Y2xfZGVsaXZlciBzdWJyb3V0aW5lLlxuICAgKiBAZGVmYXVsdCAtIG5vIHNuaXBwZXRcbiAgICovXG4gIHJlYWRvbmx5IHZjbERlbGl2ZXJTbmlwcGV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gVkNMIHNuaXBwZXQgZm9yIHZjbF9oaXQgc3Vicm91dGluZS5cbiAgICogQGRlZmF1bHQgLSBubyBzbmlwcGV0XG4gICAqL1xuICByZWFkb25seSB2Y2xIaXRTbmlwcGV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gVkNMIHNuaXBwZXQgZm9yIHZjbF9taXNzIHN1YnJvdXRpbmUuXG4gICAqIEBkZWZhdWx0IC0gbm8gc25pcHBldFxuICAgKi9cbiAgcmVhZG9ubHkgdmNsTWlzc1NuaXBwZXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBWQ0wgc25pcHBldCBmb3IgdmNsX3Bhc3Mgc3Vicm91dGluZS5cbiAgICogQGRlZmF1bHQgLSBubyBzbmlwcGV0XG4gICAqL1xuICByZWFkb25seSB2Y2xQYXNzU25pcHBldD86IHN0cmluZztcblxuICAvKipcbiAgICogQ3VzdG9tIFZDTCBzbmlwcGV0IGZvciB2Y2xfcGlwZSBzdWJyb3V0aW5lLlxuICAgKiBAZGVmYXVsdCAtIG5vIHNuaXBwZXRcbiAgICovXG4gIHJlYWRvbmx5IHZjbFBpcGVTbmlwcGV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gVkNMIHNuaXBwZXQgZm9yIHZjbF9zeW50aCBzdWJyb3V0aW5lLlxuICAgKiBAZGVmYXVsdCAtIG5vIHNuaXBwZXRcbiAgICovXG4gIHJlYWRvbmx5IHZjbFN5bnRoU25pcHBldD86IHN0cmluZztcblxuICAvKipcbiAgICogQ3VzdG9tIFZDTCBzbmlwcGV0IGZvciB2Y2xfcHVyZ2Ugc3Vicm91dGluZS5cbiAgICogQGRlZmF1bHQgLSBubyBzbmlwcGV0XG4gICAqL1xuICByZWFkb25seSB2Y2xQdXJnZVNuaXBwZXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBWQ0wgc25pcHBldCBmb3IgdmNsX2hhc2ggc3Vicm91dGluZS5cbiAgICogQGRlZmF1bHQgLSBubyBzbmlwcGV0XG4gICAqL1xuICByZWFkb25seSB2Y2xIYXNoU25pcHBldD86IHN0cmluZztcblxuICAvKipcbiAgICogQ3VzdG9tIFZDTCBzbmlwcGV0IGZvciB2Y2xfaW5pdCBzdWJyb3V0aW5lLlxuICAgKiBAZGVmYXVsdCAtIG5vIHNuaXBwZXRcbiAgICovXG4gIHJlYWRvbmx5IHZjbEluaXRTbmlwcGV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gVkNMIHNuaXBwZXQgZm9yIHZjbF9maW5pIHN1YnJvdXRpbmUuXG4gICAqIEBkZWZhdWx0IC0gbm8gc25pcHBldFxuICAgKi9cbiAgcmVhZG9ubHkgdmNsRmluaVNuaXBwZXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBWQ0wgc25pcHBldCBmb3IgdmNsX2JhY2tlbmRfZmV0Y2ggc3Vicm91dGluZS5cbiAgICogQGRlZmF1bHQgLSBubyBzbmlwcGV0XG4gICAqL1xuICByZWFkb25seSB2Y2xCYWNrZW5kRmV0Y2hTbmlwcGV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gVkNMIHNuaXBwZXQgZm9yIHZjbF9iYWNrZW5kX2Vycm9yIHN1YnJvdXRpbmUuXG4gICAqIEBkZWZhdWx0IC0gbm8gc25pcHBldFxuICAgKi9cbiAgcmVhZG9ubHkgdmNsQmFja2VuZEVycm9yU25pcHBldD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQbG9uZVZpbnlsQ2FjaGUgY29uc3RydWN0IGZvciBkZXBsb3lpbmcgVmFybmlzaCBDYWNoZSB2aWEgY2xvdWQtdmlueWwgb3BlcmF0b3IuXG4gKlxuICogQ3JlYXRlcyBhIFZpbnlsQ2FjaGUgY3VzdG9tIHJlc291cmNlIHdpdGggUGxvbmUgYmFja2VuZC9mcm9udGVuZCBzZXJ2aWNlc1xuICogYXV0by1jb25maWd1cmVkIGFzIGJhY2tlbmRzLiBUaGUgY2xvdWQtdmlueWwgb3BlcmF0b3IgbWFuYWdlcyB0aGUgZnVsbFxuICogVmFybmlzaCBsaWZlY3ljbGUgaW5jbHVkaW5nIFZDTCBnZW5lcmF0aW9uLCBhZ2VudCBkZWxpdmVyeSwgYW5kIG1vbml0b3JpbmcuXG4gKlxuICogUmVxdWlyZXMgdGhlIGNsb3VkLXZpbnlsIG9wZXJhdG9yIHRvIGJlIGluc3RhbGxlZCBpbiB0aGUgY2x1c3Rlci5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgcGxvbmUgPSBuZXcgUGxvbmUoY2hhcnQsICdwbG9uZScpO1xuICogY29uc3QgY2FjaGUgPSBuZXcgUGxvbmVWaW55bENhY2hlKGNoYXJ0LCAnY2FjaGUnLCB7XG4gKiAgIHBsb25lOiBwbG9uZSxcbiAqICAgcmVwbGljYXM6IDIsXG4gKiB9KTtcbiAqIC8vIFVzZSBjYWNoZS52aW55bENhY2hlU2VydmljZU5hbWUgZm9yIEluZ3Jlc3NSb3V0ZVxuICovXG5leHBvcnQgY2xhc3MgUGxvbmVWaW55bENhY2hlIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIFZpbnlsQ2FjaGUgc2VydmljZSBjcmVhdGVkIGJ5IHRoZSBvcGVyYXRvci5cbiAgICogVXNlIHRoaXMgdG8gcmVmZXJlbmNlIHRoZSBjYWNoZSBzZXJ2aWNlIGZyb20gaW5ncmVzcyBvciBvdGhlciBjb25zdHJ1Y3RzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHZpbnlsQ2FjaGVTZXJ2aWNlTmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IFBsb25lVmlueWxDYWNoZU9wdGlvbnMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgcmVwbGljYXMgPSBvcHRpb25zLnJlcGxpY2FzID8/IDI7XG4gICAgY29uc3QgaW52YWxpZGF0aW9uID0gb3B0aW9ucy5pbnZhbGlkYXRpb24gPz8gdHJ1ZTtcbiAgICBjb25zdCBtb25pdG9yaW5nID0gb3B0aW9ucy5tb25pdG9yaW5nID8/IGZhbHNlO1xuXG4gICAgLy8gUmVzb2x2ZSBkaXJlY3RvciB0eXBlIGVudW1cbiAgICBjb25zdCBkaXJlY3RvclN0ciA9IG9wdGlvbnMuZGlyZWN0b3IgPz8gJ3NoYXJkJztcbiAgICBsZXQgZGlyZWN0b3JUeXBlOiBWaW55bENhY2hlU3BlY0RpcmVjdG9yVHlwZTtcbiAgICBzd2l0Y2ggKGRpcmVjdG9yU3RyKSB7XG4gICAgICBjYXNlICdyb3VuZF9yb2Jpbic6XG4gICAgICAgIGRpcmVjdG9yVHlwZSA9IFZpbnlsQ2FjaGVTcGVjRGlyZWN0b3JUeXBlLlJPVU5EX1VOREVSU0NPUkVfUk9CSU47XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncmFuZG9tJzpcbiAgICAgICAgZGlyZWN0b3JUeXBlID0gVmlueWxDYWNoZVNwZWNEaXJlY3RvclR5cGUuUkFORE9NO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2hhc2gnOlxuICAgICAgICBkaXJlY3RvclR5cGUgPSBWaW55bENhY2hlU3BlY0RpcmVjdG9yVHlwZS5IQVNIO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGRpcmVjdG9yVHlwZSA9IFZpbnlsQ2FjaGVTcGVjRGlyZWN0b3JUeXBlLlNIQVJEO1xuICAgIH1cblxuICAgIC8vIFNoYXJkIGRpcmVjdG9yIHR1bmluZzogb25seSBob25vcmVkIGJ5IHRoZSBvcGVyYXRvciB3aGVuIGRpcmVjdG9yIHR5cGUgaXMgXCJzaGFyZFwiLlxuICAgIC8vIEVtaXQgdGhlIHNoYXJkIGJsb2NrIG9ubHkgZm9yIHNoYXJkIGRpcmVjdG9ycyBzbyBtYW5pZmVzdHMgc3RheSBtaW5pbWFsLlxuICAgIGxldCBzaGFyZFNwZWM6IHtcbiAgICAgIGJ5PzogVmlueWxDYWNoZVNwZWNEaXJlY3RvclNoYXJkQnk7XG4gICAgICBoZWFsdGh5PzogVmlueWxDYWNoZVNwZWNEaXJlY3RvclNoYXJkSGVhbHRoeTtcbiAgICAgIHJhbXB1cD86IHN0cmluZztcbiAgICAgIHJlcGxpY2FzPzogbnVtYmVyO1xuICAgIH0gfCB1bmRlZmluZWQ7XG4gICAgaWYgKGRpcmVjdG9yVHlwZSA9PT0gVmlueWxDYWNoZVNwZWNEaXJlY3RvclR5cGUuU0hBUkQgJiZcbiAgICAgICAgKG9wdGlvbnMuc2hhcmRCeSB8fCBvcHRpb25zLnNoYXJkSGVhbHRoeSB8fCBvcHRpb25zLnNoYXJkUmFtcHVwIHx8IG9wdGlvbnMuc2hhcmRSZXBsaWNhcyAhPT0gdW5kZWZpbmVkKSkge1xuICAgICAgbGV0IHNoYXJkQnk6IFZpbnlsQ2FjaGVTcGVjRGlyZWN0b3JTaGFyZEJ5IHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKG9wdGlvbnMuc2hhcmRCeSA9PT0gJ1VSTCcpIHNoYXJkQnkgPSBWaW55bENhY2hlU3BlY0RpcmVjdG9yU2hhcmRCeS5VUkw7XG4gICAgICBlbHNlIGlmIChvcHRpb25zLnNoYXJkQnkgPT09ICdIQVNIJykgc2hhcmRCeSA9IFZpbnlsQ2FjaGVTcGVjRGlyZWN0b3JTaGFyZEJ5LkhBU0g7XG5cbiAgICAgIGxldCBzaGFyZEhlYWx0aHk6IFZpbnlsQ2FjaGVTcGVjRGlyZWN0b3JTaGFyZEhlYWx0aHkgfCB1bmRlZmluZWQ7XG4gICAgICBpZiAob3B0aW9ucy5zaGFyZEhlYWx0aHkgPT09ICdBTEwnKSBzaGFyZEhlYWx0aHkgPSBWaW55bENhY2hlU3BlY0RpcmVjdG9yU2hhcmRIZWFsdGh5LkFMTDtcbiAgICAgIGVsc2UgaWYgKG9wdGlvbnMuc2hhcmRIZWFsdGh5ID09PSAnQ0hPU0VOJykgc2hhcmRIZWFsdGh5ID0gVmlueWxDYWNoZVNwZWNEaXJlY3RvclNoYXJkSGVhbHRoeS5DSE9TRU47XG5cbiAgICAgIHNoYXJkU3BlYyA9IHtcbiAgICAgICAgYnk6IHNoYXJkQnksXG4gICAgICAgIGhlYWx0aHk6IHNoYXJkSGVhbHRoeSxcbiAgICAgICAgcmFtcHVwOiBvcHRpb25zLnNoYXJkUmFtcHVwLFxuICAgICAgICByZXBsaWNhczogb3B0aW9ucy5zaGFyZFJlcGxpY2FzLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBMb2FkIGRlZmF1bHQgVkNMIHNuaXBwZXRzXG4gICAgY29uc3QgdmNsUmVjdiA9IG9wdGlvbnMudmNsUmVjdlNuaXBwZXQgPz9cbiAgICAgIGZzLnJlYWRGaWxlU3luYyhwYXRoLmpvaW4oX19kaXJuYW1lLCAnY29uZmlnJywgJ3Bsb25lLXZpbnlsLXJlY3YudmNsJyksICd1dGY4Jyk7XG4gICAgY29uc3QgdmNsQmFja2VuZFJlc3BvbnNlID0gb3B0aW9ucy52Y2xCYWNrZW5kUmVzcG9uc2VTbmlwcGV0ID8/XG4gICAgICBmcy5yZWFkRmlsZVN5bmMocGF0aC5qb2luKF9fZGlybmFtZSwgJ2NvbmZpZycsICdwbG9uZS12aW55bC1iYWNrZW5kLXJlc3BvbnNlLnZjbCcpLCAndXRmOCcpO1xuXG4gICAgLy8gQnVpbGQgYmFja2VuZHMgZnJvbSBQbG9uZSBzZXJ2aWNlc1xuICAgIGNvbnN0IGJhY2tlbmRzOiBBcnJheTx7XG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICBzZXJ2aWNlUmVmOiB7IG5hbWU6IHN0cmluZyB9O1xuICAgICAgcG9ydDogbnVtYmVyO1xuICAgICAgcHJvYmU/OiB7XG4gICAgICAgIHVybDogc3RyaW5nO1xuICAgICAgICBpbnRlcnZhbDogc3RyaW5nO1xuICAgICAgICB0aW1lb3V0OiBzdHJpbmc7XG4gICAgICAgIHdpbmRvdzogbnVtYmVyO1xuICAgICAgICB0aHJlc2hvbGQ6IG51bWJlcjtcbiAgICAgIH07XG4gICAgICB3ZWlnaHQ/OiBudW1iZXI7XG4gICAgfT4gPSBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdwbG9uZV9iYWNrZW5kJyxcbiAgICAgICAgc2VydmljZVJlZjogeyBuYW1lOiBvcHRpb25zLnBsb25lLmJhY2tlbmRTZXJ2aWNlTmFtZSB9LFxuICAgICAgICBwb3J0OiA4MDgwLFxuICAgICAgICBwcm9iZToge1xuICAgICAgICAgIHVybDogJy9vaycsXG4gICAgICAgICAgaW50ZXJ2YWw6ICc1cycsXG4gICAgICAgICAgdGltZW91dDogJzJzJyxcbiAgICAgICAgICB3aW5kb3c6IDEwLFxuICAgICAgICAgIHRocmVzaG9sZDogOCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGlmIChvcHRpb25zLnBsb25lLmZyb250ZW5kU2VydmljZU5hbWUpIHtcbiAgICAgIGJhY2tlbmRzLnB1c2goe1xuICAgICAgICBuYW1lOiAncGxvbmVfZnJvbnRlbmQnLFxuICAgICAgICBzZXJ2aWNlUmVmOiB7IG5hbWU6IG9wdGlvbnMucGxvbmUuZnJvbnRlbmRTZXJ2aWNlTmFtZSB9LFxuICAgICAgICBwb3J0OiAzMDAwLFxuICAgICAgICBwcm9iZToge1xuICAgICAgICAgIHVybDogJy8nLFxuICAgICAgICAgIGludGVydmFsOiAnNXMnLFxuICAgICAgICAgIHRpbWVvdXQ6ICcycycsXG4gICAgICAgICAgd2luZG93OiAxMCxcbiAgICAgICAgICB0aHJlc2hvbGQ6IDgsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5leHRyYUJhY2tlbmRzKSB7XG4gICAgICBmb3IgKGNvbnN0IGViIG9mIG9wdGlvbnMuZXh0cmFCYWNrZW5kcykge1xuICAgICAgICBiYWNrZW5kcy5wdXNoKHtcbiAgICAgICAgICBuYW1lOiBlYi5uYW1lLFxuICAgICAgICAgIHNlcnZpY2VSZWY6IHsgbmFtZTogZWIuc2VydmljZU5hbWUgfSxcbiAgICAgICAgICBwb3J0OiBlYi5wb3J0LFxuICAgICAgICAgIHByb2JlOiBlYi5wcm9iZSA/IHtcbiAgICAgICAgICAgIHVybDogZWIucHJvYmUudXJsID8/ICcvJyxcbiAgICAgICAgICAgIGludGVydmFsOiBlYi5wcm9iZS5pbnRlcnZhbCA/PyAnNXMnLFxuICAgICAgICAgICAgdGltZW91dDogZWIucHJvYmUudGltZW91dCA/PyAnMnMnLFxuICAgICAgICAgICAgd2luZG93OiBlYi5wcm9iZS53aW5kb3cgPz8gMTAsXG4gICAgICAgICAgICB0aHJlc2hvbGQ6IGViLnByb2JlLnRocmVzaG9sZCA/PyA4LFxuICAgICAgICAgIH0gOiB1bmRlZmluZWQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHZpbnlsQ2FjaGUgPSBuZXcgVmlueWxDYWNoZSh0aGlzLCAndmlueWxjYWNoZScsIHtcbiAgICAgIHNwZWM6IHtcbiAgICAgICAgcmVwbGljYXMsXG4gICAgICAgIGltYWdlOiBvcHRpb25zLmltYWdlID8/ICd2YXJuaXNoOjcuNicsXG4gICAgICAgIGJhY2tlbmRzLFxuICAgICAgICBkaXJlY3RvcjogeyB0eXBlOiBkaXJlY3RvclR5cGUsIHNoYXJkOiBzaGFyZFNwZWMgfSxcbiAgICAgICAgdmNsOiB7XG4gICAgICAgICAgc25pcHBldHM6IHtcbiAgICAgICAgICAgIHZjbFJlY3Y6IHZjbFJlY3YsXG4gICAgICAgICAgICB2Y2xCYWNrZW5kUmVzcG9uc2U6IHZjbEJhY2tlbmRSZXNwb25zZSxcbiAgICAgICAgICAgIHZjbERlbGl2ZXI6IG9wdGlvbnMudmNsRGVsaXZlclNuaXBwZXQsXG4gICAgICAgICAgICB2Y2xIaXQ6IG9wdGlvbnMudmNsSGl0U25pcHBldCxcbiAgICAgICAgICAgIHZjbE1pc3M6IG9wdGlvbnMudmNsTWlzc1NuaXBwZXQsXG4gICAgICAgICAgICB2Y2xQYXNzOiBvcHRpb25zLnZjbFBhc3NTbmlwcGV0LFxuICAgICAgICAgICAgdmNsUGlwZTogb3B0aW9ucy52Y2xQaXBlU25pcHBldCxcbiAgICAgICAgICAgIHZjbFN5bnRoOiBvcHRpb25zLnZjbFN5bnRoU25pcHBldCxcbiAgICAgICAgICAgIHZjbFB1cmdlOiBvcHRpb25zLnZjbFB1cmdlU25pcHBldCxcbiAgICAgICAgICAgIHZjbEhhc2g6IG9wdGlvbnMudmNsSGFzaFNuaXBwZXQsXG4gICAgICAgICAgICB2Y2xJbml0OiBvcHRpb25zLnZjbEluaXRTbmlwcGV0LFxuICAgICAgICAgICAgdmNsRmluaTogb3B0aW9ucy52Y2xGaW5pU25pcHBldCxcbiAgICAgICAgICAgIHZjbEJhY2tlbmRGZXRjaDogb3B0aW9ucy52Y2xCYWNrZW5kRmV0Y2hTbmlwcGV0LFxuICAgICAgICAgICAgdmNsQmFja2VuZEVycm9yOiBvcHRpb25zLnZjbEJhY2tlbmRFcnJvclNuaXBwZXQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVzb3VyY2VzOiB7XG4gICAgICAgICAgcmVxdWVzdHM6IHtcbiAgICAgICAgICAgIGNwdTogVmlueWxDYWNoZVNwZWNSZXNvdXJjZXNSZXF1ZXN0cy5mcm9tU3RyaW5nKG9wdGlvbnMucmVxdWVzdENwdSA/PyAnMTAwbScpLFxuICAgICAgICAgICAgbWVtb3J5OiBWaW55bENhY2hlU3BlY1Jlc291cmNlc1JlcXVlc3RzLmZyb21TdHJpbmcob3B0aW9ucy5yZXF1ZXN0TWVtb3J5ID8/ICcyNTZNaScpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbGltaXRzOiB7XG4gICAgICAgICAgICBjcHU6IFZpbnlsQ2FjaGVTcGVjUmVzb3VyY2VzTGltaXRzLmZyb21TdHJpbmcob3B0aW9ucy5saW1pdENwdSA/PyAnNTAwbScpLFxuICAgICAgICAgICAgbWVtb3J5OiBWaW55bENhY2hlU3BlY1Jlc291cmNlc0xpbWl0cy5mcm9tU3RyaW5nKG9wdGlvbnMubGltaXRNZW1vcnkgPz8gJzUxMk1pJyksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgaW52YWxpZGF0aW9uOiBpbnZhbGlkYXRpb24gPyB7XG4gICAgICAgICAgcHVyZ2U6IHsgZW5hYmxlZDogdHJ1ZSB9LFxuICAgICAgICAgIGJhbjogeyBlbmFibGVkOiB0cnVlIH0sXG4gICAgICAgICAgeGtleTogeyBlbmFibGVkOiB0cnVlIH0sXG4gICAgICAgIH0gOiB1bmRlZmluZWQsXG4gICAgICAgIG1vbml0b3Jpbmc6IG1vbml0b3JpbmcgPyB7XG4gICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICBzZXJ2aWNlTW9uaXRvcjogeyBlbmFibGVkOiB0cnVlIH0sXG4gICAgICAgIH0gOiB1bmRlZmluZWQsXG4gICAgICAgIHBvZDogKG9wdGlvbnMudG9sZXJhdGlvbnM/Lmxlbmd0aCB8fCBvcHRpb25zLm5vZGVTZWxlY3RvcikgPyB7XG4gICAgICAgICAgdG9sZXJhdGlvbnM6IG9wdGlvbnMudG9sZXJhdGlvbnM/Lm1hcCh0ID0+ICh7XG4gICAgICAgICAgICBrZXk6IHQua2V5LFxuICAgICAgICAgICAgb3BlcmF0b3I6IHQub3BlcmF0b3IsXG4gICAgICAgICAgICB2YWx1ZTogdC52YWx1ZSxcbiAgICAgICAgICAgIGVmZmVjdDogdC5lZmZlY3QsXG4gICAgICAgICAgfSkpLFxuICAgICAgICAgIG5vZGVTZWxlY3Rvcjogb3B0aW9ucy5ub2RlU2VsZWN0b3IsXG4gICAgICAgIH0gOiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gVGhlIG9wZXJhdG9yIGNyZWF0ZXMgYSBzZXJ2aWNlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyB0aGUgVmlueWxDYWNoZSByZXNvdXJjZVxuICAgIHRoaXMudmlueWxDYWNoZVNlcnZpY2VOYW1lID0gTmFtZXMudG9MYWJlbFZhbHVlKHZpbnlsQ2FjaGUpO1xuICB9XG59XG4iXX0=
|