{"id":21,"date":"2026-05-08T21:25:34","date_gmt":"2026-05-08T19:25:34","guid":{"rendered":"https:\/\/nextgest.it\/index.php\/schlueter\/"},"modified":"2026-05-14T20:02:18","modified_gmt":"2026-05-14T18:02:18","slug":"schlueter","status":"publish","type":"page","link":"https:\/\/nextgest.it\/index.php\/schlueter\/","title":{"rendered":"Schlueter.it"},"content":{"rendered":"\r\n\r\n<style id=\"ng-center-fix\">\/* NG_CENTER_FIX_V3 *\/\r\n.page .wp-block-post-title,.page .entry-header{display:none!important}\r\nbody main.wp-block-group{margin-top:0!important;padding-top:0!important}\r\nbody main .wp-block-group.has-global-padding{padding-top:0!important;padding-bottom:0!important}\r\nbody .wp-block-post-content,body .entry-content{margin:0!important;padding:0!important}\r\nhtml body .ng-login-wrap,html body .ngsa,html body .ng-user-area-wrap,html body .sch-app{box-sizing:border-box!important;width:100vw!important;max-width:100vw!important;margin-left:calc(50% - 50vw)!important;margin-right:calc(50% - 50vw)!important;left:0!important;right:0!important;position:relative!important}\r\nhtml body .sch-app{display:block!important;min-height:calc(100vh - 80px)!important;background:#f8fafc;padding:0!important}\r\n@media(max-width:880px){html body .sch-app{min-height:calc(100vh - 60px)!important}}\r\n<\/style>\r\n\r\n\r\n\r\n<style>\r\n.sch-app{font-family:Inter,system-ui,sans-serif;color:#1e293b}\r\n.sch-wrap{max-width:1280px;margin:0 auto;padding:32px 24px}\r\n@media(max-width:880px){.sch-wrap{padding:24px 16px}}\r\n.sch-hero{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:14px;margin-bottom:20px;padding:14px 22px;background:linear-gradient(135deg,#0f1b2d 0%,#13243d 100%);border-radius:14px;color:#fff;position:relative;overflow:hidden}\r\n.sch-hero::before{content:\"\";position:absolute;top:-60%;right:-10%;width:280px;height:280px;background:radial-gradient(circle,rgba(247,141,31,.22),transparent 65%);pointer-events:none}\r\n.sch-hero-title{position:relative;flex:0 1 auto;min-width:0;display:flex;align-items:baseline;flex-wrap:wrap;gap:12px}\r\n.sch-brand{font-size:20px;font-weight:900;letter-spacing:-.02em;line-height:1;margin:0;color:#fff;display:inline-block;flex-shrink:0;white-space:nowrap}\r\n.sch-brand .ac{background:linear-gradient(135deg,#F78D1F,#FFB05A);-webkit-background-clip:text;background-clip:text;color:transparent}\r\n.sch-hero-title h1{font-size:18px;font-weight:900;letter-spacing:-.015em;margin:0;line-height:1.1;color:#fff;white-space:nowrap}\r\n.sch-hero-title h1 .ac{color:#F78D1F}\r\n.sch-hero-title p{margin:2px 0 0;color:rgba(255,255,255,.6);font-size:11.5px;font-weight:500;flex-basis:100%}\r\n@media(max-width:760px){.sch-hero-title h1{font-size:15px}.sch-hero-title p{display:none}}\r\n\/* Nav *\/\r\n.sch-hero-nav{display:flex;align-items:center;gap:6px;flex-wrap:wrap;position:relative}\r\n.sch-nav-btn{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.15);color:#fff;padding:8px 13px;border-radius:9px;font-size:13px;font-weight:600;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:6px;font-family:inherit;transition:all .18s;line-height:1}\r\n.sch-nav-btn:hover{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.3)}\r\n.sch-nav-btn.active{background:#F78D1F;border-color:#F78D1F;color:#fff}\r\n.sch-nav-btn.icon-only{padding:8px 10px}\r\n.sch-nav-btn svg{width:15px;height:15px;flex-shrink:0}\r\n.sch-user{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.15);color:#fff;padding:7px 14px;border-radius:9px;font-size:13px;font-weight:600;display:inline-flex;align-items:center;gap:8px;line-height:1;white-space:nowrap}\r\n.sch-user .dot{width:8px;height:8px;border-radius:50%;background:#94C11F;flex-shrink:0}\r\n.sch-nav-logout{background:rgba(220,38,38,.18);border:1px solid rgba(248,113,113,.4);color:#fff;padding:8px 13px;border-radius:9px;font-size:13px;font-weight:600;text-decoration:none;display:inline-flex;align-items:center;gap:6px;line-height:1;transition:all .18s}\r\n.sch-nav-logout:hover{background:rgba(220,38,38,.32);border-color:rgba(248,113,113,.6)}\r\n.sch-nav-logout svg{width:15px;height:15px}\r\n@media(max-width:880px){\r\n .sch-hero{padding:12px 14px}\r\n .sch-hero-title h1{font-size:16px}\r\n .sch-hero-title p{display:none}\r\n .sch-hero-nav .sch-nav-btn .lbl,.sch-nav-logout .lbl{display:none}\r\n}\r\n\/* Logo image used in printable header *\/\r\n.sch-logo-img{max-height:50px;max-width:180px;display:none}\r\n\/* Hub: due card grandi visibili di default *\/\r\n.sch-actions{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin-bottom:24px}\r\n.sch-actions.hidden{display:none}\r\n@media(max-width:880px){.sch-actions{grid-template-columns:1fr;gap:16px}}\r\n.sch-action-card{display:flex;flex-direction:column;align-items:flex-start;gap:14px;background:#fff;padding:30px;border-radius:18px;border:2px solid #e2e8f0;cursor:pointer;font-family:inherit;text-align:left;transition:all .25s cubic-bezier(.16,1,.3,1);position:relative}\r\n.sch-action-card *{pointer-events:none}.sch-action-card{pointer-events:auto}\r\n.sch-action-card:hover{transform:translateY(-4px);box-shadow:0 18px 32px rgba(15,27,45,.08);border-color:#F78D1F}\r\n.sch-action-card .ico{width:54px;height:54px;border-radius:14px;background:linear-gradient(135deg,#F78D1F 0%,#FFA94D 100%);display:flex;align-items:center;justify-content:center;color:#fff;box-shadow:0 8px 16px rgba(247,141,31,.32)}\r\n.sch-action-card .ico svg{width:30px;height:30px}\r\n.sch-action-card h3{font-size:20px;font-weight:800;color:#0f1b2d;margin:0;letter-spacing:-.015em}\r\n.sch-action-card p{font-size:14px;color:#64748b;margin:0;line-height:1.55}\r\n.sch-action-card .cta{font-size:13px;color:#F78D1F;font-weight:700;letter-spacing:.02em;display:inline-flex;align-items:center;gap:6px;margin-top:auto}\r\n.sch-action-card .cta svg{width:14px;height:14px}\r\n\/* Settings modal *\/\r\n.sch-modal{display:none;position:fixed;inset:0;background:rgba(15,23,42,.55);z-index:99998;align-items:center;justify-content:center;padding:20px}\r\n.sch-modal.open{display:flex}\r\n.sch-modal-body{background:#fff;border-radius:14px;max-width:560px;width:100%;box-shadow:0 24px 60px rgba(0,0,0,.35);overflow:hidden;animation:schModalIn .18s ease-out}\r\n@keyframes schModalIn{from{opacity:0;transform:translateY(10px) scale(.97)}to{opacity:1;transform:none}}\r\n.sch-modal-header{display:flex;justify-content:space-between;align-items:center;padding:16px 22px;border-bottom:1px solid #e2e8f0;background:#fafbfc}\r\n.sch-modal-header h2{font-size:17px;font-weight:800;color:#0f1b2d;margin:0;display:flex;align-items:center;gap:9px}\r\n.sch-modal-header h2 svg{width:18px;height:18px;color:#F78D1F}\r\n.sch-modal-close{background:transparent;border:0;width:32px;height:32px;border-radius:8px;cursor:pointer;color:#64748b;display:inline-flex;align-items:center;justify-content:center;transition:all .18s}\r\n.sch-modal-close:hover{background:#e2e8f0;color:#0f1b2d}\r\n.sch-modal-content{padding:22px}\r\n.sch-modal-row{display:flex;align-items:center;gap:18px;flex-wrap:wrap}\r\n.sch-modal-row .preview{flex:0 0 auto;min-width:180px;display:flex;align-items:center;justify-content:center;background:#f8fafc;border:1px dashed #cbd5e1;border-radius:10px;padding:14px;min-height:80px}\r\n.sch-modal-row .preview img{max-height:64px;max-width:200px}\r\n.sch-modal-row .preview .placeholder{font-size:12px;color:#94a3b8;text-align:center}\r\n.sch-modal-row .info{flex:1 1 220px}\r\n.sch-modal-row .info h4{font-size:14px;font-weight:700;color:#0f1b2d;margin:0 0 4px}\r\n.sch-modal-row .info p{font-size:12.5px;color:#64748b;margin:0 0 12px}\r\n.sch-modal-row .info .actions{display:flex;gap:8px;flex-wrap:wrap}\r\n\/* Panels common *\/\r\n.sch-panel{display:none;background:#fff;border-radius:18px;border:1px solid #e2e8f0;overflow:hidden;margin-top:8px}\r\n.sch-panel.open{display:block}\r\n.sch-panel-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:14px;padding:18px 24px;border-bottom:1px solid #e2e8f0;background:#fafbfc}\r\n.sch-panel-header h2{font-size:19px;font-weight:800;color:#0f1b2d;margin:0;display:flex;align-items:center;gap:10px}\r\n.sch-panel-header .icon-tag{width:28px;height:28px;border-radius:7px;background:#F78D1F;display:flex;align-items:center;justify-content:center;color:#fff;font-size:13px;font-weight:700}\r\n.sch-back{background:transparent;border:1px solid #cbd5e1;color:#475569;padding:7px 14px;border-radius:8px;font-size:13px;cursor:pointer;font-family:inherit;font-weight:500;transition:all .2s}\r\n.sch-back:hover{background:#f1f5f9}\r\n.sch-btn-primary{background:#F78D1F;color:#fff;padding:9px 16px;border:0;border-radius:8px;font-weight:600;font-size:13px;cursor:pointer;font-family:inherit;display:inline-flex;align-items:center;gap:6px;transition:background .2s}\r\n.sch-btn-primary:hover{background:#e07a0e}\r\n\/* Variante arancione con testo\/icona nero: Scarica PDF *\/\r\n.sch-btn-orange-dark{background:#F78D1F;color:#000;padding:9px 16px;border:0;border-radius:8px;font-weight:700;font-size:13px;cursor:pointer;font-family:inherit;display:inline-flex;align-items:center;gap:6px;transition:background .2s}\r\n.sch-btn-orange-dark:hover{background:#e07a0e;color:#000}\r\n.sch-btn-orange-dark svg{color:#000}\r\n.sch-btn-secondary{background:#fff;color:#475569;padding:9px 14px;border:1px solid #cbd5e1;border-radius:8px;font-weight:600;font-size:13px;cursor:pointer;font-family:inherit;display:inline-flex;align-items:center;gap:6px;transition:all .2s}\r\n.sch-btn-secondary:hover{background:#f8fafc;border-color:#94a3b8}\r\n.sch-btn-danger{background:transparent;color:#dc2626;padding:9px 14px;border:1px solid #fca5a5;border-radius:8px;font-weight:600;font-size:13px;cursor:pointer;font-family:inherit;display:inline-flex;align-items:center;gap:6px;transition:all .2s}\r\n.sch-btn-danger:hover{background:#fef2f2;border-color:#dc2626}\r\n\/* LISTINO panel *\/\r\n.sch-toolbar{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;padding:14px 24px;background:#fff;border-bottom:1px solid #e2e8f0}\r\n.sch-toolbar-left{display:flex;align-items:center;gap:18px;flex-wrap:wrap}\r\n.sch-toolbar-meta{display:flex;flex-direction:column;gap:2px}\r\n.sch-toolbar-meta .count{font-weight:700;color:#0f1b2d;font-size:14.5px}\r\n.sch-toolbar-meta .updated{font-size:12px;color:#94a3b8}\r\n.sch-toolbar-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}\r\n.sch-search{padding:8px 12px;border:1px solid #cbd5e1;border-radius:8px;font-size:14px;font-family:inherit;width:260px;outline:none}\r\n.sch-search:focus{border-color:#F78D1F;box-shadow:0 0 0 3px rgba(247,141,31,.12)}\r\n@media(max-width:680px){.sch-search{width:100%}}\r\n.sch-results{font-size:13px;color:#64748b;padding:8px 24px;border-bottom:1px solid #e2e8f0;background:#f8fafc}\r\n.sch-table-wrap{max-height:60vh;overflow:auto;background:#fff}\r\n.sch-table{width:100%;border-collapse:separate;border-spacing:0;font-size:12.5px;font-family:Inter,Arial,sans-serif}\r\n.sch-table thead th{background:#F78D1F!important;color:#000;font-weight:700;padding:9px 11px;border-right:1px solid #d97706;border-bottom:2px solid #b45309;text-align:center;white-space:nowrap;position:sticky;top:0;z-index:10;font-size:11.5px}\r\n.sch-table tbody td{padding:6px 11px;border-right:1px solid #e2e8f0;border-bottom:1px solid #f1f5f9;color:#1e293b;white-space:nowrap;max-width:320px;overflow:hidden;text-overflow:ellipsis}\r\n.sch-table tbody td.num{text-align:right;font-variant-numeric:tabular-nums}\r\n.sch-table tbody tr:nth-child(even) td{background:#fafbfc}\r\n.sch-table tbody tr:hover td{background:#FFF8EE}\r\n.sch-table tbody tr.more td{text-align:center;color:#94a3b8;font-style:italic;padding:14px;background:#fff}\r\n.sch-loading{display:none;padding:32px;text-align:center;color:#64748b;font-size:14px;background:#fff}\r\n.sch-empty{display:none;padding:60px 24px;text-align:center;background:#fff}\r\n.sch-empty h3{font-size:17px;color:#0f1b2d;margin:10px 0 6px}\r\n.sch-empty p{font-size:13.5px;color:#64748b;margin:0;max-width:380px;margin-left:auto;margin-right:auto}\r\n.sch-toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(20px);background:#0f1b2d;color:#fff;padding:13px 22px;border-radius:11px;font-size:13.5px;font-weight:500;box-shadow:0 12px 32px rgba(0,0,0,.25);opacity:0;pointer-events:none;transition:all .3s cubic-bezier(.16,1,.3,1);z-index:99999}\r\n.sch-toast.visible{opacity:1;transform:translateX(-50%) translateY(0)}\r\n.sch-toast.ok{background:#15803d}\r\n.sch-toast.err{background:#dc2626}\r\n\/* ============= ORDINI: A4 form ============= *\/\r\n.sch-ord-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 22px;border-bottom:1px solid #e2e8f0;background:#fafbfc}\r\n.sch-ord-toolbar-left{display:flex;align-items:center;gap:14px;flex-wrap:wrap;min-width:0}\r\n.sch-ord-logo{max-height:36px;max-width:150px;display:none;flex-shrink:0}\r\n.sch-ord-title{font-size:15.5px;font-weight:800;color:#0f1b2d;margin:0;letter-spacing:-.015em;line-height:1.1;display:inline-flex;align-items:center;gap:9px}\r\n.sch-ord-title .icon-tag{width:26px;height:26px;border-radius:7px;background:#F78D1F;color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;flex-shrink:0}\r\n.sch-ord-logout{background:rgba(220,38,38,.08);border:1px solid rgba(220,38,38,.3);color:#dc2626;padding:7px 13px;border-radius:8px;font-size:12.5px;font-weight:600;text-decoration:none;display:inline-flex;align-items:center;gap:6px;line-height:1;transition:all .18s;font-family:inherit}\r\n.sch-ord-logout:hover{background:rgba(220,38,38,.16);border-color:#dc2626;color:#b91c1c}\r\n.sch-ord-logout svg{width:14px;height:14px}\r\n.sch-ord-toolbar-actions{display:flex;gap:8px;flex-wrap:wrap}\r\n.sch-ord-scroll{overflow-x:auto;background:#f1f5f9;padding:24px}\r\n@media(max-width:880px){.sch-ord-scroll{padding:14px 4px}}\r\n#ord-printable{width:210mm;min-height:297mm;background:#fff;margin:0 auto;padding:12mm 10mm 10mm;font-family:Arial,Helvetica,sans-serif;font-size:9.5pt;color:#000;box-shadow:0 18px 40px rgba(15,27,45,.12);position:relative}\r\n@media print{#ord-printable{box-shadow:none;margin:0;padding:10mm}}\r\n.ord-h{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px;margin-bottom:4px;align-items:stretch}\r\n.ord-h-left{display:flex;flex-direction:column;gap:6px;min-width:0}\r\n.ord-logo-area{display:flex;align-items:center;justify-content:flex-start;min-height:50px}\r\n.ord-logo-area img{max-height:70px;max-width:280px}\r\n.ord-ord-info{font-size:9pt;border:1px solid #000;padding:0;flex:1;display:flex;flex-direction:column;justify-content:space-around;min-width:0;box-sizing:border-box}\r\n.ord-ord-info .row{display:grid;grid-template-columns:110px minmax(0,1fr);gap:4px;margin-bottom:0;align-items:center;min-height:12px;line-height:1.1;padding:2px 8px;border-bottom:1px solid #ccc}\r\n.ord-ord-info .row:last-child{border-bottom:0}\r\n.ord-ord-info .row label{font-weight:700;color:#000;font-size:8.5pt}\r\n.ord-ord-info .row input{border:0;padding:0 2px;font:inherit;background:transparent;width:100%;line-height:1.1}\r\n.ord-h-right{font-size:9pt;border:1px solid #000;padding:0;display:flex;flex-direction:column;justify-content:space-around;min-width:0;box-sizing:border-box}\r\n.ord-h-right .row{display:grid;grid-template-columns:130px minmax(0,1fr);gap:4px;margin-bottom:0;align-items:center;min-height:12px;line-height:1.1;padding:2px 8px;border-bottom:1px solid #ccc}\r\n.ord-h-right .row:last-child{border-bottom:0}\r\n.ord-h-right .row label{font-weight:700;color:#000;font-size:8.5pt}\r\n.ord-h-right .row input{border:0;padding:0 2px;font:inherit;background:transparent;width:100%;line-height:1.1}\r\n\/* AGENTE\/FUNZIONARIO label + valore in grassetto evidenziato *\/\r\n.ord-h-right .row:first-child label{font-weight:900;font-size:9.5pt;color:#000;letter-spacing:.01em}\r\n.ord-h-right .row:first-child input{font-weight:800;color:#000;font-size:10pt}\r\n.ord-title{text-align:center;font-weight:800;font-size:11pt;letter-spacing:.04em;margin:4px 0 6px;color:#000;border-top:1.5px solid #000;border-bottom:1.5px solid #000;padding:3px 0;background:#fff}\r\n.ord-block{border:1px solid #000;margin-bottom:6px;display:grid;grid-template-columns:1fr 1fr;gap:0;font-size:9pt}\r\n.ord-block .cell{padding:1.5px 6px;border-right:1px solid #ccc;border-bottom:1px solid #ccc;display:grid;grid-template-columns:90px 1fr;gap:6px;align-items:center;min-height:17px}\r\n.ord-block .cell:nth-child(2n){border-right:0}\r\n.ord-block .cell label{font-weight:700;color:#000;font-size:8.5pt}\r\n.ord-block .cell input{border:0;background:transparent;width:100%;font:inherit;padding:0;outline:none}\r\n\/* CLIENTE label + valore in grassetto evidenziato *\/\r\n.ord-block:not(.dest) .cell:first-child label{font-weight:900;font-size:9.5pt;color:#000;letter-spacing:.01em}\r\n.ord-block:not(.dest) .cell:first-child input{font-weight:800;color:#000;font-size:10pt}\r\n.ord-block .cell.cell-chiusure{grid-template-columns:auto 1fr auto 1fr;column-gap:5px;padding:1.5px 6px}\r\n.ord-block .cell.cell-chiusure label{font-size:8pt;font-weight:700;white-space:nowrap}\r\n.ord-block .cell.cell-chiusure > label:nth-child(3){padding-left:6px;border-left:1px dashed #ccc;margin-left:3px}\r\n.ord-block .cell.cell-chiusure input[type=date]{font-size:8.5pt;font-family:inherit;color:#000}\r\n\/* Date inputs vuoti: testo grigio (placeholder gg\/mm\/aaaa) *\/\r\ninput[type=date].is-empty,input[type=date]:not(.has-value){color:#9aa3ad}\r\ninput[type=date].is-empty::-webkit-datetime-edit,\r\ninput[type=date]:not(.has-value)::-webkit-datetime-edit{color:#9aa3ad}\r\ninput[type=date].has-value{color:#000}\r\ninput[type=date].has-value::-webkit-datetime-edit{color:#000}\r\n.ord-block .cell input:focus{background:#fef9e7}\r\n.ord-block.dest{grid-template-columns:1fr}\r\n.ord-block.dest .cell{grid-template-columns:120px 1fr;border-right:0;min-height:30px;padding:2px 6px}\r\n.ord-block.dest textarea{border:0;background:transparent;width:100%;font:inherit;padding:0;resize:none;min-height:24px;height:24px;line-height:1.3;overflow:hidden}\r\n.ord-warn{text-align:center;font-weight:700;font-size:8pt;color:#cc0000;padding:1.5px 4px;background:#fff8e7;border:1px dashed #cc0000;margin:3px 0;line-height:1.2}\r\n\/* Articles table *\/\r\n.ord-tbl-wrap{margin:6px 0}\r\n.ord-tbl{width:100%;border-collapse:collapse;font-size:8.5pt;table-layout:fixed}\r\n.ord-tbl th{background:#FFE0B2;color:#000;font-weight:700;padding:4px 4px;border:1px solid #555;text-align:center;font-size:8pt;letter-spacing:.02em}\r\n.ord-tbl td{padding:0;border:1px solid #999;height:17px;background:#fff;position:relative}\r\n.ord-tbl td.pos{text-align:center;font-weight:600;background:#f5f5f5;font-size:8pt;padding:0;width:28px;vertical-align:middle;line-height:17px}\r\n.ord-tbl input{width:100%;border:0;padding:3px 4px;font:inherit;background:transparent;outline:none;text-align:left;box-sizing:border-box}\r\n.ord-tbl input:focus{background:#fef9e7}\r\n.ord-tbl input[readonly]{color:#222;background:#fafafa}\r\n\/* Hide native number spinners \u2014 they push numeric content off-center *\/\r\n.ord-tbl input[type=number]::-webkit-inner-spin-button,\r\n.ord-tbl input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}\r\n.ord-tbl input[type=number]{-moz-appearance:textfield;appearance:textfield}\r\n.ord-tbl td.num input,.ord-tbl input.ord-tot,.ord-tbl input.ord-imp,.ord-tbl input.ord-pz,.ord-tbl input.ord-qt,.ord-tbl input.ord-fc{text-align:right;font-variant-numeric:tabular-nums;padding-right:6px}\r\n.ord-tbl input.ord-um{text-align:center}\r\n.ord-tbl input.ord-sc{text-align:center;letter-spacing:.5px}\r\n.ord-tbl col.c-pos{width:28px}.ord-tbl col.c-cod{width:80px}.ord-tbl col.c-desc{width:218px}.ord-tbl col.c-qt{width:46px}.ord-tbl col.c-fc{width:50px}.ord-tbl col.c-tot{width:60px}.ord-tbl col.c-um{width:36px}.ord-tbl col.c-pz{width:64px}.ord-tbl col.c-sc{width:78px}.ord-tbl col.c-imp{width:80px}\r\n@media(max-width:880px){.ord-tbl col.c-desc{width:160px}}\r\n\/* Bottom row note + porto + totali *\/\r\n.ord-foot{display:grid;grid-template-columns:1fr 360px;gap:6px;margin-top:6px;align-items:stretch}\r\n.ord-foot .note{border:1px solid #000;padding:4px 8px;min-height:90px}\r\n.ord-foot .note label{font-weight:700;font-size:8.5pt}\r\n.ord-foot .note textarea{border:0;background:transparent;width:100%;font:inherit;padding:0;min-height:70px;resize:vertical}\r\n.ord-foot .ord-cond-inline{font-size:6.5pt;line-height:1.25;color:#222;padding:5px 8px;text-align:justify;min-height:0}\r\n.ord-foot .ord-cond-inline strong{display:block;margin-bottom:3px;font-size:7.5pt;color:#000;font-weight:700;text-transform:none}\r\n.ord-foot .totals{display:grid;grid-template-columns:1fr 1fr;border:1px solid #000;font-size:9pt}\r\n.ord-foot .totals .lbl{padding:3px 6px;background:#f5f5f5;font-weight:700;font-size:8.5pt;border-right:1px solid #999;border-bottom:1px solid #999}\r\n.ord-foot .totals .val{padding:3px 6px;text-align:right;font-variant-numeric:tabular-nums;border-bottom:1px solid #999}\r\n.ord-foot .totals input,.ord-foot .totals select{border:0;background:transparent;width:100%;text-align:right;font:inherit;padding:0;outline:none}\r\n.ord-foot .totals select{text-align:left}\r\n.ord-foot .totals .total-final-lbl{background:#FFE0B2!important;border-bottom:0;font-size:9pt;font-weight:700}\r\n.ord-foot .totals .total-final-val{background:#FFE0B2!important;font-weight:800;border-bottom:0;font-size:10pt}\r\n.ord-cond{margin-top:8px;border:1px solid #ccc;padding:4px 8px;font-size:7.5pt;line-height:1.35;color:#222}\r\n.ord-cond strong{display:block;margin-bottom:3px;font-size:8pt;color:#000}\r\n.ord-sign{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:8px;padding:0 4px;font-size:9pt}\r\n.ord-sign .col{text-align:center;font-weight:600;color:#000;padding-top:6px;padding-bottom:22px;border-bottom:1px solid #000}\r\n\/* === PRINT A4 OPTIMIZED \u2014 scale-to-fit === *\/\r\n@page{size:A4 portrait;margin:5mm}\r\n@media print{\r\n  html,body{background:#fff!important;margin:0!important;padding:0!important;width:210mm!important;height:auto!important;overflow:hidden!important}\r\n  body *{visibility:hidden}\r\n  #ord-printable, #ord-printable *{visibility:visible}\r\n  #ord-printable{position:absolute;top:5mm!important;left:50%!important;width:285mm!important;min-height:auto!important;max-height:none!important;overflow:visible;box-shadow:none!important;margin:0!important;padding:0!important;font-size:10pt!important;color:#000!important;page-break-after:avoid;page-break-inside:avoid;transform:translateX(-50%) scale(.62);transform-origin:top center}\r\n  .ord-h{grid-template-columns:1fr 1fr!important;gap:10px!important;margin-bottom:5px!important}\r\n  .ord-h-left{gap:6px!important}\r\n  .ord-logo-area{min-height:60px!important}\r\n  .ord-logo-area img{max-height:70px!important;max-width:280px!important}\r\n  .ord-ord-info{font-size:9pt!important;padding:0!important}\r\n  .ord-ord-info .row{grid-template-columns:120px minmax(0,1fr)!important;gap:3px!important;margin-bottom:0!important;min-height:12px!important;line-height:1.1!important;padding:2px 8px!important;border-bottom:1px solid #ccc!important}\r\n  .ord-ord-info .row:last-child{border-bottom:0!important}\r\n  .ord-ord-info .row label{font-size:8.5pt!important}\r\n  .ord-ord-info .row input{padding:0 2px!important;line-height:1.1!important}\r\n  .ord-h-right{font-size:9pt!important;padding:0!important}\r\n  .ord-h-right .row{grid-template-columns:130px minmax(0,1fr)!important;gap:3px!important;margin-bottom:0!important;min-height:12px!important;line-height:1.1!important;padding:2px 8px!important;border-bottom:1px solid #ccc!important}\r\n  .ord-h-right .row:last-child{border-bottom:0!important}\r\n  .ord-h-right .row label{font-size:8.5pt!important}\r\n  .ord-h-right .row input{padding:0 2px!important;line-height:1.1!important}\r\n  .ord-h-right .row:first-child label{font-weight:900!important;font-size:9pt!important;color:#000!important}\r\n  .ord-h-right .row:first-child input{font-weight:800!important;color:#000!important;font-size:9.5pt!important}\r\n  .ord-block:not(.dest) .cell:first-child label{font-weight:900!important;font-size:9pt!important;color:#000!important}\r\n  .ord-block:not(.dest) .cell:first-child input{font-weight:800!important;color:#000!important;font-size:9.5pt!important}\r\n  .ord-title{font-size:10pt!important;margin:3px 0 4px!important;padding:2px 0!important;letter-spacing:.03em!important}\r\n  .ord-block{font-size:9pt!important;margin-bottom:4px!important}\r\n  .ord-block .cell{padding:1.5px 7px!important;min-height:15px!important;grid-template-columns:100px 1fr!important;gap:6px!important}\r\n  .ord-block .cell.cell-chiusure{grid-template-columns:auto 1fr auto 1fr!important;column-gap:5px!important;padding:1.5px 6px!important}\r\n  .ord-block .cell.cell-chiusure label{font-size:7.5pt!important}\r\n  .ord-block .cell.cell-chiusure input[type=date]{font-size:8pt!important}\r\n  .ord-block .cell label{font-size:8.5pt!important}\r\n  .ord-block.dest .cell{grid-template-columns:120px 1fr!important;min-height:26px!important;padding:2px 6px!important}\r\n  .ord-block.dest textarea{min-height:18px!important;height:18px!important;font-size:9pt!important;line-height:1.3!important}\r\n  .ord-warn{font-size:8pt!important;padding:1px 4px!important;margin:2px 0!important;border-width:1px!important;line-height:1.15!important}\r\n  .ord-tbl-wrap{margin:4px 0!important}\r\n  .ord-tbl{font-size:8.5pt!important;page-break-inside:avoid}\r\n  .ord-tbl th{padding:3px 4px!important;font-size:8pt!important}\r\n  .ord-tbl td{height:15px!important}\r\n  .ord-tbl td.pos{font-size:8pt!important;padding:0!important;vertical-align:middle!important;line-height:15px!important;text-align:center!important}\r\n  .ord-tbl input{padding:1.5px 4px!important;font-size:8.5pt!important;color:#000!important;background:transparent!important}\r\n  .ord-tbl input::placeholder{color:transparent!important}\r\n  .ord-foot{grid-template-columns:1fr 360px!important;gap:6px!important;margin-top:5px!important;align-items:stretch!important}\r\n  .ord-foot .note{padding:4px 8px!important;min-height:70px!important}\r\n  .ord-foot .note label{font-size:8.5pt!important}\r\n  .ord-foot .note textarea{min-height:54px!important;font-size:9pt!important}\r\n  .ord-foot .ord-cond-inline{font-size:6pt!important;line-height:1.2!important;padding:4px 7px!important}\r\n  .ord-foot .ord-cond-inline strong{font-size:7pt!important;margin-bottom:2px!important}\r\n  .ord-foot .totals{font-size:9pt!important}\r\n  .ord-foot .totals .lbl{padding:2.5px 7px!important;font-size:8.5pt!important}\r\n  .ord-foot .totals .val{padding:2.5px 7px!important}\r\n  .ord-foot .totals select{font-size:9pt!important}\r\n  .ord-cond{margin-top:6px!important;padding:4px 8px!important;font-size:7.5pt!important;line-height:1.3!important}\r\n  .ord-cond strong{font-size:8pt!important;margin-bottom:3px!important}\r\n  .ord-sign{grid-template-columns:1fr 1fr!important;gap:14px!important;margin-top:8px!important;font-size:9pt!important}\r\n  .ord-sign .col{padding-top:4px!important;padding-bottom:20px!important;border-top:0!important;border-bottom:1px solid #000!important}\r\n  .ord-tbl input:focus,.ord-block input:focus,.ord-block textarea:focus{background:transparent!important}\r\n  .sch-toast,.sch-app > .sch-wrap > :not(.sch-panel),.sch-panel-header,.sch-ord-toolbar{display:none!important}\r\n}\r\nbody.sch-printing{overflow:hidden}\r\nbody.sch-printing #ord-printable{padding:10mm}\r\n\/* iframe nascosto usato per stampare l'immagine del documento (vedi printOrder) *\/\r\n#ng-print-iframe{position:fixed;left:-9999px;top:0;width:1px;height:1px;border:0;opacity:0;pointer-events:none}\r\n\/* Autocomplete dropdown is inserted at body level via JS *\/\r\n@media(max-width:880px){\r\n  .ord-h{grid-template-columns:1fr}\r\n  .ord-h-right .row{grid-template-columns:110px 1fr}\r\n  .ord-block{grid-template-columns:1fr}\r\n  .ord-block .cell{border-right:0}\r\n  .ord-foot{grid-template-columns:1fr}\r\n}\r\n<\/style>\r\n<div class=\"sch-app\">\r\n <div class=\"sch-wrap\">\r\n  <section class=\"sch-hero\">\r\n   <div class=\"sch-hero-title\">\r\n    <div class=\"sch-brand\">Next<span class=\"ac\">Order.<\/span><\/div>\r\n    <p>Web app gestione ordini e listino prodotti<\/p>\r\n   <\/div>\r\n   <nav class=\"sch-hero-nav\">\r\n    <button class=\"sch-nav-btn\" id=\"sch-btn-home\" type=\"button\" title=\"Home\">\r\n     <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2h-4a2 2 0 0 1-2-2v-5h-2v5a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"\/><\/svg>\r\n     <span class=\"lbl\">Home<\/span>\r\n    <\/button>\r\n    <button class=\"sch-nav-btn\" id=\"sch-btn-ordini\" type=\"button\" title=\"Ordini Clienti\">\r\n     <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\/><polyline points=\"14 2 14 8 20 8\"\/><line x1=\"9\" y1=\"13\" x2=\"15\" y2=\"13\"\/><line x1=\"9\" y1=\"17\" x2=\"15\" y2=\"17\"\/><\/svg>\r\n     <span class=\"lbl\">Ordini Clienti<\/span>\r\n    <\/button>\r\n    <button class=\"sch-nav-btn\" id=\"sch-btn-listino\" type=\"button\" title=\"Listino Schlueter\">\r\n     <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\"\/><line x1=\"3\" y1=\"9\" x2=\"21\" y2=\"9\"\/><line x1=\"9\" y1=\"21\" x2=\"9\" y2=\"9\"\/><\/svg>\r\n     <span class=\"lbl\">Listino<\/span>\r\n    <\/button>\r\n    <button class=\"sch-nav-btn icon-only\" id=\"sch-btn-settings\" type=\"button\" title=\"Impostazioni\" aria-label=\"Impostazioni\">\r\n     <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"3\"\/><path d=\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 1 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 1 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 1 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 1 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z\"\/><\/svg>\r\n    <\/button>\r\n    <span class=\"sch-user\"><span class=\"dot\"><\/span>{{NG_USER_NAME}}<\/span>\r\n    <a href=\"\/wp-login.php?action=logout&amp;redirect_to=\/\" class=\"sch-nav-logout\" title=\"Esci\">\r\n     <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\"\/><polyline points=\"16 17 21 12 16 7\"\/><line x1=\"21\" y1=\"12\" x2=\"9\" y2=\"12\"\/><\/svg>\r\n     <span class=\"lbl\">Esci<\/span>\r\n    <\/a>\r\n   <\/nav>\r\n  <\/section>\r\n\r\n  <!-- HUB: card visibili di default come \"home\" dell'utente -->\r\n  <section class=\"sch-actions\" id=\"sch-actions\">\r\n   <button class=\"sch-action-card\" id=\"sch-card-ordini\" type=\"button\">\r\n    <div class=\"ico\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\/><polyline points=\"14 2 14 8 20 8\"\/><line x1=\"9\" y1=\"13\" x2=\"15\" y2=\"13\"\/><line x1=\"9\" y1=\"17\" x2=\"15\" y2=\"17\"\/><\/svg><\/div>\r\n    <h3>Ordini Clienti<\/h3>\r\n    <p>Crea, modifica, stampa e invia ordini cliente utilizzando il listino importato.<\/p>\r\n    <span class=\"cta\">Apri <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"9 18 15 12 9 6\"\/><\/svg><\/span>\r\n   <\/button>\r\n   <button class=\"sch-action-card\" id=\"sch-card-listino\" type=\"button\">\r\n    <div class=\"ico\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\"\/><line x1=\"3\" y1=\"9\" x2=\"21\" y2=\"9\"\/><line x1=\"9\" y1=\"21\" x2=\"9\" y2=\"9\"\/><\/svg><\/div>\r\n    <h3>Listino Schlueter<\/h3>\r\n    <p>Importa, consulta e azzera il listino prodotti dal foglio Excel.<\/p>\r\n    <span class=\"cta\">Apri <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"9 18 15 12 9 6\"\/><\/svg><\/span>\r\n   <\/button>\r\n  <\/section>\r\n\r\n  <!-- LISTINO PANEL -->\r\n  <section class=\"sch-panel\" id=\"sch-panel-listino\">\r\n   <div class=\"sch-panel-header\">\r\n    <h2><span class=\"icon-tag\">L<\/span> Listino Schlueter<\/h2>\r\n    <button class=\"sch-back\" id=\"sch-back-listino\" type=\"button\">Chiudi<\/button>\r\n   <\/div>\r\n   <div class=\"sch-toolbar\">\r\n    <div class=\"sch-toolbar-left\">\r\n     <div class=\"sch-toolbar-meta\">\r\n      <span class=\"count\" id=\"sch-count\">0 articoli<\/span>\r\n      <span class=\"updated\" id=\"sch-updated\">Nessun listino caricato<\/span>\r\n     <\/div>\r\n     <input type=\"search\" class=\"sch-search\" id=\"sch-search\" placeholder=\"Cerca codice, descrizione, gruppo...\">\r\n    <\/div>\r\n    <div class=\"sch-toolbar-actions\">\r\n     <input type=\"file\" id=\"sch-file\" accept=\".xlsx,.xls\" style=\"display:none\">\r\n     <button class=\"sch-btn-primary\" id=\"sch-btn-import\" type=\"button\">Importa Excel<\/button>\r\n     <button class=\"sch-btn-danger\" id=\"sch-btn-reset\" type=\"button\">Azzera<\/button>\r\n    <\/div>\r\n   <\/div>\r\n   <div class=\"sch-results\" id=\"sch-results\">0 risultati<\/div>\r\n   <div class=\"sch-loading\" id=\"sch-loading\">Caricamento&#8230;<\/div>\r\n   <div class=\"sch-empty\" id=\"sch-empty\"><h3>Nessun listino caricato<\/h3><p>Importa il file Excel del listino Schlueter per iniziare a consultarlo.<\/p><\/div>\r\n   <div class=\"sch-table-wrap\"><table class=\"sch-table\" id=\"sch-table\"><thead><\/thead><tbody><\/tbody><\/table><\/div>\r\n  <\/section>\r\n\r\n  <!-- ORDINI PANEL -->\r\n  <section class=\"sch-panel\" id=\"sch-panel-ordini\">\r\n   <div class=\"sch-ord-toolbar\">\r\n    <div class=\"sch-ord-toolbar-left\">\r\n     <h3 class=\"sch-ord-title\"><span class=\"icon-tag\">O<\/span>Ordini Clienti<\/h3>\r\n    <\/div>\r\n    <div class=\"sch-ord-toolbar-actions\">\r\n     <button class=\"sch-btn-secondary\" id=\"ord-clear\" type=\"button\">Svuota<\/button>\r\n     <button class=\"sch-btn-orange-dark\" id=\"ord-savepdf\" type=\"button\">\r\n      <svg viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\/><polyline points=\"14 2 14 8 20 8\"\/><line x1=\"12\" y1=\"18\" x2=\"12\" y2=\"12\"\/><polyline points=\"9 15 12 18 15 15\"\/><\/svg>\r\n      Scarica PDF\r\n     <\/button>\r\n     <button class=\"sch-btn-secondary\" id=\"ord-email\" type=\"button\">Invia per email<\/button>\r\n     <button class=\"sch-btn-primary\" id=\"ord-print\" type=\"button\">Stampa<\/button>\r\n    <\/div>\r\n   <\/div>\r\n   <div class=\"sch-ord-scroll\">\r\n    <div id=\"ord-printable\">\r\n     <div class=\"ord-h\">\r\n      <div class=\"ord-h-left\">\r\n       <div class=\"ord-logo-area\"><img class=\"sch-logo-img\" alt=\"Logo\"><\/div>\r\n       <div class=\"ord-ord-info\">\r\n        <div class=\"row\"><label>Ordine N\u00b0:<\/label><input id=\"ord-ordNum\" type=\"text\"><\/div>\r\n        <div class=\"row\"><label>Del:<\/label><input id=\"ord-ordDel\" type=\"date\"><\/div>\r\n        <div class=\"row\"><label>Evasione:<\/label><input id=\"ord-ordEvas\" type=\"text\"><\/div>\r\n        <div class=\"row\"><label>Data Consegna:<\/label><input id=\"ord-ordCons\" type=\"date\"><\/div>\r\n        <div class=\"row\"><label>Rif. Cliente:<\/label><input id=\"ord-ordRif\" type=\"text\"><\/div>\r\n       <\/div>\r\n      <\/div>\r\n      <div class=\"ord-h-right\">\r\n       <div class=\"row\"><label>AGENTE\/FUNZ.:<\/label><input id=\"ord-agente\" type=\"text\"><\/div>\r\n       <div class=\"row\"><label>Indirizzo riga 1:<\/label><input id=\"ord-agInd1\" type=\"text\"><\/div>\r\n       <div class=\"row\"><label>Indirizzo riga 2:<\/label><input id=\"ord-agInd2\" type=\"text\"><\/div>\r\n       <div class=\"row\"><label>P.IVA:<\/label><input id=\"ord-agPIVA\" type=\"text\"><\/div>\r\n       <div class=\"row\"><label>TEL\/CELL:<\/label><input id=\"ord-agTel\" type=\"text\"><\/div>\r\n       <div class=\"row\"><label>Email:<\/label><input id=\"ord-agEmail\" type=\"email\"><\/div>\r\n      <\/div>\r\n     <\/div>\r\n     <div class=\"ord-title\">PROPOSTA D&#8217;ORDINE<\/div>\r\n     <div class=\"ord-block\">\r\n      <div class=\"cell\"><label>CLIENTE:<\/label><input id=\"ord-cliente\" type=\"text\"><\/div>\r\n      <div class=\"cell\"><label>Cod. Rif.Ditta:<\/label><input id=\"ord-cliRif\" type=\"text\"><\/div>\r\n      <div class=\"cell\"><label>Indirizzo:<\/label><input id=\"ord-cliInd\" type=\"text\"><\/div>\r\n      <div class=\"cell\"><label>Cod. Fisc.:<\/label><input id=\"ord-cliCF\" type=\"text\"><\/div>\r\n      <div class=\"cell\"><label>Localit\u00e0:<\/label><input id=\"ord-cliLoc\" type=\"text\"><\/div>\r\n      <div class=\"cell\"><label>P.IVA:<\/label><input id=\"ord-cliPIVA\" type=\"text\"><\/div>\r\n      <div class=\"cell\"><label>Tel\/Fax:<\/label><input id=\"ord-cliTel\" type=\"text\"><\/div>\r\n      <div class=\"cell\"><label>Pagamento:<\/label><input id=\"ord-cliPag\" type=\"text\"><\/div>\r\n      <div class=\"cell\"><label>Email:<\/label><input id=\"ord-cliEmail\" type=\"email\"><\/div>\r\n      <div class=\"cell\"><label>Banca:<\/label><input id=\"ord-cliBanca\" type=\"text\"><\/div>\r\n      <div class=\"cell\"><label>SDI:<\/label><input id=\"ord-cliSDI\" type=\"text\"><\/div>\r\n      <div class=\"cell\"><label>IBAN:<\/label><input id=\"ord-cliIBAN\" type=\"text\"><\/div>\r\n      <div class=\"cell\"><label>Cellulare:<\/label><input id=\"ord-cliCell\" type=\"text\"><\/div>\r\n      <div class=\"cell cell-chiusure\"><label>1\u00b0 gg Chiusura:<\/label><input id=\"ord-cliGG1\" type=\"date\"><label>2\u00b0 gg Chiusura:<\/label><input id=\"ord-cliGG2\" type=\"date\"><\/div>\r\n     <\/div>\r\n     <div class=\"ord-block dest\"><div class=\"cell\"><label>Destinazione e<br>Scarico Merci:<\/label><textarea id=\"ord-dest\"><\/textarea><\/div><\/div>\r\n     <div class=\"ord-warn\">SALVO APPROVAZIONE DELLA CASA MANDANTE<\/div>\r\n     <div class=\"ord-tbl-wrap\">\r\n      <table class=\"ord-tbl\">\r\n       <colgroup>\r\n        <col class=\"c-pos\"><col class=\"c-cod\"><col class=\"c-desc\"><col class=\"c-qt\"><col class=\"c-fc\"><col class=\"c-tot\"><col class=\"c-um\"><col class=\"c-pz\"><col class=\"c-sc\"><col class=\"c-imp\">\r\n       <\/colgroup>\r\n       <thead><tr>\r\n        <th>POS<\/th><th>COD ART.<\/th><th>DESCRIZIONE<\/th><th>QT PZ<\/th><th>FATT. CONV<\/th><th>TOTALE UM<\/th><th>U.M.<\/th><th>PREZZO UNITARIO<\/th><th>SCONTI<\/th><th>IMPORTO<\/th>\r\n       <\/tr><\/thead>\r\n       <tbody id=\"ord-rows\"><\/tbody>\r\n      <\/table>\r\n     <\/div>\r\n     <div class=\"ord-foot\">\r\n      <div class=\"note ord-cond-inline\"><strong>CONDIZIONI DI FORNITURA<\/strong>1 &#8211; Il presente ordine offerta materiali \u00e8 subordinata all&#8217;accettazione da parte della DITTA VENDITRICE. 2 &#8211; L&#8217;accettazione dell&#8217;ordine non comporta di per s\u00e9 l&#8217;accettazione di eventuali modifiche alle condizioni generali di contratto; esse si intenderanno accettate solo se il consenso scritto da parte della DITTA VENDITRICE sia stato specificatamente manifestato in riferimento alla singola modifica. 3 &#8211; Salvo diverso accordo scritto, tutti i prezzi si intendono franco magazzino DITTA VENDITRICE e sono comprensivi delle spese di imballaggio standard ove previsto. 4 &#8211; Sono esclusi dalla presente fornitura ogni altro accessorio non espressamente riportato nell&#8217;offerta. 5 &#8211; L&#8217;offerta \u00e8 subordinata alla regolare accettazione delle schede tecniche e\/o delle specifiche indicate con la presente. 6 &#8211; I termini di consegna hanno valore indicativo e non essenziale. 7 &#8211; Per qualunque controversia tra le parti la competenza spetter\u00e0 in via esclusiva all&#8217;Autorit\u00e0 Giudiziaria del Foro sede della DITTA VENDITRICE. 8 &#8211; Consenso al trattamento dei dati personali ai sensi dell&#8217;Art.13 del D.lgs 30.06.2003 n.196.<\/div>\r\n      <div class=\"totals\">\r\n       <div class=\"lbl\">PORTO<\/div><div class=\"val\"><select id=\"ord-porto\"><option value=\"\">&#8212; seleziona &#8212;<\/option><option>Porto Assegnato<\/option><option>F.co Destino<\/option><option>F.co Destino + Add<\/option><\/select><\/div>\r\n       <div class=\"lbl\">NETTO MERCE<\/div><div class=\"val\" id=\"ord-netto\">0,00<\/div>\r\n       <div class=\"lbl\">SCONTO CASSA<\/div><div class=\"val\"><input id=\"ord-sccassa\" type=\"text\"><\/div>\r\n       <div class=\"lbl\">Imponibile IVA<\/div><div class=\"val\" id=\"ord-imponibile\">0,00<\/div>\r\n       <div class=\"lbl\">IVA 22%<\/div><div class=\"val\" id=\"ord-iva\">0,00<\/div>\r\n       <div class=\"lbl total-final-lbl\">TOT ORDINE<\/div><div class=\"val total-final-val\" id=\"ord-tot\">0,00<\/div>\r\n      <\/div>\r\n     <\/div>\r\n     <div class=\"ord-sign\">\r\n      <div class=\"col\">Timbro e Firma Cliente<\/div>\r\n      <div class=\"col\">L&#8217;Agente<\/div>\r\n     <\/div>\r\n    <\/div>\r\n   <\/div>\r\n  <\/section>\r\n\r\n <\/div>\r\n <!-- SETTINGS MODAL -->\r\n <div class=\"sch-modal\" id=\"sch-modal-settings\" aria-hidden=\"true\">\r\n  <div class=\"sch-modal-body\">\r\n   <div class=\"sch-modal-header\">\r\n    <h2>\r\n     <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"3\"\/><path d=\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 1 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 1 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 1 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 1 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z\"\/><\/svg>\r\n     Impostazioni\r\n    <\/h2>\r\n    <button class=\"sch-modal-close\" id=\"sch-modal-close\" type=\"button\" aria-label=\"Chiudi\">\r\n     <svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"\/><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"\/><\/svg>\r\n    <\/button>\r\n   <\/div>\r\n   <div class=\"sch-modal-content\">\r\n    <div class=\"sch-modal-row\">\r\n     <div class=\"preview\">\r\n      <img class=\"sch-logo-img\" alt=\"Logo intestazione\" style=\"max-height:64px;max-width:200px\">\r\n      <span class=\"placeholder\" id=\"sch-logo-placeholder\">Anteprima logo<\/span>\r\n     <\/div>\r\n     <div class=\"info\">\r\n      <h4>Logo Intestazione<\/h4>\r\n      <p id=\"sch-logo-status\">Nessun logo caricato<\/p>\r\n      <div class=\"actions\">\r\n       <input type=\"file\" id=\"sch-logo-file\" accept=\"image\/jpeg,image\/png,image\/tiff,.jpg,.jpeg,.tif,.tiff,.png\" style=\"display:none\">\r\n       <button class=\"sch-btn-primary\" id=\"sch-logo-upload\" type=\"button\">Carica logo<\/button>\r\n       <button class=\"sch-btn-danger\" id=\"sch-logo-delete\" type=\"button\" style=\"display:none\">Rimuovi<\/button>\r\n      <\/div>\r\n     <\/div>\r\n    <\/div>\r\n   <\/div>\r\n  <\/div>\r\n <\/div>\r\n <div class=\"sch-toast\" id=\"sch-toast\">OK<\/div>\r\n<\/div>\r\n<script src=\"data:text\/javascript;base64,KGZ1bmN0aW9uKCl7CnZhciBVU0VSPSdzY2hsdWV0ZXInOwp2YXIgQVBJPScvd3AtanNvbi9uZy92MSc7CnZhciAkPWZ1bmN0aW9uKHMscil7cmV0dXJuIChyfHxkb2N1bWVudCkucXVlcnlTZWxlY3RvcihzKTt9Owp2YXIgJCQ9ZnVuY3Rpb24ocyxyKXtyZXR1cm4gQXJyYXkuZnJvbSgocnx8ZG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3JBbGwocykpO307CnZhciBub25jZT0nJzsKdmFyIGxpc3Rpbm89e2l0ZW1zOltdLGNvbHM6W10sZmlsdGVyZWQ6W119Owp2YXIgbG9nbz1udWxsOwp2YXIgUk9XUz0yMDsKCmZ1bmN0aW9uIGxvYWRMaWIoc3JjLGNiKXsKICBpZih3aW5kb3cuX19saWJzJiZ3aW5kb3cuX19saWJzW3NyY10pe2NiKCk7cmV0dXJuO30KICB2YXIgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICBzLnNyYz1zcmM7CiAgcy5vbmxvYWQ9ZnVuY3Rpb24oKXt3aW5kb3cuX19saWJzPXdpbmRvdy5fX2xpYnN8fHt9O3dpbmRvdy5fX2xpYnNbc3JjXT0xO2NiKCk7fTsKICBzLm9uZXJyb3I9ZnVuY3Rpb24oKXthbGVydCgnRXJyb3JlIGNhcmljYW1lbnRvIGxpYnJlcmlhOiAnK3NyYyk7fTsKICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHMpOwp9CmZ1bmN0aW9uIGdldE5vbmNlKGNiKXsKICBmZXRjaCgnL3dwLWFkbWluL2FkbWluLWFqYXgucGhwP2FjdGlvbj1yZXN0LW5vbmNlJyx7Y3JlZGVudGlhbHM6J3NhbWUtb3JpZ2luJ30pCiAgICAudGhlbihmdW5jdGlvbihyKXtyZXR1cm4gci50ZXh0KCk7fSkKICAgIC50aGVuKGZ1bmN0aW9uKG4pe25vbmNlPW4udHJpbSgpO2NiKCk7fSk7Cn0KZnVuY3Rpb24gZXNjKHMpe3JldHVybiBTdHJpbmcocz09bnVsbD8nJzpzKS5yZXBsYWNlKC9bJjw+Il0vZyxmdW5jdGlvbihjKXtyZXR1cm4oeycmJzonJmFtcDsnLCc8JzonJmx0OycsJz4nOicmZ3Q7JywnIic6JyZxdW90Oyd9W2NdKTt9KTt9CmZ1bmN0aW9uIG51bSh2KXsKICBpZih2PT1udWxsfHx2PT09JycpcmV0dXJuIDA7CiAgdmFyIHM9U3RyaW5nKHYpLnRyaW0oKTsKICB2YXIgbGFzdENvbW1hPXMubGFzdEluZGV4T2YoJywnKTsKICB2YXIgbGFzdERvdD1zLmxhc3RJbmRleE9mKCcuJyk7CiAgaWYobGFzdENvbW1hPj0wJiZsYXN0RG90Pj0wKXsKICAgIC8vIEVudHJhbWJpIGkgc2VwYXJhdG9yaSBwcmVzZW50aTogbCd1bHRpbW8gw6ggaWwgZGVjaW1hbGUsIGdsaSBhbHRyaSBtaWdsaWFpYQogICAgaWYobGFzdENvbW1hPmxhc3REb3QpewogICAgICAvLyBGb3JtYXRvIElUICIxLjc2NSwzOSIg4oaSIDE3NjUuMzkKICAgICAgcz1zLnJlcGxhY2UoL1wuL2csJycpLnJlcGxhY2UoJywnLCcuJyk7CiAgICB9ZWxzZXsKICAgICAgLy8gRm9ybWF0byBVUyAiMSw3NjUuMzkiIOKGkiAxNzY1LjM5CiAgICAgIHM9cy5yZXBsYWNlKC8sL2csJycpOwogICAgfQogIH1lbHNlIGlmKGxhc3RDb21tYT49MCl7CiAgICAvLyBTb2xvIHZpcmdvbGE6IHRyYXR0YSBjb21lIGRlY2ltYWxlIGl0YWxpYW5vICIxMiwzNCIg4oaSICIxMi4zNCIKICAgIHM9cy5yZXBsYWNlKCcsJywnLicpOwogIH1lbHNlIGlmKGxhc3REb3Q+PTApewogICAgLy8gU29sbyBwdW50bzogZGlzdGluZ3VpIHRyYSBkZWNpbWFsZSAoIjQuMjIiKSBlIG1pZ2xpYWlhIGl0YWxpYW5vICgiMS4yMzQiKQogICAgLy8gU2UgZXNhdHRhbWVudGUgMyBjaWZyZSBkb3BvIGlsIHB1bnRvIEUgcGFydGUgaW50ZXJhIDwgNCBjaWZyZSDihpIgbWlnbGlhaWEKICAgIHZhciBtPXMubWF0Y2goL14tP1xkK1wuKFxkKykkLyk7CiAgICBpZihtJiZtWzFdLmxlbmd0aD09PTMmJiEvXi0\/XGR7NCx9XC4vLnRlc3Qocykpcz1zLnJlcGxhY2UoJy4nLCcnKTsKICB9CiAgdmFyIG49cGFyc2VGbG9hdChzKTsKICByZXR1cm4gaXNOYU4obik\/MDpuOwp9CmZ1bmN0aW9uIGZtdE1vbmV5KG4pewogIC8vIHVzZUdyb3VwaW5nOidhbHdheXMnIGZvcnphIGlsIHNlcGFyYXRvcmUgbWlnbGlhaWEgYW5jaGUgcGVyIDEwMDAtOTk5OSAoaXQtSVQgbG8gb21ldHRlcmViYmUpLgogIHZhciB4PU1hdGgucm91bmQobioxMDApLzEwMDsKICB0cnl7cmV0dXJuIHgudG9Mb2NhbGVTdHJpbmcoJ2l0LUlUJyx7bWluaW11bUZyYWN0aW9uRGlnaXRzOjIsbWF4aW11bUZyYWN0aW9uRGlnaXRzOjIsdXNlR3JvdXBpbmc6J2Fsd2F5cyd9KTt9CiAgY2F0Y2goZSl7CiAgICAvLyBGYWxsYmFjayBwZXIgYnJvd3NlciB2ZWNjaGkgY2hlIG5vbiBzdXBwb3J0YW5vIHVzZUdyb3VwaW5nOidhbHdheXMnCiAgICB2YXIgcz14LnRvRml4ZWQoMikscD1zLnNwbGl0KCcuJyksaT1wWzBdLGQ9cFsxXTsKICAgIHZhciBuZWc9aS5jaGFyQXQoMCk9PT0nLSc7aWYobmVnKWk9aS5zbGljZSgxKTsKICAgIGk9aS5yZXBsYWNlKC9cQig\/PShcZHszfSkrKD8hXGQpKS9nLCcuJyk7CiAgICByZXR1cm4gKG5lZz8nLSc6JycpK2krJywnK2Q7CiAgfQp9CmZ1bmN0aW9uIGZtdE51bWJlcihuKXtpZihuPT09Jyd8fG49PW51bGwpcmV0dXJuICcnO3JldHVybiBOdW1iZXIobikudG9Mb2NhbGVTdHJpbmcoJ2l0LUlUJyx7bWF4aW11bUZyYWN0aW9uRGlnaXRzOjR9KTt9CgovKiAtLS0tLS0tLS0tIExJU1RJTk8gLS0tLS0tLS0tLSAqLwpmdW5jdGlvbiBsb2FkTGlzdGlub0RhdGEoY2IpewogIGZldGNoKEFQSSsnL2xpc3Rpbm8vJytVU0VSLHtjcmVkZW50aWFsczonc2FtZS1vcmlnaW4nLGhlYWRlcnM6eydYLVdQLU5vbmNlJzpub25jZX19KQogICAgLnRoZW4oZnVuY3Rpb24ocil7cmV0dXJuIHIuanNvbigpO30pCiAgICAudGhlbihmdW5jdGlvbihkYXRhKXsKICAgICAgbGlzdGluby5pdGVtcz1kYXRhLml0ZW1zfHxbXTsKICAgICAgbGlzdGluby5jb2xzPWRhdGEuY29sdW1uc3x8KGxpc3Rpbm8uaXRlbXNbMF0\/T2JqZWN0LmtleXMobGlzdGluby5pdGVtc1swXSk6W10pOwogICAgICB2YXIgYz0kKCcjc2NoLWNvdW50Jyk7aWYoYyljLnRleHRDb250ZW50PWxpc3Rpbm8uaXRlbXMubGVuZ3RoLnRvTG9jYWxlU3RyaW5nKCdpdC1JVCcpKycgYXJ0aWNvbGknOwogICAgICB2YXIgdT0kKCcjc2NoLXVwZGF0ZWQnKTtpZih1KXUudGV4dENvbnRlbnQ9ZGF0YS51cGRhdGVkX2F0PydVbHRpbW8gYWdnaW9ybmFtZW50bzogJytkYXRhLnVwZGF0ZWRfYXQ6J05lc3N1biBsaXN0aW5vIGNhcmljYXRvJzsKICAgICAgaWYoY2IpY2IoKTsKICAgICAgcmVuZGVyTGlzdGlub1RhYmxlKCk7CiAgICB9KQogICAgLmNhdGNoKGZ1bmN0aW9uKGUpe2lmKGNiKWNiKCk7fSk7Cn0KZnVuY3Rpb24gcmVuZGVyTGlzdGlub1RhYmxlKCl7CiAgdmFyIHRhYmxlRWw9JCgnI3NjaC10YWJsZScpO2lmKCF0YWJsZUVsKXJldHVybjsKICB2YXIgcT0kKCcjc2NoLXNlYXJjaCcpLnZhbHVlLnRvTG93ZXJDYXNlKCkudHJpbSgpOwogIGxpc3Rpbm8uZmlsdGVyZWQ9cT9saXN0aW5vLml0ZW1zLmZpbHRlcihmdW5jdGlvbihyb3cpe3JldHVybiBsaXN0aW5vLmNvbHMuc29tZShmdW5jdGlvbihjKXtyZXR1cm4gU3RyaW5nKHJvd1tjXXx8JycpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihxKSE9PS0xO30pO30pOmxpc3Rpbm8uaXRlbXM7CiAgJCgnI3NjaC1yZXN1bHRzJykudGV4dENvbnRlbnQ9bGlzdGluby5maWx0ZXJlZC5sZW5ndGgudG9Mb2NhbGVTdHJpbmcoJ2l0LUlUJykrJyByaXN1bHRhdGknOwogIHZhciB0aGVhZD10YWJsZUVsLnF1ZXJ5U2VsZWN0b3IoJ3RoZWFkJyk7CiAgdGhlYWQuaW5uZXJIVE1MPSc8dHI+JytsaXN0aW5vLmNvbHMubWFwKGZ1bmN0aW9uKGMpe3JldHVybic8dGg+Jytlc2MoYykrJzwvdGg+Jzt9KS5qb2luKCcnKSsnPC90cj4nOwogIHZhciB0Ym9keT10YWJsZUVsLnF1ZXJ5U2VsZWN0b3IoJ3Rib2R5Jyk7CiAgdmFyIHZpc2libGU9bGlzdGluby5maWx0ZXJlZC5zbGljZSgwLDMwMCk7CiAgdGJvZHkuaW5uZXJIVE1MPXZpc2libGUubWFwKGZ1bmN0aW9uKHJvdyl7CiAgICByZXR1cm4nPHRyPicrbGlzdGluby5jb2xzLm1hcChmdW5jdGlvbihjKXt2YXIgdj1yb3dbY107dmFyIG49cGFyc2VGbG9hdCh2KTt2YXIgaXNOdW09IWlzTmFOKG4pJiZpc0Zpbml0ZShuKSYmU3RyaW5nKHYpLm1hdGNoKC9eLT9bMC05LixdKyQvKTtyZXR1cm4nPHRkJysoaXNOdW0\/JyBjbGFzcz0ibnVtIic6JycpKyc+Jytlc2ModikrJzwvdGQ+Jzt9KS5qb2luKCcnKSsnPC90cj4nOwogIH0pLmpvaW4oJycpOwogIGlmKGxpc3Rpbm8uZmlsdGVyZWQubGVuZ3RoPjMwMCl7CiAgICB0Ym9keS5pbm5lckhUTUwrPSc8dHIgY2xhc3M9Im1vcmUiPjx0ZCBjb2xzcGFuPSInK2xpc3Rpbm8uY29scy5sZW5ndGgrJyI+Li4uIGUgYWx0cmkgJysobGlzdGluby5maWx0ZXJlZC5sZW5ndGgtMzAwKS50b0xvY2FsZVN0cmluZygnaXQtSVQnKSsnIGFydGljb2xpLiBBZmZpbmEgbGEgcmljZXJjYS48L3RkPjwvdHI+JzsKICB9CiAgJCgnI3NjaC1lbXB0eScpLnN0eWxlLmRpc3BsYXk9bGlzdGluby5pdGVtcy5sZW5ndGg9PT0wPydibG9jayc6J25vbmUnOwp9CmZ1bmN0aW9uIHNlYXJjaExpc3Rpbm9JdGVtcyhxdWVyeSl7CiAgaWYoIXF1ZXJ5KXJldHVybiBbXTsKICB2YXIgcT1TdHJpbmcocXVlcnkpLnRvTG93ZXJDYXNlKCkudHJpbSgpOwogIGlmKCFxKXJldHVybiBbXTsKICAvLyBTY2Fuc2lvbmEgVFVUVEkgZ2xpIGFydGljb2xpIGUgcmFua2luZyBwZXIgcmlsZXZhbnphOgogIC8vICAxLiBjb2RlIGVzYXR0bwogIC8vICAyLiBjb2RlIGNoZSBpbml6aWEgY29uIHEKICAvLyAgMy4gY29kZSBjaGUgY29udGllbmUgcQogIC8vICA0LiBkZXNjcml6aW9uZSBjaGUgY29udGllbmUgcQogIHZhciBleGFjdD1bXSxwcmVmaXg9W10sc3Vic3RyPVtdLGJ5RGVzYz1bXTsKICBmb3IodmFyIGk9MDtpPGxpc3Rpbm8uaXRlbXMubGVuZ3RoO2krKyl7CiAgICB2YXIgaXQ9bGlzdGluby5pdGVtc1tpXTsKICAgIHZhciBjb2RlPVN0cmluZyhpdFsnQ09ELiBBUlQuJ118fCcnKS50b0xvd2VyQ2FzZSgpOwogICAgdmFyIGRlc2M9U3RyaW5nKGl0WydERVNDUklaSU9ORSddfHwnJykudG9Mb3dlckNhc2UoKTsKICAgIGlmKGNvZGU9PT1xKXtleGFjdC5wdXNoKGl0KTtjb250aW51ZTt9CiAgICBpZihjb2RlLmluZGV4T2YocSk9PT0wKXtwcmVmaXgucHVzaChpdCk7Y29udGludWU7fQogICAgaWYoY29kZS5pbmRleE9mKHEpPjApe3N1YnN0ci5wdXNoKGl0KTtjb250aW51ZTt9CiAgICBpZihkZXNjLmluZGV4T2YocSkhPT0tMSl7YnlEZXNjLnB1c2goaXQpO2NvbnRpbnVlO30KICB9CiAgLy8gTGltaXRlIGFsdG86IGlsIGRyb3Bkb3duIMOoIHNjcm9sbGFiaWxlIChtYXgtaGVpZ2h0IDM0MHB4IGluIENTUykKICByZXR1cm4gZXhhY3QuY29uY2F0KHByZWZpeCkuY29uY2F0KHN1YnN0cikuY29uY2F0KGJ5RGVzYykuc2xpY2UoMCwyMDApOwp9CgovKiAtLS0tLS0tLS0tIExPR08gLS0tLS0tLS0tLSAqLwp2YXIgTE9HT19MU19LRVk9J25nX2xvZ29fc2NobHVldGVyJzsKZnVuY3Rpb24gbG9hZExvZ28oKXsKICAvLyBUcnkgc2VydmVyIGZpcnN0CiAgZmV0Y2goQVBJKycvbG9nby8nK1VTRVIse2NyZWRlbnRpYWxzOidzYW1lLW9yaWdpbicsaGVhZGVyczp7J1gtV1AtTm9uY2UnOm5vbmNlfX0pCiAgICAudGhlbihmdW5jdGlvbihyKXsKICAgICAgaWYoci5zdGF0dXM9PT00MDQpewogICAgICAgIC8vIEZhbGxiYWNrOiBsb2NhbFN0b3JhZ2UKICAgICAgICB0cnl7bG9nbz1sb2NhbFN0b3JhZ2UuZ2V0SXRlbShMT0dPX0xTX0tFWSl8fG51bGw7fWNhdGNoKGUpe2xvZ289bnVsbDt9CiAgICAgICAgcmVuZGVyTG9nbygpOwogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CiAgICAgIHJldHVybiByLmpzb24oKTsKICAgIH0pCiAgICAudGhlbihmdW5jdGlvbihkKXsKICAgICAgaWYoZCl7bG9nbz1kLmRhdGFVcmx8fG51bGw7cmVuZGVyTG9nbygpO30KICAgIH0pCiAgICAuY2F0Y2goZnVuY3Rpb24oKXsKICAgICAgdHJ5e2xvZ289bG9jYWxTdG9yYWdlLmdldEl0ZW0oTE9HT19MU19LRVkpfHxudWxsO31jYXRjaChlKXtsb2dvPW51bGw7fQogICAgICByZW5kZXJMb2dvKCk7CiAgICB9KTsKfQpmdW5jdGlvbiByZW5kZXJMb2dvKCl7CiAgdmFyIGltZ3M9JCQoJy5zY2gtbG9nby1pbWcnKTsKICBpbWdzLmZvckVhY2goZnVuY3Rpb24oaW1nKXsKICAgIGlmKGxvZ28pe2ltZy5zcmM9bG9nbztpbWcuc3R5bGUuZGlzcGxheT0nYmxvY2snO30KICAgIGVsc2V7aW1nLnJlbW92ZUF0dHJpYnV0ZSgnc3JjJyk7aW1nLnN0eWxlLmRpc3BsYXk9J25vbmUnO30KICB9KTsKICB2YXIgc3RhdHVzPSQoJyNzY2gtbG9nby1zdGF0dXMnKTsKICBpZihzdGF0dXMpc3RhdHVzLnRleHRDb250ZW50PWxvZ28\/J0xvZ28gY2FyaWNhdG8nOidOZXNzdW4gbG9nbyBjYXJpY2F0byc7CiAgdmFyIGRlbD0kKCcjc2NoLWxvZ28tZGVsZXRlJyk7aWYoZGVsKWRlbC5zdHlsZS5kaXNwbGF5PWxvZ28\/J2lubGluZS1mbGV4Jzonbm9uZSc7CiAgdmFyIHBoPSQoJyNzY2gtbG9nby1wbGFjZWhvbGRlcicpO2lmKHBoKXBoLnN0eWxlLmRpc3BsYXk9bG9nbz8nbm9uZSc6J2Jsb2NrJzsKfQpmdW5jdGlvbiB1cGxvYWRMb2dvKGZpbGUpewogIGlmKCFmaWxlKXJldHVybjsKICBpZighZmlsZS50eXBlLm1hdGNoKC9eaW1hZ2VcLyhqcGVnfGpwZ3xwbmd8dGlmZnx0aWZ8Z2lmfHdlYnApJC9pKSl7CiAgICBhbGVydCgnRm9ybWF0byBub24gc3VwcG9ydGF0by4gVXNhIEpQRywgUE5HLCBUSUZGLicpO3JldHVybjsKICB9CiAgaWYoZmlsZS5zaXplPjUqMTAyNCoxMDI0KXthbGVydCgnRmlsZSB0cm9wcG8gZ3JhbmRlIChtYXggNU1CKS4nKTtyZXR1cm47fQogIHZhciByZWFkZXI9bmV3IEZpbGVSZWFkZXIoKTsKICByZWFkZXIub25sb2FkPWZ1bmN0aW9uKGUpewogICAgdmFyIGRhdGFVcmw9ZS50YXJnZXQucmVzdWx0OwogICAgdmFyIHN0YXR1cz0kKCcjc2NoLWxvZ28tc3RhdHVzJyk7aWYoc3RhdHVzKXN0YXR1cy50ZXh0Q29udGVudD0nQ2FyaWNhbWVudG8uLi4nOwogICAgLy8gU2F2ZSBsb2NhbGx5IGltbWVkaWF0ZWx5IHNvIGl0J3MgYWx3YXlzIGF2YWlsYWJsZQogICAgdHJ5e2xvY2FsU3RvcmFnZS5zZXRJdGVtKExPR09fTFNfS0VZLGRhdGFVcmwpO31jYXRjaChlcnIpe30KICAgIC8vIFRyeSBzZXJ2ZXIsIGZhbGwgYmFjayB0byBsb2NhbFN0b3JhZ2Ugb25seSBvbiBmYWlsdXJlCiAgICBmZXRjaChBUEkrJy9sb2dvLycrVVNFUix7CiAgICAgIG1ldGhvZDonUE9TVCcsY3JlZGVudGlhbHM6J3NhbWUtb3JpZ2luJywKICAgICAgaGVhZGVyczp7J1gtV1AtTm9uY2UnOm5vbmNlLCdDb250ZW50LVR5cGUnOidhcHBsaWNhdGlvbi9qc29uJ30sCiAgICAgIGJvZHk6SlNPTi5zdHJpbmdpZnkoe2RhdGFVcmw6ZGF0YVVybH0pCiAgICB9KQogICAgLnRoZW4oZnVuY3Rpb24ocil7cmV0dXJuIHIuc3RhdHVzPT09NDA0P3tvazp0cnVlLGxvY2FsOnRydWV9OnIuanNvbigpO30pCiAgICAudGhlbihmdW5jdGlvbihyZXMpewogICAgICBpZihyZXMub2t8fHJlcy5sb2NhbCl7bG9nbz1kYXRhVXJsO3JlbmRlckxvZ28oKTt0b2FzdChyZXMubG9jYWw\/J0xvZ28gYWdnaW9ybmF0byAobG9jYWxlKSc6J0xvZ28gYWdnaW9ybmF0bycpO30KICAgICAgZWxzZSBhbGVydCgnRXJyb3JlOiAnKyhyZXMubWVzc2FnZXx8SlNPTi5zdHJpbmdpZnkocmVzKSkpOwogICAgfSk7CiAgfTsKICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTsKfQpmdW5jdGlvbiBkZWxldGVMb2dvKCl7CiAgaWYoIWNvbmZpcm0oJ0VsaW1pbmFyZSBpbCBsb2dvIGNhcmljYXRvPycpKXJldHVybjsKICB0cnl7bG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oTE9HT19MU19LRVkpO31jYXRjaChlKXt9CiAgZmV0Y2goQVBJKycvbG9nby8nK1VTRVIse21ldGhvZDonREVMRVRFJyxjcmVkZW50aWFsczonc2FtZS1vcmlnaW4nLGhlYWRlcnM6eydYLVdQLU5vbmNlJzpub25jZX19KQogICAgLmNhdGNoKGZ1bmN0aW9uKCl7fSkKICAgIC5maW5hbGx5KGZ1bmN0aW9uKCl7bG9nbz1udWxsO3JlbmRlckxvZ28oKTt0b2FzdCgnTG9nbyBlbGltaW5hdG8nKTt9KTsKfQoKLyogLS0tLS0tLS0tLSBUT0FTVCAtLS0tLS0tLS0tICovCmZ1bmN0aW9uIHRvYXN0KG1zZyx0eXBlKXsKICB2YXIgdD0kKCcjc2NoLXRvYXN0Jyk7aWYoIXQpcmV0dXJuOwogIHQudGV4dENvbnRlbnQ9bXNnOwogIHQuY2xhc3NOYW1lPSdzY2gtdG9hc3QgJysodHlwZXx8J29rJykrJyB2aXNpYmxlJzsKICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dC5jbGFzc05hbWU9J3NjaC10b2FzdCc7fSwyODAwKTsKfQoKLyogLS0tLS0tLS0tLSBPUkRJTkU6IHJvd3MgbWFuYWdlbWVudCAtLS0tLS0tLS0tICovCmZ1bmN0aW9uIGJ1aWxkT3JkZXJSb3dzKCl7CiAgdmFyIHRiPSQoJyNvcmQtcm93cycpO2lmKCF0YilyZXR1cm47CiAgdmFyIGh0bWw9Jyc7CiAgZm9yKHZhciBpPTA7aTxST1dTO2krKyl7CiAgICBodG1sKz0nPHRyIGRhdGEtaT0iJytpKyciPicKICAgICAgKyc8dGQgY2xhc3M9InBvcyI+JysoaSsxKSsnPC90ZD4nCiAgICAgICsnPHRkIGNsYXNzPSJjb2QiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0ib3JkLWNvZCIgZGF0YS1pPSInK2krJyIgYXV0b2NvbXBsZXRlPSJvZmYiIHNwZWxsY2hlY2s9ImZhbHNlIj48L3RkPicKICAgICAgKyc8dGQgY2xhc3M9ImRlc2MiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0ib3JkLWRlc2MiIGRhdGEtaT0iJytpKyciIGF1dG9jb21wbGV0ZT0ib2ZmIiBzcGVsbGNoZWNrPSJmYWxzZSI+PC90ZD4nCiAgICAgICsnPHRkIGNsYXNzPSJxdCI+PGlucHV0IHR5cGU9Im51bWJlciIgY2xhc3M9Im9yZC1xdCIgZGF0YS1pPSInK2krJyIgc3RlcD0iYW55IiBtaW49IjAiPjwvdGQ+JwogICAgICArJzx0ZCBjbGFzcz0iZmMiPjxpbnB1dCB0eXBlPSJudW1iZXIiIGNsYXNzPSJvcmQtZmMiIGRhdGEtaT0iJytpKyciIHN0ZXA9ImFueSIgbWluPSIwIiByZWFkb25seT48L3RkPicKICAgICAgKyc8dGQgY2xhc3M9InRvdCI+PGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJvcmQtdG90IiBkYXRhLWk9IicraSsnIiByZWFkb25seT48L3RkPicKICAgICAgKyc8dGQgY2xhc3M9InVtIj48aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9Im9yZC11bSIgZGF0YS1pPSInK2krJyIgcmVhZG9ubHk+PC90ZD4nCiAgICAgICsnPHRkIGNsYXNzPSJweiI+PGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJvcmQtcHoiIGRhdGEtaT0iJytpKyciIGlucHV0bW9kZT0iZGVjaW1hbCI+PC90ZD4nCiAgICAgICsnPHRkIGNsYXNzPSJzYyI+PGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJvcmQtc2MiIGRhdGEtaT0iJytpKyciPjwvdGQ+JwogICAgICArJzx0ZCBjbGFzcz0iaW1wIj48aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9Im9yZC1pbXAiIGRhdGEtaT0iJytpKyciIHJlYWRvbmx5PjwvdGQ+JwogICAgICArJzwvdHI+JzsKICB9CiAgdGIuaW5uZXJIVE1MPWh0bWw7Cn0KZnVuY3Rpb24gcm93VmFsKGksbmFtZSl7dmFyIGVsPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5vcmQtJytuYW1lKydbZGF0YS1pPSInK2krJyJdJyk7cmV0dXJuIGVsP2VsLnZhbHVlOicnO30KZnVuY3Rpb24gcm93U2V0KGksbmFtZSx2KXt2YXIgZWw9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLm9yZC0nK25hbWUrJ1tkYXRhLWk9IicraSsnIl0nKTtpZihlbCllbC52YWx1ZT0odj09bnVsbD8nJzp2KTt9CmZ1bmN0aW9uIGZpbGxSb3dCeUNvZGUoaSxjb2RlKXsKICBpZighY29kZSl7Y2xlYXJSb3coaSk7cmV0dXJuO30KICB2YXIgaXQ9bGlzdGluby5pdGVtcy5maW5kKGZ1bmN0aW9uKHgpe3JldHVybiBTdHJpbmcoeFsnQ09ELiBBUlQuJ118fCcnKS50b0xvd2VyQ2FzZSgpPT09U3RyaW5nKGNvZGUpLnRvTG93ZXJDYXNlKCk7fSk7CiAgaWYoIWl0KXtyZXR1cm47fQogIHJvd1NldChpLCdjb2QnLGl0WydDT0QuIEFSVC4nXSk7CiAgcm93U2V0KGksJ2Rlc2MnLGl0WydERVNDUklaSU9ORSddKTsKICByb3dTZXQoaSwncXQnLGl0WyJRVEEnIl0pOwogIHJvd1NldChpLCdmYycsaXRbJ0ZBVFRPUkUgREkgQ09OVkVSU0lPTkUnXSk7CiAgcm93U2V0KGksJ3VtJyxpdFsnVS5NLi9QUkVaWk8nXSk7CiAgLy8gUFJFWlpPIERJIExJU1RJTk8gcHXDsiBlc3NlcmUgaW4gZm9ybWF0byBVUyAiMSw3NjUuMzkiIOKGkiBub3JtYWxpenphIGEgSVQgIjEuNzY1LDM5IgogIHZhciBwelJhdz1pdFsnUFJFWlpPIERJIExJU1RJTk8nXTsKICB2YXIgcHpOdW09bnVtKHB6UmF3KTsKICByb3dTZXQoaSwncHonLCBwek51bT9mbXRNb25leShwek51bSkgOiAocHpSYXd8fCcnKSk7CiAgcmVjb21wdXRlUm93KGkpOwp9CmZ1bmN0aW9uIGNsZWFyUm93KGkpewogIFsnY29kJywnZGVzYycsJ3F0JywnZmMnLCd0b3QnLCd1bScsJ3B6Jywnc2MnLCdpbXAnXS5mb3JFYWNoKGZ1bmN0aW9uKG4pe3Jvd1NldChpLG4sJycpO30pOwogIHJlY29tcHV0ZVRvdGFscygpOwp9CmZ1bmN0aW9uIHBhcnNlRGlzY291bnRzKHRleHQpewogIGlmKCF0ZXh0KXJldHVybiAxOwogIHZhciB0PVN0cmluZyh0ZXh0KS5yZXBsYWNlKC87L2csJyAnKS5yZXBsYWNlKC8sL2csJy4nKS50cmltKCk7CiAgdmFyIHBhcnRzPXQuc3BsaXQoL1xzKy8pOwogIHZhciBtdWx0PTE7CiAgZm9yKHZhciBpPTA7aTxwYXJ0cy5sZW5ndGg7aSsrKXsKICAgIHZhciBwPXBhcnRzW2ldLnRyaW0oKTtpZighcCljb250aW51ZTsKICAgIHZhciBuPXBhcnNlRmxvYXQocC5yZXBsYWNlKC8lL2csJycpKTsKICAgIGlmKGlzTmFOKG4pKWNvbnRpbnVlOwogICAgLy8gSSB2YWxvcmkgaW5zZXJpdGkgbmVpIGNhbXBpIHNjb250byBzb25vIHNlbXByZSBwZXJjZW50dWFsaToKICAgIC8vICIxIiBvICIxJSIgLT4gMSUsICIxMCIgbyAiMTAlIiAtPiAxMCUsICIwLDUiIC0+IDAsNSUuCiAgICAvLyBRdWluZGkgZGl2aWRpYW1vIFNFTVBSRSBwZXIgMTAwLCBpbmRpcGVuZGVudGVtZW50ZSBkYWxsYSBwcmVzZW56YSBkZWwgc2ltYm9sbyAlLgogICAgbj1uLzEwMDsKICAgIG11bHQqPSgxLW4pOwogIH0KICByZXR1cm4gbXVsdDsKfQpmdW5jdGlvbiBmb3JtYXRQY3RUZXh0KHRleHQpewogIGlmKCF0ZXh0KXJldHVybiAnJzsKICAvLyBOb3JtYWxpenphOiByaW11b3ZpICUsICssIDsgZSB0cmF0dGEgY29tZSBzZXBhcmF0b3JpOyBwcmVzZXJ2YSB2aXJnb2xhIGRlY2ltYWxlCiAgdmFyIHJhdz1TdHJpbmcodGV4dCkucmVwbGFjZSgvJS9nLCcnKS5yZXBsYWNlKC9cKy9nLCcgJykucmVwbGFjZSgvOy9nLCcgJykudHJpbSgpOwogIHJhdz1yYXcucmVwbGFjZSgvXHMrL2csJyAnKTsKICBpZighcmF3KXJldHVybiAnJzsKICB2YXIgcGFydHM9cmF3LnNwbGl0KCcgJyk7CiAgdmFyIG91dD1bXTsKICBmb3IodmFyIGk9MDtpPHBhcnRzLmxlbmd0aDtpKyspewogICAgdmFyIHA9cGFydHNbaV0udHJpbSgpO2lmKCFwKWNvbnRpbnVlOwogICAgaWYoL14tP1xkKyhbLixdXGQrKT8kLy50ZXN0KHApKXsKICAgICAgLy8gUHJpbW8gc2NvbnRvOiAiMTAlIi4gU3VjY2Vzc2l2aTogIis1IiBzZW56YSAlLgogICAgICBpZihvdXQubGVuZ3RoPT09MClvdXQucHVzaChwKyclJyk7CiAgICAgIGVsc2Ugb3V0LnB1c2goJysnK3ApOwogICAgfWVsc2V7CiAgICAgIG91dC5wdXNoKHApOwogICAgfQogIH0KICByZXR1cm4gb3V0LmpvaW4oJyAnKTsKfQpmdW5jdGlvbiByZWNvbXB1dGVSb3coaSl7CiAgdmFyIHF0PW51bShyb3dWYWwoaSwncXQnKSk7CiAgdmFyIGZjPW51bShyb3dWYWwoaSwnZmMnKSk7CiAgdmFyIHB6PW51bShyb3dWYWwoaSwncHonKSk7CiAgdmFyIHNjPXJvd1ZhbChpLCdzYycpOwogIHZhciB0b3RVbT1xdCYmZmM\/cXQqZmM6MDsKICByb3dTZXQoaSwndG90Jyx0b3RVbT9mbXRNb25leSh0b3RVbSk6JycpOwogIGlmKCF0b3RVbXx8IXB6KXtyb3dTZXQoaSwnaW1wJywnJyk7fQogIGVsc2V7CiAgICB2YXIgaW1wPU1hdGgucm91bmQodG90VW0qcHoqcGFyc2VEaXNjb3VudHMoc2MpKjEwMCkvMTAwOwogICAgcm93U2V0KGksJ2ltcCcsZm10TW9uZXkoaW1wKSk7CiAgfQogIHJlY29tcHV0ZVRvdGFscygpOwp9CmZ1bmN0aW9uIHJlY29tcHV0ZVRvdGFscygpewogIHZhciBuZXR0bz0wOwogIGZvcih2YXIgaT0wO2k8Uk9XUztpKyspewogICAgdmFyIHY9cm93VmFsKGksJ2ltcCcpO2lmKCF2KWNvbnRpbnVlOwogICAgbmV0dG8rPW51bSh2KTsKICB9CiAgJCgnI29yZC1uZXR0bycpLnRleHRDb250ZW50PW5ldHRvP2ZtdE1vbmV5KG5ldHRvKTonMCwwMCc7CiAgdmFyIHNjQ2Fzc2E9JCgnI29yZC1zY2Nhc3NhJykudmFsdWU7CiAgdmFyIGltcG9uaWJpbGU9TWF0aC5yb3VuZChuZXR0bypwYXJzZURpc2NvdW50cyhzY0Nhc3NhKSoxMDApLzEwMDsKICAkKCcjb3JkLWltcG9uaWJpbGUnKS50ZXh0Q29udGVudD1pbXBvbmliaWxlP2ZtdE1vbmV5KGltcG9uaWJpbGUpOicwLDAwJzsKICB2YXIgaXZhPU1hdGgucm91bmQoaW1wb25pYmlsZSowLjIyKjEwMCkvMTAwOwogICQoJyNvcmQtaXZhJykudGV4dENvbnRlbnQ9Zm10TW9uZXkoaXZhKTsKICB2YXIgdG90b3JkPU1hdGgucm91bmQoKGltcG9uaWJpbGUraXZhKSoxMDApLzEwMDsKICAkKCcjb3JkLXRvdCcpLnRleHRDb250ZW50PWZtdE1vbmV5KHRvdG9yZCk7Cn0KCi8qIC0tLS0tLS0tLS0gQVVUT0NPTVBMRVRFIC0tLS0tLS0tLS0gKi8KdmFyIGRyb3Bkb3duPW51bGwsYWN0aXZlSW5wdXQ9bnVsbCxhY3RpdmVSb3c9LTEsYWN0aXZlRmllbGQ9Jyc7CmZ1bmN0aW9uIHNob3dEcm9wZG93bihpbnB1dCxyZXN1bHRzLGZpZWxkLGkpewogIGhpZGVEcm9wZG93bigpOwogIGlmKCFyZXN1bHRzLmxlbmd0aClyZXR1cm47CiAgYWN0aXZlSW5wdXQ9aW5wdXQ7YWN0aXZlUm93PWk7YWN0aXZlRmllbGQ9ZmllbGQ7CiAgdmFyIHJlY3Q9aW5wdXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgZHJvcGRvd249ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgZHJvcGRvd24uY2xhc3NOYW1lPSdzY2gtYWMtZHJvcGRvd24nOwogIC8vIHBvc2l0aW9uOmZpeGVkIHNvIGl0IHN0YXlzIGFuY2hvcmVkIHRvIHRoZSBpbnB1dCBvbiBzY3JvbGwKICBkcm9wZG93bi5zdHlsZS5jc3NUZXh0PSdwb3NpdGlvbjpmaXhlZDtsZWZ0OicrcmVjdC5sZWZ0KydweDt0b3A6JytyZWN0LmJvdHRvbSsncHg7d2lkdGg6JytNYXRoLm1heChyZWN0LndpZHRoLDQ2MCkrJ3B4O21heC1oZWlnaHQ6MzQwcHg7b3ZlcmZsb3cteTphdXRvO292ZXJmbG93LXg6aGlkZGVuO2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNjYmQ1ZTE7Ym9yZGVyLXJhZGl1czo4cHg7Ym94LXNoYWRvdzowIDE4cHggNDBweCByZ2JhKDE1LDI3LDQ1LC4xOCk7ei1pbmRleDo5OTk5OTtmb250LXNpemU6MTNweDstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaCc7CiAgZHJvcGRvd24uaW5uZXJIVE1MPXJlc3VsdHMubWFwKGZ1bmN0aW9uKGl0LGlkeCl7CiAgICB2YXIgYz1lc2MoaXRbJ0NPRC4gQVJULiddfHwnJyk7dmFyIGQ9ZXNjKGl0WydERVNDUklaSU9ORSddfHwnJyk7dmFyIHA9ZXNjKGl0WydQUkVaWk8gREkgTElTVElOTyddfHwnJyk7CiAgICByZXR1cm4gJzxkaXYgY2xhc3M9InNjaC1hYy1pdGVtIiBkYXRhLWlkeD0iJytpZHgrJyIgc3R5bGU9InBhZGRpbmc6OHB4IDEycHg7Y3Vyc29yOnBvaW50ZXI7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2YxZjVmOTtkaXNwbGF5OmZsZXg7Z2FwOjE0cHg7YWxpZ24taXRlbXM6Y2VudGVyIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6TWVubG8sbW9ub3NwYWNlO2NvbG9yOiNGNzhEMUY7bWluLXdpZHRoOjEyMHB4O2ZvbnQtd2VpZ2h0OjYwMCI+JytjKyc8L3NwYW4+PHNwYW4gc3R5bGU9ImZsZXg6MTtjb2xvcjojMWUyOTNiO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcCI+JytkKyc8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiM2NDc0OGI7Zm9udC12YXJpYW50LW51bWVyaWM6dGFidWxhci1udW1zIj4nK3ArJzwvc3Bhbj48L2Rpdj4nOwogIH0pLmpvaW4oJycpOwogIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZHJvcGRvd24pOwogIGRyb3Bkb3duLl9fcmVzdWx0cz1yZXN1bHRzOwogIGRyb3Bkb3duLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsZnVuY3Rpb24oZSl7CiAgICB2YXIgaXQ9ZS50YXJnZXQuY2xvc2VzdCgnLnNjaC1hYy1pdGVtJyk7aWYoIWl0KXJldHVybjsKICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgIHZhciBpZHg9cGFyc2VJbnQoaXQuZGF0YXNldC5pZHgsMTApOwogICAgdmFyIHNlbD1yZXN1bHRzW2lkeF07CiAgICBmaWxsUm93QnlDb2RlKGksc2VsWydDT0QuIEFSVC4nXSk7CiAgICBoaWRlRHJvcGRvd24oKTsKICB9KTsKICAvLyBIb3ZlciBoaWdobGlnaHQgKyBhcnJvdyBrZXkgbmF2aWdhdGlvbiBjb3VsZCBiZSBhZGRlZCBsYXRlcgogIGRyb3Bkb3duLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZW50ZXInLGZ1bmN0aW9uKCl7IGRyb3Bkb3duLl9faG92ZXJpbmc9dHJ1ZTsgfSk7CiAgZHJvcGRvd24uYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsZnVuY3Rpb24oKXsgZHJvcGRvd24uX19ob3ZlcmluZz1mYWxzZTsgfSk7Cn0KZnVuY3Rpb24gaGlkZURyb3Bkb3duKCl7aWYoZHJvcGRvd24pe2Ryb3Bkb3duLnJlbW92ZSgpO2Ryb3Bkb3duPW51bGw7fX0KZnVuY3Rpb24gcmVwb3NpdGlvbkRyb3Bkb3duKCl7CiAgaWYoIWRyb3Bkb3dufHwhYWN0aXZlSW5wdXQpcmV0dXJuOwogIHZhciByZWN0PWFjdGl2ZUlucHV0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogIGRyb3Bkb3duLnN0eWxlLmxlZnQ9cmVjdC5sZWZ0KydweCc7CiAgZHJvcGRvd24uc3R5bGUudG9wPXJlY3QuYm90dG9tKydweCc7Cn0KLy8gSGlkZSBvbmx5IG9uIGNsaWNrIE9VVFNJREUgZHJvcGRvd24gKG5vdCB3aGVuIGNsaWNraW5nIGl0ZW1zIGluc2lkZSkKZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKGUpewogIGlmKCFkcm9wZG93bilyZXR1cm47CiAgaWYoZHJvcGRvd24uY29udGFpbnMoZS50YXJnZXQpfHxlLnRhcmdldD09PWFjdGl2ZUlucHV0KXJldHVybjsKICBoaWRlRHJvcGRvd24oKTsKfSx0cnVlKTsKLy8gT24gcGFnZSBzY3JvbGwsIFJFUE9TSVRJT04gdGhlIGRyb3Bkb3duIOKAlCBkb24ndCBoaWRlLiBPbmx5IGhpZGUgaWYgZHJvcGRvd24gaXNuJ3QgYmVpbmcgc2Nyb2xsZWQgaXRzZWxmLgp3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJyxmdW5jdGlvbihlKXsKICBpZighZHJvcGRvd24pcmV0dXJuOwogIC8vIElmIHNjcm9sbCBoYXBwZW5zIGluc2lkZSB0aGUgZHJvcGRvd24sIGRvIG5vdGhpbmcgKGxldCBpdCBzY3JvbGwgaXRzIGl0ZW1zKQogIGlmKGRyb3Bkb3duLmNvbnRhaW5zKGUudGFyZ2V0KSlyZXR1cm47CiAgLy8gUGFnZSBzY3JvbGw6IHJlcG9zaXRpb24gdGhlIGRyb3Bkb3duIHNvIGl0IGZvbGxvd3MgdGhlIGlucHV0CiAgcmVwb3NpdGlvbkRyb3Bkb3duKCk7CiAgLy8gQWxzbyBjaGVjayBpZiBpbnB1dCBpcyBubyBsb25nZXIgdmlzaWJsZSAob3V0IG9mIHZpZXdwb3J0KQogIGlmKGFjdGl2ZUlucHV0KXsKICAgIHZhciByPWFjdGl2ZUlucHV0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgaWYoci5ib3R0b208MHx8ci50b3A+d2luZG93LmlubmVySGVpZ2h0KWhpZGVEcm9wZG93bigpOwogIH0KfSx0cnVlKTsKd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsaGlkZURyb3Bkb3duKTsKZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsZnVuY3Rpb24oZSl7aWYoZS5rZXk9PT0nRXNjYXBlJyloaWRlRHJvcGRvd24oKTt9KTsKCi8qIC0tLS0tLS0tLS0gT1JESU5FIEVGRU1FUk8gUEVSLVNFU1NJT05FIC0tLS0tLS0tLS0KICAgT2duaSBicm93c2VyL3RhYiBoYSBpbCBwcm9wcmlvIG9yZGluZSBpbmRpcGVuZGVudGUgaW4gbWVtb3JpYS4KICAgTmllbnRlIGF1dG9zYXZlIG7DqSBib3p6ZSBjb25kaXZpc2UgbGF0byBzZXJ2ZXI6IGR1ZSBzZXNzaW9uaSBkZWxsbyBzdGVzc28KICAgdXRlbnRlIE5PTiBzaSBzb3ZyYXNjcml2b25vIGEgdmljZW5kYS4gTGEgZnVuemlvbmUgUERGL2VtYWlsIMOoIGlsICJzYXZlIi4KKi8KZnVuY3Rpb24gc2NoZWR1bGVTYXZlKCl7Lyogbm8tb3A6IGJvenplIHJpbW9zc2UgaW50ZW56aW9uYWxtZW50ZSAqL30KCi8qIC0tLS0tLS0tLS0gUEFORUwgVE9HR0xFIC0tLS0tLS0tLS0gKi8KZnVuY3Rpb24gc2hvd1BhbmVsKG5hbWUpewogICQkKCcuc2NoLXBhbmVsJykuZm9yRWFjaChmdW5jdGlvbihwKXtwLmNsYXNzTGlzdC5yZW1vdmUoJ29wZW4nKTt9KTsKICBpZihuYW1lKXt2YXIgcHA9JCgnI3NjaC1wYW5lbC0nK25hbWUpO2lmKHBwKXBwLmNsYXNzTGlzdC5hZGQoJ29wZW4nKTt9CiAgLy8gSHViIGRpIGRlZmF1bHQgdmlzaWJpbGUsIG5hc2Nvc3RvIHNlIHVuIHBhbmVsIMOoIGFwZXJ0bwogIHZhciBodWI9JCgnI3NjaC1hY3Rpb25zJyk7CiAgaWYoaHViKXtpZihuYW1lKWh1Yi5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtlbHNlIGh1Yi5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4nKTt9CiAgLy8gUmVzZXQgYWN0aXZlIHN0YXRlIG9uIG5hdiBidXR0b25zICsgbGVnYWN5IGFjdGlvbi1jYXJkcwogICQkKCcuc2NoLWFjdGlvbi1jYXJkLC5zY2gtbmF2LWJ0bicpLmZvckVhY2goZnVuY3Rpb24oYyl7Yy5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKTt9KTsKICBpZihuYW1lKXt2YXIgYmI9JCgnI3NjaC1idG4tJytuYW1lKTtpZihiYiliYi5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTt9CiAgZWxzZXt2YXIgaG09JCgnI3NjaC1idG4taG9tZScpO2lmKGhtKWhtLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpO30KICBpZihuYW1lPT09J2xpc3Rpbm8nKWxvYWRMaXN0aW5vRGF0YSgpOwogIGlmKG5hbWU9PT0nb3JkaW5pJyl7bG9hZExpc3Rpbm9EYXRhKCk7fQogIC8vIFNtb290aCBzY3JvbGwgdG8gdG9wIHNvIHVzZXIgc2VlcyB0aGUgbmV3IHZpZXcKICB0cnl7d2luZG93LnNjcm9sbFRvKHt0b3A6MCxiZWhhdmlvcjonc21vb3RoJ30pO31jYXRjaChlKXt3aW5kb3cuc2Nyb2xsVG8oMCwwKTt9Cn0KCi8qIC0tLS0tLS0tLS0gTElTVElOTyBJTVBPUlQgLS0tLS0tLS0tLSAqLwpmdW5jdGlvbiBpbXBvcnRFeGNlbChmaWxlKXsKICAkKCcjc2NoLWxvYWRpbmcnKS5zdHlsZS5kaXNwbGF5PSdibG9jayc7JCgnI3NjaC1sb2FkaW5nJykudGV4dENvbnRlbnQ9J0xldHR1cmEgZmlsZSBFeGNlbC4uLic7CiAgbG9hZExpYignaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS94bHN4QDAuMTguNS9kaXN0L3hsc3guZnVsbC5taW4uanMnLGZ1bmN0aW9uKCl7CiAgICB2YXIgcmVhZGVyPW5ldyBGaWxlUmVhZGVyKCk7CiAgICByZWFkZXIub25sb2FkPWZ1bmN0aW9uKGUpewogICAgICB0cnl7CiAgICAgICAgJCgnI3NjaC1sb2FkaW5nJykudGV4dENvbnRlbnQ9J1BhcnNpbmcgaW4gY29yc28uLi4nOwogICAgICAgIHZhciB3Yj1YTFNYLnJlYWQoZS50YXJnZXQucmVzdWx0LHt0eXBlOidhcnJheSd9KTsKICAgICAgICB2YXIgd3M9d2IuU2hlZXRzW3diLlNoZWV0TmFtZXNbMF1dOwogICAgICAgIHZhciBqc29uPVhMU1gudXRpbHMuc2hlZXRfdG9fanNvbih3cyx7ZGVmdmFsOicnLHJhdzpmYWxzZX0pOwogICAgICAgIGlmKCFqc29uLmxlbmd0aCl7YWxlcnQoJ05lc3N1biBkYXRvIHRyb3ZhdG8nKTskKCcjc2NoLWxvYWRpbmcnKS5zdHlsZS5kaXNwbGF5PSdub25lJztyZXR1cm47fQogICAgICAgIHZhciBjb2xzPU9iamVjdC5rZXlzKGpzb25bMF0pOwogICAgICAgICQoJyNzY2gtbG9hZGluZycpLnRleHRDb250ZW50PSdDYXJpY2FtZW50byAnK2pzb24ubGVuZ3RoKycgcmlnaGUuLi4nOwogICAgICAgIGZldGNoKEFQSSsnL2xpc3Rpbm8vJytVU0VSLHttZXRob2Q6J1BPU1QnLGNyZWRlbnRpYWxzOidzYW1lLW9yaWdpbicsaGVhZGVyczp7J1gtV1AtTm9uY2UnOm5vbmNlLCdDb250ZW50LVR5cGUnOidhcHBsaWNhdGlvbi9qc29uJ30sYm9keTpKU09OLnN0cmluZ2lmeSh7aXRlbXM6anNvbixjb2x1bW5zOmNvbHN9KX0pCiAgICAgICAgICAudGhlbihmdW5jdGlvbihyKXtyZXR1cm4gci5qc29uKCk7fSkKICAgICAgICAgIC50aGVuKGZ1bmN0aW9uKHJlcyl7CiAgICAgICAgICAgICQoJyNzY2gtbG9hZGluZycpLnN0eWxlLmRpc3BsYXk9J25vbmUnOwogICAgICAgICAgICBpZihyZXMub2spe3RvYXN0KCdMaXN0aW5vIGltcG9ydGF0bzogJytyZXMuY291bnQudG9Mb2NhbGVTdHJpbmcoJ2l0LUlUJykrJyBhcnRpY29saScpO2xvYWRMaXN0aW5vRGF0YSgpO30KICAgICAgICAgICAgZWxzZSBhbGVydCgnRXJyb3JlOiAnK0pTT04uc3RyaW5naWZ5KHJlcykpOwogICAgICAgICAgfSk7CiAgICAgIH1jYXRjaChlcnIpeyQoJyNzY2gtbG9hZGluZycpLnN0eWxlLmRpc3BsYXk9J25vbmUnO2FsZXJ0KCdFcnJvcmU6ICcrZXJyLm1lc3NhZ2UpO30KICAgIH07CiAgICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoZmlsZSk7CiAgfSk7Cn0KZnVuY3Rpb24gcmVzZXRMaXN0aW5vKCl7CiAgaWYoIWNvbmZpcm0oJ0F6emVyYXJlIGlsIGxpc3Rpbm8\/JykpcmV0dXJuOwogIGZldGNoKEFQSSsnL2xpc3Rpbm8vJytVU0VSLHttZXRob2Q6J0RFTEVURScsY3JlZGVudGlhbHM6J3NhbWUtb3JpZ2luJyxoZWFkZXJzOnsnWC1XUC1Ob25jZSc6bm9uY2V9fSkKICAgIC50aGVuKGZ1bmN0aW9uKCl7dG9hc3QoJ0xpc3Rpbm8gYXp6ZXJhdG8nKTtsb2FkTGlzdGlub0RhdGEoKTt9KTsKfQoKLyogLS0tLS0tLS0tLSBEQVRFIEhFTFBFUlMgLS0tLS0tLS0tLSAqLwpmdW5jdGlvbiBmbXREYXRlSXQoaXNvKXsKICBpZighaXNvKXJldHVybiAnJzsKICB2YXIgbT1TdHJpbmcoaXNvKS5tYXRjaCgvXihcZHs0fSktKFxkezJ9KS0oXGR7Mn0pLyk7CiAgaWYoIW0pcmV0dXJuIGlzbzsKICByZXR1cm4gbVszXSsnLycrbVsyXSsnLycrbVsxXTsKfQpmdW5jdGlvbiByZWZyZXNoRGF0ZVN0eWxlcygpewogICQkKCdpbnB1dFt0eXBlPWRhdGVdJykuZm9yRWFjaChmdW5jdGlvbihpbnApewogICAgaWYoaW5wLnZhbHVlJiZpbnAudmFsdWUubGVuZ3RoPj04KWlucC5jbGFzc0xpc3QuYWRkKCdoYXMtdmFsdWUnKTsKICAgIGVsc2UgaW5wLmNsYXNzTGlzdC5yZW1vdmUoJ2hhcy12YWx1ZScpOwogIH0pOwp9Ci8vIFN3YXAgZm9ybSBmaWVsZHMgKGlucHV0L3RleHRhcmVhL3NlbGVjdCkgZm9yIHBsYWluIHRleHQgc3BhbnMgYmVmb3JlIFBERi9wcmludC4KLy8gaHRtbDJjYW52YXMgbm9uIHJlbmRlIHNlbXByZSBpbCB2YWxvcmUgZGVnbGkgaW5wdXQg4oaSIHNlbnphIHF1ZXN0byB3b3JrYXJvdW5kCi8vIGlsIFBERiByaXN1bHRhIGNvbiBjYXNlbGxlIHZ1b3RlLiBMbyBzcGFuIHJlcGxpY2EgcG9zaXppb25lLCBmb250IGUgYWxsaW5lYW1lbnRvLgp2YXIgZGF0ZVN3YXBTdGF0ZT1bXTsKZnVuY3Rpb24gc3dhcERhdGVzVG9UZXh0KCl7CiAgZGF0ZVN3YXBTdGF0ZT1bXTsKICAvLyBVbmEgc29sYSBwYXNzYXRhIHN1IHR1dHRpIGdsaSBlbGVtZW50aSBmb3JtIGRlbGxhIHN0YW1wYWJpbGUKICAkJCgnI29yZC1wcmludGFibGUgaW5wdXQsICNvcmQtcHJpbnRhYmxlIHRleHRhcmVhLCAjb3JkLXByaW50YWJsZSBzZWxlY3QnKS5mb3JFYWNoKGZ1bmN0aW9uKGlucCl7CiAgICB2YXIgdGFnPWlucC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7CiAgICB2YXIgdHlwZT0oaW5wLmdldEF0dHJpYnV0ZSgndHlwZScpfHwnJykudG9Mb3dlckNhc2UoKTsKICAgIC8vIFZhbG9yZSBzdHJpbmdhIGRhIG1vc3RyYXJlCiAgICB2YXIgdmFsPScnOwogICAgaWYodGFnPT09J3NlbGVjdCcpe3ZhbD1pbnAub3B0aW9uc1tpbnAuc2VsZWN0ZWRJbmRleF0\/aW5wLm9wdGlvbnNbaW5wLnNlbGVjdGVkSW5kZXhdLnRleHQ6Jyc7fQogICAgZWxzZSBpZih0eXBlPT09J2RhdGUnKXt2YWw9Zm10RGF0ZUl0KGlucC52YWx1ZSk7fQogICAgZWxzZSBpZih0YWc9PT0ndGV4dGFyZWEnKXt2YWw9aW5wLnZhbHVlfHwnJzt9CiAgICBlbHNle3ZhbD1pbnAudmFsdWV8fCcnO30KICAgIHZhciBjcz1nZXRDb21wdXRlZFN0eWxlKGlucCk7CiAgICB2YXIgc3Bhbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7CiAgICBzcGFuLmNsYXNzTmFtZT0nbmctcHJpbnQtc3dhcCc7CiAgICAvLyBXaGl0ZS1zcGFjZSBwcmVzZXJ2YSBuZXdsaW5lIHBlciBsZSB0ZXh0YXJlYQogICAgdmFyIGlzTXVsdGk9KHRhZz09PSd0ZXh0YXJlYScpOwogICAgc3Bhbi50ZXh0Q29udGVudD12YWw7CiAgICAvLyBQb3NpemlvbmEgbG8gc3BhbiBFU0FUVEFNRU5URSBzb3ByYSBsJ2lucHV0IHVzYW5kbyBhYnNvbHV0ZSBwb3NpdGlvbmluZyByZWxhdGl2YSBhbCBwYXJlbnQKICAgIC8vIG1hIHBlciBzZW1wbGljaXTDoCBzb3N0aXR1aWFtb2xvIGlubGluZSBtYW50ZW5lbmRvIGRpbWVuc2lvbmkKICAgIHNwYW4uc3R5bGUuY3NzVGV4dD0KICAgICAgJ2Rpc3BsYXk6aW5saW5lLWJsb2NrOycrCiAgICAgICdib3gtc2l6aW5nOmJvcmRlci1ib3g7JysKICAgICAgJ3dpZHRoOicraW5wLm9mZnNldFdpZHRoKydweDsnKwogICAgICAnaGVpZ2h0OicraW5wLm9mZnNldEhlaWdodCsncHg7JysKICAgICAgJ2xpbmUtaGVpZ2h0OicraW5wLm9mZnNldEhlaWdodCsncHg7JysKICAgICAgJ3BhZGRpbmc6Jytjcy5wYWRkaW5nKyc7JysKICAgICAgJ21hcmdpbjonK2NzLm1hcmdpbisnOycrCiAgICAgICdmb250OicrY3MuZm9udCsnOycrCiAgICAgICdmb250LXdlaWdodDonK2NzLmZvbnRXZWlnaHQrJzsnKwogICAgICAnY29sb3I6Jytjcy5jb2xvcisnOycrCiAgICAgICd0ZXh0LWFsaWduOicrY3MudGV4dEFsaWduKyc7JysKICAgICAgJ3ZlcnRpY2FsLWFsaWduOicrY3MudmVydGljYWxBbGlnbisnOycrCiAgICAgICd3aGl0ZS1zcGFjZTonKyhpc011bHRpPydwcmUtd3JhcCc6J25vd3JhcCcpKyc7JysKICAgICAgJ292ZXJmbG93OmhpZGRlbjsnKwogICAgICAndGV4dC1vdmVyZmxvdzpjbGlwOycrCiAgICAgICdiYWNrZ3JvdW5kOnRyYW5zcGFyZW50OycrCiAgICAgICdsZXR0ZXItc3BhY2luZzonK2NzLmxldHRlclNwYWNpbmcrJzsnKwogICAgICAnZm9udC12YXJpYW50LW51bWVyaWM6Jytjcy5mb250VmFyaWFudE51bWVyaWMrJzsnOwogICAgaWYoaXNNdWx0aSl7CiAgICAgIC8vIFBlciB0ZXh0YXJlYSBpbCBsaW5lLWhlaWdodCBkZXZlIGVzc2VyZSAibmF0dXJhbGUiIG5vbiBsJ2ludGVyYSBhbHRlenphCiAgICAgIHNwYW4uc3R5bGUubGluZUhlaWdodD1jcy5saW5lSGVpZ2h0OwogICAgICBzcGFuLnN0eWxlLnBhZGRpbmc9Y3MucGFkZGluZzsKICAgICAgc3Bhbi5zdHlsZS52ZXJ0aWNhbEFsaWduPSd0b3AnOwogICAgfQogICAgaW5wLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHNwYW4saW5wKTsKICAgIGlucC5zdHlsZS5kaXNwbGF5PSdub25lJzsKICAgIGRhdGVTd2FwU3RhdGUucHVzaCh7aW5wOmlucCxzcGFuOnNwYW59KTsKICB9KTsKfQpmdW5jdGlvbiB1bnN3YXBEYXRlcygpewogIGRhdGVTd2FwU3RhdGUuZm9yRWFjaChmdW5jdGlvbihzKXsKICAgIHMuc3Bhbi5yZW1vdmUoKTsKICAgIHMuaW5wLnN0eWxlLmRpc3BsYXk9Jyc7CiAgfSk7CiAgZGF0ZVN3YXBTdGF0ZT1bXTsKfQoKLyogLS0tLS0tLS0tLSBQUklOVCAvIFBERiAvIEVNQUlMIC0tLS0tLS0tLS0gKi8KLy8gU3RhbXBhOiB1c2EgbGEgc3Rlc3NhIHBpcGVsaW5lIGRlbCBQREYgKGh0bWwyY2FudmFzK3N3YXApLCBwb2kgbWV0dGUgbCdpbW1hZ2luZQovLyBpbiB1biBJRlJBTUUgY29tcGxldGFtZW50ZSBpc29sYXRvIGRhbGxhIENTUyBkZWxsYSBwYWdpbmEgcHJpbmNpcGFsZS4gU3RhbXBhIHZpYQovLyBpZnJhbWUuY29udGVudFdpbmRvdy5wcmludCgpOiB6ZXJvIGNvbmZsaXR0aSBjb24gQG1lZGlhIHByaW50IGVzaXN0ZW50aS4KZnVuY3Rpb24gcHJpbnRPcmRlcigpewogIHRvYXN0KCdQcmVwYXJhemlvbmUgc3RhbXBhLi4uJyk7CiAgbG9hZExpYignaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9odG1sMmNhbnZhc0AxLjQuMS9kaXN0L2h0bWwyY2FudmFzLm1pbi5qcycsZnVuY3Rpb24oKXsKICAgIGlmKCF3aW5kb3cuaHRtbDJjYW52YXMpe2FsZXJ0KCdodG1sMmNhbnZhcyBub24gZGlzcG9uaWJpbGUnKTtyZXR1cm47fQogICAgdmFyIGVsPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvcmQtcHJpbnRhYmxlJyk7CiAgICBpZighZWwpe2FsZXJ0KCdGb3JtIG5vbiB0cm92YXRvJyk7cmV0dXJuO30KICAgIHN3YXBEYXRlc1RvVGV4dCgpOwogICAgd2luZG93Lmh0bWwyY2FudmFzKGVsLHsKICAgICAgc2NhbGU6MiwKICAgICAgdXNlQ09SUzp0cnVlLAogICAgICBiYWNrZ3JvdW5kQ29sb3I6JyNmZmZmZmYnLAogICAgICBsb2dnaW5nOmZhbHNlLAogICAgICB3aWR0aDplbC5zY3JvbGxXaWR0aCwKICAgICAgaGVpZ2h0OmVsLnNjcm9sbEhlaWdodAogICAgfSkudGhlbihmdW5jdGlvbihjYW52YXMpewogICAgICB1bnN3YXBEYXRlcygpOwogICAgICB2YXIgZGF0YVVybD1jYW52YXMudG9EYXRhVVJMKCdpbWFnZS9qcGVnJywwLjk1KTsKICAgICAgdmFyIHByZXY9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25nLXByaW50LWlmcmFtZScpO2lmKHByZXYpcHJldi5yZW1vdmUoKTsKICAgICAgdmFyIGlmcmFtZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTsKICAgICAgaWZyYW1lLmlkPSduZy1wcmludC1pZnJhbWUnOwogICAgICBpZnJhbWUuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsJ3RydWUnKTsKICAgICAgaWZyYW1lLnN0eWxlLmNzc1RleHQ9J3Bvc2l0aW9uOmZpeGVkO2xlZnQ6LTk5OTlweDt0b3A6MDt3aWR0aDoyMTBtbTtoZWlnaHQ6Mjk3bW07Ym9yZGVyOjA7b3BhY2l0eTowO3BvaW50ZXItZXZlbnRzOm5vbmUnOwogICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZSk7CiAgICAgIHZhciBkb2M9aWZyYW1lLmNvbnRlbnREb2N1bWVudHx8aWZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7CiAgICAgIC8vIENSVUNJQUxFOiBib2R5IHNlbnphIGhlaWdodCBmaXNzYS4gU2UgZ2xpIGltcG9zdGkgMjk3bW0sIGlsIGJyb3dzZXIgc3RhbXBhCiAgICAgIC8vIHR1dHRvIGlsIGJvZHkgKGFuY2hlIHNlIHF1YXNpIHZ1b3RvKSBlIGkgbWFyZ2luaSBkaSBkZWZhdWx0IGRlbCBkaWFsb2cgc3Bpbmdvbm8KICAgICAgLy8gaWwgInJlc2lkdW8iIGRlbCBib2R5IHN1IHVuYSBzZWNvbmRhIHBhZ2luYS4gQm9keSBhdXRvLWZpdCA9IHVuYSBzb2xhIHBhZ2luYS4KICAgICAgdmFyIGh0bWw9CiAgICAgICAgJzwhRE9DVFlQRSBodG1sPjxodG1sPjxoZWFkPjxtZXRhIGNoYXJzZXQ9InV0Zi04Ij48dGl0bGU+U3RhbXBhIE9yZGluZTwvdGl0bGU+JysKICAgICAgICAnPHN0eWxlPicrCiAgICAgICAgJ0BwYWdle3NpemU6QTQgcG9ydHJhaXQ7bWFyZ2luOjB9JysKICAgICAgICAnaHRtbHttYXJnaW46MDtwYWRkaW5nOjA7YmFja2dyb3VuZDojZmZmfScrCiAgICAgICAgLy8gcGFkZGluZy10b3AgMTVtbSBkw6AgcmVzcGlybyBpbiBjaW1hIHNlbnphIGNhdXNhcmUgb3ZlcmZsb3cgKDE1KzI1MCs1PTI3MCA8IDI3NyBkZWZhdWx0KQogICAgICAgICdib2R5e21hcmdpbjowO3BhZGRpbmc6MTVtbSAwIDVtbSAwO2JhY2tncm91bmQ6I2ZmZjt0ZXh0LWFsaWduOmNlbnRlcn0nKwogICAgICAgICdpbWd7ZGlzcGxheTpibG9jazttYXJnaW46MCBhdXRvO21heC13aWR0aDoyMDBtbTttYXgtaGVpZ2h0OjI1MG1tO3dpZHRoOmF1dG87aGVpZ2h0OmF1dG87cGFnZS1icmVhay1pbnNpZGU6YXZvaWQ7YnJlYWstaW5zaWRlOmF2b2lkfScrCiAgICAgICAgJzwvc3R5bGU+PC9oZWFkPjxib2R5PjxpbWcgaWQ9Im5nLWkiIHNyYz0iJytkYXRhVXJsKyciPjwvYm9keT48L2h0bWw+JzsKICAgICAgZG9jLm9wZW4oKTtkb2Mud3JpdGUoaHRtbCk7ZG9jLmNsb3NlKCk7CiAgICAgIHZhciBpbWc9ZG9jLmdldEVsZW1lbnRCeUlkKCduZy1pJyk7CiAgICAgIGZ1bmN0aW9uIGdvKCl7CiAgICAgICAgdHJ5ewogICAgICAgICAgaWZyYW1lLmNvbnRlbnRXaW5kb3cuZm9jdXMoKTsKICAgICAgICAgIGlmcmFtZS5jb250ZW50V2luZG93LnByaW50KCk7CiAgICAgICAgfWNhdGNoKGUpe2FsZXJ0KCdFcnJvcmUgc3RhbXBhOiAnKyhlLm1lc3NhZ2V8fGUpKTt9CiAgICAgICAgLy8gUmltdW92aSBsJ2lmcmFtZSBkb3BvIGNoZSBpbCBkaWFsb2cgw6ggc3RhdG8gY2hpdXNvCiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpe2lmKGlmcmFtZS5wYXJlbnROb2RlKWlmcmFtZS5yZW1vdmUoKTt9LDIwMDApOwogICAgICB9CiAgICAgIGlmKGltZy5jb21wbGV0ZSAmJiBpbWcubmF0dXJhbFdpZHRoPjApZ28oKTsKICAgICAgZWxzZSBpbWcuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsZ28pOwogICAgfSkuY2F0Y2goZnVuY3Rpb24oZSl7CiAgICAgIHVuc3dhcERhdGVzKCk7CiAgICAgIGFsZXJ0KCdFcnJvcmUgcmVuZGVyaW5nIHN0YW1wYTogJysoZS5tZXNzYWdlfHxlKSk7CiAgICB9KTsKICB9KTsKfQpmdW5jdGlvbiBtYWtlUGRmRmlsZW5hbWUoKXsKICB2YXIgY2xpPSgkKCcjb3JkLWNsaWVudGUnKSYmJCgnI29yZC1jbGllbnRlJykudmFsdWV8fCdDbGllbnRlJykucmVwbGFjZSgvW1xcLzoqPyI8PnxdL2csJy0nKS5yZXBsYWNlKC9ccysvZywnXycpOwogIHZhciBkPW5ldyBEYXRlKCk7dmFyIGRkPVN0cmluZyhkLmdldERhdGUoKSkucGFkU3RhcnQoMiwnMCcpLG1tPVN0cmluZyhkLmdldE1vbnRoKCkrMSkucGFkU3RhcnQoMiwnMCcpLHl5PWQuZ2V0RnVsbFllYXIoKTsKICByZXR1cm4gJ09yZGluZV9DbGllbnRlXycrY2xpKydfJytkZCsnLScrbW0rJy0nK3l5KycucGRmJzsKfQpmdW5jdGlvbiBnZW5lcmF0ZVBkZihjYil7CiAgLy8gR2VuZXJhIFBERiBzaW5nb2xhIHBhZ2luYSBBNCBjZW50cmF0by4KICAvLyBVc28gaHRtbDJjYW52YXMgKyBqc3BkZiBESVJFVFRBTUVOVEUgKG5vIGh0bWwycGRmIHdyYXBwZXIgY2hlIGFnZ2l1bmdlIHBhZGRpbmcgYWwgY29udGFpbmVyKS4KICBsb2FkTGliKCdodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2h0bWwyY2FudmFzQDEuNC4xL2Rpc3QvaHRtbDJjYW52YXMubWluLmpzJyxmdW5jdGlvbigpewogICAgbG9hZExpYignaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9qc3BkZkAyLjUuMS9kaXN0L2pzcGRmLnVtZC5taW4uanMnLGZ1bmN0aW9uKCl7CiAgICAgIGlmKCF3aW5kb3cuaHRtbDJjYW52YXMpe2FsZXJ0KCdodG1sMmNhbnZhcyBub24gZGlzcG9uaWJpbGUnKTtyZXR1cm47fQogICAgICB2YXIganNQREZDdG9yPSh3aW5kb3cuanNwZGYmJndpbmRvdy5qc3BkZi5qc1BERil8fHdpbmRvdy5qc1BERjsKICAgICAgaWYoIWpzUERGQ3Rvcil7YWxlcnQoJ2pzUERGIG5vbiBkaXNwb25pYmlsZScpO3JldHVybjt9CiAgICAgIHZhciBlbD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3JkLXByaW50YWJsZScpOwogICAgICBpZighZWwpe2FsZXJ0KCdGb3JtIG5vbiB0cm92YXRvJyk7cmV0dXJuO30KICAgICAgc3dhcERhdGVzVG9UZXh0KCk7CiAgICAgIC8vIFJlbmRlciBkaXJldHRvIGRlbGwnZWxlbWVudG8uIE5PTiB1c2FyZSB3aW5kb3dXaWR0aC9IZWlnaHQ6IGZhbHNhbm8gaWwKICAgICAgLy8gdmlld3BvcnQgZSBwcm92b2Nhbm8gdW4gcmUtZmxvdyBkZWwgdGVzdG8gY2hlIGFsemEgbCdhbHRlenphIGRlbCBjYW52YXMKICAgICAgLy8gcmlzcGV0dG8gYWwgcmVuZGVyaW5nIG9uLXNjcmVlbi4gUGFzc2lhbW8gaW52ZWNlIHdpZHRoL2hlaWdodCBlc3BsaWNpdGkuCiAgICAgIC8vIHNjYWxlOjIgcmFkZG9wcGlhIGxhIHJpc29sdXppb25lIHBlciB0ZXN0aSBwacO5IG5pdGlkaSBuZWwgUERGLgogICAgICB3aW5kb3cuaHRtbDJjYW52YXMoZWwsewogICAgICAgIHNjYWxlOjIsCiAgICAgICAgdXNlQ09SUzp0cnVlLAogICAgICAgIGJhY2tncm91bmRDb2xvcjonI2ZmZmZmZicsCiAgICAgICAgbG9nZ2luZzpmYWxzZSwKICAgICAgICB3aWR0aDplbC5zY3JvbGxXaWR0aCwKICAgICAgICBoZWlnaHQ6ZWwuc2Nyb2xsSGVpZ2h0CiAgICAgIH0pLnRoZW4oZnVuY3Rpb24oY2FudmFzKXsKICAgICAgICB1bnN3YXBEYXRlcygpOwogICAgICAgIHRyeXsKICAgICAgICAgIHZhciBwZGY9bmV3IGpzUERGQ3Rvcih7dW5pdDonbW0nLGZvcm1hdDonYTQnLG9yaWVudGF0aW9uOidwb3J0cmFpdCcsY29tcHJlc3M6dHJ1ZX0pOwogICAgICAgICAgdmFyIHBhZ2VXPTIxMCxwYWdlSD0yOTcsbWFyZ2luPTU7CiAgICAgICAgICB2YXIgbWF4Vz1wYWdlVy0yKm1hcmdpbjsgICAgICAgLy8gMjAwbW0KICAgICAgICAgIHZhciBtYXhIPXBhZ2VILTIqbWFyZ2luOyAgICAgICAvLyAyODdtbQogICAgICAgICAgdmFyIGFyPWNhbnZhcy53aWR0aC9jYW52YXMuaGVpZ2h0OwogICAgICAgICAgdmFyIHcsaDsKICAgICAgICAgIC8vIFNjYWxlLXRvLWZpdCBwcmVzZXJ2YW5kbyBhc3BlY3QgcmF0aW8KICAgICAgICAgIGlmKG1heFcvYXI8PW1heEgpe3c9bWF4VztoPW1heFcvYXI7fQogICAgICAgICAgZWxzZXtoPW1heEg7dz1tYXhIKmFyO30KICAgICAgICAgIC8vIENlbnRyYXR1cmEgc3UgQTQ6IHgseSBhbCBjZW50cm8gZGVsbGEgcGFnaW5hCiAgICAgICAgICB2YXIgeD0ocGFnZVctdykvMjsKICAgICAgICAgIHZhciB5PShwYWdlSC1oKS8yOwogICAgICAgICAgdmFyIGltZ0RhdGE9Y2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvanBlZycsMC45NSk7CiAgICAgICAgICBwZGYuYWRkSW1hZ2UoaW1nRGF0YSwnSlBFRycseCx5LHcsaCx1bmRlZmluZWQsJ0ZBU1QnKTsKICAgICAgICAgIGNiKHBkZi5vdXRwdXQoJ2Jsb2InKSk7CiAgICAgICAgfWNhdGNoKGUpe2FsZXJ0KCdFcnJvcmUgUERGOiAnKyhlLm1lc3NhZ2V8fGUpKTt9CiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGUpewogICAgICAgIHVuc3dhcERhdGVzKCk7CiAgICAgICAgYWxlcnQoJ0Vycm9yZSByZW5kZXJpbmc6ICcrKGUubWVzc2FnZXx8ZSkpOwogICAgICB9KTsKICAgIH0pOwogIH0pOwp9CmZ1bmN0aW9uIHNhdmVQZGYoKXsKICAvLyBHZW5lcmEgaWwgUERGIGUgc2NhcmljYWxvIGRpcmV0dGFtZW50ZQogIHRvYXN0KCdHZW5lcmF6aW9uZSBQREYgaW4gY29yc28uLi4nKTsKICBnZW5lcmF0ZVBkZihmdW5jdGlvbihibG9iKXsKICAgIGlmKCFibG9iKXJldHVybjsKICAgIHZhciBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsKICAgIGEuaHJlZj1VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpOwogICAgYS5kb3dubG9hZD1tYWtlUGRmRmlsZW5hbWUoKTsKICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7CiAgICBhLmNsaWNrKCk7CiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7VVJMLnJldm9rZU9iamVjdFVSTChhLmhyZWYpO2EucmVtb3ZlKCk7fSw1MDApOwogICAgdG9hc3QoJ1BERiBzY2FyaWNhdG86ICcrYS5kb3dubG9hZCk7CiAgfSk7Cn0KZnVuY3Rpb24gZW1haWxQZGYoKXsKICB2YXIgdG89cHJvbXB0KCdFbWFpbCBkZXN0aW5hdGFyaW86Jyk7CiAgaWYoIXRvfHwhL15bXkBdK0BbXkBdK1wuW15AXSskLy50ZXN0KHRvKSl7aWYodG8pYWxlcnQoJ0VtYWlsIG5vbiB2YWxpZGEnKTtyZXR1cm47fQogIHRvYXN0KCdHZW5lcmF6aW9uZSBQREYgZSBpbnZpbyBlbWFpbCBpbiBjb3Jzby4uLicpOwogIGdlbmVyYXRlUGRmKGZ1bmN0aW9uKGJsb2IpewogICAgaWYoIWJsb2IpcmV0dXJuOwogICAgdmFyIHJlYWRlcj1uZXcgRmlsZVJlYWRlcigpOwogICAgcmVhZGVyLm9ubG9hZD1mdW5jdGlvbihlKXsKICAgICAgdmFyIGI2ND1lLnRhcmdldC5yZXN1bHQuc3BsaXQoJywnKVsxXTsKICAgICAgdmFyIGFnZW50ZT0oJCgnI29yZC1hZ2VudGUnKSYmJCgnI29yZC1hZ2VudGUnKS52YWx1ZXx8JycpLnRyaW0oKTsKICAgICAgdmFyIGNsaWVudGU9KCQoJyNvcmQtY2xpZW50ZScpJiYkKCcjb3JkLWNsaWVudGUnKS52YWx1ZXx8JycpLnRyaW0oKTsKICAgICAgdmFyIHN1YmplY3Q9J1BST1BPU1RBIETigJlPUkRJTkUgQUcvRlVOWiAtICcrYWdlbnRlKycgLSBDTElFTlRFIC0gJytjbGllbnRlOwogICAgICBmZXRjaChBUEkrJy9vcmRlci9lbWFpbCcsewogICAgICAgIG1ldGhvZDonUE9TVCcsY3JlZGVudGlhbHM6J3NhbWUtb3JpZ2luJywKICAgICAgICBoZWFkZXJzOnsnWC1XUC1Ob25jZSc6bm9uY2UsJ0NvbnRlbnQtVHlwZSc6J2FwcGxpY2F0aW9uL2pzb24nfSwKICAgICAgICBib2R5OkpTT04uc3RyaW5naWZ5KHsKICAgICAgICAgIHRvOnRvLAogICAgICAgICAgc3ViamVjdDpzdWJqZWN0LAogICAgICAgICAgbWVzc2FnZTonPHA+QnVvbmdpb3Jubyw8L3A+PHA+aW4gYWxsZWdhdG8gbGEgcHJvcG9zdGEgZOKAmW9yZGluZS48L3A+PHA+Q29yZGlhbGkgc2FsdXRpLjwvcD4nLAogICAgICAgICAgcGRmX2Jhc2U2NDpiNjQsCiAgICAgICAgICBmaWxlbmFtZTptYWtlUGRmRmlsZW5hbWUoKQogICAgICAgIH0pCiAgICAgIH0pCiAgICAgIC50aGVuKGZ1bmN0aW9uKHIpe3JldHVybiByLmpzb24oKTt9KQogICAgICAudGhlbihmdW5jdGlvbihyZXMpewogICAgICAgIGlmKHJlcy5vayl0b2FzdCgnRW1haWwgaW52aWF0YSBhICcrdG8pOwogICAgICAgIGVsc2UgYWxlcnQoJ0Vycm9yZSBpbnZpbyBlbWFpbC4gU2VydmVyOiAnKyhyZXMubWVzc2FnZXx8SlNPTi5zdHJpbmdpZnkocmVzKSkpOwogICAgICB9KQogICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyKXthbGVydCgnRXJyb3JlIGRpIHJldGU6ICcrZXJyLm1lc3NhZ2UpO30pOwogICAgfTsKICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGJsb2IpOwogIH0pOwp9CgovKiAtLS0tLS0tLS0tIElOSVQgLS0tLS0tLS0tLSAqLwpmdW5jdGlvbiBpbml0KCl7CiAgZ2V0Tm9uY2UoZnVuY3Rpb24oKXsKICAgIGxvYWRMb2dvKCk7CiAgICBidWlsZE9yZGVyUm93cygpOwogICAgLy8gQnV0dG9uIGJpbmRpbmdzCiAgICB2YXIgYjsKICAgIGlmKGI9JCgnI3NjaC1idG4tbGlzdGlubycpKWIub25jbGljaz1mdW5jdGlvbigpe3Nob3dQYW5lbCgnbGlzdGlubycpO307CiAgICBpZihiPSQoJyNzY2gtYnRuLW9yZGluaScpKWIub25jbGljaz1mdW5jdGlvbigpe3Nob3dQYW5lbCgnb3JkaW5pJyk7fTsKICAgIGlmKGI9JCgnI3NjaC1idG4taG9tZScpKWIub25jbGljaz1mdW5jdGlvbigpe3Nob3dQYW5lbChudWxsKTt9OwogICAgaWYoYj0kKCcjc2NoLWNhcmQtb3JkaW5pJykpYi5vbmNsaWNrPWZ1bmN0aW9uKCl7c2hvd1BhbmVsKCdvcmRpbmknKTt9OwogICAgaWYoYj0kKCcjc2NoLWNhcmQtbGlzdGlubycpKWIub25jbGljaz1mdW5jdGlvbigpe3Nob3dQYW5lbCgnbGlzdGlubycpO307CiAgICBpZihiPSQoJyNzY2gtYmFjay1saXN0aW5vJykpYi5vbmNsaWNrPWZ1bmN0aW9uKCl7c2hvd1BhbmVsKG51bGwpO307CiAgICBpZihiPSQoJyNzY2gtYmFjay1vcmRpbmknKSliLm9uY2xpY2s9ZnVuY3Rpb24oKXtzaG93UGFuZWwobnVsbCk7fTsKICAgIGlmKGI9JCgnI3NjaC1maWxlJykpYi5vbmNoYW5nZT1mdW5jdGlvbihlKXtpZihlLnRhcmdldC5maWxlc1swXSlpbXBvcnRFeGNlbChlLnRhcmdldC5maWxlc1swXSk7ZS50YXJnZXQudmFsdWU9Jyc7fTsKICAgIGlmKGI9JCgnI3NjaC1idG4tcmVzZXQnKSliLm9uY2xpY2s9cmVzZXRMaXN0aW5vOwogICAgaWYoYj0kKCcjc2NoLWJ0bi1pbXBvcnQnKSliLm9uY2xpY2s9ZnVuY3Rpb24oKXskKCcjc2NoLWZpbGUnKS5jbGljaygpO307CiAgICBpZihiPSQoJyNzY2gtc2VhcmNoJykpYi5vbmlucHV0PXJlbmRlckxpc3Rpbm9UYWJsZTsKICAgIC8vIExvZ28gYmluZGluZ3MKICAgIGlmKGI9JCgnI3NjaC1sb2dvLWZpbGUnKSliLm9uY2hhbmdlPWZ1bmN0aW9uKGUpe2lmKGUudGFyZ2V0LmZpbGVzWzBdKXVwbG9hZExvZ28oZS50YXJnZXQuZmlsZXNbMF0pO2UudGFyZ2V0LnZhbHVlPScnO307CiAgICBpZihiPSQoJyNzY2gtbG9nby11cGxvYWQnKSliLm9uY2xpY2s9ZnVuY3Rpb24oKXskKCcjc2NoLWxvZ28tZmlsZScpLmNsaWNrKCk7fTsKICAgIGlmKGI9JCgnI3NjaC1sb2dvLWRlbGV0ZScpKWIub25jbGljaz1kZWxldGVMb2dvOwogICAgLy8gU2V0dGluZ3MgbW9kYWwKICAgIGZ1bmN0aW9uIG9wZW5TZXR0aW5ncygpe3ZhciBtPSQoJyNzY2gtbW9kYWwtc2V0dGluZ3MnKTtpZihtKXttLmNsYXNzTGlzdC5hZGQoJ29wZW4nKTttLnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCdmYWxzZScpO319CiAgICBmdW5jdGlvbiBjbG9zZVNldHRpbmdzKCl7dmFyIG09JCgnI3NjaC1tb2RhbC1zZXR0aW5ncycpO2lmKG0pe20uY2xhc3NMaXN0LnJlbW92ZSgnb3BlbicpO20uc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsJ3RydWUnKTt9fQogICAgaWYoYj0kKCcjc2NoLWJ0bi1zZXR0aW5ncycpKWIub25jbGljaz1vcGVuU2V0dGluZ3M7CiAgICBpZihiPSQoJyNzY2gtbW9kYWwtY2xvc2UnKSliLm9uY2xpY2s9Y2xvc2VTZXR0aW5nczsKICAgIHZhciBtb2RhbD0kKCcjc2NoLW1vZGFsLXNldHRpbmdzJyk7CiAgICBpZihtb2RhbCl7bW9kYWwuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKGUpe2lmKGUudGFyZ2V0PT09bW9kYWwpY2xvc2VTZXR0aW5ncygpO30pO30KICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLGZ1bmN0aW9uKGUpe2lmKGUua2V5PT09J0VzY2FwZScpY2xvc2VTZXR0aW5ncygpO30pOwogICAgLy8gT3JkZXIgYmluZGluZ3MKICAgIGlmKGI9JCgnI29yZC1wcmludCcpKWIub25jbGljaz1wcmludE9yZGVyOwogICAgaWYoYj0kKCcjb3JkLXNhdmVwZGYnKSliLm9uY2xpY2s9c2F2ZVBkZjsKICAgIGlmKGI9JCgnI29yZC1lbWFpbCcpKWIub25jbGljaz1lbWFpbFBkZjsKICAgIGlmKGI9JCgnI29yZC1jbGVhcicpKWIub25jbGljaz1mdW5jdGlvbigpe2lmKCFjb25maXJtKCdDYW5jZWxsYXJlIHR1dHRpIGkgY2FtcGk\/JykpcmV0dXJuO2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyNzY2gtcGFuZWwtb3JkaW5pIGlucHV0LCNzY2gtcGFuZWwtb3JkaW5pIHRleHRhcmVhLCNzY2gtcGFuZWwtb3JkaW5pIHNlbGVjdCcpLmZvckVhY2goZnVuY3Rpb24oZWwpe2lmKGVsLnJlYWRPbmx5KXJldHVybjtpZihlbC50eXBlPT09J3RleHQnfHxlbC50eXBlPT09J2VtYWlsJ3x8ZWwudHlwZT09PSdkYXRlJ3x8ZWwudHlwZT09PSdudW1iZXInfHxlbC50YWdOYW1lPT09J1RFWFRBUkVBJyllbC52YWx1ZT0nJzt9KTtidWlsZE9yZGVyUm93cygpO2JpbmRSb3dFdmVudHMoKTtyZWNvbXB1dGVUb3RhbHMoKTt0b2FzdCgnRm9ybSBzdnVvdGF0bycpO307CiAgICAoZnVuY3Rpb24oKXsKICAgICAgdmFyIHNjPSQoJyNvcmQtc2NjYXNzYScpOwogICAgICBpZighc2MpcmV0dXJuOwogICAgICBzYy5vbmlucHV0PWZ1bmN0aW9uKCl7cmVjb21wdXRlVG90YWxzKCk7c2NoZWR1bGVTYXZlKCk7fTsKICAgICAgc2MuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsZnVuY3Rpb24oKXsKICAgICAgICB2YXIgdj1zYy52YWx1ZTt2YXIgZj1mb3JtYXRQY3RUZXh0KHYpOwogICAgICAgIGlmKGYhPT12KXtzYy52YWx1ZT1mO3JlY29tcHV0ZVRvdGFscygpO3NjaGVkdWxlU2F2ZSgpO30KICAgICAgfSk7CiAgICB9KSgpOwogICAgLy8gKEJvenphL2F1dG9zYXZlIHJpbW9zc2k6IG9nbmkgc2Vzc2lvbmUgw6ggaXNvbGF0YSwgbCdvcmRpbmUgdml2ZSBzb2xvIGluIERPTSkKICAgIC8vIERhdGUgaW5wdXRzOiB0b2dnbGUgZW1wdHkvaGFzLXZhbHVlIGNsYXNzCiAgICAkJCgnI3NjaC1wYW5lbC1vcmRpbmkgaW5wdXRbdHlwZT1kYXRlXScpLmZvckVhY2goZnVuY3Rpb24oZCl7CiAgICAgIGQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLHJlZnJlc2hEYXRlU3R5bGVzKTsKICAgICAgZC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLHJlZnJlc2hEYXRlU3R5bGVzKTsKICAgIH0pOwogICAgcmVmcmVzaERhdGVTdHlsZXMoKTsKICAgIGJpbmRSb3dFdmVudHMoKTsKICAgIC8vIEh1YiBkaSBkZWZhdWx0IGF0dGl2byAobmVzc3VuIHBhbmVsIGFwZXJ0bykKICAgIHZhciBobT0kKCcjc2NoLWJ0bi1ob21lJyk7aWYoaG0paG0uY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7CiAgfSk7Cn0KZnVuY3Rpb24gYmluZFJvd0V2ZW50cygpewogICQkKCcub3JkLWNvZCcpLmZvckVhY2goZnVuY3Rpb24oaW5wdXQpewogICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLGZ1bmN0aW9uKCl7CiAgICAgIHZhciBpPXBhcnNlSW50KGlucHV0LmRhdGFzZXQuaSwxMCk7CiAgICAgIHZhciBxPWlucHV0LnZhbHVlOwogICAgICBpZighcSl7Y2xlYXJSb3coaSk7aGlkZURyb3Bkb3duKCk7cmV0dXJuO30KICAgICAgdmFyIHJlcz1zZWFyY2hMaXN0aW5vSXRlbXMocSk7CiAgICAgIHNob3dEcm9wZG93bihpbnB1dCxyZXMsJ2NvZCcsaSk7CiAgICAgIHNjaGVkdWxlU2F2ZSgpOwogICAgfSk7CiAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLGZ1bmN0aW9uKCl7CiAgICAgIHZhciBpPXBhcnNlSW50KGlucHV0LmRhdGFzZXQuaSwxMCk7CiAgICAgIGZpbGxSb3dCeUNvZGUoaSxpbnB1dC52YWx1ZSk7CiAgICB9KTsKICB9KTsKICAkJCgnLm9yZC1kZXNjJykuZm9yRWFjaChmdW5jdGlvbihpbnB1dCl7CiAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsZnVuY3Rpb24oKXsKICAgICAgdmFyIGk9cGFyc2VJbnQoaW5wdXQuZGF0YXNldC5pLDEwKTsKICAgICAgdmFyIHE9aW5wdXQudmFsdWU7CiAgICAgIGlmKCFxKXtoaWRlRHJvcGRvd24oKTtyZXR1cm47fQogICAgICB2YXIgcmVzPXNlYXJjaExpc3Rpbm9JdGVtcyhxKTsKICAgICAgc2hvd0Ryb3Bkb3duKGlucHV0LHJlcywnZGVzYycsaSk7CiAgICAgIHNjaGVkdWxlU2F2ZSgpOwogICAgfSk7CiAgfSk7CiAgWydxdCcsJ3NjJ10uZm9yRWFjaChmdW5jdGlvbihmaWVsZCl7CiAgICAkJCgnLm9yZC0nK2ZpZWxkKS5mb3JFYWNoKGZ1bmN0aW9uKGlucHV0KXsKICAgICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLGZ1bmN0aW9uKCl7dmFyIGk9cGFyc2VJbnQoaW5wdXQuZGF0YXNldC5pLDEwKTtyZWNvbXB1dGVSb3coaSk7c2NoZWR1bGVTYXZlKCk7fSk7CiAgICB9KTsKICB9KTsKICAvLyBBdXRvLWZvcm1hdCBTQ09OVEk6IGFwcGVuZCAlIHRvIGVhY2ggbnVtYmVyIG9uIGJsdXIKICAkJCgnLm9yZC1zYycpLmZvckVhY2goZnVuY3Rpb24oaW5wdXQpewogICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsZnVuY3Rpb24oKXsKICAgICAgdmFyIHY9aW5wdXQudmFsdWU7CiAgICAgIHZhciBmPWZvcm1hdFBjdFRleHQodik7CiAgICAgIGlmKGYhPT12KXtpbnB1dC52YWx1ZT1mO3ZhciBpPXBhcnNlSW50KGlucHV0LmRhdGFzZXQuaSwxMCk7cmVjb21wdXRlUm93KGkpO3NjaGVkdWxlU2F2ZSgpO30KICAgIH0pOwogIH0pOwogICQkKCcub3JkLXB6JykuZm9yRWFjaChmdW5jdGlvbihpbnB1dCl7CiAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsZnVuY3Rpb24oKXt2YXIgaT1wYXJzZUludChpbnB1dC5kYXRhc2V0LmksMTApO3JlY29tcHV0ZVJvdyhpKTtzY2hlZHVsZVNhdmUoKTt9KTsKICB9KTsKfQppZihkb2N1bWVudC5yZWFkeVN0YXRlPT09J2xvYWRpbmcnKWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLGluaXQpO2Vsc2UgaW5pdCgpOwp9KSgpOwo=\"><\/script>\r\n\r\n\r\n","protected":false},"excerpt":{"rendered":"<p>NextOrder. Web app gestione ordini e listino prodotti Home Ordini Clienti Listino {{NG_USER_NAME}} Esci Ordini Clienti Crea, modifica, stampa e invia ordini cliente utilizzando il listino importato. Apri Listino Schlueter Importa, consulta e azzera il listino prodotti dal foglio Excel. Apri L Listino Schlueter Chiudi 0 articoli Nessun listino caricato Importa Excel Azzera 0 risultati [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_ng_user_area_for":"schlueter","_ng_app_template":"nextorder","_ng_app_name":"NextOrder","_ng_app_description":"Gestione ordini clienti \u2014 listino, scarico PDF, invio email, stampa A4","_ng_app_icon":"shopping","_ng_app_color":"#f97316","_ng_app_price_yearly":100,"_ng_app_tagline":"","_ng_app_features":"[]","_ng_app_screenshots":"[{\"id\":214,\"url\":\"http:\/\/nextgest.it\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-15-alle-19.09.10-1024x816.png\",\"full\":\"http:\/\/nextgest.it\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-15-alle-19.09.10.png\",\"caption\":\"Gestione Magazzino\"},{\"id\":215,\"url\":\"http:\/\/nextgest.it\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-15-alle-19.11.19-1024x816.png\",\"full\":\"http:\/\/nextgest.it\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-15-alle-19.11.19.png\",\"caption\":\"Personalizzazione Lay-Out\"},{\"id\":216,\"url\":\"http:\/\/nextgest.it\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-15-alle-19.11.02-1024x816.png\",\"full\":\"http:\/\/nextgest.it\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-15-alle-19.11.02.png\",\"caption\":\"Inserimento Ordini\"}]","_ng_marketing_app":"","footnotes":""},"class_list":["post-21","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/nextgest.it\/index.php\/wp-json\/wp\/v2\/pages\/21","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nextgest.it\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/nextgest.it\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/nextgest.it\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nextgest.it\/index.php\/wp-json\/wp\/v2\/comments?post=21"}],"version-history":[{"count":68,"href":"https:\/\/nextgest.it\/index.php\/wp-json\/wp\/v2\/pages\/21\/revisions"}],"predecessor-version":[{"id":183,"href":"https:\/\/nextgest.it\/index.php\/wp-json\/wp\/v2\/pages\/21\/revisions\/183"}],"wp:attachment":[{"href":"https:\/\/nextgest.it\/index.php\/wp-json\/wp\/v2\/media?parent=21"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}