/********************************************************* {COPYRIGHT-TOP} ***
* Licensed Materials - Property of IBM
* 5725-Z22, 5725-Z63, 5725-U33, 5725-Z63
*
* (C) Copyright IBM Corporation 2017
*
* All Rights Reserved.
* US Government Users Restricted Rights - Use, duplication or disclosure
* restricted by GSA ADP Schedule Contract with IBM Corp.
********************************************************** {COPYRIGHT-END} **/
.apim .detailsEditor .tagContainer,
.apim .bx--modal .tagContainer {
  background-color: rgba(61,112,178,0.1);
  display: -webkit-box;
  display: -moz-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: box;
  display: flex;
  -webkit-box-lines: multiple;
  -moz-box-lines: multiple;
  -o-box-lines: multiple;
  -webkit-flex-wrap: wrap;
  -ms-flex-wrap: wrap;
  flex-wrap: wrap;
}
.apim .detailsEditor .tagContainer .tagContainer,
.apim .bx--modal .tagContainer .tagContainer {
  background-color: transparent;
}
.apim .tagContainer > input {
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  -o-box-flex: 1;
  box-flex: 1;
  -webkit-flex: 1;
  -ms-flex: 1;
  flex: 1;
}
.apim .tagContainer .tag.communityTag {
  font-size: 12px;
  height: 20px;
  line-height: 20px;
}
.apim .tagContainer .tag.communityTag button {
  font-size: 12px;
  margin-top: -4px;
  vertical-align: top;
}
.apim .tagContainer .tag.communityTag .tagLabel {
  display: inline-block;
  line-height: 20px;
  vertical-align: top;
}
.apim .tagContainer .communityTag {
  margin-right: 10px;
}
.apim .tagContainer .tag {
  border-radius: 2px;
  color: #fff;
  font-size: small;
  line-height: 15px;
  padding: 5px 0 5px 10px;
}
.apim .tagContainer .tag.favouriteTag {
  background-color: #fcf5ca;
  color: #000;
}
.apim .tagContainer .tag button.iconOnlyButton {
  color: inherit;
}
.apim .tagContainer .tag img.deleteTag {
  background-image: url("data:image/png;base64,77+9UE5HChoKAAAACklIRFIAAAAUAAAAFAgGAAAA77+977+9HQoAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlx77+9ZTwAAAMgaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjAtYzA2MCA2MS4xMzQ3NzcsIDIwMTAvMDIvMTItMTc6MzI6MDAgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzUgV2luZG93cyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBRDg0N0IxNzdDRkIxMUUwQjQ4ODhGQjlFQTRGOEE2QSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBRDg0N0IxODdDRkIxMUUwQjQ4ODhGQjlFQTRGOEE2QSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkFEODQ3QjE1N0NGQjExRTBCNDg4OEZCOUVBNEY4QTZBIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkFEODQ3QjE2N0NGQjExRTBCNDg4OEZCOUVBNEY4QTZBIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+BlHvv70fAAAAa0lEQVR477+9Yu+/ve+/ve+/vT8DNQETA++/ve+/ve+/ve+/ve+/vQMWXBIKHe+/ve+/ve+/ve+/vWBjZkQW77+977+977+9L1jvv73vv73vv73vv73vv70sF++/vQxAZ++/ve+/vWVk77+977+9DEI2DO+/ve+/vUTvv70Q77+9Rnzvv73vv70/77+977+977+9Ge+/vXBkIu+/vTDvv70377+9w5RsLyMbRCjvv71A77+9ce+/ve+/vRkBBgIEGABA77+9LiMD77+9GQAAAABJRU5E77+9QmDvv70=");
}
.apim .tagContainer .tagChooser {
  background: none;
  border: 0 !important;
  -webkit-box-shadow: none;
  box-shadow: none;
  height: 31px;
  margin: 0;
  padding: 0;
  width: 200px;
}
.apim .tagContainer.undeletable .deleteTagButton {
  display: none;
}
.apim .tagContainer .tagNode {
  margin: 3px 6px 3px 0;
}
.apim .tagContainer .tagNode .iconNode {
  display: none;
}
.apim .tagContainer .tagNode .deleteTagButton .iconOnlyButton .closeIcon {
  background-image: none;
  font-weight: bold;
  height: auto;
  width: auto;
}
.apim .tagContainer .tagNode .deleteTagButton .iconOnlyButton .closeIcon:before {
  content: '\2715';
}
.apim .tagContainer.tagDropdown {
  padding: 10px;
}
.apim .tagContainer.tagDropdown .tagNode {
  margin: 3px 0;
}
.apim .tagContainer.tagDropdown .deleteTagButton {
  display: none;
}
.apim .tagContainer.tagDropdown .fixedWidthTag {
  width: 150px;
}
.apim .tagContainer .smallTag {
  padding: 0 8px 0 5px;
}
.apim .tagContainer .fixedTag {
  height: 15px;
  line-height: 15px;
  padding: 5px;
}
.apim .tagContainer .orgTag {
  background-color: #dceaf3;
  color: #000;
}
.apim .tagContainer .communityTag .tagNode .iconNode {
  display: inline-block;
}
.apim .filterColumn .tagContainer .fixedWidthTag {
  width: 100%;
}
.apim .filterColumn .tagContainer .layout apim-tag {
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  -o-box-flex: 1;
  box-flex: 1;
  -webkit-flex: 1;
  -ms-flex: 1;
  flex: 1;
}
.apim .filterColumn .tagContainer .layout .tagNode {
  width: 100%;
}
.apim .filterColumn .tagContainer .layout input {
  margin-right: 3px;
  margin-top: 10px;
}
.apim .compactTag .tagNode {
  margin: 4px 2px 2px;
}
.apim .compactTag .tagNode .closeIcon {
  margin-left: -3px;
}
.apim .compactTag .tagNode .deleteTagButton {
  position: absolute;
  top: 0;
  left: 3px;
  opacity: 0;
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
  filter: alpha(opacity=0);
}
.apim .compactTag .tagNode:hover .deleteTagButton {
  opacity: 1;
  -ms-filter: none;
  filter: none;
}
.apim .compactTag .tagNode .tagLabel {
  display: none;
}
.apim .tagNode .tagLabel {
  cursor: pointer;
  vertical-align: middle;
}
.apim .tagDialog .selectableTag {
  cursor: pointer;
  margin: 5px 0 10px;
  min-width: 40px;
  padding: 0 5px;
}
.apim .tagDialog .selectableTag label {
  cursor: pointer;
}
.apim .tagDialog .selectableTag:focus label {
  outline: 1px dotted #fff !important;
}
.apim .tagDialog .title {
  font-weight: bold;
  padding: 5px 0;
}
.apim .circleTag {
  background-color: #e6e9ea;
  border-radius: 50%;
  color: #000;
  font-weight: bold;
  height: 12px;
  line-height: 12px;
  margin-top: 4px;
  text-align: center;
  vertical-align: top;
  width: 12px;
}
.apim .tag.favourite {
  background-color: #fcf5ca;
}
.apim .tag.untagged {
  background-color: #fff;
  color: #000;
}
.apim .resourceTagContainer ul {
  margin: 0;
}
.apim .resourceTagContainer li {
  width: 100%;
}
.apim .resourceTagContainer li a {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  color: inherit;
  display: inline-block;
  padding: 1px 10px;
  width: 100%;
}
.apim .resourceTagContainer .customTag {
  padding: 6px 10px 0;
  white-space: nowrap;
}
.apim .resourceTagContainer .scrollBox {
  max-height: 100px;
  overflow-x: visible;
  overflow-y: auto;
  padding: 1px 0;
}
.apim .productTag,
.apim .apiTag,
.apim .tagContainer .fixedWidthTag {
  border: 1px solid #ccc;
  width: 90px;
  word-wrap: break-word;
}
.apim .compactTag .tagNode .productTag,
.apim .compactTag .tagNode .apiTag {
  padding: 0;
}
.apim .redTag,
.apim .tagContainer .tag.redTag {
  background-color: #f00;
}
.apim .blueTag,
.apim .tagContainer .tag.blueTag {
  background-color: #00f;
}
.apim .purpleTag,
.apim .tagContainer .tag.purpleTag {
  background-color: #800080;
}
.apim .greenTag,
.apim .tagContainer .tag.greenTag {
  background-color: #008000;
}
.apim .navyTag,
.apim .tagContainer .tag.navyTag {
  background-color: #000080;
}
.apim .maroonTag,
.apim .tagContainer .tag.maroonTag {
  background-color: #800000;
}
.apim .orangeTag,
.apim .tagContainer .tag.orangeTag {
  background-color: #ffa500;
}
.apim .magentaTag,
.apim .tagContainer .tag.magentaTag {
  background-color: #f0f;
}
.apim .circleTag.tag1,
.apim .tagContainer .tag.tag1 {
  background-color: #8dcb36;
  color: #000;
}
.apim .circleTag.tag2,
.apim .tagContainer .tag.tag2 {
  background-color: #925ec2;
}
.apim .circleTag.tag3,
.apim .tagContainer .tag.tag3 {
  background-color: #ef5da0;
  color: #000;
}
.apim .circleTag.tag4,
.apim .tagContainer .tag.tag4 {
  background-color: #ffd426;
  color: #000;
}
.apim .circleTag.tag5,
.apim .tagContainer .tag.tag5 {
  background-color: #68b9f4;
  color: #000;
}
.apim .circleTag.tag6,
.apim .tagContainer .tag.tag6 {
  background-color: #7fdfee;
  color: #000;
}
.apim .circleTag.tag7,
.apim .tagContainer .tag.tag7 {
  background-color: #ffb794;
  color: #000;
}
.apim .circleTag.tag8,
.apim .tagContainer .tag.tag8 {
  background-color: #c6e59a;
  color: #000;
}
.apim .circleTag.tag9,
.apim .tagContainer .tag.tag9 {
  background-color: #c8aee0;
  color: #000;
}
.apim .circleTag.tag10,
.apim .tagContainer .tag.tag10 {
  background-color: #f7aecf;
  color: #000;
}
.apim .circleTag.tag11,
.apim .tagContainer .tag.tag11 {
  background-color: #ffe992;
  color: #000;
}
.apim .circleTag.tag12,
.apim .tagContainer .tag.tag12 {
  background-color: #b3dcf9;
  color: #000;
}
.apim .circleTag.tag13,
.apim .tagContainer .tag.tag13 {
  background-color: #ccf2f8;
  color: #000;
}
.apim .circleTag.tag14,
.apim .tagContainer .tag.tag14 {
  background-color: #ffe2d4;
  color: #000;
}
.apim .circleTag.tag15,
.apim .tagContainer .tag.tag15 {
  background-color: #e8f5d7;
  color: #000;
}
.apim .circleTag.tag16,
.apim .tagContainer .tag.tag16 {
  background-color: #e9dff3;
  color: #000;
}
.apim .circleTag.tag17,
.apim .tagContainer .tag.tag17 {
  background-color: #fcdfec;
  color: #000;
}
.apim .circleTag.tag18,
.apim .tagContainer .tag.tag18 {
  background-color: #fff6d4;
  color: #000;
}
.apim .circleTag.tag19,
.apim .tagContainer .tag.tag19 {
  background-color: #e1f1fd;
  color: #000;
}
.apim .communityIcon,
.apim .communityTag .iconNode {
  margin: -2px 5px 0 0;
}
.apim .resourceTagContainer li:hover,
.apim .resourceTagContainer li a:focus {
  background-color: #e5f3fb;
}
.apim .resourceTagContainer li a:hover,
.apim .resourceTagContainer li a:focus {
  text-decoration: none;
}
.apim .appLifecycleTag {
  background-color: #80b723;
  color: #fff;
  margin-left: 10px;
  padding: 0.5rem;
  text-transform: uppercase;
  vertical-align: middle;
}
.apim .appLifecycle-development {
  background-color: #ff8500;
}
.apim .visibilityTags .tagContainer.publishContainer {
  width: 100%;
}
.apim apim-api-editor .bx--form__tagContainer {
  width: 32em;
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwaW0vY3NzL3RhZ2dpbmcuc3R5bCIsIi4uL25vZGVfbW9kdWxlcy9uaWIvbGliL25pYi9zaXplLnN0eWwiLCIuLi9ub2RlX21vZHVsZXMvc3R5bHVzL2xpYi9mdW5jdGlvbnMvaW5kZXguc3R5bCIsIi4uL25vZGVfbW9kdWxlcy9uaWIvbGliL25pYi9mbGV4LnN0eWwiLCIuLi9ub2RlX21vZHVsZXMvbmliL2xpYi9uaWIvdmVuZG9yLnN0eWwiLCIuLi9ub2RlX21vZHVsZXMvbmliL2xpYi9uaWIvYm9yZGVyLXJhZGl1cy5zdHlsIiwiLi4vbm9kZV9tb2R1bGVzL25pYi9saWIvbmliL2JvcmRlci5zdHlsIiwiLi4vbm9kZV9tb2R1bGVzL25pYi9saWIvbmliL3Bvc2l0aW9ucy5zdHlsIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7O0FBYUk7O0VBQ0Usa0JBQWtCLHFCQUFsQjtFQzZXVyxTQ2xIZSxZRGtIZjtFQUFBLFNDbEhlLFNEa0hmO0VBQUEsU0NsSGUsYURrSGY7RUU3V1QsU0FBUyxZQUFUO0VBQ0EsU0FBUyxJQUFUO0VBS0YsU0FBUyxLQUFUO0VDdUJZLG1CQUFHLFNBQUg7RUFBQSxnQkFBRyxTQUFIO0VBQUEsY0FBRyxTQUFIO0VBQUEsbUJBQUcsS0FBSDtFQUFBLGVBQUcsS0FBSDtFQVJILFdBQUcsS0FBSDs7QUpqQlQ7O0VBQ0Usa0JBQWtCLFlBQWxCOztBQUdKO0VJcUJjLGtCQUFHLEVBQUg7RUFBQSxlQUFHLEVBQUg7RUFBQSxhQUFHLEVBQUg7RUFSSCxVQUFHLEVBQUg7RUFRRyxjQUFHLEVBQUg7RUFBQSxVQUFHLEVBQUg7RUFSSCxNQUFHLEVBQUg7O0FKVlg7RUFDRSxXQUFXLEtBQVg7RUFDQSxRQUFRLEtBQVI7RUFDQSxhQUFhLEtBQWI7O0FBRUE7RUFDRSxXQUFXLEtBQVg7RUFDQSxZQUFZLEtBQVo7RUFDQSxnQkFBZ0IsSUFBaEI7O0FBRUY7RUdiRixTQUFTLGFBQVQ7RUhlSSxhQUFhLEtBQWI7RUFDQSxnQkFBZ0IsSUFBaEI7O0FBRUo7RUFDRSxjQUFjLEtBQWQ7O0FBRUY7RUtTRixlQUFjLElBQWQ7RUxQSSxPQUFPLEtBQVA7RUFDQSxXQUFXLE1BQVg7RUFDQSxhQUFhLEtBQWI7RUFDQSxTQUFTLGVBQVQ7O0FBRUE7RUFDRSxrQkFBa0IsUUFBbEI7RUFDQSxPQUFPLEtBQVA7O0FBRUY7RUFDRSxPQUFPLFFBQVA7O0FBRUY7RUkrYkYsa0JBQWlCLDgrQ0FBakI7O0FKNWJBO0VJc2JBLFlBQVcsS0FBWDtFRXplQSxRQUFRLGFBQVI7RUZrQ2Msb0JBQUcsS0FBSDtFQVJILFlBQUcsS0FBSDtFSjZCVCxRQUFRLEtBQVI7RUFDQSxRQUFRLEVBQVI7RUFDQSxTQUFTLEVBQVQ7RUFDQSxPQUFPLE1BQVA7O0FBRUY7RUcvQ0EsU0FBUyxLQUFUOztBSGtEQTtFQUNFLFFBQVEsY0FBUjs7QUFFQTtFR3JERixTQUFTLEtBQVQ7O0FId0RFO0VJMGFGLGtCQUFpQixLQUFqQjtFSnhhSSxhQUFhLEtBQWI7RUFDQSxRQUFRLEtBQVI7RUFDQSxPQUFPLEtBQVA7O0FBRUE7RUFDRSxTQUFTLFFBQVQ7O0FBRU47RUFDRSxTQUFTLEtBQVQ7O0FBRUE7RUFDRSxRQUFRLE1BQVI7O0FBRUY7RUd2RUYsU0FBUyxLQUFUOztBSDBFRTtFQUNFLE9BQU8sTUFBUDs7QUFFSjtFQUNFLFNBQVMsWUFBVDs7QUFFRjtFQUNFLFFBQVEsS0FBUjtFQUNBLGFBQWEsS0FBYjtFQUNBLFNBQVMsSUFBVDs7QUFFRjtFQUNFLGtCQUFrQixRQUFsQjtFQUNBLE9BQU8sS0FBUDs7QUFFRjtFR3pGQSxTQUFTLGFBQVQ7O0FINkZBO0VBQ0UsT0FBTyxLQUFQOztBQUdBO0VJNUVZLGtCQUFHLEVBQUg7RUFBQSxlQUFHLEVBQUg7RUFBQSxhQUFHLEVBQUg7RUFSSCxVQUFHLEVBQUg7RUFRRyxjQUFHLEVBQUg7RUFBQSxVQUFHLEVBQUg7RUFSSCxNQUFHLEVBQUg7O0FKdUZUO0VBQ0UsT0FBTyxLQUFQOztBQUVGO0VBQ0UsY0FBYyxJQUFkO0VBQ0EsWUFBWSxLQUFaOztBQUVOO0VBQ0UsUUFBUSxZQUFSOztBQUVBO0VBQ0UsYUFBYSxLQUFiOztBQUVGO0VPbklGLFVBQVUsU0FBVjtFQUdZLEtBQTRDLEVBQTVDO0VBQUEsTUFBNEMsSUFBNUM7RUhxUVosU0FBUyxFQUFUO0VBV00sWUFBeUUscURBQXpFO0VBQ0EsUUFBaUMsaUJBQWpDOztBSjdJSjtFSWlJRixTQUFTLEVBQVQ7RUFRTSxZQUFZLEtBQVo7RUFDQSxRQUFRLEtBQVI7O0FKdklKO0VHeEhBLFNBQVMsS0FBVDs7QUgySEY7RUk2V0UsUUFBTyxRQUFQO0VKM1dBLGdCQUFnQixPQUFoQjs7QUFHQTtFSXdXQSxRQUFPLFFBQVA7RUp0V0UsUUFBUSxXQUFSO0VBQ0EsV0FBVyxLQUFYO0VBQ0EsU0FBUyxNQUFUOztBQUVBO0VJa1dGLFFBQU8sUUFBUDs7QUovVkU7RUFDRSxTQUFTLDJCQUFUOztBQUVKO0VBQ0UsYUFBYSxLQUFiO0VBQ0EsU0FBUyxNQUFUOztBQUVKO0VBQ0Usa0JBQWtCLFFBQWxCO0VLbkhGLGVBQWMsSUFBZDtFTHFIRSxPQUFPLEtBQVA7RUFDQSxhQUFhLEtBQWI7RUFDQSxRQUFRLEtBQVI7RUFDQSxhQUFhLEtBQWI7RUFDQSxZQUFZLElBQVo7RUFDQSxZQUFZLE9BQVo7RUFDQSxnQkFBZ0IsSUFBaEI7RUFDQSxPQUFPLEtBQVA7O0FBR0E7RUFDRSxrQkFBa0IsUUFBbEI7O0FBRUY7RUFDRSxrQkFBa0IsS0FBbEI7RUFDQSxPQUFPLEtBQVA7O0FBR0Y7RUFDRSxRQUFRLEVBQVI7O0FBRUY7RUFDRSxPQUFPLEtBQVA7O0FBRUE7RUl0Slksb0JBQUcsV0FBSDtFQUFBLGlCQUFHLFdBQUg7RUFSSCxZQUFHLFdBQUg7RUpnS1AsT0FBTyxRQUFQO0VHN0tKLFNBQVMsYUFBVDtFSCtLSSxTQUFTLFNBQVQ7RUFDQSxPQUFPLEtBQVA7O0FBRUo7RUFDRSxTQUFTLFdBQVQ7RUFDQSxhQUFhLE9BQWI7O0FBRUY7RUFDRSxZQUFZLE1BQVo7RUFDQSxZQUFZLFFBQVo7RUFDQSxZQUFZLEtBQVo7RUFDQSxTQUFTLE1BQVQ7O0FBRUo7QUFDQTtBQUNBO0VNM01FLFFBQVEsZUFBUjtFTjZNQSxPQUFPLEtBQVA7RUFDQSxXQUFXLFdBQVg7O0FBR0E7QUFDQTtFQUNFLFNBQVMsRUFBVDs7QUFFSjtBQUNBO0VBQ0Usa0JBQWtCLEtBQWxCOztBQUVGO0FBQ0E7RUFDRSxrQkFBa0IsS0FBbEI7O0FBRUY7QUFDQTtFQUNFLGtCQUFrQixRQUFsQjs7QUFFRjtBQUNBO0VBQ0Usa0JBQWtCLFFBQWxCOztBQUVGO0FBQ0E7RUFDRSxrQkFBa0IsUUFBbEI7O0FBRUY7QUFDQTtFQUNFLGtCQUFrQixRQUFsQjs7QUFFRjtBQUNBO0VBQ0Usa0JBQWtCLFFBQWxCOztBQUVGO0FBQ0E7RUFDRSxrQkFBa0IsS0FBbEI7O0FBRUY7QUFDQTtFQUNFLGtCQUFrQixRQUFsQjtFQUNBLE9BQU8sS0FBUDs7QUFFRjtBQUNBO0VBQ0Usa0JBQWtCLFFBQWxCOztBQUVGO0FBQ0E7RUFDRSxrQkFBa0IsUUFBbEI7RUFDQSxPQUFPLEtBQVA7O0FBRUY7QUFDQTtFQUNFLGtCQUFrQixRQUFsQjtFQUNBLE9BQU8sS0FBUDs7QUFFRjtBQUNBO0VBQ0Usa0JBQWtCLFFBQWxCO0VBQ0EsT0FBTyxLQUFQOztBQUVGO0FBQ0E7RUFDRSxrQkFBa0IsUUFBbEI7RUFDQSxPQUFPLEtBQVA7O0FBRUY7QUFDQTtFQUNFLGtCQUFrQixRQUFsQjtFQUNBLE9BQU8sS0FBUDs7QUFFRjtBQUNBO0VBQ0Usa0JBQWtCLFFBQWxCO0VBQ0EsT0FBTyxLQUFQOztBQUVGO0FBQ0E7RUFDRSxrQkFBa0IsUUFBbEI7RUFDQSxPQUFPLEtBQVA7O0FBRUY7QUFDQTtFQUNFLGtCQUFrQixRQUFsQjtFQUNBLE9BQU8sS0FBUDs7QUFFRjtBQUNBO0VBQ0Usa0JBQWtCLFFBQWxCO0VBQ0EsT0FBTyxLQUFQOztBQUVGO0FBQ0E7RUFDRSxrQkFBa0IsUUFBbEI7RUFDQSxPQUFPLEtBQVA7O0FBRUY7QUFDQTtFQUNFLGtCQUFrQixRQUFsQjtFQUNBLE9BQU8sS0FBUDs7QUFFRjtBQUNBO0VBQ0Usa0JBQWtCLFFBQWxCO0VBQ0EsT0FBTyxLQUFQOztBQUVGO0FBQ0E7RUFDRSxrQkFBa0IsUUFBbEI7RUFDQSxPQUFPLEtBQVA7O0FBRUY7QUFDQTtFQUNFLGtCQUFrQixRQUFsQjtFQUNBLE9BQU8sS0FBUDs7QUFFRjtBQUNBO0VBQ0Usa0JBQWtCLFFBQWxCO0VBQ0EsT0FBTyxLQUFQOztBQUVGO0FBQ0E7RUFDRSxrQkFBa0IsUUFBbEI7RUFDQSxPQUFPLEtBQVA7O0FBRUY7QUFDQTtFQUNFLGtCQUFrQixRQUFsQjtFQUNBLE9BQU8sS0FBUDs7QUFFRjtBQUNBO0VBQ0UsUUFBUSxhQUFSOztBQUdBO0FBQ0E7RUFDRSxrQkFBa0IsUUFBbEI7O0FBR0Y7QUFDQTtFQUNFLGlCQUFpQixLQUFqQjs7QUFFSjtFQUNFLGtCQUFrQixRQUFsQjtFQUNBLE9BQU8sS0FBUDtFQUNBLGFBQWEsS0FBYjtFQUNBLFNBQVMsT0FBVDtFQUNBLGdCQUFnQixVQUFoQjtFQUNBLGdCQUFnQixPQUFoQjs7QUFFRjtFQUNFLGtCQUFrQixRQUFsQjs7QUFHQTtFQUNFLE9BQU8sS0FBUDs7QUFHRjtFQUNFLE9BQU8sS0FBUCIsImZpbGUiOiJhcGltL2Nzcy90YWdnaW5nLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioge0NPUFlSSUdIVC1UT1B9ICoqKlxuKiBMaWNlbnNlZCBNYXRlcmlhbHMgLSBQcm9wZXJ0eSBvZiBJQk1cbiogNTcyNS1aMjIsIDU3MjUtWjYzLCA1NzI1LVUzMywgNTcyNS1aNjNcbipcbiogKEMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAxN1xuKlxuKiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuKiBVUyBHb3Zlcm5tZW50IFVzZXJzIFJlc3RyaWN0ZWQgUmlnaHRzIC0gVXNlLCBkdXBsaWNhdGlvbiBvciBkaXNjbG9zdXJlXG4qIHJlc3RyaWN0ZWQgYnkgR1NBIEFEUCBTY2hlZHVsZSBDb250cmFjdCB3aXRoIElCTSBDb3JwLlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiB7Q09QWVJJR0hULUVORH0gKiovXG4uYXBpbVxuICAuZGV0YWlsc0VkaXRvclxuICAuYngtLW1vZGFsXG4gICAgLnRhZ0NvbnRhaW5lclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg2MSwgMTEyLCAxNzgsIC4xKVxuICAgICAgZGlzcGxheTogZmxleFxuICAgICAgZmxleC13cmFwOiB3cmFwXG5cbiAgICAgIC50YWdDb250YWluZXJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnRcblxuICAudGFnQ29udGFpbmVyXG4gICAgPiBpbnB1dFxuICAgICAgZmxleDogMVxuXG4gICAgLnRhZy5jb21tdW5pdHlUYWdcbiAgICAgIGZvbnQtc2l6ZTogMTJweFxuICAgICAgaGVpZ2h0OiAyMHB4XG4gICAgICBsaW5lLWhlaWdodDogMjBweFxuXG4gICAgICBidXR0b25cbiAgICAgICAgZm9udC1zaXplOiAxMnB4XG4gICAgICAgIG1hcmdpbi10b3A6IC00cHhcbiAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcFxuXG4gICAgICAudGFnTGFiZWxcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3BcblxuICAgIC5jb21tdW5pdHlUYWdcbiAgICAgIG1hcmdpbi1yaWdodDogMTBweFxuXG4gICAgLnRhZ1xuICAgICAgYm9yZGVyLXJhZGl1czogMnB4XG4gICAgICBjb2xvcjogd2hpdGVcbiAgICAgIGZvbnQtc2l6ZTogc21hbGxcbiAgICAgIGxpbmUtaGVpZ2h0OiAxNXB4XG4gICAgICBwYWRkaW5nOiA1cHggMCA1cHggMTBweFxuXG4gICAgICAmLmZhdm91cml0ZVRhZ1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjUyLCAyNDUsIDIwMilcbiAgICAgICAgY29sb3I6IGJsYWNrXG5cbiAgICAgIGJ1dHRvbi5pY29uT25seUJ1dHRvblxuICAgICAgICBjb2xvcjogaW5oZXJpdFxuXG4gICAgICBpbWcuZGVsZXRlVGFnXG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGVtYmVkdXJsKCcuLi9pbWFnZXMvZGVsZXRlX3RhZy5wbmcnKVxuXG4gICAgLnRhZ0Nob29zZXJcbiAgICAgIGJhY2tncm91bmQ6IG5vbmVcbiAgICAgIGJvcmRlcjogMCAhaW1wb3J0YW50IC8vIEBzdHlsaW50IGlnbm9yZSBpbXBvcnRhbnRcbiAgICAgIGJveC1zaGFkb3c6IG5vbmVcbiAgICAgIGhlaWdodDogMzFweFxuICAgICAgbWFyZ2luOiAwXG4gICAgICBwYWRkaW5nOiAwXG4gICAgICB3aWR0aDogMjAwcHhcblxuICAgICYudW5kZWxldGFibGUgLmRlbGV0ZVRhZ0J1dHRvblxuICAgICAgZGlzcGxheTogbm9uZVxuXG4gICAgLnRhZ05vZGVcbiAgICAgIG1hcmdpbjogM3B4IDZweCAzcHggMFxuXG4gICAgICAuaWNvbk5vZGVcbiAgICAgICAgZGlzcGxheTogbm9uZVxuXG4gICAgICAuZGVsZXRlVGFnQnV0dG9uIC5pY29uT25seUJ1dHRvbiAuY2xvc2VJY29uXG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmVcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGRcbiAgICAgICAgaGVpZ2h0OiBhdXRvXG4gICAgICAgIHdpZHRoOiBhdXRvXG5cbiAgICAgICAgJjpiZWZvcmVcbiAgICAgICAgICBjb250ZW50OiAnXFwyNzE1J1xuXG4gICAgJi50YWdEcm9wZG93blxuICAgICAgcGFkZGluZzogMTBweFxuXG4gICAgICAudGFnTm9kZVxuICAgICAgICBtYXJnaW46IDNweCAwXG5cbiAgICAgIC5kZWxldGVUYWdCdXR0b25cbiAgICAgICAgZGlzcGxheTogbm9uZVxuXG4gICAgICAuZml4ZWRXaWR0aFRhZ1xuICAgICAgICB3aWR0aDogMTUwcHhcblxuICAgIC5zbWFsbFRhZ1xuICAgICAgcGFkZGluZzogMCA4cHggMCA1cHhcblxuICAgIC5maXhlZFRhZ1xuICAgICAgaGVpZ2h0OiAxNXB4XG4gICAgICBsaW5lLWhlaWdodDogMTVweFxuICAgICAgcGFkZGluZzogNXB4XG5cbiAgICAub3JnVGFnXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjIwLCAyMzQsIDI0MylcbiAgICAgIGNvbG9yOiBibGFja1xuXG4gICAgLmNvbW11bml0eVRhZyAudGFnTm9kZSAuaWNvbk5vZGVcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9ja1xuXG4gIC5maWx0ZXJDb2x1bW4gLnRhZ0NvbnRhaW5lclxuICAgIC5maXhlZFdpZHRoVGFnXG4gICAgICB3aWR0aDogMTAwJVxuXG4gICAgLmxheW91dFxuICAgICAgYXBpbS10YWdcbiAgICAgICAgZmxleDogMVxuXG4gICAgICAudGFnTm9kZVxuICAgICAgICB3aWR0aDogMTAwJVxuXG4gICAgICBpbnB1dFxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDNweFxuICAgICAgICBtYXJnaW4tdG9wOiAxMHB4XG5cbiAgLmNvbXBhY3RUYWcgLnRhZ05vZGVcbiAgICBtYXJnaW46IDRweCAycHggMnB4XG5cbiAgICAuY2xvc2VJY29uXG4gICAgICBtYXJnaW4tbGVmdDogLTNweFxuXG4gICAgLmRlbGV0ZVRhZ0J1dHRvblxuICAgICAgYWJzb2x1dGU6IHRvcCAwIGxlZnQgM3B4XG4gICAgICBvcGFjaXR5OiAwXG5cbiAgICAmOmhvdmVyIC5kZWxldGVUYWdCdXR0b25cbiAgICAgIG9wYWNpdHk6IDFcblxuICAgIC50YWdMYWJlbFxuICAgICAgZGlzcGxheTogbm9uZVxuXG4gIC50YWdOb2RlIC50YWdMYWJlbFxuICAgIGN1cnNvcjogcG9pbnRlclxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGVcblxuICAudGFnRGlhbG9nXG4gICAgLnNlbGVjdGFibGVUYWdcbiAgICAgIGN1cnNvcjogcG9pbnRlclxuICAgICAgbWFyZ2luOiA1cHggMCAxMHB4XG4gICAgICBtaW4td2lkdGg6IDQwcHhcbiAgICAgIHBhZGRpbmc6IDAgNXB4XG5cbiAgICAgIGxhYmVsXG4gICAgICAgIGN1cnNvcjogcG9pbnRlclxuXG4gICAgICAmOmZvY3VzIGxhYmVsXG4gICAgICAgIG91dGxpbmU6IDFweCBkb3R0ZWQgd2hpdGUgIWltcG9ydGFudCAvLyBAc3R5bGludCBpZ25vcmUgaW1wb3J0YW50XG5cbiAgICAudGl0bGVcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkXG4gICAgICBwYWRkaW5nOiA1cHggMFxuXG4gIC5jaXJjbGVUYWdcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMwLCAyMzMsIDIzNClcbiAgICBib3JkZXItcmFkaXVzOiA1MCVcbiAgICBjb2xvcjogYmxhY2tcbiAgICBmb250LXdlaWdodDogYm9sZFxuICAgIGhlaWdodDogMTJweFxuICAgIGxpbmUtaGVpZ2h0OiAxMnB4XG4gICAgbWFyZ2luLXRvcDogNHB4XG4gICAgdGV4dC1hbGlnbjogY2VudGVyXG4gICAgdmVydGljYWwtYWxpZ246IHRvcFxuICAgIHdpZHRoOiAxMnB4XG5cbiAgLnRhZ1xuICAgICYuZmF2b3VyaXRlXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjUyLCAyNDUsIDIwMilcblxuICAgICYudW50YWdnZWRcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlXG4gICAgICBjb2xvcjogYmxhY2tcblxuICAucmVzb3VyY2VUYWdDb250YWluZXJcbiAgICB1bFxuICAgICAgbWFyZ2luOiAwXG5cbiAgICBsaVxuICAgICAgd2lkdGg6IDEwMCVcblxuICAgICAgYVxuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94XG4gICAgICAgIGNvbG9yOiBpbmhlcml0XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9ja1xuICAgICAgICBwYWRkaW5nOiAxcHggMTBweFxuICAgICAgICB3aWR0aDogMTAwJVxuXG4gICAgLmN1c3RvbVRhZ1xuICAgICAgcGFkZGluZzogNnB4IDEwcHggMFxuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcFxuXG4gICAgLnNjcm9sbEJveFxuICAgICAgbWF4LWhlaWdodDogMTAwcHhcbiAgICAgIG92ZXJmbG93LXg6IHZpc2libGVcbiAgICAgIG92ZXJmbG93LXk6IGF1dG9cbiAgICAgIHBhZGRpbmc6IDFweCAwXG5cbiAgLnByb2R1Y3RUYWdcbiAgLmFwaVRhZ1xuICAudGFnQ29udGFpbmVyIC5maXhlZFdpZHRoVGFnXG4gICAgYm9yZGVyOiAxcHggc29saWQgI0NDQ1xuICAgIHdpZHRoOiA5MHB4XG4gICAgd29yZC13cmFwOiBicmVhay13b3JkXG5cbiAgLmNvbXBhY3RUYWcgLnRhZ05vZGVcbiAgICAucHJvZHVjdFRhZ1xuICAgIC5hcGlUYWdcbiAgICAgIHBhZGRpbmc6IDBcblxuICAucmVkVGFnXG4gIC50YWdDb250YWluZXIgLnRhZy5yZWRUYWdcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWRcblxuICAuYmx1ZVRhZ1xuICAudGFnQ29udGFpbmVyIC50YWcuYmx1ZVRhZ1xuICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWVcblxuICAucHVycGxlVGFnXG4gIC50YWdDb250YWluZXIgLnRhZy5wdXJwbGVUYWdcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBwdXJwbGVcblxuICAuZ3JlZW5UYWdcbiAgLnRhZ0NvbnRhaW5lciAudGFnLmdyZWVuVGFnXG4gICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW5cblxuICAubmF2eVRhZ1xuICAudGFnQ29udGFpbmVyIC50YWcubmF2eVRhZ1xuICAgIGJhY2tncm91bmQtY29sb3I6IG5hdnlcblxuICAubWFyb29uVGFnXG4gIC50YWdDb250YWluZXIgLnRhZy5tYXJvb25UYWdcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXJvb25cblxuICAub3JhbmdlVGFnXG4gIC50YWdDb250YWluZXIgLnRhZy5vcmFuZ2VUYWdcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBvcmFuZ2VcblxuICAubWFnZW50YVRhZ1xuICAudGFnQ29udGFpbmVyIC50YWcubWFnZW50YVRhZ1xuICAgIGJhY2tncm91bmQtY29sb3I6IG1hZ2VudGFcblxuICAuY2lyY2xlVGFnLnRhZzFcbiAgLnRhZ0NvbnRhaW5lciAudGFnLnRhZzFcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOGRjYjM2XG4gICAgY29sb3I6IGJsYWNrXG5cbiAgLmNpcmNsZVRhZy50YWcyXG4gIC50YWdDb250YWluZXIgLnRhZy50YWcyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzkyNWVjMlxuXG4gIC5jaXJjbGVUYWcudGFnM1xuICAudGFnQ29udGFpbmVyIC50YWcudGFnM1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlZjVkYTBcbiAgICBjb2xvcjogYmxhY2tcblxuICAuY2lyY2xlVGFnLnRhZzRcbiAgLnRhZ0NvbnRhaW5lciAudGFnLnRhZzRcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZkNDI2XG4gICAgY29sb3I6IGJsYWNrXG5cbiAgLmNpcmNsZVRhZy50YWc1XG4gIC50YWdDb250YWluZXIgLnRhZy50YWc1XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzY4YjlmNFxuICAgIGNvbG9yOiBibGFja1xuXG4gIC5jaXJjbGVUYWcudGFnNlxuICAudGFnQ29udGFpbmVyIC50YWcudGFnNlxuICAgIGJhY2tncm91bmQtY29sb3I6ICM3ZmRmZWVcbiAgICBjb2xvcjogYmxhY2tcblxuICAuY2lyY2xlVGFnLnRhZzdcbiAgLnRhZ0NvbnRhaW5lciAudGFnLnRhZzdcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZiNzk0XG4gICAgY29sb3I6IGJsYWNrXG5cbiAgLmNpcmNsZVRhZy50YWc4XG4gIC50YWdDb250YWluZXIgLnRhZy50YWc4XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2M2ZTU5YVxuICAgIGNvbG9yOiBibGFja1xuXG4gIC5jaXJjbGVUYWcudGFnOVxuICAudGFnQ29udGFpbmVyIC50YWcudGFnOVxuICAgIGJhY2tncm91bmQtY29sb3I6ICNjOGFlZTBcbiAgICBjb2xvcjogYmxhY2tcblxuICAuY2lyY2xlVGFnLnRhZzEwXG4gIC50YWdDb250YWluZXIgLnRhZy50YWcxMFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmN2FlY2ZcbiAgICBjb2xvcjogYmxhY2tcblxuICAuY2lyY2xlVGFnLnRhZzExXG4gIC50YWdDb250YWluZXIgLnRhZy50YWcxMVxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmU5OTJcbiAgICBjb2xvcjogYmxhY2tcblxuICAuY2lyY2xlVGFnLnRhZzEyXG4gIC50YWdDb250YWluZXIgLnRhZy50YWcxMlxuICAgIGJhY2tncm91bmQtY29sb3I6ICNiM2RjZjlcbiAgICBjb2xvcjogYmxhY2tcblxuICAuY2lyY2xlVGFnLnRhZzEzXG4gIC50YWdDb250YWluZXIgLnRhZy50YWcxM1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNjY2YyZjhcbiAgICBjb2xvcjogYmxhY2tcblxuICAuY2lyY2xlVGFnLnRhZzE0XG4gIC50YWdDb250YWluZXIgLnRhZy50YWcxNFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmUyZDRcbiAgICBjb2xvcjogYmxhY2tcblxuICAuY2lyY2xlVGFnLnRhZzE1XG4gIC50YWdDb250YWluZXIgLnRhZy50YWcxNVxuICAgIGJhY2tncm91bmQtY29sb3I6ICNlOGY1ZDdcbiAgICBjb2xvcjogYmxhY2tcblxuICAuY2lyY2xlVGFnLnRhZzE2XG4gIC50YWdDb250YWluZXIgLnRhZy50YWcxNlxuICAgIGJhY2tncm91bmQtY29sb3I6ICNlOWRmZjNcbiAgICBjb2xvcjogYmxhY2tcblxuICAuY2lyY2xlVGFnLnRhZzE3XG4gIC50YWdDb250YWluZXIgLnRhZy50YWcxN1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmY2RmZWNcbiAgICBjb2xvcjogYmxhY2tcblxuICAuY2lyY2xlVGFnLnRhZzE4XG4gIC50YWdDb250YWluZXIgLnRhZy50YWcxOFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY2ZDRcbiAgICBjb2xvcjogYmxhY2tcblxuICAuY2lyY2xlVGFnLnRhZzE5XG4gIC50YWdDb250YWluZXIgLnRhZy50YWcxOVxuICAgIGJhY2tncm91bmQtY29sb3I6ICNlMWYxZmRcbiAgICBjb2xvcjogYmxhY2tcblxuICAuY29tbXVuaXR5SWNvblxuICAuY29tbXVuaXR5VGFnIC5pY29uTm9kZVxuICAgIG1hcmdpbjogLTJweCA1cHggMCAwXG5cbiAgLnJlc291cmNlVGFnQ29udGFpbmVyIGxpXG4gICAgJjpob3ZlclxuICAgIGE6Zm9jdXNcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlNWYzZmJcblxuICAucmVzb3VyY2VUYWdDb250YWluZXIgbGkgYVxuICAgICY6aG92ZXJcbiAgICAmOmZvY3VzXG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmVcblxuICAuYXBwTGlmZWN5Y2xlVGFnXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzgwYjcyM1xuICAgIGNvbG9yOiB3aGl0ZVxuICAgIG1hcmdpbi1sZWZ0OiAxMHB4XG4gICAgcGFkZGluZzogLjVyZW1cbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlXG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZVxuXG4gIC5hcHBMaWZlY3ljbGUtZGV2ZWxvcG1lbnRcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY4NTAwXG5cbiAgLnZpc2liaWxpdHlUYWdzXG4gICAgLnRhZ0NvbnRhaW5lci5wdWJsaXNoQ29udGFpbmVyXG4gICAgICB3aWR0aDogMTAwJVxuXG4gIGFwaW0tYXBpLWVkaXRvciAvLyBAc3R5bGludCBpZ25vcmUgdmFsaWRcbiAgICAuYngtLWZvcm1fX3RhZ0NvbnRhaW5lclxuICAgICAgd2lkdGg6IDMyZW1cbiIsIi8qXG4gKiBTaXplIHV0aWxpdHkuXG4gKlxuICogU3lub3BzaXM6XG4gKlxuICogICBzaXplOiA8d2lkdGg+IDxoZWlnaHQ+IHwgPHdpZHRoICYgaGVpZ2h0PlxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICAgICBzaXplOiAxMDAlIDMwcHhcbiAqICAgICAgIHlpZWxkczpcbiAqICAgICAgICAgd2lkdGg6IDEwMCVcbiAqICAgICAgICAgaGVpZ2h0OiAzMHB4XG4gKlxuICogICAgIHNpemU6IDVweFxuICogICAgICAgeWllbGRzOlxuICogICAgICAgICB3aWR0aDogNXB4XG4gKiAgICAgICAgIGhlaWdodDogNXB4XG4gKlxuICovXG5cbnNpemUoKVxuICBpZiBsZW5ndGgoYXJndW1lbnRzKSA9PSAxXG4gICAgd2lkdGg6IGFyZ3VtZW50c1swXVxuICAgIGhlaWdodDogYXJndW1lbnRzWzBdXG4gIGVsc2VcbiAgICB3aWR0aDogYXJndW1lbnRzWzBdXG4gICAgaGVpZ2h0OiBhcmd1bWVudHNbMV1cbiIsImNhbGxlZC1mcm9tID0gKClcblxudmVuZG9ycyA9IG1veiB3ZWJraXQgbyBtcyBvZmZpY2lhbFxuXG4vLyBzdHJpbmdpZnkgdGhlIGdpdmVuIGFyZ1xuXG4tc3RyaW5nKGFyZylcbiAgdHlwZShhcmcpICsgJyAnICsgYXJnXG5cbi8vIHJlcXVpcmUgYSBjb2xvclxuXG5yZXF1aXJlLWNvbG9yKGNvbG9yKVxuICB1bmxlc3MgY29sb3IgaXMgYSAnY29sb3InXG4gICAgZXJyb3IoJ1JHQiBvciBIU0wgdmFsdWUgZXhwZWN0ZWQsIGdvdCBhICcgKyAtc3RyaW5nKGNvbG9yKSlcblxuLy8gcmVxdWlyZSBhIHVuaXRcblxucmVxdWlyZS11bml0KG4pXG4gIHVubGVzcyBuIGlzIGEgJ3VuaXQnXG4gICAgZXJyb3IoJ3VuaXQgZXhwZWN0ZWQsIGdvdCBhICcgKyAtc3RyaW5nKG4pKVxuXG4vLyByZXF1aXJlIGEgc3RyaW5nXG5cbnJlcXVpcmUtc3RyaW5nKHN0cilcbiAgdW5sZXNzIHN0ciBpcyBhICdzdHJpbmcnIG9yIHN0ciBpcyBhICdpZGVudCdcbiAgICBlcnJvcignc3RyaW5nIGV4cGVjdGVkLCBnb3QgYSAnICsgLXN0cmluZyhzdHIpKVxuXG4vLyBNYXRoIGZ1bmN0aW9uc1xuXG5hYnMobikgeyBtYXRoKG4sICdhYnMnKSB9XG5taW4oYSwgYikgeyBhIDwgYiA/IGEgOiBiIH1cbm1heChhLCBiKSB7IGEgPiBiID8gYSA6IGIgfVxuXG4vLyBUcmlnb25vbWV0cmljc1xuUEkgPSAtbWF0aC1wcm9wKCdQSScpXG5cbnJhZGlhbnMtdG8tZGVncmVlcyhhbmdsZSlcbiAgYW5nbGUgKiAoMTgwIC8gUEkpXG5cbmRlZ3JlZXMtdG8tcmFkaWFucyhhbmdsZSlcbiAgYW5nbGUgKiAoUEkgLyAxODApXG5cbnNpbihuKVxuICBuID0gdW5pdChuKSA9PSAnZGVnJyA/IGRlZ3JlZXMtdG8tcmFkaWFucyh1bml0KG4sICcnKSkgOiB1bml0KG4sICcnKVxuICByb3VuZChtYXRoKG4sICdzaW4nKSwgOSlcblxuY29zKG4pXG4gIG4gPSB1bml0KG4pID09ICdkZWcnID8gZGVncmVlcy10by1yYWRpYW5zKHVuaXQobiwgJycpKSA6IHVuaXQobiwgJycpXG4gIHJvdW5kKG1hdGgobiwgJ2NvcycpLCA5KVxuXG4vLyBSb3VuZGluZyBNYXRoIGZ1bmN0aW9uc1xuXG5jZWlsKG4sIHByZWNpc2lvbiA9IDApXG4gIG11bHRpcGxpZXIgPSAxMCAqKiBwcmVjaXNpb25cbiAgbWF0aChuICogbXVsdGlwbGllciwgJ2NlaWwnKSAvIG11bHRpcGxpZXJcblxuZmxvb3IobiwgcHJlY2lzaW9uID0gMClcbiAgbXVsdGlwbGllciA9IDEwICoqIHByZWNpc2lvblxuICBtYXRoKG4gKiBtdWx0aXBsaWVyLCAnZmxvb3InKSAvIG11bHRpcGxpZXJcblxucm91bmQobiwgcHJlY2lzaW9uID0gMClcbiAgbXVsdGlwbGllciA9IDEwICoqIHByZWNpc2lvblxuICBtYXRoKG4gKiBtdWx0aXBsaWVyLCAncm91bmQnKSAvIG11bHRpcGxpZXJcblxuLy8gcmV0dXJuIHRoZSBzdW0gb2YgdGhlIGdpdmVuIG51bWJlcnNcblxuc3VtKG51bXMpXG4gIHN1bSA9IDBcbiAgc3VtICs9IG4gZm9yIG4gaW4gbnVtc1xuXG4vLyByZXR1cm4gdGhlIGF2ZXJhZ2Ugb2YgdGhlIGdpdmVuIG51bWJlcnNcblxuYXZnKG51bXMpXG4gIHN1bShudW1zKSAvIGxlbmd0aChudW1zKVxuXG4vLyByZXR1cm4gYSB1bml0bGVzcyBudW1iZXIsIG9yIHBhc3MgdGhyb3VnaFxuXG5yZW1vdmUtdW5pdChuKVxuICBpZiB0eXBlb2YobikgaXMgXCJ1bml0XCJcbiAgICB1bml0KG4sIFwiXCIpXG4gIGVsc2VcbiAgICBuXG5cbi8vIGNvbnZlcnQgYSBwZXJjZW50IHRvIGEgZGVjaW1hbCwgb3IgcGFzcyB0aHJvdWdoXG5cbnBlcmNlbnQtdG8tZGVjaW1hbChuKVxuICBpZiB1bml0KG4pIGlzIFwiJVwiXG4gICAgcmVtb3ZlLXVuaXQobikgLyAxMDBcbiAgZWxzZVxuICAgIG5cblxuLy8gY2hlY2sgaWYgbiBpcyBhbiBvZGQgbnVtYmVyXG5cbm9kZChuKVxuICAxID09IG4gJSAyXG5cbi8vIGNoZWNrIGlmIG4gaXMgYW4gZXZlbiBudW1iZXJcblxuZXZlbihuKVxuICAwID09IG4gJSAyXG5cbi8vIGNoZWNrIGlmIGNvbG9yIGlzIGxpZ2h0XG5cbmxpZ2h0KGNvbG9yKVxuICBsaWdodG5lc3MoY29sb3IpID49IDUwJVxuXG4vLyBjaGVjayBpZiBjb2xvciBpcyBkYXJrXG5cbmRhcmsoY29sb3IpXG4gIGxpZ2h0bmVzcyhjb2xvcikgPCA1MCVcblxuLy8gZGVzYXR1cmF0ZSBjb2xvciBieSBhbW91bnRcblxuZGVzYXR1cmF0ZShjb2xvciwgYW1vdW50KVxuICBhZGp1c3QoY29sb3IsICdzYXR1cmF0aW9uJywgLSBhbW91bnQpXG5cbi8vIHNhdHVyYXRlIGNvbG9yIGJ5IGFtb3VudFxuXG5zYXR1cmF0ZShjb2xvciA9ICcnLCBhbW91bnQgPSAxMDAlKVxuICBpZiBjb2xvciBpcyBhICdjb2xvcidcbiAgICBhZGp1c3QoY29sb3IsICdzYXR1cmF0aW9uJywgYW1vdW50KVxuICBlbHNlXG4gICAgdW5xdW90ZSggXCJzYXR1cmF0ZShcIiArIGNvbG9yICsgXCIpXCIgKVxuXG4vLyBkYXJrZW4gYnkgdGhlIGdpdmVuIGFtb3VudFxuXG5kYXJrZW4oY29sb3IsIGFtb3VudClcbiAgYWRqdXN0KGNvbG9yLCAnbGlnaHRuZXNzJywgLSBhbW91bnQpXG5cbi8vIGxpZ2h0ZW4gYnkgdGhlIGdpdmVuIGFtb3VudFxuXG5saWdodGVuKGNvbG9yLCBhbW91bnQpXG4gIGFkanVzdChjb2xvciwgJ2xpZ2h0bmVzcycsIGFtb3VudClcblxuLy8gZGVjcmVhc2Ugb3BhY2l0eSBieSBhbW91bnRcblxuZmFkZS1vdXQoY29sb3IsIGFtb3VudClcbiAgY29sb3IgLSByZ2JhKGJsYWNrLCBwZXJjZW50LXRvLWRlY2ltYWwoYW1vdW50KSlcblxuLy8gaW5jcmVhc2Ugb3BhY2l0eSBieSBhbW91bnRcblxuZmFkZS1pbihjb2xvciwgYW1vdW50KVxuICBjb2xvciArIHJnYmEoYmxhY2ssIHBlcmNlbnQtdG8tZGVjaW1hbChhbW91bnQpKVxuXG4vLyBzcGluIGh1ZSBieSBhIGdpdmVuIGFtb3VudFxuXG5zcGluKGNvbG9yLCBhbW91bnQpXG4gIGNvbG9yICsgdW5pdChhbW91bnQsIGRlZylcblxuLy8gbWl4IHR3byBjb2xvcnMgYnkgYSBnaXZlbiBhbW91bnRcblxubWl4KGNvbG9yMSwgY29sb3IyLCB3ZWlnaHQgPSA1MCUpXG4gIHVubGVzcyB3ZWlnaHQgaW4gMC4uMTAwXG4gICAgZXJyb3IoXCJXZWlnaHQgbXVzdCBiZSBiZXR3ZWVuIDAlIGFuZCAxMDAlXCIpXG5cbiAgaWYgbGVuZ3RoKGNvbG9yMSkgPT0gMlxuICAgIHdlaWdodCA9IGNvbG9yMVswXVxuICAgIGNvbG9yMSA9IGNvbG9yMVsxXVxuXG4gIGVsc2UgaWYgbGVuZ3RoKGNvbG9yMikgPT0gMlxuICAgIHdlaWdodCA9IDEwMCAtIGNvbG9yMlswXVxuICAgIGNvbG9yMiA9IGNvbG9yMlsxXVxuXG4gIHJlcXVpcmUtY29sb3IoY29sb3IxKVxuICByZXF1aXJlLWNvbG9yKGNvbG9yMilcblxuICBwID0gdW5pdCh3ZWlnaHQgLyAxMDAsICcnKVxuICB3ID0gcCAqIDIgLSAxXG5cbiAgYSA9IGFscGhhKGNvbG9yMSkgLSBhbHBoYShjb2xvcjIpXG5cbiAgdzEgPSAoKCh3ICogYSA9PSAtMSkgPyB3IDogKHcgKyBhKSAvICgxICsgdyAqIGEpKSArIDEpIC8gMlxuICB3MiA9IDEgLSB3MVxuXG4gIGNoYW5uZWxzID0gKHJlZChjb2xvcjEpIHJlZChjb2xvcjIpKSAoZ3JlZW4oY29sb3IxKSBncmVlbihjb2xvcjIpKSAoYmx1ZShjb2xvcjEpIGJsdWUoY29sb3IyKSlcbiAgcmdiID0gKClcblxuICBmb3IgcGFpciBpbiBjaGFubmVsc1xuICAgIHB1c2gocmdiLCBmbG9vcihwYWlyWzBdICogdzEgKyBwYWlyWzFdICogdzIpKVxuXG4gIGExID0gYWxwaGEoY29sb3IxKSAqIHBcbiAgYTIgPSBhbHBoYShjb2xvcjIpICogKDEgLSBwKVxuICBhbHBoYSA9IGExICsgYTJcblxuICByZ2JhKHJnYlswXSwgcmdiWzFdLCByZ2JbMl0sIGFscGhhKVxuXG4vLyBpbnZlcnQgY29sb3JzLCBsZWF2ZSBhbHBoYSBpbnRhY3RcblxuaW52ZXJ0KGNvbG9yID0gJycpXG4gIGlmIGNvbG9yIGlzIGEgJ2NvbG9yJ1xuICAgIHJnYmEoI2ZmZiAtIGNvbG9yLCBhbHBoYShjb2xvcikpXG4gIGVsc2VcbiAgICB1bnF1b3RlKCBcImludmVydChcIiArIGNvbG9yICsgXCIpXCIgKVxuXG4vLyBnaXZlIGNvbXBsZW1lbnQgb2YgdGhlIGdpdmVuIGNvbG9yXG5cbmNvbXBsZW1lbnQoIGNvbG9yIClcbiAgc3BpbiggY29sb3IsIDE4MCApXG5cbi8vIGdpdmUgZ3JheXNjYWxlIG9mIHRoZSBnaXZlbiBjb2xvclxuXG5ncmF5c2NhbGUoIGNvbG9yID0gJycgKVxuICBpZiBjb2xvciBpcyBhICdjb2xvcidcbiAgICBkZXNhdHVyYXRlKCBjb2xvciwgMTAwJSApXG4gIGVsc2VcbiAgICB1bnF1b3RlKCBcImdyYXlzY2FsZShcIiArIGNvbG9yICsgXCIpXCIgKVxuXG4vLyBtaXggdGhlIGdpdmVuIGNvbG9yIHdpdGggd2hpdGVcblxudGludCggY29sb3IsIHBlcmNlbnQgKVxuICBtaXgoIHdoaXRlLCBjb2xvciwgcGVyY2VudCApXG5cbi8vIG1peCB0aGUgZ2l2ZW4gY29sb3Igd2l0aCBibGFja1xuXG5zaGFkZSggY29sb3IsIHBlcmNlbnQgKVxuICBtaXgoIGJsYWNrLCBjb2xvciwgcGVyY2VudCApXG5cbi8vIHJldHVybiB0aGUgbGFzdCB2YWx1ZSBpbiB0aGUgZ2l2ZW4gZXhwclxuXG5sYXN0KGV4cHIpXG4gIGV4cHJbbGVuZ3RoKGV4cHIpIC0gMV1cblxuLy8gcmV0dXJuIGtleXMgaW4gdGhlIGdpdmVuIHBhaXJzIG9yIG9iamVjdFxuXG5rZXlzKHBhaXJzKVxuICByZXQgPSAoKVxuICBpZiB0eXBlKHBhaXJzKSA9PSAnb2JqZWN0J1xuICAgIGZvciBrZXkgaW4gcGFpcnNcbiAgICAgIHB1c2gocmV0LCBrZXkpXG4gIGVsc2VcbiAgICBmb3IgcGFpciBpbiBwYWlyc1xuICAgICAgcHVzaChyZXQsIHBhaXJbMF0pO1xuICByZXRcblxuLy8gcmV0dXJuIHZhbHVlcyBpbiB0aGUgZ2l2ZW4gcGFpcnMgb3Igb2JqZWN0XG5cbnZhbHVlcyhwYWlycylcbiAgcmV0ID0gKClcbiAgaWYgdHlwZShwYWlycykgPT0gJ29iamVjdCdcbiAgICBmb3Iga2V5LCB2YWwgaW4gcGFpcnNcbiAgICAgIHB1c2gocmV0LCB2YWwpXG4gIGVsc2VcbiAgICBmb3IgcGFpciBpbiBwYWlyc1xuICAgICAgcHVzaChyZXQsIHBhaXJbMV0pO1xuICByZXRcblxuLy8gam9pbiB2YWx1ZXMgd2l0aCB0aGUgZ2l2ZW4gZGVsaW1pdGVyXG5cbmpvaW4oZGVsaW0sIHZhbHMuLi4pXG4gIGJ1ZiA9ICcnXG4gIHZhbHMgPSB2YWxzWzBdIGlmIGxlbmd0aCh2YWxzKSA9PSAxXG4gIGZvciB2YWwsIGkgaW4gdmFsc1xuICAgIGJ1ZiArPSBpID8gZGVsaW0gKyB2YWwgOiB2YWxcblxuLy8gYWRkIGEgQ1NTIHJ1bGUgdG8gdGhlIGNvbnRhaW5pbmcgYmxvY2tcblxuLy8gLSBUaGlzIGRlZmluaXRpb24gYWxsb3dzIGFkZC1wcm9wZXJ0eSB0byBiZSB1c2VkIGFzIGEgbWl4aW5cbi8vIC0gSXQgaGFzIHRoZSBzYW1lIGVmZmVjdCBhcyBpbnRlcnBvbGF0aW9uIGJ1dCBhbGxvd3MgdXNlcnNcbi8vICAgdG8gb3B0IGZvciBhIGZ1bmN0aW9uYWwgc3R5bGVcblxuYWRkLXByb3BlcnR5LWZ1bmN0aW9uID0gYWRkLXByb3BlcnR5XG5hZGQtcHJvcGVydHkobmFtZSwgZXhwcilcbiAgaWYgbWl4aW5cbiAgICB7bmFtZX0gZXhwclxuICBlbHNlXG4gICAgYWRkLXByb3BlcnR5LWZ1bmN0aW9uKG5hbWUsIGV4cHIpXG5cbnByZWZpeC1jbGFzc2VzKHByZWZpeClcbiAgLXByZWZpeC1jbGFzc2VzKHByZWZpeCwgYmxvY2spXG5cbi8vIENhY2hpbmcgbWl4aW4sIHVzZSBpbnNpZGUgeW91ciBmdW5jdGlvbnMgdG8gZW5hYmxlIGNhY2hpbmcgYnkgZXh0ZW5kaW5nLlxuXG4kc3R5bHVzX21peGluX2NhY2hlID0ge31cbmNhY2hlKClcbiAgJGtleSA9IChjdXJyZW50LW1lZGlhKCkgb3IgJ25vLW1lZGlhJykgKyAnX18nICsgY2FsbGVkLWZyb21bMF0gKyAnX18nICsgYXJndW1lbnRzXG4gIGlmICRrZXkgaW4gJHN0eWx1c19taXhpbl9jYWNoZVxuICAgIEBleHRlbmQge1wiJGNhY2hlX3BsYWNlaG9sZGVyX2Zvcl9cIiArICRzdHlsdXNfbWl4aW5fY2FjaGVbJGtleV19XG4gIGVsc2UgaWYgJ2NhY2hlJyBpbiBjYWxsZWQtZnJvbVxuICAgIHtibG9ja31cbiAgZWxzZVxuICAgICRpZCA9IGxlbmd0aCgkc3R5bHVzX21peGluX2NhY2hlKVxuXG4gICAgJixcbiAgICAvJGNhY2hlX3BsYWNlaG9sZGVyX2Zvcl97JGlkfVxuICAgICAgJHN0eWx1c19taXhpbl9jYWNoZVska2V5XSA9ICRpZFxuICAgICAge2Jsb2NrfVxuXG4vLyBQZXJjZW50YWdlIGZ1bmN0aW9uIHRvIGNvbnZlcnQgYSBudW1iZXIsIGUuZy4gXCIuNDVcIiwgaW50byBhIHBlcmNlbnRhZ2UsIGUuZy4gXCI0NSVcIlxuXG5wZXJjZW50YWdlKG51bSlcbiAgcmV0dXJuIHVuaXQobnVtICogMTAwLCAnJScpXG5cbi8vIFJldHVybnMgdGhlIHBvc2l0aW9uIG9mIGEgYHZhbHVlYCB3aXRoaW4gYSBgbGlzdGBcblxuaW5kZXgobGlzdCwgdmFsdWUpXG4gIGZvciB2YWwsIGkgaW4gbGlzdFxuICAgIHJldHVybiBpIGlmIHZhbCA9PSB2YWx1ZVxuIiwiLypcbiAqIFZlbmRvciBcImRpc3BsYXk6IGZsZXhcIiBzdXBwb3J0IHdpdGggZmFsbGJhY2sgdG8gb2Jzb2xldGUgdmVyc2lvbnMuXG4gKi9cblxuZmxleC12ZXJzaW9uID89IGJveCBmbGV4XG5cbi8vXG4vLyAxLiBEaXNwbGF5IHZhbHVlc1xuLy8gICAgLSBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLWZsZXhib3gvI2ZsZXgtY29udGFpbmVyc1xuLy9cbmRpc3BsYXkodHlwZSwgYXJncy4uLilcbiAgaWYgZmxleCA9PSB0eXBlIHx8IGlubGluZS1mbGV4ID09IHR5cGVcbiAgICBpZiBib3ggaW4gZmxleC12ZXJzaW9uXG4gICAgICBpZiBmbGV4ID09IHR5cGVcbiAgICAgICAgZGlzcGxheTogLW1zLWZsZXhib3ggYXJnc1xuICAgICAgICBkaXNwbGF5OiB2ZW5kb3ItdmFsdWUoYm94IGFyZ3MsIG9ubHk6IG1veiB3ZWJraXQpXG4gICAgICBlbHNlXG4gICAgICAgIGRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveCBhcmdzXG4gICAgICAgIGRpc3BsYXk6IHZlbmRvci12YWx1ZShpbmxpbmUtYm94IGFyZ3MsIG9ubHk6IG1veiB3ZWJraXQpXG4gICAgaWYgZmxleCBpbiBmbGV4LXZlcnNpb25cbiAgICAgIGRpc3BsYXk6IHZlbmRvci12YWx1ZShhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBvZmZpY2lhbCkgLy8gb3ZlcndyaXRlcyBvbGQgd2Via2l0XG4gIGVsc2VcbiAgICBkaXNwbGF5OiBhcmd1bWVudHNcblxuLypcbiAqIE5ldyBzeW50YXggZm9yIGJyb3dzZXJzIGxpa2UgR29vZ2xlIENocm9tZS5cbiAqIFBsdXMgYSB0cmFuc2xhdGlvbiB0byB0aGUgb2xkIHN5bnRheCwgaWYgcG9zc2libGUuXG4gKi9cblxuXG4vL1xuLy8gNS4gT3JkZXJpbmcgYW5kIE9yaWVudGF0aW9uXG4vLyAgICAtIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtZmxleGJveC8jb3JkZXJpbmctYW5kLW9yaWVudGF0aW9uXG4vL1xuLWZsZXgtb2Jzb2xldGUtZGlyZWN0aW9uKGRpcmVjdGlvbilcbiAgaWYgYm94IGluIGZsZXgtdmVyc2lvblxuICAgIGlmIHJvdy1yZXZlcnNlID09IGRpcmVjdGlvbiB8fCBjb2x1bW4tcmV2ZXJzZSA9PSBkaXJlY3Rpb25cbiAgICAgIHZlbmRvcignYm94LWRpcmVjdGlvbicsIHJldmVyc2UsIGlnbm9yZTogbXMgb2ZmaWNpYWwpXG5cbiAgICBpZiByb3cgPT0gZGlyZWN0aW9uIHx8IHJvdy1yZXZlcnNlID09IGRpcmVjdGlvblxuICAgICAgdmVuZG9yKCdib3gtb3JpZW50JywgaG9yaXpvbnRhbCwgaWdub3JlOiBtcyBvZmZpY2lhbClcbiAgICBlbHNlIGlmIGNvbHVtbiA9PSBkaXJlY3Rpb24gfHwgY29sdW1uLXJldmVyc2UgPT0gZGlyZWN0aW9uXG4gICAgICB2ZW5kb3IoJ2JveC1vcmllbnQnLCB2ZXJ0aWNhbCwgaWdub3JlOiBtcyBvZmZpY2lhbClcblxuLWZsZXgtb2Jzb2xldGUtd3JhcCh2YWx1ZSlcbiAgaWYgYm94IGluIGZsZXgtdmVyc2lvblxuICAgIC8vIFdBUk46IHdyYXAtcmV2ZXJzZSBkb2VzIG5vdCBoYXZlIGEgYm94IGVxdWl2YWxlbnQuIFRoaXMgd2lsbCByZW5kZXIgaW4gZGlmZmVyZW50IG1hbm5lcnNcbiAgICAvLyAgICBvbiBib3ggdnMuIGZsZXggdmFsdWVzLlxuICAgIGlmICd3cmFwJyA9PSB2YWx1ZSB8fCB3cmFwLXJldmVyc2UgPT0gdmFsdWVcbiAgICAgIHZlbmRvcignYm94LWxpbmVzJywgbXVsdGlwbGUsIGlnbm9yZTogbXMgb2ZmaWNpYWwpXG4gICAgZWxzZSBpZiBub3dyYXAgPT0gdmFsdWVcbiAgICAgIHZlbmRvcignYm94LWxpbmVzJywgc2luZ2xlLCBpZ25vcmU6IG1zIG9mZmljaWFsKVxuXG5mbGV4LWRpcmVjdGlvbihkaXJlY3Rpb24pXG4gIC8vIG9ic29sZXRlXG4gIC1mbGV4LW9ic29sZXRlLWRpcmVjdGlvbihkaXJlY3Rpb24pXG5cbiAgLy8gbmV3XG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdmbGV4LWRpcmVjdGlvbicsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1zIG9mZmljaWFsKVxuXG5mbGV4LXdyYXAodmFsdWUpXG4gIC8vIG9ic29sZXRlXG4gIC1mbGV4LW9ic29sZXRlLXdyYXAodmFsdWUpXG5cbiAgaWYgZmxleCBpbiBmbGV4LXZlcnNpb25cbiAgICB2ZW5kb3IoJ2ZsZXgtd3JhcCcsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1zIG9mZmljaWFsKVxuXG5mbGV4LWZsb3coKVxuICAvLyBvYnNvbGV0ZVxuICAtZmxleC1vYnNvbGV0ZS1kaXJlY3Rpb24oYXJndW1lbnRzWzBdKVxuICAtZmxleC1vYnNvbGV0ZS1kaXJlY3Rpb24oYXJndW1lbnRzWzFdKVxuICAtZmxleC1vYnNvbGV0ZS13cmFwKGFyZ3VtZW50c1swXSlcbiAgLWZsZXgtb2Jzb2xldGUtd3JhcChhcmd1bWVudHNbMV0pXG5cbiAgLy8gbmV3XG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdmbGV4LWZsb3cnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtcyBvZmZpY2lhbClcblxuXG5vcmRlcigpXG4gIC8vIG9ic29sZXRlXG4gIGlmIGJveCBpbiBmbGV4LXZlcnNpb25cbiAgICB2ZW5kb3IoJ2JveC1vcmRpbmFsLWdyb3VwJywgYXJndW1lbnRzLCBpZ25vcmU6IG1zIG9mZmljaWFsKVxuXG4gIC8vIG5ld1xuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignZmxleC1vcmRlcicsIGFyZ3VtZW50cywgb25seTogbXMpXG4gICAgdmVuZG9yKCdvcmRlcicsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG9mZmljaWFsKVxuXG5cbi8vXG4vLyA3LiBGbGV4aWJpbGl0eVxuLy8gICAgLSBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLWZsZXhib3gvI2ZsZXhpYmlsaXR5XG4vL1xuZmxleC1ncm93KGdyb3d0aClcbiAgLy8gb2Jzb2xldGVcbiAgaWYgYm94IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignYm94LWZsZXgnLCBncm93dGgpXG5cbiAgLy8gbmV3XG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdmbGV4LWdyb3cnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcblxuZmxleC1iYXNpcygpXG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdmbGV4LWJhc2lzJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXG5cbmZsZXgtc2hyaW5rKClcbiAgaWYgZmxleCBpbiBmbGV4LXZlcnNpb25cbiAgICB2ZW5kb3IoJ2ZsZXgtc2hyaW5rJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXG5cbmZsZXgoZ3Jvd3RoKVxuXG4gIC8vIG9ic29sZXRlXG4gIGlmIGJveCBpbiBmbGV4LXZlcnNpb25cbiAgICBzaHJpbmsgPSAxXG5cbiAgICBpZiBub25lID09IGdyb3d0aCB8fCBpbml0aWFsID09IGdyb3d0aFxuICAgICAgLy8gV2VsbCBrbm93biB2YWx1ZXNcbiAgICAgIHNocmluayA9IDAgaWYgbm9uZSA9PSBncm93dGhcbiAgICAgIGdyb3d0aCA9IDBcbiAgICBlbHNlIGlmIGlzLXdpZHRoKGdyb3d0aCkgPT0gdHJ1ZVxuICAgICAgLy8gQmFzaXMgaXMgZGVmaW5lZCBhcyB0aGUgZmlyc3QgcGFyYW1ldGVyXG4gICAgICBncm93dGggPSBhcmd1bWVudHNbMV0gfHwgMFxuICAgICAgc2hyaW5rID0gYXJndW1lbnRzWzJdIGlmIDMgPD0gbGVuZ3RoKGFyZ3VtZW50cylcbiAgICBlbHNlIGlmIGFyZ3VtZW50c1sxXSAmJiBpcy13aWR0aChhcmd1bWVudHNbMV0pID09IGZhbHNlXG4gICAgICAvLyBHcm93dGggaXMgZmlyc3QgYW5kIHNocmluayBpcyBzZWNvbmRcbiAgICAgIHNocmluayA9IGFyZ3VtZW50c1sxXVxuXG4gICAgLy8gU2luY2Ugd2UgY2FuJ3QgbWFrZSB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiBncm93aW5nIGFuZCBzaHJpbmtpbmcgaW4gdGhlIGJveCBtb2RlbCwgdGFrZVxuICAgIC8vIHRoZSBvbmUgdGhhdCBwcm92aWRlcyB0aGUgbW9zdCBmbGV4aWJpbGl0eS5cbiAgICB2ZW5kb3IoJ2JveC1mbGV4JywgbWF4KGdyb3d0aCwgc2hyaW5rKSwgaWdub3JlOiBtcylcblxuICAvLyBuZXdcbiAgaWYgZmxleCBpbiBmbGV4LXZlcnNpb25cbiAgICB2ZW5kb3IoJ2ZsZXgnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtcyBvZmZpY2lhbClcblxuXG4vLyBjb252ZXJ0cyB0aGUganVzdGlmaWNhdGlvbiBhbGlnbm1lbnRcbi1jb252ZXJ0LWp1c3RpZnkoYWxpZ24pXG4gIGlmIGZsZXgtc3RhcnQgPT0gYWxpZ25cbiAgICByZXR1cm4gc3RhcnRcbiAgZWxzZSBpZiBmbGV4LWVuZCA9PSBhbGlnblxuICAgIHJldHVybiBlbmRcbiAgZWxzZSBpZiBzcGFjZS1hcm91bmQgPT0gYWxpZ25cbiAgICByZXR1cm4gZGlzdHJpYnV0ZVxuICBlbHNlIGlmIHNwYWNlLWJldHdlZW4gPT0gYWxpZ25cbiAgICByZXR1cm4ganVzdGlmeVxuICBlbHNlXG4gICAgcmV0dXJuIGFsaWduXG5cbi8vXG4vLyA4LiBBbGlnbm1lbnRcbi8vICAgIC0gaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1mbGV4Ym94LyNhbGlnbm1lbnRcbi8vXG5qdXN0aWZ5LWNvbnRlbnQoYWxpZ24pXG4gIC8vIG9ic29sZXRlXG4gIGlmIGJveCBpbiBmbGV4LXZlcnNpb25cbiAgICB2ZW5kb3IoJ2JveC1wYWNrJywgLWNvbnZlcnQtanVzdGlmeShhbGlnbiksIGlnbm9yZTogbXMgb2ZmaWNpYWwpXG5cbiAgLy8gbmV3XG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdmbGV4LXBhY2snLCAtY29udmVydC1qdXN0aWZ5KGFsaWduKSwgb25seTogbXMpXG4gICAgdmVuZG9yKCdqdXN0aWZ5LWNvbnRlbnQnLCBhbGlnbiwgb25seTogd2Via2l0IG9mZmljaWFsKVxuXG5hbGlnbi1jb250ZW50KGFsaWduKVxuICAvLyBXQVJOOiBPYnNvbGV0ZSBzcGVjIGRvZXMgbm90IGFsbG93IGZvciBhZGp1c3RtZW50IGhlcmVcbiAgaWYgZmxleCBpbiBmbGV4LXZlcnNpb25cbiAgICB2ZW5kb3IoJ2ZsZXgtbGluZS1wYWNrJywgLWNvbnZlcnQtanVzdGlmeShhbGlnbiksIG9ubHk6IG1zKVxuICAgIHZlbmRvcignYWxpZ24tY29udGVudCcsIGFsaWduLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXG5cbi8vIGNvbnZlcnRzIGFsaWdubWVudCBmcm9tICdmbGV4JyB0byBub3JtYWwgdmFsdWVcbi1jb252ZXJ0LWFsaWdubWVudChhbGlnbilcbiAgaWYgZmxleC1zdGFydCA9PSBhbGlnblxuICAgIHJldHVybiBzdGFydFxuICBlbHNlIGlmIGZsZXgtZW5kID09IGFsaWduXG4gICAgcmV0dXJuIGVuZFxuICBlbHNlXG4gICAgcmV0dXJuIGFsaWduXG5cbmFsaWduLWl0ZW1zKGFsaWduKVxuICAvLyBvYnNvbGV0ZVxuICBpZiBib3ggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdib3gtYWxpZ24nLCAtY29udmVydC1hbGlnbm1lbnQoYWxpZ24pLCBpZ25vcmU6IG1zIG9mZmljaWFsKVxuXG4gIC8vIG5ld1xuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignZmxleC1hbGlnbicsIC1jb252ZXJ0LWFsaWdubWVudChhbGlnbiksIG9ubHk6IG1zKVxuICAgIHZlbmRvcignYWxpZ24taXRlbXMnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcblxuYWxpZ24tc2VsZihhbGlnbilcbiAgLy8gV0FSTjogT2Jzb2xldGUgc3BlYyBkb2VzIG5vdCBhbGxvdyBmb3Igb3ZlcnJpZGluZyBhbGlnbm1lbnQgb24gaW5kaXZpZHVhbCBpdGVtcy5cbiAgaWYgZmxleCBpbiBmbGV4LXZlcnNpb25cbiAgICB2ZW5kb3IoJ2FsaWduLXNlbGYnLCBhbGlnbiwgb25seTogd2Via2l0IG9mZmljaWFsKVxuICAgIHZlbmRvcignZmxleC1pdGVtLWFsaWduJywgLWNvbnZlcnQtYWxpZ25tZW50KGFsaWduKSwgb25seTogbXMpXG4iLCJ1c2UoJy4uL25vZGVzL3ZlbmRvci1oZWxwZXJzLmpzJylcbkBpbXBvcnQgJ2NvbmZpZydcblxuLypcbiAqIEFsaWFzIFwibm93cmFwXCIgYXMgXCJuby13cmFwXCIuXG4gKi9cblxubm8td3JhcCA9IHVucXVvdGUoJ25vd3JhcCcpXG5cbi8qXG4gKiBIZWxwZXIgdG8gZmluZCBvdXQgaWYgYSBnaXZlbiB2YWx1ZSBpcyBhIHdpZHRoXG4gKi9cblxuaXMtd2lkdGgodmFsKVxuICBpZiBhdXRvID09IHZhbFxuICAgIHJldHVybiB0cnVlXG4gIGVsc2UgaWYgdmFsICYmICd1bml0JyA9PSB0eXBlKHZhbClcbiAgICAvLyBTdHlsdXMgZG9lcyBub3Qgc2hvcnQgY2lyY3VpdCBzbyB3ZSBuZWVkIHRvIHBlcmZvcm0gdGhpcyBhcyBhIGRpc3RpbmN0XG4gICAgLy8gb3BlcmF0aW9uIHRvIHByZXZlbnQgZXJyb3JzXG4gICAgcmV0dXJuICcnICE9IHVuaXQodmFsKVxuICByZXR1cm4gZmFsc2VcblxuLypcbiAqIFZlbmRvciBzdXBwb3J0IGZvciB0aGUgZ2l2ZW4gcHJvcCAvIGFyZ3VtZW50cywgb3B0aW9uYWxseSBzcGVjaWZ5aW5nIHRoZVxuICogb25seSBwcmVmaXhlcyB0byB1dGlsaXplLCBvciB0aG9zZSB3aGljaCBzaG91bGQgYmUgaWdub3JlZC5cbiAqL1xuXG52ZW5kb3IocHJvcCwgYXJncywgb25seSA9IG51bGwsIGlnbm9yZSA9IG51bGwsIHZlbmRvci1wcm9wZXJ0eSA9IHRydWUpXG4gIG5lZWRfbm9ybWFsaXplID0gIXZlbmRvci1wcm9wZXJ0eSBvciBwcm9wIGluICgndHJhbnNpdGlvbicgJ3RyYW5zaXRpb24tcHJvcGVydHknICdib3JkZXItaW1hZ2UnICdib3JkZXItaW1hZ2Utc2xpY2UnKVxuICBmb3IgcHJlZml4IGluIHZlbmRvci1wcmVmaXhlc1xuICAgIHVubGVzcyAob25seSBhbmQgIShwcmVmaXggaW4gb25seSkpIG9yIChpZ25vcmUgYW5kIHByZWZpeCBpbiBpZ25vcmUpXG4gICAgICBpZiBvZmZpY2lhbCA9PSBwcmVmaXhcbiAgICAgICAgaWYgbmVlZF9ub3JtYWxpemVcbiAgICAgICAgICB7cHJvcH06IG5vcm1hbGl6ZShwcm9wLCgnJXMnICUgYXJncykpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICB7cHJvcH06IGFyZ3NcbiAgICAgIGVsc2VcbiAgICAgICAgbmV3cHJvcCA9IHByb3BcbiAgICAgICAgbmV3cHJvcCA9ICctJyArIHByZWZpeCArICctJyArIHByb3AgaWYgdmVuZG9yLXByb3BlcnR5XG5cbiAgICAgICAgaWYgbmVlZF9ub3JtYWxpemVcbiAgICAgICAgICB7bmV3cHJvcH06IG5vcm1hbGl6ZShwcm9wLCgnJXMnICUgYXJncykscHJlZml4KVxuICAgICAgICBlbHNlXG4gICAgICAgICAge25ld3Byb3B9OiBhcmdzXG4vKlxuICogVmVuZG9yaXplIHRoZSBnaXZlbiB2YWx1ZS5cbiAqL1xuXG52ZW5kb3ItdmFsdWUoYXJnLCBvbmx5ID0gbnVsbCwgaWdub3JlID0gbnVsbClcbiAgcHJvcCA9IGN1cnJlbnQtcHJvcGVydHlbMF1cbiAgZm9yIHByZWZpeCBpbiB2ZW5kb3ItcHJlZml4ZXNcbiAgICB1bmxlc3MgKG9ubHkgYW5kICEocHJlZml4IGluIG9ubHkpKSBvciAoaWdub3JlIGFuZCBwcmVmaXggaW4gaWdub3JlKSBvciBvZmZpY2lhbCA9PSBwcmVmaXhcbiAgICAgIGFkZC1wcm9wZXJ0eShwcm9wLCAnLSVzLSVzJyAlIChwcmVmaXggYXJnKSlcbiAgYXJnXG5cbi8qXG4gKiBWZW5kb3IgXCJib3gtc2hhZG93XCIgc3VwcG9ydC5cbiAqL1xuXG5ib3gtc2hhZG93KClcbiAgdmVuZG9yKCdib3gtc2hhZG93JywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJ1c2VyLXNlbGVjdFwiIHN1cHBvcnQuXG4gKi9cblxudXNlci1zZWxlY3QoKVxuICB2ZW5kb3IoJ3VzZXItc2VsZWN0JywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG1zIG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiY29sdW1uLWNvdW50XCIgc3VwcG9ydC5cbiAqL1xuXG5jb2x1bW4tY291bnQoKVxuICB2ZW5kb3IoJ2NvbHVtbi1jb3VudCcsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImNvbHVtbi1nYXBcIiBzdXBwb3J0LlxuICovXG5cbmNvbHVtbi1nYXAoKVxuICB2ZW5kb3IoJ2NvbHVtbi1nYXAnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJjb2x1bW4tcnVsZVwiIHN1cHBvcnQuXG4gKi9cblxuY29sdW1uLXJ1bGUoKVxuICB2ZW5kb3IoJ2NvbHVtbi1ydWxlJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiY29sdW1uLXJ1bGUtY29sb3JcIiBzdXBwb3J0LlxuICovXG5cbmNvbHVtbi1ydWxlLWNvbG9yKClcbiAgdmVuZG9yKCdjb2x1bW4tcnVsZS1jb2xvcicsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImNvbHVtbi1ydWxlLXdpZHRoXCIgc3VwcG9ydC5cbiAqL1xuXG5jb2x1bW4tcnVsZS13aWR0aCgpXG4gIHZlbmRvcignY29sdW1uLXJ1bGUtd2lkdGgnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJjb2x1bW4tcnVsZS1zdHlsZVwiIHN1cHBvcnQuXG4gKi9cblxuY29sdW1uLXJ1bGUtc3R5bGUoKVxuICB2ZW5kb3IoJ2NvbHVtbi1ydWxlLXN0eWxlJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiY29sdW1uLXdpZHRoXCIgc3VwcG9ydC5cbiAqL1xuXG5jb2x1bW4td2lkdGgoKVxuICB2ZW5kb3IoJ2NvbHVtbi13aWR0aCcsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImNvbHVtbi1zcGFuXCIgc3VwcG9ydC5cbiAqL1xuXG5jb2x1bW4tc3BhbigpXG4gIHZlbmRvcignY29sdW1uLXNwYW4nLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImNvbHVtbi1maWxsXCIgc3VwcG9ydC5cbiAqL1xuXG5jb2x1bW4tZmlsbCgpXG4gIHZlbmRvcignY29sdW1uLWZpbGwnLCBhcmd1bWVudHMsIG9ubHk6IG1veilcblxuLypcbiAqIExlZ2FjeSBzeW50YXggc3VwcG9ydCBmb3IgYmFja2dyb3VuZC1jbGlwIGFuZCBiYWNrZ3JvdW5kLW9yaWdpblxuICovXG5cbmxlZ2FjeS1iZy12YWx1ZXMocHJvcGVydHksIGFyZ3MpXG4gIGxlZ2FjeV9hcmdzID0gKClcbiAgaW1wb3J0YW5jZSA9IHVucXVvdGUoJycpXG4gIGZvciBzdWJhcmdzIGluIGFyZ3NcbiAgICBmb3IgYXJnIGluIHN1YmFyZ3NcbiAgICAgIGlmIGFyZyBpbiAoYm9yZGVyLWJveCBwYWRkaW5nLWJveCBjb250ZW50LWJveClcbiAgICAgICAgYXJnID0gdW5xdW90ZSgnYm9yZGVyJykgIGlmIGFyZyA9PSBib3JkZXItYm94XG4gICAgICAgIGFyZyA9IHVucXVvdGUoJ3BhZGRpbmcnKSBpZiBhcmcgPT0gcGFkZGluZy1ib3hcbiAgICAgICAgYXJnID0gdW5xdW90ZSgnY29udGVudCcpIGlmIGFyZyA9PSBjb250ZW50LWJveFxuICAgICAgaWYgYXJnICE9ICchaW1wb3J0YW50J1xuICAgICAgICBwdXNoKGxlZ2FjeV9hcmdzLGFyZylcbiAgICAgIGVsc2VcbiAgICAgICAgaW1wb3J0YW5jZSA9ICFpbXBvcnRhbnRcbiAgdmVuZG9yKHByb3BlcnR5LCB1bnF1b3RlKGpvaW4oJywgJyxsZWdhY3lfYXJncykpIGltcG9ydGFuY2UsIG9ubHk6IG1veiB3ZWJraXQpXG5cbi8qXG4gKiBWZW5kb3IgXCJiYWNrZ3JvdW5kLWNsaXBcIiBzdXBwb3J0LlxuICovXG5cbmJhY2tncm91bmQtY2xpcCgpXG4gIGlmIGFyZ3VtZW50c1swXSA9PSB0ZXh0XG4gICAgdmVuZG9yKCdiYWNrZ3JvdW5kLWNsaXAnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdClcbiAgZWxzZVxuICAgIGxlZ2FjeS1iZy12YWx1ZXMoJ2JhY2tncm91bmQtY2xpcCcsIGFyZ3VtZW50cylcbiAgICBiYWNrZ3JvdW5kLWNsaXA6IGFyZ3VtZW50c1xuXG4vKlxuICogVmVuZG9yIFwiYmFja2dyb3VuZC1vcmlnaW5cIiBzdXBwb3J0LlxuICovXG5cbmJhY2tncm91bmQtb3JpZ2luKClcbiAgbGVnYWN5LWJnLXZhbHVlcygnYmFja2dyb3VuZC1vcmlnaW4nLCBhcmd1bWVudHMpXG4gIGJhY2tncm91bmQtb3JpZ2luOiBhcmd1bWVudHNcblxuLypcbiAqIFZlbmRvciBcImJhY2tncm91bmQtc2l6ZVwiIHN1cHBvcnQuXG4gKi9cblxuYmFja2dyb3VuZC1zaXplKClcbiAgdmVuZG9yKCdiYWNrZ3JvdW5kLXNpemUnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJ0cmFuc2Zvcm1cIiBzdXBwb3J0LlxuICovXG5cbnRyYW5zZm9ybSgpXG4gIHZlbmRvcigndHJhbnNmb3JtJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwidHJhbnNmb3JtLW9yaWdpblwiIHN1cHBvcnQuXG4gKi9cbnRyYW5zZm9ybS1vcmlnaW4oKVxuICAgIHZlbmRvcigndHJhbnNmb3JtLW9yaWdpbicsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcInRyYW5zZm9ybS1zdHlsZVwiIHN1cHBvcnQuXG4gKi9cblxudHJhbnNmb3JtLXN0eWxlKClcbiAgdmVuZG9yKCd0cmFuc2Zvcm0tc3R5bGUnLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJib3JkZXItaW1hZ2VcIiBzdXBwb3J0LlxuICovXG5cbmJvcmRlci1pbWFnZSgpXG4gIHZlbmRvcignYm9yZGVyLWltYWdlJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG8gb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJ0cmFuc2l0aW9uXCIgc3VwcG9ydC5cbiAqL1xuXG50cmFuc2l0aW9uKClcbiAgdmVuZG9yKCd0cmFuc2l0aW9uJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwidHJhbnNpdGlvbi1wcm9wZXJ0eVwiIHN1cHBvcnQuXG4gKi9cblxudHJhbnNpdGlvbi1wcm9wZXJ0eSgpXG4gIHZlbmRvcigndHJhbnNpdGlvbi1wcm9wZXJ0eScsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcInRyYW5zaXRpb24tZHVyYXRpb25cIiBzdXBwb3J0LlxuICovXG5cbnRyYW5zaXRpb24tZHVyYXRpb24oKVxuICB2ZW5kb3IoJ3RyYW5zaXRpb24tZHVyYXRpb24nLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJ0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvblwiIHN1cHBvcnQuXG4gKi9cblxudHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24oKVxuICB2ZW5kb3IoJ3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwidHJhbnNpdGlvbi1kZWxheVwiIHN1cHBvcnQuXG4gKi9cblxudHJhbnNpdGlvbi1kZWxheSgpXG4gIHZlbmRvcigndHJhbnNpdGlvbi1kZWxheScsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcImJhY2tmYWNlLXZpc2liaWxpdHlcIiBzdXBwb3J0LlxuICovXG5cbmJhY2tmYWNlLXZpc2liaWxpdHkoKVxuICB2ZW5kb3IoJ2JhY2tmYWNlLXZpc2liaWxpdHknLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbXMgb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJwZXJzcGVjdGl2ZVwiIHN1cHBvcnQuXG4gKi9cblxucGVyc3BlY3RpdmUoKVxuICBpZiBtaXhpblxuICAgIHZlbmRvcigncGVyc3BlY3RpdmUnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbXMgb2ZmaWNpYWwpXG4gIGVsc2VcbiAgICAncGVyc3BlY3RpdmUoJXMpJyAlIGFyZ3VtZW50c1xuXG4vKlxuICogVmVuZG9yIFwicGVyc3BlY3RpdmUtb3JpZ2luXCIgc3VwcG9ydC5cbiAqL1xuXG5wZXJzcGVjdGl2ZS1vcmlnaW4oKVxuICB2ZW5kb3IoJ3BlcnNwZWN0aXZlLW9yaWdpbicsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBtcyBvZmZpY2lhbClcblxuLypcbiAqIE9wYWNpdHkgd2l0aCBjb25kaXRpb25hbCBJRSBzdXBwb3J0LlxuICovXG5cbm9wYWNpdHkobiwgYXJncy4uLilcbiAgb3BhY2l0eTogbiBhcmdzXG4gIGlmIHN1cHBvcnQtZm9yLWllXG4gICAgaWYgbiA9PSBpbmhlcml0IG9yIG4gPT0gaW5pdGlhbFxuICAgICAgLW1zLWZpbHRlcjogbiBhcmdzXG4gICAgICBmaWx0ZXI6IG4gYXJnc1xuICAgIGVsc2VcbiAgICAgIHZhbCA9IHJvdW5kKG4gKiAxMDApXG4gICAgICBpZiB2YWwgPT0gMTAwXG4gICAgICAgIC1tcy1maWx0ZXI6IG5vbmUgYXJnc1xuICAgICAgICBmaWx0ZXI6IG5vbmUgYXJnc1xuICAgICAgZWxzZVxuICAgICAgICAtbXMtZmlsdGVyOiAnXCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0lcylcIicgJSB2YWwgYXJnc1xuICAgICAgICBmaWx0ZXI6ICdhbHBoYShvcGFjaXR5PSVzKScgJSB2YWwgYXJnc1xuXG4vKlxuICogVmVuZG9yIFwidGV4dC1zaXplLWFkanVzdFwiXG4gKi9cblxudGV4dC1zaXplLWFkanVzdCgpXG4gIHZlbmRvcigndGV4dC1zaXplLWFkanVzdCcsIGFyZ3VtZW50cylcblxuLypcbiAqIEFsaWFzIHRoZSBcIndoaXRlLXNwYWNlXCIgcHJvcGVydHkuXG4gKi9cblxud2hpdGVzcGFjZSgpXG4gIHdoaXRlLXNwYWNlOiBhcmd1bWVudHNcblxuLypcbiAqIFZlbmRvciBcImJveC1zaXppbmdcIiBzdXBwb3J0LlxuICovXG5cbmJveC1zaXppbmcoKVxuICB2ZW5kb3IoJ2JveC1zaXppbmcnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJib3gtb3JpZW50XCIgc3VwcG9ydC5cbiAqL1xuXG5ib3gtb3JpZW50KClcbiAgdmVuZG9yKCdib3gtb3JpZW50JywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiYm94LWZsZXgtZ3JvdXBcIiBzdXBwb3J0LlxuICovXG5cbmJveC1mbGV4LWdyb3VwKClcbiAgdmVuZG9yKCdib3gtZmxleC1ncm91cCcsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImJveC1vcmRpbmFsLWdyb3VwXCIgc3VwcG9ydC5cbiAqL1xuXG5ib3gtb3JkaW5hbC1ncm91cCgpXG4gIHZlbmRvcignYm94LW9yZGluYWwtZ3JvdXAnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbXMgb2ZmaWNpYWwpXG5cblxuLypcbiAqIFZlbmRvciBcImJveC1hbGlnblwiIHN1cHBvcnQuXG4gKi9cblxuYm94LWFsaWduKClcbiAgdmVuZG9yKCdib3gtYWxpZ24nLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbXMgb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJib3gtcGFja1wiIHN1cHBvcnQuXG4gKi9cblxuYm94LXBhY2soKVxuICB2ZW5kb3IoJ2JveC1wYWNrJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG1zIG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiYm94LWRpcmVjdGlvblwiIHN1cHBvcnQuXG4gKi9cblxuYm94LWRpcmVjdGlvbigpXG4gIHZlbmRvcignYm94LWRpcmVjdGlvbicsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBtcyBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImFuaW1hdGlvblwiIHN1cHBvcnQuXG4gKi9cblxuYW5pbWF0aW9uKClcbiAgdmVuZG9yKCdhbmltYXRpb24nLCBhcmd1bWVudHMpXG5cblxuLypcbiAqIFZlbmRvciBcImFuaW1hdGlvbi1uYW1lXCIgc3VwcG9ydC5cbiAqL1xuXG5hbmltYXRpb24tbmFtZSgpXG4gIHZlbmRvcignYW5pbWF0aW9uLW5hbWUnLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJhbmltYXRpb24tZHVyYXRpb25cIiBzdXBwb3J0LlxuICovXG5cbmFuaW1hdGlvbi1kdXJhdGlvbigpXG4gIHZlbmRvcignYW5pbWF0aW9uLWR1cmF0aW9uJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwiYW5pbWF0aW9uLWRlbGF5XCIgc3VwcG9ydC5cbiAqL1xuXG5hbmltYXRpb24tZGVsYXkoKVxuICB2ZW5kb3IoJ2FuaW1hdGlvbi1kZWxheScsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcImFuaW1hdGlvbi1kaXJlY3Rpb25cIiBzdXBwb3J0LlxuICovXG5cbmFuaW1hdGlvbi1kaXJlY3Rpb24oKVxuICB2ZW5kb3IoJ2FuaW1hdGlvbi1kaXJlY3Rpb24nLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJhbmltYXRpb24taXRlcmF0aW9uLWNvdW50XCIgc3VwcG9ydC5cbiAqL1xuXG5hbmltYXRpb24taXRlcmF0aW9uLWNvdW50KClcbiAgdmVuZG9yKCdhbmltYXRpb24taXRlcmF0aW9uLWNvdW50JywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwiYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvblwiIHN1cHBvcnQuXG4gKi9cblxuYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbigpXG4gIHZlbmRvcignYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbicsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcImFuaW1hdGlvbi1wbGF5LXN0YXRlXCIgc3VwcG9ydC5cbiAqL1xuXG5hbmltYXRpb24tcGxheS1zdGF0ZSgpXG4gIHZlbmRvcignYW5pbWF0aW9uLXBsYXktc3RhdGUnLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJhbmltYXRpb24tZmlsbC1tb2RlXCIgc3VwcG9ydC5cbiAqL1xuXG5hbmltYXRpb24tZmlsbC1tb2RlKClcbiAgdmVuZG9yKCdhbmltYXRpb24tZmlsbC1tb2RlJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwiaHlwaGVuc1wiIHN1cHBvcnQuXG4gKi9cblxuaHlwaGVucygpXG4gIHZlbmRvcignaHlwaGVucycsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBtcyBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImFwcGVhcmFuY2VcIiBzdXBwb3J0LlxuICovXG5cbmFwcGVhcmFuY2UoKVxuICB2ZW5kb3IoJ2FwcGVhcmFuY2UnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJ0YWItc2l6ZVwiIHN1cHBvcnQuXG4gKi9cblxudGFiLXNpemUoKVxuICB2ZW5kb3IoJ3RhYi1zaXplJywgYXJndW1lbnRzLCBvbmx5OiBtb3ogbyBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcIm92ZXJmbG93LXNjcm9sbGluZ1wiIHN1cHBvcnQuXG4gKi9cblxub3ZlcmZsb3ctc2Nyb2xsaW5nKClcbiAgdmVuZG9yKCdvdmVyZmxvdy1zY3JvbGxpbmcnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcInRleHQtb3ZlcmZsb3dcIiBzdXBwb3J0LCAsIC1vLSBmb3Igb3BlcmEgOS4qIC0gMTAuKlxuICovXG5cbnRleHQtb3ZlcmZsb3coKVxuICB2ZW5kb3IoJ3RleHQtb3ZlcmZsb3cnLCBhcmd1bWVudHMsIG9ubHk6IG9mZmljaWFsIG8pXG5cbi8qXG4gKiBWZW5kb3IgXCJ0ZXh0LXNpemUtYWRqdXN0XCIgc3VwcG9ydC5cbiAqL1xudGV4dC1zaXplLWFkanVzdCgpXG4gIHZlbmRvcigndGV4dC1zaXplLWFkanVzdCcsIGFyZ3VtZW50cywgb25seTogb2ZmaWNpYWwgd2Via2l0IG1zKVxuXG4vKlxuICogVmVuZG9yIFwiZm9udC1zbW9vdGhpbmdcIiBzdXBwb3J0LCB3ZWJraXQgb25seS5cbiAqL1xuZm9udC1zbW9vdGhpbmcoKVxuICB2ZW5kb3IoJ2ZvbnQtc21vb3RoaW5nJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQpXG5cblxuLyoqXG4gKiBWZW5kb3IgaW5wdXQtcGxhY2Vob2xkZXIvcGxhY2Vob2xkZXIgc3VwcG9ydC5cbiAqXG4gKiBFeGFtcGxlczpcbiAqICAgIC8vIERlZmF1bHQgc3ludGF4XG4gKiAgICBib2R5XG4gKiAgICAgIHBsYWNlaG9sZGVyKGNvbG9yICMzMzMsIGZvbnQtd2VpZ2h0IG5vcm1hbClcbiAqXG4gKiAgICAvLyBUaGUgY29tbWEgaXMgaW1wb3J0YW50XG4gKiAgICAucGxhY2Vob2xkZXItcmVkXG4gKiAgICAgIHBsYWNlaG9sZGVyKGNvbG9yIHJlZCwpXG4gKlxuICogICAgLy8gV2UgY2FuIHBhc3MgYSBmdW5jdGlvblxuICogICAgZ3JlZW4tcGxhY2Vob2xkZXIoKVxuICogICAgICBjb2xvciBncmVlblxuICogICAgLnBsYWNlaG9sZGVyLWdyZWVuXG4gKiAgICAgIHBsYWNlaG9sZGVyKGdyZWVuLXBsYWNlaG9sZGVyKVxuICpcbiAqICAgIC8vIFdlIGNhbiBwYXNzIGEgaGFzaFxuICogICAgdGV4dGFyZWFcbiAqICAgICAgcGxhY2Vob2xkZXIoKGZvbnQtc3R5bGUgaXRhbGljKSAoZm9udC13ZWlnaHQgYm9sZCkgKHBhZGRpbmcgJzRweCAxMHB4JykpXG4gKi9cbnBsYWNlaG9sZGVyKClcbiAgZm9yIHYgaW4gJzotd2Via2l0LWlucHV0JyAnLW1veicgJzotbW96JyAnLW1zLWlucHV0J1xuICAgICY6e3Z9LXBsYWNlaG9sZGVyXG4gICAgICBmb3IgcGFpciBpbiBhcmd1bWVudHNcbiAgICAgICAgaWYgdHlwZW9mKHBhaXIpID09ICdmdW5jdGlvbidcbiAgICAgICAgICBwYWlyKClcbiAgICAgICAgZWxzZSBpZiBwYWlyIGlzIG5vdCBudWxsICYmIHBhaXJbMF0gaXMgbm90IG51bGxcbiAgICAgICAgICB7cGFpclswXX06IHR5cGUocGFpclsxXSkgPT0gJ3N0cmluZycgPyBzKHBhaXJbMV0pIDogcGFpclsxXVxuaW5wdXQtcGxhY2Vob2xkZXIgPSBwbGFjZWhvbGRlclxuXG4vKlxuICogVmVuZG9yIGJhY2tncm91bmQgc3VwcG9ydCAoZ3JhZGllbnRzKS5cbiAqL1xuXG5iYWNrZ3JvdW5kKClcbiAgaWYgbWF0Y2goJy1ncmFkaWVudFxcKCcsICcnK2FyZ3VtZW50cylcbiAgICB2ZW5kb3IoJ2JhY2tncm91bmQnLCBhcmd1bWVudHMsIHZlbmRvci1wcm9wZXJ0eTogZmFsc2UpXG4gIGVsc2VcbiAgICBiYWNrZ3JvdW5kIGFyZ3VtZW50c1xuXG5iYWNrZ3JvdW5kLWltYWdlKClcbiAgaWYgbWF0Y2goJy1ncmFkaWVudFxcKCcsICcnK2FyZ3VtZW50cylcbiAgICB2ZW5kb3IoJ2JhY2tncm91bmQtaW1hZ2UnLCBhcmd1bWVudHMsIHZlbmRvci1wcm9wZXJ0eTogZmFsc2UpXG4gIGVsc2VcbiAgICBiYWNrZ3JvdW5kLWltYWdlIGFyZ3VtZW50c1xuXG5jdXJzb3IoKVxuICBpZiBtYXRjaCgnLWdyYWRpZW50XFwoJywgJycrYXJndW1lbnRzKVxuICAgIHZlbmRvcignY3Vyc29yJywgYXJndW1lbnRzLCB2ZW5kb3ItcHJvcGVydHk6IGZhbHNlKVxuICBlbHNlXG4gICAgY3Vyc29yIGFyZ3VtZW50c1xuXG5saXN0LXN0eWxlKClcbiAgaWYgbWF0Y2goJy1ncmFkaWVudFxcKCcsICcnK2FyZ3VtZW50cylcbiAgICB2ZW5kb3IoJ2xpc3Qtc3R5bGUnLCBhcmd1bWVudHMsIHZlbmRvci1wcm9wZXJ0eTogZmFsc2UpXG4gIGVsc2VcbiAgICBsaXN0LXN0eWxlIGFyZ3VtZW50c1xuXG5saXN0LXN0eWxlLWltYWdlKClcbiAgaWYgbWF0Y2goJy1ncmFkaWVudFxcKCcsICcnK2FyZ3VtZW50cylcbiAgICB2ZW5kb3IoJ2xpc3Qtc3R5bGUtaW1hZ2UnLCBhcmd1bWVudHMsIHZlbmRvci1wcm9wZXJ0eTogZmFsc2UpXG4gIGVsc2VcbiAgICBsaXN0LXN0eWxlLWltYWdlIGFyZ3VtZW50c1xuIiwiLypcbiAqIEhlbHBlciBmb3IgYm9yZGVyLXJhZGl1cygpLlxuICovXG5cbi1hcHBseS1ib3JkZXItcmFkaXVzKHBvcywgaW1wb3J0YW5jZSlcbiAgaWYgbGVuZ3RoKHBvcykgPT0gM1xuICAgIC8vIGJvcmRlci1yYWRpdXM6IDx0b3AgfCBib3R0b20+IDxsZWZ0IHwgcmlnaHQ+IDxuPlxuICAgIHkgPSBwb3NbMF1cbiAgICB4ID0gcG9zWzFdXG4gICAgLy8gV2UgZG9uJ3QgdXNlIHZlbmRvciBmb3IgYm9kZXItcmFkaXVzIGFueW1vcmVcbiAgICAvLyB2ZW5kb3IoJ2JvcmRlci1yYWRpdXMtJXMlcycgJSBwb3MsIHBvc1syXSwgb25seTogd2Via2l0IG9mZmljaWFsKVxuICAgIHsnYm9yZGVyLSVzLSVzLXJhZGl1cycgJSBwb3N9OiBwb3NbMl0gaW1wb3J0YW5jZVxuICBlbHNlIGlmIHBvc1swXSBpbiAodG9wIGJvdHRvbSlcbiAgICAvLyBib3JkZXItcmFkaXVzOiA8dG9wIHwgYm90dG9tPiA8bj5cbiAgICAtYXBwbHktYm9yZGVyLXJhZGl1cyhwb3NbMF0gbGVmdCBwb3NbMV0sIGltcG9ydGFuY2UpXG4gICAgLWFwcGx5LWJvcmRlci1yYWRpdXMocG9zWzBdIHJpZ2h0IHBvc1sxXSwgaW1wb3J0YW5jZSlcbiAgZWxzZSBpZiBwb3NbMF0gaW4gKGxlZnQgcmlnaHQpXG4gICAgLy8gYm9yZGVyLXJhZGl1czogPGxlZnQgfCByaWdodD4gPG4+XG4gICAgdW5zaGlmdChwb3MsIHRvcCk7XG4gICAgLWFwcGx5LWJvcmRlci1yYWRpdXMocG9zLCBpbXBvcnRhbmNlKVxuICAgIHBvc1swXSA9IGJvdHRvbVxuICAgIC1hcHBseS1ib3JkZXItcmFkaXVzKHBvcywgaW1wb3J0YW5jZSlcblxuLypcbiAqIGJvcmRlci1yYWRpdXMgc3VwcG9ydGluZyBhdWdtZW50ZWQgYmVoYXZpb3IuXG4gKlxuICogRXhhbXBsZXM6XG4gKlxuICogICAgYm9yZGVyLXJhZGl1czogMnB4IDVweFxuICogICAgYm9yZGVyLXJhZGl1czogdG9wIDVweCBib3R0b20gMTBweFxuICogICAgYm9yZGVyLXJhZGl1czogbGVmdCA1cHhcbiAqICAgIGJvcmRlci1yYWRpdXM6IHRvcCBsZWZ0IDVweFxuICogICAgYm9yZGVyLXJhZGl1czogdG9wIGxlZnQgMTBweCBib3R0b20gcmlnaHQgNXB4XG4gKiAgICBib3JkZXItcmFkaXVzOiB0b3AgbGVmdCAxMHB4LCBib3R0b20gcmlnaHQgNXB4XG4gKlxuICovXG5cbmJvcmRlci1yYWRpdXMoKVxuICBwb3MgPSAoKVxuICBhdWdtZW50ZWQgPSBmYWxzZVxuICBpbXBvcnRhbmNlID0gYXJndW1lbnRzW2xlbmd0aChhcmd1bWVudHMpIC0gMV0gPT0gIWltcG9ydGFudCA/ICFpbXBvcnRhbnQgOiB1bnF1b3RlKCcnKVxuXG4gIGZvciBhcmdzIGluIGFyZ3VtZW50c1xuICAgIGZvciBhcmcgaW4gYXJnc1xuICAgICAgaWYgYXJnIGlzIGEgJ2lkZW50J1xuICAgICAgICBhcHBlbmQocG9zLCBhcmcpXG4gICAgICAgIGF1Z21lbnRlZCA9IHRydWVcbiAgICAgIGVsc2VcbiAgICAgICAgYXBwZW5kKHBvcywgYXJnKVxuICAgICAgICBpZiBhdWdtZW50ZWRcbiAgICAgICAgICAtYXBwbHktYm9yZGVyLXJhZGl1cyhwb3MsIGltcG9ydGFuY2UpXG4gICAgICAgICAgcG9zID0gKClcbiAgYm9yZGVyLXJhZGl1cyBwb3MgdW5sZXNzIGF1Z21lbnRlZFxuIiwiLypcbiAqIGJvcmRlcjogPGNvbG9yPlxuICogYm9yZGVyOiAuLi5cbiAqL1xuXG5ib3JkZXIoY29sb3IsIGFyZ3MuLi4pXG4gIGlmIGNvbG9yIGlzIGEgJ2NvbG9yJ1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIGNvbG9yIGFyZ3NcbiAgZWxzZVxuICAgIGJvcmRlcjogYXJndW1lbnRzXG4iLCIvLyBoZWxwZXJcblxuLXBvcyh0eXBlLCBhcmdzKVxuICBpID0gMFxuICBwb3NpdGlvbjogdW5xdW90ZSh0eXBlKVxuICBmb3IgaiBpbiAoMS4uNClcbiAgICBpZiBsZW5ndGgoYXJncykgPiBpXG4gICAgICB7YXJnc1tpXX06IGFyZ3NbaSArIDFdIGlzIGEgJ3VuaXQnID8gYXJnc1tpICs9IDFdIDogMFxuICAgIGkgKz0gMVxuXG4vKlxuICogUG9zaXRpb24gdXRpbGl0eS5cbiAqXG4gKiBTeW5vcHNpczpcbiAqXG4gKiAgIGZpeGVkOiA8cG9zPiBbbl0gPHBvcz4gW25dXG4gKlxuICogRXhhbXBsZXM6XG4gKlxuICogICAgIGZpeGVkOiB0b3AgbGVmdFxuICogICAgIGZpeGVkOiB0b3AgNXB4IGxlZnRcbiAqICAgICBmaXhlZDogdG9wIGxlZnQgNXB4XG4gKiAgICAgZml4ZWQ6IHRvcCA1cHggbGVmdCA1cHhcbiAqXG4gKi9cblxuZml4ZWQoKVxuICAtcG9zKCdmaXhlZCcsIGFyZ3VtZW50cylcblxuLypcbiAqIFBvc2l0aW9uIHV0aWxpdHkuXG4gKlxuICogU3lub3BzaXM6XG4gKlxuICogICBhYnNvbHV0ZTogPHBvcz4gW25dIDxwb3M+IFtuXVxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICAgICBhYnNvbHV0ZTogdG9wIGxlZnRcbiAqICAgICBhYnNvbHV0ZTogdG9wIDVweCBsZWZ0XG4gKiAgICAgYWJzb2x1dGU6IHRvcCBsZWZ0IDVweFxuICogICAgIGFic29sdXRlOiB0b3AgNXB4IGxlZnQgNXB4XG4gKlxuICovXG5cbmFic29sdXRlKClcbiAgLXBvcygnYWJzb2x1dGUnLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBQb3NpdGlvbiB1dGlsaXR5LlxuICpcbiAqIFN5bm9wc2lzOlxuICpcbiAqICAgcmVsYXRpdmU6IDxwb3M+IFtuXSA8cG9zPiBbbl1cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICAgcmVsYXRpdmU6IHRvcCBsZWZ0XG4gKiAgICAgcmVsYXRpdmU6IHRvcCA1cHggbGVmdFxuICogICAgIHJlbGF0aXZlOiB0b3AgbGVmdCA1cHhcbiAqICAgICByZWxhdGl2ZTogdG9wIDVweCBsZWZ0IDVweFxuICpcbiAqL1xuXG5yZWxhdGl2ZSgpXG4gIC1wb3MoJ3JlbGF0aXZlJywgYXJndW1lbnRzKVxuIl19 */
