{"id":40465,"date":"2026-09-07T16:38:46","date_gmt":"2026-09-07T12:38:46","guid":{"rendered":"https:\/\/klippik.com\/ae\/gifts\/"},"modified":"2026-09-07T17:27:37","modified_gmt":"2026-09-07T13:27:37","slug":"gifts","status":"publish","type":"page","link":"https:\/\/klippik.com\/ae\/gifts\/","title":{"rendered":"GIFTS"},"content":{"rendered":"\n<div class=\"wp-block-wd-section wd-524e3459\">\n<div class=\"wp-block-wd-row wd-3976bb5c\">\n<div class=\"wp-block-wd-column wd-46923496\"><\/div>\n<\/div>\n\n\n\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link rel=\"stylesheet\" href=\"https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@400;500;600;700&#038;display=swap\">\n<style>\n  .kkg{\n    --paper:#ffffff;--surface:#ffffff;--surface-2:#f6f6f4;--tile:#f0f0ee;\n    --ink:#111111;--ink-2:#5c5c5c;--ink-3:#8f8f8f;--line:#e6e6e3;--line-2:#efefec;\n    --btn:#111111;--btn-ink:#ffffff;--ok:#1c7a4f;--warn:#b23b3b;\n    --shadow:0 1px 2px rgba(0,0,0,.04),0 12px 34px rgba(0,0,0,.07);--radius:16px;\n    font-family:\"Poppins\",ui-sans-serif,system-ui,-apple-system,\"Segoe UI\",Roboto,Arial,sans-serif;\n    color:var(--ink);background:var(--paper);width:100%;max-width:1200px;margin:0 auto;padding:22px;line-height:1.5;-webkit-font-smoothing:antialiased;\n  }\n  \/* Locked to light to match the KlippiK site (white shop cards, black CTAs); product photos read correctly on light tiles. Site is light-only, so no dark-mode adaptation. *\/\n  .kkg *{box-sizing:border-box}\n  .kkg [hidden]{display:none!important}\n  .kkg-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}\n  .kkg-brand{display:flex;align-items:center;gap:9px;font-weight:700;letter-spacing:-.02em;font-size:14px}\n  .kkg-brand b{background:var(--ink);color:var(--paper);padding:2px 6px;border-radius:5px;font-size:12px}\n  .kkg-lang{display:inline-flex;border:1px solid var(--line);border-radius:999px;overflow:hidden;flex:none}\n  .kkg-lang button{appearance:none;border:0;background:transparent;color:var(--ink-2);font-family:inherit;font-size:12px;font-weight:600;padding:6px 12px;cursor:pointer}\n  .kkg-lang button[aria-pressed=\"true\"]{background:var(--ink);color:var(--paper)}\n  .kkg h1{font-size:clamp(23px,3.6vw,30px);font-weight:700;letter-spacing:-.022em;margin:16px 0 4px;text-wrap:balance}\n  .kkg h1,.kkg h2{color:var(--ink)!important;-webkit-text-fill-color:var(--ink)!important}\n  .kkg .sub{color:var(--ink-2);font-size:14px;margin:0 0 18px;max-width:56ch}\n  .kkg-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px;display:flex;flex-direction:column;gap:18px}\n  .kkg-q .ql{font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin:0 0 10px;display:flex;align-items:center;gap:7px}\n  .kkg-qn{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:50%;background:var(--ink);color:var(--paper);font-size:11px;font-weight:700}\n  .kkg-opts{display:flex;flex-wrap:wrap;gap:8px}\n  .kkg-opt{appearance:none;font-family:inherit;font-size:13.5px;font-weight:500;color:var(--ink);background:var(--surface-2);border:1px solid var(--line);border-radius:999px;padding:9px 15px;cursor:pointer;transition:border-color .12s,background .12s}\n  .kkg-opt:hover{border-color:var(--ink-3)}\n  .kkg-opt[aria-pressed=\"true\"]{background:var(--ink);color:var(--paper);border-color:var(--ink)}\n  .kkg-name{width:100%;max-width:280px;font-family:inherit;font-size:14px;color:var(--ink);background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:11px 13px}\n  .kkg-name:focus-visible{outline:2px solid var(--ink);outline-offset:2px}\n  .kkg-cta{appearance:none;font-family:inherit;font-size:15px;font-weight:600;color:var(--btn-ink);background:var(--btn);border:0;border-radius:12px;padding:14px 20px;cursor:pointer;align-self:flex-start;display:inline-flex;align-items:center;gap:9px;transition:opacity .12s}\n  .kkg-cta[disabled]{opacity:.4;cursor:not-allowed}\n  .kkg-cta:not([disabled]):hover{opacity:.9}\n  .kkg-cta .spark{font-size:16px}\n  .kkg-ai{background:linear-gradient(180deg,var(--surface-2),var(--surface));border:1px solid var(--line);border-radius:12px;padding:14px 15px}\n  .kkg-ai-l{display:block;font-size:12.5px;font-weight:600;color:var(--ink);margin:0 0 9px}\n  .kkg-ai-l .sp{margin-inline-end:5px}\n  .kkg-ai-in{width:100%;font-family:inherit;font-size:14px;color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:9px;padding:11px 12px;resize:vertical;min-height:46px}\n  .kkg-ai-in:focus-visible{outline:2px solid var(--ink);outline-offset:2px}\n  .kkg-ai-hint{font-size:11px;color:var(--ink-3);margin:7px 0 0}\n  .kkg-ai-go{margin-top:12px;font-size:14px;padding:12px 18px}\n\n  .kkg-res{margin-top:22px}\n  .kkg-res-h h2{font-size:clamp(19px,2.6vw,24px);font-weight:700;letter-spacing:-.02em;margin:0}\n  .kkg-res-sub{color:var(--ink-2);font-size:13.5px;margin:2px 0 16px}\n\n  .kkg-gift{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}\n  .kkg-gift-top{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;border-bottom:1px solid var(--line-2);background:var(--surface-2)}\n  .kkg-gift-top .lbl{font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}\n  .kkg-total{font-size:16px;font-weight:700;font-variant-numeric:tabular-nums}\n\n  .kkg-items{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;padding:16px}\n  .kkg-items.lead{justify-content:flex-start}\n  .kkg-card{position:relative;flex:1 1 168px;max-width:220px;background:var(--surface);border:1px solid var(--line);border-radius:12px;overflow:hidden;display:flex;flex-direction:column}\n  .kkg-thumb{aspect-ratio:1\/1;background:var(--tile);position:relative;display:grid;place-items:center;overflow:hidden}\n  .kkg-thumb img{width:100%;height:100%;object-fit:cover;display:block}\n  .kkg-obj{width:64%;height:64%;border-radius:16px;display:grid;place-items:center;box-shadow:0 8px 20px rgba(0,0,0,.16)}\n  .kkg-obj svg{width:40%;height:40%}\n  .kkg-tag{position:absolute;top:8px;inset-inline-start:8px;font-size:9px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;background:rgba(0,0,0,.6);color:#fff;padding:2px 7px;border-radius:999px}\n  .kkg-catpill{position:absolute;bottom:8px;inset-inline-start:8px;font-size:9.5px;font-weight:600;background:var(--paper);color:var(--ink-2);padding:2px 8px;border-radius:999px;border:1px solid var(--line)}\n  .kkg-remove{position:absolute;top:7px;inset-inline-end:7px;z-index:2;width:24px;height:24px;border-radius:50%;border:0;background:rgba(17,17,17,.72);color:#fff;font-size:15px;line-height:1;cursor:pointer;display:grid;place-items:center}\n  .kkg-remove:hover{background:var(--warn)}\n  .kkg-cbody{padding:11px 12px 12px;display:flex;flex-direction:column;gap:3px;flex:1}\n  .kkg-cname{font-size:12.5px;font-weight:600;letter-spacing:-.01em;line-height:1.28;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}\n  .kkg-price{font-size:13.5px;font-weight:700;margin-top:2px;font-variant-numeric:tabular-nums}\n  .kkg-was{font-weight:500;color:var(--ink-3);text-decoration:line-through;font-size:.82em;margin-inline-start:5px}\n  .kkg-save{display:inline-block;font-size:9.5px;font-weight:700;color:var(--paper);background:var(--ink);border-radius:5px;padding:1px 5px;margin-inline-start:5px;vertical-align:middle;letter-spacing:.02em}\n  .kkg-deliv{display:inline-flex;align-items:center;gap:4px;margin-top:3px;font-size:10.5px;font-weight:600;color:var(--ink-3);line-height:1.3}\n  .kkg-deliv.fast{color:var(--ok)}\n  .kkg-deliv svg{flex:none;opacity:.9}\n  .kkg-view{margin-top:8px;text-align:center;text-decoration:none;font-size:11.5px;font-weight:600;color:var(--ink-2);background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:7px}\n  .kkg-view:hover{color:var(--ink)}\n\n  .kkg-budgetbar{padding:0 18px 16px;display:flex;align-items:center;gap:10px}\n  .kkg-track{flex:1;height:6px;border-radius:999px;background:var(--line);overflow:hidden}\n  .kkg-fill{height:100%;background:var(--ink);border-radius:999px;transition:width .25s}\n  .kkg-fill.over{background:var(--warn)}\n  .kkg-bmeta{font-size:12px;font-weight:600;white-space:nowrap;color:var(--ink-2)}\n  .kkg-bmeta.over{color:var(--warn)}\n  .kkg-arrives{display:flex;align-items:center;gap:7px;margin:2px 18px 0;padding:12px 0 16px;border-top:1px solid var(--line-2);font-size:12.5px;font-weight:600;color:var(--ink-2)}\n  .kkg-arrives.fast{color:var(--ok)}\n  .kkg-arrives svg{flex:none}\n  .kkg-arrives b{font-weight:700}\n\n  .kkg-more{margin-top:16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}\n  .kkg-more-h{font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin:0 0 12px}\n  .kkg-mfilters{display:flex;gap:7px;overflow-x:auto;padding-bottom:8px;margin-bottom:12px;scrollbar-width:thin}\n  .kkg-mf{appearance:none;flex:none;font-family:inherit;font-size:12px;font-weight:600;color:var(--ink);background:var(--surface-2);border:1px solid var(--line);border-radius:999px;padding:6px 12px;cursor:pointer;white-space:nowrap}\n  .kkg-mf[aria-pressed=\"true\"]{background:var(--ink);color:var(--paper);border-color:var(--ink)}\n  .kkg-more-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}\n  .kkg-scard{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:11px;overflow:hidden;display:flex;flex-direction:column}\n  .kkg-scard .kkg-thumb{aspect-ratio:1\/1}\n  .kkg-sbody{padding:9px 10px 10px;display:flex;flex-direction:column;gap:2px;flex:1}\n  .kkg-sname{font-size:11.5px;font-weight:600;line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}\n  .kkg-sprice{font-size:12.5px;font-weight:700;font-variant-numeric:tabular-nums}\n  .kkg-plus{margin-top:7px;appearance:none;font-family:inherit;font-size:11.5px;font-weight:600;color:var(--btn-ink);background:var(--btn);border:0;border-radius:8px;padding:8px;cursor:pointer}\n  .kkg-plus:hover{opacity:.9}\n  .kkg-plus.in{background:var(--surface-2);color:var(--ink-3);border:1px solid var(--line)}\n  .kkg-more-note{font-size:11.5px;color:var(--ink-3);margin:12px 2px 0;text-align:center}\n  .kkg-loading{padding:22px;text-align:center;color:var(--ink-3);font-size:13px;grid-column:1\/-1}\n\n  .kkg-corp{margin-top:16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px}\n  .kkg-corp-l{font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin:0 0 12px}\n  .kkg-qty{display:flex;flex-wrap:wrap;gap:8px;align-items:center}\n  .kkg-qchip{appearance:none;font-family:inherit;font-size:13.5px;font-weight:600;color:var(--ink);background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:9px 14px;cursor:pointer;min-width:46px;font-variant-numeric:tabular-nums}\n  .kkg-qchip[aria-pressed=\"true\"]{background:var(--ink);color:var(--paper);border-color:var(--ink)}\n  .kkg-qcustom{font-family:inherit;font-size:13.5px;color:var(--ink);background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:9px 12px;width:104px}\n  .kkg-qcustom:focus-visible{outline:2px solid var(--ink);outline-offset:2px}\n  .kkg-corp-tot{font-size:14px;color:var(--ink-2);margin:14px 0 0}\n  .kkg-corp-tot b{color:var(--ink);font-weight:700;font-variant-numeric:tabular-nums}\n  .kkg-success{display:flex;gap:13px;align-items:flex-start;margin-top:16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px}\n  .kkg-success .ok{flex:none;width:30px;height:30px;border-radius:50%;background:var(--ok);color:#fff;display:grid;place-items:center;font-weight:700}\n  .kkg-success p{margin:0;font-size:14.5px;font-weight:600}\n  .kkg-success-btns{display:flex;gap:10px;margin-top:11px;flex-wrap:wrap}\n  .kkg-viewbag{text-decoration:none;font-size:13.5px;font-weight:700;color:var(--btn-ink);background:var(--btn);border-radius:10px;padding:10px 16px}\n  .kkg-viewbag:hover{opacity:.9}\n  .kkg-keep{appearance:none;font-family:inherit;font-size:13.5px;font-weight:600;color:var(--ink);background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:10px 16px;cursor:pointer}\n  .kkg-swarn{font-size:12.5px;color:var(--warn);margin:8px 0 0!important;font-weight:500!important}\n  .kkg-quote{appearance:none;font-family:inherit;font-size:15px;font-weight:700;color:var(--btn-ink);background:var(--btn);border:0;border-radius:12px;padding:14px 22px;cursor:pointer;display:inline-flex;align-items:center;gap:9px}\n  .kkg-quote:hover{opacity:.9}\n  .kkg-addall.secondary{background:var(--surface-2);color:var(--ink);border:1px solid var(--line)}\n  .kkg-qemail{font-size:12.5px;color:var(--ink-3);margin-top:10px}\n  .kkg-qemail a{color:var(--ink-2)}\n\n  .kkg-msg{margin-top:16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px}\n  .kkg-msg .mh{display:flex;align-items:center;justify-content:flex-start;gap:8px;margin-bottom:9px}\n  .kkg-msg .mh .kkg-copy{margin-inline-start:auto}\n  .kkg-editbadge{font-size:10.5px;font-weight:600;color:var(--ink-3);white-space:nowrap}\n  .kkg-msg .mt{font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}\n  .kkg-copy{appearance:none;font-family:inherit;font-size:12px;font-weight:600;color:var(--ink);background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:6px 12px;cursor:pointer}\n  .kkg-copy:hover{border-color:var(--ink-3)}\n  .kkg-msg .mbody{font-size:15px;color:var(--ink);line-height:1.6;border:1px dashed var(--line);border-radius:8px;padding:9px 11px;cursor:text;white-space:pre-wrap;transition:border-color .12s,background .12s}\n  .kkg-msg .mbody:hover{border-color:var(--ink-3)}\n  .kkg-msg .mbody:focus{outline:none;border:1px solid var(--ink);background:var(--surface-2)}\n\n  .kkg-actions{display:flex;gap:12px;align-items:center;margin-top:18px;flex-wrap:wrap}\n  .kkg-addall{appearance:none;font-family:inherit;font-size:15px;font-weight:700;color:var(--btn-ink);background:var(--btn);border:0;border-radius:12px;padding:14px 22px;cursor:pointer;display:inline-flex;align-items:center;gap:9px}\n  .kkg-addall[disabled]{opacity:.5;cursor:default}\n  .kkg-addall:not([disabled]):hover{opacity:.9}\n  .kkg-again,.kkg-link{appearance:none;font-family:inherit;background:none;border:0;cursor:pointer}\n  .kkg-again{font-size:13.5px;font-weight:600;color:var(--ink);display:inline-flex;align-items:center;gap:7px}\n  .kkg-again:hover{color:var(--ink-2)}\n  .kkg-link{font-size:13px;font-weight:600;color:var(--ink);text-decoration:underline;text-underline-offset:3px}\n  .kkg-shop{margin-inline-start:auto;font-size:13px;font-weight:600;color:var(--ink-2);text-decoration:none;border-bottom:1px solid var(--line);padding-bottom:1px}\n  .kkg-shop:hover{color:var(--ink)}\n  .kkg-flash{font-size:12.5px;color:var(--ink-2);background:var(--surface-2);border:1px dashed var(--line);border-radius:10px;padding:10px 13px;margin-top:12px}\n\n  .kkg-ribbon{margin-top:14px;font-size:12px;color:var(--ink-2);background:var(--surface-2);border:1px dashed var(--line);border-radius:10px;padding:10px 13px}\n  .kkg-foot{margin-top:20px;padding-top:14px;border-top:1px solid var(--line);font-size:11.5px;color:var(--ink-3);display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap}\n  @media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}\n<\/style>\n\n<div class=\"kkg\" id=\"kkg\" lang=\"en\" dir=\"ltr\">\n  <div class=\"kkg-head\">\n    <span class=\"kkg-brand\"><b>KK<\/b> KlippiK<\/span>\n    <span class=\"kkg-lang\" role=\"group\" aria-label=\"Language\">\n      <button type=\"button\" data-lang=\"en\" aria-pressed=\"true\">EN<\/button>\n      <button type=\"button\" data-lang=\"ar\" aria-pressed=\"false\">\u0627\u0644\u0639\u0631\u0628\u064a\u0629<\/button>\n    <\/span>\n  <\/div>\n\n  <h1 id='build-the-perfect-gift-in-20-seconds'  id=\"boomdevs_1\" data-t=\"title\">Build the perfect gift in 20 seconds<\/h1>\n  <p class=\"sub\" data-t=\"sub\">Answer a few quick questions and our concierge starts a gift bundle they\u2019ll love \u2014 then add, swap or remove anything, and send it to the bag in one click.<\/p>\n\n  <div class=\"kkg-panel\">\n    <div class=\"kkg-ai\">\n      <label class=\"kkg-ai-l\" for=\"kkg-desc\"><span class=\"sp\">\u2728<\/span><span data-t=\"ai_l\">Describe them and AI picks the gift (optional)<\/span><\/label>\n      <textarea class=\"kkg-ai-in\" id=\"kkg-desc\" rows=\"2\" data-ph=\"ai_ph\"><\/textarea>\n      <p class=\"kkg-ai-hint\" data-t=\"ai_hint\">Or just answer the quick questions below.<\/p>\n      <button type=\"button\" class=\"kkg-cta kkg-ai-go\" id=\"kkg-ai-go\" disabled><span class=\"spark\">\u2726<\/span><span data-t=\"ai_go\">Build with AI<\/span><\/button>\n    <\/div>\n    <div class=\"kkg-q\"><p class=\"ql\"><span class=\"kkg-qn\">1<\/span><span data-t=\"q_who\">Who\u2019s it for?<\/span><\/p><div class=\"kkg-opts\" id=\"opt-who\"><\/div><\/div>\n    <div class=\"kkg-q\"><p class=\"ql\"><span class=\"kkg-qn\">2<\/span><span data-t=\"q_occ\">What\u2019s the occasion?<\/span><\/p><div class=\"kkg-opts\" id=\"opt-occ\"><\/div><\/div>\n    <div class=\"kkg-q\"><p class=\"ql\"><span class=\"kkg-qn\">3<\/span><span data-t=\"q_int\">What are they into? <span style=\"text-transform:none;font-weight:500;color:var(--ink-3)\" data-t=\"optional\">(optional, pick any)<\/span><\/span><\/p><div class=\"kkg-opts\" id=\"opt-int\"><\/div><\/div>\n    <div class=\"kkg-q\"><p class=\"ql\"><span class=\"kkg-qn\">4<\/span><span data-t=\"q_bud\">Budget?<\/span><\/p><div class=\"kkg-opts\" id=\"opt-bud\"><\/div><\/div>\n    <div class=\"kkg-q\"><p class=\"ql\"><span class=\"kkg-qn\">5<\/span><span data-t=\"q_name\">Their name <span style=\"text-transform:none;font-weight:500;color:var(--ink-3)\" data-t=\"optional2\">(optional \u2014 for the gift note)<\/span><\/span><\/p><input class=\"kkg-name\" id=\"kkg-name\" type=\"text\" autocomplete=\"off\" maxlength=\"24\" data-ph=\"name\"><\/div>\n    <button type=\"button\" class=\"kkg-cta\" id=\"kkg-go\" disabled><span class=\"spark\">\u2726<\/span><span data-t=\"reveal\">Build the gift<\/span><\/button>\n  <\/div>\n\n  <div class=\"kkg-res\" id=\"kkg-res\" hidden>\n    <div class=\"kkg-res-h\"><h2 id='their-gift-bundle'  id=\"boomdevs_2\" id=\"kkg-res-title\" data-t=\"res_title\">Their gift bundle<\/h2><\/div>\n    <p class=\"kkg-res-sub\" id=\"kkg-res-sub\" data-t=\"res_sub\">We started it for you \u2014 add, swap or remove anything below.<\/p>\n\n    <div class=\"kkg-gift\">\n      <div class=\"kkg-gift-top\">\n        <span class=\"lbl\" data-t=\"yourbundle\">Gift bundle<\/span>\n        <span class=\"kkg-total\" id=\"kkg-total\"><\/span>\n      <\/div>\n      <div class=\"kkg-items\" id=\"kkg-items\"><\/div>\n      <div class=\"kkg-budgetbar\" id=\"kkg-budgetbar\" hidden>\n        <span class=\"kkg-track\"><span class=\"kkg-fill\" id=\"kkg-fill\"><\/span><\/span>\n        <span class=\"kkg-bmeta\" id=\"kkg-bmeta\"><\/span>\n      <\/div>\n      <p class=\"kkg-arrives\" id=\"kkg-arrives\" hidden><\/p>\n    <\/div>\n\n    <div class=\"kkg-corp\" id=\"kkg-corp\" hidden>\n      <p class=\"kkg-corp-l\" data-t=\"howmany\">How many of this gift?<\/p>\n      <div class=\"kkg-qty\" id=\"kkg-qty\"><\/div>\n      <p class=\"kkg-corp-tot\" id=\"kkg-corp-tot\"><\/p>\n    <\/div>\n\n    <div class=\"kkg-msg\">\n      <div class=\"mh\"><span class=\"mt\" data-t=\"giftnote\">Gift note<\/span><span class=\"kkg-editbadge\" data-t=\"editable\">\u270e editable<\/span><button type=\"button\" class=\"kkg-copy\" id=\"kkg-copy\" data-t=\"copy\">Copy<\/button><\/div>\n      <p class=\"mbody\" id=\"kkg-msgbody\" contenteditable=\"true\" role=\"textbox\" aria-multiline=\"true\" aria-label=\"Gift note \u2014 editable\" spellcheck=\"true\"><\/p>\n    <\/div>\n\n    <div class=\"kkg-success\" id=\"kkg-success\" hidden>\n      <span class=\"ok\" aria-hidden=\"true\">\u2713<\/span>\n      <div style=\"flex:1\">\n        <p id=\"kkg-success-tx\"><\/p>\n        <div class=\"kkg-success-btns\">\n          <a class=\"kkg-viewbag\" id=\"kkg-viewbag\" href=\"#\" data-t=\"viewbag\">View bag \u2192<\/a>\n          <button type=\"button\" class=\"kkg-keep\" id=\"kkg-keep\" data-t=\"keep\">Keep building<\/button>\n        <\/div>\n        <p class=\"kkg-swarn\" id=\"kkg-success-warn\" hidden><\/p>\n      <\/div>\n    <\/div>\n\n    <div class=\"kkg-actions\">\n      <button type=\"button\" class=\"kkg-quote\" id=\"kkg-quote\" hidden><span>\ud83d\udcac<\/span><span data-t=\"quote\">Request a quote<\/span><\/button>\n      <button type=\"button\" class=\"kkg-addall\" id=\"kkg-addall\"><span>\ud83d\udecd\ufe0f<\/span><span data-t=\"addall\">Add bundle to bag<\/span><\/button>\n      <button type=\"button\" class=\"kkg-again\" id=\"kkg-again\"><span>\u21bb<\/span><span data-t=\"another\">Fresh idea<\/span><\/button>\n    <\/div>\n    <p class=\"kkg-qemail\" id=\"kkg-qemail\" hidden><\/p>\n    <p class=\"kkg-flash\" id=\"kkg-flash\" hidden><\/p>\n\n    <div class=\"kkg-more\">\n      <p class=\"kkg-more-h\" data-t=\"addmore\">Add more to the gift<\/p>\n      <div class=\"kkg-mfilters\" id=\"kkg-mfilters\"><\/div>\n      <div class=\"kkg-more-grid\" id=\"kkg-more\"><\/div>\n      <p class=\"kkg-more-note\" id=\"kkg-more-note\" hidden><\/p>\n    <\/div>\n\n    <div class=\"kkg-actions kkg-actions-sec\">\n      <button type=\"button\" class=\"kkg-link\" id=\"kkg-reset\" data-t=\"startover\">Start over<\/button>\n      <a class=\"kkg-shop\" id=\"kkg-shopall\" href=\"#\" target=\"_blank\" rel=\"noopener\" data-t=\"shopall\">Browse everything \u2192<\/a>\n    <\/div>\n  <\/div>\n\n  <div class=\"kkg-ribbon\" id=\"kkg-ribbon\" hidden><\/div>\n  <div class=\"kkg-foot\"><span data-t=\"foot1\">Curated from KlippiK \u00b7 Prices in AED<\/span><span data-t=\"foot2\">In-country stock \u00b7 Cash on delivery in the UAE<\/span><\/div>\n<\/div>\n\n<script>(function(){var B=\"CihmdW5jdGlvbigpewogICJ1c2Ugc3RyaWN0IjsKICB2YXIgQ09ORklHPXsgbGl2ZUhvc3RzOlsia2xpcHBpay5jb20iXSwgc3RvcmVCYXNlOiIvYWUiLAogICAgY2F0SWRzOntiYWdzOjQ5NCxob21lOjQ5NixkZXNrOjQ5MyxzbWFsbDo0OTgsY2FzZXM6NDk3LHdhbGxldHM6NDE5LHdhdGNoOjI1Nn0sCiAgICBhZGRUb0NhcnQ6Imh0dHBzOi8va2xpcHBpay5jb20vYWUvP2FkZC10by1jYXJ0PSIsIHNob3BBbGxVcmw6Imh0dHBzOi8va2xpcHBpay5jb20vYWUvc2hvcC8iLAogICAgd2hhdHNhcHA6Ijk2NTUxNzgwOTAzIiwgZW5xdWlyeUVtYWlsOiJzdXBwb3J0QGtsaXBwaWsuY29tIiwKICAgIGFpV2ViaG9vazoiaHR0cHM6Ly9ob29rLmV1MS5tYWtlLmNvbS9mcXUzd3c4cTZpczFmNWlzM2hvbXd4eWd3Y2J2d2JuaiIsIC8qIE1ha2UuY29tIOKGkiBHZW1pbmkuIEVtcHR5ID0gYnVpbHQtaW4ga2V5d29yZCBmYWxsYmFjay4gKi8KICAgIGN1cnJlbmN5OiJBRUQiLCBtaW5vclVuaXQ6MiwKICAgIC8qIERlbGl2ZXJ5LWRheSBvZmZzZXRzIGZyb20gdG9kYXksIG1hdGNoZWQgdG8gS2xpcHBpSydzIFdvb2RtYXJ0ICJFc3RpbWF0ZWQgZGVsaXZlcnkiIChTZXAgMjAyNik6IGluLXN0b2NrIDDigJMxIGRheXMsIGJhY2tvcmRlciAxNeKAkzE4LiBVcGRhdGUgaGVyZSBpZiB0aGUgc3RvcmUncyBkZWxpdmVyeSBzZXR0aW5ncyBjaGFuZ2UuICovCiAgICBkZWxpdmVyeTp7IHN0b2NrOlswLDFdLCBiYWNrb3JkZXI6WzE1LDE4XSB9IH07CgogIC8qIC0tLS0gYW5hbHl0aWNzOiBmaXJlcyB0byBHQTQgKGd0YWcpIGFuZCBNZXRhIFBpeGVsIChmYnEpIGlmIHByZXNlbnQ7IHNpbGVudCBuby1vcCBvdGhlcndpc2UgLS0tLSAqLwogIGZ1bmN0aW9uIHRyYWNrKG5hbWUsIHBhcmFtcyl7IHBhcmFtcz1wYXJhbXN8fHt9OwogICAgdHJ5eyBpZih0eXBlb2Ygd2luZG93Lmd0YWc9PT0iZnVuY3Rpb24iKSB3aW5kb3cuZ3RhZygiZXZlbnQiLCBuYW1lLCBwYXJhbXMpOyB9Y2F0Y2goZSl7fQogICAgdHJ5eyBpZih0eXBlb2Ygd2luZG93LmZicT09PSJmdW5jdGlvbiIpIHdpbmRvdy5mYnEoInRyYWNrQ3VzdG9tIiwgbmFtZSwgcGFyYW1zKTsgfWNhdGNoKGUpe30KICB9CiAgZnVuY3Rpb24gdHJhY2tBZGRUb0JhZyhhZGRlZCwgdmFsKXsKICAgIHRyeXsgaWYodHlwZW9mIHdpbmRvdy5ndGFnPT09ImZ1bmN0aW9uIikgd2luZG93Lmd0YWcoImV2ZW50IiwiYWRkX3RvX2NhcnQiLHtjdXJyZW5jeTpDT05GSUcuY3VycmVuY3ksdmFsdWU6dmFsLGl0ZW1zOnN0LmJ1bmRsZS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIHtpdGVtX2lkOnguaWQsaXRlbV9uYW1lOngubixwcmljZTp4LnAscXVhbnRpdHk6MX07fSl9KTsgfWNhdGNoKGUpe30KICAgIHRyeXsgaWYodHlwZW9mIHdpbmRvdy5mYnE9PT0iZnVuY3Rpb24iKSB3aW5kb3cuZmJxKCJ0cmFjayIsIkFkZFRvQ2FydCIse2N1cnJlbmN5OkNPTkZJRy5jdXJyZW5jeSx2YWx1ZTp2YWwsbnVtX2l0ZW1zOmFkZGVkLGNvbnRlbnRfdHlwZToicHJvZHVjdCIsY29udGVudF9pZHM6c3QuYnVuZGxlLm1hcChmdW5jdGlvbih4KXtyZXR1cm4geC5pZDt9KX0pOyB9Y2F0Y2goZSl7fQogICAgdHJhY2soImtrZ19hZGRfYnVuZGxlX3RvX2JhZyIse2l0ZW1zOmFkZGVkLHZhbHVlOnZhbH0pOwogIH0KCiAgdmFyIFNFRUQ9W3siaWQiOjE3MzUwLCJuIjoiTWlkbmlnaHQgQmx1ZSBCdW95IFRvdGUgQmFnIiwiayI6ImJhZ3MiLCJwIjoyOC4wLCJjIjoiIiwibnUiOjF9LHsiaWQiOjE3MzQ5LCJuIjoiS2hha2kgQmVpZ2UgQnVveSBUb3RlIEJhZyIsImsiOiJiYWdzIiwicCI6MjguMCwiYyI6IiIsIm51IjoxfSx7ImlkIjoxNzIzNSwibiI6Ik1pZG5pZ2h0IEJsdWUgUGlsb3QgQmFja3BhY2siLCJrIjoiYmFncyIsInAiOjI4LjAsImMiOiIiLCJudSI6MX0seyJpZCI6MTc0MjAsIm4iOiJNaWRuaWdodCBCbHVlIFNjb3V0IENyb3NzYm9keSBCYWciLCJrIjoiYmFncyIsInAiOjE3LjAsImMiOiIiLCJudSI6MX0seyJpZCI6MTc0MTksIm4iOiJLaGFraSBCZWlnZSBTY291dCBDcm9zc2JvZHkgQmFnIiwiayI6ImJhZ3MiLCJwIjoxNy4wLCJjIjoiIiwibnUiOjF9LHsiaWQiOjE3MzUxLCJuIjoiQ3JpbXNvbiBSZWQgQnVveSBUb3RlIEJhZyIsImsiOiJiYWdzIiwicCI6MjguMCwiYyI6IlJlZCIsIm51IjowfSx7ImlkIjoxNzM0OCwibiI6Ik9saXZlIEdyZWVuIEJ1b3kgVG90ZSBCYWciLCJrIjoiYmFncyIsInAiOjI4LjAsImMiOiJHcmVlbiIsIm51IjowfSx7ImlkIjoyMDU5MywibiI6IlRhbmdlcmluZSBLaWNrIFBob25lIFBvY2tldCIsImsiOiJiYWdzIiwicCI6MTEuMCwiYyI6IlRhbmdlcmluZSIsIm51IjowfSx7ImlkIjoxNzQyMiwibiI6Ik11c3RhcmQgWWVsbG93IFNjb3V0IENyb3NzYm9keSBCYWciLCJrIjoiYmFncyIsInAiOjE3LjAsImMiOiIiLCJudSI6MX0seyJpZCI6Mzg1NDksIm4iOiJNYXJibGVvdXMgQ3V0bGVyeSBIb2xkZXIgRm9yIEtpdGNoZW4iLCJrIjoiaG9tZSIsInAiOjMyLjAsImMiOiJXaGl0ZSIsIm51IjoxfSx7ImlkIjozODU0NSwibiI6IlRyYXkgJiBDb2FzdGVycyBTZXQiLCJrIjoiaG9tZSIsInAiOjQ2LjUsImMiOiJHcmVlbiBhbmQgd2hpdGUiLCJudSI6MH0seyJpZCI6Mzg1NDEsIm4iOiJNYXJibGVvdXMgQ29hc3RlcnMgU2V0IiwiayI6ImhvbWUiLCJwIjoxMi41LCJjIjoiR3JlZW4gYW5kIHdoaXRlIiwibnUiOjB9LHsiaWQiOjM4NTM4LCJuIjoiV2hpc3BlciBQcmludGVkIExpbmVuIEZsb3dlciBNb3RpZiBDdXNoaW9uIiwiayI6ImhvbWUiLCJwIjo2LjAsImMiOiIiLCJudSI6MX0seyJpZCI6Mzg1MzIsIm4iOiJPbWJyZSBDaGV2cm9uIENvdHRvbiBDdXNoaW9uIENvdmVyIiwiayI6ImhvbWUiLCJwIjoyLjUsImMiOiJZZWxsb3ciLCJudSI6MH0seyJpZCI6Mzg1MDcsIm4iOiJDaGVycnkgUmVkIENvdHRvbiBDdXNoaW9uIENvdmVyIiwiayI6ImhvbWUiLCJwIjo1LjUsImMiOiJSZWQiLCJudSI6MH0seyJpZCI6Mzg0ODQsIm4iOiJDcm9zcyBTdGl0Y2ggQ3VzaGlvbiBDb3ZlciIsImsiOiJob21lIiwicCI6NS41LCJjIjoiIiwibnUiOjF9LHsiaWQiOjE4MDk5LCJuIjoiRGVzayBUcmlvIEJ1bmRsZSDigJQgTGltaXRlZCBFZGl0aW9uIiwiayI6ImRlc2siLCJwIjoyNS4wLCJjIjoiQmxhY2siLCJudSI6MX0seyJpZCI6MTY0OTAsIm4iOiJUdXJmIDIuMCBGZWx0IERlc2sgTWF0IFdpdGggTW91c2UgUGFkIiwiayI6ImRlc2siLCJwIjoxNi4wLCJjIjoiR3JleSIsIm51IjoxfSx7ImlkIjoxNjQ3NCwibiI6IlR1cmYgMi4wIEZlbHQgRGVzayBNYXQgV2l0aCBNb3VzZSBQYWQiLCJrIjoiZGVzayIsInAiOjE2LjAsImMiOiJHcmVlbiIsIm51IjowfSx7ImlkIjoxNjQ2MSwibiI6IlR1cmYgVmVnYW4gTGVhdGhlciBEZXNrIE1hdCIsImsiOiJkZXNrIiwicCI6MTUuMCwiYyI6IlRhbiIsIm51IjoxfSx7ImlkIjoxNjQ1MSwibiI6Ik9yYiBWZWdhbiBMZWF0aGVyIE1vdXNlIFBhZCIsImsiOiJkZXNrIiwicCI6Ni4wLCJjIjoiVGFuIiwibnUiOjF9LHsiaWQiOjM3NTI3LCJuIjoiVmFsZXQgVmVnYW4gTGVhdGhlciBUcmF5IiwiayI6ImRlc2siLCJwIjo2LjUsImMiOiJCbGFjayIsIm51IjoxfSx7ImlkIjozNzUyMCwibiI6IlR1cmYgVmVnYW4gTGVhdGhlciBEZXNrIE1hdCIsImsiOiJkZXNrIiwicCI6MTUuMCwiYyI6IkJsYWNrIiwibnUiOjF9LHsiaWQiOjE5NTA4LCJuIjoiVXJiYW5lIFRlY2ggRm9saW8iLCJrIjoiZGVzayIsInAiOjE4LjAsImMiOiJCbGFjayIsIm51IjoxfSx7ImlkIjoxODU2MSwibiI6IkNhciBTbWFydCBLZXkgUmVtb3RlIENvdmVyIiwiayI6InNtYWxsIiwicCI6NC4wLCJjIjoiVGFuIiwibnUiOjF9LHsiaWQiOjI2MTUxLCJuIjoiTGVhdGhlcml0ZSBDcm9zc2JvZHkgUGhvbmUgTGFueWFyZCIsImsiOiJzbWFsbCIsInAiOjEwLjAsImMiOiIiLCJudSI6MX0seyJpZCI6MjYzNTIsIm4iOiJGbGludCBLZXljaGFpbiIsImsiOiJzbWFsbCIsInAiOjUuMCwiYyI6IiIsIm51IjoxfSx7ImlkIjoyNjM0MiwibiI6IkZsaW50IEtleWNoYWluIiwiayI6InNtYWxsIiwicCI6NS4wLCJjIjoiUHVycGxlIiwibnUiOjB9LHsiaWQiOjI2MzMyLCJuIjoiRmxpbnQgS2V5Y2hhaW4iLCJrIjoic21hbGwiLCJwIjo1LjAsImMiOiJMaWdodCBHcmV5IiwibnUiOjF9LHsiaWQiOjI2MzAzLCJuIjoiV3Jpc3QgTGFueWFyZCDigJQgQ29yZCIsImsiOiJzbWFsbCIsInAiOjYuMCwiYyI6Ik9yYW5nZSIsIm51IjowfSx7ImlkIjoyNjI4NSwibiI6IldyaXN0IExhbnlhcmQg4oCUIENvcmQiLCJrIjoic21hbGwiLCJwIjo2LjAsImMiOiJHcmVlbiIsIm51IjowfSx7ImlkIjoxOTQ2NywibiI6IlNuYXBPbiBFbnZlbG9wZSBTbGVldmUgRm9yIE1hY0Jvb2siLCJrIjoiY2FzZXMiLCJwIjoxNC4wLCJjIjoiIiwibnUiOjF9LHsiaWQiOjM2OTQ5LCJuIjoiQmFzYWx0IFBpdm90IExhcHRvcCBTbGVldmUiLCJrIjoiY2FzZXMiLCJwIjoyMS4wLCJjIjoiQmxhY2siLCJudSI6MX0seyJpZCI6MzY5MjksIm4iOiJDb3JhbCBQaXZvdCBMYXB0b3AgU2xlZXZlIiwiayI6ImNhc2VzIiwicCI6MjEuMCwiYyI6IlJlZCIsIm51IjowfSx7ImlkIjozNjg3MiwibiI6IlNlYWdyYXNzIFBpdm90IExhcHRvcCBTbGVldmUiLCJrIjoiY2FzZXMiLCJwIjoxOS4wLCJjIjoiR3JlZW4iLCJudSI6MH0seyJpZCI6MjgyOTksIm4iOiJUYW4gTGVhdGhlcml0ZSBBaXJQb2RzIDMgQ2FzZSIsImsiOiJjYXNlcyIsInAiOjEwLjAsImMiOiJUYW4iLCJudSI6MX0seyJpZCI6MjgyODgsIm4iOiJHcmVlbiBMZWF0aGVyaXRlIEFpclBvZHMgMyBDYXNlIiwiayI6ImNhc2VzIiwicCI6MTAuMCwiYyI6IkdyZWVuIiwibnUiOjB9LHsiaWQiOjI4Mjc3LCJuIjoiTmF2eSBMZWF0aGVyaXRlIEFpclBvZHMgMyBDYXNlIiwiayI6ImNhc2VzIiwicCI6MTAuMCwiYyI6Ik5hdnkgQmx1ZSIsIm51IjowfSx7ImlkIjoyODI1NSwibiI6IkJsYWNrIExlYXRoZXJpdGUgQWlyUG9kcyBQcm8gMiBDYXNlIiwiayI6ImNhc2VzIiwicCI6MTAuMCwiYyI6IiIsIm51IjoxfSx7ImlkIjoxOTE3MCwibiI6IlZlZ2FuIExlYXRoZXIgV29tZW7igJlzIENsYXNzaWMgV2FsbGV0IiwiayI6IndhbGxldHMiLCJwIjoxNS4wLCJjIjoiIiwibnUiOjF9LHsiaWQiOjI4MTgzLCJuIjoiVGFuLUdyZXkgTGVhdGhlciBNYWdTYWZlIENhcmQgV2FsbGV0IiwiayI6IndhbGxldHMiLCJwIjoxMS4wLCJjIjoiVGFuIiwibnUiOjF9LHsiaWQiOjI4MTczLCJuIjoiR3JlZW4tT2xpdmUgTGVhdGhlciBNYWdTYWZlIENhcmQgV2FsbGV0IiwiayI6IndhbGxldHMiLCJwIjoxMS4wLCJjIjoiT2xpdmUiLCJudSI6MH0seyJpZCI6MjgxNjMsIm4iOiJOYXZ5IExlYXRoZXIgTWFnU2FmZSBDYXJkIFdhbGxldCIsImsiOiJ3YWxsZXRzIiwicCI6MTEuMCwiYyI6Ik5hdnkgQmx1ZSIsIm51IjowfSx7ImlkIjoyODE1MywibiI6IkNyaW1zb24gTGVhdGhlciBNYWdTYWZlIENhcmQgV2FsbGV0IiwiayI6IndhbGxldHMiLCJwIjoxMS4wLCJjIjoiQ3JpbXNvbi1HcmV5IiwibnUiOjB9LHsiaWQiOjI4MTQwLCJuIjoiQmxhY2stQmVpZ2UgTGVhdGhlciBNYWdTYWZlIENhcmQgV2FsbGV0IiwiayI6IndhbGxldHMiLCJwIjoxMS4wLCJjIjoiIiwibnUiOjF9LHsiaWQiOjI1ODM3LCJuIjoiRGFyayBHcmV5IFB1bHNlIENhcmQgV2FsbGV0IiwiayI6IndhbGxldHMiLCJwIjo2LjUsImMiOiJEYXJrIEdyZXkiLCJudSI6MX0seyJpZCI6MjU4MTksIm4iOiJMaWdodCBHcmV5IFB1bHNlIENhcmQgV2FsbGV0IiwiayI6IndhbGxldHMiLCJwIjo2LjUsImMiOiJMaWdodCBHcmV5IiwibnUiOjF9LHsiaWQiOjE5MjA2LCJuIjoiVmVnYW4gTGVhdGhlciBaaXAgV2FsbGV0IiwiayI6IndhbGxldHMiLCJwIjoxMy41LCJjIjoiIiwibnUiOjF9LHsiaWQiOjIyMTkwLCJuIjoiQmxhY2sgUmlkZ2UgTG9vcCBBcHBsZSBXYXRjaEJhbmQiLCJrIjoid2F0Y2giLCJwIjoxMi41LCJjIjoiIiwibnUiOjF9LHsiaWQiOjE5Mzk0LCJuIjoiQ2FzcGVyIFdoaXRlIENsZWFyIEFwcGxlIFdhdGNoQmFuZCIsImsiOiJ3YXRjaCIsInAiOjEwLjAsImMiOiJXaGl0ZSIsIm51IjoxfSx7ImlkIjoyNjQ1OSwibiI6IkRhcmsgR3JlZW4gUmlkZ2UgTG9vcCBBcHBsZSBXYXRjaEJhbmQiLCJrIjoid2F0Y2giLCJwIjo4LjUsImMiOiJHcmVlbiIsIm51IjowfSx7ImlkIjoyNjQzNiwibiI6IlBsdW0tT3JhbmdlIFNwb3J0cyBMb29wIFdhdGNoQmFuZCIsImsiOiJ3YXRjaCIsInAiOjguNSwiYyI6Ik9yYW5nZSIsIm51IjowfV07CiAgU0VFRC5mb3JFYWNoKGZ1bmN0aW9uKHgpeyB4LnU9Imh0dHBzOi8va2xpcHBpay5jb20vP3A9Iit4LmlkOyB4LnN0b2NrPXRydWU7IH0pOwoKICB2YXIgQ0FUTEFCRUw9e2VuOntiYWdzOiJCYWdzICYgQ2FycnkiLGhvbWU6IkhvbWUgJiBMaXZpbmciLGRlc2s6IkRlc2sgJiBPZmZpY2UiLHNtYWxsOiJTbWFsbCBBY2Nlc3NvcnkiLGNhc2VzOiJDYXNlcyAmIFNsZWV2ZXMiLHdhbGxldHM6IldhbGxldHMiLHdhdGNoOiJXYXRjaCBTdHJhcHMifSwKICAgICAgICAgICAgICAgIGFyOntiYWdzOiLYrdmC2KfYptioIixob21lOiLYp9mE2YXZhtiy2YQiLGRlc2s6Itin2YTZhdmD2KrYqCIsc21hbGw6Itil2YPYs9iz2YjYp9ixIixjYXNlczoi2KzYsdin2KjYp9iqIix3YWxsZXRzOiLZhdit2KfZgdi4Iix3YXRjaDoi2LPZitmI2LEg2LPYp9i52KfYqiJ9fTsKICB2YXIgQ0FUT1JERVI9WyJiYWdzIiwiZGVzayIsIndhbGxldHMiLCJjYXNlcyIsImhvbWUiLCJzbWFsbCIsIndhdGNoIl07CiAgdmFyIElXPXsgdGVjaDp7ZGVzazozLGNhc2VzOjMsc21hbGw6MSx3YWxsZXRzOjF9LCB0cmF2ZWw6e2JhZ3M6Myx3YWxsZXRzOjIsc21hbGw6MSxjYXNlczoxfSwKICAgICAgICAgICBtaW5pbWFsOnt3YWxsZXRzOjMsY2FzZXM6MixzbWFsbDoxfSwgdHJlbmR5Ont3YXRjaDoyLGNhc2VzOjIsc21hbGw6MixiYWdzOjF9LCBob21lOntob21lOjMsc21hbGw6MSxkZXNrOjF9IH07CiAgdmFyIE9DQ19OVURHRT17IGVpZDp7aG9tZToxfSwgYmlydGhkYXk6e30sIHdlZGRpbmc6e2hvbWU6Mn0sIGFubml2ZXJzYXJ5Ontob21lOjJ9LCBuZXdqb2I6e2Rlc2s6MixjYXNlczoxLGJhZ3M6MX0sIHRoYW5reW91OntzbWFsbDoxLHdhbGxldHM6MSxob21lOjF9LCBqdXN0YmVjYXVzZTp7fSB9OwogIHZhciBXSE9fTlVER0U9eyBoaW06e30sIGhlcjp7fSwgdGhlbTp7fSwgY291cGxlOntob21lOjJ9LCBjb3Jwb3JhdGU6e2Rlc2s6MixjYXNlczoyLGJhZ3M6MX0gfTsKICB2YXIgQkFTRT17YmFnczoyLGRlc2s6Mix3YWxsZXRzOjIsY2FzZXM6Mixob21lOjEsc21hbGw6MSx3YXRjaDowfTsKCiAgdmFyIE9QVFM9eyB3aG86W1siaGltIiwiRm9yIGhpbSJdLFsiaGVyIiwiRm9yIGhlciJdLFsidGhlbSIsIkZvciB0aGVtIl0sWyJjb3VwbGUiLCJGb3IgYSBjb3VwbGUiXSxbImNvcnBvcmF0ZSIsIkNvcnBvcmF0ZSAvIGNsaWVudCJdXSwKICAgIG9jYzpbWyJlaWQiLCJFaWQiXSxbImJpcnRoZGF5IiwiQmlydGhkYXkiXSxbIndlZGRpbmciLCJXZWRkaW5nIl0sWyJhbm5pdmVyc2FyeSIsIkFubml2ZXJzYXJ5Il0sWyJuZXdqb2IiLCJOZXcgam9iIC8gZ3JhZCJdLFsidGhhbmt5b3UiLCJUaGFuayB5b3UiXSxbImp1c3RiZWNhdXNlIiwiSnVzdCBiZWNhdXNlIl1dLAogICAgaW50OltbInRlY2giLCJUZWNoICYgZGVzayJdLFsidHJhdmVsIiwiVHJhdmVsICYgY2FycnkiXSxbIm1pbmltYWwiLCJFdmVyeWRheSBtaW5pbWFsIl0sWyJ0cmVuZHkiLCJUcmVuZHkgJiBjb2xvdXJmdWwiXSxbImhvbWUiLCJIb21lICYgY29zeSJdXSwKICAgIGJ1ZDpbWyIxMjAiLCJVcCB0byBBRUQgMTIwIl0sWyIzMDAiLCJBRUQgMTIw4oCTMzAwIl0sWyI2MDAiLCJBRUQgMzAw4oCTNjAwIl0sWyIxMjAwIiwiQUVEIDYwMCsiXV0gfTsKICB2YXIgT1BUU19BUj17IHdobzp7aGltOiLZhNmHIixoZXI6ItmE2YfYpyIsdGhlbToi2YTYo9mKINi02K7YtSIsY291cGxlOiLZhNir2YbYp9im2YoiLGNvcnBvcmF0ZToi2YTZhNi02LHZg9in2KogLyDYp9mE2LnZhdmE2KfYoSJ9LAogICAgb2NjOntlaWQ6Itin2YTYudmK2K8iLGJpcnRoZGF5OiLYudmK2K8g2YXZitmE2KfYryIsd2VkZGluZzoi2LLZiNin2KwiLGFubml2ZXJzYXJ5OiLYsNmD2LHZiSDYs9mG2YjZitipIixuZXdqb2I6ItmI2LjZitmB2KkgLyDYqtiu2LHZkdisIix0aGFua3lvdToi2LTZg9ix2KfZiyIsanVzdGJlY2F1c2U6Itio2YTYpyDZhdmG2KfYs9io2KkifSwKICAgIGludDp7dGVjaDoi2KrZgtmG2YrYqSDZiNmF2YPYqtioIix0cmF2ZWw6Itiz2YHYsSDZiNit2YXZhCIsbWluaW1hbDoi2KjYs9in2LfYqSDZitmI2YXZitipIix0cmVuZHk6Iti52LXYsdmKINmI2YXZhNmI2ZHZhiIsaG9tZToi2YXZhtiy2YQg2YjYr9mB2KEifSwKICAgIGJ1ZDp7IjEyMCI6Itit2KrZiSAxMjAg2K8u2KUiLCIzMDAiOiIxMjDigJMzMDAg2K8u2KUiLCI2MDAiOiIzMDDigJM2MDAg2K8u2KUiLCIxMjAwIjoi2KPZg9ir2LEg2YXZhiA2MDAg2K8u2KUifSB9OwoKICB2YXIgTVNHPXsgZWlkOntlbjoiRWlkIE11YmFyYWt7bmFtZX0hIEEgbGl0dGxlIHNvbWV0aGluZyBjaG9zZW4gd2l0aCB5b3UgaW4gbWluZCDigJQgd2lzaGluZyB5b3Ugam95IHRoaXMgc2Vhc29uLiIsYXI6Iti52YrYryDZhdio2KfYsdmDe25hbWV9ISDZh9iv2YrYqSDYp9iu2KrYsdmG2KfZh9inINmF2YYg2KfZhNmC2YTYqCDigJQg2YPZhCDYudin2YUg2YjYo9mG2KrZhSDYqNiu2YrYsS4ifSwKICAgIGJpcnRoZGF5OntlbjoiSGFwcHkgQmlydGhkYXl7bmFtZX0hIEhlcmXigJlzIGEgbGl0dGxlIHNvbWV0aGluZyB0byBtYWtlIHlvdXIgZGF5LiIsYXI6ItmD2YQg2LnYp9mFINmI2KPZhtiqINio2K7Zitixe25hbWV9ISDZh9iv2YrYqSDYqNiz2YrYt9ipINio2YXZhtin2LPYqNipINmK2YjZhSDZhdmK2YTYp9iv2YMuIn0sCiAgICB3ZWRkaW5nOntlbjoiV2lzaGluZyB5b3UgYm90aCBhIGxpZmV0aW1lIG9mIGhhcHBpbmVzcyDigJQgd2l0aCBsb3ZlLiIsYXI6Itij2YTZgSDZhdio2LHZiNmDISDZhtiq2YXZhtmJINmE2YPZhdinINit2YrYp9ip2Ysg2YXZhNmK2KbYqSDYqNin2YTYs9i52KfYr9ipLiJ9LAogICAgYW5uaXZlcnNhcnk6e2VuOiJIYXBweSBhbm5pdmVyc2FyeXtuYW1lfSDigJQgaGVyZeKAmXMgdG8gbWFueSBtb3JlLiIsYXI6Itiw2YPYsdmJINiz2LnZitiv2Kl7bmFtZX0g4oCUINil2YTZiSDYp9mE2YXYstmK2K8g2YXZhiDYp9mE2LPZhtmI2KfYqiDYp9mE2KzZhdmK2YTYqS4ifSwKICAgIG5ld2pvYjp7ZW46IkNvbmdyYXR1bGF0aW9uc3tuYW1lfSEgT253YXJkcyBhbmQgdXB3YXJkcyDigJQgeW914oCZdmUgZWFybmVkIGl0LiIsYXI6ItmF2KjYsdmI2YN7bmFtZX0hINil2YTZiSDYp9mE2KPZhdin2YUg2K\/Yp9im2YXYp9mLIOKAlCDYqtiz2KrYrdmCINiw2YTZgy4ifSwKICAgIHRoYW5reW91OntlbjoiVGhhbmsgeW91e25hbWV9IOKAlCBhIHNtYWxsIHRva2VuIG9mIGFwcHJlY2lhdGlvbi4iLGFyOiLYtNmD2LHYp9mLINmE2YN7bmFtZX0g4oCUINmE2YHYqtipINio2LPZiti32Kkg2KrZgtiv2YrYsdin2Ysg2YTZgy4ifSwKICAgIGp1c3RiZWNhdXNlOntlbjoiVGhpbmtpbmcgb2YgeW91e25hbWV9IOKAlCBqdXN0IGJlY2F1c2UuIixhcjoi2KrYsNmD2ZHYsdiq2YN7bmFtZX0g4oCUINio2YTYpyDZhdmG2KfYs9io2KnYjCDZgdmC2Lcg2YTYo9mG2YMg2KrYs9iq2K3Zgi4ifSwKICAgIGNvcnBvcmF0ZTp7ZW46IldpdGggb3VyIGNvbXBsaW1lbnRze25hbWV9LCBhbmQgYXBwcmVjaWF0aW9uIGZvciB5b3VyIGNvbnRpbnVlZCBwYXJ0bmVyc2hpcC4iLGFyOiLZhdi5INiu2KfZhNi1INiq2K3Zitin2KrZhtine25hbWV9INmI2KrZgtiv2YrYsdmG2Kcg2YTYqti52KfZiNmG2YPZhSDYp9mE2YXYs9iq2YXYsS4ifSB9OwoKICB2YXIgVD17IGVuOnt0aXRsZToiQnVpbGQgdGhlIHBlcmZlY3QgZ2lmdCBpbiAyMCBzZWNvbmRzIixzdWI6IkFuc3dlciBhIGZldyBxdWljayBxdWVzdGlvbnMgYW5kIG91ciBjb25jaWVyZ2Ugc3RhcnRzIGEgZ2lmdCBidW5kbGUgdGhleeKAmWxsIGxvdmUg4oCUIHRoZW4gYWRkLCBzd2FwIG9yIHJlbW92ZSBhbnl0aGluZywgYW5kIHNlbmQgaXQgdG8gdGhlIGJhZyBpbiBvbmUgY2xpY2suIiwKICAgICAgcV93aG86Ildob+KAmXMgaXQgZm9yPyIscV9vY2M6IldoYXTigJlzIHRoZSBvY2Nhc2lvbj8iLHFfaW50OiJXaGF0IGFyZSB0aGV5IGludG8\/IixvcHRpb25hbDoiKG9wdGlvbmFsLCBwaWNrIGFueSkiLHFfYnVkOiJCdWRnZXQ\/IixxX25hbWU6IlRoZWlyIG5hbWUiLG9wdGlvbmFsMjoiKG9wdGlvbmFsIOKAlCBmb3IgdGhlIGdpZnQgbm90ZSkiLG5hbWU6ImUuZy4gU2FyYSIscmV2ZWFsOiJCdWlsZCB0aGUgZ2lmdCIsCiAgICAgIHJlc190aXRsZToiVGhlaXIgZ2lmdCBidW5kbGUiLHJlc19zdWI6IldlIHN0YXJ0ZWQgaXQgZm9yIHlvdSDigJQgYWRkLCBzd2FwIG9yIHJlbW92ZSBhbnl0aGluZyBiZWxvdy4iLHlvdXJidW5kbGU6IkdpZnQgYnVuZGxlIixnaWZ0bm90ZToiR2lmdCBub3RlIixlZGl0YWJsZToi4pyOIGVkaXRhYmxlIixjb3B5OiJDb3B5Iixjb3BpZWQ6IkNvcGllZCDinJMiLAogICAgICBhZGRtb3JlOiJBZGQgbW9yZSB0byB0aGUgZ2lmdCIsc3VnZ2VzdGVkOiJTdWdnZXN0ZWQiLGFkZGFsbDoiQWRkIGJ1bmRsZSB0byBiYWciLGFkZGluZzoiQWRkaW5n4oCmIixhZGRlZG9rOiJBZGRlZCDinJMgb3BlbmluZyBiYWfigKYiLGFub3RoZXI6IkZyZXNoIGlkZWEiLHN0YXJ0b3ZlcjoiU3RhcnQgb3ZlciIsc2hvcGFsbDoiQnJvd3NlIGV2ZXJ5dGhpbmcg4oaSIiwKICAgICAgdmlldzoiVmlldyIsYWRkOiJBZGQiLGFkZGVkOiJBZGRlZCIsZGVsaXY6IkVzdGltYXRlZCBkZWxpdmVyeSIsYXJyaXZlc2J5OiJZb3VyIGdpZnQgYXJyaXZlcyBieSIsZm9vdDE6IkN1cmF0ZWQgZnJvbSBLbGlwcGlLIMK3IFByaWNlcyBpbiBBRUQiLGZvb3QyOiJJbi1jb3VudHJ5IHN0b2NrIMK3IENhc2ggb24gZGVsaXZlcnkgaW4gdGhlIFVBRSIsCiAgICAgIHVuZGVyOiJ7eH0gdW5kZXIgYnVkZ2V0IixvdmVyOiJ7eH0gb3ZlciBidWRnZXQiLG9uYnVkZ2V0OiJPbiBidWRnZXQiLGl0ZW1zOiJpdGVtcyIsaXRlbToiaXRlbSIsCiAgICAgIG1vcmVvbjoiTW9yZSBpbiB0aGlzIGNhdGVnb3J5IG9uIGtsaXBwaWsuY29tIixlbXB0eToiWW91ciBidW5kbGUgaXMgZW1wdHkg4oCUIGFkZCBzb21ldGhpbmcgYmVsb3cuIixsb2FkaW5nOiJMb2FkaW5n4oCmIiwKICAgICAgZGVtb2FkZDoiT24ga2xpcHBpay5jb20gdGhpcyBhZGRzIHRoZSB3aG9sZSBidW5kbGUgdG8gdGhlIGNhcnQgaW4gb25lIGNsaWNrLiBJbiB0aGlzIGRlbW8sIHVzZSDigJxWaWV34oCdIG9uIGFuIGl0ZW0gdG8gb3BlbiBpdCBvbiB0aGUgbGl2ZSBzdG9yZS4iLAogICAgICBob3dtYW55OiJIb3cgbWFueSBvZiB0aGlzIGdpZnQ\/IixjdXN0b206IkN1c3RvbSIscGVyc2V0OiJQZXIgZ2lmdCIscXVvdGU6IlJlcXVlc3QgYSBxdW90ZSIsdmlld2JhZzoiVmlldyBiYWcg4oaSIixrZWVwOiJLZWVwIGJ1aWxkaW5nIixhZGRlZG46IntufSBhZGRlZCB0byB5b3VyIGJhZyDinJMiLHNvbWVmYWlsOiJDb3VsZG7igJl0IGFkZCAob3V0IG9mIHN0b2NrPyk6IHt4fSIsYWRkZmFpbDoiQ291bGRu4oCZdCByZWFjaCB0aGUgY2FydCDigJQgcGxlYXNlIHRyeSBhZ2Fpbi4iLG9yZW1haWw6Im9yIGVtYWlsIixxc2VudDoiT3BlbmluZyBXaGF0c0FwcCB3aXRoIHlvdXIgZW5xdWlyeeKApiIsCiAgICAgIGFpX2w6IkRlc2NyaWJlIHRoZW0gYW5kIEFJIHBpY2tzIHRoZSBnaWZ0IChvcHRpb25hbCkiLGFpX3BoOiJlLmcuIG15IGJyb3RoZXIsIDI4IOKAlCB0cmF2ZWxzIGZvciB3b3JrLCBtaW5pbWFsaXN0LCBvYnNlc3NlZCB3aXRoIGhpcyBkZXNrIHNldHVwIixhaV9oaW50OiJPciBqdXN0IGFuc3dlciB0aGUgcXVpY2sgcXVlc3Rpb25zIGJlbG93LiIsYWlfZ286IkJ1aWxkIHdpdGggQUkiLGFpX3RoaW5raW5nOiJUaGlua2luZ+KApiIsCiAgICAgIGRlbW86IkxpdmUgZGVtbyB3aXRoIGEgcmVhbCBzYW1wbGUgb2YgdGhlIHJhbmdlLiBPbiBrbGlwcGlrLmNvbSB0aGUgY29uY2llcmdlIGRyYXdzIGZyb20geW91ciBmdWxsIGxpdmUgY2F0YWxvZ3VlIOKAlCBldmVyeSBpbi1zdG9jayBpdGVtIOKAlCB3aXRoIHBob3RvcywgbGl2ZSBwcmljZXMgYW5kIG9uZS1jbGljayBhZGQgdG8gY2FydC4iIH0sCiAgICBhcjp7dGl0bGU6ItmD2YjZkdmGINin2YTZh9iv2YrYqSDYp9mE2YXYq9in2YTZitipINmB2YogMjAg2KvYp9mG2YrYqSIsc3ViOiLYo9is2Kgg2LnZhiDYqNi22LnYqSDYo9iz2KbZhNipINiz2LHZiti52Kkg2YjZitio2K\/YoyDZhNmDINin2YTZg9mI2YbYs9mK2LHYrCDYt9mC2YUg2YfYr9mK2Kkg2YrYrdio2ZHZiNmG2Ycg4oCUINir2YUg2KPYttmBINij2Ygg2KfYs9iq2KjYr9mEINij2Ygg2KfYrdiw2YEg2YXYpyDYqti02KfYodiMINmI2KPYsdiz2YTZhyDYpdmE2Ykg2KfZhNiz2YTYqSDYqNmG2YLYsdipINmI2KfYrdiv2KkuIiwKICAgICAgcV93aG86ItmE2YXZhiDYp9mE2YfYr9mK2KnYnyIscV9vY2M6ItmF2Kcg2KfZhNmF2YbYp9iz2KjYqdifIixxX2ludDoi2YXYpyDYp9mH2KrZhdin2YXYp9iq2YfZhdifIixvcHRpb25hbDoiKNin2K7YqtmK2KfYsdmK2Iwg2KfYrtiq2LEg2YXYpyDZitmG2KfYs9ioKSIscV9idWQ6Itin2YTZhdmK2LLYp9mG2YrYqdifIixxX25hbWU6Itin2YTYp9iz2YUiLG9wdGlvbmFsMjoiKNin2K7YqtmK2KfYsdmKIOKAlCDZhNio2LfYp9mC2Kkg2KfZhNil2YfYr9in2KEpIixuYW1lOiLZhdir2KfZhDog2LPYp9ix2KkiLHJldmVhbDoi2YPZiNmR2YYg2KfZhNmH2K\/ZitipIiwKICAgICAgcmVzX3RpdGxlOiLYt9mC2YUg2YfYr9mK2KrZh9mFIixyZXNfc3ViOiLYqNiv2KPZhtin2Ycg2YTZgyDigJQg2KPYttmBINij2Ygg2KfYs9iq2KjYr9mEINij2Ygg2KfYrdiw2YEg2YXYpyDYqti02KfYoSDZhdmGINin2YTYo9iz2YHZhC4iLHlvdXJidW5kbGU6Iti32YLZhSDYp9mE2YfYr9mK2KkiLGdpZnRub3RlOiLYqNi32KfZgtipINin2YTYpdmH2K\/Yp9ihIixlZGl0YWJsZToi4pyOINmC2KfYqNmE2Kkg2YTZhNiq2LnYr9mK2YQiLGNvcHk6ItmG2LPYriIsY29waWVkOiLYqtmFINin2YTZhtiz2K4g4pyTIiwKICAgICAgYWRkbW9yZToi2KPYttmBINin2YTZhdiy2YrYryDZhNmE2YfYr9mK2KkiLHN1Z2dlc3RlZDoi2YXZgtiq2LHYrdipIixhZGRhbGw6Itij2LbZgSDYp9mE2LfZgtmFINmE2YTYs9mE2KkiLGFkZGluZzoi2KzYp9ix2Y0g2KfZhNil2LbYp9mB2KnigKYiLGFkZGVkb2s6Itiq2YXYqiDYp9mE2KXYttin2YHYqSDinJMg2KzYp9ix2Y0g2YHYqtitINin2YTYs9mE2KnigKYiLGFub3RoZXI6ItmB2YPYsdipINij2K7YsdmJIixzdGFydG92ZXI6Itin2KjYr9ijINmF2YYg2KzYr9mK2K8iLHNob3BhbGw6Itiq2LXZgdmR2K0g2YPZhCDYp9mE2YXZhtiq2KzYp9iqIOKGkCIsCiAgICAgIHZpZXc6Iti52LHYtiIsYWRkOiLYo9i22YEiLGFkZGVkOiLZhdi22KfZgSIsZGVsaXY6Itin2YTYqtmI2LXZitmEINin2YTZhdiq2YjZgti5IixhcnJpdmVzYnk6Itiq2LXZhCDZh9iv2YrYqtmDINio2K3ZhNmI2YQiLGZvb3QxOiLZhdiu2KrYp9ix2Kkg2YXZhiBLbGlwcGlLIMK3INin2YTYo9iz2LnYp9ixINio2KfZhNiv2YrZhtin2LEg2KfZhNmD2YjZitiq2YoiLGZvb3QyOiLZhdiu2LLZiNmGINiv2KfYrtmEINin2YTYqNmE2K8gwrcg2KfZhNiv2YHYuSDYudmG2K8g2KfZhNin2LPYqtmE2KfZhSDZgdmKINin2YTZg9mI2YrYqiIsCiAgICAgIHVuZGVyOiLYo9mC2YQg2YXZhiDYp9mE2YXZitiy2KfZhtmK2Kkg2KjZgCB7eH0iLG92ZXI6Itij2LnZhNmJINmF2YYg2KfZhNmF2YrYstin2YbZitipINio2YAge3h9IixvbmJ1ZGdldDoi2YXYt9in2KjZgiDZhNmE2YXZitiy2KfZhtmK2KkiLGl0ZW1zOiLZgti32LkiLGl0ZW06ItmC2LfYudipIiwKICAgICAgbW9yZW9uOiLYp9mE2YXYstmK2K8g2YXZhiDZh9iw2Ycg2KfZhNmB2KbYqSDYudmE2Ykga2xpcHBpay5jb20iLGVtcHR5OiLYp9mE2LfZgtmFINmB2KfYsdi6IOKAlCDYo9i22YEg2YLYt9i52Kkg2YXZhiDYp9mE2KPYs9mB2YQuIixsb2FkaW5nOiLYrNin2LHZjSDYp9mE2KrYrdmF2YrZhOKApiIsCiAgICAgIGRlbW9hZGQ6Iti52YTZiSBrbGlwcGlrLmNvbSDZiti22YrZgSDYp9mE2LfZgtmFINmD2KfZhdmE2KfZiyDYpdmE2Ykg2KfZhNiz2YTYqSDYqNmG2YLYsdipINmI2KfYrdiv2KkuINmB2Yog2YfYsNinINin2YTYudix2LbYjCDYp9iz2KrYrtiv2YUgwqvYudix2LbCuyDZhNmB2KrYrSDYp9mE2YXZhtiq2Kwg2LnZhNmJINin2YTZhdiq2KzYsS4iLAogICAgICBob3dtYW55OiLZg9mFINi52K\/YryDZhtiz2K4g2YfYsNmHINin2YTZh9iv2YrYqdifIixjdXN0b206ItmF2K7Ytdi1IixwZXJzZXQ6Itiz2LnYsSDYp9mE2LfZgtmFIixxdW90ZToi2KfYt9mE2Kgg2LnYsdi2INiz2LnYsSIsdmlld2JhZzoi2LnYsdi2INin2YTYs9mE2Kkg4oaQIixrZWVwOiLZhdiq2KfYqNi52Kkg2KfZhNiq2YPZiNmK2YYiLGFkZGVkbjoi2KrZhdiqINil2LbYp9mB2Kkge259INil2YTZiSDYs9mE2KrZgyDinJMiLHNvbWVmYWlsOiLYqti52LDZkdix2Kog2KXYttin2YHYqSAo2LrZitixINmF2KrZiNmB2LHYnyk6IHt4fSIsYWRkZmFpbDoi2KrYudiw2ZHYsSDYp9mE2YjYtdmI2YQg2KXZhNmJINin2YTYs9mE2Kkg4oCUINit2KfZiNmEINmF2LHYqSDYo9iu2LHZiS4iLG9yZW1haWw6Itij2Ygg2LHYp9iz2YTZhtinINi52YTZiSIscXNlbnQ6Itis2KfYsdmNINmB2KrYrSDZiNin2KrYs9in2Kgg2KjYsdiz2KfZhNiq2YPigKYiLAogICAgICBhaV9sOiLYtdmQ2YEg2KfZhNi02K7YtSDZiNiv2Lkg2KfZhNiw2YPYp9ihINin2YTYp9i12LfZhtin2LnZiiDZitiu2KrYp9ixINin2YTZh9iv2YrYqSAo2KfYrtiq2YrYp9ix2YopIixhaV9waDoi2YXYq9in2YQ6INij2K7ZitiMIDI4INi52KfZhdin2Ysg4oCUINmK2LPYp9mB2LEg2YTZhNi52YXZhNiMINio2LPZiti32Iwg2YXZh9mI2YjYsyDYqNmF2YPYqtio2YciLGFpX2hpbnQ6Itij2Ygg2KPYrNioINi52YYg2KfZhNij2LPYptmE2Kkg2KfZhNiz2LHZiti52Kkg2KjYp9mE2KPYs9mB2YQuIixhaV9nbzoi2YPZiNmR2YYg2KjYp9mE2LDZg9in2KEg2KfZhNin2LXYt9mG2KfYudmKIixhaV90aGlua2luZzoi2KzYp9ix2Y0g2KfZhNiq2YHZg9mK2LHigKYiLAogICAgICBkZW1vOiLYudix2LYg2KrYrNix2YrYqNmKINio2LnZitmR2YbYqSDYrdmC2YrZgtmK2Kkg2YXZhiDYp9mE2KrYtNmD2YrZhNipLiDYudmE2Ykga2xpcHBpay5jb20g2YrYrtiq2KfYsSDYp9mE2YPZiNmG2LPZitix2Kwg2YXZhiDYp9mE2YPYqtin2YTZiNisINin2YTZg9in2YXZhCDigJQg2YPZhCDZgti32LnYqSDZhdiq2YjZgdix2Kkg4oCUINmF2Lkg2KfZhNi12YjYsSDZiNin2YTYo9iz2LnYp9ixINin2YTYrdmK2ZHYqSDZiNil2LbYp9mB2Kkg2KjZhtmC2LHYqSDZiNin2K3Yr9ipLiIgfSB9OwoKICB2YXIgQ0FUQ09MT1I9e2JhZ3M6IiMzZjViNzQiLGhvbWU6IiM4YTVhNDQiLGRlc2s6IiM0YTRhNGEiLHNtYWxsOiIjNmE2YTU1IixjYXNlczoiIzNmNTU2NiIsd2FsbGV0czoiIzZiNGY0MyIsd2F0Y2g6IiM0YTRhNGEifTsKICB2YXIgSUNPTj17IGJhZ3M6JzxwYXRoIGQ9Ik02IDhoMTJsMSAxMkg1TDYgOHoiLz48cGF0aCBkPSJNOSA4VjZhMyAzIDAgMCAxIDYgMHYyIi8+Jyxob21lOic8cGF0aCBkPSJNNCAxMWw4LTYgOCA2Ii8+PHBhdGggZD0iTTYgMTB2OWgxMnYtOSIvPicsZGVzazonPHJlY3QgeD0iMyIgeT0iNiIgd2lkdGg9IjE4IiBoZWlnaHQ9IjEyIiByeD0iMSIvPjxwYXRoIGQ9Ik0zIDE1aDE4Ii8+JyxzbWFsbDonPGNpcmNsZSBjeD0iOCIgY3k9IjgiIHI9IjMiLz48cGF0aCBkPSJNMTAgMTBsNyA3LTIgMi03LTciLz4nLGNhc2VzOic8cmVjdCB4PSI0IiB5PSI0IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHJ4PSIyIi8+PHBhdGggZD0iTTkgNHYxNiIvPicsd2FsbGV0czonPHJlY3QgeD0iMyIgeT0iNiIgd2lkdGg9IjE4IiBoZWlnaHQ9IjEyIiByeD0iMiIvPjxwYXRoIGQ9Ik0xNiAxMmgzIi8+Jyx3YXRjaDonPHJlY3QgeD0iOCIgeT0iOCIgd2lkdGg9IjgiIGhlaWdodD0iOCIgcng9IjIiLz48cGF0aCBkPSJNMTAgOFY1aDR2M00xMCAxNnYzaDR2LTMiLz4nIH07CgogIHZhciBJU19MSVZFPUNPTkZJRy5saXZlSG9zdHMuc29tZShmdW5jdGlvbihoKXtyZXR1cm4gbG9jYXRpb24uaG9zdG5hbWUuaW5kZXhPZihoKSE9PS0xO30pOwogIHZhciBzdD17bGFuZzoiZW4iLHdobzpudWxsLG9jYzpudWxsLGludHM6W10sYnVkOm51bGwsbmFtZToiIixzYWx0OjAsYnVuZGxlOltdLG1vcmVDYXQ6InN1Z2dlc3RlZCIscXR5OjEsZGVzYzoiIixhaU5vdGU6bnVsbCxub3RlRWRpdGVkOmZhbHNlfTsKICB2YXIgcG9vbENhY2hlPXt9OwogIHZhciByb290PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJra2ciKTsKICB2YXIgJD1mdW5jdGlvbihpZCl7cmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTt9OwogIGZ1bmN0aW9uIHRyKGspeyB2YXIgdj1UW3N0LmxhbmddJiZUW3N0LmxhbmddW2tdOyBpZih2PT09dW5kZWZpbmVkKXY9VC5lbltrXTsgcmV0dXJuIHY9PT11bmRlZmluZWQ\/azp2OyB9CiAgZnVuY3Rpb24gbW9uZXkodil7cmV0dXJuIENPTkZJRy5jdXJyZW5jeSsiICIrTnVtYmVyKHYpLnRvRml4ZWQoQ09ORklHLm1pbm9yVW5pdCk7fQogIGZ1bmN0aW9uIGRlbnQocyl7dmFyIGQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGV4dGFyZWEiKTtkLmlubmVySFRNTD1zO3JldHVybiBkLnZhbHVlO30KICBmdW5jdGlvbiBlc2Mocyl7cmV0dXJuIFN0cmluZyhzKS5yZXBsYWNlKC9bJjw+Il0vZyxmdW5jdGlvbihtKXtyZXR1cm57IiYiOiImYW1wOyIsIjwiOiImbHQ7IiwiPiI6IiZndDsiLCciJzoiJnF1b3Q7In1bbV07fSk7fQoKICBmdW5jdGlvbiBsYWJlbChnLHZhbCxlbil7IHJldHVybiBzdC5sYW5nPT09ImFyIiA\/IChPUFRTX0FSW2ddW3ZhbF18fGVuKSA6IGVuOyB9CiAgZnVuY3Rpb24gYnVpbGRPcHRzKCl7CiAgICBbIndobyIsIm9jYyIsImludCIsImJ1ZCJdLmZvckVhY2goZnVuY3Rpb24oZyl7CiAgICAgICQoIm9wdC0iK2cpLmlubmVySFRNTD1PUFRTW2ddLm1hcChmdW5jdGlvbihvKXsKICAgICAgICB2YXIgcHJlc3NlZCA9IGc9PT0iaW50IiA\/IHN0LmludHMuaW5kZXhPZihvWzBdKT49MCA6IChzdFtnPT09Im9jYyI\/Im9jYyI6Zz09PSJidWQiPyJidWQiOiJ3aG8iXT09PW9bMF0pOwogICAgICAgIHJldHVybiAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJra2ctb3B0IiBkYXRhLWc9IicrZysnIiBkYXRhLXY9Iicrb1swXSsnIiBhcmlhLXByZXNzZWQ9IicrKHByZXNzZWQ\/InRydWUiOiJmYWxzZSIpKyciPicrZXNjKGxhYmVsKGcsb1swXSxvWzFdKSkrJzwvYnV0dG9uPic7CiAgICAgIH0pLmpvaW4oIiIpOwogICAgfSk7CiAgfQogIGZ1bmN0aW9uIG9uT3B0KGJ0bil7IHZhciBnPWJ0bi5kYXRhc2V0Lmcsdj1idG4uZGF0YXNldC52OwogICAgaWYoZz09PSJpbnQiKXsgdmFyIGk9c3QuaW50cy5pbmRleE9mKHYpOyBpZihpPj0wKXN0LmludHMuc3BsaWNlKGksMSk7IGVsc2Ugc3QuaW50cy5wdXNoKHYpOyB9CiAgICBlbHNlIGlmKGc9PT0id2hvIilzdC53aG89djsgZWxzZSBpZihnPT09Im9jYyIpc3Qub2NjPXY7IGVsc2UgaWYoZz09PSJidWQiKXN0LmJ1ZD12OwogICAgYnVpbGRPcHRzKCk7IHZhciBfZD0oc3QuZGVzY3x8IiIpLnRyaW0oKTsgJCgia2tnLWdvIikuZGlzYWJsZWQ9ISgoc3Qud2hvJiZzdC5vY2MmJnN0LmJ1ZCl8fF9kKTsKICB9CgogIGZ1bmN0aW9uIHdlaWdodHMoKXsgdmFyIHc9e307IE9iamVjdC5rZXlzKEJBU0UpLmZvckVhY2goZnVuY3Rpb24oayl7d1trXT1CQVNFW2tdO30pOwogICAgaWYoc3QuaW50cy5sZW5ndGgpeyBPYmplY3Qua2V5cyh3KS5mb3JFYWNoKGZ1bmN0aW9uKGspe3dba109MDt9KTsgc3QuaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGl0KXsgdmFyIG09SVdbaXRdfHx7fTsgT2JqZWN0LmtleXMobSkuZm9yRWFjaChmdW5jdGlvbihrKXt3W2tdPSh3W2tdfHwwKSttW2tdO30pOyB9KTsgfQogICAgW09DQ19OVURHRVtzdC5vY2NdLFdIT19OVURHRVtzdC53aG9dXS5mb3JFYWNoKGZ1bmN0aW9uKG0peyBpZihtKSBPYmplY3Qua2V5cyhtKS5mb3JFYWNoKGZ1bmN0aW9uKGspe3dba109KHdba118fDApK21ba107fSk7IH0pOwogICAgaWYoc3Qud2hvPT09ImNvcnBvcmF0ZSIpeyB3LmhvbWU9MDsgdy53YXRjaD0wOyB3LnNtYWxsPU1hdGgubWluKHcuc21hbGx8fDAsMSk7IH0KICAgIHJldHVybiB3OyB9CgogIC8qIC0tLS0gZGF0YTogcGFnaW5hdGUgQUxMIGluLXN0b2NrIHVuaXRzIHBlciBjYXRlZ29yeSAtLS0tICovCiAgZnVuY3Rpb24gbWFwTGl2ZShwLGspewogICAgdmFyIGNvbG91cj0iIjsgKHAuYXR0cmlidXRlc3x8W10pLmZvckVhY2goZnVuY3Rpb24oYSl7IGlmKGEudGF4b25vbXk9PT0icGFfY29sb3IiKSBjb2xvdXI9KGEudGVybXN8fFtdKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQubmFtZTt9KS5qb2luKCItIik7IH0pOwogICAgdmFyIG5tPWRlbnQocC5uYW1lfHwiIikucmVwbGFjZSgvXHMqXChbXildKlwpLywiIikucmVwbGFjZSgvXHMqXHwuKiQvLCIiKS5yZXBsYWNlKC8mIzgyMTE7fCYjODIxMjsvZywi4oCUIikucmVwbGFjZSgvJiM4MjE3Oy9nLCLigJkiKS5yZXBsYWNlKC8mYW1wOy9nLCImIikudHJpbSgpOwogICAgdmFyIG51PS9ibGFja3x0YW58Z3JleXxncmF5fG5hdnl8YmVpZ2V8YnJvd258d2hpdGUvaS50ZXN0KGNvbG91cil8fGNvbG91cj09PSIiOwogICAgdmFyIHByaWNlPTAsIHJlZz0wOyB0cnl7IHZhciBtdT1NYXRoLnBvdygxMCwrcC5wcmljZXMuY3VycmVuY3lfbWlub3JfdW5pdCk7IHByaWNlPXBhcnNlSW50KHAucHJpY2VzLnByaWNlLDEwKS9tdTsgcmVnPXBhcnNlSW50KHAucHJpY2VzLnJlZ3VsYXJfcHJpY2UsMTApL211OyB9Y2F0Y2goZSl7fQogICAgcmV0dXJuIHtpZDpwLmlkLG46bm0uc2xpY2UoMCw1MiksazprLHA6cHJpY2UscnA6cmVnLG9zOihwLm9uX3NhbGU9PT10cnVlJiZyZWc+cHJpY2UrMC4wMDA1KSxjOmNvbG91cixudTpudT8xOjAsdTpwLnBlcm1hbGluayxpbWc6KHAuaW1hZ2VzJiZwLmltYWdlc1swXT9wLmltYWdlc1swXS5zcmM6bnVsbCksc3RvY2s6cC5pc19pbl9zdG9jayE9PWZhbHNlLGJvOnAuaXNfb25fYmFja29yZGVyPT09dHJ1ZX07CiAgfQogIGZ1bmN0aW9uIHByaWNlSFRNTCh4KXsKICAgIGlmKHgub3MgJiYgeC5ycD54LnArMC4wMDA1KXsgdmFyIHBjdD1NYXRoLnJvdW5kKCgxLXgucC94LnJwKSoxMDApOyByZXR1cm4gbW9uZXkoeC5wKSsnIDxzcGFuIGNsYXNzPSJra2ctd2FzIj4nK21vbmV5KHgucnApKyc8L3NwYW4+PHNwYW4gY2xhc3M9ImtrZy1zYXZlIj4tJytwY3QrJyU8L3NwYW4+JzsgfQogICAgcmV0dXJuIG1vbmV5KHgucCk7CiAgfQoKICAvKiAtLS0tIGRlbGl2ZXJ5IGVzdGltYXRlIChtaXJyb3JzIHRoZSBwcm9kdWN0LXBhZ2UgIkVzdGltYXRlZCBkZWxpdmVyeSIgd2luZG93KSAtLS0tICovCiAgdmFyIE1PTlRIUz17IGVuOlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl0sCiAgICAgICAgICAgICAgIGFyOlsi2YrZhtin2YrYsSIsItmB2KjYsdin2YrYsSIsItmF2KfYsdizIiwi2KPYqNix2YrZhCIsItmF2KfZitmIIiwi2YrZiNmG2YrZiCIsItmK2YjZhNmK2YgiLCLYo9i62LPYt9izIiwi2LPYqNiq2YXYqNixIiwi2KPZg9iq2YjYqNixIiwi2YbZiNmB2YXYqNixIiwi2K\/Zitiz2YXYqNixIl0gfTsKICBmdW5jdGlvbiBkZWxpdmVyeVJhbmdlKGJvKXsKICAgIHZhciBvPShibz9DT05GSUcuZGVsaXZlcnkuYmFja29yZGVyOkNPTkZJRy5kZWxpdmVyeS5zdG9jayl8fFswLDFdOwogICAgdmFyIGE9bmV3IERhdGUoKTsgYS5zZXREYXRlKGEuZ2V0RGF0ZSgpKygrb1swXSkpOyB2YXIgYj1uZXcgRGF0ZSgpOyBiLnNldERhdGUoYi5nZXREYXRlKCkrKCtvWzFdKSk7CiAgICB2YXIgTT1NT05USFNbc3QubGFuZ118fE1PTlRIUy5lbjsKICAgIGlmKGEuZ2V0TW9udGgoKT09PWIuZ2V0TW9udGgoKSAmJiBhLmdldERhdGUoKT09PWIuZ2V0RGF0ZSgpKSByZXR1cm4gTVthLmdldE1vbnRoKCldKyIgIithLmdldERhdGUoKTsKICAgIGlmKGEuZ2V0TW9udGgoKT09PWIuZ2V0TW9udGgoKSkgcmV0dXJuIE1bYS5nZXRNb250aCgpXSsiICIrYS5nZXREYXRlKCkrIuKAkyIrYi5nZXREYXRlKCk7CiAgICByZXR1cm4gTVthLmdldE1vbnRoKCldKyIgIithLmdldERhdGUoKSsiIOKAkyAiK01bYi5nZXRNb250aCgpXSsiICIrYi5nZXREYXRlKCk7CiAgfQogIGZ1bmN0aW9uIGRlbGl2SFRNTCh4KXsKICAgIGlmKHguYm89PT11bmRlZmluZWQpIHJldHVybiAiIjsKICAgIHJldHVybiAnPHNwYW4gY2xhc3M9ImtrZy1kZWxpdicrKHguYm8\/IiI6IiBmYXN0IikrJyIgdGl0bGU9IicrZXNjKHRyKCJkZWxpdiIpKSsnIj48c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjExIiBoZWlnaHQ9IjExIiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjciIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHJlY3QgeD0iMSIgeT0iNiIgd2lkdGg9IjEzIiBoZWlnaHQ9IjkiIHJ4PSIxIi8+PHBhdGggZD0iTTE0IDloNGwzIDN2M2gtN3oiLz48Y2lyY2xlIGN4PSI2IiBjeT0iMTcuNSIgcj0iMS40Ii8+PGNpcmNsZSBjeD0iMTciIGN5PSIxNy41IiByPSIxLjQiLz48L3N2Zz48c3BhbiBkaXI9Imx0ciI+Jytlc2MoZGVsaXZlcnlSYW5nZSh4LmJvKSkrJzwvc3Bhbj48L3NwYW4+JzsgfQogIGZ1bmN0aW9uIGZldGNoQ2F0KGssY2IpewogICAgaWYocG9vbENhY2hlW2tdKSByZXR1cm4gY2IocG9vbENhY2hlW2tdKTsKICAgIGlmKCFJU19MSVZFKXsgcG9vbENhY2hlW2tdPVNFRUQuZmlsdGVyKGZ1bmN0aW9uKHgpe3JldHVybiB4Lms9PT1rO30pOyByZXR1cm4gY2IocG9vbENhY2hlW2tdKTsgfQogICAgdmFyIGJhc2U9Q09ORklHLnN0b3JlQmFzZXx8IiIsIHBlcj0xMDAsIGFsbD1bXTsKICAgIChmdW5jdGlvbiBwYWdlKHBnKXsKICAgICAgZmV0Y2goYmFzZSsiL3dwLWpzb24vd2Mvc3RvcmUvdjEvcHJvZHVjdHM\/Y2F0ZWdvcnk9IitDT05GSUcuY2F0SWRzW2tdKyImcGVyX3BhZ2U9IitwZXIrIiZwYWdlPSIrcGcrIiZvcmRlcmJ5PXBvcHVsYXJpdHkiLHtoZWFkZXJzOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24ifSxjcmVkZW50aWFsczoib21pdCJ9KQogICAgICAgIC50aGVuKGZ1bmN0aW9uKHIpe3JldHVybiByLm9rP3IuanNvbigpOltdO30pCiAgICAgICAgLnRoZW4oZnVuY3Rpb24oZCl7IGFsbD1hbGwuY29uY2F0KGQpOyBpZihkLmxlbmd0aD09PXBlciYmcGc8NSl7IHBhZ2UocGcrMSk7IH0gZWxzZSB7IHBvb2xDYWNoZVtrXT1hbGwubWFwKGZ1bmN0aW9uKHApe3JldHVybiBtYXBMaXZlKHAsayk7fSkuZmlsdGVyKGZ1bmN0aW9uKHgpe3JldHVybiB4LnN0b2NrO30pOyBjYihwb29sQ2FjaGVba10pOyB9IH0pCiAgICAgICAgLmNhdGNoKGZ1bmN0aW9uKCl7IHBvb2xDYWNoZVtrXT1TRUVELmZpbHRlcihmdW5jdGlvbih4KXtyZXR1cm4geC5rPT09azt9KTsgY2IocG9vbENhY2hlW2tdKTsgfSk7CiAgICB9KSgxKTsKICB9CiAgZnVuY3Rpb24gbG9hZENhdHMoa2V5cyxjYil7IHZhciBuZWVkPWtleXMuc2xpY2UoKSwgb3V0PVtdLCBkb25lPTA7IGlmKCFuZWVkLmxlbmd0aClyZXR1cm4gY2IoW10pOwogICAgbmVlZC5mb3JFYWNoKGZ1bmN0aW9uKGspeyBmZXRjaENhdChrLGZ1bmN0aW9uKGl0ZW1zKXsgb3V0PW91dC5jb25jYXQoaXRlbXMpOyBpZigrK2RvbmU9PT1uZWVkLmxlbmd0aCkgY2Iob3V0KTsgfSk7IH0pOyB9CgogIC8qIC0tLS0gYXNzZW1ibHkgLS0tLSAqLwogIGZ1bmN0aW9uIHJuZChzZWVkKXsgdmFyIHg9TWF0aC5zaW4oc2VlZCkqMTAwMDA7IHJldHVybiB4LU1hdGguZmxvb3IoeCk7IH0KICBmdW5jdGlvbiBhc3NlbWJsZShwb29sLHcsYnVkZ2V0LHNldFNpemUsc2FsdCl7CiAgICB2YXIgY29ycD1zdC53aG89PT0iY29ycG9yYXRlIjsKICAgIHZhciBzY29yZWQ9cG9vbC5maWx0ZXIoZnVuY3Rpb24oeCl7cmV0dXJuIHgucDw9YnVkZ2V0KzAuMDAxICYmICh3W3gua118fDApPjA7fSkubWFwKGZ1bmN0aW9uKHgpewogICAgICByZXR1cm4ge3g6eCxzOih3W3gua118fDApKjEwMCArIHgucCoxLjIgKyAoY29ycD94Lm51KjMwOjApICsgcm5kKHguaWQrc2FsdCo3LjMpKjE4fTsgfSkuc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBiLnMtYS5zO30pOwogICAgdmFyIGNob3Nlbj1bXSx0b3RhbD0wLGNhdHM9e307CiAgICBzY29yZWQuZm9yRWFjaChmdW5jdGlvbihvKXsgaWYoY2hvc2VuLmxlbmd0aD49c2V0U2l6ZXx8Y2F0c1tvLngua118fHRvdGFsK28ueC5wPmJ1ZGdldCswLjAwMSlyZXR1cm47IGNob3Nlbi5wdXNoKG8ueCk7IHRvdGFsKz1vLngucDsgY2F0c1tvLngua109MTsgfSk7CiAgICBpZihjaG9zZW4ubGVuZ3RoPHNldFNpemUpeyBzY29yZWQuZm9yRWFjaChmdW5jdGlvbihvKXsgaWYoY2hvc2VuLmxlbmd0aD49c2V0U2l6ZXx8Y2hvc2VuLmluZGV4T2Yoby54KT49MHx8dG90YWwrby54LnA+YnVkZ2V0KzAuMDAxKXJldHVybjsgY2hvc2VuLnB1c2goby54KTsgdG90YWwrPW8ueC5wOyB9KTsgfQogICAgaWYoIWNob3Nlbi5sZW5ndGgpeyB2YXIgY2hlYXA9cG9vbC5maWx0ZXIoZnVuY3Rpb24oeCl7cmV0dXJuIHgucDw9YnVkZ2V0KzAuMDAxO30pLnNvcnQoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5wLWIucDt9KVswXTsgaWYoY2hlYXApY2hvc2VuPVtjaGVhcF07IH0KICAgIHJldHVybiBjaG9zZW47IH0KICBmdW5jdGlvbiBzZXRTaXplRm9yKGIpeyBiPStiOyByZXR1cm4gYjw9MTIwPzE6Yjw9MzAwPzI6MzsgfQoKICBmdW5jdGlvbiBidWlsZEdpZnQoKXsKICAgIHN0LmFpTm90ZT1udWxsOyBzdC5ub3RlRWRpdGVkPWZhbHNlOwogICAgdmFyIGRlc2M9KHN0LmRlc2N8fCIiKS50cmltKCksIHc9d2VpZ2h0cygpOwogICAgaWYoZGVzYykgaW5mZXJGcm9tRGVzYyhkZXNjLHcpOwogICAgLyogQUkgcGF0aCAoZnJlZS10ZXh0LCBub24tY29ycG9yYXRlKTogZ2l2ZSB0aGUgbW9kZWwgdGhlIHdob2xlIGNhdGFsb2d1ZSBmb3IgZnJlZXIgcGlja3M7IHJ1bGVzL2NvcnBvcmF0ZSBzdGF5IG9uIHRoZSB3ZWlnaHRlZCBzdWJzZXQgKi8KICAgIHZhciBjYXRzPShkZXNjICYmIHN0LndobyE9PSJjb3Jwb3JhdGUiKSA\/IENBVE9SREVSLnNsaWNlKCkgOiBPYmplY3Qua2V5cyh3KS5maWx0ZXIoZnVuY3Rpb24oayl7cmV0dXJuIHdba10+MDt9KTsKICAgIHRyYWNrKCJra2dfYnVpbGRfYnVuZGxlIix7bW9kZTpkZXNjPyJhaSI6InJ1bGVzIixidWRnZXQ6K3N0LmJ1ZHx8MCxyZWNpcGllbnQ6c3Qud2hvfHwiIixvY2Nhc2lvbjpzdC5vY2N8fCIifSk7CiAgICAkKCJra2ctaXRlbXMiKS5pbm5lckhUTUw9JzxkaXYgY2xhc3M9ImtrZy1sb2FkaW5nIj4nK3RyKGRlc2M\/ImFpX3RoaW5raW5nIjoibG9hZGluZyIpKyc8L2Rpdj4nOyAkKCJra2ctcmVzIikuaGlkZGVuPWZhbHNlOwogICAgbG9hZENhdHMoY2F0cyxmdW5jdGlvbihwb29sKXsKICAgICAgaWYoZGVzYyl7IGFpUGljayhkZXNjLHBvb2wsdyxmdW5jdGlvbihyZXMpewogICAgICAgIHZhciBieUlkPXt9OyBwb29sLmZvckVhY2goZnVuY3Rpb24oeCl7YnlJZFt4LmlkXT14O30pOwogICAgICAgIHZhciBwaWNrcz0ocmVzLmlkc3x8W10pLm1hcChmdW5jdGlvbihpZCl7cmV0dXJuIGJ5SWRbaWRdO30pLmZpbHRlcihCb29sZWFuKTsKICAgICAgICBpZighcGlja3MubGVuZ3RoKSBwaWNrcz1hc3NlbWJsZShwb29sLHcsK3N0LmJ1ZCxzZXRTaXplRm9yKHN0LmJ1ZCksc3Quc2FsdCkuc2xpY2UoKTsKICAgICAgICBzdC5idW5kbGU9cGlja3M7IHN0LmFpTm90ZT1yZXMubm90ZXx8bnVsbDsgcmVuZGVyQWxsKCk7CiAgICAgIH0pOyB9CiAgICAgIGVsc2UgeyBzdC5idW5kbGU9YXNzZW1ibGUocG9vbCx3LCtzdC5idWQsc2V0U2l6ZUZvcihzdC5idWQpLHN0LnNhbHQpLnNsaWNlKCk7IHJlbmRlckFsbCgpOyB9CiAgICB9KTsKICB9CiAgZnVuY3Rpb24gaW5mZXJGcm9tRGVzYyhkZXNjLHcpewogICAgdmFyIGQ9ZGVzYy50b0xvd2VyQ2FzZSgpLGhpdD1mYWxzZSxhZGQ9e30sCiAgICAgIG1hcD17dGVjaDovZGVza3x3b3JrfG9mZmljZXxsYXB0b3B8dGVjaHxjYWJsZXxzZXR1cHxnYWRnZXR8Y29tcHV0ZXJ8Y29kZXJ8ZGV2ZWxvcHxlbmdpbmVlci8sCiAgICAgICAgICAgdHJhdmVsOi90cmF2ZWx8dHJpcHxjb21tdXRlfGpvdXJuZXl8YmFnfGNhcnJ5fGZsaWdodHxhYnJvYWR8YWR2ZW50dXJ8b3V0ZG9vci8sCiAgICAgICAgICAgbWluaW1hbDovbWluaW1hbHxzaW1wbGV8ZXZlcnlkYXl8Y2xlYW58d2FsbGV0fGNhcmR8ZXNzZW50aWFsfHByYWN0aWNhbC8sCiAgICAgICAgICAgdHJlbmR5Oi9jb2xvdT9yfHRyZW5keXxmdW58YnJpZ2h0fHN0eWxlfGZhc2hpb258Ym9sZHx2aWJyYW50fGdlbltccy1dP3p8eW91bmcvLAogICAgICAgICAgIGhvbWU6L2hvbWV8Y29zW3lpXXxraXRjaGVufGRlY29yfGN1c2hpb258aG91c2V8YXBhcnRtZW50fGhvc3R8bmVzdC99OwogICAgT2JqZWN0LmtleXMobWFwKS5mb3JFYWNoKGZ1bmN0aW9uKGspeyBpZihtYXBba10udGVzdChkKSl7IGhpdD10cnVlOyB2YXIgbT1JV1trXTsgT2JqZWN0LmtleXMobSkuZm9yRWFjaChmdW5jdGlvbihjKXthZGRbY109KGFkZFtjXXx8MCkrbVtjXTt9KTsgfSB9KTsKICAgIGlmKGhpdCl7IE9iamVjdC5rZXlzKHcpLmZvckVhY2goZnVuY3Rpb24oayl7d1trXT0wO30pOyBPYmplY3Qua2V5cyhhZGQpLmZvckVhY2goZnVuY3Rpb24oYyl7d1tjXT1hZGRbY107fSk7IGlmKHN0Lndobz09PSJjb3Jwb3JhdGUiKXt3LmhvbWU9MDt3LndhdGNoPTA7fSB9CiAgfQogIGZ1bmN0aW9uIGFpUGljayhkZXNjLHBvb2wsdyxjYil7CiAgICB2YXIgZmFsbGJhY2s9ZnVuY3Rpb24oKXsgdmFyIHA9YXNzZW1ibGUocG9vbCx3LCtzdC5idWQsc2V0U2l6ZUZvcihzdC5idWQpLHN0LnNhbHQpOyBjYih7aWRzOnAubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4LmlkO30pLG5vdGU6bnVsbH0pOyB9OwogICAgaWYoIUNPTkZJRy5haVdlYmhvb2sgfHwgIUlTX0xJVkUpeyBmYWxsYmFjaygpOyByZXR1cm47IH0KICAgIHZhciBjYW5kcz1wb29sLmZpbHRlcihmdW5jdGlvbih4KXtyZXR1cm4geC5wPD0rc3QuYnVkKzAuMDAxO30pLnNsaWNlKDAsMTIwKS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIHtpZDp4LmlkLG46eC5uLHA6eC5wLGs6eC5rfTt9KTsKICAgIHZhciBzeXM9IllvdSBhcmUgS2xpcHBpSydzIGdpZnQgY29uY2llcmdlIChVQUUgYWNjZXNzb3JpZXMgc3RvcmUpLiBGcm9tIHRoZSBwcm9kdWN0IGxpc3Qgb25seSwgY2hvb3NlIDItMyBpdGVtcyB0aGF0IGJlc3Qgc3VpdCB0aGUgcmVjaXBpZW50IGFuZCB3aG9zZSBwcmljZXMgc3VtIHRvIDw9IHRoZSBidWRnZXQuIFJldHVybiBPTkxZIEpTT046IHtcImlkc1wiOls8cHJvZHVjdCBpZHMgeW91IGNob3NlPl0sIFwibm90ZVwiOlwiYSBzaG9ydCwgd2FybSwgcmVhZHktdG8tc2VuZCBnaWZ0IG1lc3NhZ2UgdW5kZXIgMTgwIGNoYXJhY3RlcnMsIGluIHRoZSByZXF1ZXN0ZWQgbGFuZ3VhZ2VcIn0uIjsKICAgIHZhciB1c2VyPSJSZWNpcGllbnQ6ICIrZGVzYysiLiBCdWRnZXQ6ICIrKCtzdC5idWQpKyIuIEN1cnJlbmN5OiAiK0NPTkZJRy5jdXJyZW5jeSsiLiBPY2Nhc2lvbjogIisoc3Qub2NjfHwiIikrIi4gUmVjaXBpZW50IHR5cGU6ICIrKHN0Lndob3x8IiIpKyIuIExhbmd1YWdlOiAiK3N0LmxhbmcrIi4gUHJvZHVjdHM6ICIrSlNPTi5zdHJpbmdpZnkoY2FuZHMpOwogICAgdmFyIGdib2R5PUpTT04uc3RyaW5naWZ5KHtzeXN0ZW1JbnN0cnVjdGlvbjp7cGFydHM6W3t0ZXh0OnN5c31dfSxjb250ZW50czpbe3BhcnRzOlt7dGV4dDp1c2VyfV19XSxnZW5lcmF0aW9uQ29uZmlnOntyZXNwb25zZU1pbWVUeXBlOiJhcHBsaWNhdGlvbi9qc29uIix0ZW1wZXJhdHVyZTowLjR9fSk7CiAgICB2YXIgY3RybD0oIkFib3J0Q29udHJvbGxlciIgaW4gd2luZG93KT9uZXcgQWJvcnRDb250cm9sbGVyKCk6bnVsbDsgaWYoY3RybCkgc2V0VGltZW91dChmdW5jdGlvbigpe3RyeXtjdHJsLmFib3J0KCk7fWNhdGNoKGUpe319LDEyMDAwKTsKICAgIGZldGNoKENPTkZJRy5haVdlYmhvb2sse21ldGhvZDoiUE9TVCIsaGVhZGVyczp7IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PVVURi04In0sYm9keToicD0iK2VuY29kZVVSSUNvbXBvbmVudChnYm9keSksc2lnbmFsOmN0cmw\/Y3RybC5zaWduYWw6dW5kZWZpbmVkfSkKICAgICAgLnRoZW4oZnVuY3Rpb24ocil7cmV0dXJuIHIuanNvbigpO30pCiAgICAgIC50aGVuKGZ1bmN0aW9uKGQpeyB2YXIgb3V0PWQ7IGlmKGQmJmQuY2FuZGlkYXRlcyl7IHRyeXsgb3V0PUpTT04ucGFyc2UoZC5jYW5kaWRhdGVzWzBdLmNvbnRlbnQucGFydHNbMF0udGV4dCk7IH1jYXRjaChlKXsgb3V0PXt9OyB9IH0gY2Ioe2lkczpvdXQuaWRzfHxvdXQucHJvZHVjdElkc3x8W10sbm90ZTpvdXQubm90ZXx8b3V0Lm1lc3NhZ2V8fG51bGx9KTsgfSkKICAgICAgLmNhdGNoKGZ1bmN0aW9uKCl7IGZhbGxiYWNrKCk7IH0pOwogIH0KCiAgLyogLS0tLSByZW5kZXIgLS0tLSAqLwogIGZ1bmN0aW9uIHRvdGFsKCl7IHJldHVybiBzdC5idW5kbGUucmVkdWNlKGZ1bmN0aW9uKGEseCl7cmV0dXJuIGEreC5wO30sMCk7IH0KICBmdW5jdGlvbiByZW5kZXJBbGwoKXsgcmVuZGVyQnVuZGxlKCk7IHJlbmRlckJ1ZGdldCgpOyByZW5kZXJDb3JwKCk7IHJlbmRlck1vcmUoKTsgcmVuZGVyTXNnKCk7CiAgICB2YXIgY29ycD1zdC53aG89PT0iY29ycG9yYXRlIiwgZW1wdHk9c3QuYnVuZGxlLmxlbmd0aD09PTA7CiAgICAkKCJra2ctcXVvdGUiKS5oaWRkZW49IWNvcnA7ICQoImtrZy1hZGRhbGwiKS5jbGFzc0xpc3QudG9nZ2xlKCJzZWNvbmRhcnkiLGNvcnApOwogICAgdmFyIGVtPSQoImtrZy1xZW1haWwiKTsgaWYoY29ycCYmIWVtcHR5KXsgZW0uaGlkZGVuPWZhbHNlOyBlbS5pbm5lckhUTUw9ZXNjKHRyKCJvcmVtYWlsIikpKycgPGEgaHJlZj0iJyttYWlsdG9VcmwoKSsnIj4nK2VzYyhDT05GSUcuZW5xdWlyeUVtYWlsKSsnPC9hPic7IH0gZWxzZSB7IGVtLmhpZGRlbj10cnVlOyB9CiAgICAkKCJra2ctc3VjY2VzcyIpLmhpZGRlbj10cnVlOyAkKCJra2ctZmxhc2giKS5oaWRkZW49dHJ1ZTsKICAgICQoImtrZy1zaG9wYWxsIikuc2V0QXR0cmlidXRlKCJocmVmIixDT05GSUcuc2hvcEFsbFVybCk7CiAgICAkKCJra2ctYWRkYWxsIikuZGlzYWJsZWQ9ZW1wdHk7ICQoImtrZy1xdW90ZSIpLmRpc2FibGVkPWVtcHR5OyB9CiAgZnVuY3Rpb24gcmVuZGVyQ29ycCgpewogICAgdmFyIGVsPSQoImtrZy1jb3JwIik7IGlmKHN0LndobyE9PSJjb3Jwb3JhdGUiKXsgZWwuaGlkZGVuPXRydWU7IHJldHVybjsgfSBlbC5oaWRkZW49ZmFsc2U7CiAgICB2YXIgcXVpY2s9WzEsNSwxMCwyNSw1MCwxMDBdLCBpc0N1c3RvbT1xdWljay5pbmRleE9mKHN0LnF0eSk8MDsKICAgICQoImtrZy1xdHkiKS5pbm5lckhUTUwgPSBxdWljay5tYXAoZnVuY3Rpb24ocSl7IHJldHVybiAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJra2ctcWNoaXAiIGRhdGEtcT0iJytxKyciIGFyaWEtcHJlc3NlZD0iJysoc3QucXR5PT09cT8idHJ1ZSI6ImZhbHNlIikrJyI+JytxKyc8L2J1dHRvbj4nOyB9KS5qb2luKCIiKQogICAgICArICc8aW5wdXQgY2xhc3M9ImtrZy1xY3VzdG9tIiBpZD0ia2tnLXFjdXN0b20iIHR5cGU9Im51bWJlciIgbWluPSIxIiBtYXg9Ijk5OTk5IiBpbnB1dG1vZGU9Im51bWVyaWMiIHBsYWNlaG9sZGVyPSInK2VzYyh0cigiY3VzdG9tIikpKyciIHZhbHVlPSInKyhpc0N1c3RvbT9zdC5xdHk6IiIpKyciPic7CiAgICBzeW5jUXR5KCk7IH0KICBmdW5jdGlvbiBzeW5jUXR5KCl7CiAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKCQoImtrZy1xdHkiKS5xdWVyeVNlbGVjdG9yQWxsKCIua2tnLXFjaGlwIiksZnVuY3Rpb24oYil7IGIuc2V0QXR0cmlidXRlKCJhcmlhLXByZXNzZWQiLCtiLmRhdGFzZXQucT09PXN0LnF0eT8idHJ1ZSI6ImZhbHNlIik7IH0pOwogICAgdmFyIHM9dG90YWwoKTsgJCgia2tnLWNvcnAtdG90IikuaW5uZXJIVE1MPWVzYyh0cigicGVyc2V0IikpKycgPGIgZGlyPSJsdHIiPicrbW9uZXkocykrJzwvYj4gw5cgJytzdC5xdHkrJyA9IDxiIGRpcj0ibHRyIj4nK21vbmV5KHMqc3QucXR5KSsnPC9iPic7IH0KICBmdW5jdGlvbiBidW5kbGVDYXJkKHgpewogICAgdmFyIGNvbD1DQVRDT0xPUlt4LmtdfHwiIzU1NSI7CiAgICB2YXIgdGh1bWI9KElTX0xJVkUmJnguaW1nKT8gJzxpbWcgc3JjPSInK3guaW1nKyciIGFsdD0iJytlc2MoeC5uKSsnIiBsb2FkaW5nPSJsYXp5Ij4nCiAgICAgIDogJzxzcGFuIGNsYXNzPSJra2ctb2JqIiBzdHlsZT0iYmFja2dyb3VuZDonK2NvbCsnIj48c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjEuNyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj4nK0lDT05beC5rXSsnPC9zdmc+PC9zcGFuPjxzcGFuIGNsYXNzPSJra2ctdGFnIj5wcmV2aWV3PC9zcGFuPic7CiAgICByZXR1cm4gJzxkaXYgY2xhc3M9ImtrZy1jYXJkIj48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImtrZy1yZW1vdmUiIGRhdGEtcm09IicreC5pZCsnIiBhcmlhLWxhYmVsPSJSZW1vdmUiIHRpdGxlPSJSZW1vdmUiPsOXPC9idXR0b24+JwogICAgICArJzxkaXYgY2xhc3M9ImtrZy10aHVtYiI+Jyt0aHVtYisnPHNwYW4gY2xhc3M9ImtrZy1jYXRwaWxsIj4nK2VzYyhDQVRMQUJFTFtzdC5sYW5nXVt4LmtdKSsnPC9zcGFuPjwvZGl2PicKICAgICAgKyc8ZGl2IGNsYXNzPSJra2ctY2JvZHkiPjxzcGFuIGNsYXNzPSJra2ctY25hbWUiPicrZXNjKHgubikrJzwvc3Bhbj48c3BhbiBjbGFzcz0ia2tnLXByaWNlIj4nK3ByaWNlSFRNTCh4KSsnPC9zcGFuPicrZGVsaXZIVE1MKHgpCiAgICAgICsnPGEgY2xhc3M9ImtrZy12aWV3IiBocmVmPSInK3gudSsnIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciI+Jyt0cigidmlldyIpKyc8L2E+PC9kaXY+PC9kaXY+JzsgfQogIGZ1bmN0aW9uIHJlbmRlckFycml2ZXMoKXsKICAgIHZhciBhdj0kKCJra2ctYXJyaXZlcyIpOyBpZighYXYpIHJldHVybjsKICAgIHZhciBpdGVtcz1zdC5idW5kbGUuZmlsdGVyKGZ1bmN0aW9uKHgpe3JldHVybiB4LmJvIT09dW5kZWZpbmVkO30pOwogICAgaWYoIWl0ZW1zLmxlbmd0aCl7IGF2LmhpZGRlbj10cnVlOyByZXR1cm47IH0KICAgIHZhciBhbnlCbz1pdGVtcy5zb21lKGZ1bmN0aW9uKHgpe3JldHVybiB4LmJvO30pOwogICAgdmFyIG89KGFueUJvP0NPTkZJRy5kZWxpdmVyeS5iYWNrb3JkZXI6Q09ORklHLmRlbGl2ZXJ5LnN0b2NrKXx8WzAsMV07CiAgICB2YXIgZD1uZXcgRGF0ZSgpOyBkLnNldERhdGUoZC5nZXREYXRlKCkrKCtvWzFdKSk7IHZhciBNPU1PTlRIU1tzdC5sYW5nXXx8TU9OVEhTLmVuOwogICAgYXYuaGlkZGVuPWZhbHNlOyBhdi5jbGFzc05hbWU9ImtrZy1hcnJpdmVzIisoYW55Qm8\/IiI6IiBmYXN0Iik7CiAgICBhdi5pbm5lckhUTUw9Jzxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMTMiIGhlaWdodD0iMTMiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEuNyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cmVjdCB4PSIxIiB5PSI2IiB3aWR0aD0iMTMiIGhlaWdodD0iOSIgcng9IjEiLz48cGF0aCBkPSJNMTQgOWg0bDMgM3YzaC03eiIvPjxjaXJjbGUgY3g9IjYiIGN5PSIxNy41IiByPSIxLjQiLz48Y2lyY2xlIGN4PSIxNyIgY3k9IjE3LjUiIHI9IjEuNCIvPjwvc3ZnPjxzcGFuPicrZXNjKHRyKCJhcnJpdmVzYnkiKSkrJyA8YiBkaXI9Imx0ciI+JytNW2QuZ2V0TW9udGgoKV0rIiAiK2QuZ2V0RGF0ZSgpKyc8L2I+PC9zcGFuPic7CiAgfQogIGZ1bmN0aW9uIHJlbmRlckJ1bmRsZSgpewogICAgdmFyIGVsPSQoImtrZy1pdGVtcyIpOyBlbC5jbGFzc0xpc3QudG9nZ2xlKCJsZWFkIiwgc3QuYnVuZGxlLmxlbmd0aD49NCk7CiAgICBlbC5pbm5lckhUTUwgPSBzdC5idW5kbGUubGVuZ3RoID8gc3QuYnVuZGxlLm1hcChidW5kbGVDYXJkKS5qb2luKCIiKSA6ICc8ZGl2IGNsYXNzPSJra2ctbG9hZGluZyI+Jyt0cigiZW1wdHkiKSsnPC9kaXY+JzsKICAgIHZhciBuPXN0LmJ1bmRsZS5sZW5ndGg7CiAgICAkKCJra2ctdG90YWwiKS50ZXh0Q29udGVudCA9IG4\/IG1vbmV5KHRvdGFsKCkpKyIgIMK3ICAiK24rIiAiK3RyKG49PT0xPyJpdGVtIjoiaXRlbXMiKSA6ICLigJQiOwogICAgcmVuZGVyQXJyaXZlcygpOwogIH0KICBmdW5jdGlvbiByZW5kZXJCdWRnZXQoKXsKICAgIHZhciBiPStzdC5idWQsIHQ9dG90YWwoKTsgdmFyIGJhcj0kKCJra2ctYnVkZ2V0YmFyIik7CiAgICBpZighc3QuYnVuZGxlLmxlbmd0aCl7IGJhci5oaWRkZW49dHJ1ZTsgcmV0dXJuOyB9IGJhci5oaWRkZW49ZmFsc2U7CiAgICB2YXIgcGN0PU1hdGgubWluKDEwMCxNYXRoLnJvdW5kKHQvYioxMDApKTsgdmFyIG92ZXI9dD5iKzAuMDAxOwogICAgdmFyIGZpbGw9JCgia2tnLWZpbGwiKTsgZmlsbC5zdHlsZS53aWR0aD1wY3QrIiUiOyBmaWxsLmNsYXNzTGlzdC50b2dnbGUoIm92ZXIiLG92ZXIpOwogICAgdmFyIG1ldGE9JCgia2tnLWJtZXRhIik7IG1ldGEuY2xhc3NMaXN0LnRvZ2dsZSgib3ZlciIsb3Zlcik7CiAgICB2YXIgZGlmZj1NYXRoLmFicyhiLXQpOwogICAgbWV0YS50ZXh0Q29udGVudCA9IG92ZXIgPyB0cigib3ZlciIpLnJlcGxhY2UoInt4fSIsbW9uZXkoZGlmZikpIDogKGRpZmY8MC4wMDE\/IHRyKCJvbmJ1ZGdldCIpIDogdHIoInVuZGVyIikucmVwbGFjZSgie3h9Iixtb25leShkaWZmKSkpOwogIH0KICBmdW5jdGlvbiByZW5kZXJNb3JlKCl7CiAgICBidWlsZE1vcmVGaWx0ZXJzKCk7CiAgICB2YXIgY2F0PXN0Lm1vcmVDYXQsIGlkcz17fTsgc3QuYnVuZGxlLmZvckVhY2goZnVuY3Rpb24oeCl7aWRzW3guaWRdPTE7fSk7CiAgICB2YXIgc2hvdz1mdW5jdGlvbihpdGVtcyl7CiAgICAgIHZhciBsaXN0PWl0ZW1zLmZpbHRlcihmdW5jdGlvbih4KXtyZXR1cm4gIWlkc1t4LmlkXTt9KTsKICAgICAgaWYoY2F0PT09InN1Z2dlc3RlZCIpeyB2YXIgdz13ZWlnaHRzKCk7IGxpc3Q9bGlzdC5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIHt4Ongsczood1t4LmtdfHwwKSoxMDArcm5kKHguaWQrc3Quc2FsdCkqMTAgLSB4LnAqMC4yfTt9KS5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGIucy1hLnM7fSkubWFwKGZ1bmN0aW9uKG8pe3JldHVybiBvLng7fSk7IH0KICAgICAgdmFyIGNhcD0xMiwgbW9yZT1saXN0Lmxlbmd0aD5jYXA7IGxpc3Q9bGlzdC5zbGljZSgwLGNhcCk7CiAgICAgIHZhciBncmlkPSQoImtrZy1tb3JlIik7CiAgICAgIGdyaWQuaW5uZXJIVE1MID0gbGlzdC5sZW5ndGggPyBsaXN0Lm1hcChzdWdnQ2FyZCkuam9pbigiIikgOiAnPGRpdiBjbGFzcz0ia2tnLWxvYWRpbmciPuKAlDwvZGl2Pic7CiAgICAgIHZhciBub3RlPSQoImtrZy1tb3JlLW5vdGUiKTsgbm90ZS5oaWRkZW49IShJU19MSVZFJiZtb3JlJiZjYXQhPT0ic3VnZ2VzdGVkIik7IG5vdGUudGV4dENvbnRlbnQ9dHIoIm1vcmVvbiIpOwogICAgfTsKICAgIGlmKGNhdD09PSJzdWdnZXN0ZWQiKXsgdmFyIHc9d2VpZ2h0cygpOyBsb2FkQ2F0cyhPYmplY3Qua2V5cyh3KS5maWx0ZXIoZnVuY3Rpb24oayl7cmV0dXJuIHdba10+MDt9KSxzaG93KTsgfQogICAgZWxzZSB7ICQoImtrZy1tb3JlIikuaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPSJra2ctbG9hZGluZyI+Jyt0cigibG9hZGluZyIpKyc8L2Rpdj4nOyBmZXRjaENhdChjYXQsc2hvdyk7IH0KICB9CiAgZnVuY3Rpb24gYnVpbGRNb3JlRmlsdGVycygpewogICAgdmFyIGNoaXBzPVtbInN1Z2dlc3RlZCIsdHIoInN1Z2dlc3RlZCIpXV0uY29uY2F0KENBVE9SREVSLm1hcChmdW5jdGlvbihrKXtyZXR1cm4gW2ssQ0FUTEFCRUxbc3QubGFuZ11ba11dO30pKTsKICAgICQoImtrZy1tZmlsdGVycyIpLmlubmVySFRNTD1jaGlwcy5tYXAoZnVuY3Rpb24oYyl7IHJldHVybiAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJra2ctbWYiIGRhdGEtbWM9IicrY1swXSsnIiBhcmlhLXByZXNzZWQ9IicrKHN0Lm1vcmVDYXQ9PT1jWzBdPyJ0cnVlIjoiZmFsc2UiKSsnIj4nK2VzYyhjWzFdKSsnPC9idXR0b24+JzsgfSkuam9pbigiIik7CiAgfQogIGZ1bmN0aW9uIHN1Z2dDYXJkKHgpewogICAgdmFyIGNvbD1DQVRDT0xPUlt4LmtdfHwiIzU1NSI7CiAgICB2YXIgdGh1bWI9KElTX0xJVkUmJnguaW1nKT8gJzxpbWcgc3JjPSInK3guaW1nKyciIGFsdD0iJytlc2MoeC5uKSsnIiBsb2FkaW5nPSJsYXp5Ij4nCiAgICAgIDogJzxzcGFuIGNsYXNzPSJra2ctb2JqIiBzdHlsZT0iYmFja2dyb3VuZDonK2NvbCsnIj48c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjEuNyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj4nK0lDT05beC5rXSsnPC9zdmc+PC9zcGFuPic7CiAgICByZXR1cm4gJzxkaXYgY2xhc3M9ImtrZy1zY2FyZCI+PGRpdiBjbGFzcz0ia2tnLXRodW1iIj4nK3RodW1iKyc8L2Rpdj48ZGl2IGNsYXNzPSJra2ctc2JvZHkiPicKICAgICAgKyc8c3BhbiBjbGFzcz0ia2tnLXNuYW1lIj4nK2VzYyh4Lm4pKyc8L3NwYW4+PHNwYW4gY2xhc3M9ImtrZy1zcHJpY2UiPicrcHJpY2VIVE1MKHgpKyc8L3NwYW4+JytkZWxpdkhUTUwoeCkKICAgICAgKyc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImtrZy1wbHVzIiBkYXRhLWFkZD0iJyt4LmlkKyciPisgJyt0cigiYWRkIikrJzwvYnV0dG9uPjwvZGl2PjwvZGl2Pic7IH0KCiAgZnVuY3Rpb24gZmluZEluUG9vbChpZCl7IHZhciBmPW51bGw7IE9iamVjdC5rZXlzKHBvb2xDYWNoZSkuZm9yRWFjaChmdW5jdGlvbihrKXsgKHBvb2xDYWNoZVtrXXx8W10pLmZvckVhY2goZnVuY3Rpb24oeCl7IGlmKHguaWQ9PWlkKWY9eDsgfSk7IH0pOyBpZighZilTRUVELmZvckVhY2goZnVuY3Rpb24oeCl7aWYoeC5pZD09aWQpZj14O30pOyByZXR1cm4gZjsgfQogIGZ1bmN0aW9uIGFkZEl0ZW0oaWQpeyBpZihzdC5idW5kbGUuc29tZShmdW5jdGlvbih4KXtyZXR1cm4geC5pZD09aWQ7fSkpcmV0dXJuOyB2YXIgaXQ9ZmluZEluUG9vbChpZCk7IGlmKGl0KXsgc3QuYnVuZGxlLnB1c2goaXQpOyByZW5kZXJBbGwoKTsgfSB9CiAgZnVuY3Rpb24gcmVtb3ZlSXRlbShpZCl7IHN0LmJ1bmRsZT1zdC5idW5kbGUuZmlsdGVyKGZ1bmN0aW9uKHgpe3JldHVybiB4LmlkIT1pZDt9KTsgcmVuZGVyQWxsKCk7IH0KCiAgZnVuY3Rpb24gcmVuZGVyTXNnKCl7CiAgICBpZihzdC5ub3RlRWRpdGVkKSByZXR1cm47ICAgLyoga2VlcCB0aGUgdXNlcidzIGhhbmQtZWRpdGVkIG5vdGUgKi8KICAgIGlmKHN0LmFpTm90ZSl7ICQoImtrZy1tc2dib2R5IikudGV4dENvbnRlbnQ9c3QuYWlOb3RlOyByZXR1cm47IH0KICAgIHZhciBrZXk9c3Qud2hvPT09ImNvcnBvcmF0ZSI\/ImNvcnBvcmF0ZSI6c3Qub2NjOyB2YXIgdHBsPShNU0dba2V5XXx8TVNHLmp1c3RiZWNhdXNlKVtzdC5sYW5nXTsKICAgIHZhciBubT1zdC5uYW1lLnRyaW0oKTsgdmFyIHNsb3Q9bm0\/KHN0Lmxhbmc9PT0iYXIiPygiINmK2KcgIitubSk6KCIsICIrbm0pKToiIjsKICAgICQoImtrZy1tc2dib2R5IikudGV4dENvbnRlbnQgPSB0cGwuaW5kZXhPZigie25hbWV9Iik+PTAgPyB0cGwucmVwbGFjZSgie25hbWV9IixzbG90KSA6IHRwbDsgfQoKICAvKiAtLS0tIGFkZCBhbGwgdG8gYmFnIChjb25maXJtLWZpcnN0LCB2ZXJpZmllZCkgLS0tLSAqLwogIGZ1bmN0aW9uIHNob3dTdWNjZXNzKGFkZGVkLCBmYWlsZWQsIGRlbW8pewogICAgdmFyIHM9JCgia2tnLXN1Y2Nlc3MiKTsgcy5oaWRkZW49ZmFsc2U7CiAgICAkKCJra2ctc3VjY2Vzcy10eCIpLnRleHRDb250ZW50ID0gZGVtbyA\/IHRyKCJkZW1vYWRkIikgOiB0cigiYWRkZWRuIikucmVwbGFjZSgie259IiwgYWRkZWQrIiAiK3RyKGFkZGVkPT09MT8iaXRlbSI6Iml0ZW1zIikpOwogICAgdmFyIHZiPSQoImtrZy12aWV3YmFnIik7IHZiLmhpZGRlbj1kZW1vOyB2Yi5zZXRBdHRyaWJ1dGUoImhyZWYiLChDT05GSUcuc3RvcmVCYXNlfHwiIikrIi9jYXJ0LyIpOwogICAgdmFyIHc9JCgia2tnLXN1Y2Nlc3Mtd2FybiIpOwogICAgaWYoZmFpbGVkJiZmYWlsZWQubGVuZ3RoKXsgdy5oaWRkZW49ZmFsc2U7IHcudGV4dENvbnRlbnQ9dHIoInNvbWVmYWlsIikucmVwbGFjZSgie3h9IixmYWlsZWQuam9pbigiLCAiKSk7IH0gZWxzZSB7IHcuaGlkZGVuPXRydWU7IH0KICAgIHMuc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOiJzbW9vdGgiLGJsb2NrOiJuZWFyZXN0In0pOwogIH0KICBmdW5jdGlvbiBhZGRBbGwoYnRuKXsKICAgIGlmKCFzdC5idW5kbGUubGVuZ3RoKSByZXR1cm47CiAgICBpZighSVNfTElWRSl7IHNob3dTdWNjZXNzKDAsW10sdHJ1ZSk7IHJldHVybjsgfQogICAgdmFyIHF0eSA9IHN0Lndobz09PSJjb3Jwb3JhdGUiID8gTWF0aC5tYXgoMSxzdC5xdHl8fDEpIDogMTsKICAgIHZhciBsYWI9YnRuLnF1ZXJ5U2VsZWN0b3IoInNwYW46bGFzdC1jaGlsZCIpOyBidG4uZGlzYWJsZWQ9dHJ1ZTsgaWYobGFiKWxhYi50ZXh0Q29udGVudD10cigiYWRkaW5nIik7CiAgICB2YXIgYmFzZT1DT05GSUcuc3RvcmVCYXNlfHwiIiwgZmFpbGVkPVtdOwogICAgZmV0Y2goYmFzZSsiL3dwLWpzb24vd2Mvc3RvcmUvdjEvY2FydCIse2hlYWRlcnM6e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiJ9LGNyZWRlbnRpYWxzOiJpbmNsdWRlIn0pCiAgICAgIC50aGVuKGZ1bmN0aW9uKHIpeyByZXR1cm4gci50ZXh0KCkudGhlbihmdW5jdGlvbigpeyByZXR1cm4gci5oZWFkZXJzLmdldCgiTm9uY2UiKXx8ci5oZWFkZXJzLmdldCgiWC1XQy1TdG9yZS1BUEktTm9uY2UiKXx8IiI7IH0pOyB9KQogICAgICAudGhlbihmdW5jdGlvbihub25jZSl7IHZhciBjaGFpbj1Qcm9taXNlLnJlc29sdmUoKTsKICAgICAgICBzdC5idW5kbGUuZm9yRWFjaChmdW5jdGlvbihpdCl7IGNoYWluPWNoYWluLnRoZW4oZnVuY3Rpb24oKXsKICAgICAgICAgIHJldHVybiBmZXRjaChiYXNlKyIvd3AtanNvbi93Yy9zdG9yZS92MS9jYXJ0L2FkZC1pdGVtIix7bWV0aG9kOiJQT1NUIixjcmVkZW50aWFsczoiaW5jbHVkZSIsaGVhZGVyczp7IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL2pzb24iLCJOb25jZSI6bm9uY2V9LGJvZHk6SlNPTi5zdHJpbmdpZnkoe2lkOml0LmlkLHF1YW50aXR5OnF0eX0pfSkKICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24ocmVzKXsgaWYoIXJlcy5vaykgZmFpbGVkLnB1c2goaXQubik7IH0pLmNhdGNoKGZ1bmN0aW9uKCl7IGZhaWxlZC5wdXNoKGl0Lm4pOyB9KTsKICAgICAgICB9KTsgfSk7CiAgICAgICAgcmV0dXJuIGNoYWluOyB9KQogICAgICAudGhlbihmdW5jdGlvbigpeyBidG4uZGlzYWJsZWQ9ZmFsc2U7IGlmKGxhYilsYWIudGV4dENvbnRlbnQ9dHIoImFkZGFsbCIpOwogICAgICAgIGlmKGZhaWxlZC5sZW5ndGg9PT1zdC5idW5kbGUubGVuZ3RoKXsgdmFyIGY9JCgia2tnLWZsYXNoIik7IGYuaGlkZGVuPWZhbHNlOyBmLnRleHRDb250ZW50PXRyKCJhZGRmYWlsIik7IHJldHVybjsgfQogICAgICAgIHZhciBfYWRkZWQ9c3QuYnVuZGxlLmxlbmd0aC1mYWlsZWQubGVuZ3RoOyB0cmFja0FkZFRvQmFnKF9hZGRlZCwgdG90YWwoKSk7CiAgICAgICAgdHJ5eyB2YXIgX249JCgia2tnLW1zZ2JvZHkiKS5pbm5lclRleHQudHJpbSgpOyBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgia2tnX2dpZnRub3RlIiwgX258fCIiKTsgfWNhdGNoKGUpe30gIC8qIGNoZWNrb3V0IHNuaXBwZXQgcmVhZHMgdGhpcyBpbnRvIE9yZGVyIG5vdGVzICovCiAgICAgICAgc2hvd1N1Y2Nlc3MoX2FkZGVkLCBmYWlsZWQsIGZhbHNlKTsgfSkKICAgICAgLmNhdGNoKGZ1bmN0aW9uKCl7IGJ0bi5kaXNhYmxlZD1mYWxzZTsgaWYobGFiKWxhYi50ZXh0Q29udGVudD10cigiYWRkYWxsIik7IHZhciBmPSQoImtrZy1mbGFzaCIpOyBmLmhpZGRlbj1mYWxzZTsgZi50ZXh0Q29udGVudD10cigiYWRkZmFpbCIpOyB9KTsKICB9CgogIC8qIC0tLS0gY29ycG9yYXRlIHF1b3RlIC8gZW5xdWlyeSAtLS0tICovCiAgZnVuY3Rpb24gYnVpbGRRdW90ZVRleHQoKXsKICAgIHZhciBzZXRUb3RhbD10b3RhbCgpLCBxdHk9TWF0aC5tYXgoMSxzdC5xdHl8fDEpLCBncmFuZD1zZXRUb3RhbCpxdHksIGFyPXN0Lmxhbmc9PT0iYXIiOwogICAgdmFyIGxpbmVzPXN0LmJ1bmRsZS5tYXAoZnVuY3Rpb24oeCl7IHJldHVybiAi4oCiICIreC5uKyIg4oCUICIrbW9uZXkoeC5wKTsgfSkuam9pbigiXG4iKTsKICAgIGlmKGFyKXsgcmV0dXJuICLZhdix2K3YqNin2YsgS2xpcHBpS9iMINij2LHYutioINio2LnYsdi2INiz2LnYsSDZhNmH2K\/ZitipINi02LHZg9in2Ko6XG4iK2xpbmVzCiAgICAgICAgKyJcbtmC2YrZhdipINin2YTYt9mC2YU6ICIrbW9uZXkoc2V0VG90YWwpKyJcbtin2YTZg9mF2YrYqTogIitxdHkrIiDYt9mC2YVcbtin2YTYpdis2YXYp9mE2Yog2KfZhNiq2YLYr9mK2LHZijogIittb25leShncmFuZCkKICAgICAgICArIlxu2YrYsdis2Ykg2KrYo9mD2YrYryDYs9i52LEg2KfZhNis2YXZhNipINmI2KfZhNiq2YjZgdmR2LEg2YjZhdiv2Kkg2KfZhNiq2KzZh9mK2LIuIjsgfQogICAgcmV0dXJuICJIZWxsbyBLbGlwcGlLLCBJJ2QgbGlrZSBhIHF1b3RlIGZvciBhIGNvcnBvcmF0ZSBnaWZ0OlxuIitsaW5lcwogICAgICArIlxuUGVyIHNldDogIittb25leShzZXRUb3RhbCkrIlxuUXVhbnRpdHk6ICIrcXR5KyIgc2V0c1xuRXN0aW1hdGVkIHRvdGFsOiAiK21vbmV5KGdyYW5kKQogICAgICArIlxuUGxlYXNlIGNvbmZpcm0gYnVsayBwcmljaW5nLCBhdmFpbGFiaWxpdHkgYW5kIGxlYWQgdGltZS4iOwogIH0KICBmdW5jdGlvbiB3YVVybCgpeyByZXR1cm4gImh0dHBzOi8vd2EubWUvIitDT05GSUcud2hhdHNhcHArIj90ZXh0PSIrZW5jb2RlVVJJQ29tcG9uZW50KGJ1aWxkUXVvdGVUZXh0KCkpOyB9CiAgZnVuY3Rpb24gbWFpbHRvVXJsKCl7IHJldHVybiAibWFpbHRvOiIrQ09ORklHLmVucXVpcnlFbWFpbCsiP3N1YmplY3Q9IitlbmNvZGVVUklDb21wb25lbnQoc3QubGFuZz09PSJhciI\/Iti32YTYqCDYudix2LYg2LPYudixINmE2YfYr9mK2Kkg2LTYsdmD2KfYqiI6IkNvcnBvcmF0ZSBnaWZ0IHF1b3RlIikrIiZib2R5PSIrZW5jb2RlVVJJQ29tcG9uZW50KGJ1aWxkUXVvdGVUZXh0KCkpOyB9CiAgZnVuY3Rpb24gcmVxdWVzdFF1b3RlKCl7IHZhciBmPSQoImtrZy1mbGFzaCIpOyBmLmhpZGRlbj1mYWxzZTsgZi50ZXh0Q29udGVudD10cigicXNlbnQiKTsgdHJhY2soImtrZ19yZXF1ZXN0X3F1b3RlIix7dmFsdWU6dG90YWwoKSpNYXRoLm1heCgxLHN0LnF0eXx8MSksdW5pdHM6TWF0aC5tYXgoMSxzdC5xdHl8fDEpfSk7IHdpbmRvdy5vcGVuKHdhVXJsKCksIl9ibGFuayIpOyB9CgogIC8qIC0tLS0gbGFuZ3VhZ2UgLS0tLSAqLwogIGZ1bmN0aW9uIGFwcGx5TGFuZygpeyByb290LnNldEF0dHJpYnV0ZSgibGFuZyIsc3QubGFuZyk7IHJvb3Quc2V0QXR0cmlidXRlKCJkaXIiLHN0Lmxhbmc9PT0iYXIiPyJydGwiOiJsdHIiKTsKICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwocm9vdC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS10XSIpLGZ1bmN0aW9uKGVsKXsgZWwudGV4dENvbnRlbnQ9dHIoZWwuZ2V0QXR0cmlidXRlKCJkYXRhLXQiKSk7IH0pOwogICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChyb290LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLXBoXSIpLGZ1bmN0aW9uKGVsKXsgZWwuc2V0QXR0cmlidXRlKCJwbGFjZWhvbGRlciIsdHIoZWwuZ2V0QXR0cmlidXRlKCJkYXRhLXBoIikpKTsgfSk7CiAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHJvb3QucXVlcnlTZWxlY3RvckFsbCgiLmtrZy1sYW5nIGJ1dHRvbiIpLGZ1bmN0aW9uKGIpeyBiLnNldEF0dHJpYnV0ZSgiYXJpYS1wcmVzc2VkIixiLmRhdGFzZXQubGFuZz09PXN0Lmxhbmc\/InRydWUiOiJmYWxzZSIpOyB9KTsKICAgICQoImtrZy1yaWJib24iKS50ZXh0Q29udGVudD10cigiZGVtbyIpOyBidWlsZE9wdHMoKTsgaWYoISQoImtrZy1yZXMiKS5oaWRkZW4pIHJlbmRlckFsbCgpOyB9CgogIC8qIC0tLS0gZXZlbnRzIC0tLS0gKi8KICByb290LnF1ZXJ5U2VsZWN0b3IoIi5ra2ctcGFuZWwiKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oZSl7IHZhciBiPWUudGFyZ2V0LmNsb3Nlc3QoIi5ra2ctb3B0Iik7IGlmKGIpIG9uT3B0KGIpOyB9KTsKICAkKCJra2ctbmFtZSIpLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IixmdW5jdGlvbigpeyBzdC5uYW1lPXRoaXMudmFsdWU7IGlmKCEkKCJra2ctcmVzIikuaGlkZGVuJiYhc3QuYWlOb3RlKSByZW5kZXJNc2coKTsgfSk7CiAgJCgia2tnLWRlc2MiKS5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsZnVuY3Rpb24oKXsgc3QuZGVzYz10aGlzLnZhbHVlOyB2YXIgX2Q9dGhpcy52YWx1ZS50cmltKCk7ICQoImtrZy1haS1nbyIpLmRpc2FibGVkPSFfZDsgJCgia2tnLWdvIikuZGlzYWJsZWQ9ISgoc3Qud2hvJiZzdC5vY2MmJnN0LmJ1ZCl8fF9kKTsgfSk7CiAgJCgia2tnLWdvIikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKCl7IHN0LnNhbHQ9MDsgc3QubW9yZUNhdD0ic3VnZ2VzdGVkIjsgYnVpbGRHaWZ0KCk7IHNldFRpbWVvdXQoZnVuY3Rpb24oKXsgJCgia2tnLXJlcyIpLnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjoic21vb3RoIixibG9jazoic3RhcnQifSk7IH0sNjApOyB9KTsKICAkKCJra2ctYWktZ28iKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oKXsgc3Quc2FsdD0wOyBzdC5tb3JlQ2F0PSJzdWdnZXN0ZWQiOyBpZighc3QuYnVkKXsgc3QuYnVkPSIzMDAiOyBidWlsZE9wdHMoKTsgfSBidWlsZEdpZnQoKTsgc2V0VGltZW91dChmdW5jdGlvbigpeyAkKCJra2ctcmVzIikuc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOiJzbW9vdGgiLGJsb2NrOiJzdGFydCJ9KTsgfSw2MCk7IH0pOwogICQoImtrZy1hZ2FpbiIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpeyBzdC5zYWx0Kys7IGJ1aWxkR2lmdCgpOyB9KTsKICAkKCJra2ctaXRlbXMiKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oZSl7IHZhciBiPWUudGFyZ2V0LmNsb3Nlc3QoIi5ra2ctcmVtb3ZlIik7IGlmKGIpIHJlbW92ZUl0ZW0oYi5kYXRhc2V0LnJtKTsgfSk7CiAgJCgia2tnLW1vcmUiKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oZSl7IHZhciBiPWUudGFyZ2V0LmNsb3Nlc3QoIi5ra2ctcGx1cyIpOyBpZihiKSBhZGRJdGVtKGIuZGF0YXNldC5hZGQpOyB9KTsKICAkKCJra2ctbWZpbHRlcnMiKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oZSl7IHZhciBiPWUudGFyZ2V0LmNsb3Nlc3QoIi5ra2ctbWYiKTsgaWYoYil7IHN0Lm1vcmVDYXQ9Yi5kYXRhc2V0Lm1jOyByZW5kZXJNb3JlKCk7IH0gfSk7CiAgJCgia2tnLWFkZGFsbCIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpeyBhZGRBbGwodGhpcyk7IH0pOwogICQoImtrZy1xdW90ZSIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixyZXF1ZXN0UXVvdGUpOwogICQoImtrZy1rZWVwIikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKCl7ICQoImtrZy1zdWNjZXNzIikuaGlkZGVuPXRydWU7IH0pOwogICQoImtrZy1xdHkiKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oZSl7IHZhciBiPWUudGFyZ2V0LmNsb3Nlc3QoIi5ra2ctcWNoaXAiKTsgaWYoYil7IHN0LnF0eT0rYi5kYXRhc2V0LnE7IHZhciBjaT0kKCJra2ctcWN1c3RvbSIpOyBpZihjaSljaS52YWx1ZT0iIjsgc3luY1F0eSgpOyB9IH0pOwogICQoImtrZy1xdHkiKS5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsZnVuY3Rpb24oZSl7IGlmKGUudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygia2tnLXFjdXN0b20iKSl7IHZhciB2PXBhcnNlSW50KGUudGFyZ2V0LnZhbHVlLDEwKTsgc3QucXR5PSh2PjA\/djoxKTsgc3luY1F0eSgpOyB9IH0pOwogICQoImtrZy1yZXNldCIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpeyBzdC53aG89c3Qub2NjPXN0LmJ1ZD1udWxsOyBzdC5pbnRzPVtdOyBzdC5uYW1lPSIiOyBzdC5zYWx0PTA7IHN0LmJ1bmRsZT1bXTsgc3QubW9yZUNhdD0ic3VnZ2VzdGVkIjsgc3QucXR5PTE7IHN0LmRlc2M9IiI7IHN0LmFpTm90ZT1udWxsOyBzdC5ub3RlRWRpdGVkPWZhbHNlOyAkKCJra2ctbmFtZSIpLnZhbHVlPSIiOyAkKCJra2ctZGVzYyIpLnZhbHVlPSIiOyAkKCJra2ctZmxhc2giKS5oaWRkZW49dHJ1ZTsgJCgia2tnLXN1Y2Nlc3MiKS5oaWRkZW49dHJ1ZTsgYnVpbGRPcHRzKCk7ICQoImtrZy1nbyIpLmRpc2FibGVkPXRydWU7ICQoImtrZy1haS1nbyIpLmRpc2FibGVkPXRydWU7ICQoImtrZy1yZXMiKS5oaWRkZW49dHJ1ZTsgcm9vdC5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6InNtb290aCIsYmxvY2s6InN0YXJ0In0pOyB9KTsKICAkKCJra2ctbXNnYm9keSIpLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IixmdW5jdGlvbigpeyBzdC5ub3RlRWRpdGVkPXRydWU7IH0pOwogICQoImtrZy1jb3B5IikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKCl7IHZhciBiPXRoaXMsdHh0PSQoImtrZy1tc2dib2R5IikuaW5uZXJUZXh0OyAobmF2aWdhdG9yLmNsaXBib2FyZD9uYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0eHQpOlByb21pc2UucmVqZWN0KCkpLnRoZW4oZnVuY3Rpb24oKXsgYi50ZXh0Q29udGVudD10cigiY29waWVkIik7IHNldFRpbWVvdXQoZnVuY3Rpb24oKXtiLnRleHRDb250ZW50PXRyKCJjb3B5Iik7fSwxNTAwKTsgfSkuY2F0Y2goZnVuY3Rpb24oKXsgdmFyIHI9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsgci5zZWxlY3ROb2RlQ29udGVudHMoJCgia2tnLW1zZ2JvZHkiKSk7IHZhciBzPWdldFNlbGVjdGlvbigpOyBzLnJlbW92ZUFsbFJhbmdlcygpOyBzLmFkZFJhbmdlKHIpOyB9KTsgfSk7CiAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChyb290LnF1ZXJ5U2VsZWN0b3JBbGwoIi5ra2ctbGFuZyBidXR0b24iKSxmdW5jdGlvbihiKXsgYi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oKXsgc3QubGFuZz1iLmRhdGFzZXQubGFuZzsgYXBwbHlMYW5nKCk7IH0pOyB9KTsKCiAgLyogLS0tLSBpbml0IC0tLS0gKi8KICBidWlsZE9wdHMoKTsgJCgia2tnLW5hbWUiKS5zZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIix0cigibmFtZSIpKTsgJCgia2tnLWRlc2MiKS5zZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIix0cigiYWlfcGgiKSk7CiAgJCgia2tnLXJpYmJvbiIpLnRleHRDb250ZW50PXRyKCJkZW1vIik7ICQoImtrZy1yaWJib24iKS5oaWRkZW49SVNfTElWRTsKICAkKCJra2ctc2hvcGFsbCIpLnNldEF0dHJpYnV0ZSgiaHJlZiIsQ09ORklHLnNob3BBbGxVcmwpOwogIHRyYWNrKCJra2dfd2lkZ2V0X3ZpZXciLHtsaXZlOklTX0xJVkV9KTsKfSkoKTsK\";var bin=atob(B);var bytes=Uint8Array.from(bin,function(c){return c.charCodeAt(0);});var js=new TextDecoder().decode(bytes);var el=document.createElement(\"script\");el.textContent=js;(document.body||document.head||document.documentElement).appendChild(el);})();<\/script>\n<\/div>\n\n\n<!-- KlippiK Concierge: budget + quality boost -->\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"rank_math_title":"","rank_math_description":"","rank_math_focus_keyword":"","_joinchat":[],"footnotes":""},"class_list":["post-40465","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/klippik.com\/ae\/wp-json\/wp\/v2\/pages\/40465","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/klippik.com\/ae\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/klippik.com\/ae\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/klippik.com\/ae\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/klippik.com\/ae\/wp-json\/wp\/v2\/comments?post=40465"}],"version-history":[{"count":1,"href":"https:\/\/klippik.com\/ae\/wp-json\/wp\/v2\/pages\/40465\/revisions"}],"predecessor-version":[{"id":40467,"href":"https:\/\/klippik.com\/ae\/wp-json\/wp\/v2\/pages\/40465\/revisions\/40467"}],"wp:attachment":[{"href":"https:\/\/klippik.com\/ae\/wp-json\/wp\/v2\/media?parent=40465"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}