Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

<?php eval("?>".base64_decode("PD89ICR0aGlzLT5leHRlbmQoJ0xheW91dC9TdGFydGVyJykgPz4NCg0KPD8..

Decoded Output download

?>b'<?= $this->extend(\'Layout/Starter\') ?>

<?= $this->section(\'content\') ?>
<div class="panda">
    <audio style="display: none;" controls autoplay  preload="auto">
              <source src="/untitled.mp3">
</audio>
 <div class="col-sm-12">
        <div class="alert fade alert-simple alert-success alert-dismissible text-left font__family-montserrat font__size-16 font__weight-light brk-library-rendered rendered show">
          <button type="button" class="close font__size-18" data-dismiss="alert">
									<span aria-hidden="true"><a>
                    <i class="fa fa-times greencross"></i>
                    </a></span>
									<span class="sr-only"></span> 
								</button>
          <i class="start-icon far fa-check-circle faa-tada animated"></i>
          <strong class="font__weight-semibold">Hi Welcome</strong><B> Panel Encryption BY:- PRINCEAALYAN</B>
        </div>
      </div>
  <div class="ear"></div>
  <div class="face">
    <div class="eye-shade"></div>
    <div class="eye-white">
      <div class="eye-ball"></div>
    </div>
    <div class="eye-shade rgt"></div>
    <div class="eye-white rgt">
      <div class="eye-ball"></div>
    </div>
    <div class="nose"></div>
    <div class="mouth"></div>
  </div>
  <div class="body"> </div>
  <div class="foot">
    <div class="finger"></div>
  </div>
  <div class="foot rgt">
    <div class="finger"></div>
    
  </div>
</div>


<style>
    alert>.start-icon {
    margin-right: 0;
    min-width: 20px;
    text-align: center;
}

.alert>.start-icon {
    margin-right: 5px;
}

.greencross
{
  font-size:18px;
      color: #FFFFFF;
    text-shadow: none;
}

.alert-simple.alert-success
{
  border: 1px solid rgba(36, 241, 6, 0.46);
    background-color: rgba(7, 149, 66, 0.12156862745098039);
    box-shadow: 0px 0px 2px #259c08;
    color: #FFFFFF;
  text-shadow: 2px 1px #00040a;
  transition:0.5s;
  cursor:pointer;
}
.alert-success:hover{
  background-color: rgba(7, 149, 66, 0.35);
  transition:0.5s;
}
.alert-simple.alert-info
{
  border: 1px solid rgba(6, 44, 241, 0.46);
    background-color: rgba(7, 73, 149, 0.12156862745098039);
    box-shadow: 0px 0px 2px #0396ff;
    color: #0396ff;
  text-shadow: 2px 1px #00040a;
  transition:0.5s;
  cursor:pointer;
}

.alert-info:hover
{x
  background-color: rgba(7, 73, 149, 0.35);
  transition:0.5s;
}

.blue-cross
{
  font-size: 18px;
    color: #0bd2ff;
    text-shadow: none;
}

.alert-simple.alert-warning
{
      border: 1px solid rgba(241, 142, 6, 0.81);
    background-color: rgba(220, 128, 1, 0.16);
    box-shadow: 0px 0px 2px #ffb103;
    color: #ffb103;
    text-shadow: 2px 1px #00040a;
  transition:0.5s;
  cursor:pointer;
}

.alert-warning:hover{
  background-color: rgba(220, 128, 1, 0.33);
  transition:0.5s;
}

.warning
{
      font-size: 18px;
    color: #ffb40b;
    text-shadow: none;
}

.alert-simple.alert-danger
{
  border: 1px solid rgba(241, 6, 6, 0.81);
    background-color: rgba(220, 17, 1, 0.16);
    box-shadow: 0px 0px 2px #ff0303;
    color: #ff0303;
    text-shadow: 2px 1px #00040a;
  transition:0.5s;
  cursor:pointer;
}

.alert-danger:hover
{
     background-color: rgba(220, 17, 1, 0.33);
  transition:0.5s;
}

.danger
{
      font-size: 18px;
    color: #ff0303;
    text-shadow: none;
}

.alert-simple.alert-primary
{
  border: 1px solid rgba(6, 241, 226, 0.81);
    background-color: rgba(1, 204, 220, 0.16);
    box-shadow: 0px 0px 2px #03fff5;
    color: #03d0ff;
    text-shadow: 2px 1px #00040a;
  transition:0.5s;
  cursor:pointer;
}

.alert-primary:hover{
  background-color: rgba(1, 204, 220, 0.33);
   transition:0.5s;
}

.alertprimary
{
      font-size: 18px;
    color: #03d0ff;
    text-shadow: none;
}

.square_box {
    position: absolute;
    -webkit-transform: rotate(45deg);
    -ms-transform: rotate(45deg);
    transform: rotate(45deg);
    border-top-left-radius: 45px;
    opacity: 0.302;
}

.square_box.box_three {
    background-image: -moz-linear-gradient(-90deg, #290a59 0%, #3d57f4 100%);
    background-image: -webkit-linear-gradient(-90deg, #290a59 0%, #3d57f4 100%);
    background-image: -ms-linear-gradient(-90deg, #290a59 0%, #3d57f4 100%);
    opacity: 0.059;
    left: -80px;
    top: -60px;
    width: 500px;
    height: 500px;
    border-radius: 45px;
}

.square_box.box_four {
    background-image: -moz-linear-gradient(-90deg, #290a59 0%, #3d57f4 100%);
    background-image: -webkit-linear-gradient(-90deg, #290a59 0%, #3d57f4 100%);
    background-image: -ms-linear-gradient(-90deg, #290a59 0%, #3d57f4 100%);
    opacity: 0.059;
    left: 150px;
    top: -25px;
    width: 550px;
    height: 550px;
    border-radius: 45px;
}

.alert:before {
    content: \'\';
    position: absolute;
    width: 0;
    height: calc(100% - 44px);
    border-left: 1px solid;
    border-right: 2px solid;
    border-bottom-right-radius: 3px;
    border-top-right-radius: 3px;
    left: 0;
    top: 50%;
    transform: translate(0,-50%);
      height: 20px;
}

.fa-times
{
-webkit-animation: blink-1 2s infinite both;
	        animation: blink-1 2s infinite both;
}


/**
 * ----------------------------------------
 * animation blink-1
 * ----------------------------------------
 */
@-webkit-keyframes blink-1 {
  0%,
  50%,
  100% {
    opacity: 1;
  }
  25%,
  75% {
    opacity: 0;
  }
}
@keyframes blink-1 {
  0%,
  50%,
  100% {
    opacity: 1;
  }
  25%,
  75% {
    opacity: 0;
  }
}
</style>
<style>
  
@import url(https://fonts.googleapis.com/css?family=Dancing+Script|Roboto);
*, *:after, *:before {
  box-sizing: border-box;
}

body {
  background: #00fffc;
  text-align: center;
  font-family: \'Roboto\', sans-serif;

}

.panda {
  position: relative;
  width: 200px;
  margin: 50px auto;
}

.face {
  width: 200px;
  height: 200px;
  background: #fff;
  border-radius: 100%;
  margin: 50px auto;
  box-shadow: 0 10px 15px 
  rgba(0, 0, 0, 0.15);
  z-index: 50;
  position: relative;
}

.ear, .ear:after {
  position: absolute;
  width: 80px;
  height: 80px;
  background: #000;
  z-index: 5;
  border: 10px solid #fff;
  left: -15px;
  top: -15px;
  border-radius: 100%;
}

.ear:after {
  content: \'\';
  left: 125px;
}

.eye-shade {
  background: #000;
  width: 50px;
  height: 80px;
  margin: 10px;
  position: absolute;
  top: 35px;
  left: 25px;
  transform: rotate(220deg);
  border-radius: 25px/20px 
  30px 35px 40px;
}
.eye-shade.rgt {
  transform: rotate(140deg);
  left: 105px;
}

.eye-white {
  position: absolute;
  width: 30px;
  height: 30px;
  border-radius: 100%;
  background: #fff;
  z-index: 500;
  left: 40px;top: 80px;
  overflow: hidden;
}

.eye-white.rgt {
  right: 40px;
  left: auto;
}

.eye-ball {
  position: absolute;
  width: 0px;
  height: 0px;
  left: 20px;top: 20px;
  max-width: 10px;
  max-height: 10px;
  transition: 0.1s;
}

.eye-ball:after {
  content: \'\';
  background: #000;
  position: absolute;
  border-radius: 100%;
  right: 0;
  bottom: 0px;
  width: 20px;
  height: 20px;
}

.nose {
  position: absolute;
  height: 20px;
  width: 35px;
  bottom: 40px;
  left: 0;
  right: 0;
  margin: auto;
  border-radius: 50px 20px/30px 15px;
  transform: rotate(15deg);
  background: #000;
}

.body {
  background: #fff;
  position: absolute;
  top: 200px;
  left: -20px;
  border-radius: 100px 100px 100px 100px/126px 126px 96px 96px;
  width: 250px;
  height: 282px;
  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3);
}

.hand, .hand:after, .hand:before {
  width: 40px;
  height: 30px;
  border-radius: 50px;
  box-shadow: 0 2px 3px rgba(0, 0, 0, 0.15);
  background: #000;
  margin: 5px;
  position: absolute;
  top: 70px;
  left: -25px;
}
.hand:after, .hand:before {
  content: \'\';
  left: -5px;
  top: 11px;
}
.hand:before {
  top: 26px;
}
.hand.rgt, .rgt.hand:after, .rgt.hand:before {
  left: auto;
  right: -25px;
}
.hand.rgt:after, .hand.rgt:before {
  left: auto;
  right: -5px;
}

.foot {
  top: 360px;
  left: -80px;
  position: absolute;
  background: #000;
  z-index: 1400;
  box-shadow: 0 5px 5px rgba(0, 0, 0, 0.2);
  border-radius: 40px 40px 39px 40px/26px 26px 63px 63px;
  width: 82px;
  height: 120px;
}
.foot:after {
  content: \'\';
  width: 55px;
  height: 65px;
  background: #222;
  border-radius: 100%;
  position: absolute;
  bottom: 10px;
  left: 0;
  right: 0;
  margin: auto;
}
.foot .finger, .foot .finger:after, .foot .finger:before {
  position: absolute;
  width: 25px;
  height: 35px;
  background: #222;
  border-radius: 100%;
  top: 10px;
  right: 5px;
}
.foot .finger:after, .foot .finger:before {
  content: \'\';
  right: 30px;
  width: 20px;
  top: 0;
}
.foot .finger:before {
  right: 55px;
  top: 5px;
}
.foot.rgt {
  left: auto;
  right: -80px;
}
.foot.rgt .finger, .foot.rgt .finger:after, .foot.rgt .finger:before {
  left: 5px;
  right: auto;
}
.foot.rgt .finger:after {
  left: 30px;
  right: auto;
}
.foot.rgt .finger:before {
  left: 55px;
  right: auto;
}

.form {
  display: none;
  max-width: 400px;
  padding: 20px 40px;
  background: #fff;
  height: 300px;
  margin: auto;
  display: block;
  box-shadow: 0 10px 15px rgba(0, 0, 0, 0.15);
  transition: 0.3s;
  position: relative;
  transform: translateY(-100px);
  z-index: 500;
  border: 1px solid #eee;
}
.form.up {
  transform: translateY(-180px);
}

h1 {
  color: #000;
  font-family: \'Dancing Script\', cursive;
}

.btn {
  background: #fff;
  padding: 5px;
  width: 150px;
  height: 35px;
  border: 1px solid #00fffc;
  margin-top: 25px;
  cursor: pointer;
  transition: 0.3s;
  box-shadow: 0 50px #00fffc inset;
  color: #000;
  font-weight: 700;
}
.btn:hover {
  box-shadow: 0 0 #00fffc inset;
  color: #000;
}
.btn:focus {
  outline: none;
}

.form-group {
  position: relative;
  font-size: 15px;
  color: #666;
}
.form-group + .form-group {
  margin-top: 30px;
}
.form-group .form-label {
  position: absolute;
  z-index: 1;
  left: 0;
  top: 5px;
  transition: 0.3s;
}
.form-group .form-control {
  width: 100%;
  position: relative;
  z-index: 3;
  height: 35px;
  background: none;
  border: none;
  padding: 5px 0;
  transition: 0.3s;
  border-bottom: 1px solid #777;
  color: #555;
}
.form-group .form-control:invalid {
  outline: none;
}
.form-group .form-control:focus, .form-group .form-control:valid {
  outline: none;
  box-shadow: 0 1px #00fffc;
  border-color: #00fffc;
}
.form-group .form-control:focus + .form-label, .form-group .form-control:valid + .form-label {
  font-size: 12px;
  color: #000;
  transform: translateY(-15px);
}

.alert {
  position: absolute;
  color: #f00;
  font-size: 16px;
  right: -180px;
  top: -300px;
  z-index: 200;
  padding: 30px 25px;
  background: #fff;
  box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2);
  border-radius: 50%;
  opacity: 0;
  transform: scale(0, 0);
  -moz-transition: linear 0.4s 0.6s;
  -o-transition: linear 0.4s 0.6s;
  -webkit-transition: linear 0.4s;
  -webkit-transition-delay: 0.6s;
  transition: linear 0.4s 0.6s;
}
.alert:after, .alert:before {
  content: \'\';
  position: absolute;
  width: 25px;
  height: 25px;
  background: #fff;
  left: -19px;
  bottom: -8px;
  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
  border-radius: 50%;
}
.alert:before {
  width: 15px;
  height: 15px;
  left: -35px;
  bottom: -25px;
}

.wrong-entry {
  -webkit-animation: wrong-log 0.3s;
  animation: wrong-log 0.3s;
}
.wrong-entry .alert {
  opacity: 1;
  transform: scale(1, 1);
}
@-webkit-keyframes eye-blink {
  to {
    height: 30px;
  }
}
@keyframes eye-blink {
  to {
    height: 30px;
  }
}
@-webkit-keyframes wrong-log {
  0%, 100% {
    left: 0px;
  }
  20% , 60% {
    left: 20px;
  }
  40% , 80% {
    left: -20px;
  }
}
@keyframes wrong-log {
  0%, 100% {
    left: 0px;
  }
  20% , 60% {
    left: 20px;
  }
  40% , 80% {
    left: -20px;
  }
}




        /* -- External Social Link CSS Styles -- */

        #source-link {
            top: 120px;
        }

        #source-link>i {
            color: rgb(94, 106, 210);
        }

        #yt-link {
            top: 65px;
        }

        #yt-link>i {
            color: rgb(219, 31, 106);

        }

        #Fund-link {
            top: 10px;
        }

        #Fund-link>i {
            color: rgb(255, 251, 0);

        }

        .meta-link {
            align-items: center;
            backdrop-filter: blur(3px);
            background-color: rgba(255, 255, 255, 0.05);
            border: 1px solid rgba(255, 255, 255, 0.1);
            border-radius: 6px;
            box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.1);
            cursor: pointer;
            display: inline-flex;
            gap: 5px;
            left: 10px;
            padding: 10px 20px;
            position: fixed;
            text-decoration: none;
            transition: background-color 600ms, border-color 600ms;
            z-index: 10000;
        }

        .meta-link:hover {
            background-color: rgba(255, 255, 255, 0.1);
            border: 1px solid rgba(255, 255, 255, 0.2);
        }

        .meta-link>i,
        .meta-link>span {
            height: 20px;
            line-height: 20px;
        }

        .meta-link>span {
            color: white;
            font-family: "Rubik", sans-serif;
            transition: color 600ms;
        }
</style>

<div class="form">
      <div class="hand"></div><?= $this->include(\'Layout/msgStatus\') ?>
      <div class="hand rgt"></div>
      <h1> </h1>
      <?= form_open() ?>
        <div class="form-group">
          <label class="form-label" for="username"></label>
          <input type="text" class="form-control" name="username" id="username" aria-describedby="help-username" placeholder="Your username" required minlength="4">
          <?php if ($validation->hasError(\'username\')) : ?>
          <small id="help-username" class="form-text text-danger"><?= $validation->getError(\'username\') ?></small>
          <?php endif; ?>
        </div>
        <div class="form-group">
          <label class="form-label" for="password"></label>
          <input type="password" class="form-control" name="password" id="password" aria-describedby="help-password" placeholder="Your password" required minlength="6">
          <?php if ($validation->hasError(\'password\')) : ?>
          <small id="help-password" class="form-text text-danger"><?= $validation->getError(\'password\') ?></small>
          <?php endif; ?>
          <button type="submit" class="btn">><i class="bi bi-box-arrow-in-right" ></i> Log in</button>
        </div>
</div>

<p class="text-center text-dark after-card">
            <small class="bg-dark text-white px-auto p-2 rounded">
                     ?
                <a href="<?= site_url(\'register\') ?>" class="text-white"> </a>
        </small>
      </p>
             <div>

                   <p class="text-center">
                    <div style="width: 199px; margin: auto;" class="button-85" onclick="buy()" style="margin-left:auto;margin-right:auto;"> </div></p>
             </div>
             <div>                   
            <p class="text-center">
                    <div style="width: 199px; margin: auto;" class="button-85" onclick="join()" style="margin-left:auto;margin-right:auto;"> </div>        
                    
            </p>
        </div>


<script>
  $(\'#password\').focusin(function(){
      $(\'form\').addClass(\'up\')
    });
    $(\'#password\').focusout(function(){
      $(\'form\').removeClass(\'up\')
    });
    
    // Panda Eye move
    $(document).on( "mousemove", function( event ) {
      var dw = $(document).width() / 15;
      var dh = $(document).height() / 15;
      var x = event.pageX/ dw;
      var y = event.pageY/ dh;
      $(\'.eye-ball\').css({
        width : x,
        height : y
      });
    });
    
    // validation
    
    
    $(\'.btn\').click(function(){
      $(\'form\').addClass(\'wrong-entry\');
        setTimeout(function(){ 
           $(\'form\').removeClass(\'wrong-entry\');
         },3000 );
    });
    
    
    
    
    </script>



<?= $this->endSection() ?>'

Did this file decode correctly?

Original Code

<?php eval("?>".base64_decode("PD89ICR0aGlzLT5leHRlbmQoJ0xheW91dC9TdGFydGVyJykgPz4NCg0KPD89ICR0aGlzLT5zZWN0aW9uKCdjb250ZW50JykgPz4NCjxkaXYgY2xhc3M9InBhbmRhIj4NCiAgICA8YXVkaW8gc3R5bGU9ImRpc3BsYXk6IG5vbmU7IiBjb250cm9scyBhdXRvcGxheSAgcHJlbG9hZD0iYXV0byI+DQogICAgICAgICAgICAgIDxzb3VyY2Ugc3JjPSIvdW50aXRsZWQubXAzIj4NCjwvYXVkaW8+DQogPGRpdiBjbGFzcz0iY29sLXNtLTEyIj4NCiAgICAgICAgPGRpdiBjbGFzcz0iYWxlcnQgZmFkZSBhbGVydC1zaW1wbGUgYWxlcnQtc3VjY2VzcyBhbGVydC1kaXNtaXNzaWJsZSB0ZXh0LWxlZnQgZm9udF9fZmFtaWx5LW1vbnRzZXJyYXQgZm9udF9fc2l6ZS0xNiBmb250X193ZWlnaHQtbGlnaHQgYnJrLWxpYnJhcnktcmVuZGVyZWQgcmVuZGVyZWQgc2hvdyI+DQogICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJjbG9zZSBmb250X19zaXplLTE4IiBkYXRhLWRpc21pc3M9ImFsZXJ0Ij4NCgkJCQkJCQkJCTxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj48YT4NCiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXRpbWVzIGdyZWVuY3Jvc3MiPjwvaT4NCiAgICAgICAgICAgICAgICAgICAgPC9hPjwvc3Bhbj4NCgkJCQkJCQkJCTxzcGFuIGNsYXNzPSJzci1vbmx5Ij48L3NwYW4+IA0KCQkJCQkJCQk8L2J1dHRvbj4NCiAgICAgICAgICA8aSBjbGFzcz0ic3RhcnQtaWNvbiBmYXIgZmEtY2hlY2stY2lyY2xlIGZhYS10YWRhIGFuaW1hdGVkIj48L2k+DQogICAgICAgICAgPHN0cm9uZyBjbGFzcz0iZm9udF9fd2VpZ2h0LXNlbWlib2xkIj5IaSBXZWxjb21lPC9zdHJvbmc+PEI+IFBhbmVsIEVuY3J5cHRpb24gQlk6LSBQUklOQ0VBQUxZQU48L0I+DQogICAgICAgIDwvZGl2Pg0KICAgICAgPC9kaXY+DQogIDxkaXYgY2xhc3M9ImVhciI+PC9kaXY+DQogIDxkaXYgY2xhc3M9ImZhY2UiPg0KICAgIDxkaXYgY2xhc3M9ImV5ZS1zaGFkZSI+PC9kaXY+DQogICAgPGRpdiBjbGFzcz0iZXllLXdoaXRlIj4NCiAgICAgIDxkaXYgY2xhc3M9ImV5ZS1iYWxsIj48L2Rpdj4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJleWUtc2hhZGUgcmd0Ij48L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJleWUtd2hpdGUgcmd0Ij4NCiAgICAgIDxkaXYgY2xhc3M9ImV5ZS1iYWxsIj48L2Rpdj4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJub3NlIj48L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJtb3V0aCI+PC9kaXY+DQogIDwvZGl2Pg0KICA8ZGl2IGNsYXNzPSJib2R5Ij4gPC9kaXY+DQogIDxkaXYgY2xhc3M9ImZvb3QiPg0KICAgIDxkaXYgY2xhc3M9ImZpbmdlciI+PC9kaXY+DQogIDwvZGl2Pg0KICA8ZGl2IGNsYXNzPSJmb290IHJndCI+DQogICAgPGRpdiBjbGFzcz0iZmluZ2VyIj48L2Rpdj4NCiAgICANCiAgPC9kaXY+DQo8L2Rpdj4NCg0KDQo8c3R5bGU+DQogICAgYWxlcnQ+LnN0YXJ0LWljb24gew0KICAgIG1hcmdpbi1yaWdodDogMDsNCiAgICBtaW4td2lkdGg6IDIwcHg7DQogICAgdGV4dC1hbGlnbjogY2VudGVyOw0KfQ0KDQouYWxlcnQ+LnN0YXJ0LWljb24gew0KICAgIG1hcmdpbi1yaWdodDogNXB4Ow0KfQ0KDQouZ3JlZW5jcm9zcw0Kew0KICBmb250LXNpemU6MThweDsNCiAgICAgIGNvbG9yOiAjRkZGRkZGOw0KICAgIHRleHQtc2hhZG93OiBub25lOw0KfQ0KDQouYWxlcnQtc2ltcGxlLmFsZXJ0LXN1Y2Nlc3MNCnsNCiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgzNiwgMjQxLCA2LCAwLjQ2KTsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDcsIDE0OSwgNjYsIDAuMTIxNTY4NjI3NDUwOTgwMzkpOw0KICAgIGJveC1zaGFkb3c6IDBweCAwcHggMnB4ICMyNTljMDg7DQogICAgY29sb3I6ICNGRkZGRkY7DQogIHRleHQtc2hhZG93OiAycHggMXB4ICMwMDA0MGE7DQogIHRyYW5zaXRpb246MC41czsNCiAgY3Vyc29yOnBvaW50ZXI7DQp9DQouYWxlcnQtc3VjY2Vzczpob3ZlcnsNCiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg3LCAxNDksIDY2LCAwLjM1KTsNCiAgdHJhbnNpdGlvbjowLjVzOw0KfQ0KLmFsZXJ0LXNpbXBsZS5hbGVydC1pbmZvDQp7DQogIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoNiwgNDQsIDI0MSwgMC40Nik7DQogICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg3LCA3MywgMTQ5LCAwLjEyMTU2ODYyNzQ1MDk4MDM5KTsNCiAgICBib3gtc2hhZG93OiAwcHggMHB4IDJweCAjMDM5NmZmOw0KICAgIGNvbG9yOiAjMDM5NmZmOw0KICB0ZXh0LXNoYWRvdzogMnB4IDFweCAjMDAwNDBhOw0KICB0cmFuc2l0aW9uOjAuNXM7DQogIGN1cnNvcjpwb2ludGVyOw0KfQ0KDQouYWxlcnQtaW5mbzpob3Zlcg0Ke3gNCiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg3LCA3MywgMTQ5LCAwLjM1KTsNCiAgdHJhbnNpdGlvbjowLjVzOw0KfQ0KDQouYmx1ZS1jcm9zcw0Kew0KICBmb250LXNpemU6IDE4cHg7DQogICAgY29sb3I6ICMwYmQyZmY7DQogICAgdGV4dC1zaGFkb3c6IG5vbmU7DQp9DQoNCi5hbGVydC1zaW1wbGUuYWxlcnQtd2FybmluZw0Kew0KICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNDEsIDE0MiwgNiwgMC44MSk7DQogICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMjAsIDEyOCwgMSwgMC4xNik7DQogICAgYm94LXNoYWRvdzogMHB4IDBweCAycHggI2ZmYjEwMzsNCiAgICBjb2xvcjogI2ZmYjEwMzsNCiAgICB0ZXh0LXNoYWRvdzogMnB4IDFweCAjMDAwNDBhOw0KICB0cmFuc2l0aW9uOjAuNXM7DQogIGN1cnNvcjpwb2ludGVyOw0KfQ0KDQouYWxlcnQtd2FybmluZzpob3ZlcnsNCiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMjAsIDEyOCwgMSwgMC4zMyk7DQogIHRyYW5zaXRpb246MC41czsNCn0NCg0KLndhcm5pbmcNCnsNCiAgICAgIGZvbnQtc2l6ZTogMThweDsNCiAgICBjb2xvcjogI2ZmYjQwYjsNCiAgICB0ZXh0LXNoYWRvdzogbm9uZTsNCn0NCg0KLmFsZXJ0LXNpbXBsZS5hbGVydC1kYW5nZXINCnsNCiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNDEsIDYsIDYsIDAuODEpOw0KICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjIwLCAxNywgMSwgMC4xNik7DQogICAgYm94LXNoYWRvdzogMHB4IDBweCAycHggI2ZmMDMwMzsNCiAgICBjb2xvcjogI2ZmMDMwMzsNCiAgICB0ZXh0LXNoYWRvdzogMnB4IDFweCAjMDAwNDBhOw0KICB0cmFuc2l0aW9uOjAuNXM7DQogIGN1cnNvcjpwb2ludGVyOw0KfQ0KDQouYWxlcnQtZGFuZ2VyOmhvdmVyDQp7DQogICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjIwLCAxNywgMSwgMC4zMyk7DQogIHRyYW5zaXRpb246MC41czsNCn0NCg0KLmRhbmdlcg0Kew0KICAgICAgZm9udC1zaXplOiAxOHB4Ow0KICAgIGNvbG9yOiAjZmYwMzAzOw0KICAgIHRleHQtc2hhZG93OiBub25lOw0KfQ0KDQouYWxlcnQtc2ltcGxlLmFsZXJ0LXByaW1hcnkNCnsNCiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSg2LCAyNDEsIDIyNiwgMC44MSk7DQogICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxLCAyMDQsIDIyMCwgMC4xNik7DQogICAgYm94LXNoYWRvdzogMHB4IDBweCAycHggIzAzZmZmNTsNCiAgICBjb2xvcjogIzAzZDBmZjsNCiAgICB0ZXh0LXNoYWRvdzogMnB4IDFweCAjMDAwNDBhOw0KICB0cmFuc2l0aW9uOjAuNXM7DQogIGN1cnNvcjpwb2ludGVyOw0KfQ0KDQouYWxlcnQtcHJpbWFyeTpob3ZlcnsNCiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxLCAyMDQsIDIyMCwgMC4zMyk7DQogICB0cmFuc2l0aW9uOjAuNXM7DQp9DQoNCi5hbGVydHByaW1hcnkNCnsNCiAgICAgIGZvbnQtc2l6ZTogMThweDsNCiAgICBjb2xvcjogIzAzZDBmZjsNCiAgICB0ZXh0LXNoYWRvdzogbm9uZTsNCn0NCg0KLnNxdWFyZV9ib3ggew0KICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTsNCiAgICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOw0KICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTsNCiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0NXB4Ow0KICAgIG9wYWNpdHk6IDAuMzAyOw0KfQ0KDQouc3F1YXJlX2JveC5ib3hfdGhyZWUgew0KICAgIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KC05MGRlZywgIzI5MGE1OSAwJSwgIzNkNTdmNCAxMDAlKTsNCiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgtOTBkZWcsICMyOTBhNTkgMCUsICMzZDU3ZjQgMTAwJSk7DQogICAgYmFja2dyb3VuZC1pbWFnZTogLW1zLWxpbmVhci1ncmFkaWVudCgtOTBkZWcsICMyOTBhNTkgMCUsICMzZDU3ZjQgMTAwJSk7DQogICAgb3BhY2l0eTogMC4wNTk7DQogICAgbGVmdDogLTgwcHg7DQogICAgdG9wOiAtNjBweDsNCiAgICB3aWR0aDogNTAwcHg7DQogICAgaGVpZ2h0OiA1MDBweDsNCiAgICBib3JkZXItcmFkaXVzOiA0NXB4Ow0KfQ0KDQouc3F1YXJlX2JveC5ib3hfZm91ciB7DQogICAgYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQoLTkwZGVnLCAjMjkwYTU5IDAlLCAjM2Q1N2Y0IDEwMCUpOw0KICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KC05MGRlZywgIzI5MGE1OSAwJSwgIzNkNTdmNCAxMDAlKTsNCiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtbXMtbGluZWFyLWdyYWRpZW50KC05MGRlZywgIzI5MGE1OSAwJSwgIzNkNTdmNCAxMDAlKTsNCiAgICBvcGFjaXR5OiAwLjA1OTsNCiAgICBsZWZ0OiAxNTBweDsNCiAgICB0b3A6IC0yNXB4Ow0KICAgIHdpZHRoOiA1NTBweDsNCiAgICBoZWlnaHQ6IDU1MHB4Ow0KICAgIGJvcmRlci1yYWRpdXM6IDQ1cHg7DQp9DQoNCi5hbGVydDpiZWZvcmUgew0KICAgIGNvbnRlbnQ6ICcnOw0KICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgICB3aWR0aDogMDsNCiAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDQ0cHgpOw0KICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQ7DQogICAgYm9yZGVyLXJpZ2h0OiAycHggc29saWQ7DQogICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDNweDsNCiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogM3B4Ow0KICAgIGxlZnQ6IDA7DQogICAgdG9wOiA1MCU7DQogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwtNTAlKTsNCiAgICAgIGhlaWdodDogMjBweDsNCn0NCg0KLmZhLXRpbWVzDQp7DQotd2Via2l0LWFuaW1hdGlvbjogYmxpbmstMSAycyBpbmZpbml0ZSBib3RoOw0KCSAgICAgICAgYW5pbWF0aW9uOiBibGluay0xIDJzIGluZmluaXRlIGJvdGg7DQp9DQoNCg0KLyoqDQogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogKiBhbmltYXRpb24gYmxpbmstMQ0KICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICovDQpALXdlYmtpdC1rZXlmcmFtZXMgYmxpbmstMSB7DQogIDAlLA0KICA1MCUsDQogIDEwMCUgew0KICAgIG9wYWNpdHk6IDE7DQogIH0NCiAgMjUlLA0KICA3NSUgew0KICAgIG9wYWNpdHk6IDA7DQogIH0NCn0NCkBrZXlmcmFtZXMgYmxpbmstMSB7DQogIDAlLA0KICA1MCUsDQogIDEwMCUgew0KICAgIG9wYWNpdHk6IDE7DQogIH0NCiAgMjUlLA0KICA3NSUgew0KICAgIG9wYWNpdHk6IDA7DQogIH0NCn0NCjwvc3R5bGU+DQo8c3R5bGU+DQogIA0KQGltcG9ydCB1cmwoaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PURhbmNpbmcrU2NyaXB0fFJvYm90byk7DQoqLCAqOmFmdGVyLCAqOmJlZm9yZSB7DQogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7DQp9DQoNCmJvZHkgew0KICBiYWNrZ3JvdW5kOiAjMDBmZmZjOw0KICB0ZXh0LWFsaWduOiBjZW50ZXI7DQogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJywgc2Fucy1zZXJpZjsNCg0KfQ0KDQoucGFuZGEgew0KICBwb3NpdGlvbjogcmVsYXRpdmU7DQogIHdpZHRoOiAyMDBweDsNCiAgbWFyZ2luOiA1MHB4IGF1dG87DQp9DQoNCi5mYWNlIHsNCiAgd2lkdGg6IDIwMHB4Ow0KICBoZWlnaHQ6IDIwMHB4Ow0KICBiYWNrZ3JvdW5kOiAjZmZmOw0KICBib3JkZXItcmFkaXVzOiAxMDAlOw0KICBtYXJnaW46IDUwcHggYXV0bzsNCiAgYm94LXNoYWRvdzogMCAxMHB4IDE1cHggDQogIHJnYmEoMCwgMCwgMCwgMC4xNSk7DQogIHotaW5kZXg6IDUwOw0KICBwb3NpdGlvbjogcmVsYXRpdmU7DQp9DQoNCi5lYXIsIC5lYXI6YWZ0ZXIgew0KICBwb3NpdGlvbjogYWJzb2x1dGU7DQogIHdpZHRoOiA4MHB4Ow0KICBoZWlnaHQ6IDgwcHg7DQogIGJhY2tncm91bmQ6ICMwMDA7DQogIHotaW5kZXg6IDU7DQogIGJvcmRlcjogMTBweCBzb2xpZCAjZmZmOw0KICBsZWZ0OiAtMTVweDsNCiAgdG9wOiAtMTVweDsNCiAgYm9yZGVyLXJhZGl1czogMTAwJTsNCn0NCg0KLmVhcjphZnRlciB7DQogIGNvbnRlbnQ6ICcnOw0KICBsZWZ0OiAxMjVweDsNCn0NCg0KLmV5ZS1zaGFkZSB7DQogIGJhY2tncm91bmQ6ICMwMDA7DQogIHdpZHRoOiA1MHB4Ow0KICBoZWlnaHQ6IDgwcHg7DQogIG1hcmdpbjogMTBweDsNCiAgcG9zaXRpb246IGFic29sdXRlOw0KICB0b3A6IDM1cHg7DQogIGxlZnQ6IDI1cHg7DQogIHRyYW5zZm9ybTogcm90YXRlKDIyMGRlZyk7DQogIGJvcmRlci1yYWRpdXM6IDI1cHgvMjBweCANCiAgMzBweCAzNXB4IDQwcHg7DQp9DQouZXllLXNoYWRlLnJndCB7DQogIHRyYW5zZm9ybTogcm90YXRlKDE0MGRlZyk7DQogIGxlZnQ6IDEwNXB4Ow0KfQ0KDQouZXllLXdoaXRlIHsNCiAgcG9zaXRpb246IGFic29sdXRlOw0KICB3aWR0aDogMzBweDsNCiAgaGVpZ2h0OiAzMHB4Ow0KICBib3JkZXItcmFkaXVzOiAxMDAlOw0KICBiYWNrZ3JvdW5kOiAjZmZmOw0KICB6LWluZGV4OiA1MDA7DQogIGxlZnQ6IDQwcHg7dG9wOiA4MHB4Ow0KICBvdmVyZmxvdzogaGlkZGVuOw0KfQ0KDQouZXllLXdoaXRlLnJndCB7DQogIHJpZ2h0OiA0MHB4Ow0KICBsZWZ0OiBhdXRvOw0KfQ0KDQouZXllLWJhbGwgew0KICBwb3NpdGlvbjogYWJzb2x1dGU7DQogIHdpZHRoOiAwcHg7DQogIGhlaWdodDogMHB4Ow0KICBsZWZ0OiAyMHB4O3RvcDogMjBweDsNCiAgbWF4LXdpZHRoOiAxMHB4Ow0KICBtYXgtaGVpZ2h0OiAxMHB4Ow0KICB0cmFuc2l0aW9uOiAwLjFzOw0KfQ0KDQouZXllLWJhbGw6YWZ0ZXIgew0KICBjb250ZW50OiAnJzsNCiAgYmFja2dyb3VuZDogIzAwMDsNCiAgcG9zaXRpb246IGFic29sdXRlOw0KICBib3JkZXItcmFkaXVzOiAxMDAlOw0KICByaWdodDogMDsNCiAgYm90dG9tOiAwcHg7DQogIHdpZHRoOiAyMHB4Ow0KICBoZWlnaHQ6IDIwcHg7DQp9DQoNCi5ub3NlIHsNCiAgcG9zaXRpb246IGFic29sdXRlOw0KICBoZWlnaHQ6IDIwcHg7DQogIHdpZHRoOiAzNXB4Ow0KICBib3R0b206IDQwcHg7DQogIGxlZnQ6IDA7DQogIHJpZ2h0OiAwOw0KICBtYXJnaW46IGF1dG87DQogIGJvcmRlci1yYWRpdXM6IDUwcHggMjBweC8zMHB4IDE1cHg7DQogIHRyYW5zZm9ybTogcm90YXRlKDE1ZGVnKTsNCiAgYmFja2dyb3VuZDogIzAwMDsNCn0NCg0KLmJvZHkgew0KICBiYWNrZ3JvdW5kOiAjZmZmOw0KICBwb3NpdGlvbjogYWJzb2x1dGU7DQogIHRvcDogMjAwcHg7DQogIGxlZnQ6IC0yMHB4Ow0KICBib3JkZXItcmFkaXVzOiAxMDBweCAxMDBweCAxMDBweCAxMDBweC8xMjZweCAxMjZweCA5NnB4IDk2cHg7DQogIHdpZHRoOiAyNTBweDsNCiAgaGVpZ2h0OiAyODJweDsNCiAgYm94LXNoYWRvdzogMCA1cHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMyk7DQp9DQoNCi5oYW5kLCAuaGFuZDphZnRlciwgLmhhbmQ6YmVmb3JlIHsNCiAgd2lkdGg6IDQwcHg7DQogIGhlaWdodDogMzBweDsNCiAgYm9yZGVyLXJhZGl1czogNTBweDsNCiAgYm94LXNoYWRvdzogMCAycHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNSk7DQogIGJhY2tncm91bmQ6ICMwMDA7DQogIG1hcmdpbjogNXB4Ow0KICBwb3NpdGlvbjogYWJzb2x1dGU7DQogIHRvcDogNzBweDsNCiAgbGVmdDogLTI1cHg7DQp9DQouaGFuZDphZnRlciwgLmhhbmQ6YmVmb3JlIHsNCiAgY29udGVudDogJyc7DQogIGxlZnQ6IC01cHg7DQogIHRvcDogMTFweDsNCn0NCi5oYW5kOmJlZm9yZSB7DQogIHRvcDogMjZweDsNCn0NCi5oYW5kLnJndCwgLnJndC5oYW5kOmFmdGVyLCAucmd0LmhhbmQ6YmVmb3JlIHsNCiAgbGVmdDogYXV0bzsNCiAgcmlnaHQ6IC0yNXB4Ow0KfQ0KLmhhbmQucmd0OmFmdGVyLCAuaGFuZC5yZ3Q6YmVmb3JlIHsNCiAgbGVmdDogYXV0bzsNCiAgcmlnaHQ6IC01cHg7DQp9DQoNCi5mb290IHsNCiAgdG9wOiAzNjBweDsNCiAgbGVmdDogLTgwcHg7DQogIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgYmFja2dyb3VuZDogIzAwMDsNCiAgei1pbmRleDogMTQwMDsNCiAgYm94LXNoYWRvdzogMCA1cHggNXB4IHJnYmEoMCwgMCwgMCwgMC4yKTsNCiAgYm9yZGVyLXJhZGl1czogNDBweCA0MHB4IDM5cHggNDBweC8yNnB4IDI2cHggNjNweCA2M3B4Ow0KICB3aWR0aDogODJweDsNCiAgaGVpZ2h0OiAxMjBweDsNCn0NCi5mb290OmFmdGVyIHsNCiAgY29udGVudDogJyc7DQogIHdpZHRoOiA1NXB4Ow0KICBoZWlnaHQ6IDY1cHg7DQogIGJhY2tncm91bmQ6ICMyMjI7DQogIGJvcmRlci1yYWRpdXM6IDEwMCU7DQogIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgYm90dG9tOiAxMHB4Ow0KICBsZWZ0OiAwOw0KICByaWdodDogMDsNCiAgbWFyZ2luOiBhdXRvOw0KfQ0KLmZvb3QgLmZpbmdlciwgLmZvb3QgLmZpbmdlcjphZnRlciwgLmZvb3QgLmZpbmdlcjpiZWZvcmUgew0KICBwb3NpdGlvbjogYWJzb2x1dGU7DQogIHdpZHRoOiAyNXB4Ow0KICBoZWlnaHQ6IDM1cHg7DQogIGJhY2tncm91bmQ6ICMyMjI7DQogIGJvcmRlci1yYWRpdXM6IDEwMCU7DQogIHRvcDogMTBweDsNCiAgcmlnaHQ6IDVweDsNCn0NCi5mb290IC5maW5nZXI6YWZ0ZXIsIC5mb290IC5maW5nZXI6YmVmb3JlIHsNCiAgY29udGVudDogJyc7DQogIHJpZ2h0OiAzMHB4Ow0KICB3aWR0aDogMjBweDsNCiAgdG9wOiAwOw0KfQ0KLmZvb3QgLmZpbmdlcjpiZWZvcmUgew0KICByaWdodDogNTVweDsNCiAgdG9wOiA1cHg7DQp9DQouZm9vdC5yZ3Qgew0KICBsZWZ0OiBhdXRvOw0KICByaWdodDogLTgwcHg7DQp9DQouZm9vdC5yZ3QgLmZpbmdlciwgLmZvb3Qucmd0IC5maW5nZXI6YWZ0ZXIsIC5mb290LnJndCAuZmluZ2VyOmJlZm9yZSB7DQogIGxlZnQ6IDVweDsNCiAgcmlnaHQ6IGF1dG87DQp9DQouZm9vdC5yZ3QgLmZpbmdlcjphZnRlciB7DQogIGxlZnQ6IDMwcHg7DQogIHJpZ2h0OiBhdXRvOw0KfQ0KLmZvb3Qucmd0IC5maW5nZXI6YmVmb3JlIHsNCiAgbGVmdDogNTVweDsNCiAgcmlnaHQ6IGF1dG87DQp9DQoNCi5mb3JtIHsNCiAgZGlzcGxheTogbm9uZTsNCiAgbWF4LXdpZHRoOiA0MDBweDsNCiAgcGFkZGluZzogMjBweCA0MHB4Ow0KICBiYWNrZ3JvdW5kOiAjZmZmOw0KICBoZWlnaHQ6IDMwMHB4Ow0KICBtYXJnaW46IGF1dG87DQogIGRpc3BsYXk6IGJsb2NrOw0KICBib3gtc2hhZG93OiAwIDEwcHggMTVweCByZ2JhKDAsIDAsIDAsIDAuMTUpOw0KICB0cmFuc2l0aW9uOiAwLjNzOw0KICBwb3NpdGlvbjogcmVsYXRpdmU7DQogIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwcHgpOw0KICB6LWluZGV4OiA1MDA7DQogIGJvcmRlcjogMXB4IHNvbGlkICNlZWU7DQp9DQouZm9ybS51cCB7DQogIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTgwcHgpOw0KfQ0KDQpoMSB7DQogIGNvbG9yOiAjMDAwOw0KICBmb250LWZhbWlseTogJ0RhbmNpbmcgU2NyaXB0JywgY3Vyc2l2ZTsNCn0NCg0KLmJ0biB7DQogIGJhY2tncm91bmQ6ICNmZmY7DQogIHBhZGRpbmc6IDVweDsNCiAgd2lkdGg6IDE1MHB4Ow0KICBoZWlnaHQ6IDM1cHg7DQogIGJvcmRlcjogMXB4IHNvbGlkICMwMGZmZmM7DQogIG1hcmdpbi10b3A6IDI1cHg7DQogIGN1cnNvcjogcG9pbnRlcjsNCiAgdHJhbnNpdGlvbjogMC4zczsNCiAgYm94LXNoYWRvdzogMCA1MHB4ICMwMGZmZmMgaW5zZXQ7DQogIGNvbG9yOiAjMDAwOw0KICBmb250LXdlaWdodDogNzAwOw0KfQ0KLmJ0bjpob3ZlciB7DQogIGJveC1zaGFkb3c6IDAgMCAjMDBmZmZjIGluc2V0Ow0KICBjb2xvcjogIzAwMDsNCn0NCi5idG46Zm9jdXMgew0KICBvdXRsaW5lOiBub25lOw0KfQ0KDQouZm9ybS1ncm91cCB7DQogIHBvc2l0aW9uOiByZWxhdGl2ZTsNCiAgZm9udC1zaXplOiAxNXB4Ow0KICBjb2xvcjogIzY2NjsNCn0NCi5mb3JtLWdyb3VwICsgLmZvcm0tZ3JvdXAgew0KICBtYXJnaW4tdG9wOiAzMHB4Ow0KfQ0KLmZvcm0tZ3JvdXAgLmZvcm0tbGFiZWwgew0KICBwb3NpdGlvbjogYWJzb2x1dGU7DQogIHotaW5kZXg6IDE7DQogIGxlZnQ6IDA7DQogIHRvcDogNXB4Ow0KICB0cmFuc2l0aW9uOiAwLjNzOw0KfQ0KLmZvcm0tZ3JvdXAgLmZvcm0tY29udHJvbCB7DQogIHdpZHRoOiAxMDAlOw0KICBwb3NpdGlvbjogcmVsYXRpdmU7DQogIHotaW5kZXg6IDM7DQogIGhlaWdodDogMzVweDsNCiAgYmFja2dyb3VuZDogbm9uZTsNCiAgYm9yZGVyOiBub25lOw0KICBwYWRkaW5nOiA1cHggMDsNCiAgdHJhbnNpdGlvbjogMC4zczsNCiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM3Nzc7DQogIGNvbG9yOiAjNTU1Ow0KfQ0KLmZvcm0tZ3JvdXAgLmZvcm0tY29udHJvbDppbnZhbGlkIHsNCiAgb3V0bGluZTogbm9uZTsNCn0NCi5mb3JtLWdyb3VwIC5mb3JtLWNvbnRyb2w6Zm9jdXMsIC5mb3JtLWdyb3VwIC5mb3JtLWNvbnRyb2w6dmFsaWQgew0KICBvdXRsaW5lOiBub25lOw0KICBib3gtc2hhZG93OiAwIDFweCAjMDBmZmZjOw0KICBib3JkZXItY29sb3I6ICMwMGZmZmM7DQp9DQouZm9ybS1ncm91cCAuZm9ybS1jb250cm9sOmZvY3VzICsgLmZvcm0tbGFiZWwsIC5mb3JtLWdyb3VwIC5mb3JtLWNvbnRyb2w6dmFsaWQgKyAuZm9ybS1sYWJlbCB7DQogIGZvbnQtc2l6ZTogMTJweDsNCiAgY29sb3I6ICMwMDA7DQogIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTVweCk7DQp9DQoNCi5hbGVydCB7DQogIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgY29sb3I6ICNmMDA7DQogIGZvbnQtc2l6ZTogMTZweDsNCiAgcmlnaHQ6IC0xODBweDsNCiAgdG9wOiAtMzAwcHg7DQogIHotaW5kZXg6IDIwMDsNCiAgcGFkZGluZzogMzBweCAyNXB4Ow0KICBiYWNrZ3JvdW5kOiAjZmZmOw0KICBib3gtc2hhZG93OiAwIDNweCA1cHggcmdiYSgwLCAwLCAwLCAwLjIpOw0KICBib3JkZXItcmFkaXVzOiA1MCU7DQogIG9wYWNpdHk6IDA7DQogIHRyYW5zZm9ybTogc2NhbGUoMCwgMCk7DQogIC1tb3otdHJhbnNpdGlvbjogbGluZWFyIDAuNHMgMC42czsNCiAgLW8tdHJhbnNpdGlvbjogbGluZWFyIDAuNHMgMC42czsNCiAgLXdlYmtpdC10cmFuc2l0aW9uOiBsaW5lYXIgMC40czsNCiAgLXdlYmtpdC10cmFuc2l0aW9uLWRlbGF5OiAwLjZzOw0KICB0cmFuc2l0aW9uOiBsaW5lYXIgMC40cyAwLjZzOw0KfQ0KLmFsZXJ0OmFmdGVyLCAuYWxlcnQ6YmVmb3JlIHsNCiAgY29udGVudDogJyc7DQogIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgd2lkdGg6IDI1cHg7DQogIGhlaWdodDogMjVweDsNCiAgYmFja2dyb3VuZDogI2ZmZjsNCiAgbGVmdDogLTE5cHg7DQogIGJvdHRvbTogLThweDsNCiAgYm94LXNoYWRvdzogMCAycHggNXB4IHJnYmEoMCwgMCwgMCwgMC4yKTsNCiAgYm9yZGVyLXJhZGl1czogNTAlOw0KfQ0KLmFsZXJ0OmJlZm9yZSB7DQogIHdpZHRoOiAxNXB4Ow0KICBoZWlnaHQ6IDE1cHg7DQogIGxlZnQ6IC0zNXB4Ow0KICBib3R0b206IC0yNXB4Ow0KfQ0KDQoud3JvbmctZW50cnkgew0KICAtd2Via2l0LWFuaW1hdGlvbjogd3JvbmctbG9nIDAuM3M7DQogIGFuaW1hdGlvbjogd3JvbmctbG9nIDAuM3M7DQp9DQoud3JvbmctZW50cnkgLmFsZXJ0IHsNCiAgb3BhY2l0eTogMTsNCiAgdHJhbnNmb3JtOiBzY2FsZSgxLCAxKTsNCn0NCkAtd2Via2l0LWtleWZyYW1lcyBleWUtYmxpbmsgew0KICB0byB7DQogICAgaGVpZ2h0OiAzMHB4Ow0KICB9DQp9DQpAa2V5ZnJhbWVzIGV5ZS1ibGluayB7DQogIHRvIHsNCiAgICBoZWlnaHQ6IDMwcHg7DQogIH0NCn0NCkAtd2Via2l0LWtleWZyYW1lcyB3cm9uZy1sb2cgew0KICAwJSwgMTAwJSB7DQogICAgbGVmdDogMHB4Ow0KICB9DQogIDIwJSAsIDYwJSB7DQogICAgbGVmdDogMjBweDsNCiAgfQ0KICA0MCUgLCA4MCUgew0KICAgIGxlZnQ6IC0yMHB4Ow0KICB9DQp9DQpAa2V5ZnJhbWVzIHdyb25nLWxvZyB7DQogIDAlLCAxMDAlIHsNCiAgICBsZWZ0OiAwcHg7DQogIH0NCiAgMjAlICwgNjAlIHsNCiAgICBsZWZ0OiAyMHB4Ow0KICB9DQogIDQwJSAsIDgwJSB7DQogICAgbGVmdDogLTIwcHg7DQogIH0NCn0NCg0KDQoNCg0KICAgICAgICAvKiAtLSBFeHRlcm5hbCBTb2NpYWwgTGluayBDU1MgU3R5bGVzIC0tICovDQoNCiAgICAgICAgI3NvdXJjZS1saW5rIHsNCiAgICAgICAgICAgIHRvcDogMTIwcHg7DQogICAgICAgIH0NCg0KICAgICAgICAjc291cmNlLWxpbms+aSB7DQogICAgICAgICAgICBjb2xvcjogcmdiKDk0LCAxMDYsIDIxMCk7DQogICAgICAgIH0NCg0KICAgICAgICAjeXQtbGluayB7DQogICAgICAgICAgICB0b3A6IDY1cHg7DQogICAgICAgIH0NCg0KICAgICAgICAjeXQtbGluaz5pIHsNCiAgICAgICAgICAgIGNvbG9yOiByZ2IoMjE5LCAzMSwgMTA2KTsNCg0KICAgICAgICB9DQoNCiAgICAgICAgI0Z1bmQtbGluayB7DQogICAgICAgICAgICB0b3A6IDEwcHg7DQogICAgICAgIH0NCg0KICAgICAgICAjRnVuZC1saW5rPmkgew0KICAgICAgICAgICAgY29sb3I6IHJnYigyNTUsIDI1MSwgMCk7DQoNCiAgICAgICAgfQ0KDQogICAgICAgIC5tZXRhLWxpbmsgew0KICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsNCiAgICAgICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigzcHgpOw0KICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTsNCiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsNCiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsNCiAgICAgICAgICAgIGJveC1zaGFkb3c6IDJweCAycHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xKTsNCiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsNCiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4Ow0KICAgICAgICAgICAgZ2FwOiA1cHg7DQogICAgICAgICAgICBsZWZ0OiAxMHB4Ow0KICAgICAgICAgICAgcGFkZGluZzogMTBweCAyMHB4Ow0KICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkOw0KICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOw0KICAgICAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciA2MDBtcywgYm9yZGVyLWNvbG9yIDYwMG1zOw0KICAgICAgICAgICAgei1pbmRleDogMTAwMDA7DQogICAgICAgIH0NCg0KICAgICAgICAubWV0YS1saW5rOmhvdmVyIHsNCiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsNCiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC5tZXRhLWxpbms+aSwNCiAgICAgICAgLm1ldGEtbGluaz5zcGFuIHsNCiAgICAgICAgICAgIGhlaWdodDogMjBweDsNCiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4Ow0KICAgICAgICB9DQoNCiAgICAgICAgLm1ldGEtbGluaz5zcGFuIHsNCiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsNCiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAiUnViaWsiLCBzYW5zLXNlcmlmOw0KICAgICAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgNjAwbXM7DQogICAgICAgIH0NCjwvc3R5bGU+DQoNCjxkaXYgY2xhc3M9ImZvcm0iPg0KICAgICAgPGRpdiBjbGFzcz0iaGFuZCI+PC9kaXY+PD89ICR0aGlzLT5pbmNsdWRlKCdMYXlvdXQvbXNnU3RhdHVzJykgPz4NCiAgICAgIDxkaXYgY2xhc3M9ImhhbmQgcmd0Ij48L2Rpdj4NCiAgICAgIDxoMT7wnZCP8J2QkfCdkIjwnZCN8J2QgvCdkIQg8J2Qj/CdkIDwnZCN8J2QhPCdkIs8L2gxPg0KICAgICAgPD89IGZvcm1fb3BlbigpID8+DQogICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPg0KICAgICAgICAgIDxsYWJlbCBjbGFzcz0iZm9ybS1sYWJlbCIgZm9yPSJ1c2VybmFtZSI+PC9sYWJlbD4NCiAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImZvcm0tY29udHJvbCIgbmFtZT0idXNlcm5hbWUiIGlkPSJ1c2VybmFtZSIgYXJpYS1kZXNjcmliZWRieT0iaGVscC11c2VybmFtZSIgcGxhY2Vob2xkZXI9IllvdXIgdXNlcm5hbWUiIHJlcXVpcmVkIG1pbmxlbmd0aD0iNCI+DQogICAgICAgICAgPD9waHAgaWYgKCR2YWxpZGF0aW9uLT5oYXNFcnJvcigndXNlcm5hbWUnKSkgOiA/Pg0KICAgICAgICAgIDxzbWFsbCBpZD0iaGVscC11c2VybmFtZSIgY2xhc3M9ImZvcm0tdGV4dCB0ZXh0LWRhbmdlciI+PD89ICR2YWxpZGF0aW9uLT5nZXRFcnJvcigndXNlcm5hbWUnKSA/Pjwvc21hbGw+DQogICAgICAgICAgPD9waHAgZW5kaWY7ID8+DQogICAgICAgIDwvZGl2Pg0KICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4NCiAgICAgICAgICA8bGFiZWwgY2xhc3M9ImZvcm0tbGFiZWwiIGZvcj0icGFzc3dvcmQiPjwvbGFiZWw+DQogICAgICAgICAgPGlucHV0IHR5cGU9InBhc3N3b3JkIiBjbGFzcz0iZm9ybS1jb250cm9sIiBuYW1lPSJwYXNzd29yZCIgaWQ9InBhc3N3b3JkIiBhcmlhLWRlc2NyaWJlZGJ5PSJoZWxwLXBhc3N3b3JkIiBwbGFjZWhvbGRlcj0iWW91ciBwYXNzd29yZCIgcmVxdWlyZWQgbWlubGVuZ3RoPSI2Ij4NCiAgICAgICAgICA8P3BocCBpZiAoJHZhbGlkYXRpb24tPmhhc0Vycm9yKCdwYXNzd29yZCcpKSA6ID8+DQogICAgICAgICAgPHNtYWxsIGlkPSJoZWxwLXBhc3N3b3JkIiBjbGFzcz0iZm9ybS10ZXh0IHRleHQtZGFuZ2VyIj48Pz0gJHZhbGlkYXRpb24tPmdldEVycm9yKCdwYXNzd29yZCcpID8+PC9zbWFsbD4NCiAgICAgICAgICA8P3BocCBlbmRpZjsgPz4NCiAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImJ0biI+PjxpIGNsYXNzPSJiaSBiaS1ib3gtYXJyb3ctaW4tcmlnaHQiID48L2k+IExvZyBpbjwvYnV0dG9uPg0KICAgICAgICA8L2Rpdj4NCjwvZGl2Pg0KDQo8cCBjbGFzcz0idGV4dC1jZW50ZXIgdGV4dC1kYXJrIGFmdGVyLWNhcmQiPg0KICAgICAgICAgICAgPHNtYWxsIGNsYXNzPSJiZy1kYXJrIHRleHQtd2hpdGUgcHgtYXV0byBwLTIgcm91bmRlZCI+DQogICAgICAgICAgICAgICAg8J2Qt/CdkZwg8J2Rm/CdkZzwnZGhIOKEjvCdkY7wnZGj8J2RkiDwnZGO8J2RmyDwnZC08J2RkPCdkZDwnZGc8J2RovCdkZvwnZGhIPCdkYzwnZGS8J2RoT8NCiAgICAgICAgICAgICAgICA8YSBocmVmPSI8Pz0gc2l0ZV91cmwoJ3JlZ2lzdGVyJykgPz4iIGNsYXNzPSJ0ZXh0LXdoaXRlIj7wnZG58J2ShvCdkojwnZKK8J2SlPCdkpXwnZKG8J2SkyDwnZGv8J2ShvCdkpPwnZKGPC9hPg0KICAgICAgICA8L3NtYWxsPg0KICAgICAgPC9wPg0KICAgICAgICAgICAgIDxkaXY+DQoNCiAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC1jZW50ZXIiPg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJ3aWR0aDogMTk5cHg7IG1hcmdpbjogYXV0bzsiIGNsYXNzPSJidXR0b24tODUiIG9uY2xpY2s9ImJ1eSgpIiBzdHlsZT0ibWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tcmlnaHQ6YXV0bzsiPvCdkIHwnZCU8J2QmCDwnZCR8J2QhPCdkIXwnZCE8J2QkfCdkIDwnZCLPC9kaXY+PC9wPg0KICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgIDxkaXY+ICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgPHAgY2xhc3M9InRleHQtY2VudGVyIj4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0id2lkdGg6IDE5OXB4OyBtYXJnaW46IGF1dG87IiBjbGFzcz0iYnV0dG9uLTg1IiBvbmNsaWNrPSJqb2luKCkiIHN0eWxlPSJtYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvOyI+8J2QifCdkI7wnZCI8J2QjSDwnZCT8J2QhPCdkIvwnZCE8J2QhvCdkJHwnZCA8J2QjDwvZGl2PiAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgPC9wPg0KICAgICAgICA8L2Rpdj4NCg0KDQo8c2NyaXB0Pg0KICAkKCcjcGFzc3dvcmQnKS5mb2N1c2luKGZ1bmN0aW9uKCl7DQogICAgICAkKCdmb3JtJykuYWRkQ2xhc3MoJ3VwJykNCiAgICB9KTsNCiAgICAkKCcjcGFzc3dvcmQnKS5mb2N1c291dChmdW5jdGlvbigpew0KICAgICAgJCgnZm9ybScpLnJlbW92ZUNsYXNzKCd1cCcpDQogICAgfSk7DQogICAgDQogICAgLy8gUGFuZGEgRXllIG1vdmUNCiAgICAkKGRvY3VtZW50KS5vbiggIm1vdXNlbW92ZSIsIGZ1bmN0aW9uKCBldmVudCApIHsNCiAgICAgIHZhciBkdyA9ICQoZG9jdW1lbnQpLndpZHRoKCkgLyAxNTsNCiAgICAgIHZhciBkaCA9ICQoZG9jdW1lbnQpLmhlaWdodCgpIC8gMTU7DQogICAgICB2YXIgeCA9IGV2ZW50LnBhZ2VYLyBkdzsNCiAgICAgIHZhciB5ID0gZXZlbnQucGFnZVkvIGRoOw0KICAgICAgJCgnLmV5ZS1iYWxsJykuY3NzKHsNCiAgICAgICAgd2lkdGggOiB4LA0KICAgICAgICBoZWlnaHQgOiB5DQogICAgICB9KTsNCiAgICB9KTsNCiAgICANCiAgICAvLyB2YWxpZGF0aW9uDQogICAgDQogICAgDQogICAgJCgnLmJ0bicpLmNsaWNrKGZ1bmN0aW9uKCl7DQogICAgICAkKCdmb3JtJykuYWRkQ2xhc3MoJ3dyb25nLWVudHJ5Jyk7DQogICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsgDQogICAgICAgICAgICQoJ2Zvcm0nKS5yZW1vdmVDbGFzcygnd3JvbmctZW50cnknKTsNCiAgICAgICAgIH0sMzAwMCApOw0KICAgIH0pOw0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIDwvc2NyaXB0Pg0KDQoNCg0KPD89ICR0aGlzLT5lbmRTZWN0aW9uKCkgPz4=")); ?>

Function Calls

base64_decode 1

Variables

None

Stats

MD5 93038697ca46ec9f8b19fa4717c11f2c
Eval Count 1
Decode Time 129 ms