pagy 43.5.0 → 43.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cf667bda57559dfbdf5b61c66797962c27651ff785225813bfe8c7c216d27050
4
- data.tar.gz: 5544779e84daea44242fa2ca539bebf54c96583fba22ebfff2fe8ddc3ae8edbf
3
+ metadata.gz: 4decb966c9baaf86161eaf0b5b80534edc0d0adc44882d9cf4191366621bab7c
4
+ data.tar.gz: 61a4d0aed20236fba6ea1003a3795e8b4d2f294672b7ab498d1be9ffab18a104
5
5
  SHA512:
6
- metadata.gz: 5ab3242ae4d5a6e314f308798b7801a2479dbd7659cdb72289407d938670bdf645e574db1f5cff5b0278c3fe9075eb70b8342f46f35632106381f45199f67a9b
7
- data.tar.gz: 6965c52ed9ac883ad391f5fc0e93779a217e4169982d522d391f63753c5fca58af2142c29cbf3c8d4cf14fa803e76f8e4e7366157215382ebacd0f2390b18474
6
+ metadata.gz: b35d52154c762775d97d725fba02a9874dff5365be58fe3de519a84a02a731dccc4c022259aa050d06675d1e6efa1156ff3991164c58ab31421ad3d06f19c098
7
+ data.tar.gz: 5010b2054a7cbf29ba0b026b84e26fb9e17cd52c9ca0c4199f847b0bf8c7f3ed9b36291980125b6ace494af1d6f4bb0a4918f9492462233922fa43e858c41b03
data/apps/calendar.ru CHANGED
@@ -16,7 +16,7 @@
16
16
  # URL
17
17
  # http://127.0.0.1:8000
18
18
 
19
- VERSION = '43.5.0'
19
+ VERSION = '43.5.1'
20
20
 
21
21
  if VERSION != Pagy::VERSION
22
22
  Warning.warn("\n>>> WARNING! '#{File.basename(__FILE__)}-#{VERSION}' running with 'pagy-#{Pagy::VERSION}'! <<< \n\n")
data/apps/demo.ru CHANGED
@@ -19,7 +19,7 @@
19
19
  # URL
20
20
  # http://127.0.0.1:8000
21
21
 
22
- VERSION = '43.5.0'
22
+ VERSION = '43.5.1'
23
23
 
24
24
  if VERSION != Pagy::VERSION
25
25
  Warning.warn("\n>>> WARNING! '#{File.basename(__FILE__)}-#{VERSION}' running with 'pagy-#{Pagy::VERSION}'! <<< \n\n")
@@ -16,7 +16,7 @@
16
16
  # URL
17
17
  # http://127.0.0.1:8000
18
18
 
19
- VERSION = '43.5.0'
19
+ VERSION = '43.5.1'
20
20
 
21
21
  if VERSION != Pagy::VERSION
22
22
  Warning.warn("\n>>> WARNING! '#{File.basename(__FILE__)}-#{VERSION}' running with 'pagy-#{Pagy::VERSION}'! <<< \n\n")
data/apps/keynav.ru CHANGED
@@ -16,7 +16,7 @@
16
16
  # URL
17
17
  # http://127.0.0.1:8000
18
18
 
19
- VERSION = '43.5.0'
19
+ VERSION = '43.5.1'
20
20
 
21
21
  if VERSION != Pagy::VERSION
22
22
  Warning.warn("\n>>> WARNING! '#{File.basename(__FILE__)}-#{VERSION}' running with 'pagy-#{Pagy::VERSION}'! <<< \n\n")
data/apps/keyset.ru CHANGED
@@ -16,7 +16,7 @@
16
16
  # URL
17
17
  # http://127.0.0.1:8000
18
18
 
19
- VERSION = '43.5.0'
19
+ VERSION = '43.5.1'
20
20
 
21
21
  if VERSION != Pagy::VERSION
22
22
  Warning.warn("\n>>> WARNING! '#{File.basename(__FILE__)}-#{VERSION}' running with 'pagy-#{Pagy::VERSION}'! <<< \n\n")
@@ -16,7 +16,7 @@
16
16
  # URL
17
17
  # http://127.0.0.1:8000
18
18
 
19
- VERSION = '43.5.0'
19
+ VERSION = '43.5.1'
20
20
 
21
21
  if VERSION != Pagy::VERSION
22
22
  Warning.warn("\n>>> WARNING! '#{File.basename(__FILE__)}-#{VERSION}' running with 'pagy-#{Pagy::VERSION}'! <<< \n\n")
data/apps/rails.ru CHANGED
@@ -16,7 +16,7 @@
16
16
  # URL
17
17
  # http://127.0.0.1:8000
18
18
 
19
- VERSION = '43.5.0'
19
+ VERSION = '43.5.1'
20
20
 
21
21
  if VERSION != Pagy::VERSION
22
22
  Warning.warn("\n>>> WARNING! '#{File.basename(__FILE__)}-#{VERSION}' running with 'pagy-#{Pagy::VERSION}'! <<< \n\n")
data/apps/repro.ru CHANGED
@@ -16,7 +16,7 @@
16
16
  # URL
17
17
  # http://127.0.0.1:8000
18
18
 
19
- VERSION = '43.5.0'
19
+ VERSION = '43.5.1'
20
20
 
21
21
  if VERSION != Pagy::VERSION
22
22
  Warning.warn("\n>>> WARNING! '#{File.basename(__FILE__)}-#{VERSION}' running with 'pagy-#{Pagy::VERSION}'! <<< \n\n")
data/config/pagy.rb CHANGED
@@ -1,13 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Pagy initializer file (43.5.0)
3
+ # Pagy initializer file (43.5.1)
4
4
  # See https://ddnexus.github.io/pagy/toolbox/configuration/initializer/
5
5
 
6
6
 
7
7
  ############ Global Options ################################################################
8
8
  # See https://ddnexus.github.io/pagy/toolbox/configuration/options/ for details.
9
- # Add your global options below. They will be applied globally.
10
- # For example:
9
+ # Examples:
11
10
  #
12
11
  # Pagy::OPTIONS[:limit] = 10 # Limit the items per page
13
12
  # Pagy::OPTIONS[:max_limit] = 100 # The client is allowed to request a limit up to 100
@@ -15,41 +14,33 @@
15
14
 
16
15
  Pagy::OPTIONS.freeze
17
16
 
18
-
19
17
  ############ JS and CSS Resources ##########################################################
20
18
  # See https://ddnexus.github.io/pagy/resources/javascript/
21
- # and https://ddnexus.github.io/pagy/resources/stylesheets/ for more resources and details.
22
- # Copy and keep the resource files synced in the app. For example:
19
+ # and https://ddnexus.github.io/pagy/resources/stylesheets/ for details.
20
+ # Sync example:
23
21
  #
24
22
  # if Rails.env.development?
25
23
  # Pagy.sync(:javascript, Rails.root.join('app/javascript'), 'pagy.mjs')
26
24
  # Pagy.sync(:stylesheet, Rails.root.join('app/stylesheets'), 'pagy.css')
27
25
  # end
28
26
  #
29
- # As an alternative, use this config ONLY for apps with an asset pipeline
27
+ # Pipeline example:
30
28
  #
31
29
  # Rails.application.config.assets.paths << Pagy::ROOT.join(':javascripts')
32
30
  # Rails.application.config.assets.paths << Pagy::ROOT.join(':stylesheets')
33
31
 
34
-
35
32
  ############# Overriding Pagy::I18n Lookup #################################################
36
- # Refer to https://ddnexus.github.io/pagy/resources/i18n/ for details.
37
- # Override the I18n lookup by dropping your custom dictionary in some pagy dir.
33
+ # See https://ddnexus.github.io/pagy/resources/i18n/ for details.
38
34
  # Example for Rails:
39
35
  #
40
36
  # Pagy::I18n.pathnames << Rails.root.join('config/locales/pagy')
41
37
 
42
-
43
38
  ############# I18n Gem Translation #########################################################
44
39
  # See https://ddnexus.github.io/pagy/resources/i18n/ for details.
45
40
  #
46
41
  # Pagy.translate_with_the_slower_i18n_gem!
47
42
 
48
-
49
43
  ############# Calendar Localization for non-en locales ####################################
50
44
  # See https://ddnexus.github.io/pagy/toolbox/paginators/calendar#localization for details.
51
- # Add your desired locales to the list and uncomment the following line to enable them,
52
- # regardless of whether you use the I18n gem for translations or not, whether with
53
- # Rails or not.
54
45
  #
55
46
  # Pagy::Calendar.localize_with_rails_i18n_gem(*your_locales)
data/javascripts/pagy.js CHANGED
@@ -137,7 +137,7 @@ var pagy_default = (() => {
137
137
  });
138
138
  };
