@sbb-esta/lyne-elements-experimental 1.5.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/core/datetime/date-helper.d.ts.map +1 -1
  2. package/core/timetable/access-leg-helper.d.ts +0 -1
  3. package/core/timetable/timetable-helper.d.ts +0 -1
  4. package/custom-elements.json +0 -184
  5. package/development/core/datetime/date-helper.d.ts.map +1 -1
  6. package/development/core/datetime.js +16 -10
  7. package/development/core/timetable/access-leg-helper.d.ts +0 -1
  8. package/development/core/timetable/timetable-helper.d.ts +0 -1
  9. package/development/journey-summary/journey-summary.d.ts +0 -1
  10. package/development/pearl-chain/pearl-chain.d.ts +0 -1
  11. package/development/pearl-chain-time/pearl-chain-time.d.ts +0 -1
  12. package/development/pearl-chain-time.js +1 -1
  13. package/development/pearl-chain-vertical/pearl-chain-vertical.d.ts +0 -1
  14. package/development/pearl-chain-vertical-item/pearl-chain-vertical-item.d.ts +0 -1
  15. package/development/pearl-chain-vertical-item.js +23 -19
  16. package/development/pearl-chain.js +43 -33
  17. package/development/timetable-duration/timetable-duration.d.ts +0 -1
  18. package/development/timetable-row/timetable-row.d.ts +0 -1
  19. package/development/timetable-row/timetable-row.sample-data.d.ts +0 -1
  20. package/index.d.ts +0 -4
  21. package/index.js +0 -4
  22. package/journey-summary/journey-summary.d.ts +0 -1
  23. package/package.json +2 -12
  24. package/pearl-chain/pearl-chain.d.ts +0 -1
  25. package/pearl-chain-time/pearl-chain-time.d.ts +0 -1
  26. package/pearl-chain-time.js +1 -1
  27. package/pearl-chain-vertical/pearl-chain-vertical.d.ts +0 -1
  28. package/pearl-chain-vertical-item/pearl-chain-vertical-item.d.ts +0 -1
  29. package/pearl-chain-vertical-item.js +1 -1
  30. package/pearl-chain.js +1 -1
  31. package/timetable-duration/timetable-duration.d.ts +0 -1
  32. package/timetable-row/timetable-row.d.ts +0 -1
  33. package/timetable-row/timetable-row.sample-data.d.ts +0 -1
  34. package/development/teaser-hero/teaser-hero.d.ts +0 -26
  35. package/development/teaser-hero/teaser-hero.d.ts.map +0 -1
  36. package/development/teaser-hero.d.ts +0 -2
  37. package/development/teaser-hero.d.ts.map +0 -1
  38. package/development/teaser-hero.js +0 -187
  39. package/development/teaser-paid/teaser-paid.d.ts +0 -20
  40. package/development/teaser-paid/teaser-paid.d.ts.map +0 -1
  41. package/development/teaser-paid.d.ts +0 -2
  42. package/development/teaser-paid.d.ts.map +0 -1
  43. package/development/teaser-paid.js +0 -97
  44. package/teaser-hero/teaser-hero.d.ts +0 -26
  45. package/teaser-hero/teaser-hero.d.ts.map +0 -1
  46. package/teaser-hero.d.ts +0 -2
  47. package/teaser-hero.d.ts.map +0 -1
  48. package/teaser-hero.js +0 -51
  49. package/teaser-paid/teaser-paid.d.ts +0 -20
  50. package/teaser-paid/teaser-paid.d.ts.map +0 -1
  51. package/teaser-paid.d.ts +0 -2
  52. package/teaser-paid.d.ts.map +0 -1
  53. package/teaser-paid.js +0 -28
@@ -1 +1 @@
1
- {"version":3,"file":"date-helper.d.ts","sourceRoot":"","sources":["../../../../src/elements-experimental/core/datetime/date-helper.ts"],"names":[],"mappings":"AAgBA;;;;;;;;;;;;;GAaG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAsBlF;AAED;;;;;;KAMK;AAEL,eAAO,MAAM,cAAc,aACf,MAAM,oBACE,MAAM,KACvB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAoD/B,CAAC"}
1
+ {"version":3,"file":"date-helper.d.ts","sourceRoot":"","sources":["../../../../src/elements-experimental/core/datetime/date-helper.ts"],"names":[],"mappings":"AAgBA;;;;;;;;;;;;;GAaG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAsBlF;AAED;;;;;;KAMK;AAEL,eAAO,MAAM,cAAc,aACf,MAAM,oBACE,MAAM,KACvB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAuD/B,CAAC"}
@@ -1,6 +1,5 @@
1
1
  import { TemplateResult } from 'lit';
2
2
  import { Leg } from './timetable-properties.js';
3
-
4
3
  interface IAccessAttribute {
5
4
  duration: number;
6
5
  text: string;
@@ -1,5 +1,4 @@
1
1
  import { Leg, Notice } from './timetable-properties.js';
2
-
3
2
  export declare const isRideLeg: (leg: any) => leg is Extract<Leg, {
4
3
  __typename: "PTRideLeg";
5
4
  }>;
@@ -811,190 +811,6 @@
811
811
  }
812
812
  ]
813
813
  },
814
- {
815
- "kind": "javascript-module",
816
- "path": "teaser-hero.js",
817
- "declarations": [
818
- {
819
- "kind": "class",
820
- "description": "It displays an image and an action call within a panel.",
821
- "name": "SbbTeaserHeroElement",
822
- "slots": [
823
- {
824
- "description": "Use the unnamed slot to add text content to the panel",
825
- "name": ""
826
- },
827
- {
828
- "description": "Link content of the panel",
829
- "name": "link-content"
830
- },
831
- {
832
- "description": "The background image that can be a `sbb-image`",
833
- "name": "image"
834
- }
835
- ],
836
- "members": [
837
- {
838
- "kind": "field",
839
- "name": "linkContent",
840
- "type": {
841
- "text": "string | undefined"
842
- },
843
- "privacy": "public",
844
- "description": "Panel link text.",
845
- "attribute": "link-content"
846
- },
847
- {
848
- "kind": "field",
849
- "name": "imageSrc",
850
- "type": {
851
- "text": "string | undefined"
852
- },
853
- "privacy": "public",
854
- "description": "Image src will be passed to `sbb-image`.",
855
- "attribute": "image-src"
856
- },
857
- {
858
- "kind": "field",
859
- "name": "imageAlt",
860
- "type": {
861
- "text": "string | undefined"
862
- },
863
- "privacy": "public",
864
- "description": "Image alt text will be passed to `sbb-image`.",
865
- "attribute": "image-alt"
866
- },
867
- {
868
- "kind": "method",
869
- "name": "renderTemplate",
870
- "privacy": "protected",
871
- "return": {
872
- "type": {
873
- "text": "TemplateResult"
874
- }
875
- }
876
- }
877
- ],
878
- "attributes": [
879
- {
880
- "name": "link-content",
881
- "type": {
882
- "text": "string | undefined"
883
- },
884
- "description": "Panel link text.",
885
- "fieldName": "linkContent"
886
- },
887
- {
888
- "name": "image-src",
889
- "type": {
890
- "text": "string | undefined"
891
- },
892
- "description": "Image src will be passed to `sbb-image`.",
893
- "fieldName": "imageSrc"
894
- },
895
- {
896
- "name": "image-alt",
897
- "type": {
898
- "text": "string | undefined"
899
- },
900
- "description": "Image alt text will be passed to `sbb-image`.",
901
- "fieldName": "imageAlt"
902
- }
903
- ],
904
- "superclass": {
905
- "name": "SbbLinkBaseElement",
906
- "package": "@sbb-esta/lyne-elements/core/base-elements.js"
907
- },
908
- "tagName": "sbb-teaser-hero",
909
- "customElement": true
910
- }
911
- ],
912
- "exports": [
913
- {
914
- "kind": "js",
915
- "name": "SbbTeaserHeroElement",
916
- "declaration": {
917
- "name": "SbbTeaserHeroElement",
918
- "module": "teaser-hero.js"
919
- }
920
- },
921
- {
922
- "kind": "custom-element-definition",
923
- "name": "sbb-teaser-hero",
924
- "declaration": {
925
- "name": "SbbTeaserHeroElement",
926
- "module": "teaser-hero.js"
927
- }
928
- }
929
- ]
930
- },
931
- {
932
- "kind": "javascript-module",
933
- "path": "teaser-paid.js",
934
- "declarations": [
935
- {
936
- "kind": "class",
937
- "description": "It displays an image and a chip with a text.",
938
- "name": "SbbTeaserPaidElement",
939
- "slots": [
940
- {
941
- "description": "Link content of the panel",
942
- "name": "chip"
943
- },
944
- {
945
- "description": "The background image that can be a `sbb-image`",
946
- "name": "image"
947
- }
948
- ],
949
- "members": [
950
- {
951
- "kind": "method",
952
- "name": "_chipSlotChanged",
953
- "privacy": "private",
954
- "return": {
955
- "type": {
956
- "text": "void"
957
- }
958
- }
959
- },
960
- {
961
- "kind": "method",
962
- "name": "renderTemplate",
963
- "privacy": "protected",
964
- "return": {
965
- "type": {
966
- "text": "TemplateResult"
967
- }
968
- }
969
- }
970
- ],
971
- "superclass": {
972
- "name": "SbbLinkBaseElement",
973
- "package": "@sbb-esta/lyne-elements/core/base-elements.js"
974
- },
975
- "tagName": "sbb-teaser-paid",
976
- "customElement": true
977
- }
978
- ],
979
- "exports": [
980
- {
981
- "kind": "js",
982
- "name": "SbbTeaserPaidElement",
983
- "declaration": {
984
- "name": "SbbTeaserPaidElement",
985
- "module": "teaser-paid.js"
986
- }
987
- },
988
- {
989
- "kind": "custom-element-definition",
990
- "name": "sbb-teaser-paid",
991
- "declaration": {
992
- "name": "SbbTeaserPaidElement",
993
- "module": "teaser-paid.js"
994
- }
995
- }
996
- ]
997
- },
998
814
  {
999
815
  "kind": "javascript-module",
1000
816
  "path": "timetable-duration.js",
@@ -1 +1 @@
1
- {"version":3,"file":"date-helper.d.ts","sourceRoot":"","sources":["../../../../../src/elements-experimental/core/datetime/date-helper.ts"],"names":[],"mappings":"AAgBA;;;;;;;;;;;;;GAaG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAsBlF;AAED;;;;;;KAMK;AAEL,eAAO,MAAM,cAAc,aACf,MAAM,oBACE,MAAM,KACvB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAoD/B,CAAC"}
1
+ {"version":3,"file":"date-helper.d.ts","sourceRoot":"","sources":["../../../../../src/elements-experimental/core/datetime/date-helper.ts"],"names":[],"mappings":"AAgBA;;;;;;;;;;;;;GAaG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAsBlF;AAED;;;;;;KAMK;AAEL,eAAO,MAAM,cAAc,aACf,MAAM,oBACE,MAAM,KACvB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAuD/B,CAAC"}
@@ -251,25 +251,31 @@ const durationToTime = (duration, currentLanguage) => {
251
251
  const days = differenceInDays(future, now);
252
252
  if (days > 0) {
253
253
  short.push(`${days} d`);
254
- currentLanguage && long.push(
255
- `${days} ${days > 1 ? i18nDurationDay.multiple.long[currentLanguage] : i18nDurationDay.single.long[currentLanguage]}`
256
- );
254
+ if (currentLanguage) {
255
+ long.push(
256
+ `${days} ${days > 1 ? i18nDurationDay.multiple.long[currentLanguage] : i18nDurationDay.single.long[currentLanguage]}`
257
+ );
258
+ }
257
259
  future = subDays(future, days);
258
260
  }
259
261
  const hours = differenceInHours(future, now);
260
262
  if (hours > 0) {
261
263
  short.push(`${hours} h`);
262
- currentLanguage && long.push(
263
- `${hours} ${hours > 1 ? i18nDurationHour.multiple.long[currentLanguage] : i18nDurationHour.single.long[currentLanguage]}`
264
- );
264
+ if (currentLanguage) {
265
+ long.push(
266
+ `${hours} ${hours > 1 ? i18nDurationHour.multiple.long[currentLanguage] : i18nDurationHour.single.long[currentLanguage]}`
267
+ );
268
+ }
265
269
  future = subHours(future, hours);
266
270
  }
267
271
  const minutes = differenceInMinutes(future, now);
268
272
  if (minutes > 0) {
269
273
  short.push(`${minutes} min`);
270
- currentLanguage && long.push(
271
- `${minutes} ${minutes > 1 ? i18nDurationMinute.multiple.long[currentLanguage] : i18nDurationMinute.single.long[currentLanguage]}`
272
- );
274
+ if (currentLanguage) {
275
+ long.push(
276
+ `${minutes} ${minutes > 1 ? i18nDurationMinute.multiple.long[currentLanguage] : i18nDurationMinute.single.long[currentLanguage]}`
277
+ );
278
+ }
273
279
  }
274
280
  return {
275
281
  short: short.join(" "),
@@ -280,4 +286,4 @@ export {
280
286
  durationToTime,
281
287
  removeTimezoneFromISOTimeString
282
288
  };
283
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9hZGREYXlzLm1qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9hZGRIb3Vycy5tanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZGlmZmVyZW5jZUluRGF5cy5tanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZGlmZmVyZW5jZUluSG91cnMubWpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3N1YkRheXMubWpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3BhcnNlSVNPLm1qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9zdWJIb3Vycy5tanMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMtZXhwZXJpbWVudGFsL2NvcmUvZGF0ZXRpbWUvZGF0ZS1oZWxwZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuaW1wb3J0IHsgY29uc3RydWN0RnJvbSB9IGZyb20gXCIuL2NvbnN0cnVjdEZyb20ubWpzXCI7XG5cbi8qKlxuICogQG5hbWUgYWRkRGF5c1xuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgZGF5cyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBkYXlzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIGFtb3VudCAtIFRoZSBhbW91bnQgb2YgZGF5cyB0byBiZSBhZGRlZC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgbmV3IGRhdGUgd2l0aCB0aGUgZGF5cyBhZGRlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBZGQgMTAgZGF5cyB0byAxIFNlcHRlbWJlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gYWRkRGF5cyhuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgMTApXG4gKiAvLz0+IFRodSBTZXAgMTEgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkRGF5cyhkYXRlLCBhbW91bnQpIHtcbiAgY29uc3QgX2RhdGUgPSB0b0RhdGUoZGF0ZSk7XG4gIGlmIChpc05hTihhbW91bnQpKSByZXR1cm4gY29uc3RydWN0RnJvbShkYXRlLCBOYU4pO1xuICBpZiAoIWFtb3VudCkge1xuICAgIC8vIElmIDAgZGF5cywgbm8tb3AgdG8gYXZvaWQgY2hhbmdpbmcgdGltZXMgaW4gdGhlIGhvdXIgYmVmb3JlIGVuZCBvZiBEU1RcbiAgICByZXR1cm4gX2RhdGU7XG4gIH1cbiAgX2RhdGUuc2V0RGF0ZShfZGF0ZS5nZXREYXRlKCkgKyBhbW91bnQpO1xuICByZXR1cm4gX2RhdGU7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgYWRkRGF5cztcbiIsImltcG9ydCB7IGFkZE1pbGxpc2Vjb25kcyB9IGZyb20gXCIuL2FkZE1pbGxpc2Vjb25kcy5tanNcIjtcbmltcG9ydCB7IG1pbGxpc2Vjb25kc0luSG91ciB9IGZyb20gXCIuL2NvbnN0YW50cy5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBhZGRIb3Vyc1xuICogQGNhdGVnb3J5IEhvdXIgSGVscGVyc1xuICogQHN1bW1hcnkgQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGhvdXJzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGhvdXJzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIGFtb3VudCAtIFRoZSBhbW91bnQgb2YgaG91cnMgdG8gYmUgYWRkZWQuXG4gKlxuICogQHJldHVybnMgVGhlIG5ldyBkYXRlIHdpdGggdGhlIGhvdXJzIGFkZGVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFkZCAyIGhvdXJzIHRvIDEwIEp1bHkgMjAxNCAyMzowMDowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZEhvdXJzKG5ldyBEYXRlKDIwMTQsIDYsIDEwLCAyMywgMCksIDIpXG4gKiAvLz0+IEZyaSBKdWwgMTEgMjAxNCAwMTowMDowMFxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkSG91cnMoZGF0ZSwgYW1vdW50KSB7XG4gIHJldHVybiBhZGRNaWxsaXNlY29uZHMoZGF0ZSwgYW1vdW50ICogbWlsbGlzZWNvbmRzSW5Ib3VyKTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBhZGRIb3VycztcbiIsImltcG9ydCB7IGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyB9IGZyb20gXCIuL2RpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cy5tanNcIjtcbmltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5EYXlzXG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIGZ1bGwgZGF5cyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIGZ1bGwgZGF5IHBlcmlvZHMgYmV0d2VlbiB0d28gZGF0ZXMuIEZyYWN0aW9uYWwgZGF5cyBhcmVcbiAqIHRydW5jYXRlZCB0b3dhcmRzIHplcm8uXG4gKlxuICogT25lIFwiZnVsbCBkYXlcIiBpcyB0aGUgZGlzdGFuY2UgYmV0d2VlbiBhIGxvY2FsIHRpbWUgaW4gb25lIGRheSB0byB0aGUgc2FtZVxuICogbG9jYWwgdGltZSBvbiB0aGUgbmV4dCBvciBwcmV2aW91cyBkYXkuIEEgZnVsbCBkYXkgY2FuIHNvbWV0aW1lcyBiZSBsZXNzIHRoYW5cbiAqIG9yIG1vcmUgdGhhbiAyNCBob3VycyBpZiBhIGRheWxpZ2h0IHNhdmluZ3MgY2hhbmdlIGhhcHBlbnMgYmV0d2VlbiB0d28gZGF0ZXMuXG4gKlxuICogVG8gaWdub3JlIERTVCBhbmQgb25seSBtZWFzdXJlIGV4YWN0IDI0LWhvdXIgcGVyaW9kcywgdXNlIHRoaXMgaW5zdGVhZDpcbiAqIGBNYXRoLnRydW5jKGRpZmZlcmVuY2VJbkhvdXJzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpLzI0KXwwYC5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZUxlZnQgLSBUaGUgbGF0ZXIgZGF0ZVxuICogQHBhcmFtIGRhdGVSaWdodCAtIFRoZSBlYXJsaWVyIGRhdGVcbiAqXG4gKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIGZ1bGwgZGF5cyBhY2NvcmRpbmcgdG8gdGhlIGxvY2FsIHRpbWV6b25lXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGZ1bGwgZGF5cyBhcmUgYmV0d2VlblxuICogLy8gMiBKdWx5IDIwMTEgMjM6MDA6MDAgYW5kIDIgSnVseSAyMDEyIDAwOjAwOjAwP1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluRGF5cyhcbiAqICAgbmV3IERhdGUoMjAxMiwgNiwgMiwgMCwgMCksXG4gKiAgIG5ldyBEYXRlKDIwMTEsIDYsIDIsIDIzLCAwKVxuICogKVxuICogLy89PiAzNjVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgZnVsbCBkYXlzIGFyZSBiZXR3ZWVuXG4gKiAvLyAyIEp1bHkgMjAxMSAyMzo1OTowMCBhbmQgMyBKdWx5IDIwMTEgMDA6MDE6MDA/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5EYXlzKFxuICogICBuZXcgRGF0ZSgyMDExLCA2LCAzLCAwLCAxKSxcbiAqICAgbmV3IERhdGUoMjAxMSwgNiwgMiwgMjMsIDU5KVxuICogKVxuICogLy89PiAwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGZ1bGwgZGF5cyBhcmUgYmV0d2VlblxuICogLy8gMSBNYXJjaCAyMDIwIDA6MDAgYW5kIDEgSnVuZSAyMDIwIDA6MDAgP1xuICogLy8gTm90ZTogYmVjYXVzZSBsb2NhbCB0aW1lIGlzIHVzZWQsIHRoZVxuICogLy8gcmVzdWx0IHdpbGwgYWx3YXlzIGJlIDkyIGRheXMsIGV2ZW4gaW5cbiAqIC8vIHRpbWUgem9uZXMgd2hlcmUgRFNUIHN0YXJ0cyBhbmQgdGhlXG4gKiAvLyBwZXJpb2QgaGFzIG9ubHkgOTIqMjQtMSBob3Vycy5cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbkRheXMoXG4gKiAgIG5ldyBEYXRlKDIwMjAsIDUsIDEpLFxuICogICBuZXcgRGF0ZSgyMDIwLCAyLCAxKVxuICogKVxuICogLy89PiA5MlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGlmZmVyZW5jZUluRGF5cyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KSB7XG4gIGNvbnN0IF9kYXRlTGVmdCA9IHRvRGF0ZShkYXRlTGVmdCk7XG4gIGNvbnN0IF9kYXRlUmlnaHQgPSB0b0RhdGUoZGF0ZVJpZ2h0KTtcblxuICBjb25zdCBzaWduID0gY29tcGFyZUxvY2FsQXNjKF9kYXRlTGVmdCwgX2RhdGVSaWdodCk7XG4gIGNvbnN0IGRpZmZlcmVuY2UgPSBNYXRoLmFicyhkaWZmZXJlbmNlSW5DYWxlbmRhckRheXMoX2RhdGVMZWZ0LCBfZGF0ZVJpZ2h0KSk7XG5cbiAgX2RhdGVMZWZ0LnNldERhdGUoX2RhdGVMZWZ0LmdldERhdGUoKSAtIHNpZ24gKiBkaWZmZXJlbmNlKTtcblxuICAvLyBNYXRoLmFicyhkaWZmIGluIGZ1bGwgZGF5cyAtIGRpZmYgaW4gY2FsZW5kYXIgZGF5cykgPT09IDEgaWYgbGFzdCBjYWxlbmRhciBkYXkgaXMgbm90IGZ1bGxcbiAgLy8gSWYgc28sIHJlc3VsdCBtdXN0IGJlIGRlY3JlYXNlZCBieSAxIGluIGFic29sdXRlIHZhbHVlXG4gIGNvbnN0IGlzTGFzdERheU5vdEZ1bGwgPSBOdW1iZXIoXG4gICAgY29tcGFyZUxvY2FsQXNjKF9kYXRlTGVmdCwgX2RhdGVSaWdodCkgPT09IC1zaWduLFxuICApO1xuICBjb25zdCByZXN1bHQgPSBzaWduICogKGRpZmZlcmVuY2UgLSBpc0xhc3REYXlOb3RGdWxsKTtcbiAgLy8gUHJldmVudCBuZWdhdGl2ZSB6ZXJvXG4gIHJldHVybiByZXN1bHQgPT09IDAgPyAwIDogcmVzdWx0O1xufVxuXG4vLyBMaWtlIGBjb21wYXJlQXNjYCBidXQgdXNlcyBsb2NhbCB0aW1lIG5vdCBVVEMsIHdoaWNoIGlzIG5lZWRlZFxuLy8gZm9yIGFjY3VyYXRlIGVxdWFsaXR5IGNvbXBhcmlzb25zIG9mIFVUQyB0aW1lc3RhbXBzIHRoYXQgZW5kIHVwXG4vLyBoYXZpbmcgdGhlIHNhbWUgcmVwcmVzZW50YXRpb24gaW4gbG9jYWwgdGltZSwgZS5nLiBvbmUgaG91ciBiZWZvcmVcbi8vIERTVCBlbmRzIHZzLiB0aGUgaW5zdGFudCB0aGF0IERTVCBlbmRzLlxuZnVuY3Rpb24gY29tcGFyZUxvY2FsQXNjKGRhdGVMZWZ0LCBkYXRlUmlnaHQpIHtcbiAgY29uc3QgZGlmZiA9XG4gICAgZGF0ZUxlZnQuZ2V0RnVsbFllYXIoKSAtIGRhdGVSaWdodC5nZXRGdWxsWWVhcigpIHx8XG4gICAgZGF0ZUxlZnQuZ2V0TW9udGgoKSAtIGRhdGVSaWdodC5nZXRNb250aCgpIHx8XG4gICAgZGF0ZUxlZnQuZ2V0RGF0ZSgpIC0gZGF0ZVJpZ2h0LmdldERhdGUoKSB8fFxuICAgIGRhdGVMZWZ0LmdldEhvdXJzKCkgLSBkYXRlUmlnaHQuZ2V0SG91cnMoKSB8fFxuICAgIGRhdGVMZWZ0LmdldE1pbnV0ZXMoKSAtIGRhdGVSaWdodC5nZXRNaW51dGVzKCkgfHxcbiAgICBkYXRlTGVmdC5nZXRTZWNvbmRzKCkgLSBkYXRlUmlnaHQuZ2V0U2Vjb25kcygpIHx8XG4gICAgZGF0ZUxlZnQuZ2V0TWlsbGlzZWNvbmRzKCkgLSBkYXRlUmlnaHQuZ2V0TWlsbGlzZWNvbmRzKCk7XG5cbiAgaWYgKGRpZmYgPCAwKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9IGVsc2UgaWYgKGRpZmYgPiAwKSB7XG4gICAgcmV0dXJuIDE7XG4gICAgLy8gUmV0dXJuIDAgaWYgZGlmZiBpcyAwOyByZXR1cm4gTmFOIGlmIGRpZmYgaXMgTmFOXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGRpZmY7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBkaWZmZXJlbmNlSW5EYXlzO1xuIiwiaW1wb3J0IHsgZ2V0Um91bmRpbmdNZXRob2QgfSBmcm9tIFwiLi9fbGliL2dldFJvdW5kaW5nTWV0aG9kLm1qc1wiO1xuaW1wb3J0IHsgbWlsbGlzZWNvbmRzSW5Ib3VyIH0gZnJvbSBcIi4vY29uc3RhbnRzLm1qc1wiO1xuaW1wb3J0IHsgZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzIH0gZnJvbSBcIi4vZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzLm1qc1wiO1xuXG4vKipcbiAqIFRoZSB7QGxpbmsgZGlmZmVyZW5jZUluSG91cnN9IGZ1bmN0aW9uIG9wdGlvbnMuXG4gKi9cblxuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5Ib3Vyc1xuICogQGNhdGVnb3J5IEhvdXIgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgaG91cnMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG51bWJlciBvZiBob3VycyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZUxlZnQgLSBUaGUgbGF0ZXIgZGF0ZVxuICogQHBhcmFtIGRhdGVSaWdodCAtIFRoZSBlYXJsaWVyIGRhdGVcbiAqIEBwYXJhbSBvcHRpb25zIC0gQW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqXG4gKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIGhvdXJzXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGhvdXJzIGFyZSBiZXR3ZWVuIDIgSnVseSAyMDE0IDA2OjUwOjAwIGFuZCAyIEp1bHkgMjAxNCAxOTowMDowMD9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbkhvdXJzKFxuICogICBuZXcgRGF0ZSgyMDE0LCA2LCAyLCAxOSwgMCksXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDIsIDYsIDUwKVxuICogKVxuICogLy89PiAxMlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGlmZmVyZW5jZUluSG91cnMoZGF0ZUxlZnQsIGRhdGVSaWdodCwgb3B0aW9ucykge1xuICBjb25zdCBkaWZmID1cbiAgICBkaWZmZXJlbmNlSW5NaWxsaXNlY29uZHMoZGF0ZUxlZnQsIGRhdGVSaWdodCkgLyBtaWxsaXNlY29uZHNJbkhvdXI7XG4gIHJldHVybiBnZXRSb3VuZGluZ01ldGhvZChvcHRpb25zPy5yb3VuZGluZ01ldGhvZCkoZGlmZik7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgZGlmZmVyZW5jZUluSG91cnM7XG4iLCJpbXBvcnQgeyBhZGREYXlzIH0gZnJvbSBcIi4vYWRkRGF5cy5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBzdWJEYXlzXG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGRheXMgZnJvbSB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGRheXMgZnJvbSB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSBhbW91bnQgLSBUaGUgYW1vdW50IG9mIGRheXMgdG8gYmUgc3VidHJhY3RlZC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgbmV3IGRhdGUgd2l0aCB0aGUgZGF5cyBzdWJ0cmFjdGVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFN1YnRyYWN0IDEwIGRheXMgZnJvbSAxIFNlcHRlbWJlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gc3ViRGF5cyhuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgMTApXG4gKiAvLz0+IEZyaSBBdWcgMjIgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3ViRGF5cyhkYXRlLCBhbW91bnQpIHtcbiAgcmV0dXJuIGFkZERheXMoZGF0ZSwgLWFtb3VudCk7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgc3ViRGF5cztcbiIsImltcG9ydCB7IG1pbGxpc2Vjb25kc0luSG91ciwgbWlsbGlzZWNvbmRzSW5NaW51dGUgfSBmcm9tIFwiLi9jb25zdGFudHMubWpzXCI7XG5cbi8qKlxuICogVGhlIHtAbGluayBwYXJzZUlTT30gZnVuY3Rpb24gb3B0aW9ucy5cbiAqL1xuXG4vKipcbiAqIEBuYW1lIHBhcnNlSVNPXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFBhcnNlIElTTyBzdHJpbmdcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFBhcnNlIHRoZSBnaXZlbiBzdHJpbmcgaW4gSVNPIDg2MDEgZm9ybWF0IGFuZCByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBGdW5jdGlvbiBhY2NlcHRzIGNvbXBsZXRlIElTTyA4NjAxIGZvcm1hdHMgYXMgd2VsbCBhcyBwYXJ0aWFsIGltcGxlbWVudGF0aW9ucy5cbiAqIElTTyA4NjAxOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzbid0IGEgc3RyaW5nLCB0aGUgZnVuY3Rpb24gY2Fubm90IHBhcnNlIHRoZSBzdHJpbmcgb3JcbiAqIHRoZSB2YWx1ZXMgYXJlIGludmFsaWQsIGl0IHJldHVybnMgSW52YWxpZCBEYXRlLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBhcmd1bWVudCAtIFRoZSB2YWx1ZSB0byBjb252ZXJ0XG4gKiBAcGFyYW0gb3B0aW9ucyAtIEFuIG9iamVjdCB3aXRoIG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIGRhdGUgaW4gdGhlIGxvY2FsIHRpbWUgem9uZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IHN0cmluZyAnMjAxNC0wMi0xMVQxMTozMDozMCcgdG8gZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHBhcnNlSVNPKCcyMDE0LTAyLTExVDExOjMwOjMwJylcbiAqIC8vPT4gVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgc3RyaW5nICcrMDIwMTQxMDEnIHRvIGRhdGUsXG4gKiAvLyBpZiB0aGUgYWRkaXRpb25hbCBudW1iZXIgb2YgZGlnaXRzIGluIHRoZSBleHRlbmRlZCB5ZWFyIGZvcm1hdCBpcyAxOlxuICogY29uc3QgcmVzdWx0ID0gcGFyc2VJU08oJyswMjAxNDEwMScsIHsgYWRkaXRpb25hbERpZ2l0czogMSB9KVxuICogLy89PiBGcmkgQXByIDExIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlSVNPKGFyZ3VtZW50LCBvcHRpb25zKSB7XG4gIGNvbnN0IGFkZGl0aW9uYWxEaWdpdHMgPSBvcHRpb25zPy5hZGRpdGlvbmFsRGlnaXRzID8/IDI7XG4gIGNvbnN0IGRhdGVTdHJpbmdzID0gc3BsaXREYXRlU3RyaW5nKGFyZ3VtZW50KTtcblxuICBsZXQgZGF0ZTtcbiAgaWYgKGRhdGVTdHJpbmdzLmRhdGUpIHtcbiAgICBjb25zdCBwYXJzZVllYXJSZXN1bHQgPSBwYXJzZVllYXIoZGF0ZVN0cmluZ3MuZGF0ZSwgYWRkaXRpb25hbERpZ2l0cyk7XG4gICAgZGF0ZSA9IHBhcnNlRGF0ZShwYXJzZVllYXJSZXN1bHQucmVzdERhdGVTdHJpbmcsIHBhcnNlWWVhclJlc3VsdC55ZWFyKTtcbiAgfVxuXG4gIGlmICghZGF0ZSB8fCBpc05hTihkYXRlLmdldFRpbWUoKSkpIHtcbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxuXG4gIGNvbnN0IHRpbWVzdGFtcCA9IGRhdGUuZ2V0VGltZSgpO1xuICBsZXQgdGltZSA9IDA7XG4gIGxldCBvZmZzZXQ7XG5cbiAgaWYgKGRhdGVTdHJpbmdzLnRpbWUpIHtcbiAgICB0aW1lID0gcGFyc2VUaW1lKGRhdGVTdHJpbmdzLnRpbWUpO1xuICAgIGlmIChpc05hTih0aW1lKSkge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gICAgfVxuICB9XG5cbiAgaWYgKGRhdGVTdHJpbmdzLnRpbWV6b25lKSB7XG4gICAgb2Zmc2V0ID0gcGFyc2VUaW1lem9uZShkYXRlU3RyaW5ncy50aW1lem9uZSk7XG4gICAgaWYgKGlzTmFOKG9mZnNldCkpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBkaXJ0eURhdGUgPSBuZXcgRGF0ZSh0aW1lc3RhbXAgKyB0aW1lKTtcbiAgICAvLyBKUyBwYXJzZWQgc3RyaW5nIGFzc3VtaW5nIGl0J3MgaW4gVVRDIHRpbWV6b25lXG4gICAgLy8gYnV0IHdlIG5lZWQgaXQgdG8gYmUgcGFyc2VkIGluIG91ciB0aW1lem9uZVxuICAgIC8vIHNvIHdlIHVzZSB1dGMgdmFsdWVzIHRvIGJ1aWxkIGRhdGUgaW4gb3VyIHRpbWV6b25lLlxuICAgIC8vIFllYXIgdmFsdWVzIGZyb20gMCB0byA5OSBtYXAgdG8gdGhlIHllYXJzIDE5MDAgdG8gMTk5OVxuICAgIC8vIHNvIHNldCB5ZWFyIGV4cGxpY2l0bHkgd2l0aCBzZXRGdWxsWWVhci5cbiAgICBjb25zdCByZXN1bHQgPSBuZXcgRGF0ZSgwKTtcbiAgICByZXN1bHQuc2V0RnVsbFllYXIoXG4gICAgICBkaXJ0eURhdGUuZ2V0VVRDRnVsbFllYXIoKSxcbiAgICAgIGRpcnR5RGF0ZS5nZXRVVENNb250aCgpLFxuICAgICAgZGlydHlEYXRlLmdldFVUQ0RhdGUoKSxcbiAgICApO1xuICAgIHJlc3VsdC5zZXRIb3VycyhcbiAgICAgIGRpcnR5RGF0ZS5nZXRVVENIb3VycygpLFxuICAgICAgZGlydHlEYXRlLmdldFVUQ01pbnV0ZXMoKSxcbiAgICAgIGRpcnR5RGF0ZS5nZXRVVENTZWNvbmRzKCksXG4gICAgICBkaXJ0eURhdGUuZ2V0VVRDTWlsbGlzZWNvbmRzKCksXG4gICAgKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcmV0dXJuIG5ldyBEYXRlKHRpbWVzdGFtcCArIHRpbWUgKyBvZmZzZXQpO1xufVxuXG5jb25zdCBwYXR0ZXJucyA9IHtcbiAgZGF0ZVRpbWVEZWxpbWl0ZXI6IC9bVCBdLyxcbiAgdGltZVpvbmVEZWxpbWl0ZXI6IC9bWiBdL2ksXG4gIHRpbWV6b25lOiAvKFtaKy1dLiopJC8sXG59O1xuXG5jb25zdCBkYXRlUmVnZXggPVxuICAvXi0/KD86KFxcZHszfSl8KFxcZHsyfSkoPzotPyhcXGR7Mn0pKT98VyhcXGR7Mn0pKD86LT8oXFxkezF9KSk/fCkkLztcbmNvbnN0IHRpbWVSZWdleCA9XG4gIC9eKFxcZHsyfSg/OlsuLF1cXGQqKT8pKD86Oj8oXFxkezJ9KD86Wy4sXVxcZCopPykpPyg/Ojo/KFxcZHsyfSg/OlsuLF1cXGQqKT8pKT8kLztcbmNvbnN0IHRpbWV6b25lUmVnZXggPSAvXihbKy1dKShcXGR7Mn0pKD86Oj8oXFxkezJ9KSk/JC87XG5cbmZ1bmN0aW9uIHNwbGl0RGF0ZVN0cmluZyhkYXRlU3RyaW5nKSB7XG4gIGNvbnN0IGRhdGVTdHJpbmdzID0ge307XG4gIGNvbnN0IGFycmF5ID0gZGF0ZVN0cmluZy5zcGxpdChwYXR0ZXJucy5kYXRlVGltZURlbGltaXRlcik7XG4gIGxldCB0aW1lU3RyaW5nO1xuXG4gIC8vIFRoZSByZWdleCBtYXRjaCBzaG91bGQgb25seSByZXR1cm4gYXQgbWF4aW11bSB0d28gYXJyYXkgZWxlbWVudHMuXG4gIC8vIFtkYXRlXSwgW3RpbWVdLCBvciBbZGF0ZSwgdGltZV0uXG4gIGlmIChhcnJheS5sZW5ndGggPiAyKSB7XG4gICAgcmV0dXJuIGRhdGVTdHJpbmdzO1xuICB9XG5cbiAgaWYgKC86Ly50ZXN0KGFycmF5WzBdKSkge1xuICAgIHRpbWVTdHJpbmcgPSBhcnJheVswXTtcbiAgfSBlbHNlIHtcbiAgICBkYXRlU3RyaW5ncy5kYXRlID0gYXJyYXlbMF07XG4gICAgdGltZVN0cmluZyA9IGFycmF5WzFdO1xuICAgIGlmIChwYXR0ZXJucy50aW1lWm9uZURlbGltaXRlci50ZXN0KGRhdGVTdHJpbmdzLmRhdGUpKSB7XG4gICAgICBkYXRlU3RyaW5ncy5kYXRlID0gZGF0ZVN0cmluZy5zcGxpdChwYXR0ZXJucy50aW1lWm9uZURlbGltaXRlcilbMF07XG4gICAgICB0aW1lU3RyaW5nID0gZGF0ZVN0cmluZy5zdWJzdHIoXG4gICAgICAgIGRhdGVTdHJpbmdzLmRhdGUubGVuZ3RoLFxuICAgICAgICBkYXRlU3RyaW5nLmxlbmd0aCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHRpbWVTdHJpbmcpIHtcbiAgICBjb25zdCB0b2tlbiA9IHBhdHRlcm5zLnRpbWV6b25lLmV4ZWModGltZVN0cmluZyk7XG4gICAgaWYgKHRva2VuKSB7XG4gICAgICBkYXRlU3RyaW5ncy50aW1lID0gdGltZVN0cmluZy5yZXBsYWNlKHRva2VuWzFdLCBcIlwiKTtcbiAgICAgIGRhdGVTdHJpbmdzLnRpbWV6b25lID0gdG9rZW5bMV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGRhdGVTdHJpbmdzLnRpbWUgPSB0aW1lU3RyaW5nO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkYXRlU3RyaW5ncztcbn1cblxuZnVuY3Rpb24gcGFyc2VZZWFyKGRhdGVTdHJpbmcsIGFkZGl0aW9uYWxEaWdpdHMpIHtcbiAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKFxuICAgIFwiXig/OihcXFxcZHs0fXxbKy1dXFxcXGR7XCIgK1xuICAgICAgKDQgKyBhZGRpdGlvbmFsRGlnaXRzKSArXG4gICAgICBcIn0pfChcXFxcZHsyfXxbKy1dXFxcXGR7XCIgK1xuICAgICAgKDIgKyBhZGRpdGlvbmFsRGlnaXRzKSArXG4gICAgICBcIn0pJClcIixcbiAgKTtcblxuICBjb25zdCBjYXB0dXJlcyA9IGRhdGVTdHJpbmcubWF0Y2gocmVnZXgpO1xuICAvLyBJbnZhbGlkIElTTy1mb3JtYXR0ZWQgeWVhclxuICBpZiAoIWNhcHR1cmVzKSByZXR1cm4geyB5ZWFyOiBOYU4sIHJlc3REYXRlU3RyaW5nOiBcIlwiIH07XG5cbiAgY29uc3QgeWVhciA9IGNhcHR1cmVzWzFdID8gcGFyc2VJbnQoY2FwdHVyZXNbMV0pIDogbnVsbDtcbiAgY29uc3QgY2VudHVyeSA9IGNhcHR1cmVzWzJdID8gcGFyc2VJbnQoY2FwdHVyZXNbMl0pIDogbnVsbDtcblxuICAvLyBlaXRoZXIgeWVhciBvciBjZW50dXJ5IGlzIG51bGwsIG5vdCBib3RoXG4gIHJldHVybiB7XG4gICAgeWVhcjogY2VudHVyeSA9PT0gbnVsbCA/IHllYXIgOiBjZW50dXJ5ICogMTAwLFxuICAgIHJlc3REYXRlU3RyaW5nOiBkYXRlU3RyaW5nLnNsaWNlKChjYXB0dXJlc1sxXSB8fCBjYXB0dXJlc1syXSkubGVuZ3RoKSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gcGFyc2VEYXRlKGRhdGVTdHJpbmcsIHllYXIpIHtcbiAgLy8gSW52YWxpZCBJU08tZm9ybWF0dGVkIHllYXJcbiAgaWYgKHllYXIgPT09IG51bGwpIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuXG4gIGNvbnN0IGNhcHR1cmVzID0gZGF0ZVN0cmluZy5tYXRjaChkYXRlUmVnZXgpO1xuICAvLyBJbnZhbGlkIElTTy1mb3JtYXR0ZWQgc3RyaW5nXG4gIGlmICghY2FwdHVyZXMpIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuXG4gIGNvbnN0IGlzV2Vla0RhdGUgPSAhIWNhcHR1cmVzWzRdO1xuICBjb25zdCBkYXlPZlllYXIgPSBwYXJzZURhdGVVbml0KGNhcHR1cmVzWzFdKTtcbiAgY29uc3QgbW9udGggPSBwYXJzZURhdGVVbml0KGNhcHR1cmVzWzJdKSAtIDE7XG4gIGNvbnN0IGRheSA9IHBhcnNlRGF0ZVVuaXQoY2FwdHVyZXNbM10pO1xuICBjb25zdCB3ZWVrID0gcGFyc2VEYXRlVW5pdChjYXB0dXJlc1s0XSk7XG4gIGNvbnN0IGRheU9mV2VlayA9IHBhcnNlRGF0ZVVuaXQoY2FwdHVyZXNbNV0pIC0gMTtcblxuICBpZiAoaXNXZWVrRGF0ZSkge1xuICAgIGlmICghdmFsaWRhdGVXZWVrRGF0ZSh5ZWFyLCB3ZWVrLCBkYXlPZldlZWspKSB7XG4gICAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgICB9XG4gICAgcmV0dXJuIGRheU9mSVNPV2Vla1llYXIoeWVhciwgd2VlaywgZGF5T2ZXZWVrKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoMCk7XG4gICAgaWYgKFxuICAgICAgIXZhbGlkYXRlRGF0ZSh5ZWFyLCBtb250aCwgZGF5KSB8fFxuICAgICAgIXZhbGlkYXRlRGF5T2ZZZWFyRGF0ZSh5ZWFyLCBkYXlPZlllYXIpXG4gICAgKSB7XG4gICAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgICB9XG4gICAgZGF0ZS5zZXRVVENGdWxsWWVhcih5ZWFyLCBtb250aCwgTWF0aC5tYXgoZGF5T2ZZZWFyLCBkYXkpKTtcbiAgICByZXR1cm4gZGF0ZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZURhdGVVbml0KHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA/IHBhcnNlSW50KHZhbHVlKSA6IDE7XG59XG5cbmZ1bmN0aW9uIHBhcnNlVGltZSh0aW1lU3RyaW5nKSB7XG4gIGNvbnN0IGNhcHR1cmVzID0gdGltZVN0cmluZy5tYXRjaCh0aW1lUmVnZXgpO1xuICBpZiAoIWNhcHR1cmVzKSByZXR1cm4gTmFOOyAvLyBJbnZhbGlkIElTTy1mb3JtYXR0ZWQgdGltZVxuXG4gIGNvbnN0IGhvdXJzID0gcGFyc2VUaW1lVW5pdChjYXB0dXJlc1sxXSk7XG4gIGNvbnN0IG1pbnV0ZXMgPSBwYXJzZVRpbWVVbml0KGNhcHR1cmVzWzJdKTtcbiAgY29uc3Qgc2Vjb25kcyA9IHBhcnNlVGltZVVuaXQoY2FwdHVyZXNbM10pO1xuXG4gIGlmICghdmFsaWRhdGVUaW1lKGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKSkge1xuICAgIHJldHVybiBOYU47XG4gIH1cblxuICByZXR1cm4gKFxuICAgIGhvdXJzICogbWlsbGlzZWNvbmRzSW5Ib3VyICsgbWludXRlcyAqIG1pbGxpc2Vjb25kc0luTWludXRlICsgc2Vjb25kcyAqIDEwMDBcbiAgKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VUaW1lVW5pdCh2YWx1ZSkge1xuICByZXR1cm4gKHZhbHVlICYmIHBhcnNlRmxvYXQodmFsdWUucmVwbGFjZShcIixcIiwgXCIuXCIpKSkgfHwgMDtcbn1cblxuZnVuY3Rpb24gcGFyc2VUaW1lem9uZSh0aW1lem9uZVN0cmluZykge1xuICBpZiAodGltZXpvbmVTdHJpbmcgPT09IFwiWlwiKSByZXR1cm4gMDtcblxuICBjb25zdCBjYXB0dXJlcyA9IHRpbWV6b25lU3RyaW5nLm1hdGNoKHRpbWV6b25lUmVnZXgpO1xuICBpZiAoIWNhcHR1cmVzKSByZXR1cm4gMDtcblxuICBjb25zdCBzaWduID0gY2FwdHVyZXNbMV0gPT09IFwiK1wiID8gLTEgOiAxO1xuICBjb25zdCBob3VycyA9IHBhcnNlSW50KGNhcHR1cmVzWzJdKTtcbiAgY29uc3QgbWludXRlcyA9IChjYXB0dXJlc1szXSAmJiBwYXJzZUludChjYXB0dXJlc1szXSkpIHx8IDA7XG5cbiAgaWYgKCF2YWxpZGF0ZVRpbWV6b25lKGhvdXJzLCBtaW51dGVzKSkge1xuICAgIHJldHVybiBOYU47XG4gIH1cblxuICByZXR1cm4gc2lnbiAqIChob3VycyAqIG1pbGxpc2Vjb25kc0luSG91ciArIG1pbnV0ZXMgKiBtaWxsaXNlY29uZHNJbk1pbnV0ZSk7XG59XG5cbmZ1bmN0aW9uIGRheU9mSVNPV2Vla1llYXIoaXNvV2Vla1llYXIsIHdlZWssIGRheSkge1xuICBjb25zdCBkYXRlID0gbmV3IERhdGUoMCk7XG4gIGRhdGUuc2V0VVRDRnVsbFllYXIoaXNvV2Vla1llYXIsIDAsIDQpO1xuICBjb25zdCBmb3VydGhPZkphbnVhcnlEYXkgPSBkYXRlLmdldFVUQ0RheSgpIHx8IDc7XG4gIGNvbnN0IGRpZmYgPSAod2VlayAtIDEpICogNyArIGRheSArIDEgLSBmb3VydGhPZkphbnVhcnlEYXk7XG4gIGRhdGUuc2V0VVRDRGF0ZShkYXRlLmdldFVUQ0RhdGUoKSArIGRpZmYpO1xuICByZXR1cm4gZGF0ZTtcbn1cblxuLy8gVmFsaWRhdGlvbiBmdW5jdGlvbnNcblxuLy8gRmVicnVhcnkgaXMgbnVsbCB0byBoYW5kbGUgdGhlIGxlYXAgeWVhciAodXNpbmcgfHwpXG5jb25zdCBkYXlzSW5Nb250aHMgPSBbMzEsIG51bGwsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxXTtcblxuZnVuY3Rpb24gaXNMZWFwWWVhckluZGV4KHllYXIpIHtcbiAgcmV0dXJuIHllYXIgJSA0MDAgPT09IDAgfHwgKHllYXIgJSA0ID09PSAwICYmIHllYXIgJSAxMDAgIT09IDApO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZURhdGUoeWVhciwgbW9udGgsIGRhdGUpIHtcbiAgcmV0dXJuIChcbiAgICBtb250aCA+PSAwICYmXG4gICAgbW9udGggPD0gMTEgJiZcbiAgICBkYXRlID49IDEgJiZcbiAgICBkYXRlIDw9IChkYXlzSW5Nb250aHNbbW9udGhdIHx8IChpc0xlYXBZZWFySW5kZXgoeWVhcikgPyAyOSA6IDI4KSlcbiAgKTtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVEYXlPZlllYXJEYXRlKHllYXIsIGRheU9mWWVhcikge1xuICByZXR1cm4gZGF5T2ZZZWFyID49IDEgJiYgZGF5T2ZZZWFyIDw9IChpc0xlYXBZZWFySW5kZXgoeWVhcikgPyAzNjYgOiAzNjUpO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVdlZWtEYXRlKF95ZWFyLCB3ZWVrLCBkYXkpIHtcbiAgcmV0dXJuIHdlZWsgPj0gMSAmJiB3ZWVrIDw9IDUzICYmIGRheSA+PSAwICYmIGRheSA8PSA2O1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVRpbWUoaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpIHtcbiAgaWYgKGhvdXJzID09PSAyNCkge1xuICAgIHJldHVybiBtaW51dGVzID09PSAwICYmIHNlY29uZHMgPT09IDA7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIHNlY29uZHMgPj0gMCAmJlxuICAgIHNlY29uZHMgPCA2MCAmJlxuICAgIG1pbnV0ZXMgPj0gMCAmJlxuICAgIG1pbnV0ZXMgPCA2MCAmJlxuICAgIGhvdXJzID49IDAgJiZcbiAgICBob3VycyA8IDI1XG4gICk7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlVGltZXpvbmUoX2hvdXJzLCBtaW51dGVzKSB7XG4gIHJldHVybiBtaW51dGVzID49IDAgJiYgbWludXRlcyA8PSA1OTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBwYXJzZUlTTztcbiIsImltcG9ydCB7IGFkZEhvdXJzIH0gZnJvbSBcIi4vYWRkSG91cnMubWpzXCI7XG5cbi8qKlxuICogQG5hbWUgc3ViSG91cnNcbiAqIEBjYXRlZ29yeSBIb3VyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGhvdXJzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBob3VycyBmcm9tIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIGFtb3VudCAtIFRoZSBhbW91bnQgb2YgaG91cnMgdG8gYmUgc3VidHJhY3RlZC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgbmV3IGRhdGUgd2l0aCB0aGUgaG91cnMgc3VidHJhY3RlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdWJ0cmFjdCAyIGhvdXJzIGZyb20gMTEgSnVseSAyMDE0IDAxOjAwOjAwOlxuICogY29uc3QgcmVzdWx0ID0gc3ViSG91cnMobmV3IERhdGUoMjAxNCwgNiwgMTEsIDEsIDApLCAyKVxuICogLy89PiBUaHUgSnVsIDEwIDIwMTQgMjM6MDA6MDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN1YkhvdXJzKGRhdGUsIGFtb3VudCkge1xuICByZXR1cm4gYWRkSG91cnMoZGF0ZSwgLWFtb3VudCk7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgc3ViSG91cnM7XG4iLCJpbXBvcnQge1xuICBpMThuRHVyYXRpb25Ib3VyLFxuICBpMThuRHVyYXRpb25NaW51dGUsXG4gIGkxOG5EdXJhdGlvbkRheSxcbn0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9pMThuLmpzJztcbmltcG9ydCB7XG4gIGlzVmFsaWQsXG4gIHBhcnNlSVNPLFxuICBkaWZmZXJlbmNlSW5EYXlzLFxuICBkaWZmZXJlbmNlSW5Ib3VycyxcbiAgZGlmZmVyZW5jZUluTWludXRlcyxcbiAgYWRkTWludXRlcyxcbiAgc3ViSG91cnMsXG4gIHN1YkRheXMsXG59IGZyb20gJ2RhdGUtZm5zJztcblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIHJlbW92ZXMgdGhlIG9mZnNldCBvZiBhIElTTyBkYXRlIHN0cmluZy4gVGhpcyBuZWVkcyB0byBiZSBkb25lIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBvZmZzZXQgaXMgaWdub3JlZC5cbiAqIElmIGl0IGlzIG5vdCByZW1vdmVkIHRoZSB0aW1lIHdvdWxkIGJlIGNvbnZlcnRlZCB0byB0aGUgYnJvd3NlcnMgbG9jYWwgdGltZS5cbiAqIEV4YW1wbGU6IFwiMjAyMi0wOC0yOVQwOTozMDowMCswMzowMFwiIHdvdWxkIGJlIGNoYW5nZWQgdG8gXCIyMDIyLTA4LTI5VDA4OjMwOjAwKzAyOjAwXCIgLS0+IG5vdCB0aGUgZGVzaXJlZCBvdXRjb21lLCBhcyB3ZSB3YW50IHRvIHVzZSB0aGUgdGltZSBpbiB0aGUgdGltZXpvbmUgYW5kIG5vdCB0aGUgbG9jYWwgdGltZS5cbiAqXG4gKiBBZnRlciB0aGUgb2Zmc2V0IGlzIHJlbW92ZWQgYSBuZXcgZGF0ZSBpcyBjcmVhdGVkIGluIHRoZSBicm93c2VycyBsb2NhbCB0aW1lLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgdGltZSBvZiB0aGUgSVNPIGRhdGUgc3RyaW5nIGlzIGRpc3BsYXllZCBhbmQgbm90IGEgY29udmVydGVkIHRpbWUuXG4gKiBFeGFtcGxlOiBcIjIwMjItMDgtMjlUMDk6MzA6MDArMDM6MDBcIiB3b3VsZCBiZSBjaGFuZ2VkIHRvIFwiMjAyMi0wOC0yOVQwOTozMDowMCswMjowMFwiIC0tPiBkZXNpcmVkIG91dGNvbWVcbiAqIEF0dGVudGlvbjogVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBjb252ZXJ0IHRoZSB0aW1lIHRvIHRoZSBjb3JyZWN0IHRpbWUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLiBJdCBpcyBhIHdvcmthcm91bmQgdG8gbWFrZSBzdXJlLCB0aGF0IHRoZSBnaXZlbiB0aW1lIGlzIGRpc3BsYXllZCB3aXRob3V0IGJlaW5nIGNvbnZlcnRlZC5cbiAqXG4gKiBPZmZzZXQ6IERpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdGltZXpvbmUgYW5kIENvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lLlxuICpcbiAqIEBwYXJhbSBpc29UaW1lIC0gdGhlIGlzbyB0aW1lIHdpdGggdGhlIHRpbWV6b25lIG9mZnNldFxuICogQHJldHVybnMgYSBuZXcgZGF0ZSB3aXRoIHRoZSBsb2NhbCB0aW1lem9uZSB3aXRoIHRoZSBsb2NhbCBvZmZzZXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVRpbWV6b25lRnJvbUlTT1RpbWVTdHJpbmcoaXNvVGltZT86IHN0cmluZyk6IERhdGUgfCB1bmRlZmluZWQge1xuICBpZiAoIWlzb1RpbWUpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IHBhcnNlZERhdGUgPSBwYXJzZUlTTyhpc29UaW1lKTtcblxuICBpZiAoIWlzVmFsaWQocGFyc2VkRGF0ZSkpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKGlzb1RpbWUuaW5jbHVkZXMoJ1onKSkge1xuICAgIHJldHVybiBuZXcgRGF0ZShpc29UaW1lLnJlcGxhY2UoJ1onLCAnJykpO1xuICB9XG5cbiAgaWYgKGlzb1RpbWUuaW5jbHVkZXMoJ1QnKSkge1xuICAgIGNvbnN0IGRhdGVUaW1lID0gaXNvVGltZS5zcGxpdCgnVCcpO1xuXG4gICAgaWYgKGRhdGVUaW1lWzFdICYmIChkYXRlVGltZVsxXS5pbmNsdWRlcygnKycpIHx8IGRhdGVUaW1lWzFdLmluY2x1ZGVzKCctJykpKSB7XG4gICAgICByZXR1cm4gbmV3IERhdGUoYCR7ZGF0ZVRpbWVbMF19VCR7ZGF0ZVRpbWVbMV0uc3BsaXQoL1srLV0vKVswXX1gKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5ldyBEYXRlKGlzb1RpbWUpO1xufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gY29udmVydHMgYSBkdXJhdGlvbiBudW1iZXIgdG8gZGF0ZSBzdHJpbmcgd2l0aCBzcGVjaWZpYyBmb3JtYXRcbiAqXG4gKiBAcGFyYW0gZHVyYXRpb24gLSBkdXJhdGlvbiBpbiBtaW51dGVzXG4gKiBAcGFyYW0gY3VycmVudExhbmd1YWdlIC0gY3VycmVudExhbmd1YWdlXG4gKiBAcmV0dXJucyBhbiBPYmplY3Qgd2l0aCB0d28gc3RyaW5ncyBpbiB0aGUgZm9ybWF0IFwiZGQgaGggbW1cIiAoc2hvcnQpIGFuIFwieCBEYXkocykgeCBIb3VyKHMpIHggTWludXRlKHMpIChsb25nKVwiXG4gKiAqL1xuXG5leHBvcnQgY29uc3QgZHVyYXRpb25Ub1RpbWUgPSAoXG4gIGR1cmF0aW9uOiBudW1iZXIsXG4gIGN1cnJlbnRMYW5ndWFnZT86IHN0cmluZyxcbik6IHsgc2hvcnQ6IHN0cmluZzsgbG9uZzogc3RyaW5nIH0gPT4ge1xuICBjb25zdCBzaG9ydCA9IFtdO1xuICBjb25zdCBsb25nID0gW107XG5cbiAgY29uc3Qgbm93ID0gMDtcbiAgbGV0IGZ1dHVyZSA9IGFkZE1pbnV0ZXMobm93LCBkdXJhdGlvbik7XG5cbiAgY29uc3QgZGF5cyA9IGRpZmZlcmVuY2VJbkRheXMoZnV0dXJlLCBub3cpO1xuICBpZiAoZGF5cyA+IDApIHtcbiAgICBzaG9ydC5wdXNoKGAke2RheXN9IGRgKTtcbiAgICBjdXJyZW50TGFuZ3VhZ2UgJiZcbiAgICAgIGxvbmcucHVzaChcbiAgICAgICAgYCR7ZGF5c30gJHtcbiAgICAgICAgICBkYXlzID4gMVxuICAgICAgICAgICAgPyBpMThuRHVyYXRpb25EYXkubXVsdGlwbGUubG9uZ1tjdXJyZW50TGFuZ3VhZ2VdXG4gICAgICAgICAgICA6IGkxOG5EdXJhdGlvbkRheS5zaW5nbGUubG9uZ1tjdXJyZW50TGFuZ3VhZ2VdXG4gICAgICAgIH1gLFxuICAgICAgKTtcbiAgICBmdXR1cmUgPSBzdWJEYXlzKGZ1dHVyZSwgZGF5cyk7XG4gIH1cblxuICBjb25zdCBob3VycyA9IGRpZmZlcmVuY2VJbkhvdXJzKGZ1dHVyZSwgbm93KTtcbiAgaWYgKGhvdXJzID4gMCkge1xuICAgIHNob3J0LnB1c2goYCR7aG91cnN9IGhgKTtcbiAgICBjdXJyZW50TGFuZ3VhZ2UgJiZcbiAgICAgIGxvbmcucHVzaChcbiAgICAgICAgYCR7aG91cnN9ICR7XG4gICAgICAgICAgaG91cnMgPiAxXG4gICAgICAgICAgICA/IGkxOG5EdXJhdGlvbkhvdXIubXVsdGlwbGUubG9uZ1tjdXJyZW50TGFuZ3VhZ2VdXG4gICAgICAgICAgICA6IGkxOG5EdXJhdGlvbkhvdXIuc2luZ2xlLmxvbmdbY3VycmVudExhbmd1YWdlXVxuICAgICAgICB9YCxcbiAgICAgICk7XG4gICAgZnV0dXJlID0gc3ViSG91cnMoZnV0dXJlLCBob3Vycyk7XG4gIH1cblxuICBjb25zdCBtaW51dGVzID0gZGlmZmVyZW5jZUluTWludXRlcyhmdXR1cmUsIG5vdyk7XG4gIGlmIChtaW51dGVzID4gMCkge1xuICAgIHNob3J0LnB1c2goYCR7bWludXRlc30gbWluYCk7XG4gICAgY3VycmVudExhbmd1YWdlICYmXG4gICAgICBsb25nLnB1c2goXG4gICAgICAgIGAke21pbnV0ZXN9ICR7XG4gICAgICAgICAgbWludXRlcyA+IDFcbiAgICAgICAgICAgID8gaTE4bkR1cmF0aW9uTWludXRlLm11bHRpcGxlLmxvbmdbY3VycmVudExhbmd1YWdlXVxuICAgICAgICAgICAgOiBpMThuRHVyYXRpb25NaW51dGUuc2luZ2xlLmxvbmdbY3VycmVudExhbmd1YWdlXVxuICAgICAgICB9YCxcbiAgICAgICk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHNob3J0OiBzaG9ydC5qb2luKCcgJyksXG4gICAgbG9uZzogbG9uZy5qb2luKCcgJyksXG4gIH07XG59O1xuIl0sIm5hbWVz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
289
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9hZGREYXlzLm1qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9hZGRIb3Vycy5tanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZGlmZmVyZW5jZUluRGF5cy5tanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZGlmZmVyZW5jZUluSG91cnMubWpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3N1YkRheXMubWpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3BhcnNlSVNPLm1qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9zdWJIb3Vycy5tanMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMtZXhwZXJpbWVudGFsL2NvcmUvZGF0ZXRpbWUvZGF0ZS1oZWxwZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuaW1wb3J0IHsgY29uc3RydWN0RnJvbSB9IGZyb20gXCIuL2NvbnN0cnVjdEZyb20ubWpzXCI7XG5cbi8qKlxuICogQG5hbWUgYWRkRGF5c1xuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgZGF5cyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBkYXlzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIGFtb3VudCAtIFRoZSBhbW91bnQgb2YgZGF5cyB0byBiZSBhZGRlZC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgbmV3IGRhdGUgd2l0aCB0aGUgZGF5cyBhZGRlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBZGQgMTAgZGF5cyB0byAxIFNlcHRlbWJlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gYWRkRGF5cyhuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgMTApXG4gKiAvLz0+IFRodSBTZXAgMTEgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkRGF5cyhkYXRlLCBhbW91bnQpIHtcbiAgY29uc3QgX2RhdGUgPSB0b0RhdGUoZGF0ZSk7XG4gIGlmIChpc05hTihhbW91bnQpKSByZXR1cm4gY29uc3RydWN0RnJvbShkYXRlLCBOYU4pO1xuICBpZiAoIWFtb3VudCkge1xuICAgIC8vIElmIDAgZGF5cywgbm8tb3AgdG8gYXZvaWQgY2hhbmdpbmcgdGltZXMgaW4gdGhlIGhvdXIgYmVmb3JlIGVuZCBvZiBEU1RcbiAgICByZXR1cm4gX2RhdGU7XG4gIH1cbiAgX2RhdGUuc2V0RGF0ZShfZGF0ZS5nZXREYXRlKCkgKyBhbW91bnQpO1xuICByZXR1cm4gX2RhdGU7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgYWRkRGF5cztcbiIsImltcG9ydCB7IGFkZE1pbGxpc2Vjb25kcyB9IGZyb20gXCIuL2FkZE1pbGxpc2Vjb25kcy5tanNcIjtcbmltcG9ydCB7IG1pbGxpc2Vjb25kc0luSG91ciB9IGZyb20gXCIuL2NvbnN0YW50cy5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBhZGRIb3Vyc1xuICogQGNhdGVnb3J5IEhvdXIgSGVscGVyc1xuICogQHN1bW1hcnkgQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGhvdXJzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGhvdXJzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIGFtb3VudCAtIFRoZSBhbW91bnQgb2YgaG91cnMgdG8gYmUgYWRkZWQuXG4gKlxuICogQHJldHVybnMgVGhlIG5ldyBkYXRlIHdpdGggdGhlIGhvdXJzIGFkZGVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFkZCAyIGhvdXJzIHRvIDEwIEp1bHkgMjAxNCAyMzowMDowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IGFkZEhvdXJzKG5ldyBEYXRlKDIwMTQsIDYsIDEwLCAyMywgMCksIDIpXG4gKiAvLz0+IEZyaSBKdWwgMTEgMjAxNCAwMTowMDowMFxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkSG91cnMoZGF0ZSwgYW1vdW50KSB7XG4gIHJldHVybiBhZGRNaWxsaXNlY29uZHMoZGF0ZSwgYW1vdW50ICogbWlsbGlzZWNvbmRzSW5Ib3VyKTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBhZGRIb3VycztcbiIsImltcG9ydCB7IGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyB9IGZyb20gXCIuL2RpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cy5tanNcIjtcbmltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5EYXlzXG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbnVtYmVyIG9mIGZ1bGwgZGF5cyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIGZ1bGwgZGF5IHBlcmlvZHMgYmV0d2VlbiB0d28gZGF0ZXMuIEZyYWN0aW9uYWwgZGF5cyBhcmVcbiAqIHRydW5jYXRlZCB0b3dhcmRzIHplcm8uXG4gKlxuICogT25lIFwiZnVsbCBkYXlcIiBpcyB0aGUgZGlzdGFuY2UgYmV0d2VlbiBhIGxvY2FsIHRpbWUgaW4gb25lIGRheSB0byB0aGUgc2FtZVxuICogbG9jYWwgdGltZSBvbiB0aGUgbmV4dCBvciBwcmV2aW91cyBkYXkuIEEgZnVsbCBkYXkgY2FuIHNvbWV0aW1lcyBiZSBsZXNzIHRoYW5cbiAqIG9yIG1vcmUgdGhhbiAyNCBob3VycyBpZiBhIGRheWxpZ2h0IHNhdmluZ3MgY2hhbmdlIGhhcHBlbnMgYmV0d2VlbiB0d28gZGF0ZXMuXG4gKlxuICogVG8gaWdub3JlIERTVCBhbmQgb25seSBtZWFzdXJlIGV4YWN0IDI0LWhvdXIgcGVyaW9kcywgdXNlIHRoaXMgaW5zdGVhZDpcbiAqIGBNYXRoLnRydW5jKGRpZmZlcmVuY2VJbkhvdXJzKGRhdGVMZWZ0LCBkYXRlUmlnaHQpLzI0KXwwYC5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZUxlZnQgLSBUaGUgbGF0ZXIgZGF0ZVxuICogQHBhcmFtIGRhdGVSaWdodCAtIFRoZSBlYXJsaWVyIGRhdGVcbiAqXG4gKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIGZ1bGwgZGF5cyBhY2NvcmRpbmcgdG8gdGhlIGxvY2FsIHRpbWV6b25lXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGZ1bGwgZGF5cyBhcmUgYmV0d2VlblxuICogLy8gMiBKdWx5IDIwMTEgMjM6MDA6MDAgYW5kIDIgSnVseSAyMDEyIDAwOjAwOjAwP1xuICogY29uc3QgcmVzdWx0ID0gZGlmZmVyZW5jZUluRGF5cyhcbiAqICAgbmV3IERhdGUoMjAxMiwgNiwgMiwgMCwgMCksXG4gKiAgIG5ldyBEYXRlKDIwMTEsIDYsIDIsIDIzLCAwKVxuICogKVxuICogLy89PiAzNjVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSG93IG1hbnkgZnVsbCBkYXlzIGFyZSBiZXR3ZWVuXG4gKiAvLyAyIEp1bHkgMjAxMSAyMzo1OTowMCBhbmQgMyBKdWx5IDIwMTEgMDA6MDE6MDA/XG4gKiBjb25zdCByZXN1bHQgPSBkaWZmZXJlbmNlSW5EYXlzKFxuICogICBuZXcgRGF0ZSgyMDExLCA2LCAzLCAwLCAxKSxcbiAqICAgbmV3IERhdGUoMjAxMSwgNiwgMiwgMjMsIDU5KVxuICogKVxuICogLy89PiAwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGZ1bGwgZGF5cyBhcmUgYmV0d2VlblxuICogLy8gMSBNYXJjaCAyMDIwIDA6MDAgYW5kIDEgSnVuZSAyMDIwIDA6MDAgP1xuICogLy8gTm90ZTogYmVjYXVzZSBsb2NhbCB0aW1lIGlzIHVzZWQsIHRoZVxuICogLy8gcmVzdWx0IHdpbGwgYWx3YXlzIGJlIDkyIGRheXMsIGV2ZW4gaW5cbiAqIC8vIHRpbWUgem9uZXMgd2hlcmUgRFNUIHN0YXJ0cyBhbmQgdGhlXG4gKiAvLyBwZXJpb2QgaGFzIG9ubHkgOTIqMjQtMSBob3Vycy5cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbkRheXMoXG4gKiAgIG5ldyBEYXRlKDIwMjAsIDUsIDEpLFxuICogICBuZXcgRGF0ZSgyMDIwLCAyLCAxKVxuICogKVxuICogLy89PiA5MlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGlmZmVyZW5jZUluRGF5cyhkYXRlTGVmdCwgZGF0ZVJpZ2h0KSB7XG4gIGNvbnN0IF9kYXRlTGVmdCA9IHRvRGF0ZShkYXRlTGVmdCk7XG4gIGNvbnN0IF9kYXRlUmlnaHQgPSB0b0RhdGUoZGF0ZVJpZ2h0KTtcblxuICBjb25zdCBzaWduID0gY29tcGFyZUxvY2FsQXNjKF9kYXRlTGVmdCwgX2RhdGVSaWdodCk7XG4gIGNvbnN0IGRpZmZlcmVuY2UgPSBNYXRoLmFicyhkaWZmZXJlbmNlSW5DYWxlbmRhckRheXMoX2RhdGVMZWZ0LCBfZGF0ZVJpZ2h0KSk7XG5cbiAgX2RhdGVMZWZ0LnNldERhdGUoX2RhdGVMZWZ0LmdldERhdGUoKSAtIHNpZ24gKiBkaWZmZXJlbmNlKTtcblxuICAvLyBNYXRoLmFicyhkaWZmIGluIGZ1bGwgZGF5cyAtIGRpZmYgaW4gY2FsZW5kYXIgZGF5cykgPT09IDEgaWYgbGFzdCBjYWxlbmRhciBkYXkgaXMgbm90IGZ1bGxcbiAgLy8gSWYgc28sIHJlc3VsdCBtdXN0IGJlIGRlY3JlYXNlZCBieSAxIGluIGFic29sdXRlIHZhbHVlXG4gIGNvbnN0IGlzTGFzdERheU5vdEZ1bGwgPSBOdW1iZXIoXG4gICAgY29tcGFyZUxvY2FsQXNjKF9kYXRlTGVmdCwgX2RhdGVSaWdodCkgPT09IC1zaWduLFxuICApO1xuICBjb25zdCByZXN1bHQgPSBzaWduICogKGRpZmZlcmVuY2UgLSBpc0xhc3REYXlOb3RGdWxsKTtcbiAgLy8gUHJldmVudCBuZWdhdGl2ZSB6ZXJvXG4gIHJldHVybiByZXN1bHQgPT09IDAgPyAwIDogcmVzdWx0O1xufVxuXG4vLyBMaWtlIGBjb21wYXJlQXNjYCBidXQgdXNlcyBsb2NhbCB0aW1lIG5vdCBVVEMsIHdoaWNoIGlzIG5lZWRlZFxuLy8gZm9yIGFjY3VyYXRlIGVxdWFsaXR5IGNvbXBhcmlzb25zIG9mIFVUQyB0aW1lc3RhbXBzIHRoYXQgZW5kIHVwXG4vLyBoYXZpbmcgdGhlIHNhbWUgcmVwcmVzZW50YXRpb24gaW4gbG9jYWwgdGltZSwgZS5nLiBvbmUgaG91ciBiZWZvcmVcbi8vIERTVCBlbmRzIHZzLiB0aGUgaW5zdGFudCB0aGF0IERTVCBlbmRzLlxuZnVuY3Rpb24gY29tcGFyZUxvY2FsQXNjKGRhdGVMZWZ0LCBkYXRlUmlnaHQpIHtcbiAgY29uc3QgZGlmZiA9XG4gICAgZGF0ZUxlZnQuZ2V0RnVsbFllYXIoKSAtIGRhdGVSaWdodC5nZXRGdWxsWWVhcigpIHx8XG4gICAgZGF0ZUxlZnQuZ2V0TW9udGgoKSAtIGRhdGVSaWdodC5nZXRNb250aCgpIHx8XG4gICAgZGF0ZUxlZnQuZ2V0RGF0ZSgpIC0gZGF0ZVJpZ2h0LmdldERhdGUoKSB8fFxuICAgIGRhdGVMZWZ0LmdldEhvdXJzKCkgLSBkYXRlUmlnaHQuZ2V0SG91cnMoKSB8fFxuICAgIGRhdGVMZWZ0LmdldE1pbnV0ZXMoKSAtIGRhdGVSaWdodC5nZXRNaW51dGVzKCkgfHxcbiAgICBkYXRlTGVmdC5nZXRTZWNvbmRzKCkgLSBkYXRlUmlnaHQuZ2V0U2Vjb25kcygpIHx8XG4gICAgZGF0ZUxlZnQuZ2V0TWlsbGlzZWNvbmRzKCkgLSBkYXRlUmlnaHQuZ2V0TWlsbGlzZWNvbmRzKCk7XG5cbiAgaWYgKGRpZmYgPCAwKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9IGVsc2UgaWYgKGRpZmYgPiAwKSB7XG4gICAgcmV0dXJuIDE7XG4gICAgLy8gUmV0dXJuIDAgaWYgZGlmZiBpcyAwOyByZXR1cm4gTmFOIGlmIGRpZmYgaXMgTmFOXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGRpZmY7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBkaWZmZXJlbmNlSW5EYXlzO1xuIiwiaW1wb3J0IHsgZ2V0Um91bmRpbmdNZXRob2QgfSBmcm9tIFwiLi9fbGliL2dldFJvdW5kaW5nTWV0aG9kLm1qc1wiO1xuaW1wb3J0IHsgbWlsbGlzZWNvbmRzSW5Ib3VyIH0gZnJvbSBcIi4vY29uc3RhbnRzLm1qc1wiO1xuaW1wb3J0IHsgZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzIH0gZnJvbSBcIi4vZGlmZmVyZW5jZUluTWlsbGlzZWNvbmRzLm1qc1wiO1xuXG4vKipcbiAqIFRoZSB7QGxpbmsgZGlmZmVyZW5jZUluSG91cnN9IGZ1bmN0aW9uIG9wdGlvbnMuXG4gKi9cblxuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5Ib3Vyc1xuICogQGNhdGVnb3J5IEhvdXIgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgaG91cnMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIG51bWJlciBvZiBob3VycyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZUxlZnQgLSBUaGUgbGF0ZXIgZGF0ZVxuICogQHBhcmFtIGRhdGVSaWdodCAtIFRoZSBlYXJsaWVyIGRhdGVcbiAqIEBwYXJhbSBvcHRpb25zIC0gQW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqXG4gKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIGhvdXJzXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGhvdXJzIGFyZSBiZXR3ZWVuIDIgSnVseSAyMDE0IDA2OjUwOjAwIGFuZCAyIEp1bHkgMjAxNCAxOTowMDowMD9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbkhvdXJzKFxuICogICBuZXcgRGF0ZSgyMDE0LCA2LCAyLCAxOSwgMCksXG4gKiAgIG5ldyBEYXRlKDIwMTQsIDYsIDIsIDYsIDUwKVxuICogKVxuICogLy89PiAxMlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGlmZmVyZW5jZUluSG91cnMoZGF0ZUxlZnQsIGRhdGVSaWdodCwgb3B0aW9ucykge1xuICBjb25zdCBkaWZmID1cbiAgICBkaWZmZXJlbmNlSW5NaWxsaXNlY29uZHMoZGF0ZUxlZnQsIGRhdGVSaWdodCkgLyBtaWxsaXNlY29uZHNJbkhvdXI7XG4gIHJldHVybiBnZXRSb3VuZGluZ01ldGhvZChvcHRpb25zPy5yb3VuZGluZ01ldGhvZCkoZGlmZik7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgZGlmZmVyZW5jZUluSG91cnM7XG4iLCJpbXBvcnQgeyBhZGREYXlzIH0gZnJvbSBcIi4vYWRkRGF5cy5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBzdWJEYXlzXG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGRheXMgZnJvbSB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGRheXMgZnJvbSB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSBhbW91bnQgLSBUaGUgYW1vdW50IG9mIGRheXMgdG8gYmUgc3VidHJhY3RlZC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgbmV3IGRhdGUgd2l0aCB0aGUgZGF5cyBzdWJ0cmFjdGVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFN1YnRyYWN0IDEwIGRheXMgZnJvbSAxIFNlcHRlbWJlciAyMDE0OlxuICogY29uc3QgcmVzdWx0ID0gc3ViRGF5cyhuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgMTApXG4gKiAvLz0+IEZyaSBBdWcgMjIgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3ViRGF5cyhkYXRlLCBhbW91bnQpIHtcbiAgcmV0dXJuIGFkZERheXMoZGF0ZSwgLWFtb3VudCk7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgc3ViRGF5cztcbiIsImltcG9ydCB7IG1pbGxpc2Vjb25kc0luSG91ciwgbWlsbGlzZWNvbmRzSW5NaW51dGUgfSBmcm9tIFwiLi9jb25zdGFudHMubWpzXCI7XG5cbi8qKlxuICogVGhlIHtAbGluayBwYXJzZUlTT30gZnVuY3Rpb24gb3B0aW9ucy5cbiAqL1xuXG4vKipcbiAqIEBuYW1lIHBhcnNlSVNPXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFBhcnNlIElTTyBzdHJpbmdcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFBhcnNlIHRoZSBnaXZlbiBzdHJpbmcgaW4gSVNPIDg2MDEgZm9ybWF0IGFuZCByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBGdW5jdGlvbiBhY2NlcHRzIGNvbXBsZXRlIElTTyA4NjAxIGZvcm1hdHMgYXMgd2VsbCBhcyBwYXJ0aWFsIGltcGxlbWVudGF0aW9ucy5cbiAqIElTTyA4NjAxOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzbid0IGEgc3RyaW5nLCB0aGUgZnVuY3Rpb24gY2Fubm90IHBhcnNlIHRoZSBzdHJpbmcgb3JcbiAqIHRoZSB2YWx1ZXMgYXJlIGludmFsaWQsIGl0IHJldHVybnMgSW52YWxpZCBEYXRlLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBhcmd1bWVudCAtIFRoZSB2YWx1ZSB0byBjb252ZXJ0XG4gKiBAcGFyYW0gb3B0aW9ucyAtIEFuIG9iamVjdCB3aXRoIG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIGRhdGUgaW4gdGhlIGxvY2FsIHRpbWUgem9uZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IHN0cmluZyAnMjAxNC0wMi0xMVQxMTozMDozMCcgdG8gZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHBhcnNlSVNPKCcyMDE0LTAyLTExVDExOjMwOjMwJylcbiAqIC8vPT4gVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENvbnZlcnQgc3RyaW5nICcrMDIwMTQxMDEnIHRvIGRhdGUsXG4gKiAvLyBpZiB0aGUgYWRkaXRpb25hbCBudW1iZXIgb2YgZGlnaXRzIGluIHRoZSBleHRlbmRlZCB5ZWFyIGZvcm1hdCBpcyAxOlxuICogY29uc3QgcmVzdWx0ID0gcGFyc2VJU08oJyswMjAxNDEwMScsIHsgYWRkaXRpb25hbERpZ2l0czogMSB9KVxuICogLy89PiBGcmkgQXByIDExIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlSVNPKGFyZ3VtZW50LCBvcHRpb25zKSB7XG4gIGNvbnN0IGFkZGl0aW9uYWxEaWdpdHMgPSBvcHRpb25zPy5hZGRpdGlvbmFsRGlnaXRzID8/IDI7XG4gIGNvbnN0IGRhdGVTdHJpbmdzID0gc3BsaXREYXRlU3RyaW5nKGFyZ3VtZW50KTtcblxuICBsZXQgZGF0ZTtcbiAgaWYgKGRhdGVTdHJpbmdzLmRhdGUpIHtcbiAgICBjb25zdCBwYXJzZVllYXJSZXN1bHQgPSBwYXJzZVllYXIoZGF0ZVN0cmluZ3MuZGF0ZSwgYWRkaXRpb25hbERpZ2l0cyk7XG4gICAgZGF0ZSA9IHBhcnNlRGF0ZShwYXJzZVllYXJSZXN1bHQucmVzdERhdGVTdHJpbmcsIHBhcnNlWWVhclJlc3VsdC55ZWFyKTtcbiAgfVxuXG4gIGlmICghZGF0ZSB8fCBpc05hTihkYXRlLmdldFRpbWUoKSkpIHtcbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxuXG4gIGNvbnN0IHRpbWVzdGFtcCA9IGRhdGUuZ2V0VGltZSgpO1xuICBsZXQgdGltZSA9IDA7XG4gIGxldCBvZmZzZXQ7XG5cbiAgaWYgKGRhdGVTdHJpbmdzLnRpbWUpIHtcbiAgICB0aW1lID0gcGFyc2VUaW1lKGRhdGVTdHJpbmdzLnRpbWUpO1xuICAgIGlmIChpc05hTih0aW1lKSkge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gICAgfVxuICB9XG5cbiAgaWYgKGRhdGVTdHJpbmdzLnRpbWV6b25lKSB7XG4gICAgb2Zmc2V0ID0gcGFyc2VUaW1lem9uZShkYXRlU3RyaW5ncy50aW1lem9uZSk7XG4gICAgaWYgKGlzTmFOKG9mZnNldCkpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBkaXJ0eURhdGUgPSBuZXcgRGF0ZSh0aW1lc3RhbXAgKyB0aW1lKTtcbiAgICAvLyBKUyBwYXJzZWQgc3RyaW5nIGFzc3VtaW5nIGl0J3MgaW4gVVRDIHRpbWV6b25lXG4gICAgLy8gYnV0IHdlIG5lZWQgaXQgdG8gYmUgcGFyc2VkIGluIG91ciB0aW1lem9uZVxuICAgIC8vIHNvIHdlIHVzZSB1dGMgdmFsdWVzIHRvIGJ1aWxkIGRhdGUgaW4gb3VyIHRpbWV6b25lLlxuICAgIC8vIFllYXIgdmFsdWVzIGZyb20gMCB0byA5OSBtYXAgdG8gdGhlIHllYXJzIDE5MDAgdG8gMTk5OVxuICAgIC8vIHNvIHNldCB5ZWFyIGV4cGxpY2l0bHkgd2l0aCBzZXRGdWxsWWVhci5cbiAgICBjb25zdCByZXN1bHQgPSBuZXcgRGF0ZSgwKTtcbiAgICByZXN1bHQuc2V0RnVsbFllYXIoXG4gICAgICBkaXJ0eURhdGUuZ2V0VVRDRnVsbFllYXIoKSxcbiAgICAgIGRpcnR5RGF0ZS5nZXRVVENNb250aCgpLFxuICAgICAgZGlydHlEYXRlLmdldFVUQ0RhdGUoKSxcbiAgICApO1xuICAgIHJlc3VsdC5zZXRIb3VycyhcbiAgICAgIGRpcnR5RGF0ZS5nZXRVVENIb3VycygpLFxuICAgICAgZGlydHlEYXRlLmdldFVUQ01pbnV0ZXMoKSxcbiAgICAgIGRpcnR5RGF0ZS5nZXRVVENTZWNvbmRzKCksXG4gICAgICBkaXJ0eURhdGUuZ2V0VVRDTWlsbGlzZWNvbmRzKCksXG4gICAgKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcmV0dXJuIG5ldyBEYXRlKHRpbWVzdGFtcCArIHRpbWUgKyBvZmZzZXQpO1xufVxuXG5jb25zdCBwYXR0ZXJucyA9IHtcbiAgZGF0ZVRpbWVEZWxpbWl0ZXI6IC9bVCBdLyxcbiAgdGltZVpvbmVEZWxpbWl0ZXI6IC9bWiBdL2ksXG4gIHRpbWV6b25lOiAvKFtaKy1dLiopJC8sXG59O1xuXG5jb25zdCBkYXRlUmVnZXggPVxuICAvXi0/KD86KFxcZHszfSl8KFxcZHsyfSkoPzotPyhcXGR7Mn0pKT98VyhcXGR7Mn0pKD86LT8oXFxkezF9KSk/fCkkLztcbmNvbnN0IHRpbWVSZWdleCA9XG4gIC9eKFxcZHsyfSg/OlsuLF1cXGQqKT8pKD86Oj8oXFxkezJ9KD86Wy4sXVxcZCopPykpPyg/Ojo/KFxcZHsyfSg/OlsuLF1cXGQqKT8pKT8kLztcbmNvbnN0IHRpbWV6b25lUmVnZXggPSAvXihbKy1dKShcXGR7Mn0pKD86Oj8oXFxkezJ9KSk/JC87XG5cbmZ1bmN0aW9uIHNwbGl0RGF0ZVN0cmluZyhkYXRlU3RyaW5nKSB7XG4gIGNvbnN0IGRhdGVTdHJpbmdzID0ge307XG4gIGNvbnN0IGFycmF5ID0gZGF0ZVN0cmluZy5zcGxpdChwYXR0ZXJucy5kYXRlVGltZURlbGltaXRlcik7XG4gIGxldCB0aW1lU3RyaW5nO1xuXG4gIC8vIFRoZSByZWdleCBtYXRjaCBzaG91bGQgb25seSByZXR1cm4gYXQgbWF4aW11bSB0d28gYXJyYXkgZWxlbWVudHMuXG4gIC8vIFtkYXRlXSwgW3RpbWVdLCBvciBbZGF0ZSwgdGltZV0uXG4gIGlmIChhcnJheS5sZW5ndGggPiAyKSB7XG4gICAgcmV0dXJuIGRhdGVTdHJpbmdzO1xuICB9XG5cbiAgaWYgKC86Ly50ZXN0KGFycmF5WzBdKSkge1xuICAgIHRpbWVTdHJpbmcgPSBhcnJheVswXTtcbiAgfSBlbHNlIHtcbiAgICBkYXRlU3RyaW5ncy5kYXRlID0gYXJyYXlbMF07XG4gICAgdGltZVN0cmluZyA9IGFycmF5WzFdO1xuICAgIGlmIChwYXR0ZXJucy50aW1lWm9uZURlbGltaXRlci50ZXN0KGRhdGVTdHJpbmdzLmRhdGUpKSB7XG4gICAgICBkYXRlU3RyaW5ncy5kYXRlID0gZGF0ZVN0cmluZy5zcGxpdChwYXR0ZXJucy50aW1lWm9uZURlbGltaXRlcilbMF07XG4gICAgICB0aW1lU3RyaW5nID0gZGF0ZVN0cmluZy5zdWJzdHIoXG4gICAgICAgIGRhdGVTdHJpbmdzLmRhdGUubGVuZ3RoLFxuICAgICAgICBkYXRlU3RyaW5nLmxlbmd0aCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHRpbWVTdHJpbmcpIHtcbiAgICBjb25zdCB0b2tlbiA9IHBhdHRlcm5zLnRpbWV6b25lLmV4ZWModGltZVN0cmluZyk7XG4gICAgaWYgKHRva2VuKSB7XG4gICAgICBkYXRlU3RyaW5ncy50aW1lID0gdGltZVN0cmluZy5yZXBsYWNlKHRva2VuWzFdLCBcIlwiKTtcbiAgICAgIGRhdGVTdHJpbmdzLnRpbWV6b25lID0gdG9rZW5bMV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGRhdGVTdHJpbmdzLnRpbWUgPSB0aW1lU3RyaW5nO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkYXRlU3RyaW5ncztcbn1cblxuZnVuY3Rpb24gcGFyc2VZZWFyKGRhdGVTdHJpbmcsIGFkZGl0aW9uYWxEaWdpdHMpIHtcbiAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKFxuICAgIFwiXig/OihcXFxcZHs0fXxbKy1dXFxcXGR7XCIgK1xuICAgICAgKDQgKyBhZGRpdGlvbmFsRGlnaXRzKSArXG4gICAgICBcIn0pfChcXFxcZHsyfXxbKy1dXFxcXGR7XCIgK1xuICAgICAgKDIgKyBhZGRpdGlvbmFsRGlnaXRzKSArXG4gICAgICBcIn0pJClcIixcbiAgKTtcblxuICBjb25zdCBjYXB0dXJlcyA9IGRhdGVTdHJpbmcubWF0Y2gocmVnZXgpO1xuICAvLyBJbnZhbGlkIElTTy1mb3JtYXR0ZWQgeWVhclxuICBpZiAoIWNhcHR1cmVzKSByZXR1cm4geyB5ZWFyOiBOYU4sIHJlc3REYXRlU3RyaW5nOiBcIlwiIH07XG5cbiAgY29uc3QgeWVhciA9IGNhcHR1cmVzWzFdID8gcGFyc2VJbnQoY2FwdHVyZXNbMV0pIDogbnVsbDtcbiAgY29uc3QgY2VudHVyeSA9IGNhcHR1cmVzWzJdID8gcGFyc2VJbnQoY2FwdHVyZXNbMl0pIDogbnVsbDtcblxuICAvLyBlaXRoZXIgeWVhciBvciBjZW50dXJ5IGlzIG51bGwsIG5vdCBib3RoXG4gIHJldHVybiB7XG4gICAgeWVhcjogY2VudHVyeSA9PT0gbnVsbCA/IHllYXIgOiBjZW50dXJ5ICogMTAwLFxuICAgIHJlc3REYXRlU3RyaW5nOiBkYXRlU3RyaW5nLnNsaWNlKChjYXB0dXJlc1sxXSB8fCBjYXB0dXJlc1syXSkubGVuZ3RoKSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gcGFyc2VEYXRlKGRhdGVTdHJpbmcsIHllYXIpIHtcbiAgLy8gSW52YWxpZCBJU08tZm9ybWF0dGVkIHllYXJcbiAgaWYgKHllYXIgPT09IG51bGwpIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuXG4gIGNvbnN0IGNhcHR1cmVzID0gZGF0ZVN0cmluZy5tYXRjaChkYXRlUmVnZXgpO1xuICAvLyBJbnZhbGlkIElTTy1mb3JtYXR0ZWQgc3RyaW5nXG4gIGlmICghY2FwdHVyZXMpIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuXG4gIGNvbnN0IGlzV2Vla0RhdGUgPSAhIWNhcHR1cmVzWzRdO1xuICBjb25zdCBkYXlPZlllYXIgPSBwYXJzZURhdGVVbml0KGNhcHR1cmVzWzFdKTtcbiAgY29uc3QgbW9udGggPSBwYXJzZURhdGVVbml0KGNhcHR1cmVzWzJdKSAtIDE7XG4gIGNvbnN0IGRheSA9IHBhcnNlRGF0ZVVuaXQoY2FwdHVyZXNbM10pO1xuICBjb25zdCB3ZWVrID0gcGFyc2VEYXRlVW5pdChjYXB0dXJlc1s0XSk7XG4gIGNvbnN0IGRheU9mV2VlayA9IHBhcnNlRGF0ZVVuaXQoY2FwdHVyZXNbNV0pIC0gMTtcblxuICBpZiAoaXNXZWVrRGF0ZSkge1xuICAgIGlmICghdmFsaWRhdGVXZWVrRGF0ZSh5ZWFyLCB3ZWVrLCBkYXlPZldlZWspKSB7XG4gICAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgICB9XG4gICAgcmV0dXJuIGRheU9mSVNPV2Vla1llYXIoeWVhciwgd2VlaywgZGF5T2ZXZWVrKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoMCk7XG4gICAgaWYgKFxuICAgICAgIXZhbGlkYXRlRGF0ZSh5ZWFyLCBtb250aCwgZGF5KSB8fFxuICAgICAgIXZhbGlkYXRlRGF5T2ZZZWFyRGF0ZSh5ZWFyLCBkYXlPZlllYXIpXG4gICAgKSB7XG4gICAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgICB9XG4gICAgZGF0ZS5zZXRVVENGdWxsWWVhcih5ZWFyLCBtb250aCwgTWF0aC5tYXgoZGF5T2ZZZWFyLCBkYXkpKTtcbiAgICByZXR1cm4gZGF0ZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZURhdGVVbml0KHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA/IHBhcnNlSW50KHZhbHVlKSA6IDE7XG59XG5cbmZ1bmN0aW9uIHBhcnNlVGltZSh0aW1lU3RyaW5nKSB7XG4gIGNvbnN0IGNhcHR1cmVzID0gdGltZVN0cmluZy5tYXRjaCh0aW1lUmVnZXgpO1xuICBpZiAoIWNhcHR1cmVzKSByZXR1cm4gTmFOOyAvLyBJbnZhbGlkIElTTy1mb3JtYXR0ZWQgdGltZVxuXG4gIGNvbnN0IGhvdXJzID0gcGFyc2VUaW1lVW5pdChjYXB0dXJlc1sxXSk7XG4gIGNvbnN0IG1pbnV0ZXMgPSBwYXJzZVRpbWVVbml0KGNhcHR1cmVzWzJdKTtcbiAgY29uc3Qgc2Vjb25kcyA9IHBhcnNlVGltZVVuaXQoY2FwdHVyZXNbM10pO1xuXG4gIGlmICghdmFsaWRhdGVUaW1lKGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKSkge1xuICAgIHJldHVybiBOYU47XG4gIH1cblxuICByZXR1cm4gKFxuICAgIGhvdXJzICogbWlsbGlzZWNvbmRzSW5Ib3VyICsgbWludXRlcyAqIG1pbGxpc2Vjb25kc0luTWludXRlICsgc2Vjb25kcyAqIDEwMDBcbiAgKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VUaW1lVW5pdCh2YWx1ZSkge1xuICByZXR1cm4gKHZhbHVlICYmIHBhcnNlRmxvYXQodmFsdWUucmVwbGFjZShcIixcIiwgXCIuXCIpKSkgfHwgMDtcbn1cblxuZnVuY3Rpb24gcGFyc2VUaW1lem9uZSh0aW1lem9uZVN0cmluZykge1xuICBpZiAodGltZXpvbmVTdHJpbmcgPT09IFwiWlwiKSByZXR1cm4gMDtcblxuICBjb25zdCBjYXB0dXJlcyA9IHRpbWV6b25lU3RyaW5nLm1hdGNoKHRpbWV6b25lUmVnZXgpO1xuICBpZiAoIWNhcHR1cmVzKSByZXR1cm4gMDtcblxuICBjb25zdCBzaWduID0gY2FwdHVyZXNbMV0gPT09IFwiK1wiID8gLTEgOiAxO1xuICBjb25zdCBob3VycyA9IHBhcnNlSW50KGNhcHR1cmVzWzJdKTtcbiAgY29uc3QgbWludXRlcyA9IChjYXB0dXJlc1szXSAmJiBwYXJzZUludChjYXB0dXJlc1szXSkpIHx8IDA7XG5cbiAgaWYgKCF2YWxpZGF0ZVRpbWV6b25lKGhvdXJzLCBtaW51dGVzKSkge1xuICAgIHJldHVybiBOYU47XG4gIH1cblxuICByZXR1cm4gc2lnbiAqIChob3VycyAqIG1pbGxpc2Vjb25kc0luSG91ciArIG1pbnV0ZXMgKiBtaWxsaXNlY29uZHNJbk1pbnV0ZSk7XG59XG5cbmZ1bmN0aW9uIGRheU9mSVNPV2Vla1llYXIoaXNvV2Vla1llYXIsIHdlZWssIGRheSkge1xuICBjb25zdCBkYXRlID0gbmV3IERhdGUoMCk7XG4gIGRhdGUuc2V0VVRDRnVsbFllYXIoaXNvV2Vla1llYXIsIDAsIDQpO1xuICBjb25zdCBmb3VydGhPZkphbnVhcnlEYXkgPSBkYXRlLmdldFVUQ0RheSgpIHx8IDc7XG4gIGNvbnN0IGRpZmYgPSAod2VlayAtIDEpICogNyArIGRheSArIDEgLSBmb3VydGhPZkphbnVhcnlEYXk7XG4gIGRhdGUuc2V0VVRDRGF0ZShkYXRlLmdldFVUQ0RhdGUoKSArIGRpZmYpO1xuICByZXR1cm4gZGF0ZTtcbn1cblxuLy8gVmFsaWRhdGlvbiBmdW5jdGlvbnNcblxuLy8gRmVicnVhcnkgaXMgbnVsbCB0byBoYW5kbGUgdGhlIGxlYXAgeWVhciAodXNpbmcgfHwpXG5jb25zdCBkYXlzSW5Nb250aHMgPSBbMzEsIG51bGwsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxXTtcblxuZnVuY3Rpb24gaXNMZWFwWWVhckluZGV4KHllYXIpIHtcbiAgcmV0dXJuIHllYXIgJSA0MDAgPT09IDAgfHwgKHllYXIgJSA0ID09PSAwICYmIHllYXIgJSAxMDAgIT09IDApO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZURhdGUoeWVhciwgbW9udGgsIGRhdGUpIHtcbiAgcmV0dXJuIChcbiAgICBtb250aCA+PSAwICYmXG4gICAgbW9udGggPD0gMTEgJiZcbiAgICBkYXRlID49IDEgJiZcbiAgICBkYXRlIDw9IChkYXlzSW5Nb250aHNbbW9udGhdIHx8IChpc0xlYXBZZWFySW5kZXgoeWVhcikgPyAyOSA6IDI4KSlcbiAgKTtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVEYXlPZlllYXJEYXRlKHllYXIsIGRheU9mWWVhcikge1xuICByZXR1cm4gZGF5T2ZZZWFyID49IDEgJiYgZGF5T2ZZZWFyIDw9IChpc0xlYXBZZWFySW5kZXgoeWVhcikgPyAzNjYgOiAzNjUpO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVdlZWtEYXRlKF95ZWFyLCB3ZWVrLCBkYXkpIHtcbiAgcmV0dXJuIHdlZWsgPj0gMSAmJiB3ZWVrIDw9IDUzICYmIGRheSA+PSAwICYmIGRheSA8PSA2O1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVRpbWUoaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpIHtcbiAgaWYgKGhvdXJzID09PSAyNCkge1xuICAgIHJldHVybiBtaW51dGVzID09PSAwICYmIHNlY29uZHMgPT09IDA7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIHNlY29uZHMgPj0gMCAmJlxuICAgIHNlY29uZHMgPCA2MCAmJlxuICAgIG1pbnV0ZXMgPj0gMCAmJlxuICAgIG1pbnV0ZXMgPCA2MCAmJlxuICAgIGhvdXJzID49IDAgJiZcbiAgICBob3VycyA8IDI1XG4gICk7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlVGltZXpvbmUoX2hvdXJzLCBtaW51dGVzKSB7XG4gIHJldHVybiBtaW51dGVzID49IDAgJiYgbWludXRlcyA8PSA1OTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBwYXJzZUlTTztcbiIsImltcG9ydCB7IGFkZEhvdXJzIH0gZnJvbSBcIi4vYWRkSG91cnMubWpzXCI7XG5cbi8qKlxuICogQG5hbWUgc3ViSG91cnNcbiAqIEBjYXRlZ29yeSBIb3VyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGhvdXJzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTdWJ0cmFjdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBob3VycyBmcm9tIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIGFtb3VudCAtIFRoZSBhbW91bnQgb2YgaG91cnMgdG8gYmUgc3VidHJhY3RlZC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgbmV3IGRhdGUgd2l0aCB0aGUgaG91cnMgc3VidHJhY3RlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdWJ0cmFjdCAyIGhvdXJzIGZyb20gMTEgSnVseSAyMDE0IDAxOjAwOjAwOlxuICogY29uc3QgcmVzdWx0ID0gc3ViSG91cnMobmV3IERhdGUoMjAxNCwgNiwgMTEsIDEsIDApLCAyKVxuICogLy89PiBUaHUgSnVsIDEwIDIwMTQgMjM6MDA6MDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN1YkhvdXJzKGRhdGUsIGFtb3VudCkge1xuICByZXR1cm4gYWRkSG91cnMoZGF0ZSwgLWFtb3VudCk7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgc3ViSG91cnM7XG4iLCJpbXBvcnQge1xuICBpMThuRHVyYXRpb25Ib3VyLFxuICBpMThuRHVyYXRpb25NaW51dGUsXG4gIGkxOG5EdXJhdGlvbkRheSxcbn0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9pMThuLmpzJztcbmltcG9ydCB7XG4gIGlzVmFsaWQsXG4gIHBhcnNlSVNPLFxuICBkaWZmZXJlbmNlSW5EYXlzLFxuICBkaWZmZXJlbmNlSW5Ib3VycyxcbiAgZGlmZmVyZW5jZUluTWludXRlcyxcbiAgYWRkTWludXRlcyxcbiAgc3ViSG91cnMsXG4gIHN1YkRheXMsXG59IGZyb20gJ2RhdGUtZm5zJztcblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIHJlbW92ZXMgdGhlIG9mZnNldCBvZiBhIElTTyBkYXRlIHN0cmluZy4gVGhpcyBuZWVkcyB0byBiZSBkb25lIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBvZmZzZXQgaXMgaWdub3JlZC5cbiAqIElmIGl0IGlzIG5vdCByZW1vdmVkIHRoZSB0aW1lIHdvdWxkIGJlIGNvbnZlcnRlZCB0byB0aGUgYnJvd3NlcnMgbG9jYWwgdGltZS5cbiAqIEV4YW1wbGU6IFwiMjAyMi0wOC0yOVQwOTozMDowMCswMzowMFwiIHdvdWxkIGJlIGNoYW5nZWQgdG8gXCIyMDIyLTA4LTI5VDA4OjMwOjAwKzAyOjAwXCIgLS0+IG5vdCB0aGUgZGVzaXJlZCBvdXRjb21lLCBhcyB3ZSB3YW50IHRvIHVzZSB0aGUgdGltZSBpbiB0aGUgdGltZXpvbmUgYW5kIG5vdCB0aGUgbG9jYWwgdGltZS5cbiAqXG4gKiBBZnRlciB0aGUgb2Zmc2V0IGlzIHJlbW92ZWQgYSBuZXcgZGF0ZSBpcyBjcmVhdGVkIGluIHRoZSBicm93c2VycyBsb2NhbCB0aW1lLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgdGltZSBvZiB0aGUgSVNPIGRhdGUgc3RyaW5nIGlzIGRpc3BsYXllZCBhbmQgbm90IGEgY29udmVydGVkIHRpbWUuXG4gKiBFeGFtcGxlOiBcIjIwMjItMDgtMjlUMDk6MzA6MDArMDM6MDBcIiB3b3VsZCBiZSBjaGFuZ2VkIHRvIFwiMjAyMi0wOC0yOVQwOTozMDowMCswMjowMFwiIC0tPiBkZXNpcmVkIG91dGNvbWVcbiAqIEF0dGVudGlvbjogVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBjb252ZXJ0IHRoZSB0aW1lIHRvIHRoZSBjb3JyZWN0IHRpbWUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLiBJdCBpcyBhIHdvcmthcm91bmQgdG8gbWFrZSBzdXJlLCB0aGF0IHRoZSBnaXZlbiB0aW1lIGlzIGRpc3BsYXllZCB3aXRob3V0IGJlaW5nIGNvbnZlcnRlZC5cbiAqXG4gKiBPZmZzZXQ6IERpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdGltZXpvbmUgYW5kIENvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lLlxuICpcbiAqIEBwYXJhbSBpc29UaW1lIC0gdGhlIGlzbyB0aW1lIHdpdGggdGhlIHRpbWV6b25lIG9mZnNldFxuICogQHJldHVybnMgYSBuZXcgZGF0ZSB3aXRoIHRoZSBsb2NhbCB0aW1lem9uZSB3aXRoIHRoZSBsb2NhbCBvZmZzZXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVRpbWV6b25lRnJvbUlTT1RpbWVTdHJpbmcoaXNvVGltZT86IHN0cmluZyk6IERhdGUgfCB1bmRlZmluZWQge1xuICBpZiAoIWlzb1RpbWUpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IHBhcnNlZERhdGUgPSBwYXJzZUlTTyhpc29UaW1lKTtcblxuICBpZiAoIWlzVmFsaWQocGFyc2VkRGF0ZSkpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKGlzb1RpbWUuaW5jbHVkZXMoJ1onKSkge1xuICAgIHJldHVybiBuZXcgRGF0ZShpc29UaW1lLnJlcGxhY2UoJ1onLCAnJykpO1xuICB9XG5cbiAgaWYgKGlzb1RpbWUuaW5jbHVkZXMoJ1QnKSkge1xuICAgIGNvbnN0IGRhdGVUaW1lID0gaXNvVGltZS5zcGxpdCgnVCcpO1xuXG4gICAgaWYgKGRhdGVUaW1lWzFdICYmIChkYXRlVGltZVsxXS5pbmNsdWRlcygnKycpIHx8IGRhdGVUaW1lWzFdLmluY2x1ZGVzKCctJykpKSB7XG4gICAgICByZXR1cm4gbmV3IERhdGUoYCR7ZGF0ZVRpbWVbMF19VCR7ZGF0ZVRpbWVbMV0uc3BsaXQoL1srLV0vKVswXX1gKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5ldyBEYXRlKGlzb1RpbWUpO1xufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gY29udmVydHMgYSBkdXJhdGlvbiBudW1iZXIgdG8gZGF0ZSBzdHJpbmcgd2l0aCBzcGVjaWZpYyBmb3JtYXRcbiAqXG4gKiBAcGFyYW0gZHVyYXRpb24gLSBkdXJhdGlvbiBpbiBtaW51dGVzXG4gKiBAcGFyYW0gY3VycmVudExhbmd1YWdlIC0gY3VycmVudExhbmd1YWdlXG4gKiBAcmV0dXJucyBhbiBPYmplY3Qgd2l0aCB0d28gc3RyaW5ncyBpbiB0aGUgZm9ybWF0IFwiZGQgaGggbW1cIiAoc2hvcnQpIGFuIFwieCBEYXkocykgeCBIb3VyKHMpIHggTWludXRlKHMpIChsb25nKVwiXG4gKiAqL1xuXG5leHBvcnQgY29uc3QgZHVyYXRpb25Ub1RpbWUgPSAoXG4gIGR1cmF0aW9uOiBudW1iZXIsXG4gIGN1cnJlbnRMYW5ndWFnZT86IHN0cmluZyxcbik6IHsgc2hvcnQ6IHN0cmluZzsgbG9uZzogc3RyaW5nIH0gPT4ge1xuICBjb25zdCBzaG9ydCA9IFtdO1xuICBjb25zdCBsb25nID0gW107XG5cbiAgY29uc3Qgbm93ID0gMDtcbiAgbGV0IGZ1dHVyZSA9IGFkZE1pbnV0ZXMobm93LCBkdXJhdGlvbik7XG5cbiAgY29uc3QgZGF5cyA9IGRpZmZlcmVuY2VJbkRheXMoZnV0dXJlLCBub3cpO1xuICBpZiAoZGF5cyA+IDApIHtcbiAgICBzaG9ydC5wdXNoKGAke2RheXN9IGRgKTtcbiAgICBpZiAoY3VycmVudExhbmd1YWdlKSB7XG4gICAgICBsb25nLnB1c2goXG4gICAgICAgIGAke2RheXN9ICR7XG4gICAgICAgICAgZGF5cyA+IDFcbiAgICAgICAgICAgID8gaTE4bkR1cmF0aW9uRGF5Lm11bHRpcGxlLmxvbmdbY3VycmVudExhbmd1YWdlXVxuICAgICAgICAgICAgOiBpMThuRHVyYXRpb25EYXkuc2luZ2xlLmxvbmdbY3VycmVudExhbmd1YWdlXVxuICAgICAgICB9YCxcbiAgICAgICk7XG4gICAgfVxuICAgIGZ1dHVyZSA9IHN1YkRheXMoZnV0dXJlLCBkYXlzKTtcbiAgfVxuXG4gIGNvbnN0IGhvdXJzID0gZGlmZmVyZW5jZUluSG91cnMoZnV0dXJlLCBub3cpO1xuICBpZiAoaG91cnMgPiAwKSB7XG4gICAgc2hvcnQucHVzaChgJHtob3Vyc30gaGApO1xuICAgIGlmIChjdXJyZW50TGFuZ3VhZ2UpIHtcbiAgICAgIGxvbmcucHVzaChcbiAgICAgICAgYCR7aG91cnN9ICR7XG4gICAgICAgICAgaG91cnMgPiAxXG4gICAgICAgICAgICA/IGkxOG5EdXJhdGlvbkhvdXIubXVsdGlwbGUubG9uZ1tjdXJyZW50TGFuZ3VhZ2VdXG4gICAgICAgICAgICA6IGkxOG5EdXJhdGlvbkhvdXIuc2luZ2xlLmxvbmdbY3VycmVudExhbmd1YWdlXVxuICAgICAgICB9YCxcbiAgICAgICk7XG4gICAgfVxuICAgIGZ1dHVyZSA9IHN1YkhvdXJzKGZ1dHVyZSwgaG91cnMpO1xuICB9XG5cbiAgY29uc3QgbWludXRlcyA9IGRpZmZlcmVuY2VJbk1pbnV0ZXMoZnV0dXJlLCBub3cpO1xuICBpZiAobWludXRlcyA+IDApIHtcbiAgICBzaG9ydC5wdXNoKGAke21pbnV0ZXN9IG1pbmApO1xuICAgIGlmIChjdXJyZW50TGFuZ3VhZ2UpIHtcbiAgICAgIGxvbmcucHVzaChcbiAgICAgICAgYCR7bWludXRlc30gJHtcbiAgICAgICAgICBtaW51dGVzID4gMVxuICAgICAgICAgICAgPyBpMThuRHVyYXRpb25NaW51dGUubXVsdGlwbGUubG9uZ1tjdXJyZW50TGFuZ3VhZ2VdXG4gICAgICAgICAgICA6IGkxOG5EdXJhdGlvbk1pbnV0ZS5zaW5nbGUubG9uZ1tjdXJyZW50TGFuZ3VhZ2VdXG4gICAgICAgIH1gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHNob3J0OiBzaG9ydC5qb2luKCcgJyksXG4gICAgbG9uZzogbG9u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
@@ -1,6 +1,5 @@
1
1
  import { TemplateResult } from 'lit';
2
2
  import { Leg } from './timetable-properties.js';
3
-
4
3
  interface IAccessAttribute {
5
4
  duration: number;
6
5
  text: string;
@@ -1,5 +1,4 @@
1
1
  import { Leg, Notice } from './timetable-properties.js';
2
-
3
2
  export declare const isRideLeg: (leg: any) => leg is Extract<Leg, {
4
3
  __typename: "PTRideLeg";
5
4
  }>;
@@ -2,7 +2,6 @@ import { SbbDateLike } from '@sbb-esta/lyne-elements/core/interfaces/types';
2
2
  import { SbbTitleLevel } from '@sbb-esta/lyne-elements/title.js';
3
3
  import { CSSResultGroup, TemplateResult, LitElement } from 'lit';
4
4
  import { Leg } from '../core/timetable.js';
5
-
6
5
  export interface InterfaceSbbJourneySummaryAttributes {
7
6
  legs: Leg[];
8
7
  vias?: string[];
@@ -1,7 +1,6 @@
1
1
  import { SbbDateLike } from '@sbb-esta/lyne-elements/core/interfaces/types';
2
2
  import { CSSResultGroup, TemplateResult, LitElement } from 'lit';
3
3
  import { Leg, PtRideLeg } from '../core/timetable.js';
4
-
5
4
  /**
6
5
  * It visually displays journey information.
7
6
  */
@@ -1,7 +1,6 @@
1
1
  import { SbbDateLike } from '@sbb-esta/lyne-elements/core/interfaces/types';
2
2
  import { CSSResultGroup, TemplateResult, LitElement } from 'lit';
3
3
  import { Leg, PtRideLeg } from '../core/timetable.js';
4
-
5
4
  /**
6
5
  * Combined with `sbb-pearl-chain`, it displays walk time information.
7
6
  */
@@ -34,8 +34,8 @@ const style = css`/**
34
34
  }
35
35
 
36
36
  :host {
37
- --sbb-pearl-chain-time-height: auto;
38
37
  display: block;
38
+ --sbb-pearl-chain-time-height: auto;
39
39
  }
40
40
  @media (min-width: calc(37.5rem)) {
41
41
  :host {
@@ -1,5 +1,4 @@
1
1
  import { CSSResultGroup, TemplateResult, LitElement } from 'lit';
2
-
3
2
  /**
4
3
  * It can be used as a container for the `sbb-pearl-chain-vertical-item` component.
5
4
  *
@@ -1,5 +1,4 @@
1
1
  import { CSSResultGroup, TemplateResult, LitElement } from 'lit';
2
-
3
2
  export type LineType = 'dotted' | 'standard' | 'thin';
4
3
  export type BulletType = 'default' | 'past' | 'irrelevant' | 'skipped' | 'disruption';
5
4
  export type LineColor = 'default' | 'past' | 'disruption' | 'walk';
@@ -167,13 +167,13 @@ slot[name=right]::slotted(*) {
167
167
  }
168
168
 
169
169
  .sbb-pearl-chain-vertical-item__bullet {
170
+ position: relative;
171
+ inset-inline-start: var(--sbb-pearl-chain-vertical-item-inline-start);
172
+ transform: var(--sbb-pearl-chain-vertical-item-transform);
170
173
  background: var(--sbb-pearl-chain-bullet-color);
171
174
  color: var(--sbb-pearl-chain-bullet-color);
172
175
  border-color: var(--sbb-pearl-chain-bullet-color);
173
176
  border-radius: 100%;
174
- position: relative;
175
- inset-inline-start: var(--sbb-pearl-chain-vertical-item-inline-start);
176
- transform: var(--sbb-pearl-chain-vertical-item-transform);
177
177
  }
178
178
  @media (forced-colors: active) {
179
179
  .sbb-pearl-chain-vertical-item__bullet {
@@ -218,13 +218,13 @@ slot[name=right]::slotted(*) {
218
218
  }
219
219
 
220
220
  .sbb-pearl-chain-vertical-item__bullet--stop.sbb-pearl-chain-vertical-item__bullet--irrelevant {
221
+ --sbb-pearl-chain-bullet-border-width: var(--sbb-border-width-1x);
221
222
  min-height: var(--sbb-pearl-chain-bullet-size-stop);
222
223
  min-width: var(--sbb-pearl-chain-bullet-size-stop);
223
224
  height: var(--sbb-pearl-chain-bullet-size-stop);
224
225
  width: var(--sbb-pearl-chain-bullet-size-stop);
225
226
  border: var(--sbb-pearl-chain-bullet-border-width) solid currentcolor;
226
227
  background: Canvas;
227
- --sbb-pearl-chain-bullet-border-width: var(--sbb-border-width-1x);
228
228
  }
229
229
 
230
230
  .sbb-pearl-chain-vertical-item__bullet--start-end.sbb-pearl-chain-vertical-item__bullet--skipped {
@@ -249,16 +249,16 @@ slot[name=right]::slotted(*) {
249
249
  }
250
250
 
251
251
  .sbb-pearl-chain-vertical-item__bullet--stop.sbb-pearl-chain-vertical-item__bullet--skipped {
252
- border: var(--sbb-pearl-chain-bullet-border-width) solid currentcolor;
253
- background: Canvas;
252
+ --sbb-pearl-chain-bullet-crossed-width: 0.706875rem;
253
+ --sbb-pearl-chain-bullet-crossed-height: 0.1875rem;
254
254
  min-height: var(--sbb-pearl-chain-bullet-size-stop);
255
255
  min-width: var(--sbb-pearl-chain-bullet-size-stop);
256
256
  height: var(--sbb-pearl-chain-bullet-size-stop);
257
257
  width: var(--sbb-pearl-chain-bullet-size-stop);
258
258
  border: var(--sbb-pearl-chain-bullet-border-width) solid currentcolor;
259
259
  background: Canvas;
260
- --sbb-pearl-chain-bullet-crossed-width: 0.706875rem;
261
- --sbb-pearl-chain-bullet-crossed-height: 0.1875rem;
260
+ border: var(--sbb-pearl-chain-bullet-border-width) solid currentcolor;
261
+ background: Canvas;
262
262
  }
263
263
  .sbb-pearl-chain-vertical-item__bullet--stop.sbb-pearl-chain-vertical-item__bullet--skipped::before {
264
264
  content: "";
@@ -278,26 +278,27 @@ slot[name=right]::slotted(*) {
278
278
  }
279
279
 
280
280
  .sbb-pearl-chain-vertical-item__bullet--position {
281
- background: var(--sbb-pearl-chain-bullet-color);
282
- color: var(--sbb-pearl-chain-bullet-color);
283
- border-color: var(--sbb-pearl-chain-bullet-color);
284
- border-radius: 100%;
281
+ inset-block-start: var(--sbb-pearl-chain-vertical-item-position);
282
+ position: absolute;
283
+ left: 50%;
284
+ transform: translateX(-50%);
285
285
  min-height: var(--sbb-pearl-chain-bullet-size-start-end);
286
286
  min-width: var(--sbb-pearl-chain-bullet-size-start-end);
287
287
  height: var(--sbb-pearl-chain-bullet-size-start-end);
288
288
  width: var(--sbb-pearl-chain-bullet-size-start-end);
289
- --sbb-pearl-chain-bullet-color: var(--sbb-pearl-chain-bullet-color-disruption);
290
- animation: pearl-chain-bullet-position-pulse var(--sbb-pearl-chain-bullet-animation-duration) var(--sbb-pearl-chain-bullet-animation-easing) infinite;
291
- position: absolute;
292
- left: 50%;
293
- transform: translateX(-50%);
294
- inset-block-start: var(--sbb-pearl-chain-vertical-item-position);
289
+ background: var(--sbb-pearl-chain-bullet-color);
290
+ color: var(--sbb-pearl-chain-bullet-color);
291
+ border-color: var(--sbb-pearl-chain-bullet-color);
292
+ border-radius: 100%;
295
293
  }
296
294
  @media (forced-colors: active) {
297
295
  .sbb-pearl-chain-vertical-item__bullet--position {
298
296
  --sbb-pearl-chain-bullet-color: CanvasText;
299
297
  }
300
298
  }
299
+ .sbb-pearl-chain-vertical-item__bullet--position {
300
+ --sbb-pearl-chain-bullet-color: var(--sbb-pearl-chain-bullet-color-disruption);
301
+ }
301
302
  @media (forced-colors: active) {
302
303
  .sbb-pearl-chain-vertical-item__bullet--position {
303
304
  --sbb-pearl-chain-bullet-color: Highlight;
@@ -317,6 +318,9 @@ slot[name=right]::slotted(*) {
317
318
  box-shadow: 0 0 0 0 var(--sbb-pearl-chain-bullet-color-disruption);
318
319
  }
319
320
  }
321
+ .sbb-pearl-chain-vertical-item__bullet--position {
322
+ animation: pearl-chain-bullet-position-pulse var(--sbb-pearl-chain-bullet-animation-duration) var(--sbb-pearl-chain-bullet-animation-easing) infinite;
323
+ }
320
324
  :host([disable-animation]) .sbb-pearl-chain-vertical-item__bullet--position {
321
325
  animation: unset !important;
322
326
  }`;
@@ -371,4 +375,4 @@ SbbPearlChainVerticalItemElement = __decorateClass([
371
375
  export {
372
376
  SbbPearlChainVerticalItemElement
373
377
  };
374
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVhcmwtY2hhaW4tdmVydGljYWwtaXRlbS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzLWV4cGVyaW1lbnRhbC9wZWFybC1jaGFpbi12ZXJ0aWNhbC1pdGVtL3BlYXJsLWNoYWluLXZlcnRpY2FsLWl0ZW0udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgTGl0RWxlbWVudCwgbm90aGluZyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vcGVhcmwtY2hhaW4tdmVydGljYWwtaXRlbS5zY3NzP2xpdCZpbmxpbmUnO1xuXG5leHBvcnQgdHlwZSBMaW5lVHlwZSA9ICdkb3R0ZWQnIHwgJ3N0YW5kYXJkJyB8ICd0aGluJztcblxuZXhwb3J0IHR5cGUgQnVsbGV0VHlwZSA9ICdkZWZhdWx0JyB8ICdwYXN0JyB8ICdpcnJlbGV2YW50JyB8ICdza2lwcGVkJyB8ICdkaXNydXB0aW9uJztcblxuZXhwb3J0IHR5cGUgTGluZUNvbG9yID0gJ2RlZmF1bHQnIHwgJ3Bhc3QnIHwgJ2Rpc3J1cHRpb24nIHwgJ3dhbGsnO1xuXG5leHBvcnQgdHlwZSBCdWxsZXRTaXplID0gJ3N0YXJ0LWVuZCcgfCAnc3RvcCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGVhcmxDaGFpblZlcnRpY2FsSXRlbUF0dHJpYnV0ZXMge1xuICBsaW5lVHlwZTogTGluZVR5cGU7XG4gIGxpbmVDb2xvcjogTGluZUNvbG9yO1xuICBidWxsZXRUeXBlPzogQnVsbGV0VHlwZTtcbiAgbWluSGVpZ2h0OiBudW1iZXI7XG4gIGhpZGVMaW5lOiBib29sZWFuO1xuICBidWxsZXRTaXplOiBCdWxsZXRTaXplO1xuICBwb3NpdGlvbj86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBkZXRhaWxzIGFib3V0IGNvbm5lY3Rpb24gYmV0d2VlbiBzdGF0aW9ucy5cbiAqXG4gKiBAc2xvdCBsZWZ0IC0gQ29udGVudCBvZiB0aGUgbGVmdCBzaWRlIG9mIHRoZSBpdGVtXG4gKiBAc2xvdCByaWdodCAtIENvbnRlbnQgb2YgdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGl0ZW1cbiAqL1xuQGN1c3RvbUVsZW1lbnQoJ3NiYi1wZWFybC1jaGFpbi12ZXJ0aWNhbC1pdGVtJylcbmV4cG9ydCBjbGFzcyBTYmJQZWFybENoYWluVmVydGljYWxJdGVtRWxlbWVudCBleHRlbmRzIExpdEVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICAvKiogVGhlIHBlYXJsQ2hhaW5WZXJ0aWNhbEl0ZW1BdHRyaWJ1dGVzIFByb3AgZm9yIHN0eWxpbmcgdGhlIGJ1bGxldHMgYW5kIGxpbmUuKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAncGVhcmwtY2hhaW4tdmVydGljYWwtaXRlbS1hdHRyaWJ1dGVzJywgdHlwZTogT2JqZWN0IH0pXG4gIHB1YmxpYyBwZWFybENoYWluVmVydGljYWxJdGVtQXR0cmlidXRlcyE6IFBlYXJsQ2hhaW5WZXJ0aWNhbEl0ZW1BdHRyaWJ1dGVzO1xuXG4gIC8qKiBJZiB0cnVlLCB0aGUgcG9zaXRpb24gd29uJ3QgYmUgYW5pbWF0ZWQuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2Rpc2FibGUtYW5pbWF0aW9uJywgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgZGlzYWJsZUFuaW1hdGlvbj86IGJvb2xlYW47XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgY29uc3QgeyBidWxsZXRUeXBlLCBsaW5lVHlwZSwgbGluZUNvbG9yLCBoaWRlTGluZSwgbWluSGVpZ2h0LCBidWxsZXRTaXplLCBwb3NpdGlvbiB9ID1cbiAgICAgIHRoaXMucGVhcmxDaGFpblZlcnRpY2FsSXRlbUF0dHJpYnV0ZXMgfHwge307XG5cbiAgICBjb25zdCBidWxsZXRUeXBlQ2xhc3MgPVxuICAgICAgcG9zaXRpb24gJiYgcG9zaXRpb24gPiAwICYmIHBvc2l0aW9uIDw9IDEwMFxuICAgICAgICA/ICdzYmItcGVhcmwtY2hhaW4tdmVydGljYWwtaXRlbV9fYnVsbGV0LS1wYXN0J1xuICAgICAgICA6IGBzYmItcGVhcmwtY2hhaW4tdmVydGljYWwtaXRlbV9fYnVsbGV0LS0ke2J1bGxldFR5cGV9YDtcblxuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1wZWFybC1jaGFpbi12ZXJ0aWNhbC1pdGVtX19jb2x1bW5cIiBzdHlsZT1cImhlaWdodDogJHttaW5IZWlnaHR9cHg7XCI+XG4gICAgICAgIDxzbG90IG5hbWU9XCJsZWZ0XCI+PC9zbG90PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgIGNsYXNzPVwic2JiLXBlYXJsLWNoYWluLXZlcnRpY2FsLWl0ZW1fX2NvbHVtbiBzYmItcGVhcmwtY2hhaW4tdmVydGljYWwtaXRlbV9fY29sdW1uLS1taWRkbGVcIlxuICAgICAgPlxuICAgICAgICAkeyFoaWRlTGluZVxuICAgICAgICAgID8gaHRtbGA8ZGl2XG4gICAgICAgICAgICAgIHN0eWxlPVwiLS1zYmItcGVhcmwtY2hhaW4tdmVydGljYWwtaXRlbS1sZWctc3RhdHVzOiR7cG9zaXRpb259JTtcIlxuICAgICAgICAgICAgICBjbGFzcz1cInNiYi1wZWFybC1jaGFpbi12ZXJ0aWNhbC1pdGVtX19saW5lIHNiYi1wZWFybC1jaGFpbi12ZXJ0aWNhbC1pdGVtX19saW5lLS0ke2xpbmVUeXBlfSBzYmItcGVhcmwtY2hhaW4tdmVydGljYWwtaXRlbV9fbGluZS0tJHtsaW5lQ29sb3J9XCJcbiAgICAgICAgICAgID48L2Rpdj5gXG4gICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAke2J1bGxldFR5cGVcbiAgICAgICAgICA/IGh0bWxgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInNiYi1wZWFybC1jaGFpbi12ZXJ0aWNhbC1pdGVtX19idWxsZXQgIHNiYi1wZWFybC1jaGFpbi12ZXJ0aWNhbC1pdGVtX19idWxsZXQtLSR7YnVsbGV0U2l6ZX0gJHtidWxsZXRUeXBlQ2xhc3N9XCJcbiAgICAgICAgICAgID48L2Rpdj5gXG4gICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAke3Bvc2l0aW9uICYmIHBvc2l0aW9uID4gMFxuICAgICAgICAgID8gaHRtbGA8ZGl2XG4gICAgICAgICAgICAgIHN0eWxlPVwiLS1zYmItcGVhcmwtY2hhaW4tdmVydGljYWwtaXRlbS1wb3NpdGlvbjoke3Bvc2l0aW9ufSU7XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzYmItcGVhcmwtY2hhaW4tdmVydGljYWwtaXRlbV9fYnVsbGV0LS1wb3NpdGlvblwiXG4gICAgICAgICAgICA+PC9kaXY+YFxuICAgICAgICAgIDogbm90aGluZ31cbiAgICAgIDwvZGl2PlxuICAgICAgPHNsb3QgbmFtZT1cInJpZ2h0XCI+PC9zbG90PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1wZWFybC1jaGFpbi12ZXJ0aWNhbC1pdGVtJzogU2JiUGVhcmxDaGFpblZlcnRpY2FsSXRlbUVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQStCYSxJQUFBLG1DQUFOLGNBQStDLFdBQVc7QUFBQSxFQVc1QyxTQUF5QjtBQUNwQyxVQUFBLEVBQUUsWUFBWSxVQUFVLFdBQVcsVUFBVSxXQUFXLFlBQVksU0FBUyxJQUNqRixLQUFLLG9DQUFvQyxDQUFBO0FBRXJDLFVBQUEsa0JBQ0osWUFBWSxXQUFXLEtBQUssWUFBWSxNQUNwQyxnREFDQSwwQ0FBMEMsVUFBVTtBQUVuRCxXQUFBO0FBQUEsMEVBQytELFNBQVM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxVQU96RSxDQUFDLFdBQ0M7QUFBQSxrRUFDc0QsUUFBUTtBQUFBLGdHQUNzQixRQUFRLHlDQUF5QyxTQUFTO0FBQUEsdUJBRTlJLE9BQU87QUFBQSxVQUNULGFBQ0U7QUFBQSxxR0FDeUYsVUFBVSxJQUFJLGVBQWU7QUFBQSx1QkFFdEgsT0FBTztBQUFBLFVBQ1QsWUFBWSxXQUFXLElBQ3JCO0FBQUEsZ0VBQ29ELFFBQVE7QUFBQTtBQUFBLHVCQUc1RCxPQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFJakI7QUFDRjtBQWpEYSxpQ0FDWSxTQUF5QjtBQUl6QyxnQkFBQTtBQUFBLEVBRE4sU0FBUyxFQUFFLFdBQVcsd0NBQXdDLE1BQU0sUUFBUTtBQUFBLEdBSmxFLGlDQUtKLFdBQUEsb0NBQUEsQ0FBQTtBQUlBLGdCQUFBO0FBQUEsRUFETixTQUFTLEVBQUUsV0FBVyxxQkFBcUIsU0FBUyxNQUFNLE1BQU0sU0FBUztBQUFBLEdBUi9ELGlDQVNKLFdBQUEsb0JBQUEsQ0FBQTtBQVRJLG1DQUFOLGdCQUFBO0FBQUEsRUFETixjQUFjLCtCQUErQjtBQUFBLEdBQ2pDLGdDQUFBOyJ9
378
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVhcmwtY2hhaW4tdmVydGljYWwtaXRlbS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzLWV4cGVyaW1lbnRhbC9wZWFybC1jaGFpbi12ZXJ0aWNhbC1pdGVtL3BlYXJsLWNoYWluLXZlcnRpY2FsLWl0ZW0udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgTGl0RWxlbWVudCwgbm90aGluZyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vcGVhcmwtY2hhaW4tdmVydGljYWwtaXRlbS5zY3NzP2xpdCZpbmxpbmUnO1xuXG5leHBvcnQgdHlwZSBMaW5lVHlwZSA9ICdkb3R0ZWQnIHwgJ3N0YW5kYXJkJyB8ICd0aGluJztcblxuZXhwb3J0IHR5cGUgQnVsbGV0VHlwZSA9ICdkZWZhdWx0JyB8ICdwYXN0JyB8ICdpcnJlbGV2YW50JyB8ICdza2lwcGVkJyB8ICdkaXNydXB0aW9uJztcblxuZXhwb3J0IHR5cGUgTGluZUNvbG9yID0gJ2RlZmF1bHQnIHwgJ3Bhc3QnIHwgJ2Rpc3J1cHRpb24nIHwgJ3dhbGsnO1xuXG5leHBvcnQgdHlwZSBCdWxsZXRTaXplID0gJ3N0YXJ0LWVuZCcgfCAnc3RvcCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGVhcmxDaGFpblZlcnRpY2FsSXRlbUF0dHJpYnV0ZXMge1xuICBsaW5lVHlwZTogTGluZVR5cGU7XG4gIGxpbmVDb2xvcjogTGluZUNvbG9yO1xuICBidWxsZXRUeXBlPzogQnVsbGV0VHlwZTtcbiAgbWluSGVpZ2h0OiBudW1iZXI7XG4gIGhpZGVMaW5lOiBib29sZWFuO1xuICBidWxsZXRTaXplOiBCdWxsZXRTaXplO1xuICBwb3NpdGlvbj86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBkZXRhaWxzIGFib3V0IGNvbm5lY3Rpb24gYmV0d2VlbiBzdGF0aW9ucy5cbiAqXG4gKiBAc2xvdCBsZWZ0IC0gQ29udGVudCBvZiB0aGUgbGVmdCBzaWRlIG9mIHRoZSBpdGVtXG4gKiBAc2xvdCByaWdodCAtIENvbnRlbnQgb2YgdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGl0ZW1cbiAqL1xuQGN1c3RvbUVsZW1lbnQoJ3NiYi1wZWFybC1jaGFpbi12ZXJ0aWNhbC1pdGVtJylcbmV4cG9ydCBjbGFzcyBTYmJQZWFybENoYWluVmVydGljYWxJdGVtRWxlbWVudCBleHRlbmRzIExpdEVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICAvKiogVGhlIHBlYXJsQ2hhaW5WZXJ0aWNhbEl0ZW1BdHRyaWJ1dGVzIFByb3AgZm9yIHN0eWxpbmcgdGhlIGJ1bGxldHMgYW5kIGxpbmUuKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAncGVhcmwtY2hhaW4tdmVydGljYWwtaXRlbS1hdHRyaWJ1dGVzJywgdHlwZTogT2JqZWN0IH0pXG4gIHB1YmxpYyBwZWFybENoYWluVmVydGljYWxJdGVtQXR0cmlidXRlcyE6IFBlYXJsQ2hhaW5WZXJ0aWNhbEl0ZW1BdHRyaWJ1dGVzO1xuXG4gIC8qKiBJZiB0cnVlLCB0aGUgcG9zaXRpb24gd29uJ3QgYmUgYW5pbWF0ZWQuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2Rpc2FibGUtYW5pbWF0aW9uJywgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgZGlzYWJsZUFuaW1hdGlvbj86IGJvb2xlYW47XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgY29uc3QgeyBidWxsZXRUeXBlLCBsaW5lVHlwZSwgbGluZUNvbG9yLCBoaWRlTGluZSwgbWluSGVpZ2h0LCBidWxsZXRTaXplLCBwb3NpdGlvbiB9ID1cbiAgICAgIHRoaXMucGVhcmxDaGFpblZlcnRpY2FsSXRlbUF0dHJpYnV0ZXMgfHwge307XG5cbiAgICBjb25zdCBidWxsZXRUeXBlQ2xhc3MgPVxuICAgICAgcG9zaXRpb24gJiYgcG9zaXRpb24gPiAwICYmIHBvc2l0aW9uIDw9IDEwMFxuICAgICAgICA/ICdzYmItcGVhcmwtY2hhaW4tdmVydGljYWwtaXRlbV9fYnVsbGV0LS1wYXN0J1xuICAgICAgICA6IGBzYmItcGVhcmwtY2hhaW4tdmVydGljYWwtaXRlbV9fYnVsbGV0LS0ke2J1bGxldFR5cGV9YDtcblxuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1wZWFybC1jaGFpbi12ZXJ0aWNhbC1pdGVtX19jb2x1bW5cIiBzdHlsZT1cImhlaWdodDogJHttaW5IZWlnaHR9cHg7XCI+XG4gICAgICAgIDxzbG90IG5hbWU9XCJsZWZ0XCI+PC9zbG90PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgIGNsYXNzPVwic2JiLXBlYXJsLWNoYWluLXZlcnRpY2FsLWl0ZW1fX2NvbHVtbiBzYmItcGVhcmwtY2hhaW4tdmVydGljYWwtaXRlbV9fY29sdW1uLS1taWRkbGVcIlxuICAgICAgPlxuICAgICAgICAkeyFoaWRlTGluZVxuICAgICAgICAgID8gaHRtbGA8ZGl2XG4gICAgICAgICAgICAgIHN0eWxlPVwiLS1zYmItcGVhcmwtY2hhaW4tdmVydGljYWwtaXRlbS1sZWctc3RhdHVzOiR7cG9zaXRpb259JTtcIlxuICAgICAgICAgICAgICBjbGFzcz1cInNiYi1wZWFybC1jaGFpbi12ZXJ0aWNhbC1pdGVtX19saW5lIHNiYi1wZWFybC1jaGFpbi12ZXJ0aWNhbC1pdGVtX19saW5lLS0ke2xpbmVUeXBlfSBzYmItcGVhcmwtY2hhaW4tdmVydGljYWwtaXRlbV9fbGluZS0tJHtsaW5lQ29sb3J9XCJcbiAgICAgICAgICAgID48L2Rpdj5gXG4gICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAke2J1bGxldFR5cGVcbiAgICAgICAgICA/IGh0bWxgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInNiYi1wZWFybC1jaGFpbi12ZXJ0aWNhbC1pdGVtX19idWxsZXQgIHNiYi1wZWFybC1jaGFpbi12ZXJ0aWNhbC1pdGVtX19idWxsZXQtLSR7YnVsbGV0U2l6ZX0gJHtidWxsZXRUeXBlQ2xhc3N9XCJcbiAgICAgICAgICAgID48L2Rpdj5gXG4gICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAke3Bvc2l0aW9uICYmIHBvc2l0aW9uID4gMFxuICAgICAgICAgID8gaHRtbGA8ZGl2XG4gICAgICAgICAgICAgIHN0eWxlPVwiLS1zYmItcGVhcmwtY2hhaW4tdmVydGljYWwtaXRlbS1wb3NpdGlvbjoke3Bvc2l0aW9ufSU7XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzYmItcGVhcmwtY2hhaW4tdmVydGljYWwtaXRlbV9fYnVsbGV0LS1wb3NpdGlvblwiXG4gICAgICAgICAgICA+PC9kaXY+YFxuICAgICAgICAgIDogbm90aGluZ31cbiAgICAgIDwvZGl2PlxuICAgICAgPHNsb3QgbmFtZT1cInJpZ2h0XCI+PC9zbG90PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1wZWFybC1jaGFpbi12ZXJ0aWNhbC1pdGVtJzogU2JiUGVhcmxDaGFpblZlcnRpY2FsSXRlbUVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUErQmEsSUFBQSxtQ0FBTixjQUErQyxXQUFXO0FBQUEsRUFXNUMsU0FBeUI7QUFDcEMsVUFBQSxFQUFFLFlBQVksVUFBVSxXQUFXLFVBQVUsV0FBVyxZQUFZLFNBQVMsSUFDakYsS0FBSyxvQ0FBb0MsQ0FBQTtBQUVyQyxVQUFBLGtCQUNKLFlBQVksV0FBVyxLQUFLLFlBQVksTUFDcEMsZ0RBQ0EsMENBQTBDLFVBQVU7QUFFbkQsV0FBQTtBQUFBLDBFQUMrRCxTQUFTO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsVUFPekUsQ0FBQyxXQUNDO0FBQUEsa0VBQ3NELFFBQVE7QUFBQSxnR0FDc0IsUUFBUSx5Q0FBeUMsU0FBUztBQUFBLHVCQUU5SSxPQUFPO0FBQUEsVUFDVCxhQUNFO0FBQUEscUdBQ3lGLFVBQVUsSUFBSSxlQUFlO0FBQUEsdUJBRXRILE9BQU87QUFBQSxVQUNULFlBQVksV0FBVyxJQUNyQjtBQUFBLGdFQUNvRCxRQUFRO0FBQUE7QUFBQSx1QkFHNUQsT0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBLEVBSWpCO0FBQ0Y7QUFqRGEsaUNBQ1ksU0FBeUI7QUFJekMsZ0JBQUE7QUFBQSxFQUROLFNBQVMsRUFBRSxXQUFXLHdDQUF3QyxNQUFNLFFBQVE7QUFBQSxHQUpsRSxpQ0FLSixXQUFBLG9DQUFBLENBQUE7QUFJQSxnQkFBQTtBQUFBLEVBRE4sU0FBUyxFQUFFLFdBQVcscUJBQXFCLFNBQVMsTUFBTSxNQUFNLFNBQVM7QUFBQSxHQVIvRCxpQ0FTSixXQUFBLG9CQUFBLENBQUE7QUFUSSxtQ0FBTixnQkFBQTtBQUFBLEVBRE4sY0FBYywrQkFBK0I7QUFBQSxHQUNqQyxnQ0FBQTsifQ==