139
139
  return {
140
- version: "43.5.0",
140
+ version: "43.5.1",
141
141
  init(arg) {
142
142
  const target = arg instanceof HTMLElement ? arg : document, elements = target.querySelectorAll("[data-pagy]");
143
143
  for (const element of elements) {
@@ -164,5 +164,5 @@ var pagy_default = (() => {
164
164
  // pagy-shim.ts
165
165
  window.Pagy = pagy_default;
166
166
 
167
- //# debugId=90063023AE043ED164756E2164756E21
168
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsicGFneS50cyIsICJwYWd5LXNoaW0udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbCiAgICAiaW50ZXJmYWNlIFN5bmNEYXRhIHtcbiAgZnJvbT86IG51bWJlclxuICB0bz8gIDogbnVtYmVyXG4gIGtleSAgOiBzdHJpbmdcbiAgc3RyPyA6IHN0cmluZ1xufVxudHlwZSBJbml0QXJncyA9IFtcImtcIiwgIEtleW5hdkFyZ3NdIHwgICAgICAgICAgLy8gc2VyaWVzX25hdltfanNdIHdpdGgga2V5bmF2IGluc3RhbmNlXG4gICAgICAgICAgICAgICAgW1wic25qXCIsIFNlcmllc05hdkpzQXJnc10gfCAgICAvLyBzZXJpZXNfbmF2X2pzXG4gICAgICAgICAgICAgICAgW1wiaW5qXCIsIElucHV0TmF2SnNBcmdzXSB8ICAgICAvLyBpbnB1dF9uYXZfanNcbiAgICAgICAgICAgICAgICBbXCJsdGpcIiwgTGltaXRUYWdKc0FyZ3NdOyAgICAgIC8vIGxpbWl0X3RhZ19qc1xudHlwZSBBdWdtZW50S2V5bmF2ID0gKG5hdjpIVE1MRWxlbWVudCwga2V5bmF2QXJnczpLZXluYXZBcmdzKSA9PiBQcm9taXNlPCgocGFnZTogc3RyaW5nKSA9PiBzdHJpbmcpPjtcbnR5cGUgS2V5bmF2QXJncyA9IHJlYWRvbmx5IFtzdG9yYWdlS2V5IDogc3RyaW5nIHwgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb290S2V5ICAgIDogc3RyaW5nIHwgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlS2V5ICAgIDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgICAgICAgOiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BsaWNlQXJncz86IFNwbGljZUFyZ3NdO1xudHlwZSBTcGxpY2VBcmdzID0gcmVhZG9ubHkgW3N0YXJ0ICAgICAgOiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlQ291bnQ6IG51bWJlciwgICAgIC8vIGl0IHdvdWxkIGJlIG9wdGlvbmFsLCBidXQgdHMgY29tcGxhaW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbXM6ICAgIEN1dG9mZltdXTtcbnR5cGUgQ3V0b2ZmID0gcmVhZG9ubHkgKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4pW107XG50eXBlIEF1Z21lbnRlZFBhZ2UgPSBbYnJvd3NlcklkICA6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlS2V5IDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgIHBhZ2VOdW1iZXIgOiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgcGFnZXMgICAgICA6IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICBwcmlvckN1dG9mZjogQ3V0b2ZmIHwgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICBwYWdlQ3V0b2ZmIDogQ3V0b2ZmIHwgbnVsbF07XG50eXBlIFNlcmllc05hdkpzQXJncyA9IHJlYWRvbmx5IFtOYXZKc1Rva2VucywgcGFnZVRva2VuOiBzdHJpbmcsIE5hdkpzU2VyaWVzLCBLZXluYXZBcmdzP107XG50eXBlIE5hdkpzU2VyaWVzID0gcmVhZG9ubHkgW3dpZHRoczogbnVtYmVyW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmllczogKHN0cmluZyB8IG51bWJlcilbXVtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHM6IHN0cmluZ1tdW10gfCBudWxsXTtcbnR5cGUgSW5wdXROYXZKc0FyZ3MgPSByZWFkb25seSBbdXJsVG9rZW46ICBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VUb2tlbjogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZXluYXZBcmdzP107XG50eXBlIExpbWl0VGFnSnNBcmdzID0gcmVhZG9ubHkgW2Zyb20gICAgICA6IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsVG9rZW4gIDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlVG9rZW4gOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0VG9rZW46IHN0cmluZ107XG50eXBlIE5hdkpzVG9rZW5zID0gcmVhZG9ubHkgW2JlZm9yZSA6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9yIDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50OiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdhcCAgICA6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXIgIDogc3RyaW5nXTtcbmludGVyZmFjZSBOYXZKc0VsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7XG4gIHJlbmRlcigpOiB2b2lkXG59XG5cbi8vIFRoZSBzeW50YXggdXNlZCBpbiB0aGlzIGZpbGUgaGFzIGJlZW4gY2FyZWZ1bGx5IGNvbXBvc2VkIHRvIG1pbmltaXplXG4vLyB0aGUgcGFneS5taW4uanMgc2l6ZSBhbmQgYXZvaWQgcG9sbHV0aW9uIGluIHRoZSB3aW5kb3cgb2JqZWN0LlxuZXhwb3J0IGRlZmF1bHQgKCgpID0+IHtcbiAgY29uc3Qgc3RvcmFnZVN1cHBvcnQgPSAnc2Vzc2lvblN0b3JhZ2UnIGluIHdpbmRvdyAmJiAnQnJvYWRjYXN0Q2hhbm5lbCcgaW4gd2luZG93O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gIGxldCBwYWd5ID0gXCJwYWd5XCIsIHN0b3JhZ2U6IFN0b3JhZ2UsIHN5bmM6IEJyb2FkY2FzdENoYW5uZWwsIHRhYklkOiBudW1iZXI7XG4gIGlmIChzdG9yYWdlU3VwcG9ydCkge1xuICAgIHN0b3JhZ2UgPSBzZXNzaW9uU3RvcmFnZTsgLy8gc2hvcnRlbiB0aGUgY29tcGlsZWQgc2l6ZVxuICAgIHN5bmMgICAgPSBuZXcgQnJvYWRjYXN0Q2hhbm5lbChwYWd5KTtcbiAgICB0YWJJZCAgID0gRGF0ZS5ub3coKTtcblxuICAgIC8vIFN5bmMgdGhlIHNlc3Npb25TdG9yYWdlIGtleXMgZm9yIHRoZSBjdXRvZmZzIG9wZW5lZCBpbiBhIG5ldyB0YWIvd2luZG93XG4gICAgc3luYy5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCAoZTpNZXNzYWdlRXZlbnQ8U3luY0RhdGE+KSA9PiB7XG4gICAgICBpZiAoZS5kYXRhLmZyb20pIHsgLy8gcmVxdWVzdCBjdXRvZmZzXG4gICAgICAgIGNvbnN0IGN1dG9mZnMgPSBzdG9yYWdlLmdldEl0ZW0oZS5kYXRhLmtleSk7XG4gICAgICAgIGlmIChjdXRvZmZzKSB7XG4gICAgICAgICAgc3luYy5wb3N0TWVzc2FnZSg8U3luY0RhdGE+e3RvOiBlLmRhdGEuZnJvbSwga2V5OiBlLmRhdGEua2V5LCBzdHI6IGN1dG9mZnN9KTtcbiAgICAgICAgfSAvLyBzZW5kIHJlc3BvbnNlXG4gICAgICB9IGVsc2UgaWYgKGUuZGF0YS50bykgeyAgLy8gcmVjZWl2ZSBjdXRvZmZzXG4gICAgICAgIGlmIChlLmRhdGEudG8gPT0gdGFiSWQpIHtcbiAgICAgICAgICBzdG9yYWdlLnNldEl0ZW0oZS5kYXRhLmtleSwgPHN0cmluZz5lLmRhdGEuc3RyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIC8vIFRoZSBvYnNlcnZlciBpbnN0YW5jZSBmb3IgcmVzcG9uc2l2ZSBuYXZzXG4gIGNvbnN0IHJqc09ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKGVudHJpZXMgPT4ge1xuICAgIGVudHJpZXMuZm9yRWFjaChlID0+IHtcbiAgICAgIGUudGFyZ2V0LnF1ZXJ5U2VsZWN0b3JBbGw8TmF2SnNFbGVtZW50PihcIi5wYWd5LXJqc1wiKS5mb3JFYWNoKGVsID0+IHtcbiAgICAgICAgZWwucmVuZGVyKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgLyogRnVsbCBzZXQgb2YgQjY0IGZ1bmN0aW9uc1xuICBjb25zdCBCNjRFbmNvZGUgICAgID0gKHVuaWNvZGU6c3RyaW5nKSA9PiBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUoLi4uKG5ldyBUZXh0RW5jb2RlcikuZW5jb2RlKHVuaWNvZGUpKSksXG4gICAgICAgIEI2NFNhZmUgICAgICAgPSAodW5zYWZlOnN0cmluZykgID0+IHVuc2FmZS5yZXBsYWNlKC9bKy89XS9nLCAobSkgPT4gbSA9PSBcIitcIiA/IFwiLVwiIDogbSA9PSBcIi9cIiA/IFwiX1wiIDogXCJcIiksXG4gICAgICAgIEI2NFNhZmVFbmNvZGUgPSAodW5pY29kZTpzdHJpbmcpID0+IEI2NFNhZmUoQjY0RW5jb2RlKHVuaWNvZGUpKSxcbiAgICAgICAgQjY0RGVjb2RlICAgICA9IChiYXNlNjQ6c3RyaW5nKSAgPT4gKG5ldyBUZXh0RGVjb2RlcigpKS5kZWNvZGUoVWludDhBcnJheS5mcm9tKGF0b2IoYmFzZTY0KSwgYyA9PiBjLmNoYXJDb2RlQXQoMCkpKSxcbiAgICAgICAgQjY0VW5zYWZlICAgICA9IChzYWZlOnN0cmluZykgICAgPT4gc2FmZS5yZXBsYWNlKC9bLV9dL2csIChtYXRjaCkgPT4gbWF0Y2ggPT0gXCItXCIgPyBcIitcIiA6IFwiL1wiKSxcbiAgICAgICAgQjY0U2FmZURlY29kZSA9IChiYXNlNjQ6c3RyaW5nKSAgPT4gQjY0RGVjb2RlKEI2NFVuc2FmZShiYXNlNjQpKVxuICAqL1xuICBjb25zdCBCNjRTYWZlRW5jb2RlID0gKHVuaWNvZGU6c3RyaW5nKSA9PiBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUoLi4uKG5ldyBUZXh0RW5jb2RlcikuZW5jb2RlKHVuaWNvZGUpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bKy89XS9nLCAobSkgPT4gbSA9PSBcIitcIiA/IFwiLVwiIDogbSA9PSBcIi9cIiA/IFwiX1wiIDogXCJcIiksXG4gICAgICAgIEI2NERlY29kZSAgICAgPSAoYmFzZTY0OnN0cmluZykgID0+IChuZXcgVGV4dERlY29kZXIoKSkuZGVjb2RlKFVpbnQ4QXJyYXkuZnJvbShhdG9iKGJhc2U2NCksIGMgPT4gYy5jaGFyQ29kZUF0KDApKSk7XG5cbiAgLy8gUmV0dXJuIGEgcmFuZG9tIGtleTogMyBjaGFycyBtYXgsIGJhc2UtMzYgbnVtYmVyIDwgMzYqKjNcbiAgY29uc3QgcmFuZEtleSA9ICgpID0+IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDM2ICoqIDMpLnRvU3RyaW5nKDM2KTtcblxuICAvLyBNYW5hZ2UgdGhlIHBhZ2UgYXVnbWVudGF0aW9uIGZvciBLZXluYXYsIGNhbGxlZCBvbmx5IGlmIHN0b3JhZ2VTdXBwb3J0XG4gIGNvbnN0IGF1Z21lbnRLZXluYXY6IEF1Z21lbnRLZXluYXYgPSBhc3luYyAobmF2LCBbc3RvcmFnZUtleSwgcm9vdEtleSwgcGFnZUtleSwgbGFzdCwgc3BsaWNlQXJnc10pID0+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgYWxpZ24tYXNzaWdubWVudHMvYWxpZ24tYXNzaWdubWVudHNcbiAgICBsZXQgYXVnbWVudFBhZ2U6IChwYWdlOiBzdHJpbmcpID0+IHN0cmluZztcbiAgICBjb25zdCBicm93c2VyS2V5ID0gZG9jdW1lbnQuY29va2llLnNwbGl0KC87XFxzKy8pICAvLyBpdCB3b3JrcyBldmVuIGlmIG1hbGZvcm1lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKChyb3cpID0+IHJvdy5zdGFydHNXaXRoKHBhZ3kgKyBcIj1cIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5zcGxpdChcIj1cIilbMV0gPz8gcmFuZEtleSgpO1xuICAgIGRvY3VtZW50LmNvb2tpZSAgPSBgJHtwYWd5fT0ke2Jyb3dzZXJLZXl9YDsgIC8vIFNtYWxsZXIgLm1pbiBzaXplOiBzZXQgdGhlIGNvb2tpZSB3aXRob3V0IGNoZWNraW5nXG4gICAgaWYgKHN0b3JhZ2VLZXkgJiYgIShzdG9yYWdlS2V5IGluIHN0b3JhZ2UpKSB7XG4gICAgICAvLyBTeW5jIHRoZSBzZXNzaW9uZ1N0b3JhZ2UgZnJvbSBvdGhlciB0YWJzL3dpbmRvd3MgKGUuZy4sIG9wZW4gcGFnZSBpbiB0aGUgbmV3IHRhYi93aW5kb3cpXG4gICAgICBzeW5jLnBvc3RNZXNzYWdlKDxTeW5jRGF0YT57IGZyb206IHRhYklkLCBrZXk6IHN0b3JhZ2VLZXkgfSk7XG4gICAgICAvLyBXYWl0IGZvciB0aGUgbGlzdGVuZXIgdG8gY29weSB0aGUgY3V0b2ZmcyBpbiB0aGUgY3VycmVudCBzZXNzaW9uU3RvcmFnZVxuICAgICAgYXdhaXQgbmV3IFByb21pc2U8c3RyaW5nfG51bGw+KChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KCgpID0+IHsgcmVzb2x2ZShcIlwiKSB9LCAxMDApKTtcbiAgICAgIGlmICghKHN0b3JhZ2VLZXkgaW4gc3RvcmFnZSkpIHsgLy8gdGhlIHN0b3JhZ2VLZXkgZGlkbid0IGdldCBjb3BpZWQ6IGZhbGxiYWNrIHRvIGNvdW50bGVzcyBwYWdpbmF0aW9uXG4gICAgICAgIGF1Z21lbnRQYWdlID0gKHBhZ2U6IHN0cmluZykgPT4gYCR7cGFnZX0rJHtTdHJpbmcobGFzdCl9YDsgICAgICB9XG4gICAgfVxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgSWYgaXQgaXMgbm90IGFzc2lnbmVkIGl0IG1lYW5zIGl0IHN1cHBvcnRzIGtleW5hdlxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uXG4gICAgaWYgKCFhdWdtZW50UGFnZSkgeyAvLyByZWd1bGFyIGtleW5hdiBwYWdpbmF0aW9uXG4gICAgICBpZiAoIXN0b3JhZ2VLZXkpIHsgZG8geyBzdG9yYWdlS2V5ID0gcmFuZEtleSgpIH0gd2hpbGUgKHN0b3JhZ2VLZXkgaW4gc3RvcmFnZSkgfSAvLyBubyBkdXAga2V5c1xuICAgICAgY29uc3QgZGF0YSA9IHN0b3JhZ2UuZ2V0SXRlbShzdG9yYWdlS2V5KSxcbiAgICAgICAgICBjdXRvZmZzID0gPEN1dG9mZltdPihkYXRhID8gSlNPTi5wYXJzZShkYXRhKSA6IFt1bmRlZmluZWRdKTtcbiAgICAgIGlmIChzcGxpY2VBcmdzKSB7XG4gICAgICAgIGN1dG9mZnMuc3BsaWNlKC4uLnNwbGljZUFyZ3MpO1xuICAgICAgICBzdG9yYWdlLnNldEl0ZW0oc3RvcmFnZUtleSwgSlNPTi5zdHJpbmdpZnkoY3V0b2ZmcykpO1xuICAgICAgfVxuICAgICAgLy8gQXVnbWVudCBmdW5jdGlvblxuICAgICAgYXVnbWVudFBhZ2UgPSAocGFnZTpzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgcGFnZU51bSA9IHBhcnNlSW50KHBhZ2UpO1xuICAgICAgICByZXR1cm4gQjY0U2FmZUVuY29kZShKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIDxBdWdtZW50ZWRQYWdlPlticm93c2VyS2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2VLZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZU51bSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXRvZmZzLmxlbmd0aCwgICAgICAgLy8gcGFnZXMvbGFzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1dG9mZnNbcGFnZU51bSAtIDFdLCAvLyBwcmlvckN1dG9mZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1dG9mZnNbcGFnZU51bV1dKSk7ICAvLyBwYWdlQ3V0b2ZmXG4gICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBzZWFyY2ggPSAocm9vdEtleSkgPyBgJHtyb290S2V5fSU1QiR7cGFnZUtleX0lNURgIDogcGFnZUtleTtcbiAgICBjb25zdCByZSAgICAgPSBuZXcgUmVnRXhwKGAoPzw9XFxcXD8uKikoXFxcXGIke3NlYXJjaH09KShcXFxcZCspYCk7XG4gICAgLy8gQXVnbWVudCB0aGUgcGFnZSBwYXJhbSBvZiBlYWNoIGhyZWZcbiAgICBmb3IgKGNvbnN0IGEgb2YgPE5vZGVMaXN0T2Y8SFRNTEFuY2hvckVsZW1lbnQ+Pjx1bmtub3duPm5hdi5xdWVyeVNlbGVjdG9yQWxsKCdhW2hyZWZdJykpIHtcbiAgICAgIGEuaHJlZiA9IGEuaHJlZi5yZXBsYWNlKHJlLCAoX21hdGNoLCBwcmVmaXgsIGRpZ2l0KTogc3RyaW5nID0+IGAke1N0cmluZyhwcmVmaXgpfSR7YXVnbWVudFBhZ2UoPHN0cmluZz5kaWdpdCl9YCk7XG4gICAgfVxuICAgIC8vIFJldHVybiB0aGUgYXVnbWVudCBmdW5jdGlvbiBmb3IgZnVydGhlciBhdWdtZW50YXRpb24gKGkuZS4sIHVybCB0b2tlbiBpbiBpbnB1dF9uYXZfanMpXG4gICAgcmV0dXJuIGF1Z21lbnRQYWdlO1xuICB9O1xuXG4gIC8vIEJ1aWxkIHRoZSBzZXJpZXNfbmF2X2pzIGhlbHBlclxuICBjb25zdCBidWlsZE5hdkpzID0gKG5hdjpOYXZKc0VsZW1lbnQsIFtbYmVmb3JlLCBhbmNob3IsIGN1cnJlbnQsIGdhcCwgYWZ0ZXJdLCBwYWdlVG9rZW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3dpZHRocywgc2VyaWVzLCBsYWJlbHNdLCBrZXluYXZBcmdzXTpTZXJpZXNOYXZKc0FyZ3MpID0+IHtcbiAgICBjb25zdCAgcGFyZW50ID0gPEhUTUxFbGVtZW50Pm5hdi5wYXJlbnRFbGVtZW50O1xuICAgIGxldCBsYXN0V2lkdGggPSAtMTtcbiAgICAobmF2LnJlbmRlciA9ICgpID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gd2lkdGhzLmZpbmRJbmRleCh3ID0+IHcgPCBwYXJlbnQuY2xpZW50V2lkdGgpO1xuICAgICAgaWYgKHdpZHRoc1tpbmRleF0gPT09IGxhc3RXaWR0aCkgeyByZXR1cm4gfSAvLyBubyBjaGFuZ2U6IGFib3J0XG5cbiAgICAgIGxldCBodG1sID0gYmVmb3JlO1xuICAgICAgc2VyaWVzW2luZGV4XS5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XG4gICAgICAgIC8vIEF2b2lkIHRoZSBpZiBibG9ja3MgYW5kIGNoYWluIHRoZSByZXN1bHRzIChzaG9ydGVyIHBhZ3kubWluLmpzIGFuZCBlYXNpZXIgcmVhZGluZylcbiAgICAgICAgaHRtbCArPSBpdGVtID09IFwiZ2FwXCIgPyBnYXAgOlxuICAgICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgdGhlIGl0ZW0gbWF5IGJlIGEgbnVtYmVyLCBidXQgdGhlICdyZXBsYWNlJyBjb252ZXJ0cyBpdCB0byBzdHJpbmcgKHNob3J0ZXIgcGFneS5taW4uanMpXG4gICAgICAgICAgICAgICAgKHR5cGVvZiBpdGVtID09IFwibnVtYmVyXCIgPyBhbmNob3IucmVwbGFjZShwYWdlVG9rZW4sIGl0ZW0pIDogY3VycmVudClcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoXCJMPFwiLCBsYWJlbHM/LltpbmRleF1baV0gPz8gYCR7U3RyaW5nKGl0ZW0pfTxgKTtcbiAgICAgIH0pO1xuICAgICAgaHRtbCAgICAgICAgICs9IGFmdGVyO1xuICAgICAgbmF2LmlubmVySFRNTCA9IFwiXCI7XG4gICAgICBuYXYuaW5zZXJ0QWRqYWNlbnRIVE1MKFwiYWZ0ZXJiZWdpblwiLCBodG1sKTtcbiAgICAgIGxhc3RXaWR0aCA9IHdpZHRoc1tpbmRleF07XG4gICAgICBpZiAoa2V5bmF2QXJncyAmJiBzdG9yYWdlU3VwcG9ydCkgeyB2b2lkIGF1Z21lbnRLZXluYXYobmF2LCBrZXluYXZBcmdzKSB9XG4gICAgfSkoKTtcbiAgICBpZiAobmF2LmNsYXNzTGlzdC5jb250YWlucyhwYWd5ICsgXCItcmpzXCIpKSB7IHJqc09ic2VydmVyLm9ic2VydmUocGFyZW50KSB9XG4gIH07XG5cbiAgLy8gSW5pdCB0aGUgaW5wdXRfbmF2X2pzIGhlbHBlcnNcbiAgY29uc3QgaW5pdElucHV0TmF2SnMgPSBhc3luYyAobmF2OkhUTUxFbGVtZW50LCBbdXJsX3Rva2VuLCBwYWdlVG9rZW4sIGtleW5hdkFyZ3NdOklucHV0TmF2SnNBcmdzKSA9PiB7XG4gICAgY29uc3QgYXVnbWVudCA9IGtleW5hdkFyZ3MgJiYgc3RvcmFnZVN1cHBvcnRcbiAgICAgICAgICAgICAgICAgICAgPyBhd2FpdCBhdWdtZW50S2V5bmF2KG5hdiwga2V5bmF2QXJncylcbiAgICAgICAgICAgICAgICAgICAgOiAocGFnZTogc3RyaW5nKSA9PiBwYWdlO1xuICAgIGluaXRJbnB1dChuYXYsIGlucHV0VmFsdWUgPT4gdXJsX3Rva2VuLnJlcGxhY2UocGFnZVRva2VuLCBhdWdtZW50KGlucHV0VmFsdWUpKSk7XG4gIH07XG5cbiAgLy8gSW5pdCB0aGUgbGltaXRfdGFnX2pzIGhlbHBlclxuICBjb25zdCBpbml0TGltaXRUYWdKcyA9IChzcGFuOkhUTUxTcGFuRWxlbWVudCwgW2Zyb20sIHVybF90b2tlbiwgcGFnZV90b2tlbiwgbGltaXRUb2tlbl06TGltaXRUYWdKc0FyZ3MpID0+IHtcbiAgICBpbml0SW5wdXQoc3BhbiwgaW5wdXRWYWx1ZSA9PiB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIHRoZSBwYWdlIGlzIGEgbnVtYmVyLCBidXQgdGhlICdyZXBsYWNlJyBjb252ZXJ0cyBpdCB0byBzdHJpbmcgKHNob3J0ZXIgcGFneS5taW4uanMpXG4gICAgICByZXR1cm4gdXJsX3Rva2VuLnJlcGxhY2UocGFnZV90b2tlbiwgTWF0aC5tYXgoTWF0aC5jZWlsKGZyb20gLyBwYXJzZUludChpbnB1dFZhbHVlKSksIDEpKVxuICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKGxpbWl0VG9rZW4sIGlucHV0VmFsdWUpO1xuICAgIH0pO1xuICB9O1xuXG4gIC8vIEluaXQgdGhlIGlucHV0IGVsZW1lbnRcbiAgY29uc3QgaW5pdElucHV0ID0gKGVsZW1lbnQ6SFRNTEVsZW1lbnQsIGdldFVybDoodjpzdHJpbmcpID0+IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IGlucHV0ICAgPSA8SFRNTElucHV0RWxlbWVudD5lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFwiKSxcbiAgICAgICAgICBsaW5rICAgID0gPEhUTUxBbmNob3JFbGVtZW50PmVsZW1lbnQucXVlcnlTZWxlY3RvcihcImFcIik7XG4gICAgbGV0ICAgaW5pdGlhbCA9IGlucHV0LnZhbHVlO1xuICAgIGNvbnN0IGFjdGlvbiAgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LnZhbHVlID09PSBpbml0aWFsKSB7IHJldHVybiB9ICAvLyBub3QgY2hhbmdlZFxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFttaW4sIHZhbCwgbWF4XSA9IFtpbnB1dC5taW4sIGlucHV0LnZhbHVlLCBpbnB1dC5tYXhdLm1hcChuID0+IHBhcnNlSW50KG4pIHx8IDApO1xuICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWwgPCBtaW4gfHwgdmFsID4gbWF4KSB7ICAvLyByZXNldCBpbnZhbGlkL291dC1vZi1yYW5nZVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQudmFsdWUgPSBpbml0aWFsO1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQuc2VsZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWwgICA9IGlucHV0LnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgIGxpbmsuaHJlZiA9IGdldFVybChpbnB1dC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgbGluay5jbGljaygpO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c1wiLCAoKSA9PiB7IGlucHV0LnNlbGVjdCgpIH0pO1xuICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c291dFwiLCBhY3Rpb24pO1xuICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlwcmVzc1wiLCBlID0+IHsgaWYgKGUua2V5ID09IFwiRW50ZXJcIikgeyBhY3Rpb24oKSB9IH0pO1xuICB9O1xuXG4gIC8vIFB1YmxpYyBpbnRlcmZhY2VcbiAgcmV0dXJuIHtcbiAgICB2ZXJzaW9uOiBcIjQzLjUuMFwiLFxuXG4gICAgLy8gU2NhbiBmb3IgZWxlbWVudHMgd2l0aCBhIFwiZGF0YS1wYWd5XCIgYXR0cmlidXRlIGFuZCBjYWxsIHRoZWlyIGluaXQgZnVuY3Rpb25zIHdpdGggdGhlIGRlY29kZWQgYXJnc1xuICAgIGluaXQoYXJnPzpIVE1MRWxlbWVudCkge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gYXJnIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgPyBhcmcgOiBkb2N1bWVudCxcbiAgICAgICAgICAgIGVsZW1lbnRzID0gdGFyZ2V0LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbZGF0YS1wYWd5XVwiKTtcbiAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiA8Tm9kZUxpc3RPZjxIVE1MRWxlbWVudD4+ZWxlbWVudHMpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBbaGVscGVySWQsIC4uLmFyZ3NdID0gPEluaXRBcmdzPkpTT04ucGFyc2UoQjY0RGVjb2RlKDxzdHJpbmc+ZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJkYXRhLXBhZ3lcIikpKTtcbiAgICAgICAgICBpZiAoaGVscGVySWQgPT0gXCJrXCIpIHtcbiAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3Igc3ByZWFkIDIgYXJndW1lbnRzLCBub3QgMyBhcyBpdCBjb21wbGFpbnMgYWJvdXRcbiAgICAgICAgICAgIHZvaWQgYXVnbWVudEtleW5hdihlbGVtZW50LCAuLi48S2V5bmF2QXJncz48dW5rbm93bj5hcmdzKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGhlbHBlcklkID09IFwic25qXCIpIHtcbiAgICAgICAgICAgIGJ1aWxkTmF2SnMoPE5hdkpzRWxlbWVudD5lbGVtZW50LCA8U2VyaWVzTmF2SnNBcmdzPjx1bmtub3duPmFyZ3MpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaGVscGVySWQgPT0gXCJpbmpcIikge1xuICAgICAgICAgICAgdm9pZCBpbml0SW5wdXROYXZKcyhlbGVtZW50LCA8SW5wdXROYXZKc0FyZ3M+PHVua25vd24+YXJncyk7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LWNvbmRpdGlvblxuICAgICAgICAgIH0gZWxzZSBpZiAoaGVscGVySWQgPT0gXCJsdGpcIikge1xuICAgICAgICAgICAgaW5pdExpbWl0VGFnSnMoZWxlbWVudCwgPExpbWl0VGFnSnNBcmdzPjx1bmtub3duPmFyZ3MpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBlbHNlIHsgY29uc29sZS53YXJuKFwiUGFneS5pbml0OiAlb1xcblVua25vd24gaGVscGVySWQgJyVzJ1wiLCBlbGVtZW50LCBoZWxwZXJJZCkgfVxuICAgICAgICB9IGNhdGNoIChlcnIpIHsgY29uc29sZS53YXJuKFwiUGFneS5pbml0OiAlb1xcbiVzXCIsIGVsZW1lbnQsIGVycikgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcbn0pKCk7XG4iLAogICAgImltcG9ydCBQYWd5IGZyb20gXCIuL3BhZ3kudHNcIlxud2luZG93LlBhZ3kgPSBQYWd5XG4iCiAgXSwKICAibWFwcGluZ3MiOiAiO0FBZ0RBLElBQWdCLHNCQUFNO0FBQUEsRUFDcEIsTUFBTSxpQkFBaUIsb0JBQW9CLFVBQVUsc0JBQXNCO0FBQUEsRUFFM0UsSUFBSSxPQUFPLFFBQVEsU0FBa0IsTUFBd0I7QUFBQSxFQUM3RCxJQUFJLGdCQUFnQjtBQUFBLElBQ2xCLFVBQVU7QUFBQSxJQUNWLE9BQVUsSUFBSSxpQkFBaUIsSUFBSTtBQUFBLElBQ25DLFFBQVUsS0FBSyxJQUFJO0FBQUEsSUFHbkIsS0FB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
167
+ //# debugId=688FC1BE541CE72564756E2164756E21
168
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsicGFneS50cyIsICJwYWd5LXNoaW0udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbCiAgICAiaW50ZXJmYWNlIFN5bmNEYXRhIHtcbiAgZnJvbT86IG51bWJlclxuICB0bz8gIDogbnVtYmVyXG4gIGtleSAgOiBzdHJpbmdcbiAgc3RyPyA6IHN0cmluZ1xufVxudHlwZSBJbml0QXJncyA9IFtcImtcIiwgIEtleW5hdkFyZ3NdIHwgICAgICAgICAgLy8gc2VyaWVzX25hdltfanNdIHdpdGgga2V5bmF2IGluc3RhbmNlXG4gICAgICAgICAgICAgICAgW1wic25qXCIsIFNlcmllc05hdkpzQXJnc10gfCAgICAvLyBzZXJpZXNfbmF2X2pzXG4gICAgICAgICAgICAgICAgW1wiaW5qXCIsIElucHV0TmF2SnNBcmdzXSB8ICAgICAvLyBpbnB1dF9uYXZfanNcbiAgICAgICAgICAgICAgICBbXCJsdGpcIiwgTGltaXRUYWdKc0FyZ3NdOyAgICAgIC8vIGxpbWl0X3RhZ19qc1xudHlwZSBBdWdtZW50S2V5bmF2ID0gKG5hdjpIVE1MRWxlbWVudCwga2V5bmF2QXJnczpLZXluYXZBcmdzKSA9PiBQcm9taXNlPCgocGFnZTogc3RyaW5nKSA9PiBzdHJpbmcpPjtcbnR5cGUgS2V5bmF2QXJncyA9IHJlYWRvbmx5IFtzdG9yYWdlS2V5IDogc3RyaW5nIHwgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb290S2V5ICAgIDogc3RyaW5nIHwgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlS2V5ICAgIDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgICAgICAgOiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BsaWNlQXJncz86IFNwbGljZUFyZ3NdO1xudHlwZSBTcGxpY2VBcmdzID0gcmVhZG9ubHkgW3N0YXJ0ICAgICAgOiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlQ291bnQ6IG51bWJlciwgICAgIC8vIGl0IHdvdWxkIGJlIG9wdGlvbmFsLCBidXQgdHMgY29tcGxhaW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbXM6ICAgIEN1dG9mZltdXTtcbnR5cGUgQ3V0b2ZmID0gcmVhZG9ubHkgKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4pW107XG50eXBlIEF1Z21lbnRlZFBhZ2UgPSBbYnJvd3NlcklkICA6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlS2V5IDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgIHBhZ2VOdW1iZXIgOiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgcGFnZXMgICAgICA6IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICBwcmlvckN1dG9mZjogQ3V0b2ZmIHwgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICBwYWdlQ3V0b2ZmIDogQ3V0b2ZmIHwgbnVsbF07XG50eXBlIFNlcmllc05hdkpzQXJncyA9IHJlYWRvbmx5IFtOYXZKc1Rva2VucywgcGFnZVRva2VuOiBzdHJpbmcsIE5hdkpzU2VyaWVzLCBLZXluYXZBcmdzP107XG50eXBlIE5hdkpzU2VyaWVzID0gcmVhZG9ubHkgW3dpZHRoczogbnVtYmVyW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmllczogKHN0cmluZyB8IG51bWJlcilbXVtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHM6IHN0cmluZ1tdW10gfCBudWxsXTtcbnR5cGUgSW5wdXROYXZKc0FyZ3MgPSByZWFkb25seSBbdXJsVG9rZW46ICBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VUb2tlbjogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZXluYXZBcmdzP107XG50eXBlIExpbWl0VGFnSnNBcmdzID0gcmVhZG9ubHkgW2Zyb20gICAgICA6IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsVG9rZW4gIDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlVG9rZW4gOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0VG9rZW46IHN0cmluZ107XG50eXBlIE5hdkpzVG9rZW5zID0gcmVhZG9ubHkgW2JlZm9yZSA6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9yIDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50OiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdhcCAgICA6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXIgIDogc3RyaW5nXTtcbmludGVyZmFjZSBOYXZKc0VsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7XG4gIHJlbmRlcigpOiB2b2lkXG59XG5cbi8vIFRoZSBzeW50YXggdXNlZCBpbiB0aGlzIGZpbGUgaGFzIGJlZW4gY2FyZWZ1bGx5IGNvbXBvc2VkIHRvIG1pbmltaXplXG4vLyB0aGUgcGFneS5taW4uanMgc2l6ZSBhbmQgYXZvaWQgcG9sbHV0aW9uIGluIHRoZSB3aW5kb3cgb2JqZWN0LlxuZXhwb3J0IGRlZmF1bHQgKCgpID0+IHtcbiAgY29uc3Qgc3RvcmFnZVN1cHBvcnQgPSAnc2Vzc2lvblN0b3JhZ2UnIGluIHdpbmRvdyAmJiAnQnJvYWRjYXN0Q2hhbm5lbCcgaW4gd2luZG93O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gIGxldCBwYWd5ID0gXCJwYWd5XCIsIHN0b3JhZ2U6IFN0b3JhZ2UsIHN5bmM6IEJyb2FkY2FzdENoYW5uZWwsIHRhYklkOiBudW1iZXI7XG4gIGlmIChzdG9yYWdlU3VwcG9ydCkge1xuICAgIHN0b3JhZ2UgPSBzZXNzaW9uU3RvcmFnZTsgLy8gc2hvcnRlbiB0aGUgY29tcGlsZWQgc2l6ZVxuICAgIHN5bmMgICAgPSBuZXcgQnJvYWRjYXN0Q2hhbm5lbChwYWd5KTtcbiAgICB0YWJJZCAgID0gRGF0ZS5ub3coKTtcblxuICAgIC8vIFN5bmMgdGhlIHNlc3Npb25TdG9yYWdlIGtleXMgZm9yIHRoZSBjdXRvZmZzIG9wZW5lZCBpbiBhIG5ldyB0YWIvd2luZG93XG4gICAgc3luYy5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCAoZTpNZXNzYWdlRXZlbnQ8U3luY0RhdGE+KSA9PiB7XG4gICAgICBpZiAoZS5kYXRhLmZyb20pIHsgLy8gcmVxdWVzdCBjdXRvZmZzXG4gICAgICAgIGNvbnN0IGN1dG9mZnMgPSBzdG9yYWdlLmdldEl0ZW0oZS5kYXRhLmtleSk7XG4gICAgICAgIGlmIChjdXRvZmZzKSB7XG4gICAgICAgICAgc3luYy5wb3N0TWVzc2FnZSg8U3luY0RhdGE+e3RvOiBlLmRhdGEuZnJvbSwga2V5OiBlLmRhdGEua2V5LCBzdHI6IGN1dG9mZnN9KTtcbiAgICAgICAgfSAvLyBzZW5kIHJlc3BvbnNlXG4gICAgICB9IGVsc2UgaWYgKGUuZGF0YS50bykgeyAgLy8gcmVjZWl2ZSBjdXRvZmZzXG4gICAgICAgIGlmIChlLmRhdGEudG8gPT0gdGFiSWQpIHtcbiAgICAgICAgICBzdG9yYWdlLnNldEl0ZW0oZS5kYXRhLmtleSwgPHN0cmluZz5lLmRhdGEuc3RyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIC8vIFRoZSBvYnNlcnZlciBpbnN0YW5jZSBmb3IgcmVzcG9uc2l2ZSBuYXZzXG4gIGNvbnN0IHJqc09ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKGVudHJpZXMgPT4ge1xuICAgIGVudHJpZXMuZm9yRWFjaChlID0+IHtcbiAgICAgIGUudGFyZ2V0LnF1ZXJ5U2VsZWN0b3JBbGw8TmF2SnNFbGVtZW50PihcIi5wYWd5LXJqc1wiKS5mb3JFYWNoKGVsID0+IHtcbiAgICAgICAgZWwucmVuZGVyKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgLyogRnVsbCBzZXQgb2YgQjY0IGZ1bmN0aW9uc1xuICBjb25zdCBCNjRFbmNvZGUgICAgID0gKHVuaWNvZGU6c3RyaW5nKSA9PiBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUoLi4uKG5ldyBUZXh0RW5jb2RlcikuZW5jb2RlKHVuaWNvZGUpKSksXG4gICAgICAgIEI2NFNhZmUgICAgICAgPSAodW5zYWZlOnN0cmluZykgID0+IHVuc2FmZS5yZXBsYWNlKC9bKy89XS9nLCAobSkgPT4gbSA9PSBcIitcIiA/IFwiLVwiIDogbSA9PSBcIi9cIiA/IFwiX1wiIDogXCJcIiksXG4gICAgICAgIEI2NFNhZmVFbmNvZGUgPSAodW5pY29kZTpzdHJpbmcpID0+IEI2NFNhZmUoQjY0RW5jb2RlKHVuaWNvZGUpKSxcbiAgICAgICAgQjY0RGVjb2RlICAgICA9IChiYXNlNjQ6c3RyaW5nKSAgPT4gKG5ldyBUZXh0RGVjb2RlcigpKS5kZWNvZGUoVWludDhBcnJheS5mcm9tKGF0b2IoYmFzZTY0KSwgYyA9PiBjLmNoYXJDb2RlQXQoMCkpKSxcbiAgICAgICAgQjY0VW5zYWZlICAgICA9IChzYWZlOnN0cmluZykgICAgPT4gc2FmZS5yZXBsYWNlKC9bLV9dL2csIChtYXRjaCkgPT4gbWF0Y2ggPT0gXCItXCIgPyBcIitcIiA6IFwiL1wiKSxcbiAgICAgICAgQjY0U2FmZURlY29kZSA9IChiYXNlNjQ6c3RyaW5nKSAgPT4gQjY0RGVjb2RlKEI2NFVuc2FmZShiYXNlNjQpKVxuICAqL1xuICBjb25zdCBCNjRTYWZlRW5jb2RlID0gKHVuaWNvZGU6c3RyaW5nKSA9PiBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUoLi4uKG5ldyBUZXh0RW5jb2RlcikuZW5jb2RlKHVuaWNvZGUpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bKy89XS9nLCAobSkgPT4gbSA9PSBcIitcIiA/IFwiLVwiIDogbSA9PSBcIi9cIiA/IFwiX1wiIDogXCJcIiksXG4gICAgICAgIEI2NERlY29kZSAgICAgPSAoYmFzZTY0OnN0cmluZykgID0+IChuZXcgVGV4dERlY29kZXIoKSkuZGVjb2RlKFVpbnQ4QXJyYXkuZnJvbShhdG9iKGJhc2U2NCksIGMgPT4gYy5jaGFyQ29kZUF0KDApKSk7XG5cbiAgLy8gUmV0dXJuIGEgcmFuZG9tIGtleTogMyBjaGFycyBtYXgsIGJhc2UtMzYgbnVtYmVyIDwgMzYqKjNcbiAgY29uc3QgcmFuZEtleSA9ICgpID0+IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDM2ICoqIDMpLnRvU3RyaW5nKDM2KTtcblxuICAvLyBNYW5hZ2UgdGhlIHBhZ2UgYXVnbWVudGF0aW9uIGZvciBLZXluYXYsIGNhbGxlZCBvbmx5IGlmIHN0b3JhZ2VTdXBwb3J0XG4gIGNvbnN0IGF1Z21lbnRLZXluYXY6IEF1Z21lbnRLZXluYXYgPSBhc3luYyAobmF2LCBbc3RvcmFnZUtleSwgcm9vdEtleSwgcGFnZUtleSwgbGFzdCwgc3BsaWNlQXJnc10pID0+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgYWxpZ24tYXNzaWdubWVudHMvYWxpZ24tYXNzaWdubWVudHNcbiAgICBsZXQgYXVnbWVudFBhZ2U6IChwYWdlOiBzdHJpbmcpID0+IHN0cmluZztcbiAgICBjb25zdCBicm93c2VyS2V5ID0gZG9jdW1lbnQuY29va2llLnNwbGl0KC87XFxzKy8pICAvLyBpdCB3b3JrcyBldmVuIGlmIG1hbGZvcm1lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKChyb3cpID0+IHJvdy5zdGFydHNXaXRoKHBhZ3kgKyBcIj1cIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5zcGxpdChcIj1cIilbMV0gPz8gcmFuZEtleSgpO1xuICAgIGRvY3VtZW50LmNvb2tpZSAgPSBgJHtwYWd5fT0ke2Jyb3dzZXJLZXl9YDsgIC8vIFNtYWxsZXIgLm1pbiBzaXplOiBzZXQgdGhlIGNvb2tpZSB3aXRob3V0IGNoZWNraW5nXG4gICAgaWYgKHN0b3JhZ2VLZXkgJiYgIShzdG9yYWdlS2V5IGluIHN0b3JhZ2UpKSB7XG4gICAgICAvLyBTeW5jIHRoZSBzZXNzaW9uZ1N0b3JhZ2UgZnJvbSBvdGhlciB0YWJzL3dpbmRvd3MgKGUuZy4sIG9wZW4gcGFnZSBpbiB0aGUgbmV3IHRhYi93aW5kb3cpXG4gICAgICBzeW5jLnBvc3RNZXNzYWdlKDxTeW5jRGF0YT57IGZyb206IHRhYklkLCBrZXk6IHN0b3JhZ2VLZXkgfSk7XG4gICAgICAvLyBXYWl0IGZvciB0aGUgbGlzdGVuZXIgdG8gY29weSB0aGUgY3V0b2ZmcyBpbiB0aGUgY3VycmVudCBzZXNzaW9uU3RvcmFnZVxuICAgICAgYXdhaXQgbmV3IFByb21pc2U8c3RyaW5nfG51bGw+KChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KCgpID0+IHsgcmVzb2x2ZShcIlwiKSB9LCAxMDApKTtcbiAgICAgIGlmICghKHN0b3JhZ2VLZXkgaW4gc3RvcmFnZSkpIHsgLy8gdGhlIHN0b3JhZ2VLZXkgZGlkbid0IGdldCBjb3BpZWQ6IGZhbGxiYWNrIHRvIGNvdW50bGVzcyBwYWdpbmF0aW9uXG4gICAgICAgIGF1Z21lbnRQYWdlID0gKHBhZ2U6IHN0cmluZykgPT4gYCR7cGFnZX0rJHtTdHJpbmcobGFzdCl9YDsgICAgICB9XG4gICAgfVxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgSWYgaXQgaXMgbm90IGFzc2lnbmVkIGl0IG1lYW5zIGl0IHN1cHBvcnRzIGtleW5hdlxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uXG4gICAgaWYgKCFhdWdtZW50UGFnZSkgeyAvLyByZWd1bGFyIGtleW5hdiBwYWdpbmF0aW9uXG4gICAgICBpZiAoIXN0b3JhZ2VLZXkpIHsgZG8geyBzdG9yYWdlS2V5ID0gcmFuZEtleSgpIH0gd2hpbGUgKHN0b3JhZ2VLZXkgaW4gc3RvcmFnZSkgfSAvLyBubyBkdXAga2V5c1xuICAgICAgY29uc3QgZGF0YSA9IHN0b3JhZ2UuZ2V0SXRlbShzdG9yYWdlS2V5KSxcbiAgICAgICAgICBjdXRvZmZzID0gPEN1dG9mZltdPihkYXRhID8gSlNPTi5wYXJzZShkYXRhKSA6IFt1bmRlZmluZWRdKTtcbiAgICAgIGlmIChzcGxpY2VBcmdzKSB7XG4gICAgICAgIGN1dG9mZnMuc3BsaWNlKC4uLnNwbGljZUFyZ3MpO1xuICAgICAgICBzdG9yYWdlLnNldEl0ZW0oc3RvcmFnZUtleSwgSlNPTi5zdHJpbmdpZnkoY3V0b2ZmcykpO1xuICAgICAgfVxuICAgICAgLy8gQXVnbWVudCBmdW5jdGlvblxuICAgICAgYXVnbWVudFBhZ2UgPSAocGFnZTpzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgcGFnZU51bSA9IHBhcnNlSW50KHBhZ2UpO1xuICAgICAgICByZXR1cm4gQjY0U2FmZUVuY29kZShKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIDxBdWdtZW50ZWRQYWdlPlticm93c2VyS2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2VLZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZU51bSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXRvZmZzLmxlbmd0aCwgICAgICAgLy8gcGFnZXMvbGFzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1dG9mZnNbcGFnZU51bSAtIDFdLCAvLyBwcmlvckN1dG9mZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1dG9mZnNbcGFnZU51bV1dKSk7ICAvLyBwYWdlQ3V0b2ZmXG4gICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBzZWFyY2ggPSAocm9vdEtleSkgPyBgJHtyb290S2V5fSU1QiR7cGFnZUtleX0lNURgIDogcGFnZUtleTtcbiAgICBjb25zdCByZSAgICAgPSBuZXcgUmVnRXhwKGAoPzw9XFxcXD8uKikoXFxcXGIke3NlYXJjaH09KShcXFxcZCspYCk7XG4gICAgLy8gQXVnbWVudCB0aGUgcGFnZSBwYXJhbSBvZiBlYWNoIGhyZWZcbiAgICBmb3IgKGNvbnN0IGEgb2YgPE5vZGVMaXN0T2Y8SFRNTEFuY2hvckVsZW1lbnQ+Pjx1bmtub3duPm5hdi5xdWVyeVNlbGVjdG9yQWxsKCdhW2hyZWZdJykpIHtcbiAgICAgIGEuaHJlZiA9IGEuaHJlZi5yZXBsYWNlKHJlLCAoX21hdGNoLCBwcmVmaXgsIGRpZ2l0KTogc3RyaW5nID0+IGAke1N0cmluZyhwcmVmaXgpfSR7YXVnbWVudFBhZ2UoPHN0cmluZz5kaWdpdCl9YCk7XG4gICAgfVxuICAgIC8vIFJldHVybiB0aGUgYXVnbWVudCBmdW5jdGlvbiBmb3IgZnVydGhlciBhdWdtZW50YXRpb24gKGkuZS4sIHVybCB0b2tlbiBpbiBpbnB1dF9uYXZfanMpXG4gICAgcmV0dXJuIGF1Z21lbnRQYWdlO1xuICB9O1xuXG4gIC8vIEJ1aWxkIHRoZSBzZXJpZXNfbmF2X2pzIGhlbHBlclxuICBjb25zdCBidWlsZE5hdkpzID0gKG5hdjpOYXZKc0VsZW1lbnQsIFtbYmVmb3JlLCBhbmNob3IsIGN1cnJlbnQsIGdhcCwgYWZ0ZXJdLCBwYWdlVG9rZW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3dpZHRocywgc2VyaWVzLCBsYWJlbHNdLCBrZXluYXZBcmdzXTpTZXJpZXNOYXZKc0FyZ3MpID0+IHtcbiAgICBjb25zdCAgcGFyZW50ID0gPEhUTUxFbGVtZW50Pm5hdi5wYXJlbnRFbGVtZW50O1xuICAgIGxldCBsYXN0V2lkdGggPSAtMTtcbiAgICAobmF2LnJlbmRlciA9ICgpID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gd2lkdGhzLmZpbmRJbmRleCh3ID0+IHcgPCBwYXJlbnQuY2xpZW50V2lkdGgpO1xuICAgICAgaWYgKHdpZHRoc1tpbmRleF0gPT09IGxhc3RXaWR0aCkgeyByZXR1cm4gfSAvLyBubyBjaGFuZ2U6IGFib3J0XG5cbiAgICAgIGxldCBodG1sID0gYmVmb3JlO1xuICAgICAgc2VyaWVzW2luZGV4XS5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XG4gICAgICAgIC8vIEF2b2lkIHRoZSBpZiBibG9ja3MgYW5kIGNoYWluIHRoZSByZXN1bHRzIChzaG9ydGVyIHBhZ3kubWluLmpzIGFuZCBlYXNpZXIgcmVhZGluZylcbiAgICAgICAgaHRtbCArPSBpdGVtID09IFwiZ2FwXCIgPyBnYXAgOlxuICAgICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgdGhlIGl0ZW0gbWF5IGJlIGEgbnVtYmVyLCBidXQgdGhlICdyZXBsYWNlJyBjb252ZXJ0cyBpdCB0byBzdHJpbmcgKHNob3J0ZXIgcGFneS5taW4uanMpXG4gICAgICAgICAgICAgICAgKHR5cGVvZiBpdGVtID09IFwibnVtYmVyXCIgPyBhbmNob3IucmVwbGFjZShwYWdlVG9rZW4sIGl0ZW0pIDogY3VycmVudClcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoXCJMPFwiLCBsYWJlbHM/LltpbmRleF1baV0gPz8gYCR7U3RyaW5nKGl0ZW0pfTxgKTtcbiAgICAgIH0pO1xuICAgICAgaHRtbCAgICAgICAgICs9IGFmdGVyO1xuICAgICAgbmF2LmlubmVySFRNTCA9IFwiXCI7XG4gICAgICBuYXYuaW5zZXJ0QWRqYWNlbnRIVE1MKFwiYWZ0ZXJiZWdpblwiLCBodG1sKTtcbiAgICAgIGxhc3RXaWR0aCA9IHdpZHRoc1tpbmRleF07XG4gICAgICBpZiAoa2V5bmF2QXJncyAmJiBzdG9yYWdlU3VwcG9ydCkgeyB2b2lkIGF1Z21lbnRLZXluYXYobmF2LCBrZXluYXZBcmdzKSB9XG4gICAgfSkoKTtcbiAgICBpZiAobmF2LmNsYXNzTGlzdC5jb250YWlucyhwYWd5ICsgXCItcmpzXCIpKSB7IHJqc09ic2VydmVyLm9ic2VydmUocGFyZW50KSB9XG4gIH07XG5cbiAgLy8gSW5pdCB0aGUgaW5wdXRfbmF2X2pzIGhlbHBlcnNcbiAgY29uc3QgaW5pdElucHV0TmF2SnMgPSBhc3luYyAobmF2OkhUTUxFbGVtZW50LCBbdXJsX3Rva2VuLCBwYWdlVG9rZW4sIGtleW5hdkFyZ3NdOklucHV0TmF2SnNBcmdzKSA9PiB7XG4gICAgY29uc3QgYXVnbWVudCA9IGtleW5hdkFyZ3MgJiYgc3RvcmFnZVN1cHBvcnRcbiAgICAgICAgICAgICAgICAgICAgPyBhd2FpdCBhdWdtZW50S2V5bmF2KG5hdiwga2V5bmF2QXJncylcbiAgICAgICAgICAgICAgICAgICAgOiAocGFnZTogc3RyaW5nKSA9PiBwYWdlO1xuICAgIGluaXRJbnB1dChuYXYsIGlucHV0VmFsdWUgPT4gdXJsX3Rva2VuLnJlcGxhY2UocGFnZVRva2VuLCBhdWdtZW50KGlucHV0VmFsdWUpKSk7XG4gIH07XG5cbiAgLy8gSW5pdCB0aGUgbGltaXRfdGFnX2pzIGhlbHBlclxuICBjb25zdCBpbml0TGltaXRUYWdKcyA9IChzcGFuOkhUTUxTcGFuRWxlbWVudCwgW2Zyb20sIHVybF90b2tlbiwgcGFnZV90b2tlbiwgbGltaXRUb2tlbl06TGltaXRUYWdKc0FyZ3MpID0+IHtcbiAgICBpbml0SW5wdXQoc3BhbiwgaW5wdXRWYWx1ZSA9PiB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIHRoZSBwYWdlIGlzIGEgbnVtYmVyLCBidXQgdGhlICdyZXBsYWNlJyBjb252ZXJ0cyBpdCB0byBzdHJpbmcgKHNob3J0ZXIgcGFneS5taW4uanMpXG4gICAgICByZXR1cm4gdXJsX3Rva2VuLnJlcGxhY2UocGFnZV90b2tlbiwgTWF0aC5tYXgoTWF0aC5jZWlsKGZyb20gLyBwYXJzZUludChpbnB1dFZhbHVlKSksIDEpKVxuICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKGxpbWl0VG9rZW4sIGlucHV0VmFsdWUpO1xuICAgIH0pO1xuICB9O1xuXG4gIC8vIEluaXQgdGhlIGlucHV0IGVsZW1lbnRcbiAgY29uc3QgaW5pdElucHV0ID0gKGVsZW1lbnQ6SFRNTEVsZW1lbnQsIGdldFVybDoodjpzdHJpbmcpID0+IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IGlucHV0ICAgPSA8SFRNTElucHV0RWxlbWVudD5lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFwiKSxcbiAgICAgICAgICBsaW5rICAgID0gPEhUTUxBbmNob3JFbGVtZW50PmVsZW1lbnQucXVlcnlTZWxlY3RvcihcImFcIik7XG4gICAgbGV0ICAgaW5pdGlhbCA9IGlucHV0LnZhbHVlO1xuICAgIGNvbnN0IGFjdGlvbiAgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LnZhbHVlID09PSBpbml0aWFsKSB7IHJldHVybiB9ICAvLyBub3QgY2hhbmdlZFxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFttaW4sIHZhbCwgbWF4XSA9IFtpbnB1dC5taW4sIGlucHV0LnZhbHVlLCBpbnB1dC5tYXhdLm1hcChuID0+IHBhcnNlSW50KG4pIHx8IDApO1xuICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWwgPCBtaW4gfHwgdmFsID4gbWF4KSB7ICAvLyByZXNldCBpbnZhbGlkL291dC1vZi1yYW5nZVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQudmFsdWUgPSBpbml0aWFsO1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQuc2VsZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWwgICA9IGlucHV0LnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgIGxpbmsuaHJlZiA9IGdldFVybChpbnB1dC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgbGluay5jbGljaygpO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c1wiLCAoKSA9PiB7IGlucHV0LnNlbGVjdCgpIH0pO1xuICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c291dFwiLCBhY3Rpb24pO1xuICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlwcmVzc1wiLCBlID0+IHsgaWYgKGUua2V5ID09IFwiRW50ZXJcIikgeyBhY3Rpb24oKSB9IH0pO1xuICB9O1xuXG4gIC8vIFB1YmxpYyBpbnRlcmZhY2VcbiAgcmV0dXJuIHtcbiAgICB2ZXJzaW9uOiBcIjQzLjUuMVwiLFxuXG4gICAgLy8gU2NhbiBmb3IgZWxlbWVudHMgd2l0aCBhIFwiZGF0YS1wYWd5XCIgYXR0cmlidXRlIGFuZCBjYWxsIHRoZWlyIGluaXQgZnVuY3Rpb25zIHdpdGggdGhlIGRlY29kZWQgYXJnc1xuICAgIGluaXQoYXJnPzpIVE1MRWxlbWVudCkge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gYXJnIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgPyBhcmcgOiBkb2N1bWVudCxcbiAgICAgICAgICAgIGVsZW1lbnRzID0gdGFyZ2V0LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbZGF0YS1wYWd5XVwiKTtcbiAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiA8Tm9kZUxpc3RPZjxIVE1MRWxlbWVudD4+ZWxlbWVudHMpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBbaGVscGVySWQsIC4uLmFyZ3NdID0gPEluaXRBcmdzPkpTT04ucGFyc2UoQjY0RGVjb2RlKDxzdHJpbmc+ZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJkYXRhLXBhZ3lcIikpKTtcbiAgICAgICAgICBpZiAoaGVscGVySWQgPT0gXCJrXCIpIHtcbiAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3Igc3ByZWFkIDIgYXJndW1lbnRzLCBub3QgMyBhcyBpdCBjb21wbGFpbnMgYWJvdXRcbiAgICAgICAgICAgIHZvaWQgYXVnbWVudEtleW5hdihlbGVtZW50LCAuLi48S2V5bmF2QXJncz48dW5rbm93bj5hcmdzKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGhlbHBlcklkID09IFwic25qXCIpIHtcbiAgICAgICAgICAgIGJ1aWxkTmF2SnMoPE5hdkpzRWxlbWVudD5lbGVtZW50LCA8U2VyaWVzTmF2SnNBcmdzPjx1bmtub3duPmFyZ3MpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaGVscGVySWQgPT0gXCJpbmpcIikge1xuICAgICAgICAgICAgdm9pZCBpbml0SW5wdXROYXZKcyhlbGVtZW50LCA8SW5wdXROYXZKc0FyZ3M+PHVua25vd24+YXJncyk7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LWNvbmRpdGlvblxuICAgICAgICAgIH0gZWxzZSBpZiAoaGVscGVySWQgPT0gXCJsdGpcIikge1xuICAgICAgICAgICAgaW5pdExpbWl0VGFnSnMoZWxlbWVudCwgPExpbWl0VGFnSnNBcmdzPjx1bmtub3duPmFyZ3MpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBlbHNlIHsgY29uc29sZS53YXJuKFwiUGFneS5pbml0OiAlb1xcblVua25vd24gaGVscGVySWQgJyVzJ1wiLCBlbGVtZW50LCBoZWxwZXJJZCkgfVxuICAgICAgICB9IGNhdGNoIChlcnIpIHsgY29uc29sZS53YXJuKFwiUGFneS5pbml0OiAlb1xcbiVzXCIsIGVsZW1lbnQsIGVycikgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcbn0pKCk7XG4iLAogICAgImltcG9ydCBQYWd5IGZyb20gXCIuL3BhZ3kudHNcIlxud2luZG93LlBhZ3kgPSBQYWd5XG4iCiAgXSwKICAibWFwcGluZ3MiOiAiO0FBZ0RBLElBQWdCLHNCQUFNO0FBQUEsRUFDcEIsTUFBTSxpQkFBaUIsb0JBQW9CLFVBQVUsc0JBQXNCO0FBQUEsRUFFM0UsSUFBSSxPQUFPLFFBQVEsU0FBa0IsTUFBd0I7QUFBQSxFQUM3RCxJQUFJLGdCQUFnQjtBQUFBLElBQ2xCLFVBQVU7QUFBQSxJQUNWLE9BQVUsSUFBSSxpQkFBaUIsSUFBSTtBQUFBLElBQ25DLFFBQVUsS0FBSyxJQUFJO0FBQUEsSUFHbkIsS0FB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
@@ -1,2 +1,2 @@
1
- window.Pagy=(()=>{let B="sessionStorage"in window&&"BroadcastChannel"in window,L="pagy",Z,O,W;if(B)Z=sessionStorage,O=new BroadcastChannel(L),W=Date.now(),O.addEventListener("message",(q)=>{if(q.data.from){let z=Z.getItem(q.data.key);if(z)O.postMessage({to:q.data.from,key:q.data.key,str:z})}else if(q.data.to){if(q.data.to==W)Z.setItem(q.data.key,q.data.str)}});let V=new ResizeObserver((q)=>{q.forEach((z)=>{z.target.querySelectorAll(".pagy-rjs").forEach((C)=>{C.render()})})}),_=(q)=>btoa(String.fromCharCode(...new TextEncoder().encode(q))).replace(/[+/=]/g,(z)=>z=="+"?"-":z=="/"?"_":""),x=(q)=>new TextDecoder().decode(Uint8Array.from(atob(q),(z)=>z.charCodeAt(0))),P=()=>Math.floor(Math.random()*46656).toString(36),J=async(q,[z,C,F,H,G])=>{let Q,X=document.cookie.split(/;\s+/).find((M)=>M.startsWith(L+"="))?.split("=")[1]??P();if(document.cookie=`${L}=${X}`,z&&!(z in Z)){if(O.postMessage({from:W,key:z}),await new Promise((M)=>setTimeout(()=>{M("")},100)),!(z in Z))Q=(M)=>`${M}+${String(H)}`}if(!Q){if(!z)do z=P();while(z in Z);let M=Z.getItem(z),Y=M?JSON.parse(M):[void 0];if(G)Y.splice(...G),Z.setItem(z,JSON.stringify(Y));Q=($)=>{let R=parseInt($);return _(JSON.stringify([X,z,R,Y.length,Y[R-1],Y[R]]))}}let D=C?`${C}%5B${F}%5D`:F,E=new RegExp(`(?<=\\?.*)(\\b${D}=)(\\d+)`);for(let M of q.querySelectorAll("a[href]"))M.href=M.href.replace(E,(Y,$,R)=>`${String($)}${Q(R)}`);return Q},T=(q,[[z,C,F,H,G],Q,[X,D,E],M])=>{let Y=q.parentElement,$=-1;if((q.render=()=>{let R=X.findIndex((j)=>j<Y.clientWidth);if(X[R]===$)return;let U=z;if(D[R].forEach((j,I)=>{U+=j=="gap"?H:(typeof j=="number"?C.replace(Q,j):F).replace("L<",E?.[R][I]??`${String(j)}<`)}),U+=G,q.innerHTML="",q.insertAdjacentHTML("afterbegin",U),$=X[R],M&&B)J(q,M)})(),q.classList.contains(L+"-rjs"))V.observe(Y)},w=async(q,[z,C,F])=>{let H=F&&B?await J(q,F):(G)=>G;S(q,(G)=>z.replace(C,H(G)))},A=(q,[z,C,F,H])=>{S(q,(G)=>{return C.replace(F,Math.max(Math.ceil(z/parseInt(G)),1)).replace(H,G)})},S=(q,z)=>{let C=q.querySelector("input"),F=q.querySelector("a"),H=C.value,G=()=>{if(C.value===H)return;let[Q,X,D]=[C.min,C.value,C.max].map((E)=>parseInt(E)||0);if(X<Q||X>D){C.value=H,C.select();return}H=C.value,F.href=z(C.value),F.click()};C.addEventListener("focus",()=>{C.select()}),C.addEventListener("focusout",G),C.addEventListener("keypress",(Q)=>{if(Q.key=="Enter")G()})};return{version:"43.5.0",init(q){let z=q instanceof HTMLElement?q:document,C=z.querySelectorAll("[data-pagy]");for(let F of C)try{let[H,...G]=JSON.parse(x(F.getAttribute("data-pagy")));if(H=="k")J(F,...G);else if(H=="snj")T(F,G);else if(H=="inj")w(F,G);else if(H=="ltj")A(F,G)}catch(H){console.warn(`Pagy.init: %o
1
+ window.Pagy=(()=>{let B="sessionStorage"in window&&"BroadcastChannel"in window,L="pagy",Z,O,W;if(B)Z=sessionStorage,O=new BroadcastChannel(L),W=Date.now(),O.addEventListener("message",(q)=>{if(q.data.from){let z=Z.getItem(q.data.key);if(z)O.postMessage({to:q.data.from,key:q.data.key,str:z})}else if(q.data.to){if(q.data.to==W)Z.setItem(q.data.key,q.data.str)}});let V=new ResizeObserver((q)=>{q.forEach((z)=>{z.target.querySelectorAll(".pagy-rjs").forEach((C)=>{C.render()})})}),_=(q)=>btoa(String.fromCharCode(...new TextEncoder().encode(q))).replace(/[+/=]/g,(z)=>z=="+"?"-":z=="/"?"_":""),x=(q)=>new TextDecoder().decode(Uint8Array.from(atob(q),(z)=>z.charCodeAt(0))),P=()=>Math.floor(Math.random()*46656).toString(36),J=async(q,[z,C,F,H,G])=>{let Q,X=document.cookie.split(/;\s+/).find((M)=>M.startsWith(L+"="))?.split("=")[1]??P();if(document.cookie=`${L}=${X}`,z&&!(z in Z)){if(O.postMessage({from:W,key:z}),await new Promise((M)=>setTimeout(()=>{M("")},100)),!(z in Z))Q=(M)=>`${M}+${String(H)}`}if(!Q){if(!z)do z=P();while(z in Z);let M=Z.getItem(z),Y=M?JSON.parse(M):[void 0];if(G)Y.splice(...G),Z.setItem(z,JSON.stringify(Y));Q=($)=>{let R=parseInt($);return _(JSON.stringify([X,z,R,Y.length,Y[R-1],Y[R]]))}}let D=C?`${C}%5B${F}%5D`:F,E=new RegExp(`(?<=\\?.*)(\\b${D}=)(\\d+)`);for(let M of q.querySelectorAll("a[href]"))M.href=M.href.replace(E,(Y,$,R)=>`${String($)}${Q(R)}`);return Q},T=(q,[[z,C,F,H,G],Q,[X,D,E],M])=>{let Y=q.parentElement,$=-1;if((q.render=()=>{let R=X.findIndex((j)=>j<Y.clientWidth);if(X[R]===$)return;let U=z;if(D[R].forEach((j,I)=>{U+=j=="gap"?H:(typeof j=="number"?C.replace(Q,j):F).replace("L<",E?.[R][I]??`${String(j)}<`)}),U+=G,q.innerHTML="",q.insertAdjacentHTML("afterbegin",U),$=X[R],M&&B)J(q,M)})(),q.classList.contains(L+"-rjs"))V.observe(Y)},w=async(q,[z,C,F])=>{let H=F&&B?await J(q,F):(G)=>G;S(q,(G)=>z.replace(C,H(G)))},A=(q,[z,C,F,H])=>{S(q,(G)=>{return C.replace(F,Math.max(Math.ceil(z/parseInt(G)),1)).replace(H,G)})},S=(q,z)=>{let C=q.querySelector("input"),F=q.querySelector("a"),H=C.value,G=()=>{if(C.value===H)return;let[Q,X,D]=[C.min,C.value,C.max].map((E)=>parseInt(E)||0);if(X<Q||X>D){C.value=H,C.select();return}H=C.value,F.href=z(C.value),F.click()};C.addEventListener("focus",()=>{C.select()}),C.addEventListener("focusout",G),C.addEventListener("keypress",(Q)=>{if(Q.key=="Enter")G()})};return{version:"43.5.1",init(q){let z=q instanceof HTMLElement?q:document,C=z.querySelectorAll("[data-pagy]");for(let F of C)try{let[H,...G]=JSON.parse(x(F.getAttribute("data-pagy")));if(H=="k")J(F,...G);else if(H=="snj")T(F,G);else if(H=="inj")w(F,G);else if(H=="ltj")A(F,G)}catch(H){console.warn(`Pagy.init: %o
2
2
  %s`,F,H)}}}})();
data/javascripts/pagy.mjs CHANGED
@@ -136,7 +136,7 @@ export default (() => {
136
136
  });
137
137
  };
138
138
  return {
139
- version: "43.5.0",
139
+ version: "43.5.1",
140
140
  init(arg) {
141
141
  const target = arg instanceof HTMLElement ? arg : document, elements = target.querySelectorAll("[data-pagy]");
142
142
  for (const element of elements) {
data/lib/pagy/cli.rb CHANGED
@@ -8,8 +8,8 @@ require_relative '../../apps/index'
8
8
 
9
9
  class Pagy
10
10
  class CLI
11
- HOST = 'localhost'
12
- PORT = '8000'
11
+ HOST = 'localhost'
12
+ PORT = '8000'
13
13
 
14
14
  def start(args = ARGV)
15
15
  options = parse_options(args)
@@ -27,9 +27,9 @@ class Pagy
27
27
  Playground to showcase, clone and develop Pagy APPs
28
28
 
29
29
  Usage:
30
- pagy APP [opts] Showcase APP from the installed gem
31
- pagy clone APP Clone APP to the current dir
32
- pagy FILE [opts] Develop app FILE from local path
30
+ pagy APP [opts] Showcase APP from the installed gem
31
+ pagy clone APP Clone APP to the current dir
32
+ pagy FILE [opts] Develop app FILE from local path
33
33
  BANNER
34
34
 
35
35
  opts.summary_indent = ' '
@@ -38,16 +38,16 @@ class Pagy
38
38
  opts.separator "\nAPPs"
39
39
  PagyApps::INDEX.each do |name, path|
40
40
  desc = File.readlines(path)[3].sub('# ', '').strip
41
- opts.separator " #{name.ljust(18)}#{desc}"
41
+ opts.separator " #{name.ljust(19)}#{desc}"
42
42
  end
43
43
 
44
- opts.separator "\nRackup options"
44
+ opts.separator "\nRackup Options"
45
45
  opts.on('-e', '--env ENV', 'Environment') { |v| options[:env] = v }
46
46
  opts.on('-o', '--host HOST', 'Host') { |v| options[:host] = v }
47
47
  opts.on('-p', '--port PORT', 'Port') { |v| options[:port] = v }
48
48
  opts.on('-t', '--threads THREADS', 'Threads') { |v| options[:threads] = v }
49
49
 
50
- opts.separator "\nOther options"
50
+ opts.separator "\nOther Options"
51
51
  opts.on('-q', '--quiet', 'Quiet mode for development') { options[:quiet] = true }
52
52
  opts.on('-v', '--version', 'Show version') do
53
53
  puts VERSION
@@ -79,9 +79,6 @@ class Pagy
79
79
  end
80
80
 
81
81
  def run_command(args, options)
82
- run_from_repo = Pagy::ROOT.join('pagy.gemspec').exist?
83
- setup_gems(run_from_repo)
84
-
85
82
  arg = args.shift
86
83
 
87
84
  if arg.eql?('clone')
@@ -121,15 +118,5 @@ class Pagy
121
118
 
122
119
  exec(rackup)
123
120
  end
124
-
125
- # Kept as a separate method because mocking 'gemfile' (dsl) is complex otherwise
126
- def setup_gems(run_from_repo)
127
- require 'bundler/inline'
128
- gemfile(!run_from_repo) do
129
- source 'https://rubygems.org'
130
- gem 'logger'
131
- gem 'rackup'
132
- end
133
- end
134
121
  end
135
122
  end
data/lib/pagy/console.rb CHANGED
@@ -2,5 +2,7 @@
2
2
 
3
3
  # Console loader
4
4
 
5
+ # :nocov:
5
6
  require 'pagy'
6
7
  include Pagy::Console # rubocop:disable Style/MixinUsage
8
+ # :nocov:
data/lib/pagy.rb CHANGED
@@ -9,7 +9,7 @@ require_relative 'pagy/toolbox/helpers/loaders'
9
9
 
10
10
  # Top superclass
11
11
  class Pagy
12
- VERSION = '43.5.0'
12
+ VERSION = '43.5.1'
13
13
  ROOT = Pathname.new(__dir__).parent.freeze
14
14
  DEFAULT = { limit: 20, limit_key: 'limit', page_key: 'page' }.freeze
15
15
  PAGE_TOKEN = EscapedValue.new('P ')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pagy
3
3
  version: !ruby/object:Gem::Version
4
- version: 43.5.0
4
+ version: 43.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Domizio Demichelis