4 <meta charset=
"utf-8" />
5 <title>BIP39 - Mnemonic Code
</title>
6 <!--<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">-->
9 * Bootstrap v3.2
.0 (http://getbootstrap.com)
10 * Copyright
2011-
2014 Twitter, Inc.
11 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
12 *//*! normalize.css v3.0
.1 | MIT License | git.io/normalize */html{font-family:sans-serif;-webkit-text-size-adjust:
100%;-ms-text-size-adjust:
100%}body{margin:
0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:
0}[hidden],template{display:none}a{background:
0 0}a:active,a:hover{outline:
0}abbr[title]{border-bottom:
1px dotted}b,strong{font-weight:
700}dfn{font-style:italic}h1{margin:
.67em
0;font-size:
2em}mark{color:#
000;background:#ff0}small{font-size:
80%}sub,sup{position:relative;font-size:
75%;line-height:
0;vertical-align:baseline}sup{top:-
.5em}sub{bottom:-
.25em}img{border:
0}svg:not(:root){overflow:hidden}figure{margin:
1em
40px}hr{height:
0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:
1em}button,input,optgroup,select,textarea{margin:
0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:
0;border:
0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:
0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:
.35em
.625em
.75em;margin:
0 2px;border:
1px solid silver}legend{padding:
0;border:
0}textarea{overflow:auto}optgroup{font-weight:
700}table{border-spacing:
0;border-collapse:collapse}td,th{padding:
0}@media print{*{color:#
000!important;text-shadow:none!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:
1px solid #
999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:
100%!important}p,h2,h3{orphans:
3;widows:
3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn
>.caret,.dropup
>.btn
>.caret{border-top-color:#
000!important}.label{border:
1px solid #
000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:
1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:
1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:
400;line-height:
1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\
2a"}.glyphicon-plus:before{content:"\
2b"}.glyphicon-euro:before{content:"\
20ac"}.glyphicon-minus:before{content:"\
2212"}.glyphicon-cloud:before{content:"\
2601"}.glyphicon-envelope:before{content:"\
2709"}.glyphicon-pencil:before{content:"\
270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-
5-
1:before{content:"\e191"}.glyphicon-sound-
6-
1:before{content:"\e192"}.glyphicon-sound-
7-
1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:
10px;-webkit-tap-highlight-color:rgba(
0,
0,
0,
0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:
14px;line-height:
1.42857143;color:#
333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#
428bca;text-decoration:none}a:hover,a:focus{color:#
2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:
5px auto -webkit-focus-ring-color;outline-offset:-
2px}figure{margin:
0}img{vertical-align:middle}.img-responsive,.thumbnail
>img,.thumbnail a
>img,.carousel-inner
>.item
>img,.carousel-inner
>.item
>a
>img{display:block;width:
100% \
9;max-width:
100%;height:auto}.img-rounded{border-radius:
6px}.img-thumbnail{display:inline-block;width:
100% \
9;max-width:
100%;height:auto;padding:
4px;line-height:
1.42857143;background-color:#fff;border:
1px solid #ddd;border-radius:
4px;-webkit-transition:all
.2s ease-in-out;-o-transition:all
.2s ease-in-out;transition:all
.2s ease-in-out}.img-circle{border-radius:
50%}hr{margin-top:
20px;margin-bottom:
20px;border:
0;border-top:
1px solid #eee}.sr-only{position:absolute;width:
1px;height:
1px;padding:
0;margin:-
1px;overflow:hidden;clip:rect(
0,
0,
0,
0);border:
0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:
0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:
500;line-height:
1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:
400;line-height:
1;color:#
777}h1,.h1,h2,.h2,h3,.h3{margin-top:
20px;margin-bottom:
10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:
65%}h4,.h4,h5,.h5,h6,.h6{margin-top:
10px;margin-bottom:
10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:
75%}h1,.h1{font-size:
36px}h2,.h2{font-size:
30px}h3,.h3{font-size:
24px}h4,.h4{font-size:
18px}h5,.h5{font-size:
14px}h6,.h6{font-size:
12px}p{margin:
0 0 10px}.lead{margin-bottom:
20px;font-size:
16px;font-weight:
300;line-height:
1.4}@media (min-width:
768px){.lead{font-size:
21px}}small,.small{font-size:
85%}cite{font-style:normal}mark,.mark{padding:
.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#
777}.text-primary{color:#
428bca}a.text-primary:hover{color:#
3071a9}.text-success{color:#
3c763d}a.text-success:hover{color:#
2b542c}.text-info{color:#
31708f}a.text-info:hover{color:#
245269}.text-warning{color:#
8a6d3b}a.text-warning:hover{color:#
66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#
843534}.bg-primary{color:#fff;background-color:#
428bca}a.bg-primary:hover{background-color:#
3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:
9px;margin:
40px
0 20px;border-bottom:
1px solid #eee}ul,ol{margin-top:
0;margin-bottom:
10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:
0}.list-unstyled{padding-left:
0;list-style:none}.list-inline{padding-left:
0;margin-left:-
5px;list-style:none}.list-inline
>li{display:inline-block;padding-right:
5px;padding-left:
5px}dl{margin-top:
0;margin-bottom:
20px}dt,dd{line-height:
1.42857143}dt{font-weight:
700}dd{margin-left:
0}@media (min-width:
768px){.dl-horizontal dt{float:left;width:
160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:
180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:
1px dotted #
777}.initialism{font-size:
90%;text-transform:uppercase}blockquote{padding:
10px
20px;margin:
0 0 20px;font-size:
17.5px;border-left:
5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:
0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:
80%;line-height:
1.42857143;color:#
777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\
2014 \
00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:
15px;padding-left:
0;text-align:right;border-right:
5px solid #eee;border-left:
0}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\
00A0 \
2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:
20px;font-style:normal;line-height:
1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:
2px
4px;font-size:
90%;color:#c7254e;background-color:#f9f2f4;border-radius:
4px}kbd{padding:
2px
4px;font-size:
90%;color:#fff;background-color:#
333;border-radius:
3px;-webkit-box-shadow:inset
0 -
1px
0 rgba(
0,
0,
0,
.25);box-shadow:inset
0 -
1px
0 rgba(
0,
0,
0,
.25)}kbd kbd{padding:
0;font-size:
100%;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:
9.5px;margin:
0 0 10px;font-size:
13px;line-height:
1.42857143;color:#
333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:
1px solid #ccc;border-radius:
4px}pre code{padding:
0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:
0}.pre-scrollable{max-height:
340px;overflow-y:scroll}.container{padding-right:
15px;padding-left:
15px;margin-right:auto;margin-left:auto}@media (min-width:
768px){.container{width:
750px}}@media (min-width:
992px){.container{width:
970px}}@media (min-width:
1200px){.container{width:
1170px}}.container-fluid{padding-right:
15px;padding-left:
15px;margin-right:auto;margin-left:auto}.row{margin-right:-
15px;margin-left:-
15px}.col-xs-
1,.col-sm-
1,.col-md-
1,.col-lg-
1,.col-xs-
2,.col-sm-
2,.col-md-
2,.col-lg-
2,.col-xs-
3,.col-sm-
3,.col-md-
3,.col-lg-
3,.col-xs-
4,.col-sm-
4,.col-md-
4,.col-lg-
4,.col-xs-
5,.col-sm-
5,.col-md-
5,.col-lg-
5,.col-xs-
6,.col-sm-
6,.col-md-
6,.col-lg-
6,.col-xs-
7,.col-sm-
7,.col-md-
7,.col-lg-
7,.col-xs-
8,.col-sm-
8,.col-md-
8,.col-lg-
8,.col-xs-
9,.col-sm-
9,.col-md-
9,.col-lg-
9,.col-xs-
10,.col-sm-
10,.col-md-
10,.col-lg-
10,.col-xs-
11,.col-sm-
11,.col-md-
11,.col-lg-
11,.col-xs-
12,.col-sm-
12,.col-md-
12,.col-lg-
12{position:relative;min-height:
1px;padding-right:
15px;padding-left:
15px}.col-xs-
1,.col-xs-
2,.col-xs-
3,.col-xs-
4,.col-xs-
5,.col-xs-
6,.col-xs-
7,.col-xs-
8,.col-xs-
9,.col-xs-
10,.col-xs-
11,.col-xs-
12{float:left}.col-xs-
12{width:
100%}.col-xs-
11{width:
91.66666667%}.col-xs-
10{width:
83.33333333%}.col-xs-
9{width:
75%}.col-xs-
8{width:
66.66666667%}.col-xs-
7{width:
58.33333333%}.col-xs-
6{width:
50%}.col-xs-
5{width:
41.66666667%}.col-xs-
4{width:
33.33333333%}.col-xs-
3{width:
25%}.col-xs-
2{width:
16.66666667%}.col-xs-
1{width:
8.33333333%}.col-xs-pull-
12{right:
100%}.col-xs-pull-
11{right:
91.66666667%}.col-xs-pull-
10{right:
83.33333333%}.col-xs-pull-
9{right:
75%}.col-xs-pull-
8{right:
66.66666667%}.col-xs-pull-
7{right:
58.33333333%}.col-xs-pull-
6{right:
50%}.col-xs-pull-
5{right:
41.66666667%}.col-xs-pull-
4{right:
33.33333333%}.col-xs-pull-
3{right:
25%}.col-xs-pull-
2{right:
16.66666667%}.col-xs-pull-
1{right:
8.33333333%}.col-xs-pull-
0{right:auto}.col-xs-push-
12{left:
100%}.col-xs-push-
11{left:
91.66666667%}.col-xs-push-
10{left:
83.33333333%}.col-xs-push-
9{left:
75%}.col-xs-push-
8{left:
66.66666667%}.col-xs-push-
7{left:
58.33333333%}.col-xs-push-
6{left:
50%}.col-xs-push-
5{left:
41.66666667%}.col-xs-push-
4{left:
33.33333333%}.col-xs-push-
3{left:
25%}.col-xs-push-
2{left:
16.66666667%}.col-xs-push-
1{left:
8.33333333%}.col-xs-push-
0{left:auto}.col-xs-offset-
12{margin-left:
100%}.col-xs-offset-
11{margin-left:
91.66666667%}.col-xs-offset-
10{margin-left:
83.33333333%}.col-xs-offset-
9{margin-left:
75%}.col-xs-offset-
8{margin-left:
66.66666667%}.col-xs-offset-
7{margin-left:
58.33333333%}.col-xs-offset-
6{margin-left:
50%}.col-xs-offset-
5{margin-left:
41.66666667%}.col-xs-offset-
4{margin-left:
33.33333333%}.col-xs-offset-
3{margin-left:
25%}.col-xs-offset-
2{margin-left:
16.66666667%}.col-xs-offset-
1{margin-left:
8.33333333%}.col-xs-offset-
0{margin-left:
0}@media (min-width:
768px){.col-sm-
1,.col-sm-
2,.col-sm-
3,.col-sm-
4,.col-sm-
5,.col-sm-
6,.col-sm-
7,.col-sm-
8,.col-sm-
9,.col-sm-
10,.col-sm-
11,.col-sm-
12{float:left}.col-sm-
12{width:
100%}.col-sm-
11{width:
91.66666667%}.col-sm-
10{width:
83.33333333%}.col-sm-
9{width:
75%}.col-sm-
8{width:
66.66666667%}.col-sm-
7{width:
58.33333333%}.col-sm-
6{width:
50%}.col-sm-
5{width:
41.66666667%}.col-sm-
4{width:
33.33333333%}.col-sm-
3{width:
25%}.col-sm-
2{width:
16.66666667%}.col-sm-
1{width:
8.33333333%}.col-sm-pull-
12{right:
100%}.col-sm-pull-
11{right:
91.66666667%}.col-sm-pull-
10{right:
83.33333333%}.col-sm-pull-
9{right:
75%}.col-sm-pull-
8{right:
66.66666667%}.col-sm-pull-
7{right:
58.33333333%}.col-sm-pull-
6{right:
50%}.col-sm-pull-
5{right:
41.66666667%}.col-sm-pull-
4{right:
33.33333333%}.col-sm-pull-
3{right:
25%}.col-sm-pull-
2{right:
16.66666667%}.col-sm-pull-
1{right:
8.33333333%}.col-sm-pull-
0{right:auto}.col-sm-push-
12{left:
100%}.col-sm-push-
11{left:
91.66666667%}.col-sm-push-
10{left:
83.33333333%}.col-sm-push-
9{left:
75%}.col-sm-push-
8{left:
66.66666667%}.col-sm-push-
7{left:
58.33333333%}.col-sm-push-
6{left:
50%}.col-sm-push-
5{left:
41.66666667%}.col-sm-push-
4{left:
33.33333333%}.col-sm-push-
3{left:
25%}.col-sm-push-
2{left:
16.66666667%}.col-sm-push-
1{left:
8.33333333%}.col-sm-push-
0{left:auto}.col-sm-offset-
12{margin-left:
100%}.col-sm-offset-
11{margin-left:
91.66666667%}.col-sm-offset-
10{margin-left:
83.33333333%}.col-sm-offset-
9{margin-left:
75%}.col-sm-offset-
8{margin-left:
66.66666667%}.col-sm-offset-
7{margin-left:
58.33333333%}.col-sm-offset-
6{margin-left:
50%}.col-sm-offset-
5{margin-left:
41.66666667%}.col-sm-offset-
4{margin-left:
33.33333333%}.col-sm-offset-
3{margin-left:
25%}.col-sm-offset-
2{margin-left:
16.66666667%}.col-sm-offset-
1{margin-left:
8.33333333%}.col-sm-offset-
0{margin-left:
0}}@media (min-width:
992px){.col-md-
1,.col-md-
2,.col-md-
3,.col-md-
4,.col-md-
5,.col-md-
6,.col-md-
7,.col-md-
8,.col-md-
9,.col-md-
10,.col-md-
11,.col-md-
12{float:left}.col-md-
12{width:
100%}.col-md-
11{width:
91.66666667%}.col-md-
10{width:
83.33333333%}.col-md-
9{width:
75%}.col-md-
8{width:
66.66666667%}.col-md-
7{width:
58.33333333%}.col-md-
6{width:
50%}.col-md-
5{width:
41.66666667%}.col-md-
4{width:
33.33333333%}.col-md-
3{width:
25%}.col-md-
2{width:
16.66666667%}.col-md-
1{width:
8.33333333%}.col-md-pull-
12{right:
100%}.col-md-pull-
11{right:
91.66666667%}.col-md-pull-
10{right:
83.33333333%}.col-md-pull-
9{right:
75%}.col-md-pull-
8{right:
66.66666667%}.col-md-pull-
7{right:
58.33333333%}.col-md-pull-
6{right:
50%}.col-md-pull-
5{right:
41.66666667%}.col-md-pull-
4{right:
33.33333333%}.col-md-pull-
3{right:
25%}.col-md-pull-
2{right:
16.66666667%}.col-md-pull-
1{right:
8.33333333%}.col-md-pull-
0{right:auto}.col-md-push-
12{left:
100%}.col-md-push-
11{left:
91.66666667%}.col-md-push-
10{left:
83.33333333%}.col-md-push-
9{left:
75%}.col-md-push-
8{left:
66.66666667%}.col-md-push-
7{left:
58.33333333%}.col-md-push-
6{left:
50%}.col-md-push-
5{left:
41.66666667%}.col-md-push-
4{left:
33.33333333%}.col-md-push-
3{left:
25%}.col-md-push-
2{left:
16.66666667%}.col-md-push-
1{left:
8.33333333%}.col-md-push-
0{left:auto}.col-md-offset-
12{margin-left:
100%}.col-md-offset-
11{margin-left:
91.66666667%}.col-md-offset-
10{margin-left:
83.33333333%}.col-md-offset-
9{margin-left:
75%}.col-md-offset-
8{margin-left:
66.66666667%}.col-md-offset-
7{margin-left:
58.33333333%}.col-md-offset-
6{margin-left:
50%}.col-md-offset-
5{margin-left:
41.66666667%}.col-md-offset-
4{margin-left:
33.33333333%}.col-md-offset-
3{margin-left:
25%}.col-md-offset-
2{margin-left:
16.66666667%}.col-md-offset-
1{margin-left:
8.33333333%}.col-md-offset-
0{margin-left:
0}}@media (min-width:
1200px){.col-lg-
1,.col-lg-
2,.col-lg-
3,.col-lg-
4,.col-lg-
5,.col-lg-
6,.col-lg-
7,.col-lg-
8,.col-lg-
9,.col-lg-
10,.col-lg-
11,.col-lg-
12{float:left}.col-lg-
12{width:
100%}.col-lg-
11{width:
91.66666667%}.col-lg-
10{width:
83.33333333%}.col-lg-
9{width:
75%}.col-lg-
8{width:
66.66666667%}.col-lg-
7{width:
58.33333333%}.col-lg-
6{width:
50%}.col-lg-
5{width:
41.66666667%}.col-lg-
4{width:
33.33333333%}.col-lg-
3{width:
25%}.col-lg-
2{width:
16.66666667%}.col-lg-
1{width:
8.33333333%}.col-lg-pull-
12{right:
100%}.col-lg-pull-
11{right:
91.66666667%}.col-lg-pull-
10{right:
83.33333333%}.col-lg-pull-
9{right:
75%}.col-lg-pull-
8{right:
66.66666667%}.col-lg-pull-
7{right:
58.33333333%}.col-lg-pull-
6{right:
50%}.col-lg-pull-
5{right:
41.66666667%}.col-lg-pull-
4{right:
33.33333333%}.col-lg-pull-
3{right:
25%}.col-lg-pull-
2{right:
16.66666667%}.col-lg-pull-
1{right:
8.33333333%}.col-lg-pull-
0{right:auto}.col-lg-push-
12{left:
100%}.col-lg-push-
11{left:
91.66666667%}.col-lg-push-
10{left:
83.33333333%}.col-lg-push-
9{left:
75%}.col-lg-push-
8{left:
66.66666667%}.col-lg-push-
7{left:
58.33333333%}.col-lg-push-
6{left:
50%}.col-lg-push-
5{left:
41.66666667%}.col-lg-push-
4{left:
33.33333333%}.col-lg-push-
3{left:
25%}.col-lg-push-
2{left:
16.66666667%}.col-lg-push-
1{left:
8.33333333%}.col-lg-push-
0{left:auto}.col-lg-offset-
12{margin-left:
100%}.col-lg-offset-
11{margin-left:
91.66666667%}.col-lg-offset-
10{margin-left:
83.33333333%}.col-lg-offset-
9{margin-left:
75%}.col-lg-offset-
8{margin-left:
66.66666667%}.col-lg-offset-
7{margin-left:
58.33333333%}.col-lg-offset-
6{margin-left:
50%}.col-lg-offset-
5{margin-left:
41.66666667%}.col-lg-offset-
4{margin-left:
33.33333333%}.col-lg-offset-
3{margin-left:
25%}.col-lg-offset-
2{margin-left:
16.66666667%}.col-lg-offset-
1{margin-left:
8.33333333%}.col-lg-offset-
0{margin-left:
0}}table{background-color:transparent}th{text-align:left}.table{width:
100%;max-width:
100%;margin-bottom:
20px}.table
>thead
>tr
>th,.table
>tbody
>tr
>th,.table
>tfoot
>tr
>th,.table
>thead
>tr
>td,.table
>tbody
>tr
>td,.table
>tfoot
>tr
>td{padding:
8px;line-height:
1.42857143;vertical-align:top;border-top:
1px solid #ddd}.table
>thead
>tr
>th{vertical-align:bottom;border-bottom:
2px solid #ddd}.table
>caption+thead
>tr:first-child
>th,.table
>colgroup+thead
>tr:first-child
>th,.table
>thead:first-child
>tr:first-child
>th,.table
>caption+thead
>tr:first-child
>td,.table
>colgroup+thead
>tr:first-child
>td,.table
>thead:first-child
>tr:first-child
>td{border-top:
0}.table
>tbody+tbody{border-top:
2px solid #ddd}.table .table{background-color:#fff}.table-condensed
>thead
>tr
>th,.table-condensed
>tbody
>tr
>th,.table-condensed
>tfoot
>tr
>th,.table-condensed
>thead
>tr
>td,.table-condensed
>tbody
>tr
>td,.table-condensed
>tfoot
>tr
>td{padding:
5px}.table-bordered{border:
1px solid #ddd}.table-bordered
>thead
>tr
>th,.table-bordered
>tbody
>tr
>th,.table-bordered
>tfoot
>tr
>th,.table-bordered
>thead
>tr
>td,.table-bordered
>tbody
>tr
>td,.table-bordered
>tfoot
>tr
>td{border:
1px solid #ddd}.table-bordered
>thead
>tr
>th,.table-bordered
>thead
>tr
>td{border-bottom-width:
2px}.table-striped
>tbody
>tr:nth-child(odd)
>td,.table-striped
>tbody
>tr:nth-child(odd)
>th{background-color:#f9f9f9}.table-hover
>tbody
>tr:hover
>td,.table-hover
>tbody
>tr:hover
>th{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table
>thead
>tr
>td.active,.table
>tbody
>tr
>td.active,.table
>tfoot
>tr
>td.active,.table
>thead
>tr
>th.active,.table
>tbody
>tr
>th.active,.table
>tfoot
>tr
>th.active,.table
>thead
>tr.active
>td,.table
>tbody
>tr.active
>td,.table
>tfoot
>tr.active
>td,.table
>thead
>tr.active
>th,.table
>tbody
>tr.active
>th,.table
>tfoot
>tr.active
>th{background-color:#f5f5f5}.table-hover
>tbody
>tr
>td.active:hover,.table-hover
>tbody
>tr
>th.active:hover,.table-hover
>tbody
>tr.active:hover
>td,.table-hover
>tbody
>tr:hover
>.active,.table-hover
>tbody
>tr.active:hover
>th{background-color:#e8e8e8}.table
>thead
>tr
>td.success,.table
>tbody
>tr
>td.success,.table
>tfoot
>tr
>td.success,.table
>thead
>tr
>th.success,.table
>tbody
>tr
>th.success,.table
>tfoot
>tr
>th.success,.table
>thead
>tr.success
>td,.table
>tbody
>tr.success
>td,.table
>tfoot
>tr.success
>td,.table
>thead
>tr.success
>th,.table
>tbody
>tr.success
>th,.table
>tfoot
>tr.success
>th{background-color:#dff0d8}.table-hover
>tbody
>tr
>td.success:hover,.table-hover
>tbody
>tr
>th.success:hover,.table-hover
>tbody
>tr.success:hover
>td,.table-hover
>tbody
>tr:hover
>.success,.table-hover
>tbody
>tr.success:hover
>th{background-color:#d0e9c6}.table
>thead
>tr
>td.info,.table
>tbody
>tr
>td.info,.table
>tfoot
>tr
>td.info,.table
>thead
>tr
>th.info,.table
>tbody
>tr
>th.info,.table
>tfoot
>tr
>th.info,.table
>thead
>tr.info
>td,.table
>tbody
>tr.info
>td,.table
>tfoot
>tr.info
>td,.table
>thead
>tr.info
>th,.table
>tbody
>tr.info
>th,.table
>tfoot
>tr.info
>th{background-color:#d9edf7}.table-hover
>tbody
>tr
>td.info:hover,.table-hover
>tbody
>tr
>th.info:hover,.table-hover
>tbody
>tr.info:hover
>td,.table-hover
>tbody
>tr:hover
>.info,.table-hover
>tbody
>tr.info:hover
>th{background-color:#c4e3f3}.table
>thead
>tr
>td.warning,.table
>tbody
>tr
>td.warning,.table
>tfoot
>tr
>td.warning,.table
>thead
>tr
>th.warning,.table
>tbody
>tr
>th.warning,.table
>tfoot
>tr
>th.warning,.table
>thead
>tr.warning
>td,.table
>tbody
>tr.warning
>td,.table
>tfoot
>tr.warning
>td,.table
>thead
>tr.warning
>th,.table
>tbody
>tr.warning
>th,.table
>tfoot
>tr.warning
>th{background-color:#fcf8e3}.table-hover
>tbody
>tr
>td.warning:hover,.table-hover
>tbody
>tr
>th.warning:hover,.table-hover
>tbody
>tr.warning:hover
>td,.table-hover
>tbody
>tr:hover
>.warning,.table-hover
>tbody
>tr.warning:hover
>th{background-color:#faf2cc}.table
>thead
>tr
>td.danger,.table
>tbody
>tr
>td.danger,.table
>tfoot
>tr
>td.danger,.table
>thead
>tr
>th.danger,.table
>tbody
>tr
>th.danger,.table
>tfoot
>tr
>th.danger,.table
>thead
>tr.danger
>td,.table
>tbody
>tr.danger
>td,.table
>tfoot
>tr.danger
>td,.table
>thead
>tr.danger
>th,.table
>tbody
>tr.danger
>th,.table
>tfoot
>tr.danger
>th{background-color:#f2dede}.table-hover
>tbody
>tr
>td.danger:hover,.table-hover
>tbody
>tr
>th.danger:hover,.table-hover
>tbody
>tr.danger:hover
>td,.table-hover
>tbody
>tr:hover
>.danger,.table-hover
>tbody
>tr.danger:hover
>th{background-color:#ebcccc}@media screen and (max-width:
767px){.table-responsive{width:
100%;margin-bottom:
15px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;border:
1px solid #ddd}.table-responsive
>.table{margin-bottom:
0}.table-responsive
>.table
>thead
>tr
>th,.table-responsive
>.table
>tbody
>tr
>th,.table-responsive
>.table
>tfoot
>tr
>th,.table-responsive
>.table
>thead
>tr
>td,.table-responsive
>.table
>tbody
>tr
>td,.table-responsive
>.table
>tfoot
>tr
>td{white-space:nowrap}.table-responsive
>.table-bordered{border:
0}.table-responsive
>.table-bordered
>thead
>tr
>th:first-child,.table-responsive
>.table-bordered
>tbody
>tr
>th:first-child,.table-responsive
>.table-bordered
>tfoot
>tr
>th:first-child,.table-responsive
>.table-bordered
>thead
>tr
>td:first-child,.table-responsive
>.table-bordered
>tbody
>tr
>td:first-child,.table-responsive
>.table-bordered
>tfoot
>tr
>td:first-child{border-left:
0}.table-responsive
>.table-bordered
>thead
>tr
>th:last-child,.table-responsive
>.table-bordered
>tbody
>tr
>th:last-child,.table-responsive
>.table-bordered
>tfoot
>tr
>th:last-child,.table-responsive
>.table-bordered
>thead
>tr
>td:last-child,.table-responsive
>.table-bordered
>tbody
>tr
>td:last-child,.table-responsive
>.table-bordered
>tfoot
>tr
>td:last-child{border-right:
0}.table-responsive
>.table-bordered
>tbody
>tr:last-child
>th,.table-responsive
>.table-bordered
>tfoot
>tr:last-child
>th,.table-responsive
>.table-bordered
>tbody
>tr:last-child
>td,.table-responsive
>.table-bordered
>tfoot
>tr:last-child
>td{border-bottom:
0}}fieldset{min-width:
0;padding:
0;margin:
0;border:
0}legend{display:block;width:
100%;padding:
0;margin-bottom:
20px;font-size:
21px;line-height:inherit;color:#
333;border:
0;border-bottom:
1px solid #e5e5e5}label{display:inline-block;max-width:
100%;margin-bottom:
5px;font-weight:
700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:
4px
0 0;margin-top:
1px \
9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:
100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:
5px auto -webkit-focus-ring-color;outline-offset:-
2px}output{display:block;padding-top:
7px;font-size:
14px;line-height:
1.42857143;color:#
555}.form-control{display:block;width:
100%;height:
34px;padding:
6px
12px;font-size:
14px;line-height:
1.42857143;color:#
555;background-color:#fff;background-image:none;border:
1px solid #ccc;border-radius:
4px;-webkit-box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075);box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075);-webkit-transition:border-color ease-in-out
.15s,-webkit-box-shadow ease-in-out
.15s;-o-transition:border-color ease-in-out
.15s,box-shadow ease-in-out
.15s;transition:border-color ease-in-out
.15s,box-shadow ease-in-out
.15s}.form-control:focus{border-color:#
66afe9;outline:
0;-webkit-box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075),
0 0 8px rgba(
102,
175,
233,
.6);box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075),
0 0 8px rgba(
102,
175,
233,
.6)}.form-control::-moz-placeholder{color:#
777;opacity:
1}.form-control:-ms-input-placeholder{color:#
777}.form-control::-webkit-input-placeholder{color:#
777}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:
1}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{line-height:
34px;line-height:
1.42857143 \
0}input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:
30px}input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:
46px}.form-group{margin-bottom:
15px}.radio,.checkbox{position:relative;display:block;min-height:
20px;margin-top:
10px;margin-bottom:
10px}.radio label,.checkbox label{padding-left:
20px;margin-bottom:
0;font-weight:
400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{position:absolute;margin-top:
4px \
9;margin-left:-
20px}.radio+.radio,.checkbox+.checkbox{margin-top:-
5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:
20px;margin-bottom:
0;font-weight:
400;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:
0;margin-left:
10px}input[type=radio][disabled],input[type=checkbox][disabled],input[type=radio].disabled,input[type=checkbox].disabled,fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:
7px;padding-bottom:
7px;margin-bottom:
0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:
0;padding-left:
0}.input-sm,.form-horizontal .form-group-sm .form-control{height:
30px;padding:
5px
10px;font-size:
12px;line-height:
1.5;border-radius:
3px}select.input-sm{height:
30px;line-height:
30px}textarea.input-sm,select[multiple].input-sm{height:auto}.input-lg,.form-horizontal .form-group-lg .form-control{height:
46px;padding:
10px
16px;font-size:
18px;line-height:
1.33;border-radius:
6px}select.input-lg{height:
46px;line-height:
46px}textarea.input-lg,select[multiple].input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:
42.5px}.form-control-feedback{position:absolute;top:
25px;right:
0;z-index:
2;display:block;width:
34px;height:
34px;line-height:
34px;text-align:center}.input-lg+.form-control-feedback{width:
46px;height:
46px;line-height:
46px}.input-sm+.form-control-feedback{width:
30px;height:
30px;line-height:
30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#
3c763d}.has-success .form-control{border-color:#
3c763d;-webkit-box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075);box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075)}.has-success .form-control:focus{border-color:#
2b542c;-webkit-box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075),
0 0 6px #
67b168;box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075),
0 0 6px #
67b168}.has-success .input-group-addon{color:#
3c763d;background-color:#dff0d8;border-color:#
3c763d}.has-success .form-control-feedback{color:#
3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#
8a6d3b}.has-warning .form-control{border-color:#
8a6d3b;-webkit-box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075);box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075)}.has-warning .form-control:focus{border-color:#
66512c;-webkit-box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075),
0 0 6px #c0a16b;box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075),
0 0 6px #c0a16b}.has-warning .input-group-addon{color:#
8a6d3b;background-color:#fcf8e3;border-color:#
8a6d3b}.has-warning .form-control-feedback{color:#
8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075);box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075)}.has-error .form-control:focus{border-color:#
843534;-webkit-box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075),
0 0 6px #ce8483;box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075),
0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label.sr-only~.form-control-feedback{top:
0}.help-block{display:block;margin-top:
5px;margin-bottom:
10px;color:#
737373}@media (min-width:
768px){.form-inline .form-group{display:inline-block;margin-bottom:
0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group
>.form-control{width:
100%}.form-inline .control-label{margin-bottom:
0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:
0;margin-bottom:
0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:
0}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{position:relative;margin-left:
0}.form-inline .has-feedback .form-control-feedback{top:
0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:
7px;margin-top:
0;margin-bottom:
0}.form-horizontal .radio,.form-horizontal .checkbox{min-height:
27px}.form-horizontal .form-group{margin-right:-
15px;margin-left:-
15px}@media (min-width:
768px){.form-horizontal .control-label{padding-top:
7px;margin-bottom:
0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:
0;right:
15px}@media (min-width:
768px){.form-horizontal .form-group-lg .control-label{padding-top:
14.3px}}@media (min-width:
768px){.form-horizontal .form-group-sm .control-label{padding-top:
6px}}.btn{display:inline-block;padding:
6px
12px;margin-bottom:
0;font-size:
14px;font-weight:
400;line-height:
1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:
1px solid transparent;border-radius:
4px}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:
5px auto -webkit-focus-ring-color;outline-offset:-
2px}.btn:hover,.btn:focus{color:#
333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:
0;-webkit-box-shadow:inset
0 3px
5px rgba(
0,
0,
0,
.125);box-shadow:inset
0 3px
5px rgba(
0,
0,
0,
.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=
65);-webkit-box-shadow:none;box-shadow:none;opacity:
.65}.btn-default{color:#
333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open
>.dropdown-toggle.btn-default{color:#
333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open
>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#
333}.btn-primary{color:#fff;background-color:#
428bca;border-color:#
357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open
>.dropdown-toggle.btn-primary{color:#fff;background-color:#
3071a9;border-color:#
285e8e}.btn-primary:active,.btn-primary.active,.open
>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#
428bca;border-color:#
357ebd}.btn-primary .badge{color:#
428bca;background-color:#fff}.btn-success{color:#fff;background-color:#
5cb85c;border-color:#
4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open
>.dropdown-toggle.btn-success{color:#fff;background-color:#
449d44;border-color:#
398439}.btn-success:active,.btn-success.active,.open
>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#
5cb85c;border-color:#
4cae4c}.btn-success .badge{color:#
5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#
5bc0de;border-color:#
46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open
>.dropdown-toggle.btn-info{color:#fff;background-color:#
31b0d5;border-color:#
269abc}.btn-info:active,.btn-info.active,.open
>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#
5bc0de;border-color:#
46b8da}.btn-info .badge{color:#
5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open
>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open
>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open
>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open
>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:
400;color:#
428bca;cursor:pointer;border-radius:
0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#
2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#
777;text-decoration:none}.btn-lg,.btn-group-lg
>.btn{padding:
10px
16px;font-size:
18px;line-height:
1.33;border-radius:
6px}.btn-sm,.btn-group-sm
>.btn{padding:
5px
10px;font-size:
12px;line-height:
1.5;border-radius:
3px}.btn-xs,.btn-group-xs
>.btn{padding:
1px
5px;font-size:
12px;line-height:
1.5;border-radius:
3px}.btn-block{display:block;width:
100%}.btn-block+.btn-block{margin-top:
5px}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:
100%}.fade{opacity:
0;-webkit-transition:opacity
.15s linear;-o-transition:opacity
.15s linear;transition:opacity
.15s linear}.fade.in{opacity:
1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:
0;overflow:hidden;-webkit-transition:height
.35s ease;-o-transition:height
.35s ease;transition:height
.35s ease}.caret{display:inline-block;width:
0;height:
0;margin-left:
2px;vertical-align:middle;border-top:
4px solid;border-right:
4px solid transparent;border-left:
4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:
0}.dropdown-menu{position:absolute;top:
100%;left:
0;z-index:
1000;display:none;float:left;min-width:
160px;padding:
5px
0;margin:
2px
0 0;font-size:
14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:
1px solid #ccc;border:
1px solid rgba(
0,
0,
0,
.15);border-radius:
4px;-webkit-box-shadow:
0 6px
12px rgba(
0,
0,
0,
.175);box-shadow:
0 6px
12px rgba(
0,
0,
0,
.175)}.dropdown-menu.pull-right{right:
0;left:auto}.dropdown-menu .divider{height:
1px;margin:
9px
0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu
>li
>a{display:block;padding:
3px
20px;clear:both;font-weight:
400;line-height:
1.42857143;color:#
333;white-space:nowrap}.dropdown-menu
>li
>a:hover,.dropdown-menu
>li
>a:focus{color:#
262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu
>.active
>a,.dropdown-menu
>.active
>a:hover,.dropdown-menu
>.active
>a:focus{color:#fff;text-decoration:none;background-color:#
428bca;outline:
0}.dropdown-menu
>.disabled
>a,.dropdown-menu
>.disabled
>a:hover,.dropdown-menu
>.disabled
>a:focus{color:#
777}.dropdown-menu
>.disabled
>a:hover,.dropdown-menu
>.disabled
>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open
>.dropdown-menu{display:block}.open
>a{outline:
0}.dropdown-menu-right{right:
0;left:auto}.dropdown-menu-left{right:auto;left:
0}.dropdown-header{display:block;padding:
3px
20px;font-size:
12px;line-height:
1.42857143;color:#
777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:
0;right:
0;bottom:
0;left:
0;z-index:
990}.pull-right
>.dropdown-menu{right:
0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:
0;border-bottom:
4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:
100%;margin-bottom:
1px}@media (min-width:
768px){.navbar-right .dropdown-menu{right:
0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:
0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group
>.btn,.btn-group-vertical
>.btn{position:relative;float:left}.btn-group
>.btn:hover,.btn-group-vertical
>.btn:hover,.btn-group
>.btn:focus,.btn-group-vertical
>.btn:focus,.btn-group
>.btn:active,.btn-group-vertical
>.btn:active,.btn-group
>.btn.active,.btn-group-vertical
>.btn.active{z-index:
2}.btn-group
>.btn:focus,.btn-group-vertical
>.btn:focus{outline:
0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-
1px}.btn-toolbar{margin-left:-
5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar
>.btn,.btn-toolbar
>.btn-group,.btn-toolbar
>.input-group{margin-left:
5px}.btn-group
>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:
0}.btn-group
>.btn:first-child{margin-left:
0}.btn-group
>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:
0;border-bottom-right-radius:
0}.btn-group
>.btn:last-child:not(:first-child),.btn-group
>.dropdown-toggle:not(:first-child){border-top-left-radius:
0;border-bottom-left-radius:
0}.btn-group
>.btn-group{float:left}.btn-group
>.btn-group:not(:first-child):not(:last-child)
>.btn{border-radius:
0}.btn-group
>.btn-group:first-child
>.btn:last-child,.btn-group
>.btn-group:first-child
>.dropdown-toggle{border-top-right-radius:
0;border-bottom-right-radius:
0}.btn-group
>.btn-group:last-child
>.btn:first-child{border-top-left-radius:
0;border-bottom-left-radius:
0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:
0}.btn-group
>.btn+.dropdown-toggle{padding-right:
8px;padding-left:
8px}.btn-group
>.btn-lg+.dropdown-toggle{padding-right:
12px;padding-left:
12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset
0 3px
5px rgba(
0,
0,
0,
.125);box-shadow:inset
0 3px
5px rgba(
0,
0,
0,
.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:
0}.btn-lg .caret{border-width:
5px
5px
0;border-bottom-width:
0}.dropup .btn-lg .caret{border-width:
0 5px
5px}.btn-group-vertical
>.btn,.btn-group-vertical
>.btn-group,.btn-group-vertical
>.btn-group
>.btn{display:block;float:none;width:
100%;max-width:
100%}.btn-group-vertical
>.btn-group
>.btn{float:none}.btn-group-vertical
>.btn+.btn,.btn-group-vertical
>.btn+.btn-group,.btn-group-vertical
>.btn-group+.btn,.btn-group-vertical
>.btn-group+.btn-group{margin-top:-
1px;margin-left:
0}.btn-group-vertical
>.btn:not(:first-child):not(:last-child){border-radius:
0}.btn-group-vertical
>.btn:first-child:not(:last-child){border-top-right-radius:
4px;border-bottom-right-radius:
0;border-bottom-left-radius:
0}.btn-group-vertical
>.btn:last-child:not(:first-child){border-top-left-radius:
0;border-top-right-radius:
0;border-bottom-left-radius:
4px}.btn-group-vertical
>.btn-group:not(:first-child):not(:last-child)
>.btn{border-radius:
0}.btn-group-vertical
>.btn-group:first-child:not(:last-child)
>.btn:last-child,.btn-group-vertical
>.btn-group:first-child:not(:last-child)
>.dropdown-toggle{border-bottom-right-radius:
0;border-bottom-left-radius:
0}.btn-group-vertical
>.btn-group:last-child:not(:first-child)
>.btn:first-child{border-top-left-radius:
0;border-top-right-radius:
0}.btn-group-justified{display:table;width:
100%;table-layout:fixed;border-collapse:separate}.btn-group-justified
>.btn,.btn-group-justified
>.btn-group{display:table-cell;float:none;width:
1%}.btn-group-justified
>.btn-group .btn{width:
100%}.btn-group-justified
>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]
>.btn
>input[type=radio],[data-toggle=buttons]
>.btn
>input[type=checkbox]{position:absolute;z-index:-
1;filter:alpha(opacity=
0);opacity:
0}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:
0;padding-left:
0}.input-group .form-control{position:relative;z-index:
2;float:left;width:
100%;margin-bottom:
0}.input-group-lg
>.form-control,.input-group-lg
>.input-group-addon,.input-group-lg
>.input-group-btn
>.btn{height:
46px;padding:
10px
16px;font-size:
18px;line-height:
1.33;border-radius:
6px}select.input-group-lg
>.form-control,select.input-group-lg
>.input-group-addon,select.input-group-lg
>.input-group-btn
>.btn{height:
46px;line-height:
46px}textarea.input-group-lg
>.form-control,textarea.input-group-lg
>.input-group-addon,textarea.input-group-lg
>.input-group-btn
>.btn,select[multiple].input-group-lg
>.form-control,select[multiple].input-group-lg
>.input-group-addon,select[multiple].input-group-lg
>.input-group-btn
>.btn{height:auto}.input-group-sm
>.form-control,.input-group-sm
>.input-group-addon,.input-group-sm
>.input-group-btn
>.btn{height:
30px;padding:
5px
10px;font-size:
12px;line-height:
1.5;border-radius:
3px}select.input-group-sm
>.form-control,select.input-group-sm
>.input-group-addon,select.input-group-sm
>.input-group-btn
>.btn{height:
30px;line-height:
30px}textarea.input-group-sm
>.form-control,textarea.input-group-sm
>.input-group-addon,textarea.input-group-sm
>.input-group-btn
>.btn,select[multiple].input-group-sm
>.form-control,select[multiple].input-group-sm
>.input-group-addon,select[multiple].input-group-sm
>.input-group-btn
>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:
0}.input-group-addon,.input-group-btn{width:
1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:
6px
12px;font-size:
14px;font-weight:
400;line-height:
1;color:#
555;text-align:center;background-color:#eee;border:
1px solid #ccc;border-radius:
4px}.input-group-addon.input-sm{padding:
5px
10px;font-size:
12px;border-radius:
3px}.input-group-addon.input-lg{padding:
10px
16px;font-size:
18px;border-radius:
6px}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:
0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child
>.btn,.input-group-btn:first-child
>.btn-group
>.btn,.input-group-btn:first-child
>.dropdown-toggle,.input-group-btn:last-child
>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child
>.btn-group:not(:last-child)
>.btn{border-top-right-radius:
0;border-bottom-right-radius:
0}.input-group-addon:first-child{border-right:
0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child
>.btn,.input-group-btn:last-child
>.btn-group
>.btn,.input-group-btn:last-child
>.dropdown-toggle,.input-group-btn:first-child
>.btn:not(:first-child),.input-group-btn:first-child
>.btn-group:not(:first-child)
>.btn{border-top-left-radius:
0;border-bottom-left-radius:
0}.input-group-addon:last-child{border-left:
0}.input-group-btn{position:relative;font-size:
0;white-space:nowrap}.input-group-btn
>.btn{position:relative}.input-group-btn
>.btn+.btn{margin-left:-
1px}.input-group-btn
>.btn:hover,.input-group-btn
>.btn:focus,.input-group-btn
>.btn:active{z-index:
2}.input-group-btn:first-child
>.btn,.input-group-btn:first-child
>.btn-group{margin-right:-
1px}.input-group-btn:last-child
>.btn,.input-group-btn:last-child
>.btn-group{margin-left:-
1px}.nav{padding-left:
0;margin-bottom:
0;list-style:none}.nav
>li{position:relative;display:block}.nav
>li
>a{position:relative;display:block;padding:
10px
15px}.nav
>li
>a:hover,.nav
>li
>a:focus{text-decoration:none;background-color:#eee}.nav
>li.disabled
>a{color:#
777}.nav
>li.disabled
>a:hover,.nav
>li.disabled
>a:focus{color:#
777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open
>a,.nav .open
>a:hover,.nav .open
>a:focus{background-color:#eee;border-color:#
428bca}.nav .nav-divider{height:
1px;margin:
9px
0;overflow:hidden;background-color:#e5e5e5}.nav
>li
>a
>img{max-width:none}.nav-tabs{border-bottom:
1px solid #ddd}.nav-tabs
>li{float:left;margin-bottom:-
1px}.nav-tabs
>li
>a{margin-right:
2px;line-height:
1.42857143;border:
1px solid transparent;border-radius:
4px
4px
0 0}.nav-tabs
>li
>a:hover{border-color:#eee #eee #ddd}.nav-tabs
>li.active
>a,.nav-tabs
>li.active
>a:hover,.nav-tabs
>li.active
>a:focus{color:#
555;cursor:default;background-color:#fff;border:
1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:
100%;border-bottom:
0}.nav-tabs.nav-justified
>li{float:none}.nav-tabs.nav-justified
>li
>a{margin-bottom:
5px;text-align:center}.nav-tabs.nav-justified
>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:
768px){.nav-tabs.nav-justified
>li{display:table-cell;width:
1%}.nav-tabs.nav-justified
>li
>a{margin-bottom:
0}}.nav-tabs.nav-justified
>li
>a{margin-right:
0;border-radius:
4px}.nav-tabs.nav-justified
>.active
>a,.nav-tabs.nav-justified
>.active
>a:hover,.nav-tabs.nav-justified
>.active
>a:focus{border:
1px solid #ddd}@media (min-width:
768px){.nav-tabs.nav-justified
>li
>a{border-bottom:
1px solid #ddd;border-radius:
4px
4px
0 0}.nav-tabs.nav-justified
>.active
>a,.nav-tabs.nav-justified
>.active
>a:hover,.nav-tabs.nav-justified
>.active
>a:focus{border-bottom-color:#fff}}.nav-pills
>li{float:left}.nav-pills
>li
>a{border-radius:
4px}.nav-pills
>li+li{margin-left:
2px}.nav-pills
>li.active
>a,.nav-pills
>li.active
>a:hover,.nav-pills
>li.active
>a:focus{color:#fff;background-color:#
428bca}.nav-stacked
>li{float:none}.nav-stacked
>li+li{margin-top:
2px;margin-left:
0}.nav-justified{width:
100%}.nav-justified
>li{float:none}.nav-justified
>li
>a{margin-bottom:
5px;text-align:center}.nav-justified
>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:
768px){.nav-justified
>li{display:table-cell;width:
1%}.nav-justified
>li
>a{margin-bottom:
0}}.nav-tabs-justified{border-bottom:
0}.nav-tabs-justified
>li
>a{margin-right:
0;border-radius:
4px}.nav-tabs-justified
>.active
>a,.nav-tabs-justified
>.active
>a:hover,.nav-tabs-justified
>.active
>a:focus{border:
1px solid #ddd}@media (min-width:
768px){.nav-tabs-justified
>li
>a{border-bottom:
1px solid #ddd;border-radius:
4px
4px
0 0}.nav-tabs-justified
>.active
>a,.nav-tabs-justified
>.active
>a:hover,.nav-tabs-justified
>.active
>a:focus{border-bottom-color:#fff}}.tab-content
>.tab-pane{display:none}.tab-content
>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-
1px;border-top-left-radius:
0;border-top-right-radius:
0}.navbar{position:relative;min-height:
50px;margin-bottom:
20px;border:
1px solid transparent}@media (min-width:
768px){.navbar{border-radius:
4px}}@media (min-width:
768px){.navbar-header{float:left}}.navbar-collapse{padding-right:
15px;padding-left:
15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:
1px solid transparent;-webkit-box-shadow:inset
0 1px
0 rgba(
255,
255,
255,
.1);box-shadow:inset
0 1px
0 rgba(
255,
255,
255,
.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:
768px){.navbar-collapse{width:auto;border-top:
0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:
0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-right:
0;padding-left:
0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:
340px}@media (max-width:
480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:
200px}}.container
>.navbar-header,.container-fluid
>.navbar-header,.container
>.navbar-collapse,.container-fluid
>.navbar-collapse{margin-right:-
15px;margin-left:-
15px}@media (min-width:
768px){.container
>.navbar-header,.container-fluid
>.navbar-header,.container
>.navbar-collapse,.container-fluid
>.navbar-collapse{margin-right:
0;margin-left:
0}}.navbar-static-top{z-index:
1000;border-width:
0 0 1px}@media (min-width:
768px){.navbar-static-top{border-radius:
0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:
0;left:
0;z-index:
1030;-webkit-transform:translate3d(
0,
0,
0);-o-transform:translate3d(
0,
0,
0);transform:translate3d(
0,
0,
0)}@media (min-width:
768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:
0}}.navbar-fixed-top{top:
0;border-width:
0 0 1px}.navbar-fixed-bottom{bottom:
0;margin-bottom:
0;border-width:
1px
0 0}.navbar-brand{float:left;height:
50px;padding:
15px
15px;font-size:
18px;line-height:
20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:
768px){.navbar
>.container .navbar-brand,.navbar
>.container-fluid .navbar-brand{margin-left:-
15px}}.navbar-toggle{position:relative;float:right;padding:
9px
10px;margin-top:
8px;margin-right:
15px;margin-bottom:
8px;background-color:transparent;background-image:none;border:
1px solid transparent;border-radius:
4px}.navbar-toggle:focus{outline:
0}.navbar-toggle .icon-bar{display:block;width:
22px;height:
2px;border-radius:
1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:
4px}@media (min-width:
768px){.navbar-toggle{display:none}}.navbar-nav{margin:
7.5px -
15px}.navbar-nav
>li
>a{padding-top:
10px;padding-bottom:
10px;line-height:
20px}@media (max-width:
767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:
0;background-color:transparent;border:
0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu
>li
>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:
5px
15px
5px
25px}.navbar-nav .open .dropdown-menu
>li
>a{line-height:
20px}.navbar-nav .open .dropdown-menu
>li
>a:hover,.navbar-nav .open .dropdown-menu
>li
>a:focus{background-image:none}}@media (min-width:
768px){.navbar-nav{float:left;margin:
0}.navbar-nav
>li{float:left}.navbar-nav
>li
>a{padding-top:
15px;padding-bottom:
15px}.navbar-nav.navbar-right:last-child{margin-right:-
15px}}@media (min-width:
768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{padding:
10px
15px;margin-top:
8px;margin-right:-
15px;margin-bottom:
8px;margin-left:-
15px;border-top:
1px solid transparent;border-bottom:
1px solid transparent;-webkit-box-shadow:inset
0 1px
0 rgba(
255,
255,
255,
.1),
0 1px
0 rgba(
255,
255,
255,
.1);box-shadow:inset
0 1px
0 rgba(
255,
255,
255,
.1),
0 1px
0 rgba(
255,
255,
255,
.1)}@media (min-width:
768px){.navbar-form .form-group{display:inline-block;margin-bottom:
0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group
>.form-control{width:
100%}.navbar-form .control-label{margin-bottom:
0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:
0;margin-bottom:
0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:
0}.navbar-form .radio input[type=radio],.navbar-form .checkbox input[type=checkbox]{position:relative;margin-left:
0}.navbar-form .has-feedback .form-control-feedback{top:
0}}@media (max-width:
767px){.navbar-form .form-group{margin-bottom:
5px}}@media (min-width:
768px){.navbar-form{width:auto;padding-top:
0;padding-bottom:
0;margin-right:
0;margin-left:
0;border:
0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-
15px}}.navbar-nav
>li
>.dropdown-menu{margin-top:
0;border-top-left-radius:
0;border-top-right-radius:
0}.navbar-fixed-bottom .navbar-nav
>li
>.dropdown-menu{border-bottom-right-radius:
0;border-bottom-left-radius:
0}.navbar-btn{margin-top:
8px;margin-bottom:
8px}.navbar-btn.btn-sm{margin-top:
10px;margin-bottom:
10px}.navbar-btn.btn-xs{margin-top:
14px;margin-bottom:
14px}.navbar-text{margin-top:
15px;margin-bottom:
15px}@media (min-width:
768px){.navbar-text{float:left;margin-right:
15px;margin-left:
15px}.navbar-text.navbar-right:last-child{margin-right:
0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#
777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#
5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#
777}.navbar-default .navbar-nav
>li
>a{color:#
777}.navbar-default .navbar-nav
>li
>a:hover,.navbar-default .navbar-nav
>li
>a:focus{color:#
333;background-color:transparent}.navbar-default .navbar-nav
>.active
>a,.navbar-default .navbar-nav
>.active
>a:hover,.navbar-default .navbar-nav
>.active
>a:focus{color:#
555;background-color:#e7e7e7}.navbar-default .navbar-nav
>.disabled
>a,.navbar-default .navbar-nav
>.disabled
>a:hover,.navbar-default .navbar-nav
>.disabled
>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#
888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav
>.open
>a,.navbar-default .navbar-nav
>.open
>a:hover,.navbar-default .navbar-nav
>.open
>a:focus{color:#
555;background-color:#e7e7e7}@media (max-width:
767px){.navbar-default .navbar-nav .open .dropdown-menu
>li
>a{color:#
777}.navbar-default .navbar-nav .open .dropdown-menu
>li
>a:hover,.navbar-default .navbar-nav .open .dropdown-menu
>li
>a:focus{color:#
333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu
>.active
>a,.navbar-default .navbar-nav .open .dropdown-menu
>.active
>a:hover,.navbar-default .navbar-nav .open .dropdown-menu
>.active
>a:focus{color:#
555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu
>.disabled
>a,.navbar-default .navbar-nav .open .dropdown-menu
>.disabled
>a:hover,.navbar-default .navbar-nav .open .dropdown-menu
>.disabled
>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#
777}.navbar-default .navbar-link:hover{color:#
333}.navbar-default .btn-link{color:#
777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#
333}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#
222;border-color:#
080808}.navbar-inverse .navbar-brand{color:#
777}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#
777}.navbar-inverse .navbar-nav
>li
>a{color:#
777}.navbar-inverse .navbar-nav
>li
>a:hover,.navbar-inverse .navbar-nav
>li
>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav
>.active
>a,.navbar-inverse .navbar-nav
>.active
>a:hover,.navbar-inverse .navbar-nav
>.active
>a:focus{color:#fff;background-color:#
080808}.navbar-inverse .navbar-nav
>.disabled
>a,.navbar-inverse .navbar-nav
>.disabled
>a:hover,.navbar-inverse .navbar-nav
>.disabled
>a:focus{color:#
444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#
333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#
333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#
101010}.navbar-inverse .navbar-nav
>.open
>a,.navbar-inverse .navbar-nav
>.open
>a:hover,.navbar-inverse .navbar-nav
>.open
>a:focus{color:#fff;background-color:#
080808}@media (max-width:
767px){.navbar-inverse .navbar-nav .open .dropdown-menu
>.dropdown-header{border-color:#
080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#
080808}.navbar-inverse .navbar-nav .open .dropdown-menu
>li
>a{color:#
777}.navbar-inverse .navbar-nav .open .dropdown-menu
>li
>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu
>li
>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu
>.active
>a,.navbar-inverse .navbar-nav .open .dropdown-menu
>.active
>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu
>.active
>a:focus{color:#fff;background-color:#
080808}.navbar-inverse .navbar-nav .open .dropdown-menu
>.disabled
>a,.navbar-inverse .navbar-nav .open .dropdown-menu
>.disabled
>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu
>.disabled
>a:focus{color:#
444;background-color:transparent}}.navbar-inverse .navbar-link{color:#
777}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#
777}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#
444}.breadcrumb{padding:
8px
15px;margin-bottom:
20px;list-style:none;background-color:#f5f5f5;border-radius:
4px}.breadcrumb
>li{display:inline-block}.breadcrumb
>li+li:before{padding:
0 5px;color:#ccc;content:"/\
00a0"}.breadcrumb
>.active{color:#
777}.pagination{display:inline-block;padding-left:
0;margin:
20px
0;border-radius:
4px}.pagination
>li{display:inline}.pagination
>li
>a,.pagination
>li
>span{position:relative;float:left;padding:
6px
12px;margin-left:-
1px;line-height:
1.42857143;color:#
428bca;text-decoration:none;background-color:#fff;border:
1px solid #ddd}.pagination
>li:first-child
>a,.pagination
>li:first-child
>span{margin-left:
0;border-top-left-radius:
4px;border-bottom-left-radius:
4px}.pagination
>li:last-child
>a,.pagination
>li:last-child
>span{border-top-right-radius:
4px;border-bottom-right-radius:
4px}.pagination
>li
>a:hover,.pagination
>li
>span:hover,.pagination
>li
>a:focus,.pagination
>li
>span:focus{color:#
2a6496;background-color:#eee;border-color:#ddd}.pagination
>.active
>a,.pagination
>.active
>span,.pagination
>.active
>a:hover,.pagination
>.active
>span:hover,.pagination
>.active
>a:focus,.pagination
>.active
>span:focus{z-index:
2;color:#fff;cursor:default;background-color:#
428bca;border-color:#
428bca}.pagination
>.disabled
>span,.pagination
>.disabled
>span:hover,.pagination
>.disabled
>span:focus,.pagination
>.disabled
>a,.pagination
>.disabled
>a:hover,.pagination
>.disabled
>a:focus{color:#
777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg
>li
>a,.pagination-lg
>li
>span{padding:
10px
16px;font-size:
18px}.pagination-lg
>li:first-child
>a,.pagination-lg
>li:first-child
>span{border-top-left-radius:
6px;border-bottom-left-radius:
6px}.pagination-lg
>li:last-child
>a,.pagination-lg
>li:last-child
>span{border-top-right-radius:
6px;border-bottom-right-radius:
6px}.pagination-sm
>li
>a,.pagination-sm
>li
>span{padding:
5px
10px;font-size:
12px}.pagination-sm
>li:first-child
>a,.pagination-sm
>li:first-child
>span{border-top-left-radius:
3px;border-bottom-left-radius:
3px}.pagination-sm
>li:last-child
>a,.pagination-sm
>li:last-child
>span{border-top-right-radius:
3px;border-bottom-right-radius:
3px}.pager{padding-left:
0;margin:
20px
0;text-align:center;list-style:none}.pager li{display:inline}.pager li
>a,.pager li
>span{display:inline-block;padding:
5px
14px;background-color:#fff;border:
1px solid #ddd;border-radius:
15px}.pager li
>a:hover,.pager li
>a:focus{text-decoration:none;background-color:#eee}.pager .next
>a,.pager .next
>span{float:right}.pager .previous
>a,.pager .previous
>span{float:left}.pager .disabled
>a,.pager .disabled
>a:hover,.pager .disabled
>a:focus,.pager .disabled
>span{color:#
777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:
.2em
.6em
.3em;font-size:
75%;font-weight:
700;line-height:
1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:
.25em}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-
1px}.label-default{background-color:#
777}.label-default[href]:hover,.label-default[href]:focus{background-color:#
5e5e5e}.label-primary{background-color:#
428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#
3071a9}.label-success{background-color:#
5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#
449d44}.label-info{background-color:#
5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#
31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:
10px;padding:
3px
7px;font-size:
12px;font-weight:
700;line-height:
1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#
777;border-radius:
10px}.badge:empty{display:none}.btn .badge{position:relative;top:-
1px}.btn-xs .badge{top:
0;padding:
1px
5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active
>.badge,.nav-pills
>.active
>a
>.badge{color:#
428bca;background-color:#fff}.nav-pills
>li
>a
>.badge{margin-left:
3px}.jumbotron{padding:
30px;margin-bottom:
30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:
15px;font-size:
21px;font-weight:
200}.jumbotron
>hr{border-top-color:#d5d5d5}.container .jumbotron{border-radius:
6px}.jumbotron .container{max-width:
100%}@media screen and (min-width:
768px){.jumbotron{padding-top:
48px;padding-bottom:
48px}.container .jumbotron{padding-right:
60px;padding-left:
60px}.jumbotron h1,.jumbotron .h1{font-size:
63px}}.thumbnail{display:block;padding:
4px;margin-bottom:
20px;line-height:
1.42857143;background-color:#fff;border:
1px solid #ddd;border-radius:
4px;-webkit-transition:all
.2s ease-in-out;-o-transition:all
.2s ease-in-out;transition:all
.2s ease-in-out}.thumbnail
>img,.thumbnail a
>img{margin-right:auto;margin-left:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#
428bca}.thumbnail .caption{padding:
9px;color:#
333}.alert{padding:
15px;margin-bottom:
20px;border:
1px solid transparent;border-radius:
4px}.alert h4{margin-top:
0;color:inherit}.alert .alert-link{font-weight:
700}.alert
>p,.alert
>ul{margin-bottom:
0}.alert
>p+p{margin-top:
5px}.alert-dismissable,.alert-dismissible{padding-right:
35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-
2px;right:-
21px;color:inherit}.alert-success{color:#
3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#
2b542c}.alert-info{color:#
31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#
245269}.alert-warning{color:#
8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#
66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#
843534}@-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,
.1);box-shadow:inset
0 1px
2px rgba(
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:#
428bca;-webkit-box-shadow:inset
0 -
1px
0 rgba(
0,
0,
0,
.15);box-shadow:inset
0 -
1px
0 rgba(
0,
0,
0,
.15);-webkit-transition:width
.6s ease;-o-transition:width
.6s ease;transition:width
.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:-o-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);-webkit-background-size:
40px
40px;background-size:
40px
40px}.progress.active .progress-bar,.progress-bar.active{-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[
aria-valuenow="
1"],.progress-bar[
aria-valuenow="
2"]{min-width:
30px}.progress-bar[
aria-valuenow="
0"]{min-width:
30px;color:#
777;background-color:transparent;background-image:none;-webkit-box-shadow:none;box-shadow:none}.progress-bar-success{background-color:#
5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:-o-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent)}.progress-bar-info{background-color:#
5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:-o-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:-o-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:-o-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent)}.media,.media-body{overflow:hidden;zoom:
1}.media,.media .media{margin-top:
15px}.media:first-child{margin-top:
0}.media-object{display:block}.media-heading{margin:
0 0 5px}.media
>.pull-left{margin-right:
10px}.media
>.pull-right{margin-left:
10px}.media-list{padding-left:
0;list-style:none}.list-group{padding-left:
0;margin-bottom:
20px}.list-group-item{position:relative;display:block;padding:
10px
15px;margin-bottom:-
1px;background-color:#fff;border:
1px solid #ddd}.list-group-item:first-child{border-top-left-radius:
4px;border-top-right-radius:
4px}.list-group-item:last-child{margin-bottom:
0;border-bottom-right-radius:
4px;border-bottom-left-radius:
4px}.list-group-item
>.badge{float:right}.list-group-item
>.badge+.badge{margin-right:
5px}a.list-group-item{color:#
555}a.list-group-item .list-group-item-heading{color:#
333}a.list-group-item:hover,a.list-group-item:focus{color:#
555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{color:#
777;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#
777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:
2;color:#fff;background-color:#
428bca;border-color:#
428bca}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading
>small,.list-group-item.active:hover .list-group-item-heading
>small,.list-group-item.active:focus .list-group-item-heading
>small,.list-group-item.active .list-group-item-heading
>.small,.list-group-item.active:hover .list-group-item-heading
>.small,.list-group-item.active:focus .list-group-item-heading
>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#
3c763d;background-color:#dff0d8}a.list-group-item-success{color:#
3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#
3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#
3c763d;border-color:#
3c763d}.list-group-item-info{color:#
31708f;background-color:#d9edf7}a.list-group-item-info{color:#
31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#
31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#
31708f;border-color:#
31708f}.list-group-item-warning{color:#
8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#
8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#
8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#
8a6d3b;border-color:#
8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:
0;margin-bottom:
5px}.list-group-item-text{margin-bottom:
0;line-height:
1.3}.panel{margin-bottom:
20px;background-color:#fff;border:
1px solid transparent;border-radius:
4px;-webkit-box-shadow:
0 1px
1px rgba(
0,
0,
0,
.05);box-shadow:
0 1px
1px rgba(
0,
0,
0,
.05)}.panel-body{padding:
15px}.panel-heading{padding:
10px
15px;border-bottom:
1px solid transparent;border-top-left-radius:
3px;border-top-right-radius:
3px}.panel-heading
>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:
0;margin-bottom:
0;font-size:
16px;color:inherit}.panel-title
>a{color:inherit}.panel-footer{padding:
10px
15px;background-color:#f5f5f5;border-top:
1px solid #ddd;border-bottom-right-radius:
3px;border-bottom-left-radius:
3px}.panel
>.list-group{margin-bottom:
0}.panel
>.list-group .list-group-item{border-width:
1px
0;border-radius:
0}.panel
>.list-group:first-child .list-group-item:first-child{border-top:
0;border-top-left-radius:
3px;border-top-right-radius:
3px}.panel
>.list-group:last-child .list-group-item:last-child{border-bottom:
0;border-bottom-right-radius:
3px;border-bottom-left-radius:
3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:
0}.list-group+.panel-footer{border-top-width:
0}.panel
>.table,.panel
>.table-responsive
>.table,.panel
>.panel-collapse
>.table{margin-bottom:
0}.panel
>.table:first-child,.panel
>.table-responsive:first-child
>.table:first-child{border-top-left-radius:
3px;border-top-right-radius:
3px}.panel
>.table:first-child
>thead:first-child
>tr:first-child td:first-child,.panel
>.table-responsive:first-child
>.table:first-child
>thead:first-child
>tr:first-child td:first-child,.panel
>.table:first-child
>tbody:first-child
>tr:first-child td:first-child,.panel
>.table-responsive:first-child
>.table:first-child
>tbody:first-child
>tr:first-child td:first-child,.panel
>.table:first-child
>thead:first-child
>tr:first-child th:first-child,.panel
>.table-responsive:first-child
>.table:first-child
>thead:first-child
>tr:first-child th:first-child,.panel
>.table:first-child
>tbody:first-child
>tr:first-child th:first-child,.panel
>.table-responsive:first-child
>.table:first-child
>tbody:first-child
>tr:first-child th:first-child{border-top-left-radius:
3px}.panel
>.table:first-child
>thead:first-child
>tr:first-child td:last-child,.panel
>.table-responsive:first-child
>.table:first-child
>thead:first-child
>tr:first-child td:last-child,.panel
>.table:first-child
>tbody:first-child
>tr:first-child td:last-child,.panel
>.table-responsive:first-child
>.table:first-child
>tbody:first-child
>tr:first-child td:last-child,.panel
>.table:first-child
>thead:first-child
>tr:first-child th:last-child,.panel
>.table-responsive:first-child
>.table:first-child
>thead:first-child
>tr:first-child th:last-child,.panel
>.table:first-child
>tbody:first-child
>tr:first-child th:last-child,.panel
>.table-responsive:first-child
>.table:first-child
>tbody:first-child
>tr:first-child th:last-child{border-top-right-radius:
3px}.panel
>.table:last-child,.panel
>.table-responsive:last-child
>.table:last-child{border-bottom-right-radius:
3px;border-bottom-left-radius:
3px}.panel
>.table:last-child
>tbody:last-child
>tr:last-child td:first-child,.panel
>.table-responsive:last-child
>.table:last-child
>tbody:last-child
>tr:last-child td:first-child,.panel
>.table:last-child
>tfoot:last-child
>tr:last-child td:first-child,.panel
>.table-responsive:last-child
>.table:last-child
>tfoot:last-child
>tr:last-child td:first-child,.panel
>.table:last-child
>tbody:last-child
>tr:last-child th:first-child,.panel
>.table-responsive:last-child
>.table:last-child
>tbody:last-child
>tr:last-child th:first-child,.panel
>.table:last-child
>tfoot:last-child
>tr:last-child th:first-child,.panel
>.table-responsive:last-child
>.table:last-child
>tfoot:last-child
>tr:last-child th:first-child{border-bottom-left-radius:
3px}.panel
>.table:last-child
>tbody:last-child
>tr:last-child td:last-child,.panel
>.table-responsive:last-child
>.table:last-child
>tbody:last-child
>tr:last-child td:last-child,.panel
>.table:last-child
>tfoot:last-child
>tr:last-child td:last-child,.panel
>.table-responsive:last-child
>.table:last-child
>tfoot:last-child
>tr:last-child td:last-child,.panel
>.table:last-child
>tbody:last-child
>tr:last-child th:last-child,.panel
>.table-responsive:last-child
>.table:last-child
>tbody:last-child
>tr:last-child th:last-child,.panel
>.table:last-child
>tfoot:last-child
>tr:last-child th:last-child,.panel
>.table-responsive:last-child
>.table:last-child
>tfoot:last-child
>tr:last-child th:last-child{border-bottom-right-radius:
3px}.panel
>.panel-body+.table,.panel
>.panel-body+.table-responsive{border-top:
1px solid #ddd}.panel
>.table
>tbody:first-child
>tr:first-child th,.panel
>.table
>tbody:first-child
>tr:first-child td{border-top:
0}.panel
>.table-bordered,.panel
>.table-responsive
>.table-bordered{border:
0}.panel
>.table-bordered
>thead
>tr
>th:first-child,.panel
>.table-responsive
>.table-bordered
>thead
>tr
>th:first-child,.panel
>.table-bordered
>tbody
>tr
>th:first-child,.panel
>.table-responsive
>.table-bordered
>tbody
>tr
>th:first-child,.panel
>.table-bordered
>tfoot
>tr
>th:first-child,.panel
>.table-responsive
>.table-bordered
>tfoot
>tr
>th:first-child,.panel
>.table-bordered
>thead
>tr
>td:first-child,.panel
>.table-responsive
>.table-bordered
>thead
>tr
>td:first-child,.panel
>.table-bordered
>tbody
>tr
>td:first-child,.panel
>.table-responsive
>.table-bordered
>tbody
>tr
>td:first-child,.panel
>.table-bordered
>tfoot
>tr
>td:first-child,.panel
>.table-responsive
>.table-bordered
>tfoot
>tr
>td:first-child{border-left:
0}.panel
>.table-bordered
>thead
>tr
>th:last-child,.panel
>.table-responsive
>.table-bordered
>thead
>tr
>th:last-child,.panel
>.table-bordered
>tbody
>tr
>th:last-child,.panel
>.table-responsive
>.table-bordered
>tbody
>tr
>th:last-child,.panel
>.table-bordered
>tfoot
>tr
>th:last-child,.panel
>.table-responsive
>.table-bordered
>tfoot
>tr
>th:last-child,.panel
>.table-bordered
>thead
>tr
>td:last-child,.panel
>.table-responsive
>.table-bordered
>thead
>tr
>td:last-child,.panel
>.table-bordered
>tbody
>tr
>td:last-child,.panel
>.table-responsive
>.table-bordered
>tbody
>tr
>td:last-child,.panel
>.table-bordered
>tfoot
>tr
>td:last-child,.panel
>.table-responsive
>.table-bordered
>tfoot
>tr
>td:last-child{border-right:
0}.panel
>.table-bordered
>thead
>tr:first-child
>td,.panel
>.table-responsive
>.table-bordered
>thead
>tr:first-child
>td,.panel
>.table-bordered
>tbody
>tr:first-child
>td,.panel
>.table-responsive
>.table-bordered
>tbody
>tr:first-child
>td,.panel
>.table-bordered
>thead
>tr:first-child
>th,.panel
>.table-responsive
>.table-bordered
>thead
>tr:first-child
>th,.panel
>.table-bordered
>tbody
>tr:first-child
>th,.panel
>.table-responsive
>.table-bordered
>tbody
>tr:first-child
>th{border-bottom:
0}.panel
>.table-bordered
>tbody
>tr:last-child
>td,.panel
>.table-responsive
>.table-bordered
>tbody
>tr:last-child
>td,.panel
>.table-bordered
>tfoot
>tr:last-child
>td,.panel
>.table-responsive
>.table-bordered
>tfoot
>tr:last-child
>td,.panel
>.table-bordered
>tbody
>tr:last-child
>th,.panel
>.table-responsive
>.table-bordered
>tbody
>tr:last-child
>th,.panel
>.table-bordered
>tfoot
>tr:last-child
>th,.panel
>.table-responsive
>.table-bordered
>tfoot
>tr:last-child
>th{border-bottom:
0}.panel
>.table-responsive{margin-bottom:
0;border:
0}.panel-group{margin-bottom:
20px}.panel-group .panel{margin-bottom:
0;border-radius:
4px}.panel-group .panel+.panel{margin-top:
5px}.panel-group .panel-heading{border-bottom:
0}.panel-group .panel-heading+.panel-collapse
>.panel-body{border-top:
1px solid #ddd}.panel-group .panel-footer{border-top:
0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:
1px solid #ddd}.panel-default{border-color:#ddd}.panel-default
>.panel-heading{color:#
333;background-color:#f5f5f5;border-color:#ddd}.panel-default
>.panel-heading+.panel-collapse
>.panel-body{border-top-color:#ddd}.panel-default
>.panel-heading .badge{color:#f5f5f5;background-color:#
333}.panel-default
>.panel-footer+.panel-collapse
>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#
428bca}.panel-primary
>.panel-heading{color:#fff;background-color:#
428bca;border-color:#
428bca}.panel-primary
>.panel-heading+.panel-collapse
>.panel-body{border-top-color:#
428bca}.panel-primary
>.panel-heading .badge{color:#
428bca;background-color:#fff}.panel-primary
>.panel-footer+.panel-collapse
>.panel-body{border-bottom-color:#
428bca}.panel-success{border-color:#d6e9c6}.panel-success
>.panel-heading{color:#
3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success
>.panel-heading+.panel-collapse
>.panel-body{border-top-color:#d6e9c6}.panel-success
>.panel-heading .badge{color:#dff0d8;background-color:#
3c763d}.panel-success
>.panel-footer+.panel-collapse
>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info
>.panel-heading{color:#
31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info
>.panel-heading+.panel-collapse
>.panel-body{border-top-color:#bce8f1}.panel-info
>.panel-heading .badge{color:#d9edf7;background-color:#
31708f}.panel-info
>.panel-footer+.panel-collapse
>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning
>.panel-heading{color:#
8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning
>.panel-heading+.panel-collapse
>.panel-body{border-top-color:#faebcc}.panel-warning
>.panel-heading .badge{color:#fcf8e3;background-color:#
8a6d3b}.panel-warning
>.panel-footer+.panel-collapse
>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger
>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger
>.panel-heading+.panel-collapse
>.panel-body{border-top-color:#ebccd1}.panel-danger
>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger
>.panel-footer+.panel-collapse
>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:
0;padding:
0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object{position:absolute;top:
0;bottom:
0;left:
0;width:
100%;height:
100%;border:
0}.embed-responsive.embed-responsive-
16by9{padding-bottom:
56.25%}.embed-responsive.embed-responsive-
4by3{padding-bottom:
75%}.well{min-height:
20px;padding:
19px;margin-bottom:
20px;background-color:#f5f5f5;border:
1px solid #e3e3e3;border-radius:
4px;-webkit-box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.05);box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.05)}.well blockquote{border-color:#ddd;border-color:rgba(
0,
0,
0,
.15)}.well-lg{padding:
24px;border-radius:
6px}.well-sm{padding:
9px;border-radius:
3px}.close{float:right;font-size:
21px;font-weight:
700;line-height:
1;color:#
000;text-shadow:
0 1px
0 #fff;filter:alpha(opacity=
20);opacity:
.2}.close:hover,.close:focus{color:#
000;text-decoration:none;cursor:pointer;filter:alpha(opacity=
50);opacity:
.5}button.close{-webkit-appearance:none;padding:
0;cursor:pointer;background:
0 0;border:
0}.modal-open{overflow:hidden}.modal{position:fixed;top:
0;right:
0;bottom:
0;left:
0;z-index:
1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:
0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform
.3s ease-out;-o-transition:-o-transform
.3s ease-out;transition:transform
.3s ease-out;-webkit-transform:translate3d(
0,-
25%,
0);-o-transform:translate3d(
0,-
25%,
0);transform:translate3d(
0,-
25%,
0)}.modal.in .modal-dialog{-webkit-transform:translate3d(
0,
0,
0);-o-transform:translate3d(
0,
0,
0);transform:translate3d(
0,
0,
0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:
10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:
1px solid #
999;border:
1px solid rgba(
0,
0,
0,
.2);border-radius:
6px;outline:
0;-webkit-box-shadow:
0 3px
9px rgba(
0,
0,
0,
.5);box-shadow:
0 3px
9px rgba(
0,
0,
0,
.5)}.modal-backdrop{position:fixed;top:
0;right:
0;bottom:
0;left:
0;z-index:
1040;background-color:#
000}.modal-backdrop.fade{filter:alpha(opacity=
0);opacity:
0}.modal-backdrop.in{filter:alpha(opacity=
50);opacity:
.5}.modal-header{min-height:
16.43px;padding:
15px;border-bottom:
1px solid #e5e5e5}.modal-header .close{margin-top:-
2px}.modal-title{margin:
0;line-height:
1.42857143}.modal-body{position:relative;padding:
15px}.modal-footer{padding:
15px;text-align:right;border-top:
1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:
0;margin-left:
5px}.modal-footer .btn-group .btn+.btn{margin-left:-
1px}.modal-footer .btn-block+.btn-block{margin-left:
0}.modal-scrollbar-measure{position:absolute;top:-
9999px;width:
50px;height:
50px;overflow:scroll}@media (min-width:
768px){.modal-dialog{width:
600px;margin:
30px auto}.modal-content{-webkit-box-shadow:
0 5px
15px rgba(
0,
0,
0,
.5);box-shadow:
0 5px
15px rgba(
0,
0,
0,
.5)}.modal-sm{width:
300px}}@media (min-width:
992px){.modal-lg{width:
900px}}.tooltip{position:absolute;z-index:
1070;display:block;font-size:
12px;line-height:
1.4;visibility:visible;filter:alpha(opacity=
0);opacity:
0}.tooltip.in{filter:alpha(opacity=
90);opacity:
.9}.tooltip.top{padding:
5px
0;margin-top:-
3px}.tooltip.right{padding:
0 5px;margin-left:
3px}.tooltip.bottom{padding:
5px
0;margin-top:
3px}.tooltip.left{padding:
0 5px;margin-left:-
3px}.tooltip-inner{max-width:
200px;padding:
3px
8px;color:#fff;text-align:center;text-decoration:none;background-color:#
000;border-radius:
4px}.tooltip-arrow{position:absolute;width:
0;height:
0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:
0;left:
50%;margin-left:-
5px;border-width:
5px
5px
0;border-top-color:#
000}.tooltip.top-left .tooltip-arrow{bottom:
0;left:
5px;border-width:
5px
5px
0;border-top-color:#
000}.tooltip.top-right .tooltip-arrow{right:
5px;bottom:
0;border-width:
5px
5px
0;border-top-color:#
000}.tooltip.right .tooltip-arrow{top:
50%;left:
0;margin-top:-
5px;border-width:
5px
5px
5px
0;border-right-color:#
000}.tooltip.left .tooltip-arrow{top:
50%;right:
0;margin-top:-
5px;border-width:
5px
0 5px
5px;border-left-color:#
000}.tooltip.bottom .tooltip-arrow{top:
0;left:
50%;margin-left:-
5px;border-width:
0 5px
5px;border-bottom-color:#
000}.tooltip.bottom-left .tooltip-arrow{top:
0;left:
5px;border-width:
0 5px
5px;border-bottom-color:#
000}.tooltip.bottom-right .tooltip-arrow{top:
0;right:
5px;border-width:
0 5px
5px;border-bottom-color:#
000}.popover{position:absolute;top:
0;left:
0;z-index:
1060;display:none;max-width:
276px;padding:
1px;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:
1px solid #ccc;border:
1px solid rgba(
0,
0,
0,
.2);border-radius:
6px;-webkit-box-shadow:
0 5px
10px rgba(
0,
0,
0,
.2);box-shadow:
0 5px
10px rgba(
0,
0,
0,
.2)}.popover.top{margin-top:-
10px}.popover.right{margin-left:
10px}.popover.bottom{margin-top:
10px}.popover.left{margin-left:-
10px}.popover-title{padding:
8px
14px;margin:
0;font-size:
14px;font-weight:
400;line-height:
18px;background-color:#f7f7f7;border-bottom:
1px solid #ebebeb;border-radius:
5px
5px
0 0}.popover-content{padding:
9px
14px}.popover
>.arrow,.popover
>.arrow:after{position:absolute;display:block;width:
0;height:
0;border-color:transparent;border-style:solid}.popover
>.arrow{border-width:
11px}.popover
>.arrow:after{content:"";border-width:
10px}.popover.top
>.arrow{bottom:-
11px;left:
50%;margin-left:-
11px;border-top-color:#
999;border-top-color:rgba(
0,
0,
0,
.25);border-bottom-width:
0}.popover.top
>.arrow:after{bottom:
1px;margin-left:-
10px;content:" ";border-top-color:#fff;border-bottom-width:
0}.popover.right
>.arrow{top:
50%;left:-
11px;margin-top:-
11px;border-right-color:#
999;border-right-color:rgba(
0,
0,
0,
.25);border-left-width:
0}.popover.right
>.arrow:after{bottom:-
10px;left:
1px;content:" ";border-right-color:#fff;border-left-width:
0}.popover.bottom
>.arrow{top:-
11px;left:
50%;margin-left:-
11px;border-top-width:
0;border-bottom-color:#
999;border-bottom-color:rgba(
0,
0,
0,
.25)}.popover.bottom
>.arrow:after{top:
1px;margin-left:-
10px;content:" ";border-top-width:
0;border-bottom-color:#fff}.popover.left
>.arrow{top:
50%;right:-
11px;margin-top:-
11px;border-right-width:
0;border-left-color:#
999;border-left-color:rgba(
0,
0,
0,
.25)}.popover.left
>.arrow:after{right:
1px;bottom:-
10px;content:" ";border-right-width:
0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:
100%;overflow:hidden}.carousel-inner
>.item{position:relative;display:none;-webkit-transition:
.6s ease-in-out left;-o-transition:
.6s ease-in-out left;transition:
.6s ease-in-out left}.carousel-inner
>.item
>img,.carousel-inner
>.item
>a
>img{line-height:
1}.carousel-inner
>.active,.carousel-inner
>.next,.carousel-inner
>.prev{display:block}.carousel-inner
>.active{left:
0}.carousel-inner
>.next,.carousel-inner
>.prev{position:absolute;top:
0;width:
100%}.carousel-inner
>.next{left:
100%}.carousel-inner
>.prev{left:-
100%}.carousel-inner
>.next.left,.carousel-inner
>.prev.right{left:
0}.carousel-inner
>.active.left{left:-
100%}.carousel-inner
>.active.right{left:
100%}.carousel-control{position:absolute;top:
0;bottom:
0;left:
0;width:
15%;font-size:
20px;color:#fff;text-align:center;text-shadow:
0 1px
2px rgba(
0,
0,
0,
.6);filter:alpha(opacity=
50);opacity:
.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(
0,
0,
0,
.5)
0,rgba(
0,
0,
0,
.0001)
100%);background-image:-o-linear-gradient(left,rgba(
0,
0,
0,
.5)
0,rgba(
0,
0,
0,
.0001)
100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(
0,
0,
0,
.5)),to(rgba(
0,
0,
0,
.0001)));background-image:linear-gradient(to right,rgba(
0,
0,
0,
.5)
0,rgba(
0,
0,
0,
.0001)
100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#
80000000', endColorstr='#
00000000', GradientType=
1);background-repeat:repeat-x}.carousel-control.right{right:
0;left:auto;background-image:-webkit-linear-gradient(left,rgba(
0,
0,
0,
.0001)
0,rgba(
0,
0,
0,
.5)
100%);background-image:-o-linear-gradient(left,rgba(
0,
0,
0,
.0001)
0,rgba(
0,
0,
0,
.5)
100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(
0,
0,
0,
.0001)),to(rgba(
0,
0,
0,
.5)));background-image:linear-gradient(to right,rgba(
0,
0,
0,
.0001)
0,rgba(
0,
0,
0,
.5)
100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#
00000000', endColorstr='#
80000000', GradientType=
1);background-repeat:repeat-x}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;filter:alpha(opacity=
90);outline:
0;opacity:
.9}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:
50%;z-index:
5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:
50%;margin-left:-
10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:
50%;margin-right:-
10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:
20px;height:
20px;margin-top:-
10px;font-family:serif}.carousel-control .icon-prev:before{content:'\
2039'}.carousel-control .icon-next:before{content:'\
203a'}.carousel-indicators{position:absolute;bottom:
10px;left:
50%;z-index:
15;width:
60%;padding-left:
0;margin-left:-
30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:
10px;height:
10px;margin:
1px;text-indent:-
999px;cursor:pointer;background-color:#
000 \
9;background-color:rgba(
0,
0,
0,
0);border:
1px solid #fff;border-radius:
10px}.carousel-indicators .active{width:
12px;height:
12px;margin:
0;background-color:#fff}.carousel-caption{position:absolute;right:
15%;bottom:
20px;left:
15%;z-index:
10;padding-top:
20px;padding-bottom:
20px;color:#fff;text-align:center;text-shadow:
0 1px
2px rgba(
0,
0,
0,
.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:
768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:
30px;height:
30px;margin-top:-
15px;font-size:
30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-
15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-
15px}.carousel-caption{right:
20%;left:
20%;padding-bottom:
30px}.carousel-indicators{bottom:
20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical
>.btn-group:before,.btn-group-vertical
>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{display:table;content:" "}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical
>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:
0/
0 a;color:transparent;text-shadow:none;background-color:transparent;border:
0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed;-webkit-transform:translate3d(
0,
0,
0);-o-transform:translate3d(
0,
0,
0);transform:translate3d(
0,
0,
0)}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none!important}@media (max-width:
767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (max-width:
767px){.visible-xs-block{display:block!important}}@media (max-width:
767px){.visible-xs-inline{display:inline!important}}@media (max-width:
767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:
768px) and (max-width:
991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media (min-width:
768px) and (max-width:
991px){.visible-sm-block{display:block!important}}@media (min-width:
768px) and (max-width:
991px){.visible-sm-inline{display:inline!important}}@media (min-width:
768px) and (max-width:
991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:
992px) and (max-width:
1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media (min-width:
992px) and (max-width:
1199px){.visible-md-block{display:block!important}}@media (min-width:
992px) and (max-width:
1199px){.visible-md-inline{display:inline!important}}@media (min-width:
992px) and (max-width:
1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:
1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (min-width:
1200px){.visible-lg-block{display:block!important}}@media (min-width:
1200px){.visible-lg-inline{display:inline!important}}@media (min-width:
1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:
767px){.hidden-xs{display:none!important}}@media (min-width:
768px) and (max-width:
991px){.hidden-sm{display:none!important}}@media (min-width:
992px) and (max-width:
1199px){.hidden-md{display:none!important}}@media (min-width:
1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}
15 <meta content=
"Mnemonic code for generating deterministic keys" name=
"description"/>
16 <meta content=
"width=device-width, initial-scale=1.0" name=
"viewport" />
17 <meta content=
"bitcoin mnemonic converter" name=
"description" />
18 <meta content=
"DC POS" name=
"author" />
31 background-color: orange;
35 border:
2px solid #
555;
37 border-bottom-left-radius:
20px
20px;
38 border-bottom-right-radius:
20px
20px;
43 <div class=
"container">
45 <h1 class=
"text-center">Mnemonic Code Converter
</h1>
48 <div class=
"col-md-12">
50 <form class=
"form-horizontal" role=
"form">
51 <div class=
"col-sm-2"></div>
52 <div class=
"col-sm-10">
53 <p>For more info see the
<a href=
"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki" target=
"_blank">BIP39 spec
</a></p>
55 <div class=
"form-group">
56 <label for=
"phrase" class=
"col-sm-2 control-label">BIP39 Phrase
</label>
57 <div class=
"col-sm-10">
58 <textarea id=
"phrase" class=
"phrase form-control"></textarea>
61 <div class=
"form-group">
62 <label for=
"strength" class=
"col-sm-2 control-label">Number of words
</label>
63 <div class=
"col-sm-10">
64 <div class=
"input-group">
65 <input type=
"number" class=
"strength form-control" id=
"strength" value=
"12">
66 <span class=
"input-group-btn">
67 <button class=
"btn generate">Generate Random Phrase
</button>
72 <div class=
"form-group">
73 <label for=
"root-key" class=
"col-sm-2 control-label">BIP32 Root Key
</label>
74 <div class=
"col-sm-10">
75 <textarea id=
"root-key" class=
"root-key form-control" disabled=
"disabled"></textarea>
85 <div class=
"col-md-12">
86 <h2>Derivation Path
</h2>
87 <ul class=
"derivation-type nav nav-tabs" role=
"tablist">
89 <a href=
"#bip44" role=
"tab" data-toggle=
"tab">BIP44
</a></li>
90 <li><a href=
"#bip32" role=
"tab" data-toggle=
"tab">BIP32
</a></li>
92 <div class=
"derivation-type tab-content">
93 <div id=
"bip44" class=
"tab-pane active">
94 <form class=
"form-horizontal" role=
"form">
96 <div class=
"col-sm-2"></div>
97 <div class=
"col-sm-10">
98 <p>For more info see the
<a href=
"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target=
"_blank">BIP44 spec
</a></p>
100 <div class=
"form-group">
101 <label for=
"purpose" class=
"col-sm-2 control-label">
102 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#purpose" target=
"_blank">Purpose
</a>
104 <div class=
"col-sm-10">
105 <input id=
"purpose" type=
"text" class=
"purpose form-control" value=
"44">
108 <div class=
"form-group">
109 <label for=
"coin" class=
"col-sm-2 control-label">
110 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#registered-coin-types" target=
"_blank">Coin
</a>
112 <div class=
"col-sm-10">
113 <input id=
"coin" type=
"text" class=
"coin form-control" value=
"0">
116 <div class=
"form-group">
117 <label for=
"account" class=
"col-sm-2 control-label">
118 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#account" target=
"_blank">Account
</a>
120 <div class=
"col-sm-10">
121 <input id=
"account" type=
"text" class=
"account form-control" value=
"0">
124 <div class=
"form-group">
125 <label for=
"change" class=
"col-sm-2 control-label">
126 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#change" target=
"_blank">External / Internal
</a>
128 <div class=
"col-sm-10">
129 <input id=
"change" type=
"text" class=
"change form-control" value=
"0">
132 <div class=
"form-group">
133 <label for=
"bip44-path" class=
"col-sm-2 control-label">BIP32 Derivation Path
</label>
134 <div class=
"col-sm-10">
135 <input id=
"bip44-path" type=
"text" class=
"path form-control" value=
"m/44'/0'/0'/0" disabled=
"disabled">
140 <div id=
"bip32" class=
"tab-pane">
141 <form class=
"form-horizontal" role=
"form">
143 <div class=
"col-sm-2"></div>
144 <div class=
"col-sm-10">
145 <p>For more info see the
<a href=
"https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target=
"_blank">BIP32 spec
</a></p>
147 <div class=
"form-group">
148 <label for=
"bip32-path" class=
"col-sm-2 control-label">BIP32 Derivation Path
</label>
149 <div class=
"col-sm-10">
150 <input id=
"bip32-path" type=
"text" class=
"path form-control" value=
"m/0">
156 <form class=
"form-horizontal" role=
"form">
157 <div class=
"form-group">
158 <label for=
"extended-priv-key" class=
"col-sm-2 control-label">BIP32 Extended Key
</label>
159 <div class=
"col-sm-10">
160 <textarea id=
"extended-priv-key" class=
"extended-priv-key form-control" disabled=
"disabled"></textarea>
163 <div class=
"form-group">
164 <label for=
"extended-pub-key" class=
"col-sm-2 control-label">BIP32 Extended Key (addresses only)
</label>
165 <div class=
"col-sm-10">
166 <textarea id=
"extended-pub-key" class=
"extended-pub-key form-control" disabled=
"disabled"></textarea>
176 <div class=
"col-md-12">
177 <h2>Derived Addresses
</h2>
178 <p>Note these addreses are derived from the
<strong>BIP32 Extended Key
</strong></p>
179 <table class=
"table table-striped">
182 <div class=
"input-group">
184 <button class=
"index-toggle">Toggle
</button>
188 <div class=
"input-group">
190 <button class=
"address-toggle">Toggle
</button>
194 <div class=
"input-group">
195 Private Key
196 <button class=
"private-key-toggle">Toggle
</button>
200 <tbody class=
"addresses">
201 <tr><td> </td><td> </td><td> </td></tr>
202 <tr><td> </td><td> </td><td> </td></tr>
203 <tr><td> </td><td> </td><td> </td></tr>
204 <tr><td> </td><td> </td><td> </td></tr>
205 <tr><td> </td><td> </td><td> </td></tr>
210 <span>Show next
</button>
211 <input type=
"number" class=
"rows-to-add" value=
"20">
212 <button class=
"more">Show
</button>
217 <div class=
"col-md-12">
219 <h3>BIP39
<span class=
"small">Mnemonic code for generating deterministic keys
</span></h3>
222 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki">official BIP39 spec
</a>
224 <h3>BIP32
<span class=
"small">Hierarchical Deterministic Wallets
</span></h3>
227 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target=
"_blank">official BIP32 spec
</a>
229 <a href=
"http://bip32.org/" target=
"_blank">bip32.org
</a>
231 <h3>BIP44
<span class=
"small">Multi-Account Hierarchy for Deterministic Wallets
</span></h3>
234 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target=
"_blank">official BIP44 spec
</a>
236 <h3>Private Keys
</h3>
239 <a href=
"https://brainwallet.github.io/" target=
"_blank">brainwallet.org
</a>,
240 but be careful - it can be easy to make mistakes if you
241 don't know what you're doing
247 <div class=
"feedback-container">
248 <div class=
"feedback"></div>
251 <script type=
"text/template" id=
"address-row-template">
253 <td class=
"index"><span></span></td>
254 <td class=
"address"><span></span></td>
255 <td class=
"privkey"><span></span></td>
259 <!--<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>-->
261 /*! jQuery v2.1
.1 | (c)
2005,
2014 jQuery Foundation, Inc. | jquery.org/license */
262 !function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!
0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,
m="
2.1.1",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:
0,toArray:function(){return d.call(this)},get:function(a){return null!=a?
0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(
0)},last:function(){return this.eq(-
1)},eq:function(a){var b=this.length,c=+a+(
0>a?b:
0);return this.pushStack(c
>=
0&&b
>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[
0]||{},h=
1,i=arguments.length,j=!
1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i
>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!
1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void
0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!
0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)
>=
0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!
1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!
1:!
0},isEmptyObject:function(a){var b;for(b in a)return!
1;return!
0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(
1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=
0,f=a.length,g=s(a);if(c){if(g){for(;f
>e;e++)if(d=b.apply(a[e],c),d===!
1)break}else for(e in a)if(d=b.apply(a[e],c),d===!
1)break}else if(g){for(;f
>e;e++)if(d=b.call(a[e],e,a[e]),d===!
1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!
1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-
1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=
0,e=a.length;c
>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=
0,g=a.length,h=!c;g
>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=
0,g=a.length,h=s(a),i=[];if(h)for(;g
>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:
1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,
2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void
0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!
1:
1===a.nodeType&&b?!
0:"array"===c||
0===b||"number"==typeof b&&b
>0&&b-
1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,
u=
"sizzle"+-new Date,v=a.document,w=
0,x=
0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!
0),
0},
C=
"undefined",D=
1<
<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=
0,c=this.length;c
>b;b++)if(this[b]===a)return b;return-
1},
L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
M="[\\x20\\t\\r\\n\\f]",
N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),
P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",
Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([
>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[
>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{
1,
6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var
d="
0x"+b-
65536;return d!==d||c?b:
0>d?String.fromCharCode(d+
65536):String.fromCharCode(d
>>10|
55296,
1023&d|
56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=
0;while(a[c++]=b[d++]);a.length=c-
1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||
"string"!=typeof a)return d;if(
1!==(k=b.nodeType)&&
9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[
1]){if(
9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[
2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[
3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=
9===k&&a,
1===k&&
"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute(
"id"))?s=r.replace(bb,
"\\$&"):b.setAttribute(
"id",s),
s=
"[id='"+s+
"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(
",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute(
"id")}}}return i(a.replace(R,
"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+
" ")
>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!
0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!
1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&
1===a.nodeType&&
1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-
1;return a?
1:-
1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!
1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&
9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!
1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.
className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.
innerHTML="
<div class='a'
></div><div class='a i'
></div>",a.firstChild.className="i
",2===a.getElementsByClassName("i
").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id
")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id
");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*
"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="<select msallowclip=''
><option selected=''
></option></select>",a.querySelectorAll("[msallowclip^='']
").length&&q.push("[*^$]=
"+M+"*(?:''|\
"\")
"),a.querySelectorAll("[selected]
").length||q.push("\\[
"+M+"*(?:value|
"+L+")
"),a.querySelectorAll(":checked
").length||q.push(":checked
")}),ib(function(a){var b=e.createElement("input
");b.setAttribute("type
","hidden
"),a.appendChild(b).setAttribute("name
","D
"),a.querySelectorAll("[name=d]
").length&&q.push("name
"+M+"*[*^$|!~]?=
"),a.querySelectorAll(":enabled
").length||q.push(":enabled
",":disabled
"),a.querySelectorAll("*,:x
"),q.push(",.*:
")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div
"),s.call(a,"[s!='']:x
"),r.push("!=
",Q)}),q=q.length&&new RegExp(q.join("|
")),r=r.length&&new RegExp(r.join("|
")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$
1']
"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression:
"+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string
"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode
",first:!0}," ":{dir:"parentNode
"},"+
":{dir:"previousSibling
",first:!0},"~
":{dir:"previousSibling
"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~=
"===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth
"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even
"===a[3]||"odd
"===a[3])),a[5]=+(a[7]+a[8]||"odd
"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")
",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*
"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|
"+M+")
"+a+"(
"+M+"|$)
"))&&y(a,function(a){return b.test("string
"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class
")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!=
"===b:b?(e+="","=
"===b?e===c:"!=
"===b?e!==c:"^=
"===b?c&&0===e.indexOf(c):"*=
"===b?c&&e.indexOf(c)>-1:"$=
"===b?c&&e.slice(-c.length)===c:"~=
"===b?(" "+e+" ").indexOf(c)>-1:"|=
"===b?e===c||e.slice(0,c.length+1)===c+"-
":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth
"!==a.slice(0,3),g="last
"!==a.slice(-4),h="of-type
"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling
":"previousSibling
",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only
"===a&&!o&&"nextSibling
"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo:
"+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$
1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang:
"+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang
")||b.getAttribute("lang
"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-
");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input
"===b&&!!a.checked||"option
"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input
"===b&&"button
"===a.type||"button
"===b},text:function(a){var b;return"input
"===a.nodeName.toLowerCase()&&"text
"===a.type&&(null==(b=a.getAttribute("type
"))||"text
"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=lb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=mb(b);function pb(){}pb.prototype=d.filters=d.pseudos,d.setFilters=new pb,g=fb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fb.error(a):z(a,i).slice(0)};function qb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(
1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((
1===b.nodeType||e)&&a(b,c,g))return!
0}else while(b=b[d])if(
1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[
0]===w&&h[
1]===f)return j[
2]=h[
2];if(i[d]=j,j[
2]=a(b,c,g))return!
0}}}function sb(a){return a.length
>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!
1;return!
0}:a[
0]}function tb(a,b,c){for(var d=
0,e=b.length;e
>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=
0,i=a.length,j=null!=b;i
>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])
>-
1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[
0].type],h=g||d.relative[" "],i=g?
1:
0,k=rb(function(a){return a===b},h,!
0),l=rb(function(a){return K.call(b,a)
>-
1},h,!
0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f
>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f
>e;e++)if(d.relative[a[e].type])break;return vb(i
>1&&sb(m),i
>1&&qb(a.slice(
0,i-
1).concat({value:
" "===a[i-
2].type?
"*":
""})).replace(R,
"$1"),c,e
>i&&wb(a.slice(i,e)),f
>e&&wb(a=a.slice(e)),f
>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length
>0,e=a.length
>0,f=function(f,g,h,i,k){var l,m,o,p=
0,
q=
"0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG(
"*",k),v=w+=null==t?
1:Math.random()||
.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=
0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=
0;while(o=b[m++])o(r,s,g,h);if(f){if(p
>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length
>0&&p+b.length
>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+
" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,
n=
"function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],
1===o.length){if(j=o[
0]=o[
0].slice(
0),j.length
>2&&
"ID"===(k=j[
0]).type&&c.getById&&
9===b.nodeType&&p&&d.relative[j[
1].type]){if(b=(d.find.ID(k.matches[
0].replace(cb,db),b)||[])[
0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?
0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[
0].replace(cb,db),ab.test(j[
0].type)&&ob(b.parentNode)||b))){if(j.splice(i,
1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split(
"").sort(B).join(
"")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return
1&a.compareDocumentPosition(n.createElement(
"div"))}),ib(function(a){return a.
innerHTML=
"<a href='#'></a>",
"#"===a.firstChild.getAttribute(
"href")})||jb(
"type|href|height|width",function(a,b,c){return c?void
0:a.getAttribute(b,
"type"===b.toLowerCase()?
1:
2)}),c.attributes&&ib(function(a){return a.
innerHTML=
"<input/>",a.firstChild.setAttribute(
"value",
""),
""===a.firstChild.getAttribute(
"value")})||jb(
"value",function(a,b,c){return c||
"input"!==a.nodeName.toLowerCase()?void
0:a.defaultValue}),ib(function(a){return null==a.getAttribute(
"disabled")})||jb(L,function(a,b,c){var d;return c?void
0:a[b]===!
0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);n.find=t,n.expr=t.selectors,n.expr[
":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/
?>(?:<\/\
1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)
>=
0!==c})}n.filter=function(a,b,c){var d=b[
0];return c&&(
a=":not("+a+")"),
1===b.length&&
1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return
1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=
0;c
>b;b++)if(n.contains(e[b],this))return!
0}));for(b=
0;c
>b;b++)n.find(a,e[b],d);return d=this.pushStack(c
>1?n.unique(d):d),d.selector=this.selector?this.selector+
" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!
1))},not:function(a){return this.pushStack(x(this,a||[],!
0))},is:function(a){return!!x(this,
"string"==typeof a&&u.test(a)?n(a):a||[],!
1).length}});var y,z=/^(?:\s*(<[\w\W]+
>)[^
>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(
c="<"===a[
0]&&"
>"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined
"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):
0;e
>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType
<11&&(g?g.index(c)
>-
1:
1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length
>1?n.unique(f):f)},index:function(a){return a?
"string"==typeof a?g.call(n(a),this[
0]):g.call(this,a.jquery?a[
0]:a):this[
0]&&this[
0].parentNode?this.first().prevAll().length:-
1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&
1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&
11!==b.nodeType?b:null},parents:function(a){return n.dir(a,
"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,
"parentNode",c)},next:function(a){return D(a,
"nextSibling")},prev:function(a){return D(a,
"previousSibling")},nextAll:function(a){return n.dir(a,
"nextSibling")},prevAll:function(a){return n.dir(a,
"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,
"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,
"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return
"Until"!==a.slice(-
5)&&(d=c),d&&
"string"==typeof d&&(e=n.filter(d,e)),this.length
>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!
0}),b}n.Callbacks=function(a){
a=
"string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!
0,g=e||
0,e=
0,f=h.length,d=!
0;h&&f
>g;g++)if(h[g].apply(l[
0],l[
1])===!
1&&a.stopOnFalse){b=!
1;break}d=!
1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))
>-
1)h.splice(c,
1),d&&(f
>=c&&f--,g
>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)
>-
1:!(!h||!h.length)},empty:function(){return h=[],f=
0,this},disable:function(){return h=i=b=void
0,this},disabled:function(){return!h},lock:function(){return i=void
0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],
c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[
1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[
0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[
2],h=f[
3];d[f[
1]]=g.add,h&&g.add(function(){c=h},b[
1^a][
2].disable,b[
2][
2].lock),e[f[
0]]=function(){return e[f[
0]+"With"](this===e?d:this,arguments),this},e[f[
0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=
0,c=d.call(arguments),e=c.length,f=
1!==e||a&&n.isFunction(a.promise)?e:
0,g=
1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length
>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e
>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e
>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!
1,readyWait:
1,holdReady:function(a){a?n.readyWait++:n.ready(!
0)},ready:function(a){(a===!
0?--n.readyWait:n.isReady)||(n.isReady=!
0,a!==!
0&&--n.readyWait
>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler(
"ready"),n(l).off(
"ready"))))}});function I(){l.removeEventListener(
"DOMContentLoaded",I,!
1),a.removeEventListener(
"load",I,!
1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),
"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener(
"DOMContentLoaded",I,!
1),a.addEventListener(
"load",I,!
1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=
0,i=a.length,j=null==c;if(
"object"===n.type(c)){e=!
0;for(h in c)n.access(a,b,h,c[h],!
0,f,g)}else if(void
0!==d&&(e=!
0,n.isFunction(d)||(g=!
0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i
>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[
0],c):f};n.acceptData=function(a){return
1===a.nodeType||
9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},
0,{get:function(){return{}}}),this.expando=n.expando+Math.random()}K.uid=
1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return
0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void
0===b?c:c[b]},access:function(a,b,c){var d;return void
0===b||b&&"string"==typeof b&&void
0===c?(d=this.get(a,b),void
0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void
0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void
0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void
0===c&&
1===a.nodeType)if(
d="data-"+b.replace(O,"-$
1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{
c="true"===c?!
0:"false"===c?!
1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void
0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)
263 },_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[
0],g=f&&f.attributes;if(void
0===a){if(this.length&&(e=M.get(f),
1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,
0===d.indexOf("data-")&&(d=n.camelCase(d.slice(
5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!
0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void
0===b){if(c=M.get(f,a),void
0!==c)return c;if(c=M.get(f,d),void
0!==c)return c;if(c=P(f,d,void
0),void
0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-
1!==a.indexOf("-")&&void
0!==c&&M.set(this,a,b)})},null,b,arguments.length
>1,null,!
0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||
"fx")+
"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void
0},dequeue:function(a,b){b=b||
"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};
"inprogress"===e&&(e=c.shift(),d--),e&&(
"fx"===b&&c.unshift(
"inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+
"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks(
"once memory").add(function(){L.remove(a,[b+
"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=
2;return
"string"!=typeof a&&(b=a,
a=
"fx",c--),arguments.length
<c?n.queue(this[
0],a):void
0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),
"fx"===a&&
"inprogress"!==c[
0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||
"fx",[])},promise:function(a,b){var c,d=
1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};
"string"!=typeof a&&(b=a,a=void
0),a=a||
"fx";while(g--)c=L.get(f[g],a+
"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Q=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,R=[
"Top",
"Right",
"Bottom",
"Left"],S=function(a,b){return a=b||a,
"none"===n.css(a,
"display")||!n.contains(a.ownerDocument,a)},T=/^(?:checkbox|radio)$/i;!function(){var a=l.createDocumentFragment(),b=a.appendChild(l.createElement(
"div")),c=l.createElement(
"input");c.setAttribute(
"type",
"radio"),c.setAttribute(
"checked",
"checked"),c.setAttribute(
"name",
"t"),b.appendChild(c),k.checkClone=b.cloneNode(!
0).cloneNode(!
0).lastChild.checked,b.
innerHTML=
"<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!
0).lastChild.defaultValue}();var
U=
"undefined";k.
focusinBubbles=
"onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!
0}function $(){return!
1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void
0}),b=(b||
"").match(E)||[
""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[
1],p=(h[
2]||
"").split(
".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(
".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=
0,l.setup&&l.setup.call(a,d,p,g)!==!
1||a.addEventListener&&a.addEventListener(o,g,!
1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,
0,k):m.push(k),n.event.global[o]=!
0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||
"").match(E)||[
""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[
1],p=(h[
2]||
"").split(
".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[
2]&&new RegExp(
"(^|\\.)"+p.join(
"\\.(?:.*\\.|)")+
"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&(
"**"!==d||!k.selector)||(m.splice(f,
1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!
1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!
0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,
"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,
"type")?b.type:b,r=j.call(b,
"namespace")?b.namespace.split(
"."):[];if(g=h=d=d||l,
3!==d.nodeType&&
8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(
".")
>=
0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")
<0&&
"on"+q,b=b[n.expando]?b:new n.Event(q,
"object"==typeof b&&b),b.isTrigger=e?
2:
3,b.namespace=r.join(
"."),b.namespace_re=b.namespace?new RegExp(
"(^|\\.)"+r.join(
"\\.(?:.*\\.|)")+
"(\\.|$)"):null,b.result=void
0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!
1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=
0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f
>1?i:o.bindType||q,m=(L.get(g,
"events")||{})[b.type]&&L.get(g,
"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!
1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!
1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void
0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,
"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[
0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!
1){h=n.event.handlers.call(this,a,j),b=
0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=
0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void
0!==e&&(a.result=e)===!
1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||
"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!
0||
"click"!==a.type){for(d=[],c=
0;h
>c;c++)f=b[c],e=f.selector+" ",void
0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)
>=
0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h
<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:
"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(
" "),fixHooks:{},keyHooks:{props:
"char charCode key keyCode".split(
" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:
"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(
" "),filter:function(a,b){var c,d,e,f=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||l,d=c.documentElement,e=c.body,a.pageX=b.clientX+(d&&d.scrollLeft||e&&e.scrollLeft||
0)-(d&&d.clientLeft||e&&e.clientLeft||
0),a.pageY=b.clientY+(d&&d.scrollTop||e&&e.scrollTop||
0)-(d&&d.clientTop||e&&e.clientTop||
0)),a.which||void
0===f||(a.which=
1&f?
1:
2&f?
3:
4&f?
2:
0),a}},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=W.test(e)?this.mouseHooks:V.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=l),
3===a.target.nodeType&&(a.target=a.target.parentNode),g.filter?g.filter(a,f):a},special:{load:{noBubble:!
0},focus:{trigger:function(){return this!==_()&&this.focus?(this.focus(),!
1):void
0},delegateType:
"focusin"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!
1):void
0},delegateType:
"focusout"},click:{trigger:function(){return
"checkbox"===this.type&&this.click&&n.nodeName(this,
"input")?(this.click(),!
1):void
0},_default:function(a){return n.nodeName(a.target,
"a")}},beforeunload:{postDispatch:function(a){void
0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!
0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!
1)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void
0===a.defaultPrevented&&a.returnValue===!
1?Z:$):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!
0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:$,isPropagationStopped:$,isImmediatePropagationStopped:$,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=Z,a&&a.preventDefault&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=Z,a&&a.stopPropagation&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=Z,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:
"mouseover",mouseleave:
"mouseout",pointerenter:
"pointerover",pointerleave:
"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.focusinBubbles||n.each({focus:
"focusin",blur:
"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!
0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=L.access(d,b);e||d.addEventListener(a,c,!
0),L.access(d,b,(e||
0)+
1)},teardown:function(){var d=this.ownerDocument||this,e=L.access(d,b)-
1;e?L.access(d,b,e):(d.removeEventListener(a,c,!
0),L.remove(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if(
"object"==typeof a){
"string"!=typeof b&&(c=c||b,b=void
0);for(g in a)this.on(g,b,c,a[g],e);return this}if(null==c&&null==d?(d=b,c=b=void
0):null==d&&(
"string"==typeof b?(d=c,c=void
0):(d=c,c=b,b=void
0)),d===!
1)d=$;else if(!d)return this;return
1===e&&(f=d,d=function(a){return n().off(a),f.apply(this,arguments)},d.guid=f.guid||(f.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,
1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+
"."+d.namespace:d.origType,d.selector,d.handler),this;if(
"object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!
1||
"function"==typeof b)&&(c=b,b=void
0),c===!
1&&(c=$),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[
0];return c?n.event.trigger(a,b,c,!
0):void
0}});var ab=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^
>]*)\
/>/gi,bb=/<([\w:]+)/,cb=/<|&#?\w+;/,db=/<(?:script|style|link)/i,eb=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/^$|\/(?:java|ecma)script/i,gb=/^true\/(.*)/,hb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)
>\s*$/g,ib={option:[
1,"
<select multiple='multiple'
>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ib.optgroup=ib.option,ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead,ib.th=ib.td;function jb(a,b){return n.nodeName(a,"table
")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr
")?a.getElementsByTagName("tbody
")[0]||a.appendChild(a.ownerDocument.createElement("tbody
")):a}function kb(a){return a.type=(null!==a.getAttribute("type
"))+"/
"+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type
"),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function nb(a,b){var c,d,e,f,g,h,i,j;if(
1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=
0,d=j[e].length;d
>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function ob(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void
0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pb(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!
0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||
1!==a.nodeType&&
11!==a.nodeType||n.isXMLDoc(a)))for(g=ob(h),f=ob(a),d=
0,e=f.length;e
>d;d++)pb(f[d],g[d]);if(b)if(c)for(f=f||ob(a),g=g||ob(h),d=
0,e=f.length;e
>d;d++)nb(f[d],g[d]);else nb(a,h);return g=ob(h,"script"),g.length
>0&&mb(g,!i&&ob(a,
"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=
0,o=a.length;o
>m;m++)if(e=a[m],e||
0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(cb.test(e)){f=f||k.appendChild(b.createElement("div")),g=(bb.exec(e)||["",""])[
1].toLowerCase(),h=ib[g]||ib._default,f.innerHTML=h[
1]+e.replace(ab,"<$
1></$
2>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=ob(k.appendChild(e),"script
"),i&&mb(f),c)){j=0;while(e=f[j++])fb.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(ob(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&mb(ob(c,"script
")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(ob(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string
"==typeof a&&!db.test(a)&&!ib[(bb.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ab,"<$
1></$
2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ob(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(ob(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string
"==typeof p&&!k.checkClone&&eb.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(ob(c,"script
"),kb),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,ob(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-
1].ownerDocument,n.map(f,lb),j=
0;g
>j;j++)h=f[j],fb.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(hb,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-
1,h=
0;g
>=h;h++)c=h===g?this:this.clone(!
0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qb,rb={};function sb(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[
0]))?d.display:n.css(e[
0],"display");return e.detach(),f}function tb(a){var b=l,c=rb[a];return c||(c=sb(a,b),"none"!==c&&c||(qb=(qb||n("
<iframe frameborder='
0' width='
0' height='
0'
/>")).appendTo(b.documentElement),b=qb[0].contentDocument,b.write(),b.close(),c=sb(a,b),qb.detach()),rb[a]=c),c}var ub=/^margin/,vb=new RegExp("^(
"+Q+")(?!px)[a-z%]+$
","i
"),wb=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)};function xb(a,b,c){var d,e,f,g,h=a.style;return c=c||wb(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),vb.test(g)&&ub.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function yb(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement("div
"),f=l.createElement("div
");if(f.style){f.style.backgroundClip="content-box
",f.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box
"===f.style.backgroundClip,e.style.cssText="border:
0;width:
0;height:
0;top:
0;left:-
9999px;margin-top:
1px;position:absolute
",e.appendChild(f);function g(){f.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:
1%;top:
1%;border:
1px;padding:
1px;width:
4px;position:absolute
",f.innerHTML="",d.appendChild(e);var g=a.getComputedStyle(f,null);b="1%
"!==g.top,c="4px
"===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement("div
"));return c.style.cssText=f.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:
0;border:
0;padding:
0",c.style.marginRight=c.style.width="0",f.style.width="1px
",d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),b}})}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var zb=/^(none|table(?!-c[ea]).+)/,Ab=new RegExp("^(
"+Q+")(.*)$
","i
"),Bb=new RegExp("^([+-])=(
"+Q+")
","i
"),Cb={position:"absolute
",visibility:"hidden
",display:"block
"},Db={letterSpacing:"0",fontWeight:"400"},Eb=["Webkit
","O
","Moz
","ms
"];function Fb(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Eb.length;while(e--)if(b=Eb[e]+c,b in a)return b;return d}function Gb(a,b,c){var d=Ab.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px
"):b}function Hb(a,b,c,d,e){for(var f=c===(d?"border
":"content
")?4:"width
"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+R[f],!
0,e)),d?("content"===c&&(g-=n.css(a,"padding"+R[f],!
0,e)),"margin"!==c&&(g-=n.css(a,"border"+R[f]+"Width",!
0,e))):(g+=n.css(a,"padding"+R[f],!
0,e),"padding"!==c&&(g+=n.css(a,"border"+R[f]+"Width",!
0,e)));return g}function Ib(a,b,c){var d=!
0,
e="width"===b?a.offsetWidth:a.offsetHeight,f=wb(a),
g="border-box"===n.css(a,"boxSizing",!
1,f);if(
0>=e||null==e){if(e=xb(a,b,f),(
0>e||null==e)&&(e=a.style[b]),vb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||
0}return e+Hb(a,b,c||(g?"border":"content"),d,f)+"px"}function Jb(a,b){for(var c,d,e,f=[],g=
0,h=a.length;h
>g;g++)d=a[g],d.style&&(f[g]=L.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.
display=""),""===d.style.display&&S(d)&&(f[g]=L.access(d,"olddisplay",tb(d.nodeName)))):(e=S(d),"none"===c&&e||L.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=
0;h
>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xb(a,"opacity");return""===c?"
1":c}}}},cssNumber:{columnCount:!
0,fillOpacity:!
0,flexGrow:!
0,flexShrink:!
0,fontWeight:!
0,lineHeight:!
0,opacity:!
0,order:!
0,orphans:!
0,widows:!
0,zIndex:!
0,zoom:!
0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&
3!==a.nodeType&&
8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Fb(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void
0===c?g&&"get"in g&&void
0!==(e=g.get(a,!
1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Bb.exec(c))&&(c=(e[
1]+
1)*e[
2]+parseFloat(n.css(a,b)),
f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||
0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void
0===(c=g.set(a,c,d))||(i[b]=c)),void
0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Fb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!
0,c)),void
0===e&&(e=xb(a,b,d)),"normal"===e&&b in Db&&(e=Db[b]),""===c||c?(f=parseFloat(e),c===!
0||n.isNumeric(f)?f||
0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?zb.test(n.css(a,"display"))&&
0===a.offsetWidth?n.swap(a,Cb,function(){return Ib(a,b,d)}):Ib(a,b,d):void
0},set:function(a,c,d){var e=d&&wb(a);return Gb(a,c,d?Hb(a,b,d,"border-box"===n.css(a,"boxSizing",!
1,e),e):
0)}}}),n.cssHooks.marginRight=yb(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},xb,[a,"marginRight"]):void
0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=
0,e={},
f="string"==typeof c?c.split(" "):[c];
4>d;d++)e[a+R[d]+b]=f[d]||f[d-
2]||f[
0];return e}},ub.test(a)||(n.cssHooks[a+b].set=Gb)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=
0;if(n.isArray(b)){for(d=wb(a),e=b.length;e
>g;g++)f[b[g]]=n.css(a,b[g],!
1,d);return f}return void
0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length
>1)},show:function(){return Jb(this,!
0)},hide:function(){return Jb(this)},toggle:function(a){return
"boolean"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Kb(a,b,c,d,e){return new Kb.prototype.init(a,b,c,d,e)}n.Tween=Kb,Kb.prototype={constructor:Kb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||
"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?
"":
"px")},cur:function(){var a=Kb.propHooks[this.prop];return a&&a.get?a.get(this):Kb.propHooks._default.get(this)},run:function(a){var b,c=Kb.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,
0,
1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Kb.propHooks._default.set(this),this}},Kb.prototype.init.prototype=Kb.prototype,Kb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,
""),b&&
"auto"!==b?b:
0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Kb.propHooks.scrollTop=Kb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return
.5-Math.cos(a*Math.PI)/
2}},n.fx=Kb.prototype.init,n.fx.step={};var Lb,Mb,Nb=/^(?:toggle|show|hide)$/,Ob=new RegExp(
"^(?:([+-])=|)("+Q+
")([a-z%]*)$",
"i"),Pb=/queueHooks$/,Qb=[Vb],Rb={
"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Ob.exec(b),f=e&&e[
3]||(n.cssNumber[a]?
"":
"px"),g=(n.cssNumber[a]||
"px"!==f&&+d)&&Ob.exec(n.css(c.elem,a)),h=
1,i=
20;if(g&&g[
3]!==f){f=f||g[
3],e=e||[],g=+d||
1;do h=h||
".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&
1!==h&&--i)}return e&&(g=c.start=+g||+d||
0,c.unit=f,c.end=e[
1]?g+(e[
1]+
1)*e[
2]:+e[
2]),c}]};function Sb(){return setTimeout(function(){Lb=void
0}),Lb=n.now()}function Tb(a,b){var c,d=
0,e={height:a};for(b=b?
1:
0;
4>d;d+=
2-b)c=R[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ub(a,b,c){for(var d,e=(Rb[b]||[]).concat(Rb["*"]),f=
0,g=e.length;g
>f;f++)if(d=e[f].call(c,b,a))return d}function Vb(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=
0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),
1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),
k="none"===j?L.get(a,"olddisplay")||tb(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.
display="inline-block")),c.overflow&&(o.
overflow="hidden",l.always(function(){o.overflow=c.overflow[
0],o.overflowX=c.overflow[
1],o.overflowY=c.overflow[
2]}));for(d in b)if(e=b[d],Nb.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void
0===q[d])continue;p=!
0}m[d]=q&&q[d]||n.style(a,d)}else j=void
0;if(n.isEmptyObject(m))"inline"===("none"===j?tb(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=L.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ub(p?q[d]:
0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.
start="width"===d||"height"===d?
1:
0))}}function Wb(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[
1],f=a[c]=f[
0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function Xb(a,b,c){var d,e,f=
0,g=Qb.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!
1;for(var b=Lb||Sb(),c=Math.max(
0,j.startTime+j.duration-b),d=c/j.duration||
0,f=
1-d,g=
0,i=j.tweens.length;i
>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),
1>f&&i?c:(h.resolveWith(a,[j]),!
1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!
0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:Lb||Sb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=
0,d=b?j.tweens.length:
0;if(e)return this;for(e=!
0;d
>c;c++)j.tweens[c].run(
1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wb(k,j.opts.specialEasing);g
>f;f++)if(d=Qb[f].call(j,a,k,j.opts))return d;return n.map(k,Ub,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(Xb,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=
0,e=a.length;e
>d;d++)c=a[d],Rb[c]=Rb[c]||[],Rb[c].unshift(b)},prefilter:function(a,b){b?Qb.unshift(a):Qb.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?
0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!
0)&&(d.
queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css("opacity",
0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xb(this,n.extend({},a),f);(e||L.get(this,"finish"))&&b.stop(!
0)};return g.finish=g,e||f.queue===!
1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void
0),b&&a!==!
1&&this.queue(a||"fx",[]),this.each(function(){var b=!
0,e=null!=a&&a+"queueHooks",f=n.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!
1,f.splice(e,
1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!
1&&(a=a||"fx"),this.each(function(){var b,c=L.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:
0;for(c.finish=!
0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!
0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!
0),f.splice(b,
1));for(b=
0;g
>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Tb(b,!
0),a,d,e)}}),n.each({slideDown:Tb("show"),slideUp:Tb("hide"),slideToggle:Tb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=
0,c=n.timers;for(Lb=n.now();b
<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,
1);c.length||n.fx.stop(),Lb=void
0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=
13,n.fx.start=function(){Mb||(Mb=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(Mb),Mb=null},n.fx.speeds={slow:
600,fast:
200,_default:
400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||
"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a=l.createElement(
"input"),b=l.createElement(
"select"),c=b.appendChild(l.createElement(
"option"));a.
type=
"checkbox",k.
checkOn=
""!==a.value,k.optSelected=c.selected,b.disabled=!
0,k.optDisabled=!c.disabled,a=l.createElement(
"input"),a.
value=
"t",a.
type=
"radio",k.
radioValue=
"t"===a.value}();var Yb,Zb,$b=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return J(this,n.attr,a,b,arguments.length
>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&
3!==f&&
8!==f&&
2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(
1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Zb:Yb)),void
0===c?d&&
"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void
0:e):null!==c?d&&
"set"in d&&void
0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+
""),c):void n.removeAttr(a,b))
264 },removeAttr:function(a,b){var c,d,e=
0,f=b&&b.match(E);if(f&&
1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!
1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&
"radio"===b&&n.nodeName(a,
"input")){var c=a.value;return a.setAttribute(
"type",b),c&&(a.value=c),b}}}}}),Zb={set:function(a,b,c){return b===!
1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$b[b]||n.find.attr;$b[b]=function(a,b,d){var e,f;return d||(f=$b[b],$b[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$b[b]=f),e}});var _b=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length
>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{
"for":
"htmlFor",
"class":
"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&
3!==g&&
8!==g&&
2!==g)return f=
1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void
0!==c?e&&
"set"in e&&void
0!==(d=e.set(a,c,b))?d:a[b]=c:e&&
"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute(
"tabindex")||_b.test(a.nodeName)||a.href?a.tabIndex:-
1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each([
"tabIndex",
"readOnly",
"maxLength",
"cellSpacing",
"cellPadding",
"rowSpan",
"colSpan",
"useMap",
"frameBorder",
"contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var ac=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,
h=
"string"==typeof a&&a,i=
0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||
"").match(E)||[];j
>i;i++)if(c=this[i],d=
1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):" ")){f=
0;while(e=b[f++])d.indexOf(" "+e+" ")
<0&&(d+=e+
" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=
0===arguments.length||
"string"==typeof a&&a,i=
0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||
"").match(E)||[];j
>i;i++)if(c=this[i],d=
1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):"")){f=
0;while(e=b[f++])while(d.indexOf(" "+e+" ")
>=
0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=
0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||"boolean"===c)&&(this.className&&L.set(this,"__className__",this.className),this.className=this.className||a===!
1?"":L.get(this,"__className__")||"")})},hasClass:function(a){for(var
b=" "+a+" ",c=
0,d=this.length;d
>c;c++)if(
1===this[c].nodeType&&(" "+this[c].className+" ").replace(ac," ").indexOf(b)
>=
0)return!
0;return!
1}});var bc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[
0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;
1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?
e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void
0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void
0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(bc,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,
f="select-one"===a.type||
0>e,g=f?null:[],h=f?e+
1:d.length,i=
0>e?h:f?e:
0;h
>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)
>=
0)&&(c=!
0);return c||(a.selectedIndex=-
1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)
>=
0:void
0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length
>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return
1===arguments.length?this.off(a,
"**"):this.off(b,a||
"**",c)}});var cc=n.now(),dc=/\?/;n.parseJSON=function(a){return JSON.parse(a+
"")},n.parseXML=function(a){var b,c;if(!a||
"string"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,
"text/xml")}catch(d){b=void
0}return(!b||b.getElementsByTagName(
"parsererror").length)&&n.error(
"Invalid XML: "+a),b};var ec,fc,gc=/#.*$/,hc=/([?&])_=[^&]*/,ic=/^(.*?):[ \t]*([^\r\n]*)$/gm,jc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,kc=/^(?:GET|HEAD)$/,lc=/^\/\//,mc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,nc={},oc={},
pc=
"*/".concat(
"*");try{fc=location.href}catch(qc){fc=l.createElement(
"a"),fc.
href=
"",fc=fc.href}ec=mc.exec(fc.toLowerCase())||[];function rc(a){return function(b,c){
"string"!=typeof b&&(c=b,
b=
"*");var d,e=
0,f=b.toLowerCase().match(E)||[];if(n.isFunction(c))while(d=f[e++])
"+"===d[
0]?(d=d.slice(
1)||
"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function sc(a,b,c,d){var e={},f=a===oc;function g(h){var i;return e[h]=!
0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return
"string"!=typeof j||f||e[j]?f?!(i=j):void
0:(b.dataTypes.unshift(j),g(j),!
1)}),i}return g(b.dataTypes[
0])||!e[
"*"]&&g(
"*")}function tc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void
0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!
0,a,d),a}function uc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while(
"*"===i[
0])i.shift(),void
0===d&&(d=a.mimeType||b.getResponseHeader(
"Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[
0]in c)f=i[
0];else{for(e in c){if(!i[
0]||a.converters[e+
" "+i[
0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[
0]&&i.unshift(f),c[f]):void
0}function vc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[
1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if(
"*"===f)f=i;else if(
"*"!==i&&i!==f){if(g=j[i+
" "+f]||j[
"* "+f],!g)for(e in j)if(h=e.split(
" "),h[
1]===f&&(g=j[i+
" "+h[
0]]||j[
"* "+h[
0]])){g===!
0?g=j[e]:j[e]!==!
0&&(f=h[
0],k.unshift(h[
1]));break}if(g!==!
0)if(g&&a[
"throws"])b=g(b);else try{b=g(b)}catch(l){return{state:
"parsererror",error:g?l:
"No conversion from "+i+
" to "+f}}}return{state:
"success",data:b}}n.extend({active:
0,lastModified:{},etag:{},ajaxSettings:{url:fc,type:
"GET",isLocal:jc.test(ec[
1]),global:!
0,processData:!
0,async:!
0,contentType:
"application/x-www-form-urlencoded; charset=UTF-8",accepts:{
"*":pc,text:
"text/plain",html:
"text/html",xml:
"application/xml, text/xml",json:
"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:
"responseXML",text:
"responseText",json:
"responseJSON"},converters:{
"* text":String,
"text html":!
0,
"text json":n.parseJSON,
"text xml":n.parseXML},flatOptions:{url:!
0,context:!
0}},ajaxSetup:function(a,b){return b?tc(tc(a,n.ajaxSettings),b):tc(n.ajaxSettings,a)},ajaxPrefilter:rc(nc),ajaxTransport:rc(oc),ajax:function(a,b){
"object"==typeof a&&(b=a,a=void
0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks(
"once memory"),q=k.statusCode||{},r={},s={},t=
0,
u=
"canceled",v={readyState:
0,getResponseHeader:function(a){var b;if(
2===t){if(!f){f={};while(b=ic.exec(e))f[b[
1].toLowerCase()]=b[
2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return
2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(
2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(
0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||fc)+"").replace(gc,"").replace(lc,ec[
1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(h=mc.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[
1]===ec[
1]&&h[
2]===ec[
2]&&(h[
3]||("http:"===h[
1]?"
80":"
443"))===(ec[
3]||("http:"===ec[
1]?"
80":"
443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),sc(nc,k,b,v),
2===t)return v;i=k.global,i&&
0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!kc.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(dc.test(d)?"&":"?")+k.data,delete k.data),k.cache===!
1&&(k.url=hc.test(d)?d.replace(hc,"$
1_="+cc++):d+(dc.test(d)?"&":"?")+"
_="+cc++)),k.ifModified&&(n.lastModified[d]&&v.setRequestHeader("If-Modified-Since",n.lastModified[d]),n.etag[d]&&v.setRequestHeader("If-None-Match",n.etag[d])),(k.data&&k.hasContent&&k.contentType!==!
1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[
0]&&k.accepts[k.dataTypes[
0]]?k.accepts[k.dataTypes[
0]]+("*"!==k.dataTypes[
0]?", "+pc+"; q=
0.01":""):k.accepts["*"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!
1||
2===t))return v.abort();
u="abort";for(j in{success:
1,error:
1,complete:
1})v[j](k[j]);if(c=sc(oc,k,b,v)){v.readyState=
1,i&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout
>0&&(g=setTimeout(function(){v.abort(
"timeout")},k.timeout));try{t=
1,c.send(r,x)}catch(w){if(!(
2>t))throw w;x(-
1,w)}}else x(-
1,"No Transport");function x(a,b,f,h){var j,r,s,u,w,x=b;
2!==t&&(t=
2,g&&clearTimeout(g),c=void
0,e=h||"",v.readyState=a
>0?
4:
0,j=a
>=
200&&
300>a||
304===a,f&&(u=uc(k,v,f)),u=vc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[d]=w),w=v.getResponseHeader("etag"),w&&(n.etag[d]=w)),
204===a||"HEAD"===k.type?
x="nocontent":
304===a?
x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(
x="error",
0>a&&(a=
0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void
0,i&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void
0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void
0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!
1,global:!
1,"throws":!
0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[
0]&&(b=n(a,this[
0].ownerDocument).eq(
0).clone(!
0),this[
0].parentNode&&b.insertBefore(this[
0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=
0&&a.offsetHeight<=
0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var wc=/%
20/g,xc=/\[\]$/,yc=/\r?\n/g,zc=/^(?:submit|button|image|reset|file)$/i,Ac=/^(?:input|select|textarea|keygen)/i;function Bc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||xc.test(a)?d(a,e):Bc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Bc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void
0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Bc(c,a[c],b,e);return d.join("&").replace(wc,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Ac.test(this.nodeName)&&!zc.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(yc,"\r\n")}}):{name:b.name,value:c.replace(yc,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Cc=
0,Dc={},Ec={
0:
200,
1223:
204},Fc=n.ajaxSettings.xhr();a.ActiveXObject&&n(a).on("unload",function(){for(var a in Dc)Dc[a]()}),k.cors=!!Fc&&"withCredentials"in Fc,k.ajax=Fc=!!Fc,n.ajaxTransport(function(a){var b;return k.cors||Fc&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Cc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Dc[g],b=f.onload=f.onerror=null,"abort"===a?f.abort():"error"===a?d(f.status,f.statusText):d(Ec[f.status]||f.status,f.statusText,"string"==typeof f.responseText?{text:f.responseText}:void
0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b("error"),b=Dc[g]=b("abort");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void
0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void
0===a.cache&&(a.cache=!
1),a.crossDomain&&(a.
type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n("
<script>").prop({async:!0,charset:a.scriptCharset,src:a.url}).on("load error
",c=function(a){b.remove(),c=null,a&&e("error
"===a.type?404:200,a.type)}),l.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Gc=[],Hc=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback
",jsonpCallback:function(){var a=Gc.pop()||n.expando+"_
"+cc++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp
",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Hc.test(b.url)?"url
":"string
"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded
")&&Hc.test(b.data)&&"data
");return h||"jsonp
"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Hc,"$
1"+e):b.jsonp!==!1&&(b.url+=(dc.test(b.url)?"&
":"?
")+b.jsonp+"=
"+e),b.converters["script json
"]=function(){return g||n.error(e+" was not called
"),g[0]},b.dataTypes[0]="json
",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Gc.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script
"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string
"!=typeof a)return null;"boolean
"==typeof b&&(c=b,b=!1),b=b||l;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var Ic=n.fn.load;n.fn.load=function(a,b,c){if("string
"!=typeof a&&Ic)return Ic.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object
"==typeof b&&(e="POST
"),g.length>0&&n.ajax({url:a,type:e,dataType:"html
",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,f||[a.responseText,b,a])}),this},n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var Jc=a.document.documentElement;function Kc(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position
"),l=n(a),m={};"static
"===k&&(a.style.position="relative
"),h=l.offset(),f=n.css(a,"top
"),i=n.css(a,"left
"),j=("absolute
"===k||"fixed
"===k)&&(f+i).indexOf("auto
")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using
"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(typeof d.getBoundingClientRect!==U&&(e=d.getBoundingClientRect()),c=Kc(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed
"===n.css(c,"position
")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html
")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth
",!0),d.left+=n.css(a[0],"borderLeftWidth
",!0)),{top:b.top-d.top-n.css(c,"marginTop
",!0),left:b.left-d.left-n.css(c,"marginLeft
",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||Jc;while(a&&!n.nodeName(a,"html
")&&"static
"===n.css(a,"position
"))a=a.offsetParent;return a||Jc})}}),n.each({scrollLeft:"pageXOffset
",scrollTop:"pageYOffset
"},function(b,c){var d="pageYOffset
"===c;n.fn[b]=function(e){return J(this,function(b,e,f){var g=Kc(b);return void 0===f?g?g[c]:b[e]:void(g?g.scrollTo(d?a.pageXOffset:f,d?f:a.pageYOffset):b[e]=f)},b,e,arguments.length,null)}}),n.each(["top
","left
"],function(a,b){n.cssHooks[b]=yb(k.pixelPosition,function(a,c){return c?(c=xb(a,b),vb.test(c)?n(a).position()[b]+"px
":c):void 0})}),n.each({Height:"height
",Width:"width
"},function(a,b){n.each({padding:"inner
"+a,content:b,"":"outer
"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean
"!=typeof d),g=c||(d===!0||e===!0?"margin
":"border
");return J(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client
"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll
"+a],e["scroll
"+a],b.body["offset
"+a],e["offset
"+a],e["client
"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function
"==typeof define&&define.amd&&define("jquery
",[],function(){return n});var Lc=a.jQuery,Mc=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Mc),b&&a.jQuery===n&&(a.jQuery=Lc),n},typeof b===U&&(a.jQuery=a.$=n),n});
267 <!--<script src="https://maxcdn.bootstrapcdn.com/bootstrap/
3.2.0/js/bootstrap.min.js
"></script>-->
270 * Bootstrap v3.2.0 (http://getbootstrap.com)
271 * Copyright 2011-2014 Twitter, Inc.
272 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
274 if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void
0!==a.style[c])return{end:b[c]};return!
1}a.fn.emulateTransitionEnd=function(b){var c=!
1,d=this;a(this).one("bsTransitionEnd",function(){c=!
0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void
0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[
data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.
VERSION="
3.2.0",d.prototype.close=function(b){function c(){f.detach().trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",c).emulateTransitionEnd(
150):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),
f="object"==typeof b&
&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!
1};c.
VERSION="
3.2.0",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var
c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),d[e](null==f[b]?this.options[b]:f[b]),setTimeout(a.proxy(function(){"loadingText"==b?(this.isLoading=!
0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!
1,d.removeClass(c).removeAttr(c))},this),
0)},c.prototype.toggle=function(){var a=!
0,b=this.$element.closest('[
data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!
1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),
g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b).on("keydown.bs.carousel",a.proxy(this.keydown,this)),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.
VERSION="
3.2.0",c.DEFAULTS={interval:
5e3,pause:"hover",wrap:!
0},c.prototype.keydown=function(a){switch(a.which){case
37:this.prev();break;case
39:this.next();break;default:return}a.preventDefault()},c.prototype.cycle=function(b){return b||(this.paused=!
1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.to=function(b){var c=this,d=this.getItemIndex(this.$active=this.$element.find(".item.active"));return b
>this.$items.length-
1||
0>b?void
0:this.sliding?this.$element.one("slid.bs.carousel",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b
>d?"next":"prev",a(this.$items[b]))},c.prototype.pause=function(b){return b||(this.paused=!
0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!
0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void
0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void
0:this.slide("prev")},c.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,
g="next"==b?"left":"right",
h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}if(e.hasClass("active"))return this.sliding=!
1;var j=e[
0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:g});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!
0,f&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(e)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:g});return a.support.transition&&this.$element.hasClass("slide")?(e.addClass(b),e[
0].offsetWidth,d.addClass(g),e.addClass(g),d.one("bsTransitionEnd",function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!
1,setTimeout(function(){i.$element.trigger(m)},
0)}).emulateTransitionEnd(
1e3*d.css("transition-duration").slice(
0,-
1))):(d.removeClass("active"),e.addClass("active"),this.sliding=!
1,this.$element.trigger(m)),f&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!
1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}}),a(window).on("load",function(){a('[
data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b);!e&&f.toggle&&"show"==b&&(b=!b),e||d.data("bs.collapse",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};c.
VERSION="
3.2.0",c.DEFAULTS={toggle:!
0},c.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},c.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var c=a.Event("show.bs.collapse");if(this.$element.trigger(c),!c.isDefaultPrevented()){var d=this.$parent&&this.$parent.find("
> .panel
> .in");if(d&&d.length){var e=d.data("bs.collapse");if(e&&e.transitioning)return;b.call(d,"hide"),e||d.data("bs.collapse",null)}var f=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[f](
0),this.transitioning=
1;var g=function(){this.$element.removeClass("collapsing").addClass("collapse in")[f](""),this.transitioning=
0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return g.call(this);var h=a.camelCase(["scroll",f].join("-"));this.$element.one("bsTransitionEnd",a.proxy(g,this)).emulateTransitionEnd(
350)[f](this.$element[
0][h])}}},c.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[
0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=
1;var d=function(){this.transitioning=
0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?void this.$element[c](
0).one("bsTransitionEnd",a.proxy(d,this)).emulateTransitionEnd(
350):d.call(this)}}},c.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var d=a.fn.collapse;a.fn.collapse=b,a.fn.collapse.Constructor=c,a.fn.collapse.noConflict=function(){return a.fn.collapse=d,this},a(document).on("click.bs.collapse.data-api",'[
data-toggle="collapse"]',function(c){var d,e=a(this),f=e.attr("data-target")||c.preventDefault()||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""),g=a(f),h=g.data("bs.collapse"),i=h?"toggle":e.data(),j=e.attr("data-parent"),k=j&&a(j);h&&h.transitioning||(k&&k.find('[
data-toggle="collapse"][
data-parent="'+j+'"]').not(e).addClass("collapsed"),e[g.hasClass("in")?"addClass":"removeClass"]("collapsed")),b.call(g,i)})}(jQuery),+function(a){"use strict";function b(b){b&&
3===b.which||(a(e).remove(),a(f).each(function(){var d=c(a(this)),e={relatedTarget:this};d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown",e)),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown",e))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var
e=".dropdown-backdrop",f='[
data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.
VERSION="
3.2.0",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('
<div class=
"dropdown-backdrop"/>').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!
1}},g.prototype.keydown=function(b){if(/(
38|
40|
27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var e=c(d),g=e.hasClass("open");if(!g||g&&
27==b.keyCode)return
27==b.which&&e.find(f).trigger("focus"),d.trigger("click");var
h=" li:not(.divider):visible a",i=e.find('[
role="menu"]'+h+', [
role="listbox"]'+h);if(i.length){var j=i.index(i.filter(":focus"));
38==b.keyCode&&j
>0&&j--,
40==b.keyCode&&j
<i.length-
1&&j++,~j||(j=
0),i.eq(j).trigger(
"focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on(
"click.bs.dropdown.data-api",b).on(
"click.bs.dropdown.data-api",
".dropdown form",function(a){a.stopPropagation()}).on(
"click.bs.dropdown.data-api",f,g.prototype.toggle).on(
"keydown.bs.dropdown.data-api",f+', [
role=
"menu"], [
role=
"listbox"]',g.prototype.keydown)}(jQuery),+function(a){
"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data(
"bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),
"object"==typeof b&&b);f||e.data(
"bs.modal",f=new c(this,g)),
"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$backdrop=this.isShown=null,this.scrollbarWidth=
0,this.options.remote&&this.$element.find(
".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger(
"loaded.bs.modal")},this))};c.
VERSION=
"3.2.0",c.DEFAULTS={backdrop:!
0,keyboard:!
0,show:!
0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var c=this,d=a.Event(
"show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!
0,this.checkScrollbar(),this.$body.addClass(
"modal-open"),this.setScrollbar(),this.escape(),this.$element.on(
"click.dismiss.bs.modal",'[
data-dismiss=
"modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass(
"fade");c.$element.parent().length||c.$element.appendTo(c.$body),c.$element.show().scrollTop(
0),d&&c.$element[
0].offsetWidth,c.$element.addClass(
"in").attr(
"aria-hidden",!
1),c.enforceFocus();var e=a.Event(
"shown.bs.modal",{relatedTarget:b});d?c.$element.find(
".modal-dialog").one(
"bsTransitionEnd",function(){c.$element.trigger(
"focus").trigger(e)}).emulateTransitionEnd(
300):c.$element.trigger(
"focus").trigger(e)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event(
"hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!
1,this.$body.removeClass(
"modal-open"),this.resetScrollbar(),this.escape(),a(document).off(
"focusin.bs.modal"),this.$element.removeClass(
"in").attr(
"aria-hidden",!
0).off(
"click.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass(
"fade")?this.$element.one(
"bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(
300):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off(
"focusin.bs.modal").on(
"focusin.bs.modal",a.proxy(function(a){this.$element[
0]===a.target||this.$element.has(a.target).length||this.$element.trigger(
"focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on(
"keyup.dismiss.bs.modal",a.proxy(function(a){
27==a.which&&this.hide()},this)):this.isShown||this.$element.off(
"keyup.dismiss.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$element.trigger(
"hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var c=this,d=this.$element.hasClass(
"fade")?
"fade":
"";if(this.isShown&&this.options.backdrop){var e=a.support.transition&
&d;if(this.$backdrop=a('
<div class=
"modal-backdrop '+d+'" />').appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[
0].focus.call(this.$element[
0]):this.hide.call(this))},this)),e&&this.$backdrop[
0].offsetWidth,this.$backdrop.addClass("in"),!b)return;e?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(
150):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var f=function(){c.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",f).emulateTransitionEnd(
150):f()}else b&&b()},c.prototype.checkScrollbar=function(){document.body.clientWidth
>=window.innerWidth||(this.scrollbarWidth=this.scrollbarWidth||this.measureScrollbar())},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||
0,
10);this.scrollbarWidth&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right","")},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.
className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[
0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[
data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),
f="object"==typeof b&
&b;(e||"destroy"!=b)&&(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};c.
VERSION="
3.2.0",c.DEFAULTS={animation:!
0,placement:"top",selector:!
1,template:'
<div class=
"tooltip" role=
"tooltip"><div class=
"tooltip-arrow"></div><div class=
"tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:
0,html:!
1,container:!
1,viewport:{selector:"body",padding:
0}},c.prototype.init=function(b,c,d){this.enabled=!
0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var
h="hover"==g?"mouseenter":"focusin",
i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.
hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show()},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.
hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var c=a.contains(document.documentElement,this.$element[
0]);if(b.isDefaultPrevented()||!c)return;var d=this,e=this.tip(),f=this.getUID(this.type);this.setContent(),e.attr("id",f),this.$element.attr("aria-describedby",f),this.options.animation&&e.addClass("fade");var
g="function"==typeof this.options.placement?this.options.placement.call(this,e[
0],this.$element[
0]):this.options.placement,h=/\s?auto?\s?/i,i=h.test(g);i&&(g=g.replace(h,"")||"top"),e.detach().css({top:
0,left:
0,display:"block"}).addClass(g).data("bs."+this.type,this),this.options.container?e.appendTo(this.options.container):e.insertAfter(this.$element);var j=this.getPosition(),k=e[
0].offsetWidth,l=e[
0].offsetHeight;if(i){var m=g,n=this.$element.parent(),o=this.getPosition(n);
g="bottom"==g&&j.top+j.height+l-o.scroll
>o.height?"top":"top"==g&&j.top-o.scroll-l
<0?
"bottom":
"right"==g&&j.right+k
>o.width?"left":"left"==g&&j.left-k
<o.left?
"right":g,e.removeClass(m).addClass(g)}var p=this.getCalculatedOffset(g,j,k,l);this.applyPlacement(p,g);var q=function(){d.$element.trigger(
"shown.bs."+d.type),d.hoverState=null};a.support.transition&&this.$tip.hasClass(
"fade")?e.one(
"bsTransitionEnd",q).emulateTransitionEnd(
150):q()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[
0].offsetWidth,f=d[
0].offsetHeight,g=parseInt(d.css(
"margin-top"),
10),h=parseInt(d.css(
"margin-left"),
10);isNaN(g)&&(g=
0),isNaN(h)&&(h=
0),b.top=b.top+g,b.left=b.left+h,a.offset.setOffset(d[
0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),
0),d.addClass(
"in");var i=d[
0].offsetWidth,j=d[
0].offsetHeight;
"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=k.left?
2*k.left-e+i:
2*k.top-f+j,m=k.left?
"left":
"top",n=k.left?
"offsetWidth":
"offsetHeight";d.offset(b),this.replaceArrow(l,d[
0][n],m)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c,a?
50*(
1-a/b)+
"%":
"")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(
".tooltip-inner")[this.options.html?
"html":
"text"](b),a.removeClass(
"fade in top bottom left right")},c.prototype.hide=function(){function b(){
"in"!=c.hoverState&&d.detach(),c.$element.trigger(
"hidden.bs."+c.type)}var c=this,d=this.tip(),e=a.Event(
"hide.bs."+this.type);return this.$element.removeAttr(
"aria-describedby"),this.$element.trigger(e),e.isDefaultPrevented()?void
0:(d.removeClass(
"in"),a.support.transition&&this.$tip.hasClass(
"fade")?d.one(
"bsTransitionEnd",b).emulateTransitionEnd(
150):b(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr(
"title")||
"string"!=typeof a.attr(
"data-original-title"))&&a.attr(
"data-original-title",a.attr(
"title")||
"").attr(
"title",
"")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[
0],
d=
"BODY"==c.tagName;return a.extend({},
"function"==typeof c.getBoundingClientRect?c.getBoundingClientRect():null,{scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop(),width:d?a(window).width():b.outerWidth(),height:d?a(window).height():b.outerHeight()},d?{top:
0,left:
0}:b.offset())},c.prototype.getCalculatedOffset=function(a,b,c,d){return
"bottom"==a?{top:b.top+b.height,left:b.left+b.width/
2-c/
2}:
"top"==a?{top:b.top-d,left:b.left+b.width/
2-c/
2}:
"left"==a?{top:b.top+b.height/
2-d/
2,left:b.left-c}:{top:b.top+b.height/
2-d/
2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:
0,left:
0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||
0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h
<g.top?e.top=g.top-h:i
>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j
<g.left?e.left=g.left-j:k
>g.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[
0]):c.title)},c.prototype.getUID=function(a){do a+=~~(
1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.validate=function(){this.$element[
0].parentNode||(this.hide(),this.$element=null,this.options=null)},c.prototype.enable=function(){this.enabled=!
0},c.prototype.disable=function(){this.enabled=!
1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){clearTimeout(this.timeout),this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),
f="object"==typeof b&
&b;(e||"destroy"!=b)&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.
VERSION="
3.2.0",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'
<div class=
"popover" role=
"tooltip"><div class=
"arrow"></div><h3 class=
"popover-title"></h3><div class=
"popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").empty()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[
0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},c.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){var e=a.proxy(this.process,this);this.$body=a("body"),this.$scrollElement=a(a(c).is("body")?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li
> a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=
0,this.$scrollElement.on("scroll.bs.scrollspy",e),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),
f="object"==typeof c&
&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.
VERSION="
3.2.0",b.DEFAULTS={offset:
10},b.prototype.getScrollHeight=function(){return this.$scrollElement[
0].scrollHeight||Math.max(this.$body[
0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var
b="offset",c=
0;a.isWindow(this.$scrollElement[
0])||(
b="position",c=this.$scrollElement.scrollTop()),this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight();var d=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[b]().top+c,e]]||null}).sort(function(a,b){return a[
0]-b[
0]}).each(function(){d.offsets.push(this[
0]),d.targets.push(this[
1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b
>=d)return g!=(a=f[f.length-
1])&&this.activate(a);if(g&&b<=e[
0])return g!=(a=f[
0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b
>=e[a]&&(!e[a+
1]||b<=e[a+
1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parentsUntil(this.options.target,".active").removeClass("active");var c=this.selector+'[
data-target="'+b+'"],'+this.selector+'[
href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[
data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.
VERSION="
3.2.0",c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[
0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.closest("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},c.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("
> .dropdown-menu
> .active").removeClass("active"),b.addClass("active"),g?(b[
0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("
> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one("bsTransitionEnd",e).emulateTransitionEnd(
150):e(),f.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this},a(document).on("click.bs.tab.data-api",'[
data-toggle="tab"], [
data-toggle="pill"]',function(c){c.preventDefault(),b.call(a(this),"show")})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),
f="object"==typeof b&
&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};c.
VERSION="
3.2.0",c.
RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:
0,target:window},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),
1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=a(document).height(),d=this.$target.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top(this.$element)),"function"==typeof h&&(h=f.bottom(this.$element));var i=null!=this.unpin&&d+this.unpin<=e.top?!
1:null!=h&&e.top+this.$element.height()
>=b-h?"bottom":null!=g&&g
>=d?"top":!
1;if(this.affixed!==i){null!=this.unpin&&this.$element.css("top","");var
j="affix"+(i?"-"+i:""),k=a.Event(j+".bs.affix");this.$element.trigger(k),k.isDefaultPrevented()||(this.affixed=i,this.
unpin="bottom"==i?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(j).trigger(a.Event(j.replace("affix","affixed"))),"bottom"==i&&this.$element.offset({top:b-this.$element.height()-h}))}}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[
data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},d.offsetBottom&&(d.offset.bottom=d.offsetBottom),d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);
277 <!--<script src="/js/bitcoinjs-1-0-0.js"></script>-->
279 (function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.Bitcoin=e()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&
&require;if(!u&&a)return a(o,!
0);if(i)return i(o,!
0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][
0].call(f.exports,function(e){var n=t[o][
1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&
&require;for(var o=
0;o
<r.length;o++)s(r[o]);return s})({
1:[function(_dereq_,module,exports){
280 var assert = _dereq_('assert')
282 module.exports = BigInteger
284 // JavaScript engine analysis
285 var canary =
0xdeadbeefcafe;
286 var j_lm = ((canary&
0xffffff)==
0xefcafe);
288 // (public) Constructor
289 function BigInteger(a,b,c) {
290 if (!(this instanceof BigInteger)) {
291 return new BigInteger(a, b, c);
295 if(
"number" == typeof a) this.fromNumber(a,b,c);
296 else if(b == null &&
"string" != typeof a) this.fromString(a,
256);
297 else this.fromString(a,b);
301 var proto = BigInteger.prototype;
303 // return new, unset BigInteger
304 function nbi() { return new BigInteger(null); }
309 // am: Compute w_j += (x*this_i), propagate carries,
310 // c is initial carry, returns final carry.
311 // c <
3*dvalue, x <
2*dvalue, this_i < dvalue
312 // We need to select the fastest one that works in this environment.
314 // am1: use a single mult and divide to get the high bits,
315 // max digit bits should be
26 because
316 // max internal value =
2*dvalue^
2-
2*dvalue (<
2^
53)
317 function am1(i,x,w,j,c,n) {
319 var v = x*this[i++]+w[j]+c;
320 c = Math.floor(v/
0x4000000);
321 w[j++] = v
&0x3ffffff;
325 // am2 avoids a big mult-and-extract completely.
326 // Max digit bits should be <=
30 because we do bitwise ops
327 // on values up to
2*hdvalue^
2-hdvalue-
1 (<
2^
31)
328 function am2(i,x,w,j,c,n) {
329 var xl = x&
0x7fff, xh = x
>>15;
331 var l = this[i]
&0x7fff;
332 var h = this[i++]
>>15;
334 l = xl*l+((m&
0x7fff)<
<15)+w[j]+(c&
0x3fffffff);
335 c = (l
>>>30)+(m
>>>15)+xh*h+(c
>>>30);
336 w[j++] = l
&0x3fffffff;
340 // Alternately, set max digit bits to
28 since some
341 // browsers slow down when dealing with
32-bit numbers.
342 function am3(i,x,w,j,c,n) {
343 var xl = x&
0x3fff, xh = x
>>14;
345 var l = this[i]
&0x3fff;
346 var h = this[i++]
>>14;
348 l = xl*l+((m&
0x3fff)<
<14)+w[j]+c;
349 c = (l
>>28)+(m
>>14)+xh*h;
350 w[j++] = l
&0xfffffff;
356 BigInteger.prototype.am = am1;
360 if(j_lm && (navigator.appName ==
"Microsoft Internet Explorer")) {
361 BigInteger.prototype.am = am2;
364 else if(j_lm && (navigator.appName !=
"Netscape")) {
365 BigInteger.prototype.am = am1;
368 else { // Mozilla/Netscape seems to prefer am3
369 BigInteger.prototype.am = am3;
374 BigInteger.prototype.DB = dbits;
375 BigInteger.prototype.DM = ((
1<
<dbits)-
1);
376 var DV = BigInteger.prototype.DV = (
1<
<dbits);
379 BigInteger.prototype.FV = Math.pow(
2,BI_FP);
380 BigInteger.prototype.F1 = BI_FP-dbits;
381 BigInteger.prototype.F2 =
2*dbits-BI_FP;
384 var BI_RM =
"0123456789abcdefghijklmnopqrstuvwxyz";
385 var BI_RC = new Array();
387 rr =
"0".charCodeAt(
0);
388 for(vv =
0; vv <=
9; ++vv) BI_RC[rr++] = vv;
389 rr =
"a".charCodeAt(
0);
390 for(vv =
10; vv <
36; ++vv) BI_RC[rr++] = vv;
391 rr =
"A".charCodeAt(
0);
392 for(vv =
10; vv <
36; ++vv) BI_RC[rr++] = vv;
394 function int2char(n) { return BI_RM.charAt(n); }
395 function intAt(s,i) {
396 var c = BI_RC[s.charCodeAt(i)];
397 return (c==null)?-
1:c;
400 // (protected) copy this to r
401 function bnpCopyTo(r) {
402 for(var i = this.t-
1; i
>=
0; --i) r[i] = this[i];
407 // (protected) set from integer value x, -DV <= x < DV
408 function bnpFromInt(x) {
411 if(x
> 0) this[
0] = x;
412 else if(x < -
1) this[
0] = x+DV;
416 // return bigint initialized to value
417 function nbv(i) { var r = nbi(); r.fromInt(i); return r; }
419 // (protected) set from string and radix
420 function bnpFromString(s,b) {
425 else if(b ==
8) k =
3;
426 else if(b ==
256) k =
8; // byte array
427 else if(b ==
2) k =
1;
428 else if(b ==
32) k =
5;
429 else if(b ==
4) k =
2;
430 else { self.fromRadix(s,b); return; }
433 var i = s.length, mi = false, sh =
0;
435 var x = (k==
8)?s[i]&
0xff:intAt(s,i);
437 if(s.charAt(i) == "-") mi = true;
443 else if(sh+k
> self.DB) {
444 self[self.t-
1] |= (x&((
1<<(self.DB-sh))-
1))<
<sh;
445 self[self.t++] = (x
>>(self.DB-sh));
448 self[self.t-
1] |= x<
<sh;
450 if(sh
>= self.DB) sh -= self.DB;
452 if(k ==
8 && (s[
0]&
0x80) !=
0) {
454 if(sh
> 0) self[self.t-
1] |= ((
1<<(self.DB-sh))-
1)<
<sh;
457 if(mi) BigInteger.ZERO.subTo(self,self);
460 // (protected) clamp off excess high words
461 function bnpClamp() {
462 var c = this.s&this.DM;
463 while(this.t
> 0 && this[this.t-
1] == c) --this.t;
466 // (public) return string representation in given radix
467 function bnToString(b) {
469 if(self.s <
0) return
"-"+self.negate().toString(b);
472 else if(b ==
8) k =
3;
473 else if(b ==
2) k =
1;
474 else if(b ==
32) k =
5;
475 else if(b ==
4) k =
2;
476 else return self.toRadix(b);
477 var km = (
1<
<k)-
1, d, m = false, r =
"", i = self.t;
478 var p = self.DB-(i*self.DB)%k;
480 if(p < self.DB && (d = self[i]
>>p)
> 0) { m = true; r = int2char(d); }
483 d = (self[i]&((
1<
<p)-
1))<<(k-p);
484 d |= self[--i]
>>(p+=self.DB-k);
487 d = (self[i]
>>(p-=k))
&km;
488 if(p <=
0) { p += self.DB; --i; }
491 if(m) r += int2char(d);
498 function bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; }
501 function bnAbs() { return (this.s
<0)?this.negate():this; }
503 // (public) return + if this
> a, - if this < a,
0 if equal
504 function bnCompareTo(a) {
509 if(r !=
0) return (this.s
<0)?-r:r;
510 while(--i
>=
0) if((r=this[i]-a[i]) !=
0) return r;
514 // returns bit length of the integer x
517 if((t=x
>>>16) !=
0) { x = t; r +=
16; }
518 if((t=x
>>8) !=
0) { x = t; r +=
8; }
519 if((t=x
>>4) !=
0) { x = t; r +=
4; }
520 if((t=x
>>2) !=
0) { x = t; r +=
2; }
521 if((t=x
>>1) !=
0) { x = t; r +=
1; }
525 // (public) return the number of bits in
"this"
526 function bnBitLength() {
527 if(this.t <=
0) return
0;
528 return this.DB*(this.t-
1)+nbits(this[this.t-
1]^(this.s&this.DM));
531 // (protected) r = this << n*DB
532 function bnpDLShiftTo(n,r) {
534 for(i = this.t-
1; i
>=
0; --i) r[i+n] = this[i];
535 for(i = n-
1; i
>=
0; --i) r[i] =
0;
540 // (protected) r = this
>> n*DB
541 function bnpDRShiftTo(n,r) {
542 for(var i = n; i < this.t; ++i) r[i-n] = this[i];
543 r.t = Math.max(this.t-n,
0);
547 // (protected) r = this << n
548 function bnpLShiftTo(n,r) {
551 var cbs = self.DB-bs;
553 var ds = Math.floor(n/self.DB), c = (self.s<
<bs)&self.DM, i;
554 for(i = self.t-
1; i
>=
0; --i) {
555 r[i+ds+
1] = (self[i]
>>cbs)|c;
556 c = (self[i]&bm)<
<bs;
558 for(i = ds-
1; i
>=
0; --i) r[i] =
0;
565 // (protected) r = this
>> n
566 function bnpRShiftTo(n,r) {
569 var ds = Math.floor(n/self.DB);
570 if(ds
>= self.t) { r.t =
0; return; }
572 var cbs = self.DB-bs;
575 for(var i = ds+
1; i < self.t; ++i) {
576 r[i-ds-
1] |= (self[i]&bm)<
<cbs;
577 r[i-ds] = self[i]
>>bs;
579 if(bs
> 0) r[self.t-ds-
1] |= (self.s&bm)<
<cbs;
584 // (protected) r = this - a
585 function bnpSubTo(a,r) {
587 var i =
0, c =
0, m = Math.min(a.t,self.t);
612 if(c < -
1) r[i++] = self.DV+c;
613 else if(c
> 0) r[i++] = c;
618 // (protected) r = this * a, r != this,a (HAC
14.12)
619 //
"this" should be the larger one if appropriate.
620 function bnpMultiplyTo(a,r) {
621 var x = this.abs(), y = a.abs();
624 while(--i
>=
0) r[i] =
0;
625 for(i =
0; i < y.t; ++i) r[i+x.t] = x.am(
0,y[i],r,i,
0,x.t);
628 if(this.s != a.s) BigInteger.ZERO.subTo(r,r);
631 // (protected) r = this^
2, r != this (HAC
14.16)
632 function bnpSquareTo(r) {
635 while(--i
>=
0) r[i] =
0;
636 for(i =
0; i < x.t-
1; ++i) {
637 var c = x.am(i,x[i],r,
2*i,
0,
1);
638 if((r[i+x.t]+=x.am(i+
1,
2*x[i],r,
2*i+
1,c,x.t-i-
1))
>= x.DV) {
643 if(r.t
> 0) r[r.t-
1] += x.am(i,x[i],r,
2*i,
0,
1);
648 // (protected) divide this by m, quotient and remainder to q, r (HAC
14.20)
649 // r != q, this != m. q or r may be null.
650 function bnpDivRemTo(m,q,r) {
653 if(pm.t <=
0) return;
656 if(q != null) q.fromInt(
0);
657 if(r != null) self.copyTo(r);
660 if(r == null) r = nbi();
661 var y = nbi(), ts = self.s, ms = m.s;
662 var nsh = self.DB-nbits(pm[pm.t-
1]); // normalize modulus
663 if(nsh
> 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); }
664 else { pm.copyTo(y); pt.copyTo(r); }
668 var yt = y0*(
1<
<self.F1)+((ys
>1)?y[ys-
2]
>>self.F2:
0);
669 var d1 = self.FV/yt, d2 = (
1<
<self.F1)/yt, e =
1<
<self.F2;
670 var i = r.t, j = i-ys, t = (q==null)?nbi():q;
672 if(r.compareTo(t)
>=
0) {
676 BigInteger.ONE.dlShiftTo(ys,t);
677 t.subTo(y,y); // "negative" y so we can replace sub with am later
678 while(y.t < ys) y[y.t++] =
0;
680 // Estimate quotient digit
681 var qd = (r[--i]==y0)?self.DM:Math.floor(r[i]*d1+(r[i-
1]+e)*d2);
682 if((r[i]+=y.am(
0,qd,r,j,
0,ys)) < qd) { // Try it out
685 while(r[i] < --qd) r.subTo(t,r);
690 if(ts != ms) BigInteger.ZERO.subTo(q,q);
694 if(nsh
> 0) r.rShiftTo(nsh,r); // Denormalize remainder
695 if(ts <
0) BigInteger.ZERO.subTo(r,r);
698 // (public) this mod a
701 this.abs().divRemTo(a,null,r);
702 if(this.s <
0 && r.compareTo(BigInteger.ZERO)
> 0) a.subTo(r,r);
706 // Modular reduction using
"classic" algorithm
707 function Classic(m) { this.m = m; }
708 function cConvert(x) {
709 if(x.s <
0 || x.compareTo(this.m)
>=
0) return x.mod(this.m);
712 function cRevert(x) { return x; }
713 function cReduce(x) { x.divRemTo(this.m,null,x); }
714 function cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }
715 function cSqrTo(x,r) { x.squareTo(r); this.reduce(r); }
717 Classic.prototype.convert = cConvert;
718 Classic.prototype.revert = cRevert;
719 Classic.prototype.reduce = cReduce;
720 Classic.prototype.mulTo = cMulTo;
721 Classic.prototype.sqrTo = cSqrTo;
723 // (protected) return "-
1/this %
2^DB"; useful for Mont. reduction
727 // xy(
2-xy) = (
1+km)(
1-km)
728 // x[y(
2-xy)] =
1-k^
2m^
2
729 // x[y(
2-xy)] ==
1 (mod m^
2)
730 // if y is
1/x mod m, then y(
2-xy) is
1/x mod m^
2
731 // should reduce x and y(
2-xy) by m^
2 at each step to keep size bounded.
732 // JS multiply "overflows" differently from C/C++, so care is needed here.
733 function bnpInvDigit() {
734 if(this.t <
1) return
0;
736 if((x&
1) ==
0) return
0;
737 var y = x
&3; // y ==
1/x mod
2^
2
738 y = (y*(
2-(x&
0xf)*y))
&0xf; // y ==
1/x mod
2^
4
739 y = (y*(
2-(x&
0xff)*y))
&0xff; // y ==
1/x mod
2^
8
740 y = (y*(
2-(((x&
0xffff)*y)&
0xffff)))
&0xffff; // y ==
1/x mod
2^
16
741 // last step - calculate inverse mod DV directly;
742 // assumes
16 < DB <=
32 and assumes ability to handle
48-bit ints
743 y = (y*(
2-x*y%this.DV))%this.DV; // y ==
1/x mod
2^dbits
744 // we really want the negative inverse, and -DV < y < DV
745 return (y
>0)?this.DV-y:-y;
748 // Montgomery reduction
749 function Montgomery(m) {
751 this.mp = m.invDigit();
752 this.mpl = this.mp
&0x7fff;
753 this.mph = this.mp
>>15;
754 this.um = (
1<<(m.DB-
15))-
1;
759 function montConvert(x) {
761 x.abs().dlShiftTo(this.m.t,r);
762 r.divRemTo(this.m,null,r);
763 if(x.s <
0 && r.compareTo(BigInteger.ZERO)
> 0) this.m.subTo(r,r);
768 function montRevert(x) {
775 // x = x/R mod m (HAC
14.32)
776 function montReduce(x) {
777 while(x.t <= this.mt2) // pad x so am has enough room later
779 for(var i =
0; i < this.m.t; ++i) {
780 // faster way of calculating u0 = x[i]*mp mod DV
782 var u0 = (j*this.mpl+(((j*this.mph+(x[i]
>>15)*this.mpl)&this.um)<
<15))&x.DM;
783 // use am to combine the multiply-shift-add into one call
785 x[j] += this.m.am(
0,u0,x,i,
0,this.m.t);
787 while(x[j]
>= x.DV) { x[j] -= x.DV; x[++j]++; }
790 x.drShiftTo(this.m.t,x);
791 if(x.compareTo(this.m)
>=
0) x.subTo(this.m,x);
794 // r = "x^
2/R mod m"; x != r
795 function montSqrTo(x,r) { x.squareTo(r); this.reduce(r); }
797 // r = "xy/R mod m"; x,y != r
798 function montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }
800 Montgomery.prototype.convert = montConvert;
801 Montgomery.prototype.revert = montRevert;
802 Montgomery.prototype.reduce = montReduce;
803 Montgomery.prototype.mulTo = montMulTo;
804 Montgomery.prototype.sqrTo = montSqrTo;
806 // (protected) true iff this is even
807 function bnpIsEven() { return ((this.t
>0)?(this[
0]&
1):this.s) ==
0; }
809 // (protected) this^e, e <
2^
32, doing sqr and mul with
"r" (HAC
14.79)
810 function bnpExp(e,z) {
811 if(e
> 0xffffffff || e <
1) return BigInteger.ONE;
812 var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-
1;
816 if((e&(
1<
<i))
> 0) z.mulTo(r2,g,r);
817 else { var t = r; r = r2; r2 = t; }
822 // (public) this^e % m,
0 <= e <
2^
32
823 function bnModPowInt(e,m) {
825 if(e <
256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m);
826 return this.exp(e,z);
830 proto.copyTo = bnpCopyTo;
831 proto.fromInt = bnpFromInt;
832 proto.fromString = bnpFromString;
833 proto.clamp = bnpClamp;
834 proto.dlShiftTo = bnpDLShiftTo;
835 proto.drShiftTo = bnpDRShiftTo;
836 proto.lShiftTo = bnpLShiftTo;
837 proto.rShiftTo = bnpRShiftTo;
838 proto.subTo = bnpSubTo;
839 proto.multiplyTo = bnpMultiplyTo;
840 proto.squareTo = bnpSquareTo;
841 proto.divRemTo = bnpDivRemTo;
842 proto.invDigit = bnpInvDigit;
843 proto.isEven = bnpIsEven;
847 proto.toString = bnToString;
848 proto.negate = bnNegate;
850 proto.compareTo = bnCompareTo;
851 proto.bitLength = bnBitLength;
853 proto.modPowInt = bnModPowInt;
857 function nbi() { return new BigInteger(null); }
860 function bnClone() { var r = nbi(); this.copyTo(r); return r; }
862 // (public) return value as integer
863 function bnIntValue() {
865 if(this.t ==
1) return this[
0]-this.DV;
866 else if(this.t ==
0) return -
1;
868 else if(this.t ==
1) return this[
0];
869 else if(this.t ==
0) return
0;
870 // assumes
16 < DB <
32
871 return ((this[
1]&((
1<<(
32-this.DB))-
1))<
<this.DB)|this[
0];
874 // (public) return value as byte
875 function bnByteValue() { return (this.t==
0)?this.s:(this[
0]<
<24)
>>24; }
877 // (public) return value as short (assumes DB
>=
16)
878 function bnShortValue() { return (this.t==
0)?this.s:(this[
0]<
<16)
>>16; }
880 // (protected) return x s.t. r^x < DV
881 function bnpChunkSize(r) { return Math.floor(Math.LN2*this.DB/Math.log(r)); }
883 // (public)
0 if this ==
0,
1 if this
> 0
884 function bnSigNum() {
885 if(this.s <
0) return -
1;
886 else if(this.t <=
0 || (this.t ==
1 && this[
0] <=
0)) return
0;
890 // (protected) convert to radix string
891 function bnpToRadix(b) {
892 if(b == null) b =
10;
893 if(this.signum() ==
0 || b <
2 || b
> 36) return
"0";
894 var cs = this.chunkSize(b);
895 var a = Math.pow(b,cs);
896 var d = nbv(a), y = nbi(), z = nbi(), r =
"";
897 this.divRemTo(d,y,z);
898 while(y.signum()
> 0) {
899 r = (a+z.intValue()).toString(b).substr(
1) + r;
902 return z.intValue().toString(b) + r;
905 // (protected) convert from radix string
906 function bnpFromRadix(s,b) {
909 if(b == null) b =
10;
910 var cs = self.chunkSize(b);
911 var d = Math.pow(b,cs), mi = false, j =
0, w =
0;
912 for(var i =
0; i < s.length; ++i) {
915 if(s.charAt(i) ==
"-" && self.signum() ==
0) mi = true;
921 self.dAddOffset(w,
0);
927 self.dMultiply(Math.pow(b,j));
928 self.dAddOffset(w,
0);
930 if(mi) BigInteger.ZERO.subTo(self,self);
933 // (protected) alternate constructor
934 function bnpFromNumber(a,b,c) {
936 if(
"number" == typeof b) {
937 // new BigInteger(int,int,RNG)
938 if(a <
2) self.fromInt(
1);
940 self.fromNumber(a,c);
941 if(!self.testBit(a-
1)) // force MSB set
942 self.bitwiseTo(BigInteger.ONE.shiftLeft(a-
1),op_or,self);
943 if(self.isEven()) self.dAddOffset(
1,
0); // force odd
944 while(!self.isProbablePrime(b)) {
945 self.dAddOffset(
2,
0);
946 if(self.bitLength()
> a) self.subTo(BigInteger.ONE.shiftLeft(a-
1),self);
951 // new BigInteger(int,RNG)
952 var x = new Array(), t = a
&7;
955 if(t
> 0) x[
0] &= ((
1<
<t)-
1); else x[
0] =
0;
956 self.fromString(x,
256);
960 // (public) convert to bigendian byte array
961 function bnToByteArray() {
963 var i = self.t, r = new Array();
965 var p = self.DB-(i*self.DB)%
8, d, k =
0;
967 if(p < self.DB && (d = self[i]
>>p) != (self.s&self.DM)
>>p)
968 r[k++] = d|(self.s<<(self.DB-p));
971 d = (self[i]&((
1<
<p)-
1))<<(
8-p);
972 d |= self[--i]
>>(p+=self.DB-
8);
975 d = (self[i]
>>(p-=
8))
&0xff;
976 if(p <=
0) { p += self.DB; --i; }
978 if((d&
0x80) !=
0) d |= -
256;
979 if(k ===
0 && (self.s&
0x80) != (d&
0x80)) ++k;
980 if(k
> 0 || d != self.s) r[k++] = d;
986 function bnEquals(a) { return(this.compareTo(a)==
0); }
987 function bnMin(a) { return(this.compareTo(a)
<0)?this:a; }
988 function bnMax(a) { return(this.compareTo(a)
>0)?this:a; }
990 // (protected) r = this op a (bitwise)
991 function bnpBitwiseTo(a,op,r) {
993 var i, f, m = Math.min(a.t,self.t);
994 for(i =
0; i < m; ++i) r[i] = op(self[i],a[i]);
997 for(i = m; i < self.t; ++i) r[i] = op(self[i],f);
1002 for(i = m; i < a.t; ++i) r[i] = op(f,a[i]);
1005 r.s = op(self.s,a.s);
1009 // (public) this & a
1010 function op_and(x,y) { return x
&y; }
1011 function bnAnd(a) { var r = nbi(); this.bitwiseTo(a,op_and,r); return r; }
1013 // (public) this | a
1014 function op_or(x,y) { return x|y; }
1015 function bnOr(a) { var r = nbi(); this.bitwiseTo(a,op_or,r); return r; }
1017 // (public) this ^ a
1018 function op_xor(x,y) { return x^y; }
1019 function bnXor(a) { var r = nbi(); this.bitwiseTo(a,op_xor,r); return r; }
1021 // (public) this & ~a
1022 function op_andnot(x,y) { return x&~y; }
1023 function bnAndNot(a) { var r = nbi(); this.bitwiseTo(a,op_andnot,r); return r; }
1028 for(var i =
0; i < this.t; ++i) r[i] = this.DM&~this[i];
1034 // (public) this << n
1035 function bnShiftLeft(n) {
1037 if(n <
0) this.rShiftTo(-n,r); else this.lShiftTo(n,r);
1041 // (public) this
>> n
1042 function bnShiftRight(n) {
1044 if(n <
0) this.lShiftTo(-n,r); else this.rShiftTo(n,r);
1048 // return index of lowest
1-bit in x, x <
2^
31
1050 if(x ==
0) return -
1;
1052 if((x&
0xffff) ==
0) { x
>>=
16; r +=
16; }
1053 if((x&
0xff) ==
0) { x
>>=
8; r +=
8; }
1054 if((x&
0xf) ==
0) { x
>>=
4; r +=
4; }
1055 if((x&
3) ==
0) { x
>>=
2; r +=
2; }
1060 // (public) returns index of lowest
1-bit (or -
1 if none)
1061 function bnGetLowestSetBit() {
1062 for(var i =
0; i < this.t; ++i)
1063 if(this[i] !=
0) return i*this.DB+lbit(this[i]);
1064 if(this.s <
0) return this.t*this.DB;
1068 // return number of
1 bits in x
1071 while(x !=
0) { x &= x-
1; ++r; }
1075 // (public) return number of set bits
1076 function bnBitCount() {
1077 var r =
0, x = this.s&this.DM;
1078 for(var i =
0; i < this.t; ++i) r += cbit(this[i]^x);
1082 // (public) true iff nth bit is set
1083 function bnTestBit(n) {
1084 var j = Math.floor(n/this.DB);
1085 if(j
>= this.t) return(this.s!=
0);
1086 return((this[j]&(
1<<(n%this.DB)))!=
0);
1089 // (protected) this op (
1<
<n)
1090 function bnpChangeBit(n,op) {
1091 var r = BigInteger.ONE.shiftLeft(n);
1092 this.bitwiseTo(r,op,r);
1096 // (public) this | (
1<
<n)
1097 function bnSetBit(n) { return this.changeBit(n,op_or); }
1099 // (public) this & ~(
1<
<n)
1100 function bnClearBit(n) { return this.changeBit(n,op_andnot); }
1102 // (public) this ^ (
1<
<n)
1103 function bnFlipBit(n) { return this.changeBit(n,op_xor); }
1105 // (protected) r = this + a
1106 function bnpAddTo(a,r) {
1109 var i =
0, c =
0, m = Math.min(a.t,self.t);
1134 if(c
> 0) r[i++] = c;
1135 else if(c < -
1) r[i++] = self.DV+c;
1140 // (public) this + a
1141 function bnAdd(a) { var r = nbi(); this.addTo(a,r); return r; }
1143 // (public) this - a
1144 function bnSubtract(a) { var r = nbi(); this.subTo(a,r); return r; }
1146 // (public) this * a
1147 function bnMultiply(a) { var r = nbi(); this.multiplyTo(a,r); return r; }
1150 function bnSquare() { var r = nbi(); this.squareTo(r); return r; }
1152 // (public) this / a
1153 function bnDivide(a) { var r = nbi(); this.divRemTo(a,r,null); return r; }
1155 // (public) this % a
1156 function bnRemainder(a) { var r = nbi(); this.divRemTo(a,null,r); return r; }
1158 // (public) [this/a,this%a]
1159 function bnDivideAndRemainder(a) {
1160 var q = nbi(), r = nbi();
1161 this.divRemTo(a,q,r);
1162 return new Array(q,r);
1165 // (protected) this *= n, this
>=
0,
1 < n < DV
1166 function bnpDMultiply(n) {
1167 this[this.t] = this.am(
0,n-
1,this,
0,
0,this.t);
1172 // (protected) this += n << w words, this
>=
0
1173 function bnpDAddOffset(n,w) {
1175 while(this.t <= w) this[this.t++] =
0;
1177 while(this[w]
>= this.DV) {
1179 if(++w
>= this.t) this[this.t++] =
0;
1185 function NullExp() {}
1186 function nNop(x) { return x; }
1187 function nMulTo(x,y,r) { x.multiplyTo(y,r); }
1188 function nSqrTo(x,r) { x.squareTo(r); }
1190 NullExp.prototype.convert = nNop;
1191 NullExp.prototype.revert = nNop;
1192 NullExp.prototype.mulTo = nMulTo;
1193 NullExp.prototype.sqrTo = nSqrTo;
1196 function bnPow(e) { return this.exp(e,new NullExp()); }
1198 // (protected) r = lower n words of "this * a", a.t <= n
1199 // "this" should be the larger one if appropriate.
1200 function bnpMultiplyLowerTo(a,n,r) {
1201 var i = Math.min(this.t+a.t,n);
1202 r.s =
0; // assumes a,this
>=
0
1204 while(i
> 0) r[--i] =
0;
1206 for(j = r.t-this.t; i < j; ++i) r[i+this.t] = this.am(
0,a[i],r,i,
0,this.t);
1207 for(j = Math.min(a.t,n); i < j; ++i) this.am(
0,a[i],r,i,
0,n-i);
1211 // (protected) r =
"this * a" without lower n words, n
> 0
1212 //
"this" should be the larger one if appropriate.
1213 function bnpMultiplyUpperTo(a,n,r) {
1215 var i = r.t = this.t+a.t-n;
1216 r.s =
0; // assumes a,this
>=
0
1217 while(--i
>=
0) r[i] =
0;
1218 for(i = Math.max(n-this.t,
0); i < a.t; ++i)
1219 r[this.t+i-n] = this.am(n-i,a[i],r,
0,
0,this.t+i-n);
1224 // Barrett modular reduction
1225 function Barrett(m) {
1229 BigInteger.ONE.dlShiftTo(
2*m.t,this.r2);
1230 this.mu = this.r2.divide(m);
1234 function barrettConvert(x) {
1235 if(x.s <
0 || x.t
> 2*this.m.t) return x.mod(this.m);
1236 else if(x.compareTo(this.m) <
0) return x;
1237 else { var r = nbi(); x.copyTo(r); this.reduce(r); return r; }
1240 function barrettRevert(x) { return x; }
1242 // x = x mod m (HAC
14.42)
1243 function barrettReduce(x) {
1245 x.drShiftTo(self.m.t-
1,self.r2);
1246 if(x.t
> self.m.t+
1) { x.t = self.m.t+
1; x.clamp(); }
1247 self.mu.multiplyUpperTo(self.r2,self.m.t+
1,self.q3);
1248 self.m.multiplyLowerTo(self.q3,self.m.t+
1,self.r2);
1249 while(x.compareTo(self.r2) <
0) x.dAddOffset(
1,self.m.t+
1);
1251 while(x.compareTo(self.m)
>=
0) x.subTo(self.m,x);
1254 // r = x^
2 mod m; x != r
1255 function barrettSqrTo(x,r) { x.squareTo(r); this.reduce(r); }
1257 // r = x*y mod m; x,y != r
1258 function barrettMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }
1260 Barrett.prototype.convert = barrettConvert;
1261 Barrett.prototype.revert = barrettRevert;
1262 Barrett.prototype.reduce = barrettReduce;
1263 Barrett.prototype.mulTo = barrettMulTo;
1264 Barrett.prototype.sqrTo = barrettSqrTo;
1266 // (public) this^e % m (HAC
14.85)
1267 function bnModPow(e,m) {
1268 var i = e.bitLength(), k, r = nbv(
1), z;
1269 if(i <=
0) return r;
1270 else if(i <
18) k =
1;
1271 else if(i <
48) k =
3;
1272 else if(i <
144) k =
4;
1273 else if(i <
768) k =
5;
1280 z = new Montgomery(m);
1283 var g = new Array(), n =
3, k1 = k-
1, km = (
1<
<k)-
1;
1284 g[
1] = z.convert(this);
1290 z.mulTo(g2,g[n-
2],g[n]);
1295 var j = e.t-
1, w, is1 = true, r2 = nbi(), t;
1298 if(i
>= k1) w = (e[j]
>>(i-k1))
&km;
1300 w = (e[j]&((
1<<(i+
1))-
1))<<(k1-i);
1301 if(j
> 0) w |= e[j-
1]
>>(this.DB+i-k1);
1305 while((w&
1) ==
0) { w
>>=
1; --n; }
1306 if((i -= n) <
0) { i += this.DB; --j; }
1307 if(is1) { // ret ==
1, don't bother squaring or multiplying it
1312 while(n
> 1) { z.sqrTo(r,r2); z.sqrTo(r2,r); n -=
2; }
1313 if(n
> 0) z.sqrTo(r,r2); else { t = r; r = r2; r2 = t; }
1317 while(j
>=
0 && (e[j]&(
1<
<i)) ==
0) {
1318 z.sqrTo(r,r2); t = r; r = r2; r2 = t;
1319 if(--i <
0) { i = this.DB-
1; --j; }
1325 // (public) gcd(this,a) (HAC
14.54)
1327 var x = (this.s
<0)?this.negate():this.clone();
1328 var y = (a.s
<0)?a.negate():a.clone();
1329 if(x.compareTo(y) <
0) { var t = x; x = y; y = t; }
1330 var i = x.getLowestSetBit(), g = y.getLowestSetBit();
1337 while(x.signum()
> 0) {
1338 if((i = x.getLowestSetBit())
> 0) x.rShiftTo(i,x);
1339 if((i = y.getLowestSetBit())
> 0) y.rShiftTo(i,y);
1340 if(x.compareTo(y)
>=
0) {
1349 if(g
> 0) y.lShiftTo(g,y);
1353 // (protected) this % n, n <
2^
26
1354 function bnpModInt(n) {
1355 if(n <=
0) return
0;
1356 var d = this.DV%n, r = (this.s
<0)?n-
1:
0;
1358 if(d ==
0) r = this[
0]%n;
1359 else for(var i = this.t-
1; i
>=
0; --i) r = (d*r+this[i])%n;
1363 // (public)
1/this % m (HAC
14.61)
1364 function bnModInverse(m) {
1365 var ac = m.isEven();
1366 if((this.isEven() && ac) || m.signum() ==
0) return BigInteger.ZERO;
1367 var u = m.clone(), v = this.clone();
1368 var a = nbv(
1), b = nbv(
0), c = nbv(
0), d = nbv(
1);
1369 while(u.signum() !=
0) {
1373 if(!a.isEven() || !b.isEven()) { a.addTo(this,a); b.subTo(m,b); }
1376 else if(!b.isEven()) b.subTo(m,b);
1382 if(!c.isEven() || !d.isEven()) { c.addTo(this,c); d.subTo(m,d); }
1385 else if(!d.isEven()) d.subTo(m,d);
1388 if(u.compareTo(v)
>=
0) {
1390 if(ac) a.subTo(c,a);
1395 if(ac) c.subTo(a,c);
1399 if(v.compareTo(BigInteger.ONE) !=
0) return BigInteger.ZERO;
1400 if(d.compareTo(m)
>=
0) return d.subtract(m);
1401 if(d.signum() <
0) d.addTo(m,d); else return d;
1402 if(d.signum() <
0) return d.add(m); else return d;
1406 proto.chunkSize = bnpChunkSize;
1407 proto.toRadix = bnpToRadix;
1408 proto.fromRadix = bnpFromRadix;
1409 proto.fromNumber = bnpFromNumber;
1410 proto.bitwiseTo = bnpBitwiseTo;
1411 proto.changeBit = bnpChangeBit;
1412 proto.addTo = bnpAddTo;
1413 proto.dMultiply = bnpDMultiply;
1414 proto.dAddOffset = bnpDAddOffset;
1415 proto.multiplyLowerTo = bnpMultiplyLowerTo;
1416 proto.multiplyUpperTo = bnpMultiplyUpperTo;
1417 proto.modInt = bnpModInt;
1420 proto.clone = bnClone;
1421 proto.intValue = bnIntValue;
1422 proto.byteValue = bnByteValue;
1423 proto.shortValue = bnShortValue;
1424 proto.signum = bnSigNum;
1425 proto.toByteArray = bnToByteArray;
1426 proto.equals = bnEquals;
1432 proto.andNot = bnAndNot;
1434 proto.shiftLeft = bnShiftLeft;
1435 proto.shiftRight = bnShiftRight;
1436 proto.getLowestSetBit = bnGetLowestSetBit;
1437 proto.bitCount = bnBitCount;
1438 proto.testBit = bnTestBit;
1439 proto.setBit = bnSetBit;
1440 proto.clearBit = bnClearBit;
1441 proto.flipBit = bnFlipBit;
1443 proto.subtract = bnSubtract;
1444 proto.multiply = bnMultiply;
1445 proto.divide = bnDivide;
1446 proto.remainder = bnRemainder;
1447 proto.divideAndRemainder = bnDivideAndRemainder;
1448 proto.modPow = bnModPow;
1449 proto.modInverse = bnModInverse;
1453 // JSBN-specific extension
1454 proto.square = bnSquare;
1456 // BigInteger interfaces not implemented in jsbn:
1458 // BigInteger(int signum, byte[] magnitude)
1459 // double doubleValue()
1460 // float floatValue()
1463 // static BigInteger valueOf(long val)
1466 BigInteger.ZERO = nbv(
0);
1467 BigInteger.ONE = nbv(
1);
1468 BigInteger.valueOf = nbv;
1470 },{"assert":
4}],
2:[function(_dereq_,module,exports){
1472 // FIXME: Kind of a weird way to throw exceptions, consider removing
1473 var assert = _dereq_('assert')
1474 var BigInteger = _dereq_('./bigi')
1477 * Turns a byte array into a big integer.
1479 * This function will interpret a byte array as a big integer in big
1482 BigInteger.fromByteArrayUnsigned = function(byteArray) {
1483 // BigInteger expects a DER integer conformant byte array
1484 if (byteArray[
0] &
0x80) {
1485 return new BigInteger([
0].concat(byteArray))
1488 return new BigInteger(byteArray)
1492 * Returns a byte array representation of the big integer.
1494 * This returns the absolute of the contained value in big endian
1495 * form. A value of zero results in an empty array.
1497 BigInteger.prototype.toByteArrayUnsigned = function() {
1498 var byteArray = this.toByteArray()
1499 return byteArray[
0] ===
0 ? byteArray.slice(
1) : byteArray
1502 BigInteger.fromDERInteger = function(byteArray) {
1503 return new BigInteger(byteArray)
1507 * Converts BigInteger to a DER integer representation.
1509 * The format for this value uses the most significant bit as a sign
1510 * bit. If the most significant bit is already set and the integer is
1511 * positive, a
0x00 is prepended.
1529 BigInteger.prototype.toDERInteger = BigInteger.prototype.toByteArray
1531 BigInteger.fromBuffer = function(buffer) {
1532 // BigInteger expects a DER integer conformant byte array
1533 if (buffer[
0] &
0x80) {
1534 var byteArray = Array.prototype.slice.call(buffer)
1536 return new BigInteger([
0].concat(byteArray))
1539 return new BigInteger(buffer)
1542 BigInteger.fromHex = function(hex) {
1543 if (hex === '') return BigInteger.ZERO
1545 assert.equal(hex, hex.match(/^[A-Fa-f0-
9]+/), 'Invalid hex string')
1546 assert.equal(hex.length %
2,
0, 'Incomplete hex')
1547 return new BigInteger(hex,
16)
1550 BigInteger.prototype.toBuffer = function(size) {
1551 var byteArray = this.toByteArrayUnsigned()
1554 var padding = size - byteArray.length
1555 while (zeros.length < padding) zeros.push(
0)
1557 return new Buffer(zeros.concat(byteArray))
1560 BigInteger.prototype.toHex = function(size) {
1561 return this.toBuffer(size).toString('hex')
1564 }).call(this,_dereq_(
"buffer").Buffer)
1565 },{
"./bigi":
1,
"assert":
4,
"buffer":
8}],
3:[function(_dereq_,module,exports){
1566 var BigInteger = _dereq_('./bigi')
1569 _dereq_('./convert')
1571 module.exports = BigInteger
1572 },{
"./bigi":
1,
"./convert":
2}],
4:[function(_dereq_,module,exports){
1573 // http://wiki.commonjs.org/wiki/Unit_Testing/
1.0
1575 // THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
1577 // Originally from narwhal.js (http://narwhaljs.org)
1578 // Copyright (c)
2009 Thomas Robinson
<280north.com
>
1580 // Permission is hereby granted, free of charge, to any person obtaining a copy
1581 // of this software and associated documentation files (the 'Software'), to
1582 // deal in the Software without restriction, including without limitation the
1583 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
1584 // sell copies of the Software, and to permit persons to whom the Software is
1585 // furnished to do so, subject to the following conditions:
1587 // The above copyright notice and this permission notice shall be included in
1588 // all copies or substantial portions of the Software.
1590 // THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1591 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1592 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1593 // AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
1594 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
1595 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1597 // when used in node, this will actually load the util module we depend on
1598 // versus loading the builtin util module as happens otherwise
1599 // this is a bug in node module loading as far as I am concerned
1600 var util = _dereq_('util/');
1602 var pSlice = Array.prototype.slice;
1603 var hasOwn = Object.prototype.hasOwnProperty;
1605 //
1. The assert module provides functions that throw
1606 // AssertionError's when particular conditions are not met. The
1607 // assert module must conform to the following interface.
1609 var assert = module.exports = ok;
1611 //
2. The AssertionError is defined in assert.
1612 // new assert.AssertionError({ message: message,
1614 // expected: expected })
1616 assert.AssertionError = function AssertionError(options) {
1617 this.name = 'AssertionError';
1618 this.actual = options.actual;
1619 this.expected = options.expected;
1620 this.operator = options.operator;
1621 if (options.message) {
1622 this.message = options.message;
1623 this.generatedMessage = false;
1625 this.message = getMessage(this);
1626 this.generatedMessage = true;
1628 var stackStartFunction = options.stackStartFunction || fail;
1630 if (Error.captureStackTrace) {
1631 Error.captureStackTrace(this, stackStartFunction);
1634 // non v8 browsers so we can have a stacktrace
1635 var err = new Error();
1637 var out = err.stack;
1639 // try to strip useless frames
1640 var fn_name = stackStartFunction.name;
1641 var idx = out.indexOf('\n' + fn_name);
1643 // once we have located the function frame
1644 // we need to strip out everything before it (and its line)
1645 var next_line = out.indexOf('\n', idx +
1);
1646 out = out.substring(next_line +
1);
1654 // assert.AssertionError instanceof Error
1655 util.inherits(assert.AssertionError, Error);
1657 function replacer(key, value) {
1658 if (util.isUndefined(value)) {
1661 if (util.isNumber(value) && (isNaN(value) || !isFinite(value))) {
1662 return value.toString();
1664 if (util.isFunction(value) || util.isRegExp(value)) {
1665 return value.toString();
1670 function truncate(s, n) {
1671 if (util.isString(s)) {
1672 return s.length < n ? s : s.slice(
0, n);
1678 function getMessage(self) {
1679 return truncate(JSON.stringify(self.actual, replacer),
128) + ' ' +
1680 self.operator + ' ' +
1681 truncate(JSON.stringify(self.expected, replacer),
128);
1684 // At present only the three keys mentioned above are used and
1685 // understood by the spec. Implementations or sub modules can pass
1686 // other keys to the AssertionError's constructor - they will be
1689 //
3. All of the following functions must throw an AssertionError
1690 // when a corresponding condition is not met, with a message that
1691 // may be undefined if not provided. All assertion methods provide
1692 // both the actual and expected values to the assertion error for
1693 // display purposes.
1695 function fail(actual, expected, message, operator, stackStartFunction) {
1696 throw new assert.AssertionError({
1701 stackStartFunction: stackStartFunction
1705 // EXTENSION! allows for well behaved errors defined elsewhere.
1708 //
4. Pure assertion tests whether a value is truthy, as determined
1710 // assert.ok(guard, message_opt);
1711 // This statement is equivalent to assert.equal(true, !!guard,
1712 // message_opt);. To test strictly for the value true, use
1713 // assert.strictEqual(true, guard, message_opt);.
1715 function ok(value, message) {
1716 if (!value) fail(value, true, message, '==', assert.ok);
1720 //
5. The equality assertion tests shallow, coercive equality with
1722 // assert.equal(actual, expected, message_opt);
1724 assert.equal = function equal(actual, expected, message) {
1725 if (actual != expected) fail(actual, expected, message, '==', assert.equal);
1728 //
6. The non-equality assertion tests for whether two objects are not equal
1729 // with != assert.notEqual(actual, expected, message_opt);
1731 assert.notEqual = function notEqual(actual, expected, message) {
1732 if (actual == expected) {
1733 fail(actual, expected, message, '!=', assert.notEqual);
1737 //
7. The equivalence assertion tests a deep equality relation.
1738 // assert.deepEqual(actual, expected, message_opt);
1740 assert.deepEqual = function deepEqual(actual, expected, message) {
1741 if (!_deepEqual(actual, expected)) {
1742 fail(actual, expected, message, 'deepEqual', assert.deepEqual);
1746 function _deepEqual(actual, expected) {
1747 //
7.1. All identical values are equivalent, as determined by ===.
1748 if (actual === expected) {
1751 } else if (util.isBuffer(actual) && util.isBuffer(expected)) {
1752 if (actual.length != expected.length) return false;
1754 for (var i =
0; i < actual.length; i++) {
1755 if (actual[i] !== expected[i]) return false;
1760 //
7.2. If the expected value is a Date object, the actual value is
1761 // equivalent if it is also a Date object that refers to the same time.
1762 } else if (util.isDate(actual) && util.isDate(expected)) {
1763 return actual.getTime() === expected.getTime();
1765 //
7.3 If the expected value is a RegExp object, the actual value is
1766 // equivalent if it is also a RegExp object with the same source and
1767 // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
1768 } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
1769 return actual.source === expected.source &&
1770 actual.global === expected.global &&
1771 actual.multiline === expected.multiline &&
1772 actual.lastIndex === expected.lastIndex &&
1773 actual.ignoreCase === expected.ignoreCase;
1775 //
7.4. Other pairs that do not both pass typeof value == 'object',
1776 // equivalence is determined by ==.
1777 } else if (!util.isObject(actual) && !util.isObject(expected)) {
1778 return actual == expected;
1780 //
7.5 For all other Object pairs, including Array objects, equivalence is
1781 // determined by having the same number of owned properties (as verified
1782 // with Object.prototype.hasOwnProperty.call), the same set of keys
1783 // (although not necessarily the same order), equivalent values for every
1784 // corresponding key, and an identical 'prototype' property. Note: this
1785 // accounts for both named and indexed properties on Arrays.
1787 return objEquiv(actual, expected);
1791 function isArguments(object) {
1792 return Object.prototype.toString.call(object) == '[object Arguments]';
1795 function objEquiv(a, b) {
1796 if (util.isNullOrUndefined(a) || util.isNullOrUndefined(b))
1798 // an identical 'prototype' property.
1799 if (a.prototype !== b.prototype) return false;
1800 //~~~I've managed to break Object.keys through screwy arguments passing.
1801 // Converting to array solves the problem.
1802 if (isArguments(a)) {
1803 if (!isArguments(b)) {
1808 return _deepEqual(a, b);
1811 var ka = objectKeys(a),
1814 } catch (e) {//happens when one is a string literal and the other isn't
1817 // having the same number of owned properties (keys incorporates
1819 if (ka.length != kb.length)
1821 //the same set of keys (although not necessarily the same order),
1825 for (i = ka.length -
1; i
>=
0; i--) {
1829 //equivalent values for every corresponding key, and
1830 //~~~possibly expensive deep test
1831 for (i = ka.length -
1; i
>=
0; i--) {
1833 if (!_deepEqual(a[key], b[key])) return false;
1838 //
8. The non-equivalence assertion tests for any deep inequality.
1839 // assert.notDeepEqual(actual, expected, message_opt);
1841 assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
1842 if (_deepEqual(actual, expected)) {
1843 fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
1847 //
9. The strict equality assertion tests strict equality, as determined by ===.
1848 // assert.strictEqual(actual, expected, message_opt);
1850 assert.strictEqual = function strictEqual(actual, expected, message) {
1851 if (actual !== expected) {
1852 fail(actual, expected, message, '===', assert.strictEqual);
1856 //
10. The strict non-equality assertion tests for strict inequality, as
1857 // determined by !==. assert.notStrictEqual(actual, expected, message_opt);
1859 assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
1860 if (actual === expected) {
1861 fail(actual, expected, message, '!==', assert.notStrictEqual);
1865 function expectedException(actual, expected) {
1866 if (!actual || !expected) {
1870 if (Object.prototype.toString.call(expected) == '[object RegExp]') {
1871 return expected.test(actual);
1872 } else if (actual instanceof expected) {
1874 } else if (expected.call({}, actual) === true) {
1881 function _throws(shouldThrow, block, expected, message) {
1884 if (util.isString(expected)) {
1895 message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
1896 (message ? ' ' + message : '.');
1898 if (shouldThrow && !actual) {
1899 fail(actual, expected, 'Missing expected exception' + message);
1902 if (!shouldThrow && expectedException(actual, expected)) {
1903 fail(actual, expected, 'Got unwanted exception' + message);
1906 if ((shouldThrow && actual && expected &&
1907 !expectedException(actual, expected)) || (!shouldThrow && actual)) {
1912 //
11. Expected to throw an error:
1913 // assert.throws(block, Error_opt, message_opt);
1915 assert.throws = function(block, /*optional*/error, /*optional*/message) {
1916 _throws.apply(this, [true].concat(pSlice.call(arguments)));
1919 // EXTENSION! This is annoying to write outside this module.
1920 assert.doesNotThrow = function(block, /*optional*/message) {
1921 _throws.apply(this, [false].concat(pSlice.call(arguments)));
1924 assert.ifError = function(err) { if (err) {throw err;}};
1926 var objectKeys = Object.keys || function (obj) {
1928 for (var key in obj) {
1929 if (hasOwn.call(obj, key)) keys.push(key);
1934 },{"util/":
6}],
5:[function(_dereq_,module,exports){
1935 module.exports = function isBuffer(arg) {
1936 return arg && typeof arg === 'object'
1937 && typeof arg.copy === 'function'
1938 && typeof arg.fill === 'function'
1939 && typeof arg.readUInt8 === 'function';
1941 },{}],
6:[function(_dereq_,module,exports){
1942 (function (process,global){
1943 // Copyright Joyent, Inc. and other Node contributors.
1945 // Permission is hereby granted, free of charge, to any person obtaining a
1946 // copy of this software and associated documentation files (the
1947 // "Software"), to deal in the Software without restriction, including
1948 // without limitation the rights to use, copy, modify, merge, publish,
1949 // distribute, sublicense, and/or sell copies of the Software, and to permit
1950 // persons to whom the Software is furnished to do so, subject to the
1951 // following conditions:
1953 // The above copyright notice and this permission notice shall be included
1954 // in all copies or substantial portions of the Software.
1956 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
1957 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
1958 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
1959 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
1960 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
1961 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
1962 // USE OR OTHER DEALINGS IN THE SOFTWARE.
1964 var formatRegExp = /%[sdj%]/g;
1965 exports.format = function(f) {
1968 for (var i =
0; i < arguments.length; i++) {
1969 objects.push(inspect(arguments[i]));
1971 return objects.join(' ');
1975 var args = arguments;
1976 var len = args.length;
1977 var str = String(f).replace(formatRegExp, function(x) {
1978 if (x === '%%') return '%';
1979 if (i
>= len) return x;
1981 case '%s': return String(args[i++]);
1982 case '%d': return Number(args[i++]);
1985 return JSON.stringify(args[i++]);
1987 return '[Circular]';
1993 for (var x = args[i]; i < len; x = args[++i]) {
1994 if (isNull(x) || !isObject(x)) {
1997 str += ' ' + inspect(x);
2004 // Mark that a method should not be used.
2005 // Returns a modified function which warns once by default.
2006 // If --no-deprecation is set, then it is a no-op.
2007 exports.deprecate = function(fn, msg) {
2008 // Allow for deprecating things in the process of starting up.
2009 if (isUndefined(global.process)) {
2011 return exports.deprecate(fn, msg).apply(this, arguments);
2015 if (process.noDeprecation === true) {
2020 function deprecated() {
2022 if (process.throwDeprecation) {
2023 throw new Error(msg);
2024 } else if (process.traceDeprecation) {
2031 return fn.apply(this, arguments);
2040 exports.debuglog = function(set) {
2041 if (isUndefined(debugEnviron))
2042 debugEnviron = process.env.NODE_DEBUG || '';
2043 set = set.toUpperCase();
2045 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
2046 var pid = process.pid;
2047 debugs[set] = function() {
2048 var msg = exports.format.apply(exports, arguments);
2049 console.error('%s %d: %s', set, pid, msg);
2052 debugs[set] = function() {};
2060 * Echos the value of a value. Trys to print the value out
2061 * in the best way possible given the different types.
2063 * @param {Object} obj The object to print out.
2064 * @param {Object} opts Optional options object that alters the output.
2066 /* legacy: obj, showHidden, depth, colors*/
2067 function inspect(obj, opts) {
2071 stylize: stylizeNoColor
2074 if (arguments.length
>=
3) ctx.depth = arguments[
2];
2075 if (arguments.length
>=
4) ctx.colors = arguments[
3];
2076 if (isBoolean(opts)) {
2078 ctx.showHidden = opts;
2080 // got an "options" object
2081 exports._extend(ctx, opts);
2083 // set default options
2084 if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
2085 if (isUndefined(ctx.depth)) ctx.depth =
2;
2086 if (isUndefined(ctx.colors)) ctx.colors = false;
2087 if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
2088 if (ctx.colors) ctx.stylize = stylizeWithColor;
2089 return formatValue(ctx, obj, ctx.depth);
2091 exports.inspect = inspect;
2094 // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
2098 'underline' : [
4,
24],
2099 'inverse' : [
7,
27],
2106 'magenta' : [
35,
39],
2111 // Don't use 'blue' not visible on cmd.exe
2115 'boolean': 'yellow',
2116 'undefined': 'grey',
2120 // "name": intentionally not styling
2125 function stylizeWithColor(str, styleType) {
2126 var style = inspect.styles[styleType];
2129 return '\u001b[' + inspect.colors[style][
0] + 'm' + str +
2130 '\u001b[' + inspect.colors[style][
1] + 'm';
2137 function stylizeNoColor(str, styleType) {
2142 function arrayToHash(array) {
2145 array.forEach(function(val, idx) {
2153 function formatValue(ctx, value, recurseTimes) {
2154 // Provide a hook for user-specified inspect functions.
2155 // Check that value is an object with an inspect function on it
2156 if (ctx.customInspect &&
2158 isFunction(value.inspect) &&
2159 // Filter out the util module, it's inspect function is special
2160 value.inspect !== exports.inspect &&
2161 // Also filter out any prototype objects using the circular check.
2162 !(value.constructor && value.constructor.prototype === value)) {
2163 var ret = value.inspect(recurseTimes, ctx);
2164 if (!isString(ret)) {
2165 ret = formatValue(ctx, ret, recurseTimes);
2170 // Primitive types cannot have properties
2171 var primitive = formatPrimitive(ctx, value);
2176 // Look up the keys of the object.
2177 var keys = Object.keys(value);
2178 var visibleKeys = arrayToHash(keys);
2180 if (ctx.showHidden) {
2181 keys = Object.getOwnPropertyNames(value);
2184 // IE doesn't make error fields non-enumerable
2185 // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs
.94).aspx
2187 && (keys.indexOf('message')
>=
0 || keys.indexOf('description')
>=
0)) {
2188 return formatError(value);
2191 // Some type of object without properties can be shortcutted.
2192 if (keys.length ===
0) {
2193 if (isFunction(value)) {
2194 var name = value.name ? ': ' + value.name : '';
2195 return ctx.stylize('[Function' + name + ']', 'special');
2197 if (isRegExp(value)) {
2198 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
2200 if (isDate(value)) {
2201 return ctx.stylize(Date.prototype.toString.call(value), 'date');
2203 if (isError(value)) {
2204 return formatError(value);
2208 var base = '', array = false, braces = ['{', '}'];
2210 // Make Array say that they are Array
2211 if (isArray(value)) {
2213 braces = ['[', ']'];
2216 // Make functions say that they are functions
2217 if (isFunction(value)) {
2218 var n = value.name ? ': ' + value.name : '';
2219 base = ' [Function' + n + ']';
2222 // Make RegExps say that they are RegExps
2223 if (isRegExp(value)) {
2224 base = ' ' + RegExp.prototype.toString.call(value);
2227 // Make dates with properties first say the date
2228 if (isDate(value)) {
2229 base = ' ' + Date.prototype.toUTCString.call(value);
2232 // Make error with message first say the error
2233 if (isError(value)) {
2234 base = ' ' + formatError(value);
2237 if (keys.length ===
0 && (!array || value.length ==
0)) {
2238 return braces[
0] + base + braces[
1];
2241 if (recurseTimes <
0) {
2242 if (isRegExp(value)) {
2243 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
2245 return ctx.stylize('[Object]', 'special');
2249 ctx.seen.push(value);
2253 output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
2255 output = keys.map(function(key) {
2256 return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
2262 return reduceToSingleString(output, base, braces);
2266 function formatPrimitive(ctx, value) {
2267 if (isUndefined(value))
2268 return ctx.stylize('undefined', 'undefined');
2269 if (isString(value)) {
2270 var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
2271 .replace(/'/g, "\\'")
2272 .replace(/\\"/g, '"') + '\'';
2273 return ctx.stylize(simple, 'string');
2275 if (isNumber(value))
2276 return ctx.stylize('' + value, 'number');
2277 if (isBoolean(value))
2278 return ctx.stylize('' + value, 'boolean');
2279 // For some reason typeof null is "object", so special case here.
2281 return ctx.stylize('null', 'null');
2285 function formatError(value) {
2286 return '[' + Error.prototype.toString.call(value) + ']';
2290 function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
2292 for (var i =
0, l = value.length; i < l; ++i) {
2293 if (hasOwnProperty(value, String(i))) {
2294 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
2300 keys.forEach(function(key) {
2301 if (!key.match(/^\d+$/)) {
2302 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
2310 function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
2311 var name, str, desc;
2312 desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
2315 str = ctx.stylize('[Getter/Setter]', 'special');
2317 str = ctx.stylize('[Getter]', 'special');
2321 str = ctx.stylize('[Setter]', 'special');
2324 if (!hasOwnProperty(visibleKeys, key)) {
2325 name = '[' + key + ']';
2328 if (ctx.seen.indexOf(desc.value) <
0) {
2329 if (isNull(recurseTimes)) {
2330 str = formatValue(ctx, desc.value, null);
2332 str = formatValue(ctx, desc.value, recurseTimes -
1);
2334 if (str.indexOf('\n')
> -
1) {
2336 str = str.split('\n').map(function(line) {
2338 }).join('\n').substr(
2);
2340 str = '\n' + str.split('\n').map(function(line) {
2346 str = ctx.stylize('[Circular]', 'special');
2349 if (isUndefined(name)) {
2350 if (array && key.match(/^\d+$/)) {
2353 name = JSON.stringify('' + key);
2354 if (name.match(/^"([a-zA-Z_][a-zA-Z_0-
9]*)"$/)) {
2355 name = name.substr(
1, name.length -
2);
2356 name = ctx.stylize(name, 'name');
2358 name = name.replace(/'/g, "\\'")
2359 .replace(/\\"/g, '"')
2360 .replace(/(^"|"$)/g, "'");
2361 name = ctx.stylize(name, 'string');
2365 return name + ': ' + str;
2369 function reduceToSingleString(output, base, braces) {
2370 var numLinesEst =
0;
2371 var length = output.reduce(function(prev, cur) {
2373 if (cur.indexOf('\n')
>=
0) numLinesEst++;
2374 return prev + cur.replace(/\u001b\[\d\d?m/g, '').length +
1;
2379 (base === '' ? '' : base + '\n ') +
2381 output.join(',\n ') +
2386 return braces[
0] + base + ' ' + output.join(', ') + ' ' + braces[
1];
2390 // NOTE: These type checking functions intentionally don't use `instanceof`
2391 // because it is fragile and can be easily faked with `Object.create()`.
2392 function isArray(ar) {
2393 return Array.isArray(ar);
2395 exports.isArray = isArray;
2397 function isBoolean(arg) {
2398 return typeof arg === 'boolean';
2400 exports.isBoolean = isBoolean;
2402 function isNull(arg) {
2403 return arg === null;
2405 exports.isNull = isNull;
2407 function isNullOrUndefined(arg) {
2410 exports.isNullOrUndefined = isNullOrUndefined;
2412 function isNumber(arg) {
2413 return typeof arg === 'number';
2415 exports.isNumber = isNumber;
2417 function isString(arg) {
2418 return typeof arg === 'string';
2420 exports.isString = isString;
2422 function isSymbol(arg) {
2423 return typeof arg === 'symbol';
2425 exports.isSymbol = isSymbol;
2427 function isUndefined(arg) {
2428 return arg === void
0;
2430 exports.isUndefined = isUndefined;
2432 function isRegExp(re) {
2433 return isObject(re) && objectToString(re) === '[object RegExp]';
2435 exports.isRegExp = isRegExp;
2437 function isObject(arg) {
2438 return typeof arg === 'object' && arg !== null;
2440 exports.isObject = isObject;
2442 function isDate(d) {
2443 return isObject(d) && objectToString(d) === '[object Date]';
2445 exports.isDate = isDate;
2447 function isError(e) {
2448 return isObject(e) &&
2449 (objectToString(e) === '[object Error]' || e instanceof Error);
2451 exports.isError = isError;
2453 function isFunction(arg) {
2454 return typeof arg === 'function';
2456 exports.isFunction = isFunction;
2458 function isPrimitive(arg) {
2459 return arg === null ||
2460 typeof arg === 'boolean' ||
2461 typeof arg === 'number' ||
2462 typeof arg === 'string' ||
2463 typeof arg === 'symbol' || // ES6 symbol
2464 typeof arg === 'undefined';
2466 exports.isPrimitive = isPrimitive;
2468 exports.isBuffer = _dereq_('./support/isBuffer');
2470 function objectToString(o) {
2471 return Object.prototype.toString.call(o);
2476 return n <
10 ? '
0' + n.toString(
10) : n.toString(
10);
2480 var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
2481 'Oct', 'Nov', 'Dec'];
2484 function timestamp() {
2486 var time = [pad(d.getHours()),
2487 pad(d.getMinutes()),
2488 pad(d.getSeconds())].join(':');
2489 return [d.getDate(), months[d.getMonth()], time].join(' ');
2493 // log is just a thin wrapper to console.log that prepends a timestamp
2494 exports.log = function() {
2495 console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
2500 * Inherit the prototype methods from one constructor into another.
2502 * The Function.prototype.inherits from lang.js rewritten as a standalone
2503 * function (not on Function.prototype). NOTE: If this file is to be loaded
2504 * during bootstrapping this function needs to be rewritten using some native
2505 * functions as prototype setup using normal JavaScript does not work as
2506 * expected during bootstrapping (see mirror.js in r114903).
2508 * @param {function} ctor Constructor function which needs to inherit the
2510 * @param {function} superCtor Constructor function to inherit prototype from.
2512 exports.inherits = _dereq_('inherits');
2514 exports._extend = function(origin, add) {
2515 // Don't do anything if add isn't an object
2516 if (!add || !isObject(add)) return origin;
2518 var keys = Object.keys(add);
2519 var i = keys.length;
2521 origin[keys[i]] = add[keys[i]];
2526 function hasOwnProperty(obj, prop) {
2527 return Object.prototype.hasOwnProperty.call(obj, prop);
2530 }).call(this,_dereq_(
"FWaASH"),typeof self !==
"undefined" ? self : typeof window !==
"undefined" ? window : {})
2531 },{
"./support/isBuffer":
5,
"FWaASH":
12,
"inherits":
11}],
7:[function(_dereq_,module,exports){
2533 },{}],
8:[function(_dereq_,module,exports){
2535 * The buffer module from node.js, for the browser.
2537 * at author Feross Aboukhadijeh
<feross@feross.org
> <http://feross.org
>
2541 var base64 = _dereq_('base64-js')
2542 var ieee754 = _dereq_('ieee754')
2544 exports.Buffer = Buffer
2545 exports.SlowBuffer = Buffer
2546 exports.INSPECT_MAX_BYTES =
50
2547 Buffer.poolSize =
8192
2550 * If `Buffer._useTypedArrays`:
2551 * === true Use Uint8Array implementation (fastest)
2552 * === false Use Object implementation (compatible down to IE6)
2554 Buffer._useTypedArrays = (function () {
2555 // Detect if browser supports Typed Arrays. Supported browsers are IE
10+, Firefox
4+,
2556 // Chrome
7+, Safari
5.1+, Opera
11.6+, iOS
4.2+. If the browser does not support adding
2557 // properties to `Uint8Array` instances, then that's the same as no `Uint8Array` support
2558 // because we need to be able to add all the node Buffer API methods. This is an issue
2559 // in Firefox
4-
29. Now fixed: https://bugzilla.mozilla.org/show_bug.cgi?id=
695438
2561 var buf = new ArrayBuffer(
0)
2562 var arr = new Uint8Array(buf)
2563 arr.foo = function () { return
42 }
2564 return
42 === arr.foo() &&
2565 typeof arr.subarray === 'function' // Chrome
9-
10 lack `subarray`
2575 * The Buffer constructor returns instances of `Uint8Array` that are augmented
2576 * with function properties for all the node `Buffer` API functions. We use
2577 * `Uint8Array` so that square bracket notation works as expected -- it returns
2580 * By augmenting the instances, we can avoid modifying the `Uint8Array`
2583 function Buffer (subject, encoding, noZero) {
2584 if (!(this instanceof Buffer))
2585 return new Buffer(subject, encoding, noZero)
2587 var type = typeof subject
2589 if (encoding === 'base64' && type === 'string') {
2590 subject = base64clean(subject)
2595 if (type === 'number')
2596 length = coerce(subject)
2597 else if (type === 'string')
2598 length = Buffer.byteLength(subject, encoding)
2599 else if (type === 'object')
2600 length = coerce(subject.length) // assume that object is array-like
2602 throw new Error('First argument needs to be a number, array or string.')
2605 if (Buffer._useTypedArrays) {
2606 // Preferred: Return an augmented `Uint8Array` instance for best performance
2607 buf = Buffer._augment(new Uint8Array(length))
2609 // Fallback: Return THIS instance of Buffer (created by `new`)
2612 buf._isBuffer = true
2616 if (Buffer._useTypedArrays && typeof subject.byteLength === 'number') {
2617 // Speed optimization -- use set if we're copying from a typed array
2619 } else if (isArrayish(subject)) {
2620 // Treat array-ish objects as a byte array
2621 if (Buffer.isBuffer(subject)) {
2622 for (i =
0; i < length; i++)
2623 buf[i] = subject.readUInt8(i)
2625 for (i =
0; i < length; i++)
2626 buf[i] = ((subject[i] %
256) +
256) %
256
2628 } else if (type === 'string') {
2629 buf.write(subject,
0, encoding)
2630 } else if (type === 'number' && !Buffer._useTypedArrays && !noZero) {
2631 for (i =
0; i < length; i++) {
2642 Buffer.isEncoding = function (encoding) {
2643 switch (String(encoding).toLowerCase()) {
2661 Buffer.isBuffer = function (b) {
2662 return !!(b !== null && b !== undefined && b._isBuffer)
2665 Buffer.byteLength = function (str, encoding) {
2667 str = str.toString()
2668 switch (encoding || 'utf8') {
2670 ret = str.length /
2
2674 ret = utf8ToBytes(str).length
2682 ret = base64ToBytes(str).length
2688 ret = str.length *
2
2691 throw new Error('Unknown encoding')
2696 Buffer.concat = function (list, totalLength) {
2697 assert(isArray(list), 'Usage: Buffer.concat(list[, length])')
2699 if (list.length ===
0) {
2700 return new Buffer(
0)
2701 } else if (list.length ===
1) {
2706 if (totalLength === undefined) {
2708 for (i =
0; i < list.length; i++) {
2709 totalLength += list[i].length
2713 var buf = new Buffer(totalLength)
2715 for (i =
0; i < list.length; i++) {
2723 Buffer.compare = function (a, b) {
2724 assert(Buffer.isBuffer(a) && Buffer.isBuffer(b), 'Arguments must be Buffers')
2727 for (var i =
0, len = Math.min(x, y); i < len && a[i] === b[i]; i++) {}
2741 // BUFFER INSTANCE METHODS
2742 // =======================
2744 function hexWrite (buf, string, offset, length) {
2745 offset = Number(offset) ||
0
2746 var remaining = buf.length - offset
2750 length = Number(length)
2751 if (length
> remaining) {
2756 // must be an even number of digits
2757 var strLen = string.length
2758 assert(strLen %
2 ===
0, 'Invalid hex string')
2760 if (length
> strLen /
2) {
2763 for (var i =
0; i < length; i++) {
2764 var byte = parseInt(string.substr(i *
2,
2),
16)
2765 assert(!isNaN(byte), 'Invalid hex string')
2766 buf[offset + i] = byte
2771 function utf8Write (buf, string, offset, length) {
2772 var charsWritten = blitBuffer(utf8ToBytes(string), buf, offset, length)
2776 function asciiWrite (buf, string, offset, length) {
2777 var charsWritten = blitBuffer(asciiToBytes(string), buf, offset, length)
2781 function binaryWrite (buf, string, offset, length) {
2782 return asciiWrite(buf, string, offset, length)
2785 function base64Write (buf, string, offset, length) {
2786 var charsWritten = blitBuffer(base64ToBytes(string), buf, offset, length)
2790 function utf16leWrite (buf, string, offset, length) {
2791 var charsWritten = blitBuffer(utf16leToBytes(string), buf, offset, length)
2795 Buffer.prototype.write = function (string, offset, length, encoding) {
2796 // Support both (string, offset, length, encoding)
2797 // and the legacy (string, encoding, offset, length)
2798 if (isFinite(offset)) {
2799 if (!isFinite(length)) {
2810 offset = Number(offset) ||
0
2811 var remaining = this.length - offset
2815 length = Number(length)
2816 if (length
> remaining) {
2820 encoding = String(encoding || 'utf8').toLowerCase()
2825 ret = hexWrite(this, string, offset, length)
2829 ret = utf8Write(this, string, offset, length)
2832 ret = asciiWrite(this, string, offset, length)
2835 ret = binaryWrite(this, string, offset, length)
2838 ret = base64Write(this, string, offset, length)
2844 ret = utf16leWrite(this, string, offset, length)
2847 throw new Error('Unknown encoding')
2852 Buffer.prototype.toString = function (encoding, start, end) {
2855 encoding = String(encoding || 'utf8').toLowerCase()
2856 start = Number(start) ||
0
2857 end = (end === undefined) ? self.length : Number(end)
2859 // Fastpath empty strings
2866 ret = hexSlice(self, start, end)
2870 ret = utf8Slice(self, start, end)
2873 ret = asciiSlice(self, start, end)
2876 ret = binarySlice(self, start, end)
2879 ret = base64Slice(self, start, end)
2885 ret = utf16leSlice(self, start, end)
2888 throw new Error('Unknown encoding')
2893 Buffer.prototype.toJSON = function () {
2896 data: Array.prototype.slice.call(this._arr || this,
0)
2900 Buffer.prototype.equals = function (b) {
2901 assert(Buffer.isBuffer(b), 'Argument must be a Buffer')
2902 return Buffer.compare(this, b) ===
0
2905 Buffer.prototype.compare = function (b) {
2906 assert(Buffer.isBuffer(b), 'Argument must be a Buffer')
2907 return Buffer.compare(this, b)
2910 // copy(targetBuffer, targetStart=
0, sourceStart=
0, sourceEnd=buffer.length)
2911 Buffer.prototype.copy = function (target, target_start, start, end) {
2914 if (!start) start =
0
2915 if (!end && end !==
0) end = this.length
2916 if (!target_start) target_start =
0
2918 // Copy
0 bytes; we're done
2919 if (end === start) return
2920 if (target.length ===
0 || source.length ===
0) return
2922 // Fatal error conditions
2923 assert(end
>= start, 'sourceEnd < sourceStart')
2924 assert(target_start
>=
0 && target_start < target.length,
2925 'targetStart out of bounds')
2926 assert(start
>=
0 && start < source.length, 'sourceStart out of bounds')
2927 assert(end
>=
0 && end <= source.length, 'sourceEnd out of bounds')
2930 if (end
> this.length)
2932 if (target.length - target_start < end - start)
2933 end = target.length - target_start + start
2935 var len = end - start
2937 if (len <
100 || !Buffer._useTypedArrays) {
2938 for (var i =
0; i < len; i++) {
2939 target[i + target_start] = this[i + start]
2942 target._set(this.subarray(start, start + len), target_start)
2946 function base64Slice (buf, start, end) {
2947 if (start ===
0 && end === buf.length) {
2948 return base64.fromByteArray(buf)
2950 return base64.fromByteArray(buf.slice(start, end))
2954 function utf8Slice (buf, start, end) {
2957 end = Math.min(buf.length, end)
2959 for (var i = start; i < end; i++) {
2960 if (buf[i] <=
0x7F) {
2961 res += decodeUtf8Char(tmp) + String.fromCharCode(buf[i])
2964 tmp += '%' + buf[i].toString(
16)
2968 return res + decodeUtf8Char(tmp)
2971 function asciiSlice (buf, start, end) {
2973 end = Math.min(buf.length, end)
2975 for (var i = start; i < end; i++) {
2976 ret += String.fromCharCode(buf[i])
2981 function binarySlice (buf, start, end) {
2982 return asciiSlice(buf, start, end)
2985 function hexSlice (buf, start, end) {
2986 var len = buf.length
2988 if (!start || start <
0) start =
0
2989 if (!end || end <
0 || end
> len) end = len
2992 for (var i = start; i < end; i++) {
2993 out += toHex(buf[i])
2998 function utf16leSlice (buf, start, end) {
2999 var bytes = buf.slice(start, end)
3001 for (var i =
0; i < bytes.length; i +=
2) {
3002 res += String.fromCharCode(bytes[i] + bytes[i +
1] *
256)
3007 Buffer.prototype.slice = function (start, end) {
3008 var len = this.length
3009 start = clamp(start, len,
0)
3010 end = clamp(end, len, len)
3012 if (Buffer._useTypedArrays) {
3013 return Buffer._augment(this.subarray(start, end))
3015 var sliceLen = end - start
3016 var newBuf = new Buffer(sliceLen, undefined, true)
3017 for (var i =
0; i < sliceLen; i++) {
3018 newBuf[i] = this[i + start]
3024 // `get` will be removed in Node
0.13+
3025 Buffer.prototype.get = function (offset) {
3026 console.log('.get() is deprecated. Access using array indexes instead.')
3027 return this.readUInt8(offset)
3030 // `set` will be removed in Node
0.13+
3031 Buffer.prototype.set = function (v, offset) {
3032 console.log('.set() is deprecated. Access using array indexes instead.')
3033 return this.writeUInt8(v, offset)
3036 Buffer.prototype.readUInt8 = function (offset, noAssert) {
3038 assert(offset !== undefined && offset !== null, 'missing offset')
3039 assert(offset < this.length, 'Trying to read beyond buffer length')
3042 if (offset
>= this.length)
3048 function readUInt16 (buf, offset, littleEndian, noAssert) {
3050 assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
3051 assert(offset !== undefined && offset !== null, 'missing offset')
3052 assert(offset +
1 < buf.length, 'Trying to read beyond buffer length')
3055 var len = buf.length
3062 if (offset +
1 < len)
3063 val |= buf[offset +
1] <<
8
3065 val = buf[offset] <<
8
3066 if (offset +
1 < len)
3067 val |= buf[offset +
1]
3072 Buffer.prototype.readUInt16LE = function (offset, noAssert) {
3073 return readUInt16(this, offset, true, noAssert)
3076 Buffer.prototype.readUInt16BE = function (offset, noAssert) {
3077 return readUInt16(this, offset, false, noAssert)
3080 function readUInt32 (buf, offset, littleEndian, noAssert) {
3082 assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
3083 assert(offset !== undefined && offset !== null, 'missing offset')
3084 assert(offset +
3 < buf.length, 'Trying to read beyond buffer length')
3087 var len = buf.length
3093 if (offset +
2 < len)
3094 val = buf[offset +
2] <<
16
3095 if (offset +
1 < len)
3096 val |= buf[offset +
1] <<
8
3098 if (offset +
3 < len)
3099 val = val + (buf[offset +
3] <<
24 >>> 0)
3101 if (offset +
1 < len)
3102 val = buf[offset +
1] <<
16
3103 if (offset +
2 < len)
3104 val |= buf[offset +
2] <<
8
3105 if (offset +
3 < len)
3106 val |= buf[offset +
3]
3107 val = val + (buf[offset] <<
24 >>> 0)
3112 Buffer.prototype.readUInt32LE = function (offset, noAssert) {
3113 return readUInt32(this, offset, true, noAssert)
3116 Buffer.prototype.readUInt32BE = function (offset, noAssert) {
3117 return readUInt32(this, offset, false, noAssert)
3120 Buffer.prototype.readInt8 = function (offset, noAssert) {
3122 assert(offset !== undefined && offset !== null,
3124 assert(offset < this.length, 'Trying to read beyond buffer length')
3127 if (offset
>= this.length)
3130 var neg = this[offset] &
0x80
3132 return (
0xff - this[offset] +
1) * -
1
3137 function readInt16 (buf, offset, littleEndian, noAssert) {
3139 assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
3140 assert(offset !== undefined && offset !== null, 'missing offset')
3141 assert(offset +
1 < buf.length, 'Trying to read beyond buffer length')
3144 var len = buf.length
3148 var val = readUInt16(buf, offset, littleEndian, true)
3149 var neg = val &
0x8000
3151 return (
0xffff - val +
1) * -
1
3156 Buffer.prototype.readInt16LE = function (offset, noAssert) {
3157 return readInt16(this, offset, true, noAssert)
3160 Buffer.prototype.readInt16BE = function (offset, noAssert) {
3161 return readInt16(this, offset, false, noAssert)
3164 function readInt32 (buf, offset, littleEndian, noAssert) {
3166 assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
3167 assert(offset !== undefined && offset !== null, 'missing offset')
3168 assert(offset +
3 < buf.length, 'Trying to read beyond buffer length')
3171 var len = buf.length
3175 var val = readUInt32(buf, offset, littleEndian, true)
3176 var neg = val &
0x80000000
3178 return (
0xffffffff - val +
1) * -
1
3183 Buffer.prototype.readInt32LE = function (offset, noAssert) {
3184 return readInt32(this, offset, true, noAssert)
3187 Buffer.prototype.readInt32BE = function (offset, noAssert) {
3188 return readInt32(this, offset, false, noAssert)
3191 function readFloat (buf, offset, littleEndian, noAssert) {
3193 assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
3194 assert(offset +
3 < buf.length, 'Trying to read beyond buffer length')
3197 return ieee754.read(buf, offset, littleEndian,
23,
4)
3200 Buffer.prototype.readFloatLE = function (offset, noAssert) {
3201 return readFloat(this, offset, true, noAssert)
3204 Buffer.prototype.readFloatBE = function (offset, noAssert) {
3205 return readFloat(this, offset, false, noAssert)
3208 function readDouble (buf, offset, littleEndian, noAssert) {
3210 assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
3211 assert(offset +
7 < buf.length, 'Trying to read beyond buffer length')
3214 return ieee754.read(buf, offset, littleEndian,
52,
8)
3217 Buffer.prototype.readDoubleLE = function (offset, noAssert) {
3218 return readDouble(this, offset, true, noAssert)
3221 Buffer.prototype.readDoubleBE = function (offset, noAssert) {
3222 return readDouble(this, offset, false, noAssert)
3225 Buffer.prototype.writeUInt8 = function (value, offset, noAssert) {
3227 assert(value !== undefined && value !== null, 'missing value')
3228 assert(offset !== undefined && offset !== null, 'missing offset')
3229 assert(offset < this.length, 'trying to write beyond buffer length')
3230 verifuint(value,
0xff)
3233 if (offset
>= this.length) return
3235 this[offset] = value
3239 function writeUInt16 (buf, value, offset, littleEndian, noAssert) {
3241 assert(value !== undefined && value !== null, 'missing value')
3242 assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
3243 assert(offset !== undefined && offset !== null, 'missing offset')
3244 assert(offset +
1 < buf.length, 'trying to write beyond buffer length')
3245 verifuint(value,
0xffff)
3248 var len = buf.length
3252 for (var i =
0, j = Math.min(len - offset,
2); i < j; i++) {
3254 (value & (
0xff << (
8 * (littleEndian ? i :
1 - i))))
>>>
3255 (littleEndian ? i :
1 - i) *
8
3260 Buffer.prototype.writeUInt16LE = function (value, offset, noAssert) {
3261 return writeUInt16(this, value, offset, true, noAssert)
3264 Buffer.prototype.writeUInt16BE = function (value, offset, noAssert) {
3265 return writeUInt16(this, value, offset, false, noAssert)
3268 function writeUInt32 (buf, value, offset, littleEndian, noAssert) {
3270 assert(value !== undefined && value !== null, 'missing value')
3271 assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
3272 assert(offset !== undefined && offset !== null, 'missing offset')
3273 assert(offset +
3 < buf.length, 'trying to write beyond buffer length')
3274 verifuint(value,
0xffffffff)
3277 var len = buf.length
3281 for (var i =
0, j = Math.min(len - offset,
4); i < j; i++) {
3283 (value
>>> (littleEndian ? i :
3 - i) *
8) &
0xff
3288 Buffer.prototype.writeUInt32LE = function (value, offset, noAssert) {
3289 return writeUInt32(this, value, offset, true, noAssert)
3292 Buffer.prototype.writeUInt32BE = function (value, offset, noAssert) {
3293 return writeUInt32(this, value, offset, false, noAssert)
3296 Buffer.prototype.writeInt8 = function (value, offset, noAssert) {
3298 assert(value !== undefined && value !== null, 'missing value')
3299 assert(offset !== undefined && offset !== null, 'missing offset')
3300 assert(offset < this.length, 'Trying to write beyond buffer length')
3301 verifsint(value,
0x7f, -
0x80)
3304 if (offset
>= this.length)
3308 this.writeUInt8(value, offset, noAssert)
3310 this.writeUInt8(
0xff + value +
1, offset, noAssert)
3314 function writeInt16 (buf, value, offset, littleEndian, noAssert) {
3316 assert(value !== undefined && value !== null, 'missing value')
3317 assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
3318 assert(offset !== undefined && offset !== null, 'missing offset')
3319 assert(offset +
1 < buf.length, 'Trying to write beyond buffer length')
3320 verifsint(value,
0x7fff, -
0x8000)
3323 var len = buf.length
3328 writeUInt16(buf, value, offset, littleEndian, noAssert)
3330 writeUInt16(buf,
0xffff + value +
1, offset, littleEndian, noAssert)
3334 Buffer.prototype.writeInt16LE = function (value, offset, noAssert) {
3335 return writeInt16(this, value, offset, true, noAssert)
3338 Buffer.prototype.writeInt16BE = function (value, offset, noAssert) {
3339 return writeInt16(this, value, offset, false, noAssert)
3342 function writeInt32 (buf, value, offset, littleEndian, noAssert) {
3344 assert(value !== undefined && value !== null, 'missing value')
3345 assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
3346 assert(offset !== undefined && offset !== null, 'missing offset')
3347 assert(offset +
3 < buf.length, 'Trying to write beyond buffer length')
3348 verifsint(value,
0x7fffffff, -
0x80000000)
3351 var len = buf.length
3356 writeUInt32(buf, value, offset, littleEndian, noAssert)
3358 writeUInt32(buf,
0xffffffff + value +
1, offset, littleEndian, noAssert)
3362 Buffer.prototype.writeInt32LE = function (value, offset, noAssert) {
3363 return writeInt32(this, value, offset, true, noAssert)
3366 Buffer.prototype.writeInt32BE = function (value, offset, noAssert) {
3367 return writeInt32(this, value, offset, false, noAssert)
3370 function writeFloat (buf, value, offset, littleEndian, noAssert) {
3372 assert(value !== undefined && value !== null, 'missing value')
3373 assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
3374 assert(offset !== undefined && offset !== null, 'missing offset')
3375 assert(offset +
3 < buf.length, 'Trying to write beyond buffer length')
3376 verifIEEE754(value,
3.4028234663852886e+38, -
3.4028234663852886e+38)
3379 var len = buf.length
3383 ieee754.write(buf, value, offset, littleEndian,
23,
4)
3387 Buffer.prototype.writeFloatLE = function (value, offset, noAssert) {
3388 return writeFloat(this, value, offset, true, noAssert)
3391 Buffer.prototype.writeFloatBE = function (value, offset, noAssert) {
3392 return writeFloat(this, value, offset, false, noAssert)
3395 function writeDouble (buf, value, offset, littleEndian, noAssert) {
3397 assert(value !== undefined && value !== null, 'missing value')
3398 assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
3399 assert(offset !== undefined && offset !== null, 'missing offset')
3400 assert(offset +
7 < buf.length,
3401 'Trying to write beyond buffer length')
3402 verifIEEE754(value,
1.7976931348623157E+308, -
1.7976931348623157E+308)
3405 var len = buf.length
3409 ieee754.write(buf, value, offset, littleEndian,
52,
8)
3413 Buffer.prototype.writeDoubleLE = function (value, offset, noAssert) {
3414 return writeDouble(this, value, offset, true, noAssert)
3417 Buffer.prototype.writeDoubleBE = function (value, offset, noAssert) {
3418 return writeDouble(this, value, offset, false, noAssert)
3421 // fill(value, start=
0, end=buffer.length)
3422 Buffer.prototype.fill = function (value, start, end) {
3423 if (!value) value =
0
3424 if (!start) start =
0
3425 if (!end) end = this.length
3427 assert(end
>= start, 'end < start')
3429 // Fill
0 bytes; we're done
3430 if (end === start) return
3431 if (this.length ===
0) return
3433 assert(start
>=
0 && start < this.length, 'start out of bounds')
3434 assert(end
>=
0 && end <= this.length, 'end out of bounds')
3437 if (typeof value === 'number') {
3438 for (i = start; i < end; i++) {
3442 var bytes = utf8ToBytes(value.toString())
3443 var len = bytes.length
3444 for (i = start; i < end; i++) {
3445 this[i] = bytes[i % len]
3452 Buffer.prototype.inspect = function () {
3454 var len = this.length
3455 for (var i =
0; i < len; i++) {
3456 out[i] = toHex(this[i])
3457 if (i === exports.INSPECT_MAX_BYTES) {
3462 return '
<Buffer ' + out.join(' ') + '
>'
3466 * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance.
3467 * Added in Node
0.12. Only available in browsers that support ArrayBuffer.
3469 Buffer.prototype.toArrayBuffer = function () {
3470 if (typeof Uint8Array !== 'undefined') {
3471 if (Buffer._useTypedArrays) {
3472 return (new Buffer(this)).buffer
3474 var buf = new Uint8Array(this.length)
3475 for (var i =
0, len = buf.length; i < len; i +=
1) {
3481 throw new Error('Buffer.toArrayBuffer not supported in this browser')
3488 var BP = Buffer.prototype
3491 * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods
3493 Buffer._augment = function (arr) {
3494 arr._isBuffer = true
3496 // save reference to original Uint8Array get/set methods before overwriting
3500 // deprecated, will be removed in node
0.13+
3504 arr.write = BP.write
3505 arr.toString = BP.toString
3506 arr.toLocaleString = BP.toString
3507 arr.toJSON = BP.toJSON
3508 arr.equals = BP.equals
3509 arr.compare = BP.compare
3511 arr.slice = BP.slice
3512 arr.readUInt8 = BP.readUInt8
3513 arr.readUInt16LE = BP.readUInt16LE
3514 arr.readUInt16BE = BP.readUInt16BE
3515 arr.readUInt32LE = BP.readUInt32LE
3516 arr.readUInt32BE = BP.readUInt32BE
3517 arr.readInt8 = BP.readInt8
3518 arr.readInt16LE = BP.readInt16LE
3519 arr.readInt16BE = BP.readInt16BE
3520 arr.readInt32LE = BP.readInt32LE
3521 arr.readInt32BE = BP.readInt32BE
3522 arr.readFloatLE = BP.readFloatLE
3523 arr.readFloatBE = BP.readFloatBE
3524 arr.readDoubleLE = BP.readDoubleLE
3525 arr.readDoubleBE = BP.readDoubleBE
3526 arr.writeUInt8 = BP.writeUInt8
3527 arr.writeUInt16LE = BP.writeUInt16LE
3528 arr.writeUInt16BE = BP.writeUInt16BE
3529 arr.writeUInt32LE = BP.writeUInt32LE
3530 arr.writeUInt32BE = BP.writeUInt32BE
3531 arr.writeInt8 = BP.writeInt8
3532 arr.writeInt16LE = BP.writeInt16LE
3533 arr.writeInt16BE = BP.writeInt16BE
3534 arr.writeInt32LE = BP.writeInt32LE
3535 arr.writeInt32BE = BP.writeInt32BE
3536 arr.writeFloatLE = BP.writeFloatLE
3537 arr.writeFloatBE = BP.writeFloatBE
3538 arr.writeDoubleLE = BP.writeDoubleLE
3539 arr.writeDoubleBE = BP.writeDoubleBE
3541 arr.inspect = BP.inspect
3542 arr.toArrayBuffer = BP.toArrayBuffer
3547 var INVALID_BASE64_RE = /[^+\/
0-
9A-z]/g
3549 function base64clean (str) {
3550 // Node strips out invalid characters like \n and \t from the string, base64-js does not
3551 str = stringtrim(str).replace(INVALID_BASE64_RE, '')
3552 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
3553 while (str.length %
4 !==
0) {
3559 function stringtrim (str) {
3560 if (str.trim) return str.trim()
3561 return str.replace(/^\s+|\s+$/g, '')
3564 // slice(start, end)
3565 function clamp (index, len, defaultValue) {
3566 if (typeof index !== 'number') return defaultValue
3567 index = ~~index; // Coerce to integer.
3568 if (index
>= len) return len
3569 if (index
>=
0) return index
3571 if (index
>=
0) return index
3575 function coerce (length) {
3576 // Coerce length to a number (possibly NaN), round up
3577 // in case it's fractional (e.g.
123.456) then do a
3578 // double negate to coerce a NaN to
0. Easy, right?
3579 length = ~~Math.ceil(+length)
3580 return length <
0 ?
0 : length
3583 function isArray (subject) {
3584 return (Array.isArray || function (subject) {
3585 return Object.prototype.toString.call(subject) === '[object Array]'
3589 function isArrayish (subject) {
3590 return isArray(subject) || Buffer.isBuffer(subject) ||
3591 subject && typeof subject === 'object' &&
3592 typeof subject.length === 'number'
3595 function toHex (n) {
3596 if (n <
16) return '
0' + n.toString(
16)
3597 return n.toString(
16)
3600 function utf8ToBytes (str) {
3602 for (var i =
0; i < str.length; i++) {
3603 var b = str.charCodeAt(i)
3608 if (b
>=
0xD800 && b <=
0xDFFF) i++
3609 var h = encodeURIComponent(str.slice(start, i+
1)).substr(
1).split('%')
3610 for (var j =
0; j < h.length; j++) {
3611 byteArray.push(parseInt(h[j],
16))
3618 function asciiToBytes (str) {
3620 for (var i =
0; i < str.length; i++) {
3621 // Node's code seems to be doing this and not &
0x7F..
3622 byteArray.push(str.charCodeAt(i) &
0xFF)
3627 function utf16leToBytes (str) {
3630 for (var i =
0; i < str.length; i++) {
3631 c = str.charCodeAt(i)
3641 function base64ToBytes (str) {
3642 return base64.toByteArray(str)
3645 function blitBuffer (src, dst, offset, length) {
3646 for (var i =
0; i < length; i++) {
3647 if ((i + offset
>= dst.length) || (i
>= src.length))
3649 dst[i + offset] = src[i]
3654 function decodeUtf8Char (str) {
3656 return decodeURIComponent(str)
3658 return String.fromCharCode(
0xFFFD) // UTF
8 invalid char
3663 * We have to make sure that the value is a valid integer. This means that it
3664 * is non-negative. It has no fractional component and that it does not
3665 * exceed the maximum allowed value.
3667 function verifuint (value, max) {
3668 assert(typeof value === 'number', 'cannot write a non-number as a number')
3669 assert(value
>=
0, 'specified a negative value for writing an unsigned value')
3670 assert(value <= max, 'value is larger than maximum value for type')
3671 assert(Math.floor(value) === value, 'value has a fractional component')
3674 function verifsint (value, max, min) {
3675 assert(typeof value === 'number', 'cannot write a non-number as a number')
3676 assert(value <= max, 'value larger than maximum allowed value')
3677 assert(value
>= min, 'value smaller than minimum allowed value')
3678 assert(Math.floor(value) === value, 'value has a fractional component')
3681 function verifIEEE754 (value, max, min) {
3682 assert(typeof value === 'number', 'cannot write a non-number as a number')
3683 assert(value <= max, 'value larger than maximum allowed value')
3684 assert(value
>= min, 'value smaller than minimum allowed value')
3687 function assert (test, message) {
3688 if (!test) throw new Error(message || 'Failed assertion')
3691 },{"base64-js":
9,"ieee754":
10}],
9:[function(_dereq_,module,exports){
3692 var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
3694 ;(function (exports) {
3697 var Arr = (typeof Uint8Array !== 'undefined')
3701 var PLUS = '+'.charCodeAt(
0)
3702 var SLASH = '/'.charCodeAt(
0)
3703 var NUMBER = '
0'.charCodeAt(
0)
3704 var LOWER = 'a'.charCodeAt(
0)
3705 var UPPER = 'A'.charCodeAt(
0)
3707 function decode (elt) {
3708 var code = elt.charCodeAt(
0)
3714 return -
1 //no match
3715 if (code < NUMBER +
10)
3716 return code - NUMBER +
26 +
26
3717 if (code < UPPER +
26)
3719 if (code < LOWER +
26)
3720 return code - LOWER +
26
3723 function b64ToByteArray (b64) {
3724 var i, j, l, tmp, placeHolders, arr
3726 if (b64.length %
4 > 0) {
3727 throw new Error('Invalid string. Length must be a multiple of
4')
3730 // the number of equal signs (place holders)
3731 // if there are two placeholders, than the two characters before it
3732 // represent one byte
3733 // if there is only one, then the three characters before it represent
2 bytes
3734 // this is just a cheap hack to not do indexOf twice
3735 var len = b64.length
3736 placeHolders = '=' === b64.charAt(len -
2) ?
2 : '=' === b64.charAt(len -
1) ?
1 :
0
3738 // base64 is
4/
3 + up to two characters of the original data
3739 arr = new Arr(b64.length *
3 /
4 - placeHolders)
3741 // if there are placeholders, only get up to the last complete
4 chars
3742 l = placeHolders
> 0 ? b64.length -
4 : b64.length
3750 for (i =
0, j =
0; i < l; i +=
4, j +=
3) {
3751 tmp = (decode(b64.charAt(i)) <<
18) | (decode(b64.charAt(i +
1)) <<
12) | (decode(b64.charAt(i +
2)) <<
6) | decode(b64.charAt(i +
3))
3752 push((tmp &
0xFF0000)
>> 16)
3753 push((tmp &
0xFF00)
>> 8)
3757 if (placeHolders ===
2) {
3758 tmp = (decode(b64.charAt(i)) <<
2) | (decode(b64.charAt(i +
1))
>> 4)
3760 } else if (placeHolders ===
1) {
3761 tmp = (decode(b64.charAt(i)) <<
10) | (decode(b64.charAt(i +
1)) <<
4) | (decode(b64.charAt(i +
2))
>> 2)
3762 push((tmp
>> 8) &
0xFF)
3769 function uint8ToBase64 (uint8) {
3771 extraBytes = uint8.length %
3, // if we have
1 byte left, pad
2 bytes
3775 function encode (num) {
3776 return lookup.charAt(num)
3779 function tripletToBase64 (num) {
3780 return encode(num
>> 18 &
0x3F) + encode(num
>> 12 &
0x3F) + encode(num
>> 6 &
0x3F) + encode(num &
0x3F)
3783 // go through the array every three bytes, we'll deal with trailing stuff later
3784 for (i =
0, length = uint8.length - extraBytes; i < length; i +=
3) {
3785 temp = (uint8[i] <<
16) + (uint8[i +
1] <<
8) + (uint8[i +
2])
3786 output += tripletToBase64(temp)
3789 // pad the end with zeros, but make sure to not forget the extra bytes
3790 switch (extraBytes) {
3792 temp = uint8[uint8.length -
1]
3793 output += encode(temp
>> 2)
3794 output += encode((temp <<
4) &
0x3F)
3798 temp = (uint8[uint8.length -
2] <<
8) + (uint8[uint8.length -
1])
3799 output += encode(temp
>> 10)
3800 output += encode((temp
>> 4) &
0x3F)
3801 output += encode((temp <<
2) &
0x3F)
3809 exports.toByteArray = b64ToByteArray
3810 exports.fromByteArray = uint8ToBase64
3811 }(typeof exports === 'undefined' ? (this.base64js = {}) : exports))
3813 },{}],
10:[function(_dereq_,module,exports){
3814 exports.read = function(buffer, offset, isLE, mLen, nBytes) {
3816 eLen = nBytes *
8 - mLen -
1,
3817 eMax = (
1 << eLen) -
1,
3820 i = isLE ? (nBytes -
1) :
0,
3822 s = buffer[offset + i];
3826 e = s & ((
1 << (-nBits)) -
1);
3829 for (; nBits
> 0; e = e *
256 + buffer[offset + i], i += d, nBits -=
8){};
3831 m = e & ((
1 << (-nBits)) -
1);
3834 for (; nBits
> 0; m = m *
256 + buffer[offset + i], i += d, nBits -=
8){};
3838 } else if (e === eMax) {
3839 return m ? NaN : ((s ? -
1 :
1) * Infinity);
3841 m = m + Math.pow(
2, mLen);
3844 return (s ? -
1 :
1) * m * Math.pow(
2, e - mLen);
3847 exports.write = function(buffer, value, offset, isLE, mLen, nBytes) {
3849 eLen = nBytes *
8 - mLen -
1,
3850 eMax = (
1 << eLen) -
1,
3852 rt = (mLen ===
23 ? Math.pow(
2, -
24) - Math.pow(
2, -
77) :
0),
3853 i = isLE ?
0 : (nBytes -
1),
3855 s = value <
0 || (value ===
0 &&
1 / value <
0) ?
1 :
0;
3857 value = Math.abs(value);
3859 if (isNaN(value) || value === Infinity) {
3860 m = isNaN(value) ?
1 :
0;
3863 e = Math.floor(Math.log(value) / Math.LN2);
3864 if (value * (c = Math.pow(
2, -e)) <
1) {
3868 if (e + eBias
>=
1) {
3871 value += rt * Math.pow(
2,
1 - eBias);
3873 if (value * c
>=
2) {
3878 if (e + eBias
>= eMax) {
3881 } else if (e + eBias
>=
1) {
3882 m = (value * c -
1) * Math.pow(
2, mLen);
3885 m = value * Math.pow(
2, eBias -
1) * Math.pow(
2, mLen);
3890 for (; mLen
>=
8; buffer[offset + i] = m &
0xff, i += d, m /=
256, mLen -=
8){};
3892 e = (e << mLen) | m;
3894 for (; eLen
> 0; buffer[offset + i] = e &
0xff, i += d, e /=
256, eLen -=
8){};
3896 buffer[offset + i - d] |= s *
128;
3899 },{}],
11:[function(_dereq_,module,exports){
3900 if (typeof Object.create === 'function') {
3901 // implementation from standard node.js 'util' module
3902 module.exports = function inherits(ctor, superCtor) {
3903 ctor.super_ = superCtor
3904 ctor.prototype = Object.create(superCtor.prototype, {
3914 // old school shim for old browsers
3915 module.exports = function inherits(ctor, superCtor) {
3916 ctor.super_ = superCtor
3917 var TempCtor = function () {}
3918 TempCtor.prototype = superCtor.prototype
3919 ctor.prototype = new TempCtor()
3920 ctor.prototype.constructor = ctor
3924 },{}],
12:[function(_dereq_,module,exports){
3925 // shim for using process in browser
3927 var process = module.exports = {};
3929 process.nextTick = (function () {
3930 var canSetImmediate = typeof window !== 'undefined'
3931 && window.setImmediate;
3932 var canPost = typeof window !== 'undefined'
3933 && window.postMessage && window.addEventListener
3936 if (canSetImmediate) {
3937 return function (f) { return window.setImmediate(f) };
3942 window.addEventListener('message', function (ev) {
3943 var source = ev.source;
3944 if ((source === window || source === null) && ev.data === 'process-tick') {
3945 ev.stopPropagation();
3946 if (queue.length
> 0) {
3947 var fn = queue.shift();
3953 return function nextTick(fn) {
3955 window.postMessage('process-tick', '*');
3959 return function nextTick(fn) {
3964 process.title = 'browser';
3965 process.browser = true;
3972 process.addListener = noop;
3973 process.once = noop;
3975 process.removeListener = noop;
3976 process.removeAllListeners = noop;
3977 process.emit = noop;
3979 process.binding = function (name) {
3980 throw new Error('process.binding is not supported');
3984 process.cwd = function () { return '/' };
3985 process.chdir = function (dir) {
3986 throw new Error('process.chdir is not supported');
3989 },{}],
13:[function(_dereq_,module,exports){
3990 module.exports=_dereq_(
5)
3991 },{}],
14:[function(_dereq_,module,exports){
3992 module.exports=_dereq_(
6)
3993 },{
"./support/isBuffer":
13,
"FWaASH":
12,
"inherits":
11}],
15:[function(_dereq_,module,exports){
3995 // Base58 encoding/decoding
3996 // Originally written by Mike Hearn for BitcoinJ
3997 // Copyright (c)
2011 Google Inc
3998 // Ported to JavaScript by Stefan Thomas
3999 // Merged Buffer refactorings from base58-native by Stephen Pair
4000 // Copyright (c)
2013 BitPay Inc
4002 var assert = _dereq_('assert')
4003 var BigInteger = _dereq_('bigi')
4005 var ALPHABET = '
123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
4006 var ALPHABET_BUF = new Buffer(ALPHABET, 'ascii')
4007 var ALPHABET_MAP = {}
4008 for(var i =
0; i < ALPHABET.length; i++) {
4009 ALPHABET_MAP[ALPHABET.charAt(i)] = BigInteger.valueOf(i)
4011 var BASE = new BigInteger('
58')
4013 function encode(buffer) {
4014 var bi = BigInteger.fromBuffer(buffer)
4015 var result = new Buffer(buffer.length <<
1)
4017 var i = result.length -
1
4018 while (bi.signum()
> 0) {
4019 var remainder = bi.mod(BASE)
4020 bi = bi.divide(BASE)
4022 result[i] = ALPHABET_BUF[remainder.intValue()]
4026 // deal with leading zeros
4028 while (buffer[j] ===
0) {
4029 result[i] = ALPHABET_BUF[
0]
4034 return result.slice(i +
1, result.length).toString('ascii')
4037 function decode(string) {
4038 if (string.length ===
0) return new Buffer(
0)
4040 var num = BigInteger.ZERO
4042 for (var i =
0; i < string.length; i++) {
4043 num = num.multiply(BASE)
4045 var figure = ALPHABET_MAP[string.charAt(i)]
4046 assert.notEqual(figure, undefined, 'Non-base58 character')
4048 num = num.add(figure)
4051 // deal with leading zeros
4053 while ((j < string.length) && (string[j] === ALPHABET[
0])) {
4057 var buffer = num.toBuffer()
4058 var leadingZeros = new Buffer(j)
4059 leadingZeros.fill(
0)
4061 return Buffer.concat([leadingZeros, buffer])
4069 }).call(this,_dereq_(
"buffer").Buffer)
4070 },{
"assert":
4,
"bigi":
3,
"buffer":
8}],
16:[function(_dereq_,module,exports){
4072 var createHash = _dereq_('sha.js')
4074 var md5 = toConstructor(_dereq_('./md5'))
4075 var rmd160 = toConstructor(_dereq_('ripemd160'))
4077 function toConstructor (fn) {
4078 return function () {
4081 update: function (data, enc) {
4082 if(!Buffer.isBuffer(data)) data = new Buffer(data, enc)
4086 digest: function (enc) {
4087 var buf = Buffer.concat(buffers)
4090 return enc ? r.toString(enc) : r
4097 module.exports = function (alg) {
4098 if('md5' === alg) return new md5()
4099 if('rmd160' === alg) return new rmd160()
4100 return createHash(alg)
4103 }).call(this,_dereq_(
"buffer").Buffer)
4104 },{
"./md5":
20,
"buffer":
8,
"ripemd160":
21,
"sha.js":
23}],
17:[function(_dereq_,module,exports){
4106 var createHash = _dereq_('./create-hash')
4109 var zeroBuffer = new Buffer(blocksize); zeroBuffer.fill(
0)
4111 module.exports = Hmac
4113 function Hmac (alg, key) {
4114 if(!(this instanceof Hmac)) return new Hmac(alg, key)
4118 key = this._key = !Buffer.isBuffer(key) ? new Buffer(key) : key
4120 if(key.length
> blocksize) {
4121 key = createHash(alg).update(key).digest()
4122 } else if(key.length < blocksize) {
4123 key = Buffer.concat([key, zeroBuffer], blocksize)
4126 var ipad = this._ipad = new Buffer(blocksize)
4127 var opad = this._opad = new Buffer(blocksize)
4129 for(var i =
0; i < blocksize; i++) {
4130 ipad[i] = key[i] ^
0x36
4131 opad[i] = key[i] ^
0x5C
4134 this._hash = createHash(alg).update(ipad)
4137 Hmac.prototype.update = function (data, enc) {
4138 this._hash.update(data, enc)
4142 Hmac.prototype.digest = function (enc) {
4143 var h = this._hash.digest()
4144 return createHash(this._alg).update(this._opad).update(h).digest(enc)
4148 }).call(this,_dereq_("buffer").Buffer)
4149 },{"./create-hash":
16,"buffer":
8}],
18:[function(_dereq_,module,exports){
4152 var zeroBuffer = new Buffer(intSize); zeroBuffer.fill(
0);
4155 function toArray(buf, bigEndian) {
4156 if ((buf.length % intSize) !==
0) {
4157 var len = buf.length + (intSize - (buf.length % intSize));
4158 buf = Buffer.concat([buf, zeroBuffer], len);
4162 var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE;
4163 for (var i =
0; i < buf.length; i += intSize) {
4164 arr.push(fn.call(buf, i));
4169 function toBuffer(arr, size, bigEndian) {
4170 var buf = new Buffer(size);
4171 var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE;
4172 for (var i =
0; i < arr.length; i++) {
4173 fn.call(buf, arr[i], i *
4, true);
4178 function hash(buf, fn, hashSize, bigEndian) {
4179 if (!Buffer.isBuffer(buf)) buf = new Buffer(buf);
4180 var arr = fn(toArray(buf, bigEndian), buf.length * chrsz);
4181 return toBuffer(arr, hashSize, bigEndian);
4184 module.exports = { hash: hash };
4186 }).call(this,_dereq_("buffer").Buffer)
4187 },{"buffer":
8}],
19:[function(_dereq_,module,exports){
4189 var rng = _dereq_('./rng')
4192 var m = [].slice.call(arguments).join(' ')
4195 'we accept pull requests',
4196 'http://github.com/dominictarr/crypto-browserify'
4200 exports.createHash = _dereq_('./create-hash')
4202 exports.createHmac = _dereq_('./create-hmac')
4204 exports.randomBytes = function(size, callback) {
4205 if (callback && callback.call) {
4207 callback.call(this, undefined, new Buffer(rng(size)))
4208 } catch (err) { callback(err) }
4210 return new Buffer(rng(size))
4214 function each(a, f) {
4219 exports.getHashes = function () {
4220 return ['sha1', 'sha256', 'md5', 'rmd160']
4224 var p = _dereq_('./pbkdf2')(exports.createHmac)
4225 exports.pbkdf2 = p.pbkdf2
4226 exports.pbkdf2Sync = p.pbkdf2Sync
4229 // the least I can do is make error messages for the rest of the node.js/crypto api.
4230 each(['createCredentials'
4234 , 'createDecipheriv'
4237 , 'createDiffieHellman'
4238 ], function (name) {
4239 exports[name] = function () {
4240 error('sorry,', name, 'is not implemented yet')
4244 }).call(this,_dereq_("buffer").Buffer)
4245 },{"./create-hash":
16,"./create-hmac":
17,"./pbkdf2":
27,"./rng":
28,"buffer":
8}],
20:[function(_dereq_,module,exports){
4247 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
4248 * Digest Algorithm, as defined in RFC
1321.
4249 * Version
2.1 Copyright (C) Paul Johnston
1999 -
2002.
4250 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
4251 * Distributed under the BSD License
4252 * See http://pajhome.org.uk/crypt/md5 for more info.
4255 var helpers = _dereq_('./helpers');
4258 * Calculate the MD5 of an array of little-endian words, and a bit length
4260 function core_md5(x, len)
4262 /* append padding */
4263 x[len
>> 5] |=
0x80 << ((len) %
32);
4264 x[(((len +
64)
>>> 9) <<
4) +
14] = len;
4268 var c = -
1732584194;
4271 for(var i =
0; i < x.length; i +=
16)
4278 a = md5_ff(a, b, c, d, x[i+
0],
7 , -
680876936);
4279 d = md5_ff(d, a, b, c, x[i+
1],
12, -
389564586);
4280 c = md5_ff(c, d, a, b, x[i+
2],
17,
606105819);
4281 b = md5_ff(b, c, d, a, x[i+
3],
22, -
1044525330);
4282 a = md5_ff(a, b, c, d, x[i+
4],
7 , -
176418897);
4283 d = md5_ff(d, a, b, c, x[i+
5],
12,
1200080426);
4284 c = md5_ff(c, d, a, b, x[i+
6],
17, -
1473231341);
4285 b = md5_ff(b, c, d, a, x[i+
7],
22, -
45705983);
4286 a = md5_ff(a, b, c, d, x[i+
8],
7 ,
1770035416);
4287 d = md5_ff(d, a, b, c, x[i+
9],
12, -
1958414417);
4288 c = md5_ff(c, d, a, b, x[i+
10],
17, -
42063);
4289 b = md5_ff(b, c, d, a, x[i+
11],
22, -
1990404162);
4290 a = md5_ff(a, b, c, d, x[i+
12],
7 ,
1804603682);
4291 d = md5_ff(d, a, b, c, x[i+
13],
12, -
40341101);
4292 c = md5_ff(c, d, a, b, x[i+
14],
17, -
1502002290);
4293 b = md5_ff(b, c, d, a, x[i+
15],
22,
1236535329);
4295 a = md5_gg(a, b, c, d, x[i+
1],
5 , -
165796510);
4296 d = md5_gg(d, a, b, c, x[i+
6],
9 , -
1069501632);
4297 c = md5_gg(c, d, a, b, x[i+
11],
14,
643717713);
4298 b = md5_gg(b, c, d, a, x[i+
0],
20, -
373897302);
4299 a = md5_gg(a, b, c, d, x[i+
5],
5 , -
701558691);
4300 d = md5_gg(d, a, b, c, x[i+
10],
9 ,
38016083);
4301 c = md5_gg(c, d, a, b, x[i+
15],
14, -
660478335);
4302 b = md5_gg(b, c, d, a, x[i+
4],
20, -
405537848);
4303 a = md5_gg(a, b, c, d, x[i+
9],
5 ,
568446438);
4304 d = md5_gg(d, a, b, c, x[i+
14],
9 , -
1019803690);
4305 c = md5_gg(c, d, a, b, x[i+
3],
14, -
187363961);
4306 b = md5_gg(b, c, d, a, x[i+
8],
20,
1163531501);
4307 a = md5_gg(a, b, c, d, x[i+
13],
5 , -
1444681467);
4308 d = md5_gg(d, a, b, c, x[i+
2],
9 , -
51403784);
4309 c = md5_gg(c, d, a, b, x[i+
7],
14,
1735328473);
4310 b = md5_gg(b, c, d, a, x[i+
12],
20, -
1926607734);
4312 a = md5_hh(a, b, c, d, x[i+
5],
4 , -
378558);
4313 d = md5_hh(d, a, b, c, x[i+
8],
11, -
2022574463);
4314 c = md5_hh(c, d, a, b, x[i+
11],
16,
1839030562);
4315 b = md5_hh(b, c, d, a, x[i+
14],
23, -
35309556);
4316 a = md5_hh(a, b, c, d, x[i+
1],
4 , -
1530992060);
4317 d = md5_hh(d, a, b, c, x[i+
4],
11,
1272893353);
4318 c = md5_hh(c, d, a, b, x[i+
7],
16, -
155497632);
4319 b = md5_hh(b, c, d, a, x[i+
10],
23, -
1094730640);
4320 a = md5_hh(a, b, c, d, x[i+
13],
4 ,
681279174);
4321 d = md5_hh(d, a, b, c, x[i+
0],
11, -
358537222);
4322 c = md5_hh(c, d, a, b, x[i+
3],
16, -
722521979);
4323 b = md5_hh(b, c, d, a, x[i+
6],
23,
76029189);
4324 a = md5_hh(a, b, c, d, x[i+
9],
4 , -
640364487);
4325 d = md5_hh(d, a, b, c, x[i+
12],
11, -
421815835);
4326 c = md5_hh(c, d, a, b, x[i+
15],
16,
530742520);
4327 b = md5_hh(b, c, d, a, x[i+
2],
23, -
995338651);
4329 a = md5_ii(a, b, c, d, x[i+
0],
6 , -
198630844);
4330 d = md5_ii(d, a, b, c, x[i+
7],
10,
1126891415);
4331 c = md5_ii(c, d, a, b, x[i+
14],
15, -
1416354905);
4332 b = md5_ii(b, c, d, a, x[i+
5],
21, -
57434055);
4333 a = md5_ii(a, b, c, d, x[i+
12],
6 ,
1700485571);
4334 d = md5_ii(d, a, b, c, x[i+
3],
10, -
1894986606);
4335 c = md5_ii(c, d, a, b, x[i+
10],
15, -
1051523);
4336 b = md5_ii(b, c, d, a, x[i+
1],
21, -
2054922799);
4337 a = md5_ii(a, b, c, d, x[i+
8],
6 ,
1873313359);
4338 d = md5_ii(d, a, b, c, x[i+
15],
10, -
30611744);
4339 c = md5_ii(c, d, a, b, x[i+
6],
15, -
1560198380);
4340 b = md5_ii(b, c, d, a, x[i+
13],
21,
1309151649);
4341 a = md5_ii(a, b, c, d, x[i+
4],
6 , -
145523070);
4342 d = md5_ii(d, a, b, c, x[i+
11],
10, -
1120210379);
4343 c = md5_ii(c, d, a, b, x[i+
2],
15,
718787259);
4344 b = md5_ii(b, c, d, a, x[i+
9],
21, -
343485551);
4346 a = safe_add(a, olda);
4347 b = safe_add(b, oldb);
4348 c = safe_add(c, oldc);
4349 d = safe_add(d, oldd);
4351 return Array(a, b, c, d);
4356 * These functions implement the four basic operations the algorithm uses.
4358 function md5_cmn(q, a, b, x, s, t)
4360 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
4362 function md5_ff(a, b, c, d, x, s, t)
4364 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
4366 function md5_gg(a, b, c, d, x, s, t)
4368 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
4370 function md5_hh(a, b, c, d, x, s, t)
4372 return md5_cmn(b ^ c ^ d, a, b, x, s, t);
4374 function md5_ii(a, b, c, d, x, s, t)
4376 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
4380 * Add integers, wrapping at
2^
32. This uses
16-bit operations internally
4381 * to work around bugs in some JS interpreters.
4383 function safe_add(x, y)
4385 var lsw = (x &
0xFFFF) + (y &
0xFFFF);
4386 var msw = (x
>> 16) + (y
>> 16) + (lsw
>> 16);
4387 return (msw <<
16) | (lsw &
0xFFFF);
4391 * Bitwise rotate a
32-bit number to the left.
4393 function bit_rol(num, cnt)
4395 return (num << cnt) | (num
>>> (
32 - cnt));
4398 module.exports = function md5(buf) {
4399 return helpers.hash(buf, core_md5,
16);
4402 },{"./helpers":
18}],
21:[function(_dereq_,module,exports){
4405 module.exports = ripemd160
4411 code.google.com/p/crypto-js
4412 (c)
2009-
2013 by Jeff Mott. All rights reserved.
4413 code.google.com/p/crypto-js/wiki/License
4416 (c)
2012 by Cédric Mesnil. All rights reserved.
4418 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
4420 - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
4421 - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
4423 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
4428 0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
4429 7,
4,
13,
1,
10,
6,
15,
3,
12,
0,
9,
5,
2,
14,
11,
8,
4430 3,
10,
14,
4,
9,
15,
8,
1,
2,
7,
0,
6,
13,
11,
5,
12,
4431 1,
9,
11,
10,
0,
8,
12,
4,
13,
3,
7,
15,
14,
5,
6,
2,
4432 4,
0,
5,
9,
7,
12,
2,
10,
14,
1,
3,
8,
11,
6,
15,
13];
4434 5,
14,
7,
0,
9,
2,
11,
4,
13,
6,
15,
8,
1,
10,
3,
12,
4435 6,
11,
3,
7,
0,
13,
5,
10,
14,
15,
8,
12,
4,
9,
1,
2,
4436 15,
5,
1,
3,
7,
14,
6,
9,
11,
8,
12,
2,
10,
0,
4,
13,
4437 8,
6,
4,
1,
3,
11,
15,
0,
5,
12,
2,
13,
9,
7,
10,
14,
4438 12,
15,
10,
4,
1,
5,
8,
7,
6,
2,
13,
14,
0,
3,
9,
11];
4440 11,
14,
15,
12,
5,
8,
7,
9,
11,
13,
14,
15,
6,
7,
9,
8,
4441 7,
6,
8,
13,
11,
9,
7,
15,
7,
12,
15,
9,
11,
7,
13,
12,
4442 11,
13,
6,
7,
14,
9,
13,
15,
14,
8,
13,
6,
5,
12,
7,
5,
4443 11,
12,
14,
15,
14,
15,
9,
8,
9,
14,
5,
6,
8,
6,
5,
12,
4444 9,
15,
5,
11,
6,
8,
13,
12,
5,
12,
13,
14,
11,
8,
5,
6 ];
4446 8,
9,
9,
11,
13,
15,
15,
5,
7,
7,
8,
11,
14,
14,
12,
6,
4447 9,
13,
15,
7,
12,
8,
9,
11,
7,
7,
12,
7,
6,
15,
13,
11,
4448 9,
7,
15,
11,
8,
6,
6,
14,
12,
13,
5,
14,
13,
13,
7,
5,
4449 15,
5,
8,
11,
14,
14,
6,
14,
6,
9,
12,
9,
12,
5,
15,
8,
4450 8,
5,
12,
9,
12,
5,
14,
6,
8,
13,
6,
5,
15,
13,
11,
11 ];
4452 var hl = [
0x00000000,
0x5A827999,
0x6ED9EBA1,
0x8F1BBCDC,
0xA953FD4E];
4453 var hr = [
0x50A28BE6,
0x5C4DD124,
0x6D703EF3,
0x7A6D76E9,
0x00000000];
4455 var bytesToWords = function (bytes) {
4457 for (var i =
0, b =
0; i < bytes.length; i++, b +=
8) {
4458 words[b
>>> 5] |= bytes[i] << (
24 - b %
32);
4463 var wordsToBytes = function (words) {
4465 for (var b =
0; b < words.length *
32; b +=
8) {
4466 bytes.push((words[b
>>> 5]
>>> (
24 - b %
32)) &
0xFF);
4471 var processBlock = function (H, M, offset) {
4474 for (var i =
0; i <
16; i++) {
4475 var offset_i = offset + i;
4476 var M_offset_i = M[offset_i];
4480 (((M_offset_i <<
8) | (M_offset_i
>>> 24)) &
0x00ff00ff) |
4481 (((M_offset_i <<
24) | (M_offset_i
>>> 8)) &
0xff00ff00)
4485 // Working variables
4486 var al, bl, cl, dl, el;
4487 var ar, br, cr, dr, er;
4496 for (var i =
0; i <
80; i +=
1) {
4497 t = (al + M[offset+zl[i]])|
0;
4499 t += f1(bl,cl,dl) + hl[
0];
4501 t += f2(bl,cl,dl) + hl[
1];
4503 t += f3(bl,cl,dl) + hl[
2];
4505 t += f4(bl,cl,dl) + hl[
3];
4506 } else {// if (i
<80) {
4507 t += f5(bl,cl,dl) + hl[
4];
4518 t = (ar + M[offset+zr[i]])|
0;
4520 t += f5(br,cr,dr) + hr[
0];
4522 t += f4(br,cr,dr) + hr[
1];
4524 t += f3(br,cr,dr) + hr[
2];
4526 t += f2(br,cr,dr) + hr[
3];
4527 } else {// if (i
<80) {
4528 t += f1(br,cr,dr) + hr[
4];
4539 // Intermediate hash value
4540 t = (H[
1] + cl + dr)|
0;
4541 H[
1] = (H[
2] + dl + er)|
0;
4542 H[
2] = (H[
3] + el + ar)|
0;
4543 H[
3] = (H[
4] + al + br)|
0;
4544 H[
4] = (H[
0] + bl + cr)|
0;
4548 function f1(x, y, z) {
4549 return ((x) ^ (y) ^ (z));
4552 function f2(x, y, z) {
4553 return (((x)&(y)) | ((~x)&(z)));
4556 function f3(x, y, z) {
4557 return (((x) | (~(y))) ^ (z));
4560 function f4(x, y, z) {
4561 return (((x) & (z)) | ((y)&(~(z))));
4564 function f5(x, y, z) {
4565 return ((x) ^ ((y) |(~(z))));
4568 function rotl(x,n) {
4569 return (x<
<n) | (x
>>>(
32-n));
4572 function ripemd160(message) {
4573 var H = [
0x67452301,
0xEFCDAB89,
0x98BADCFE,
0x10325476,
0xC3D2E1F0];
4575 if (typeof message == 'string')
4576 message = new Buffer(message, 'utf8');
4578 var m = bytesToWords(message);
4580 var nBitsLeft = message.length *
8;
4581 var nBitsTotal = message.length *
8;
4584 m[nBitsLeft
>>> 5] |=
0x80 << (
24 - nBitsLeft %
32);
4585 m[(((nBitsLeft +
64)
>>> 9) <<
4) +
14] = (
4586 (((nBitsTotal <<
8) | (nBitsTotal
>>> 24)) &
0x00ff00ff) |
4587 (((nBitsTotal <<
24) | (nBitsTotal
>>> 8)) &
0xff00ff00)
4590 for (var i=
0 ; i
<m.length; i +=
16) {
4591 processBlock(H, m, i);
4595 for (var i =
0; i <
5; i++) {
4600 H[i] = (((H_i <<
8) | (H_i
>>> 24)) &
0x00ff00ff) |
4601 (((H_i <<
24) | (H_i
>>> 8)) &
0xff00ff00);
4604 var digestbytes = wordsToBytes(H);
4605 return new Buffer(digestbytes);
4610 }).call(this,_dereq_(
"buffer").Buffer)
4611 },{
"buffer":
8}],
22:[function(_dereq_,module,exports){
4612 var u = _dereq_('./util')
4614 var fill = u.zeroFill
4616 module.exports = function (Buffer) {
4618 //prototype class for hash functions
4619 function Hash (blockSize, finalSize) {
4620 this._block = new Buffer(blockSize) //new Uint32Array(blockSize/
4)
4621 this._finalSize = finalSize
4622 this._blockSize = blockSize
4627 Hash.prototype.init = function () {
4632 function lengthOf(data, enc) {
4633 if(enc == null) return data.byteLength || data.length
4634 if(enc == 'ascii' || enc == 'binary') return data.length
4635 if(enc == 'hex') return data.length/
2
4636 if(enc == 'base64') return data.length/
3
4639 Hash.prototype.update = function (data, enc) {
4640 var bl = this._blockSize
4642 //I'd rather do this with a streaming encoder, like the opposite of
4643 //http://nodejs.org/api/string_decoder.html
4645 if(!enc && 'string' === typeof data)
4652 if(enc === 'base64' || enc === 'utf8')
4653 data = new Buffer(data, enc), enc = null
4655 length = lengthOf(data, enc)
4657 length = data.byteLength || data.length
4659 var l = this._len += length
4660 var s = this._s = (this._s ||
0)
4662 var buffer = this._block
4664 var t = Math.min(length, f + bl)
4665 write(buffer, data, enc, s%bl, f, t)
4670 this._update(buffer)
4678 Hash.prototype.digest = function (enc) {
4679 var bl = this._blockSize
4680 var fl = this._finalSize
4681 var len = this._len*
8
4685 var bits = len % (bl*
8)
4687 //add end marker, so that appending
0's creats a different hash.
4688 x[this._len % bl] =
0x80
4689 fill(this._block, this._len % bl +
1)
4692 this._update(this._block)
4693 u.zeroFill(this._block,
0)
4696 //TODO: handle case where the bit length is
> Math.pow(
2,
29)
4697 x.writeInt32BE(len, fl +
4) //big endian
4699 var hash = this._update(this._block) || this._hash()
4700 if(enc == null) return hash
4701 return hash.toString(enc)
4704 Hash.prototype._update = function () {
4705 throw new Error('_update must be implemented by subclass')
4711 },{"./util":
26}],
23:[function(_dereq_,module,exports){
4712 var exports = module.exports = function (alg) {
4713 var Alg = exports[alg]
4714 if(!Alg) throw new Error(alg + ' is not supported (we accept pull requests)')
4718 var Buffer = _dereq_('buffer').Buffer
4719 var Hash = _dereq_('./hash')(Buffer)
4722 exports.sha1 = _dereq_('./sha1')(Buffer, Hash)
4723 exports.sha256 = _dereq_('./sha256')(Buffer, Hash)
4725 },{"./hash":
22,"./sha1":
24,"./sha256":
25,"buffer":
8}],
24:[function(_dereq_,module,exports){
4727 * A JavaScript implementation of the Secure Hash Algorithm, SHA-
1, as defined
4729 * Version
2.1a Copyright Paul Johnston
2000 -
2002.
4730 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
4731 * Distributed under the BSD License
4732 * See http://pajhome.org.uk/crypt/md5 for details.
4734 module.exports = function (Buffer, Hash) {
4736 var inherits = _dereq_('util').inherits
4738 inherits(Sha1, Hash)
4749 var W = new Int32Array(
80)
4755 return POOL.pop().init()
4757 if(!(this instanceof Sha1)) return new Sha1()
4759 Hash.call(this,
16*
4,
14*
4)
4765 Sha1.prototype.init = function () {
4766 this._a =
0x67452301
4767 this._b =
0xefcdab89
4768 this._c =
0x98badcfe
4769 this._d =
0x10325476
4770 this._e =
0xc3d2e1f0
4772 Hash.prototype.init.call(this)
4776 Sha1.prototype._POOL = POOL
4778 // assume that array is a Uint32Array with length=
16,
4779 // and that if it is the last block, it already has the length and the
1 bit appended.
4782 var isDV = new Buffer(
1) instanceof DataView
4783 function readInt32BE (X, i) {
4785 ? X.getInt32(i, false)
4789 Sha1.prototype._update = function (array) {
4793 var a, b, c, d, e, _a, _b, _c, _d, _e
4803 for(var j =
0; j <
80; j++) {
4806 //? X.getInt32(j*
4, false)
4807 //? readInt32BE(X, j*
4) //*/ X.readInt32BE(j*
4) //*/
4808 ? X.readInt32BE(j*
4)
4809 : rol(w[j -
3] ^ w[j -
8] ^ w[j -
14] ^ w[j -
16],
1)
4813 add(rol(a,
5), sha1_ft(j, b, c, d)),
4814 add(add(e, W), sha1_kt(j))
4824 this._a = add(a, _a)
4825 this._b = add(b, _b)
4826 this._c = add(c, _c)
4827 this._d = add(d, _d)
4828 this._e = add(e, _e)
4831 Sha1.prototype._hash = function () {
4832 if(POOL.length <
100) POOL.push(this)
4833 var H = new Buffer(
20)
4834 //console.log(this._a|
0, this._b|
0, this._c|
0, this._d|
0, this._e|
0)
4835 H.writeInt32BE(this._a|
0, A)
4836 H.writeInt32BE(this._b|
0, B)
4837 H.writeInt32BE(this._c|
0, C)
4838 H.writeInt32BE(this._d|
0, D)
4839 H.writeInt32BE(this._e|
0, E)
4844 * Perform the appropriate triplet combination function for the current
4847 function sha1_ft(t, b, c, d) {
4848 if(t <
20) return (b & c) | ((~b) & d);
4849 if(t <
40) return b ^ c ^ d;
4850 if(t <
60) return (b & c) | (b & d) | (c & d);
4855 * Determine the appropriate additive constant for the current iteration
4857 function sha1_kt(t) {
4858 return (t <
20) ?
1518500249 : (t <
40) ?
1859775393 :
4859 (t <
60) ? -
1894007588 : -
899497514;
4863 * Add integers, wrapping at
2^
32. This uses
16-bit operations internally
4864 * to work around bugs in some JS interpreters.
4865 * //dominictarr: this is
10 years old, so maybe this can be dropped?)
4868 function add(x, y) {
4870 //lets see how this goes on testling.
4871 // var lsw = (x &
0xFFFF) + (y &
0xFFFF);
4872 // var msw = (x
>> 16) + (y
>> 16) + (lsw
>> 16);
4873 // return (msw <<
16) | (lsw &
0xFFFF);
4877 * Bitwise rotate a
32-bit number to the left.
4879 function rol(num, cnt) {
4880 return (num << cnt) | (num
>>> (
32 - cnt));
4886 },{"util":
14}],
25:[function(_dereq_,module,exports){
4889 * A JavaScript implementation of the Secure Hash Algorithm, SHA-
256, as defined
4891 * Version
2.2-beta Copyright Angel Marin, Paul Johnston
2000 -
2009.
4892 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
4896 var inherits = _dereq_('util').inherits
4899 var u = _dereq_('./util')
4901 module.exports = function (Buffer, Hash) {
4904 0x428A2F98,
0x71374491,
0xB5C0FBCF,
0xE9B5DBA5,
4905 0x3956C25B,
0x59F111F1,
0x923F82A4,
0xAB1C5ED5,
4906 0xD807AA98,
0x12835B01,
0x243185BE,
0x550C7DC3,
4907 0x72BE5D74,
0x80DEB1FE,
0x9BDC06A7,
0xC19BF174,
4908 0xE49B69C1,
0xEFBE4786,
0x0FC19DC6,
0x240CA1CC,
4909 0x2DE92C6F,
0x4A7484AA,
0x5CB0A9DC,
0x76F988DA,
4910 0x983E5152,
0xA831C66D,
0xB00327C8,
0xBF597FC7,
4911 0xC6E00BF3,
0xD5A79147,
0x06CA6351,
0x14292967,
4912 0x27B70A85,
0x2E1B2138,
0x4D2C6DFC,
0x53380D13,
4913 0x650A7354,
0x766A0ABB,
0x81C2C92E,
0x92722C85,
4914 0xA2BFE8A1,
0xA81A664B,
0xC24B8B70,
0xC76C51A3,
4915 0xD192E819,
0xD6990624,
0xF40E3585,
0x106AA070,
4916 0x19A4C116,
0x1E376C08,
0x2748774C,
0x34B0BCB5,
4917 0x391C0CB3,
0x4ED8AA4A,
0x5B9CCA4F,
0x682E6FF3,
4918 0x748F82EE,
0x78A5636F,
0x84C87814,
0x8CC70208,
4919 0x90BEFFFA,
0xA4506CEB,
0xBEF9A3F7,
0xC67178F2
4922 inherits(Sha256, Hash)
4923 var W = new Array(
64)
4926 // Closure compiler warning - this code lacks side effects - thus commented out
4927 // if(POOL.length) {
4928 // return POOL.shift().init()
4930 //this._data = new Buffer(
32)
4934 this._w = W //new Array(
64)
4936 Hash.call(this,
16*
4,
14*
4)
4939 Sha256.prototype.init = function () {
4941 this._a =
0x6a09e667|
0
4942 this._b =
0xbb67ae85|
0
4943 this._c =
0x3c6ef372|
0
4944 this._d =
0xa54ff53a|
0
4945 this._e =
0x510e527f|
0
4946 this._f =
0x9b05688c|
0
4947 this._g =
0x1f83d9ab|
0
4948 this._h =
0x5be0cd19|
0
4950 this._len = this._s =
0
4955 var safe_add = function(x, y) {
4956 var lsw = (x &
0xFFFF) + (y &
0xFFFF);
4957 var msw = (x
>> 16) + (y
>> 16) + (lsw
>> 16);
4958 return (msw <<
16) | (lsw &
0xFFFF);
4962 return (X
>>> n) | (X << (
32 - n));
4969 function Ch (x, y, z) {
4970 return ((x & y) ^ ((~x) & z));
4973 function Maj (x, y, z) {
4974 return ((x & y) ^ (x & z) ^ (y & z));
4977 function Sigma0256 (x) {
4978 return (S(x,
2) ^ S(x,
13) ^ S(x,
22));
4981 function Sigma1256 (x) {
4982 return (S(x,
6) ^ S(x,
11) ^ S(x,
25));
4985 function Gamma0256 (x) {
4986 return (S(x,
7) ^ S(x,
18) ^ R(x,
3));
4989 function Gamma1256 (x) {
4990 return (S(x,
17) ^ S(x,
19) ^ R(x,
10));
4993 Sha256.prototype._update = function(m) {
4996 var a, b, c, d, e, f, g, h
5008 for (var j =
0; j <
64; j++) {
5009 var w = W[j] = j <
16
5010 ? M.readInt32BE(j *
4)
5011 : Gamma1256(W[j -
2]) + W[j -
7] + Gamma0256(W[j -
15]) + W[j -
16]
5013 T1 = h + Sigma1256(e) + Ch(e, f, g) + K[j] + w
5015 T2 = Sigma0256(a) + Maj(a, b, c);
5016 h = g; g = f; f = e; e = d + T1; d = c; c = b; b = a; a = T1 + T2;
5019 this._a = (a + this._a) |
0
5020 this._b = (b + this._b) |
0
5021 this._c = (c + this._c) |
0
5022 this._d = (d + this._d) |
0
5023 this._e = (e + this._e) |
0
5024 this._f = (f + this._f) |
0
5025 this._g = (g + this._g) |
0
5026 this._h = (h + this._h) |
0
5030 Sha256.prototype._hash = function () {
5031 if(POOL.length <
10)
5034 var H = new Buffer(
32)
5036 H.writeInt32BE(this._a,
0)
5037 H.writeInt32BE(this._b,
4)
5038 H.writeInt32BE(this._c,
8)
5039 H.writeInt32BE(this._d,
12)
5040 H.writeInt32BE(this._e,
16)
5041 H.writeInt32BE(this._f,
20)
5042 H.writeInt32BE(this._g,
24)
5043 H.writeInt32BE(this._h,
28)
5052 },{"./util":
26,"util":
14}],
26:[function(_dereq_,module,exports){
5053 exports.write = write
5054 exports.zeroFill = zeroFill
5056 exports.toString = toString
5058 function write (buffer, string, enc, start, from, to, LE) {
5060 if(enc === 'ascii' || enc === 'binary') {
5061 for( var i =
0; i < l; i++) {
5062 buffer[start + i] = string.charCodeAt(i + from)
5065 else if(enc == null) {
5066 for( var i =
0; i < l; i++) {
5067 buffer[start + i] = string[i + from]
5070 else if(enc === 'hex') {
5071 for(var i =
0; i < l; i++) {
5073 buffer[start + i] = parseInt(string[j*
2] + string[(j*
2)+
1],
16)
5076 else if(enc === 'base64') {
5077 throw new Error('base64 encoding not yet supported')
5080 throw new Error(enc +' encoding not yet supported')
5083 //always fill to the end!
5084 function zeroFill(buf, from) {
5085 for(var i = from; i < buf.length; i++)
5090 },{}],
27:[function(_dereq_,module,exports){
5092 // JavaScript PBKDF2 Implementation
5093 // Based on http://git.io/qsv2zw
5094 // Licensed under LGPL v3
5095 // Copyright (c)
2013 jduncanator
5098 var zeroBuffer = new Buffer(blocksize); zeroBuffer.fill(
0)
5100 module.exports = function (createHmac, exports) {
5101 exports = exports || {}
5103 exports.pbkdf2 = function(password, salt, iterations, keylen, cb) {
5104 if('function' !== typeof cb)
5105 throw new Error('No callback provided to pbkdf2');
5106 setTimeout(function () {
5107 cb(null, exports.pbkdf2Sync(password, salt, iterations, keylen))
5111 exports.pbkdf2Sync = function(key, salt, iterations, keylen) {
5112 if('number' !== typeof iterations)
5113 throw new TypeError('Iterations not a number')
5115 throw new TypeError('Bad iterations')
5116 if('number' !== typeof keylen)
5117 throw new TypeError('Key length not a number')
5119 throw new TypeError('Bad key length')
5121 //stretch key to the correct length that hmac wants it,
5122 //otherwise this will happen every time hmac is called
5123 //twice per iteration.
5124 var key = !Buffer.isBuffer(key) ? new Buffer(key) : key
5126 if(key.length
> blocksize) {
5127 key = createHash(alg).update(key).digest()
5128 } else if(key.length < blocksize) {
5129 key = Buffer.concat([key, zeroBuffer], blocksize)
5133 var cplen, p =
0, i =
1, itmp = new Buffer(
4), digtmp;
5134 var out = new Buffer(keylen);
5142 /* We are unlikely to ever use more than
256 blocks (
5120 bits!)
5143 * but just in case...
5145 itmp[
0] = (i
>> 24) &
0xff;
5146 itmp[
1] = (i
>> 16) &
0xff;
5147 itmp[
2] = (i
>> 8) &
0xff;
5150 HMAC = createHmac('sha1', key);
5153 digtmp = HMAC.digest();
5154 digtmp.copy(out, p,
0, cplen);
5156 for(var j =
1; j < iterations; j++) {
5157 HMAC = createHmac('sha1', key);
5158 HMAC.update(digtmp);
5159 digtmp = HMAC.digest();
5160 for(var k =
0; k < cplen; k++) {
5161 out[k] ^= digtmp[k];
5175 }).call(this,_dereq_(
"buffer").Buffer)
5176 },{
"buffer":
8}],
28:[function(_dereq_,module,exports){
5178 // Original code adapted from Robert Kieffer.
5179 // details at https://github.com/broofa/node-uuid
5185 var mathRNG, whatwgRNG;
5187 // NOTE: Math.random() does not guarantee
"cryptographic quality"
5188 mathRNG = function(size) {
5189 var bytes = new Buffer(size);
5192 for (var i =
0, r; i < size; i++) {
5193 if ((i &
0x03) ==
0) r = Math.random() *
0x100000000;
5194 bytes[i] = r
>>> ((i &
0x03) <<
3) &
0xff;
5200 if (_global.crypto && crypto.getRandomValues) {
5201 whatwgRNG = function(size) {
5202 var bytes = new Buffer(size); //in browserify, this is an extended Uint8Array
5203 crypto.getRandomValues(bytes);
5208 module.exports = whatwgRNG || mathRNG;
5212 }).call(this,_dereq_("buffer").Buffer)
5213 },{"buffer":
8}],
29:[function(_dereq_,module,exports){
5214 ;(function (root, factory, undef) {
5215 if (typeof exports === "object") {
5217 module.exports = exports = factory(_dereq_("./core"), _dereq_("./enc-base64"), _dereq_("./md5"), _dereq_("./evpkdf"), _dereq_("./cipher-core"));
5219 else if (typeof define === "function" && define.amd) {
5221 define(["./core", "./enc-base64", "./md5", "./evpkdf", "./cipher-core"], factory);
5225 factory(root.CryptoJS);
5227 }(this, function (CryptoJS) {
5233 var BlockCipher = C_lib.BlockCipher;
5234 var C_algo = C.algo;
5243 var INV_SUB_MIX_0 = [];
5244 var INV_SUB_MIX_1 = [];
5245 var INV_SUB_MIX_2 = [];
5246 var INV_SUB_MIX_3 = [];
5248 // Compute lookup tables
5250 // Compute double table
5252 for (var i =
0; i <
256; i++) {
5256 d[i] = (i <<
1) ^
0x11b;
5263 for (var i =
0; i <
256; i++) {
5265 var sx = xi ^ (xi <<
1) ^ (xi <<
2) ^ (xi <<
3) ^ (xi <<
4);
5266 sx = (sx
>>> 8) ^ (sx &
0xff) ^
0x63;
5270 // Compute multiplication
5275 // Compute sub bytes, mix columns tables
5276 var t = (d[sx] *
0x101) ^ (sx *
0x1010100);
5277 SUB_MIX_0[x] = (t <<
24) | (t
>>> 8);
5278 SUB_MIX_1[x] = (t <<
16) | (t
>>> 16);
5279 SUB_MIX_2[x] = (t <<
8) | (t
>>> 24);
5282 // Compute inv sub bytes, inv mix columns tables
5283 var t = (x8 *
0x1010101) ^ (x4 *
0x10001) ^ (x2 *
0x101) ^ (x *
0x1010100);
5284 INV_SUB_MIX_0[sx] = (t <<
24) | (t
>>> 8);
5285 INV_SUB_MIX_1[sx] = (t <<
16) | (t
>>> 16);
5286 INV_SUB_MIX_2[sx] = (t <<
8) | (t
>>> 24);
5287 INV_SUB_MIX_3[sx] = t;
5289 // Compute next counter
5293 x = x2 ^ d[d[d[x8 ^ x2]]];
5299 // Precomputed Rcon lookup
5300 var RCON = [
0x00,
0x01,
0x02,
0x04,
0x08,
0x10,
0x20,
0x40,
0x80,
0x1b,
0x36];
5303 * AES block cipher algorithm.
5305 var AES = C_algo.AES = BlockCipher.extend({
5306 _doReset: function () {
5308 var key = this._key;
5309 var keyWords = key.words;
5310 var keySize = key.sigBytes /
4;
5312 // Compute number of rounds
5313 var nRounds = this._nRounds = keySize +
6
5315 // Compute number of key schedule rows
5316 var ksRows = (nRounds +
1) *
4;
5318 // Compute key schedule
5319 var keySchedule = this._keySchedule = [];
5320 for (var ksRow =
0; ksRow < ksRows; ksRow++) {
5321 if (ksRow < keySize) {
5322 keySchedule[ksRow] = keyWords[ksRow];
5324 var t = keySchedule[ksRow -
1];
5326 if (!(ksRow % keySize)) {
5328 t = (t <<
8) | (t
>>> 24);
5331 t = (SBOX[t
>>> 24] <<
24) | (SBOX[(t
>>> 16) &
0xff] <<
16) | (SBOX[(t
>>> 8) &
0xff] <<
8) | SBOX[t &
0xff];
5334 t ^= RCON[(ksRow / keySize) |
0] <<
24;
5335 } else if (keySize
> 6 && ksRow % keySize ==
4) {
5337 t = (SBOX[t
>>> 24] <<
24) | (SBOX[(t
>>> 16) &
0xff] <<
16) | (SBOX[(t
>>> 8) &
0xff] <<
8) | SBOX[t &
0xff];
5340 keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;
5344 // Compute inv key schedule
5345 var invKeySchedule = this._invKeySchedule = [];
5346 for (var invKsRow =
0; invKsRow < ksRows; invKsRow++) {
5347 var ksRow = ksRows - invKsRow;
5350 var t = keySchedule[ksRow];
5352 var t = keySchedule[ksRow -
4];
5355 if (invKsRow <
4 || ksRow <=
4) {
5356 invKeySchedule[invKsRow] = t;
5358 invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t
>>> 24]] ^ INV_SUB_MIX_1[SBOX[(t
>>> 16) &
0xff]] ^
5359 INV_SUB_MIX_2[SBOX[(t
>>> 8) &
0xff]] ^ INV_SUB_MIX_3[SBOX[t &
0xff]];
5364 encryptBlock: function (M, offset) {
5365 this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);
5368 decryptBlock: function (M, offset) {
5369 // Swap
2nd and
4th rows
5370 var t = M[offset +
1];
5371 M[offset +
1] = M[offset +
3];
5374 this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);
5376 // Inv swap
2nd and
4th rows
5377 var t = M[offset +
1];
5378 M[offset +
1] = M[offset +
3];
5382 _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {
5384 var nRounds = this._nRounds;
5386 // Get input, add round key
5387 var s0 = M[offset] ^ keySchedule[
0];
5388 var s1 = M[offset +
1] ^ keySchedule[
1];
5389 var s2 = M[offset +
2] ^ keySchedule[
2];
5390 var s3 = M[offset +
3] ^ keySchedule[
3];
5392 // Key schedule row counter
5396 for (var round =
1; round < nRounds; round++) {
5397 // Shift rows, sub bytes, mix columns, add round key
5398 var t0 = SUB_MIX_0[s0
>>> 24] ^ SUB_MIX_1[(s1
>>> 16) &
0xff] ^ SUB_MIX_2[(s2
>>> 8) &
0xff] ^ SUB_MIX_3[s3 &
0xff] ^ keySchedule[ksRow++];
5399 var t1 = SUB_MIX_0[s1
>>> 24] ^ SUB_MIX_1[(s2
>>> 16) &
0xff] ^ SUB_MIX_2[(s3
>>> 8) &
0xff] ^ SUB_MIX_3[s0 &
0xff] ^ keySchedule[ksRow++];
5400 var t2 = SUB_MIX_0[s2
>>> 24] ^ SUB_MIX_1[(s3
>>> 16) &
0xff] ^ SUB_MIX_2[(s0
>>> 8) &
0xff] ^ SUB_MIX_3[s1 &
0xff] ^ keySchedule[ksRow++];
5401 var t3 = SUB_MIX_0[s3
>>> 24] ^ SUB_MIX_1[(s0
>>> 16) &
0xff] ^ SUB_MIX_2[(s1
>>> 8) &
0xff] ^ SUB_MIX_3[s2 &
0xff] ^ keySchedule[ksRow++];
5410 // Shift rows, sub bytes, add round key
5411 var t0 = ((SBOX[s0
>>> 24] <<
24) | (SBOX[(s1
>>> 16) &
0xff] <<
16) | (SBOX[(s2
>>> 8) &
0xff] <<
8) | SBOX[s3 &
0xff]) ^ keySchedule[ksRow++];
5412 var t1 = ((SBOX[s1
>>> 24] <<
24) | (SBOX[(s2
>>> 16) &
0xff] <<
16) | (SBOX[(s3
>>> 8) &
0xff] <<
8) | SBOX[s0 &
0xff]) ^ keySchedule[ksRow++];
5413 var t2 = ((SBOX[s2
>>> 24] <<
24) | (SBOX[(s3
>>> 16) &
0xff] <<
16) | (SBOX[(s0
>>> 8) &
0xff] <<
8) | SBOX[s1 &
0xff]) ^ keySchedule[ksRow++];
5414 var t3 = ((SBOX[s3
>>> 24] <<
24) | (SBOX[(s0
>>> 16) &
0xff] <<
16) | (SBOX[(s1
>>> 8) &
0xff] <<
8) | SBOX[s2 &
0xff]) ^ keySchedule[ksRow++];
5427 * Shortcut functions to the cipher's object interface.
5431 * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);
5432 * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);
5434 C.AES = BlockCipher._createHelper(AES);
5438 return CryptoJS.AES;
5441 },{
"./cipher-core":
30,
"./core":
31,
"./enc-base64":
32,
"./evpkdf":
34,
"./md5":
39}],
30:[function(_dereq_,module,exports){
5442 ;(function (root, factory) {
5443 if (typeof exports ===
"object") {
5445 module.exports = exports = factory(_dereq_(
"./core"));
5447 else if (typeof define ===
"function" && define.amd) {
5449 define([
"./core"], factory);
5453 factory(root.CryptoJS);
5455 }(this, function (CryptoJS) {
5458 * Cipher core components.
5460 CryptoJS.lib.Cipher || (function (undefined) {
5464 var Base = C_lib.Base;
5465 var WordArray = C_lib.WordArray;
5466 var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;
5468 var Utf8 = C_enc.Utf8;
5469 var Base64 = C_enc.Base64;
5470 var C_algo = C.algo;
5471 var EvpKDF = C_algo.EvpKDF;
5474 * Abstract base cipher template.
5476 * @property {number} keySize This cipher's key size. Default:
4 (
128 bits)
5477 * @property {number} ivSize This cipher's IV size. Default:
4 (
128 bits)
5478 * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.
5479 * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.
5481 var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({
5483 * Configuration options.
5485 * @property {WordArray} iv The IV to use for this operation.
5490 * Creates this cipher in encryption mode.
5492 * @param {WordArray} key The key.
5493 * @param {Object} cfg (Optional) The configuration options to use for this operation.
5495 * @return {Cipher} A cipher instance.
5501 * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });
5503 createEncryptor: function (key, cfg) {
5504 return this.create(this._ENC_XFORM_MODE, key, cfg);
5508 * Creates this cipher in decryption mode.
5510 * @param {WordArray} key The key.
5511 * @param {Object} cfg (Optional) The configuration options to use for this operation.
5513 * @return {Cipher} A cipher instance.
5519 * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });
5521 createDecryptor: function (key, cfg) {
5522 return this.create(this._DEC_XFORM_MODE, key, cfg);
5526 * Initializes a newly created cipher.
5528 * @param {number} xformMode Either the encryption or decryption transormation mode constant.
5529 * @param {WordArray} key The key.
5530 * @param {Object} cfg (Optional) The configuration options to use for this operation.
5534 * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });
5536 init: function (xformMode, key, cfg) {
5537 // Apply config defaults
5538 this.cfg = this.cfg.extend(cfg);
5540 // Store transform mode and key
5541 this._xformMode = xformMode;
5544 // Set initial values
5549 * Resets this cipher to its initial state.
5555 reset: function () {
5556 // Reset data buffer
5557 BufferedBlockAlgorithm.reset.call(this);
5559 // Perform concrete-cipher logic
5564 * Adds data to be encrypted or decrypted.
5566 * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.
5568 * @return {WordArray} The data after processing.
5572 * var encrypted = cipher.process('data');
5573 * var encrypted = cipher.process(wordArray);
5575 process: function (dataUpdate) {
5577 this._append(dataUpdate);
5579 // Process available blocks
5580 return this._process();
5584 * Finalizes the encryption or decryption process.
5585 * Note that the finalize operation is effectively a destructive, read-once operation.
5587 * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.
5589 * @return {WordArray} The data after final processing.
5593 * var encrypted = cipher.finalize();
5594 * var encrypted = cipher.finalize('data');
5595 * var encrypted = cipher.finalize(wordArray);
5597 finalize: function (dataUpdate) {
5598 // Final data update
5600 this._append(dataUpdate);
5603 // Perform concrete-cipher logic
5604 var finalProcessedData = this._doFinalize();
5606 return finalProcessedData;
5618 * Creates shortcut functions to a cipher's object interface.
5620 * @param {Cipher} cipher The cipher to create a helper for.
5622 * @return {Object} An object with encrypt and decrypt shortcut functions.
5628 * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);
5630 _createHelper: (function () {
5631 function selectCipherStrategy(key) {
5632 if (typeof key == 'string') {
5633 return PasswordBasedCipher;
5635 return SerializableCipher;
5639 return function (cipher) {
5641 encrypt: function (message, key, cfg) {
5642 return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);
5645 decrypt: function (ciphertext, key, cfg) {
5646 return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);
5654 * Abstract base stream cipher template.
5656 * @property {number} blockSize The number of
32-bit words this cipher operates on. Default:
1 (
32 bits)
5658 var StreamCipher = C_lib.StreamCipher = Cipher.extend({
5659 _doFinalize: function () {
5660 // Process partial blocks
5661 var finalProcessedBlocks = this._process(!!'flush');
5663 return finalProcessedBlocks;
5672 var C_mode = C.mode = {};
5675 * Abstract base block cipher mode template.
5677 var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({
5679 * Creates this mode for encryption.
5681 * @param {Cipher} cipher A block cipher instance.
5682 * @param {Array} iv The IV words.
5688 * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);
5690 createEncryptor: function (cipher, iv) {
5691 return this.Encryptor.create(cipher, iv);
5695 * Creates this mode for decryption.
5697 * @param {Cipher} cipher A block cipher instance.
5698 * @param {Array} iv The IV words.
5704 * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);
5706 createDecryptor: function (cipher, iv) {
5707 return this.Decryptor.create(cipher, iv);
5711 * Initializes a newly created mode.
5713 * @param {Cipher} cipher A block cipher instance.
5714 * @param {Array} iv The IV words.
5718 * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);
5720 init: function (cipher, iv) {
5721 this._cipher = cipher;
5727 * Cipher Block Chaining mode.
5729 var CBC = C_mode.CBC = (function () {
5731 * Abstract base CBC mode.
5733 var CBC = BlockCipherMode.extend();
5738 CBC.Encryptor = CBC.extend({
5740 * Processes the data block at offset.
5742 * @param {Array} words The data words to operate on.
5743 * @param {number} offset The offset where the block starts.
5747 * mode.processBlock(data.words, offset);
5749 processBlock: function (words, offset) {
5751 var cipher = this._cipher;
5752 var blockSize = cipher.blockSize;
5755 xorBlock.call(this, words, offset, blockSize);
5756 cipher.encryptBlock(words, offset);
5758 // Remember this block to use with next block
5759 this._prevBlock = words.slice(offset, offset + blockSize);
5766 CBC.Decryptor = CBC.extend({
5768 * Processes the data block at offset.
5770 * @param {Array} words The data words to operate on.
5771 * @param {number} offset The offset where the block starts.
5775 * mode.processBlock(data.words, offset);
5777 processBlock: function (words, offset) {
5779 var cipher = this._cipher;
5780 var blockSize = cipher.blockSize;
5782 // Remember this block to use with next block
5783 var thisBlock = words.slice(offset, offset + blockSize);
5786 cipher.decryptBlock(words, offset);
5787 xorBlock.call(this, words, offset, blockSize);
5789 // This block becomes the previous block
5790 this._prevBlock = thisBlock;
5794 function xorBlock(words, offset, blockSize) {
5798 // Choose mixing block
5802 // Remove IV for subsequent blocks
5803 this._iv = undefined;
5805 var block = this._prevBlock;
5809 for (var i =
0; i < blockSize; i++) {
5810 words[offset + i] ^= block[i];
5818 * Padding namespace.
5820 var C_pad = C.pad = {};
5823 * PKCS #
5/
7 padding strategy.
5825 var Pkcs7 = C_pad.Pkcs7 = {
5827 * Pads data using the algorithm defined in PKCS #
5/
7.
5829 * @param {WordArray} data The data to pad.
5830 * @param {number} blockSize The multiple that the data should be padded to.
5836 * CryptoJS.pad.Pkcs7.pad(wordArray,
4);
5838 pad: function (data, blockSize) {
5840 var blockSizeBytes = blockSize *
4;
5842 // Count padding bytes
5843 var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;
5845 // Create padding word
5846 var paddingWord = (nPaddingBytes <<
24) | (nPaddingBytes <<
16) | (nPaddingBytes <<
8) | nPaddingBytes;
5849 var paddingWords = [];
5850 for (var i =
0; i < nPaddingBytes; i +=
4) {
5851 paddingWords.push(paddingWord);
5853 var padding = WordArray.create(paddingWords, nPaddingBytes);
5856 data.concat(padding);
5860 * Unpads data that had been padded using the algorithm defined in PKCS #
5/
7.
5862 * @param {WordArray} data The data to unpad.
5868 * CryptoJS.pad.Pkcs7.unpad(wordArray);
5870 unpad: function (data) {
5871 // Get number of padding bytes from last byte
5872 var nPaddingBytes = data.words[(data.sigBytes -
1)
>>> 2] &
0xff;
5875 data.sigBytes -= nPaddingBytes;
5880 * Abstract base block cipher template.
5882 * @property {number} blockSize The number of
32-bit words this cipher operates on. Default:
4 (
128 bits)
5884 var BlockCipher = C_lib.BlockCipher = Cipher.extend({
5886 * Configuration options.
5888 * @property {Mode} mode The block mode to use. Default: CBC
5889 * @property {Padding} padding The padding strategy to use. Default: Pkcs7
5891 cfg: Cipher.cfg.extend({
5896 reset: function () {
5898 Cipher.reset.call(this);
5903 var mode = cfg.mode;
5906 if (this._xformMode == this._ENC_XFORM_MODE) {
5907 var modeCreator = mode.createEncryptor;
5908 } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {
5909 var modeCreator = mode.createDecryptor;
5911 // Keep at least one block in the buffer for unpadding
5912 this._minBufferSize =
1;
5914 this._mode = modeCreator.call(mode, this, iv && iv.words);
5917 _doProcessBlock: function (words, offset) {
5918 this._mode.processBlock(words, offset);
5921 _doFinalize: function () {
5923 var padding = this.cfg.padding;
5926 if (this._xformMode == this._ENC_XFORM_MODE) {
5928 padding.pad(this._data, this.blockSize);
5930 // Process final blocks
5931 var finalProcessedBlocks = this._process(!!'flush');
5932 } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {
5933 // Process final blocks
5934 var finalProcessedBlocks = this._process(!!'flush');
5937 padding.unpad(finalProcessedBlocks);
5940 return finalProcessedBlocks;
5947 * A collection of cipher parameters.
5949 * @property {WordArray} ciphertext The raw ciphertext.
5950 * @property {WordArray} key The key to this ciphertext.
5951 * @property {WordArray} iv The IV used in the ciphering operation.
5952 * @property {WordArray} salt The salt used with a key derivation function.
5953 * @property {Cipher} algorithm The cipher algorithm.
5954 * @property {Mode} mode The block mode used in the ciphering operation.
5955 * @property {Padding} padding The padding scheme used in the ciphering operation.
5956 * @property {number} blockSize The block size of the cipher.
5957 * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.
5959 var CipherParams = C_lib.CipherParams = Base.extend({
5961 * Initializes a newly created cipher params object.
5963 * @param {Object} cipherParams An object with any of the possible cipher parameters.
5967 * var cipherParams = CryptoJS.lib.CipherParams.create({
5968 * ciphertext: ciphertextWordArray,
5969 * key: keyWordArray,
5971 * salt: saltWordArray,
5972 * algorithm: CryptoJS.algo.AES,
5973 * mode: CryptoJS.mode.CBC,
5974 * padding: CryptoJS.pad.PKCS7,
5976 * formatter: CryptoJS.format.OpenSSL
5979 init: function (cipherParams) {
5980 this.mixIn(cipherParams);
5984 * Converts this cipher params object to a string.
5986 * @param {Format} formatter (Optional) The formatting strategy to use.
5988 * @return {string} The stringified cipher params.
5990 * @throws Error If neither the formatter nor the default formatter is set.
5994 * var string = cipherParams + '';
5995 * var string = cipherParams.toString();
5996 * var string = cipherParams.toString(CryptoJS.format.OpenSSL);
5998 toString: function (formatter) {
5999 return (formatter || this.formatter).stringify(this);
6006 var C_format = C.format = {};
6009 * OpenSSL formatting strategy.
6011 var OpenSSLFormatter = C_format.OpenSSL = {
6013 * Converts a cipher params object to an OpenSSL-compatible string.
6015 * @param {CipherParams} cipherParams The cipher params object.
6017 * @return {string} The OpenSSL-compatible string.
6023 * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);
6025 stringify: function (cipherParams) {
6027 var ciphertext = cipherParams.ciphertext;
6028 var salt = cipherParams.salt;
6032 var wordArray = WordArray.create([
0x53616c74,
0x65645f5f]).concat(salt).concat(ciphertext);
6034 var wordArray = ciphertext;
6037 return wordArray.toString(Base64);
6041 * Converts an OpenSSL-compatible string to a cipher params object.
6043 * @param {string} openSSLStr The OpenSSL-compatible string.
6045 * @return {CipherParams} The cipher params object.
6051 * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);
6053 parse: function (openSSLStr) {
6055 var ciphertext = Base64.parse(openSSLStr);
6058 var ciphertextWords = ciphertext.words;
6061 if (ciphertextWords[
0] ==
0x53616c74 && ciphertextWords[
1] ==
0x65645f5f) {
6063 var salt = WordArray.create(ciphertextWords.slice(
2,
4));
6065 // Remove salt from ciphertext
6066 ciphertextWords.splice(
0,
4);
6067 ciphertext.sigBytes -=
16;
6070 return CipherParams.create({ ciphertext: ciphertext, salt: salt });
6075 * A cipher wrapper that returns ciphertext as a serializable cipher params object.
6077 var SerializableCipher = C_lib.SerializableCipher = Base.extend({
6079 * Configuration options.
6081 * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL
6084 format: OpenSSLFormatter
6088 * Encrypts a message.
6090 * @param {Cipher} cipher The cipher algorithm to use.
6091 * @param {WordArray|string} message The message to encrypt.
6092 * @param {WordArray} key The key.
6093 * @param {Object} cfg (Optional) The configuration options to use for this operation.
6095 * @return {CipherParams} A cipher params object.
6101 * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);
6102 * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });
6103 * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });
6105 encrypt: function (cipher, message, key, cfg) {
6106 // Apply config defaults
6107 cfg = this.cfg.extend(cfg);
6110 var encryptor = cipher.createEncryptor(key, cfg);
6111 var ciphertext = encryptor.finalize(message);
6114 var cipherCfg = encryptor.cfg;
6116 // Create and return serializable cipher params
6117 return CipherParams.create({
6118 ciphertext: ciphertext,
6122 mode: cipherCfg.mode,
6123 padding: cipherCfg.padding,
6124 blockSize: cipher.blockSize,
6125 formatter: cfg.format
6130 * Decrypts serialized ciphertext.
6132 * @param {Cipher} cipher The cipher algorithm to use.
6133 * @param {CipherParams|string} ciphertext The ciphertext to decrypt.
6134 * @param {WordArray} key The key.
6135 * @param {Object} cfg (Optional) The configuration options to use for this operation.
6137 * @return {WordArray} The plaintext.
6143 * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });
6144 * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });
6146 decrypt: function (cipher, ciphertext, key, cfg) {
6147 // Apply config defaults
6148 cfg = this.cfg.extend(cfg);
6150 // Convert string to CipherParams
6151 ciphertext = this._parse(ciphertext, cfg.format);
6154 var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);
6160 * Converts serialized ciphertext to CipherParams,
6161 * else assumed CipherParams already and returns ciphertext unchanged.
6163 * @param {CipherParams|string} ciphertext The ciphertext.
6164 * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.
6166 * @return {CipherParams} The unserialized ciphertext.
6172 * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);
6174 _parse: function (ciphertext, format) {
6175 if (typeof ciphertext == 'string') {
6176 return format.parse(ciphertext, this);
6184 * Key derivation function namespace.
6186 var C_kdf = C.kdf = {};
6189 * OpenSSL key derivation function.
6191 var OpenSSLKdf = C_kdf.OpenSSL = {
6193 * Derives a key and IV from a password.
6195 * @param {string} password The password to derive from.
6196 * @param {number} keySize The size in words of the key to generate.
6197 * @param {number} ivSize The size in words of the IV to generate.
6198 * @param {WordArray|string} salt (Optional) A
64-bit salt to use. If omitted, a salt will be generated randomly.
6200 * @return {CipherParams} A cipher params object with the key, IV, and salt.
6206 * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password',
256/
32,
128/
32);
6207 * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password',
256/
32,
128/
32, 'saltsalt');
6209 execute: function (password, keySize, ivSize, salt) {
6210 // Generate random salt
6212 salt = WordArray.random(
64/
8);
6215 // Derive key and IV
6216 var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);
6218 // Separate key and IV
6219 var iv = WordArray.create(key.words.slice(keySize), ivSize *
4);
6220 key.sigBytes = keySize *
4;
6223 return CipherParams.create({ key: key, iv: iv, salt: salt });
6228 * A serializable cipher wrapper that derives the key from a password,
6229 * and returns ciphertext as a serializable cipher params object.
6231 var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({
6233 * Configuration options.
6235 * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL
6237 cfg: SerializableCipher.cfg.extend({
6242 * Encrypts a message using a password.
6244 * @param {Cipher} cipher The cipher algorithm to use.
6245 * @param {WordArray|string} message The message to encrypt.
6246 * @param {string} password The password.
6247 * @param {Object} cfg (Optional) The configuration options to use for this operation.
6249 * @return {CipherParams} A cipher params object.
6255 * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');
6256 * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });
6258 encrypt: function (cipher, message, password, cfg) {
6259 // Apply config defaults
6260 cfg = this.cfg.extend(cfg);
6262 // Derive key and other params
6263 var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);
6266 cfg.iv = derivedParams.iv;
6269 var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);
6271 // Mix in derived params
6272 ciphertext.mixIn(derivedParams);
6278 * Decrypts serialized ciphertext using a password.
6280 * @param {Cipher} cipher The cipher algorithm to use.
6281 * @param {CipherParams|string} ciphertext The ciphertext to decrypt.
6282 * @param {string} password The password.
6283 * @param {Object} cfg (Optional) The configuration options to use for this operation.
6285 * @return {WordArray} The plaintext.
6291 * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });
6292 * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });
6294 decrypt: function (cipher, ciphertext, password, cfg) {
6295 // Apply config defaults
6296 cfg = this.cfg.extend(cfg);
6298 // Convert string to CipherParams
6299 ciphertext = this._parse(ciphertext, cfg.format);
6301 // Derive key and other params
6302 var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);
6305 cfg.iv = derivedParams.iv;
6308 var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);
6317 },{
"./core":
31}],
31:[function(_dereq_,module,exports){
6318 ;(function (root, factory) {
6319 if (typeof exports ===
"object") {
6321 module.exports = exports = factory();
6323 else if (typeof define ===
"function" && define.amd) {
6325 define([], factory);
6329 root.CryptoJS = factory();
6331 }(this, function () {
6334 * CryptoJS core components.
6336 var CryptoJS = CryptoJS || (function (Math, undefined) {
6338 * CryptoJS namespace.
6343 * Library namespace.
6345 var C_lib = C.lib = {};
6348 * Base object for prototypal inheritance.
6350 var Base = C_lib.Base = (function () {
6355 * Creates a new object that inherits from this object.
6357 * @param {Object} overrides Properties to copy into the new object.
6359 * @return {Object} The new object.
6365 * var MyType = CryptoJS.lib.Base.extend({
6368 * method: function () {
6372 extend: function (overrides) {
6375 var subtype = new F();
6379 subtype.mixIn(overrides);
6382 // Create default initializer
6383 if (!subtype.hasOwnProperty('init')) {
6384 subtype.init = function () {
6385 subtype.$super.init.apply(this, arguments);
6389 // Initializer's prototype is the subtype object
6390 subtype.init.prototype = subtype;
6392 // Reference supertype
6393 subtype.$super = this;
6399 * Extends this object and runs the init method.
6400 * Arguments to create() will be passed to init().
6402 * @return {Object} The new object.
6408 * var instance = MyType.create();
6410 create: function () {
6411 var instance = this.extend();
6412 instance.init.apply(instance, arguments);
6418 * Initializes a newly created object.
6419 * Override this method to add some logic when your objects are created.
6423 * var MyType = CryptoJS.lib.Base.extend({
6424 * init: function () {
6433 * Copies properties into this object.
6435 * @param {Object} properties The properties to mix in.
6443 mixIn: function (properties) {
6444 for (var propertyName in properties) {
6445 if (properties.hasOwnProperty(propertyName)) {
6446 this[propertyName] = properties[propertyName];
6450 // IE won't copy toString using the loop above
6451 if (properties.hasOwnProperty('toString')) {
6452 this.toString = properties.toString;
6457 * Creates a copy of this object.
6459 * @return {Object} The clone.
6463 * var clone = instance.clone();
6465 clone: function () {
6466 return this.init.prototype.extend(this);
6472 * An array of
32-bit words.
6474 * @property {Array} words The array of
32-bit words.
6475 * @property {number} sigBytes The number of significant bytes in this word array.
6477 var WordArray = C_lib.WordArray = Base.extend({
6479 * Initializes a newly created word array.
6481 * @param {Array} words (Optional) An array of
32-bit words.
6482 * @param {number} sigBytes (Optional) The number of significant bytes in the words.
6486 * var wordArray = CryptoJS.lib.WordArray.create();
6487 * var wordArray = CryptoJS.lib.WordArray.create([
0x00010203,
0x04050607]);
6488 * var wordArray = CryptoJS.lib.WordArray.create([
0x00010203,
0x04050607],
6);
6490 init: function (words, sigBytes) {
6491 words = this.words = words || [];
6493 if (sigBytes != undefined) {
6494 this.sigBytes = sigBytes;
6496 this.sigBytes = words.length *
4;
6501 * Converts this word array to a string.
6503 * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex
6505 * @return {string} The stringified word array.
6509 * var string = wordArray + '';
6510 * var string = wordArray.toString();
6511 * var string = wordArray.toString(CryptoJS.enc.Utf8);
6513 toString: function (encoder) {
6514 return (encoder || Hex).stringify(this);
6518 * Concatenates a word array to this word array.
6520 * @param {WordArray} wordArray The word array to append.
6522 * @return {WordArray} This word array.
6526 * wordArray1.concat(wordArray2);
6528 concat: function (wordArray) {
6530 var thisWords = this.words;
6531 var thatWords = wordArray.words;
6532 var thisSigBytes = this.sigBytes;
6533 var thatSigBytes = wordArray.sigBytes;
6535 // Clamp excess bits
6539 if (thisSigBytes %
4) {
6540 // Copy one byte at a time
6541 for (var i =
0; i < thatSigBytes; i++) {
6542 var thatByte = (thatWords[i
>>> 2]
>>> (
24 - (i %
4) *
8)) &
0xff;
6543 thisWords[(thisSigBytes + i)
>>> 2] |= thatByte << (
24 - ((thisSigBytes + i) %
4) *
8);
6545 } else if (thatWords.length
> 0xffff) {
6546 // Copy one word at a time
6547 for (var i =
0; i < thatSigBytes; i +=
4) {
6548 thisWords[(thisSigBytes + i)
>>> 2] = thatWords[i
>>> 2];
6551 // Copy all words at once
6552 thisWords.push.apply(thisWords, thatWords);
6554 this.sigBytes += thatSigBytes;
6561 * Removes insignificant bits.
6565 * wordArray.clamp();
6567 clamp: function () {
6569 var words = this.words;
6570 var sigBytes = this.sigBytes;
6573 words[sigBytes
>>> 2] &=
0xffffffff << (
32 - (sigBytes %
4) *
8);
6574 words.length = Math.ceil(sigBytes /
4);
6578 * Creates a copy of this word array.
6580 * @return {WordArray} The clone.
6584 * var clone = wordArray.clone();
6586 clone: function () {
6587 var clone = Base.clone.call(this);
6588 clone.words = this.words.slice(
0);
6594 * Creates a word array filled with random bytes.
6596 * @param {number} nBytes The number of random bytes to generate.
6598 * @return {WordArray} The random word array.
6604 * var wordArray = CryptoJS.lib.WordArray.random(
16);
6606 random: function (nBytes) {
6608 for (var i =
0; i < nBytes; i +=
4) {
6609 words.push((Math.random() *
0x100000000) |
0);
6612 return new WordArray.init(words, nBytes);
6617 * Encoder namespace.
6619 var C_enc = C.enc = {};
6622 * Hex encoding strategy.
6624 var Hex = C_enc.Hex = {
6626 * Converts a word array to a hex string.
6628 * @param {WordArray} wordArray The word array.
6630 * @return {string} The hex string.
6636 * var hexString = CryptoJS.enc.Hex.stringify(wordArray);
6638 stringify: function (wordArray) {
6640 var words = wordArray.words;
6641 var sigBytes = wordArray.sigBytes;
6645 for (var i =
0; i < sigBytes; i++) {
6646 var bite = (words[i
>>> 2]
>>> (
24 - (i %
4) *
8)) &
0xff;
6647 hexChars.push((bite
>>> 4).toString(
16));
6648 hexChars.push((bite &
0x0f).toString(
16));
6651 return hexChars.join('');
6655 * Converts a hex string to a word array.
6657 * @param {string} hexStr The hex string.
6659 * @return {WordArray} The word array.
6665 * var wordArray = CryptoJS.enc.Hex.parse(hexString);
6667 parse: function (hexStr) {
6669 var hexStrLength = hexStr.length;
6673 for (var i =
0; i < hexStrLength; i +=
2) {
6674 words[i
>>> 3] |= parseInt(hexStr.substr(i,
2),
16) << (
24 - (i %
8) *
4);
6677 return new WordArray.init(words, hexStrLength /
2);
6682 * Latin1 encoding strategy.
6684 var Latin1 = C_enc.Latin1 = {
6686 * Converts a word array to a Latin1 string.
6688 * @param {WordArray} wordArray The word array.
6690 * @return {string} The Latin1 string.
6696 * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);
6698 stringify: function (wordArray) {
6700 var words = wordArray.words;
6701 var sigBytes = wordArray.sigBytes;
6704 var latin1Chars = [];
6705 for (var i =
0; i < sigBytes; i++) {
6706 var bite = (words[i
>>> 2]
>>> (
24 - (i %
4) *
8)) &
0xff;
6707 latin1Chars.push(String.fromCharCode(bite));
6710 return latin1Chars.join('');
6714 * Converts a Latin1 string to a word array.
6716 * @param {string} latin1Str The Latin1 string.
6718 * @return {WordArray} The word array.
6724 * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);
6726 parse: function (latin1Str) {
6728 var latin1StrLength = latin1Str.length;
6732 for (var i =
0; i < latin1StrLength; i++) {
6733 words[i
>>> 2] |= (latin1Str.charCodeAt(i) &
0xff) << (
24 - (i %
4) *
8);
6736 return new WordArray.init(words, latin1StrLength);
6741 * UTF-
8 encoding strategy.
6743 var Utf8 = C_enc.Utf8 = {
6745 * Converts a word array to a UTF-
8 string.
6747 * @param {WordArray} wordArray The word array.
6749 * @return {string} The UTF-
8 string.
6755 * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);
6757 stringify: function (wordArray) {
6759 return decodeURIComponent(escape(Latin1.stringify(wordArray)));
6761 throw new Error('Malformed UTF-
8 data');
6766 * Converts a UTF-
8 string to a word array.
6768 * @param {string} utf8Str The UTF-
8 string.
6770 * @return {WordArray} The word array.
6776 * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);
6778 parse: function (utf8Str) {
6779 return Latin1.parse(unescape(encodeURIComponent(utf8Str)));
6784 * Abstract buffered block algorithm template.
6786 * The property blockSize must be implemented in a concrete subtype.
6788 * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default:
0
6790 var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({
6792 * Resets this block algorithm's data buffer to its initial state.
6796 * bufferedBlockAlgorithm.reset();
6798 reset: function () {
6800 this._data = new WordArray.init();
6801 this._nDataBytes =
0;
6805 * Adds new data to this block algorithm's buffer.
6807 * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-
8.
6811 * bufferedBlockAlgorithm._append('data');
6812 * bufferedBlockAlgorithm._append(wordArray);
6814 _append: function (data) {
6815 // Convert string to WordArray, else assume WordArray already
6816 if (typeof data == 'string') {
6817 data = Utf8.parse(data);
6821 this._data.concat(data);
6822 this._nDataBytes += data.sigBytes;
6826 * Processes available data blocks.
6828 * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.
6830 * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.
6832 * @return {WordArray} The processed data.
6836 * var processedData = bufferedBlockAlgorithm._process();
6837 * var processedData = bufferedBlockAlgorithm._process(!!'flush');
6839 _process: function (doFlush) {
6841 var data = this._data;
6842 var dataWords = data.words;
6843 var dataSigBytes = data.sigBytes;
6844 var blockSize = this.blockSize;
6845 var blockSizeBytes = blockSize *
4;
6847 // Count blocks ready
6848 var nBlocksReady = dataSigBytes / blockSizeBytes;
6850 // Round up to include partial blocks
6851 nBlocksReady = Math.ceil(nBlocksReady);
6853 // Round down to include only full blocks,
6854 // less the number of blocks that must remain in the buffer
6855 nBlocksReady = Math.max((nBlocksReady |
0) - this._minBufferSize,
0);
6858 // Count words ready
6859 var nWordsReady = nBlocksReady * blockSize;
6861 // Count bytes ready
6862 var nBytesReady = Math.min(nWordsReady *
4, dataSigBytes);
6866 for (var offset =
0; offset < nWordsReady; offset += blockSize) {
6867 // Perform concrete-algorithm logic
6868 this._doProcessBlock(dataWords, offset);
6871 // Remove processed words
6872 var processedWords = dataWords.splice(
0, nWordsReady);
6873 data.sigBytes -= nBytesReady;
6876 // Return processed words
6877 return new WordArray.init(processedWords, nBytesReady);
6881 * Creates a copy of this object.
6883 * @return {Object} The clone.
6887 * var clone = bufferedBlockAlgorithm.clone();
6889 clone: function () {
6890 var clone = Base.clone.call(this);
6891 clone._data = this._data.clone();
6900 * Abstract hasher template.
6902 * @property {number} blockSize The number of
32-bit words this hasher operates on. Default:
16 (
512 bits)
6904 var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({
6906 * Configuration options.
6911 * Initializes a newly created hasher.
6913 * @param {Object} cfg (Optional) The configuration options to use for this hash computation.
6917 * var hasher = CryptoJS.algo.SHA256.create();
6919 init: function (cfg) {
6920 // Apply config defaults
6921 this.cfg = this.cfg.extend(cfg);
6923 // Set initial values
6928 * Resets this hasher to its initial state.
6934 reset: function () {
6935 // Reset data buffer
6936 BufferedBlockAlgorithm.reset.call(this);
6938 // Perform concrete-hasher logic
6943 * Updates this hasher with a message.
6945 * @param {WordArray|string} messageUpdate The message to append.
6947 * @return {Hasher} This hasher.
6951 * hasher.update('message');
6952 * hasher.update(wordArray);
6954 update: function (messageUpdate) {
6956 this._append(messageUpdate);
6966 * Finalizes the hash computation.
6967 * Note that the finalize operation is effectively a destructive, read-once operation.
6969 * @param {WordArray|string} messageUpdate (Optional) A final message update.
6971 * @return {WordArray} The hash.
6975 * var hash = hasher.finalize();
6976 * var hash = hasher.finalize('message');
6977 * var hash = hasher.finalize(wordArray);
6979 finalize: function (messageUpdate) {
6980 // Final message update
6981 if (messageUpdate) {
6982 this._append(messageUpdate);
6985 // Perform concrete-hasher logic
6986 var hash = this._doFinalize();
6994 * Creates a shortcut function to a hasher's object interface.
6996 * @param {Hasher} hasher The hasher to create a helper for.
6998 * @return {Function} The shortcut function.
7004 * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);
7006 _createHelper: function (hasher) {
7007 return function (message, cfg) {
7008 return new hasher.init(cfg).finalize(message);
7013 * Creates a shortcut function to the HMAC's object interface.
7015 * @param {Hasher} hasher The hasher to use in this HMAC helper.
7017 * @return {Function} The shortcut function.
7023 * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);
7025 _createHmacHelper: function (hasher) {
7026 return function (message, key) {
7027 return new C_algo.HMAC.init(hasher, key).finalize(message);
7033 * Algorithm namespace.
7035 var C_algo = C.algo = {};
7044 },{}],
32:[function(_dereq_,module,exports){
7045 ;(function (root, factory) {
7046 if (typeof exports ===
"object") {
7048 module.exports = exports = factory(_dereq_(
"./core"));
7050 else if (typeof define ===
"function" && define.amd) {
7052 define([
"./core"], factory);
7056 factory(root.CryptoJS);
7058 }(this, function (CryptoJS) {
7064 var WordArray = C_lib.WordArray;
7068 * Base64 encoding strategy.
7070 var Base64 = C_enc.Base64 = {
7072 * Converts a word array to a Base64 string.
7074 * @param {WordArray} wordArray The word array.
7076 * @return {string} The Base64 string.
7082 * var base64String = CryptoJS.enc.Base64.stringify(wordArray);
7084 stringify: function (wordArray) {
7086 var words = wordArray.words;
7087 var sigBytes = wordArray.sigBytes;
7088 var map = this._map;
7090 // Clamp excess bits
7094 var base64Chars = [];
7095 for (var i =
0; i < sigBytes; i +=
3) {
7096 var byte1 = (words[i
>>> 2]
>>> (
24 - (i %
4) *
8)) &
0xff;
7097 var byte2 = (words[(i +
1)
>>> 2]
>>> (
24 - ((i +
1) %
4) *
8)) &
0xff;
7098 var byte3 = (words[(i +
2)
>>> 2]
>>> (
24 - ((i +
2) %
4) *
8)) &
0xff;
7100 var triplet = (byte1 <<
16) | (byte2 <<
8) | byte3;
7102 for (var j =
0; (j <
4) && (i + j *
0.75 < sigBytes); j++) {
7103 base64Chars.push(map.charAt((triplet
>>> (
6 * (
3 - j))) &
0x3f));
7108 var paddingChar = map.charAt(
64);
7110 while (base64Chars.length %
4) {
7111 base64Chars.push(paddingChar);
7115 return base64Chars.join('');
7119 * Converts a Base64 string to a word array.
7121 * @param {string} base64Str The Base64 string.
7123 * @return {WordArray} The word array.
7129 * var wordArray = CryptoJS.enc.Base64.parse(base64String);
7131 parse: function (base64Str) {
7133 var base64StrLength = base64Str.length;
7134 var map = this._map;
7137 var paddingChar = map.charAt(
64);
7139 var paddingIndex = base64Str.indexOf(paddingChar);
7140 if (paddingIndex != -
1) {
7141 base64StrLength = paddingIndex;
7148 for (var i =
0; i < base64StrLength; i++) {
7150 var bits1 = map.indexOf(base64Str.charAt(i -
1)) << ((i %
4) *
2);
7151 var bits2 = map.indexOf(base64Str.charAt(i))
>>> (
6 - (i %
4) *
2);
7152 words[nBytes
>>> 2] |= (bits1 | bits2) << (
24 - (nBytes %
4) *
8);
7157 return WordArray.create(words, nBytes);
7160 _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='
7165 return CryptoJS.enc.Base64;
7168 },{
"./core":
31}],
33:[function(_dereq_,module,exports){
7169 ;(function (root, factory) {
7170 if (typeof exports ===
"object") {
7172 module.exports = exports = factory(_dereq_(
"./core"));
7174 else if (typeof define ===
"function" && define.amd) {
7176 define([
"./core"], factory);
7180 factory(root.CryptoJS);
7182 }(this, function (CryptoJS) {
7188 var WordArray = C_lib.WordArray;
7192 * UTF-
16 BE encoding strategy.
7194 var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {
7196 * Converts a word array to a UTF-
16 BE string.
7198 * @param {WordArray} wordArray The word array.
7200 * @return {string} The UTF-
16 BE string.
7206 * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);
7208 stringify: function (wordArray) {
7210 var words = wordArray.words;
7211 var sigBytes = wordArray.sigBytes;
7214 var utf16Chars = [];
7215 for (var i =
0; i < sigBytes; i +=
2) {
7216 var codePoint = (words[i
>>> 2]
>>> (
16 - (i %
4) *
8)) &
0xffff;
7217 utf16Chars.push(String.fromCharCode(codePoint));
7220 return utf16Chars.join('');
7224 * Converts a UTF-
16 BE string to a word array.
7226 * @param {string} utf16Str The UTF-
16 BE string.
7228 * @return {WordArray} The word array.
7234 * var wordArray = CryptoJS.enc.Utf16.parse(utf16String);
7236 parse: function (utf16Str) {
7238 var utf16StrLength = utf16Str.length;
7242 for (var i =
0; i < utf16StrLength; i++) {
7243 words[i
>>> 1] |= utf16Str.charCodeAt(i) << (
16 - (i %
2) *
16);
7246 return WordArray.create(words, utf16StrLength *
2);
7251 * UTF-
16 LE encoding strategy.
7255 * Converts a word array to a UTF-
16 LE string.
7257 * @param {WordArray} wordArray The word array.
7259 * @return {string} The UTF-
16 LE string.
7265 * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);
7267 stringify: function (wordArray) {
7269 var words = wordArray.words;
7270 var sigBytes = wordArray.sigBytes;
7273 var utf16Chars = [];
7274 for (var i =
0; i < sigBytes; i +=
2) {
7275 var codePoint = swapEndian((words[i
>>> 2]
>>> (
16 - (i %
4) *
8)) &
0xffff);
7276 utf16Chars.push(String.fromCharCode(codePoint));
7279 return utf16Chars.join('');
7283 * Converts a UTF-
16 LE string to a word array.
7285 * @param {string} utf16Str The UTF-
16 LE string.
7287 * @return {WordArray} The word array.
7293 * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);
7295 parse: function (utf16Str) {
7297 var utf16StrLength = utf16Str.length;
7301 for (var i =
0; i < utf16StrLength; i++) {
7302 words[i
>>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (
16 - (i %
2) *
16));
7305 return WordArray.create(words, utf16StrLength *
2);
7309 function swapEndian(word) {
7310 return ((word <<
8) &
0xff00ff00) | ((word
>>> 8) &
0x00ff00ff);
7315 return CryptoJS.enc.Utf16;
7318 },{
"./core":
31}],
34:[function(_dereq_,module,exports){
7319 ;(function (root, factory, undef) {
7320 if (typeof exports ===
"object") {
7322 module.exports = exports = factory(_dereq_(
"./core"), _dereq_(
"./sha1"), _dereq_(
"./hmac"));
7324 else if (typeof define ===
"function" && define.amd) {
7326 define([
"./core",
"./sha1",
"./hmac"], factory);
7330 factory(root.CryptoJS);
7332 }(this, function (CryptoJS) {
7338 var Base = C_lib.Base;
7339 var WordArray = C_lib.WordArray;
7340 var C_algo = C.algo;
7341 var MD5 = C_algo.MD5;
7344 * This key derivation function is meant to conform with EVP_BytesToKey.
7345 * www.openssl.org/docs/crypto/EVP_BytesToKey.html
7347 var EvpKDF = C_algo.EvpKDF = Base.extend({
7349 * Configuration options.
7351 * @property {number} keySize The key size in words to generate. Default:
4 (
128 bits)
7352 * @property {Hasher} hasher The hash algorithm to use. Default: MD5
7353 * @property {number} iterations The number of iterations to perform. Default:
1
7362 * Initializes a newly created key derivation function.
7364 * @param {Object} cfg (Optional) The configuration options to use for the derivation.
7368 * var kdf = CryptoJS.algo.EvpKDF.create();
7369 * var kdf = CryptoJS.algo.EvpKDF.create({ keySize:
8 });
7370 * var kdf = CryptoJS.algo.EvpKDF.create({ keySize:
8, iterations:
1000 });
7372 init: function (cfg) {
7373 this.cfg = this.cfg.extend(cfg);
7377 * Derives a key from a password.
7379 * @param {WordArray|string} password The password.
7380 * @param {WordArray|string} salt A salt.
7382 * @return {WordArray} The derived key.
7386 * var key = kdf.compute(password, salt);
7388 compute: function (password, salt) {
7393 var hasher = cfg.hasher.create();
7396 var derivedKey = WordArray.create();
7399 var derivedKeyWords = derivedKey.words;
7400 var keySize = cfg.keySize;
7401 var iterations = cfg.iterations;
7404 while (derivedKeyWords.length < keySize) {
7406 hasher.update(block);
7408 var block = hasher.update(password).finalize(salt);
7412 for (var i =
1; i < iterations; i++) {
7413 block = hasher.finalize(block);
7417 derivedKey.concat(block);
7419 derivedKey.sigBytes = keySize *
4;
7426 * Derives a key from a password.
7428 * @param {WordArray|string} password The password.
7429 * @param {WordArray|string} salt A salt.
7430 * @param {Object} cfg (Optional) The configuration options to use for this computation.
7432 * @return {WordArray} The derived key.
7438 * var key = CryptoJS.EvpKDF(password, salt);
7439 * var key = CryptoJS.EvpKDF(password, salt, { keySize:
8 });
7440 * var key = CryptoJS.EvpKDF(password, salt, { keySize:
8, iterations:
1000 });
7442 C.EvpKDF = function (password, salt, cfg) {
7443 return EvpKDF.create(cfg).compute(password, salt);
7448 return CryptoJS.EvpKDF;
7451 },{
"./core":
31,
"./hmac":
36,
"./sha1":
55}],
35:[function(_dereq_,module,exports){
7452 ;(function (root, factory, undef) {
7453 if (typeof exports ===
"object") {
7455 module.exports = exports = factory(_dereq_(
"./core"), _dereq_(
"./cipher-core"));
7457 else if (typeof define ===
"function" && define.amd) {
7459 define([
"./core",
"./cipher-core"], factory);
7463 factory(root.CryptoJS);
7465 }(this, function (CryptoJS) {
7467 (function (undefined) {
7471 var CipherParams = C_lib.CipherParams;
7473 var Hex = C_enc.Hex;
7474 var C_format = C.format;
7476 var HexFormatter = C_format.Hex = {
7478 * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.
7480 * @param {CipherParams} cipherParams The cipher params object.
7482 * @return {string} The hexadecimally encoded string.
7488 * var hexString = CryptoJS.format.Hex.stringify(cipherParams);
7490 stringify: function (cipherParams) {
7491 return cipherParams.ciphertext.toString(Hex);
7495 * Converts a hexadecimally encoded ciphertext string to a cipher params object.
7497 * @param {string} input The hexadecimally encoded string.
7499 * @return {CipherParams} The cipher params object.
7505 * var cipherParams = CryptoJS.format.Hex.parse(hexString);
7507 parse: function (input) {
7508 var ciphertext = Hex.parse(input);
7509 return CipherParams.create({ ciphertext: ciphertext });
7515 return CryptoJS.format.Hex;
7518 },{
"./cipher-core":
30,
"./core":
31}],
36:[function(_dereq_,module,exports){
7519 ;(function (root, factory) {
7520 if (typeof exports ===
"object") {
7522 module.exports = exports = factory(_dereq_(
"./core"));
7524 else if (typeof define ===
"function" && define.amd) {
7526 define([
"./core"], factory);
7530 factory(root.CryptoJS);
7532 }(this, function (CryptoJS) {
7538 var Base = C_lib.Base;
7540 var Utf8 = C_enc.Utf8;
7541 var C_algo = C.algo;
7546 var HMAC = C_algo.HMAC = Base.extend({
7548 * Initializes a newly created HMAC.
7550 * @param {Hasher} hasher The hash algorithm to use.
7551 * @param {WordArray|string} key The secret key.
7555 * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);
7557 init: function (hasher, key) {
7559 hasher = this._hasher = new hasher.init();
7561 // Convert string to WordArray, else assume WordArray already
7562 if (typeof key == 'string') {
7563 key = Utf8.parse(key);
7567 var hasherBlockSize = hasher.blockSize;
7568 var hasherBlockSizeBytes = hasherBlockSize *
4;
7570 // Allow arbitrary length keys
7571 if (key.sigBytes
> hasherBlockSizeBytes) {
7572 key = hasher.finalize(key);
7575 // Clamp excess bits
7578 // Clone key for inner and outer pads
7579 var oKey = this._oKey = key.clone();
7580 var iKey = this._iKey = key.clone();
7583 var oKeyWords = oKey.words;
7584 var iKeyWords = iKey.words;
7586 // XOR keys with pad constants
7587 for (var i =
0; i < hasherBlockSize; i++) {
7588 oKeyWords[i] ^=
0x5c5c5c5c;
7589 iKeyWords[i] ^=
0x36363636;
7591 oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;
7593 // Set initial values
7598 * Resets this HMAC to its initial state.
7602 * hmacHasher.reset();
7604 reset: function () {
7606 var hasher = this._hasher;
7610 hasher.update(this._iKey);
7614 * Updates this HMAC with a message.
7616 * @param {WordArray|string} messageUpdate The message to append.
7618 * @return {HMAC} This HMAC instance.
7622 * hmacHasher.update('message');
7623 * hmacHasher.update(wordArray);
7625 update: function (messageUpdate) {
7626 this._hasher.update(messageUpdate);
7633 * Finalizes the HMAC computation.
7634 * Note that the finalize operation is effectively a destructive, read-once operation.
7636 * @param {WordArray|string} messageUpdate (Optional) A final message update.
7638 * @return {WordArray} The HMAC.
7642 * var hmac = hmacHasher.finalize();
7643 * var hmac = hmacHasher.finalize('message');
7644 * var hmac = hmacHasher.finalize(wordArray);
7646 finalize: function (messageUpdate) {
7648 var hasher = this._hasher;
7651 var innerHash = hasher.finalize(messageUpdate);
7653 var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));
7662 },{"./core":
31}],
37:[function(_dereq_,module,exports){
7663 ;(function (root, factory, undef) {
7664 if (typeof exports === "object") {
7666 module.exports = exports = factory(_dereq_("./core"), _dereq_("./x64-core"), _dereq_("./lib-typedarrays"), _dereq_("./enc-utf16"), _dereq_("./enc-base64"), _dereq_("./md5"), _dereq_("./sha1"), _dereq_("./sha256"), _dereq_("./sha224"), _dereq_("./sha512"), _dereq_("./sha384"), _dereq_("./sha3"), _dereq_("./ripemd160"), _dereq_("./hmac"), _dereq_("./pbkdf2"), _dereq_("./evpkdf"), _dereq_("./cipher-core"), _dereq_("./mode-cfb"), _dereq_("./mode-ctr"), _dereq_("./mode-ctr-gladman"), _dereq_("./mode-ofb"), _dereq_("./mode-ecb"), _dereq_("./pad-ansix923"), _dereq_("./pad-iso10126"), _dereq_("./pad-iso97971"), _dereq_("./pad-zeropadding"), _dereq_("./pad-nopadding"), _dereq_("./format-hex"), _dereq_("./aes"), _dereq_("./tripledes"), _dereq_("./rc4"), _dereq_("./rabbit"), _dereq_("./rabbit-legacy"));
7668 else if (typeof define === "function" && define.amd) {
7670 define(["./core", "./x64-core", "./lib-typedarrays", "./enc-utf16", "./enc-base64", "./md5", "./sha1", "./sha256", "./sha224", "./sha512", "./sha384", "./sha3", "./ripemd160", "./hmac", "./pbkdf2", "./evpkdf", "./cipher-core", "./mode-cfb", "./mode-ctr", "./mode-ctr-gladman", "./mode-ofb", "./mode-ecb", "./pad-ansix923", "./pad-iso10126", "./pad-iso97971", "./pad-zeropadding", "./pad-nopadding", "./format-hex", "./aes", "./tripledes", "./rc4", "./rabbit", "./rabbit-legacy"], factory);
7674 factory(root.CryptoJS);
7676 }(this, function (CryptoJS) {
7681 },{"./aes":
29,"./cipher-core":
30,"./core":
31,"./enc-base64":
32,"./enc-utf16":
33,"./evpkdf":
34,"./format-hex":
35,"./hmac":
36,"./lib-typedarrays":
38,"./md5":
39,"./mode-cfb":
40,"./mode-ctr":
42,"./mode-ctr-gladman":
41,"./mode-ecb":
43,"./mode-ofb":
44,"./pad-ansix923":
45,"./pad-iso10126":
46,"./pad-iso97971":
47,"./pad-nopadding":
48,"./pad-zeropadding":
49,"./pbkdf2":
50,"./rabbit":
52,"./rabbit-legacy":
51,"./rc4":
53,"./ripemd160":
54,"./sha1":
55,"./sha224":
56,"./sha256":
57,"./sha3":
58,"./sha384":
59,"./sha512":
60,"./tripledes":
61,"./x64-core":
62}],
38:[function(_dereq_,module,exports){
7682 ;(function (root, factory) {
7683 if (typeof exports === "object") {
7685 module.exports = exports = factory(_dereq_("./core"));
7687 else if (typeof define === "function" && define.amd) {
7689 define(["./core"], factory);
7693 factory(root.CryptoJS);
7695 }(this, function (CryptoJS) {
7698 // Check if typed arrays are supported
7699 if (typeof ArrayBuffer != 'function') {
7706 var WordArray = C_lib.WordArray;
7708 // Reference original init
7709 var superInit = WordArray.init;
7711 // Augment WordArray.init to handle typed arrays
7712 var subInit = WordArray.init = function (typedArray) {
7713 // Convert buffers to uint8
7714 if (typedArray instanceof ArrayBuffer) {
7715 typedArray = new Uint8Array(typedArray);
7718 // Convert other array views to uint8
7720 typedArray instanceof Int8Array ||
7721 typedArray instanceof Uint8ClampedArray ||
7722 typedArray instanceof Int16Array ||
7723 typedArray instanceof Uint16Array ||
7724 typedArray instanceof Int32Array ||
7725 typedArray instanceof Uint32Array ||
7726 typedArray instanceof Float32Array ||
7727 typedArray instanceof Float64Array
7729 typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);
7732 // Handle Uint8Array
7733 if (typedArray instanceof Uint8Array) {
7735 var typedArrayByteLength = typedArray.byteLength;
7739 for (var i =
0; i < typedArrayByteLength; i++) {
7740 words[i
>>> 2] |= typedArray[i] << (
24 - (i %
4) *
8);
7743 // Initialize this word array
7744 superInit.call(this, words, typedArrayByteLength);
7746 // Else call normal init
7747 superInit.apply(this, arguments);
7751 subInit.prototype = WordArray;
7755 return CryptoJS.lib.WordArray;
7758 },{
"./core":
31}],
39:[function(_dereq_,module,exports){
7759 ;(function (root, factory) {
7760 if (typeof exports ===
"object") {
7762 module.exports = exports = factory(_dereq_(
"./core"));
7764 else if (typeof define ===
"function" && define.amd) {
7766 define([
"./core"], factory);
7770 factory(root.CryptoJS);
7772 }(this, function (CryptoJS) {
7778 var WordArray = C_lib.WordArray;
7779 var Hasher = C_lib.Hasher;
7780 var C_algo = C.algo;
7785 // Compute constants
7787 for (var i =
0; i <
64; i++) {
7788 T[i] = (Math.abs(Math.sin(i +
1)) *
0x100000000) |
0;
7793 * MD5 hash algorithm.
7795 var MD5 = C_algo.MD5 = Hasher.extend({
7796 _doReset: function () {
7797 this._hash = new WordArray.init([
7798 0x67452301,
0xefcdab89,
7799 0x98badcfe,
0x10325476
7803 _doProcessBlock: function (M, offset) {
7805 for (var i =
0; i <
16; i++) {
7807 var offset_i = offset + i;
7808 var M_offset_i = M[offset_i];
7811 (((M_offset_i <<
8) | (M_offset_i
>>> 24)) &
0x00ff00ff) |
7812 (((M_offset_i <<
24) | (M_offset_i
>>> 8)) &
0xff00ff00)
7817 var H = this._hash.words;
7819 var M_offset_0 = M[offset +
0];
7820 var M_offset_1 = M[offset +
1];
7821 var M_offset_2 = M[offset +
2];
7822 var M_offset_3 = M[offset +
3];
7823 var M_offset_4 = M[offset +
4];
7824 var M_offset_5 = M[offset +
5];
7825 var M_offset_6 = M[offset +
6];
7826 var M_offset_7 = M[offset +
7];
7827 var M_offset_8 = M[offset +
8];
7828 var M_offset_9 = M[offset +
9];
7829 var M_offset_10 = M[offset +
10];
7830 var M_offset_11 = M[offset +
11];
7831 var M_offset_12 = M[offset +
12];
7832 var M_offset_13 = M[offset +
13];
7833 var M_offset_14 = M[offset +
14];
7834 var M_offset_15 = M[offset +
15];
7836 // Working varialbes
7843 a = FF(a, b, c, d, M_offset_0,
7, T[
0]);
7844 d = FF(d, a, b, c, M_offset_1,
12, T[
1]);
7845 c = FF(c, d, a, b, M_offset_2,
17, T[
2]);
7846 b = FF(b, c, d, a, M_offset_3,
22, T[
3]);
7847 a = FF(a, b, c, d, M_offset_4,
7, T[
4]);
7848 d = FF(d, a, b, c, M_offset_5,
12, T[
5]);
7849 c = FF(c, d, a, b, M_offset_6,
17, T[
6]);
7850 b = FF(b, c, d, a, M_offset_7,
22, T[
7]);
7851 a = FF(a, b, c, d, M_offset_8,
7, T[
8]);
7852 d = FF(d, a, b, c, M_offset_9,
12, T[
9]);
7853 c = FF(c, d, a, b, M_offset_10,
17, T[
10]);
7854 b = FF(b, c, d, a, M_offset_11,
22, T[
11]);
7855 a = FF(a, b, c, d, M_offset_12,
7, T[
12]);
7856 d = FF(d, a, b, c, M_offset_13,
12, T[
13]);
7857 c = FF(c, d, a, b, M_offset_14,
17, T[
14]);
7858 b = FF(b, c, d, a, M_offset_15,
22, T[
15]);
7860 a = GG(a, b, c, d, M_offset_1,
5, T[
16]);
7861 d = GG(d, a, b, c, M_offset_6,
9, T[
17]);
7862 c = GG(c, d, a, b, M_offset_11,
14, T[
18]);
7863 b = GG(b, c, d, a, M_offset_0,
20, T[
19]);
7864 a = GG(a, b, c, d, M_offset_5,
5, T[
20]);
7865 d = GG(d, a, b, c, M_offset_10,
9, T[
21]);
7866 c = GG(c, d, a, b, M_offset_15,
14, T[
22]);
7867 b = GG(b, c, d, a, M_offset_4,
20, T[
23]);
7868 a = GG(a, b, c, d, M_offset_9,
5, T[
24]);
7869 d = GG(d, a, b, c, M_offset_14,
9, T[
25]);
7870 c = GG(c, d, a, b, M_offset_3,
14, T[
26]);
7871 b = GG(b, c, d, a, M_offset_8,
20, T[
27]);
7872 a = GG(a, b, c, d, M_offset_13,
5, T[
28]);
7873 d = GG(d, a, b, c, M_offset_2,
9, T[
29]);
7874 c = GG(c, d, a, b, M_offset_7,
14, T[
30]);
7875 b = GG(b, c, d, a, M_offset_12,
20, T[
31]);
7877 a = HH(a, b, c, d, M_offset_5,
4, T[
32]);
7878 d = HH(d, a, b, c, M_offset_8,
11, T[
33]);
7879 c = HH(c, d, a, b, M_offset_11,
16, T[
34]);
7880 b = HH(b, c, d, a, M_offset_14,
23, T[
35]);
7881 a = HH(a, b, c, d, M_offset_1,
4, T[
36]);
7882 d = HH(d, a, b, c, M_offset_4,
11, T[
37]);
7883 c = HH(c, d, a, b, M_offset_7,
16, T[
38]);
7884 b = HH(b, c, d, a, M_offset_10,
23, T[
39]);
7885 a = HH(a, b, c, d, M_offset_13,
4, T[
40]);
7886 d = HH(d, a, b, c, M_offset_0,
11, T[
41]);
7887 c = HH(c, d, a, b, M_offset_3,
16, T[
42]);
7888 b = HH(b, c, d, a, M_offset_6,
23, T[
43]);
7889 a = HH(a, b, c, d, M_offset_9,
4, T[
44]);
7890 d = HH(d, a, b, c, M_offset_12,
11, T[
45]);
7891 c = HH(c, d, a, b, M_offset_15,
16, T[
46]);
7892 b = HH(b, c, d, a, M_offset_2,
23, T[
47]);
7894 a = II(a, b, c, d, M_offset_0,
6, T[
48]);
7895 d = II(d, a, b, c, M_offset_7,
10, T[
49]);
7896 c = II(c, d, a, b, M_offset_14,
15, T[
50]);
7897 b = II(b, c, d, a, M_offset_5,
21, T[
51]);
7898 a = II(a, b, c, d, M_offset_12,
6, T[
52]);
7899 d = II(d, a, b, c, M_offset_3,
10, T[
53]);
7900 c = II(c, d, a, b, M_offset_10,
15, T[
54]);
7901 b = II(b, c, d, a, M_offset_1,
21, T[
55]);
7902 a = II(a, b, c, d, M_offset_8,
6, T[
56]);
7903 d = II(d, a, b, c, M_offset_15,
10, T[
57]);
7904 c = II(c, d, a, b, M_offset_6,
15, T[
58]);
7905 b = II(b, c, d, a, M_offset_13,
21, T[
59]);
7906 a = II(a, b, c, d, M_offset_4,
6, T[
60]);
7907 d = II(d, a, b, c, M_offset_11,
10, T[
61]);
7908 c = II(c, d, a, b, M_offset_2,
15, T[
62]);
7909 b = II(b, c, d, a, M_offset_9,
21, T[
63]);
7911 // Intermediate hash value
7912 H[
0] = (H[
0] + a) |
0;
7913 H[
1] = (H[
1] + b) |
0;
7914 H[
2] = (H[
2] + c) |
0;
7915 H[
3] = (H[
3] + d) |
0;
7918 _doFinalize: function () {
7920 var data = this._data;
7921 var dataWords = data.words;
7923 var nBitsTotal = this._nDataBytes *
8;
7924 var nBitsLeft = data.sigBytes *
8;
7927 dataWords[nBitsLeft
>>> 5] |=
0x80 << (
24 - nBitsLeft %
32);
7929 var nBitsTotalH = Math.floor(nBitsTotal /
0x100000000);
7930 var nBitsTotalL = nBitsTotal;
7931 dataWords[(((nBitsLeft +
64)
>>> 9) <<
4) +
15] = (
7932 (((nBitsTotalH <<
8) | (nBitsTotalH
>>> 24)) &
0x00ff00ff) |
7933 (((nBitsTotalH <<
24) | (nBitsTotalH
>>> 8)) &
0xff00ff00)
7935 dataWords[(((nBitsLeft +
64)
>>> 9) <<
4) +
14] = (
7936 (((nBitsTotalL <<
8) | (nBitsTotalL
>>> 24)) &
0x00ff00ff) |
7937 (((nBitsTotalL <<
24) | (nBitsTotalL
>>> 8)) &
0xff00ff00)
7940 data.sigBytes = (dataWords.length +
1) *
4;
7942 // Hash final blocks
7946 var hash = this._hash;
7950 for (var i =
0; i <
4; i++) {
7954 H[i] = (((H_i <<
8) | (H_i
>>> 24)) &
0x00ff00ff) |
7955 (((H_i <<
24) | (H_i
>>> 8)) &
0xff00ff00);
7958 // Return final computed hash
7962 clone: function () {
7963 var clone = Hasher.clone.call(this);
7964 clone._hash = this._hash.clone();
7970 function FF(a, b, c, d, x, s, t) {
7971 var n = a + ((b & c) | (~b & d)) + x + t;
7972 return ((n << s) | (n
>>> (
32 - s))) + b;
7975 function GG(a, b, c, d, x, s, t) {
7976 var n = a + ((b & d) | (c & ~d)) + x + t;
7977 return ((n << s) | (n
>>> (
32 - s))) + b;
7980 function HH(a, b, c, d, x, s, t) {
7981 var n = a + (b ^ c ^ d) + x + t;
7982 return ((n << s) | (n
>>> (
32 - s))) + b;
7985 function II(a, b, c, d, x, s, t) {
7986 var n = a + (c ^ (b | ~d)) + x + t;
7987 return ((n << s) | (n
>>> (
32 - s))) + b;
7991 * Shortcut function to the hasher's object interface.
7993 * @param {WordArray|string} message The message to hash.
7995 * @return {WordArray} The hash.
8001 * var hash = CryptoJS.MD5('message');
8002 * var hash = CryptoJS.MD5(wordArray);
8004 C.MD5 = Hasher._createHelper(MD5);
8007 * Shortcut function to the HMAC's object interface.
8009 * @param {WordArray|string} message The message to hash.
8010 * @param {WordArray|string} key The secret key.
8012 * @return {WordArray} The HMAC.
8018 * var hmac = CryptoJS.HmacMD5(message, key);
8020 C.HmacMD5 = Hasher._createHmacHelper(MD5);
8024 return CryptoJS.MD5;
8027 },{"./core":
31}],
40:[function(_dereq_,module,exports){
8028 ;(function (root, factory, undef) {
8029 if (typeof exports === "object") {
8031 module.exports = exports = factory(_dereq_("./core"), _dereq_("./cipher-core"));
8033 else if (typeof define === "function" && define.amd) {
8035 define(["./core", "./cipher-core"], factory);
8039 factory(root.CryptoJS);
8041 }(this, function (CryptoJS) {
8044 * Cipher Feedback block mode.
8046 CryptoJS.mode.CFB = (function () {
8047 var CFB = CryptoJS.lib.BlockCipherMode.extend();
8049 CFB.Encryptor = CFB.extend({
8050 processBlock: function (words, offset) {
8052 var cipher = this._cipher;
8053 var blockSize = cipher.blockSize;
8055 generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);
8057 // Remember this block to use with next block
8058 this._prevBlock = words.slice(offset, offset + blockSize);
8062 CFB.Decryptor = CFB.extend({
8063 processBlock: function (words, offset) {
8065 var cipher = this._cipher;
8066 var blockSize = cipher.blockSize;
8068 // Remember this block to use with next block
8069 var thisBlock = words.slice(offset, offset + blockSize);
8071 generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);
8073 // This block becomes the previous block
8074 this._prevBlock = thisBlock;
8078 function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {
8082 // Generate keystream
8084 var keystream = iv.slice(
0);
8086 // Remove IV for subsequent blocks
8087 this._iv = undefined;
8089 var keystream = this._prevBlock;
8091 cipher.encryptBlock(keystream,
0);
8094 for (var i =
0; i < blockSize; i++) {
8095 words[offset + i] ^= keystream[i];
8103 return CryptoJS.mode.CFB;
8106 },{"./cipher-core":
30,"./core":
31}],
41:[function(_dereq_,module,exports){
8107 ;(function (root, factory, undef) {
8108 if (typeof exports === "object") {
8110 module.exports = exports = factory(_dereq_("./core"), _dereq_("./cipher-core"));
8112 else if (typeof define === "function" && define.amd) {
8114 define(["./core", "./cipher-core"], factory);
8118 factory(root.CryptoJS);
8120 }(this, function (CryptoJS) {
8123 * Counter block mode compatible with Dr Brian Gladman fileenc.c
8124 * derived from CryptoJS.mode.CTR
8125 * Jan Hruby jhruby.web@gmail.com
8127 CryptoJS.mode.CTRGladman = (function () {
8128 var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();
8130 function incWord(word)
8132 if (((word
>> 24) &
0xff) ===
0xff) { //overflow
8133 var b1 = (word
>> 16)
&0xff;
8134 var b2 = (word
>> 8)
&0xff;
8135 var b3 = word &
0xff;
8137 if (b1 ===
0xff) // overflow b1
8169 word += (
0x01 <<
24);
8174 function incCounter(counter)
8176 if ((counter[
0] = incWord(counter[
0])) ===
0)
8178 // encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j <
8
8179 counter[
1] = incWord(counter[
1]);
8184 var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({
8185 processBlock: function (words, offset) {
8187 var cipher = this._cipher
8188 var blockSize = cipher.blockSize;
8190 var counter = this._counter;
8192 // Generate keystream
8194 counter = this._counter = iv.slice(
0);
8196 // Remove IV for subsequent blocks
8197 this._iv = undefined;
8200 incCounter(counter);
8202 var keystream = counter.slice(
0);
8203 cipher.encryptBlock(keystream,
0);
8206 for (var i =
0; i < blockSize; i++) {
8207 words[offset + i] ^= keystream[i];
8212 CTRGladman.Decryptor = Encryptor;
8220 return CryptoJS.mode.CTRGladman;
8223 },{
"./cipher-core":
30,
"./core":
31}],
42:[function(_dereq_,module,exports){
8224 ;(function (root, factory, undef) {
8225 if (typeof exports ===
"object") {
8227 module.exports = exports = factory(_dereq_(
"./core"), _dereq_(
"./cipher-core"));
8229 else if (typeof define ===
"function" && define.amd) {
8231 define([
"./core",
"./cipher-core"], factory);
8235 factory(root.CryptoJS);
8237 }(this, function (CryptoJS) {
8240 * Counter block mode.
8242 CryptoJS.mode.CTR = (function () {
8243 var CTR = CryptoJS.lib.BlockCipherMode.extend();
8245 var Encryptor = CTR.Encryptor = CTR.extend({
8246 processBlock: function (words, offset) {
8248 var cipher = this._cipher
8249 var blockSize = cipher.blockSize;
8251 var counter = this._counter;
8253 // Generate keystream
8255 counter = this._counter = iv.slice(
0);
8257 // Remove IV for subsequent blocks
8258 this._iv = undefined;
8260 var keystream = counter.slice(
0);
8261 cipher.encryptBlock(keystream,
0);
8263 // Increment counter
8264 counter[blockSize -
1] = (counter[blockSize -
1] +
1) |
0
8267 for (var i =
0; i < blockSize; i++) {
8268 words[offset + i] ^= keystream[i];
8273 CTR.Decryptor = Encryptor;
8279 return CryptoJS.mode.CTR;
8282 },{
"./cipher-core":
30,
"./core":
31}],
43:[function(_dereq_,module,exports){
8283 ;(function (root, factory, undef) {
8284 if (typeof exports ===
"object") {
8286 module.exports = exports = factory(_dereq_(
"./core"), _dereq_(
"./cipher-core"));
8288 else if (typeof define ===
"function" && define.amd) {
8290 define([
"./core",
"./cipher-core"], factory);
8294 factory(root.CryptoJS);
8296 }(this, function (CryptoJS) {
8299 * Electronic Codebook block mode.
8301 CryptoJS.mode.ECB = (function () {
8302 var ECB = CryptoJS.lib.BlockCipherMode.extend();
8304 ECB.Encryptor = ECB.extend({
8305 processBlock: function (words, offset) {
8306 this._cipher.encryptBlock(words, offset);
8310 ECB.Decryptor = ECB.extend({
8311 processBlock: function (words, offset) {
8312 this._cipher.decryptBlock(words, offset);
8320 return CryptoJS.mode.ECB;
8323 },{
"./cipher-core":
30,
"./core":
31}],
44:[function(_dereq_,module,exports){
8324 ;(function (root, factory, undef) {
8325 if (typeof exports ===
"object") {
8327 module.exports = exports = factory(_dereq_(
"./core"), _dereq_(
"./cipher-core"));
8329 else if (typeof define ===
"function" && define.amd) {
8331 define([
"./core",
"./cipher-core"], factory);
8335 factory(root.CryptoJS);
8337 }(this, function (CryptoJS) {
8340 * Output Feedback block mode.
8342 CryptoJS.mode.OFB = (function () {
8343 var OFB = CryptoJS.lib.BlockCipherMode.extend();
8345 var Encryptor = OFB.Encryptor = OFB.extend({
8346 processBlock: function (words, offset) {
8348 var cipher = this._cipher
8349 var blockSize = cipher.blockSize;
8351 var keystream = this._keystream;
8353 // Generate keystream
8355 keystream = this._keystream = iv.slice(
0);
8357 // Remove IV for subsequent blocks
8358 this._iv = undefined;
8360 cipher.encryptBlock(keystream,
0);
8363 for (var i =
0; i < blockSize; i++) {
8364 words[offset + i] ^= keystream[i];
8369 OFB.Decryptor = Encryptor;
8375 return CryptoJS.mode.OFB;
8378 },{
"./cipher-core":
30,
"./core":
31}],
45:[function(_dereq_,module,exports){
8379 ;(function (root, factory, undef) {
8380 if (typeof exports ===
"object") {
8382 module.exports = exports = factory(_dereq_(
"./core"), _dereq_(
"./cipher-core"));
8384 else if (typeof define ===
"function" && define.amd) {
8386 define([
"./core",
"./cipher-core"], factory);
8390 factory(root.CryptoJS);
8392 }(this, function (CryptoJS) {
8395 * ANSI X
.923 padding strategy.
8397 CryptoJS.pad.AnsiX923 = {
8398 pad: function (data, blockSize) {
8400 var dataSigBytes = data.sigBytes;
8401 var blockSizeBytes = blockSize *
4;
8403 // Count padding bytes
8404 var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;
8406 // Compute last byte position
8407 var lastBytePos = dataSigBytes + nPaddingBytes -
1;
8411 data.words[lastBytePos
>>> 2] |= nPaddingBytes << (
24 - (lastBytePos %
4) *
8);
8412 data.sigBytes += nPaddingBytes;
8415 unpad: function (data) {
8416 // Get number of padding bytes from last byte
8417 var nPaddingBytes = data.words[(data.sigBytes -
1)
>>> 2] &
0xff;
8420 data.sigBytes -= nPaddingBytes;
8425 return CryptoJS.pad.Ansix923;
8428 },{
"./cipher-core":
30,
"./core":
31}],
46:[function(_dereq_,module,exports){
8429 ;(function (root, factory, undef) {
8430 if (typeof exports ===
"object") {
8432 module.exports = exports = factory(_dereq_(
"./core"), _dereq_(
"./cipher-core"));
8434 else if (typeof define ===
"function" && define.amd) {
8436 define([
"./core",
"./cipher-core"], factory);
8440 factory(root.CryptoJS);
8442 }(this, function (CryptoJS) {
8445 * ISO
10126 padding strategy.
8447 CryptoJS.pad.Iso10126 = {
8448 pad: function (data, blockSize) {
8450 var blockSizeBytes = blockSize *
4;
8452 // Count padding bytes
8453 var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;
8456 data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes -
1)).
8457 concat(CryptoJS.lib.WordArray.create([nPaddingBytes <<
24],
1));
8460 unpad: function (data) {
8461 // Get number of padding bytes from last byte
8462 var nPaddingBytes = data.words[(data.sigBytes -
1)
>>> 2] &
0xff;
8465 data.sigBytes -= nPaddingBytes;
8470 return CryptoJS.pad.Iso10126;
8473 },{
"./cipher-core":
30,
"./core":
31}],
47:[function(_dereq_,module,exports){
8474 ;(function (root, factory, undef) {
8475 if (typeof exports ===
"object") {
8477 module.exports = exports = factory(_dereq_(
"./core"), _dereq_(
"./cipher-core"));
8479 else if (typeof define ===
"function" && define.amd) {
8481 define([
"./core",
"./cipher-core"], factory);
8485 factory(root.CryptoJS);
8487 }(this, function (CryptoJS) {
8490 * ISO/IEC
9797-
1 Padding Method
2.
8492 CryptoJS.pad.Iso97971 = {
8493 pad: function (data, blockSize) {
8495 data.concat(CryptoJS.lib.WordArray.create([
0x80000000],
1));
8497 // Zero pad the rest
8498 CryptoJS.pad.ZeroPadding.pad(data, blockSize);
8501 unpad: function (data) {
8502 // Remove zero padding
8503 CryptoJS.pad.ZeroPadding.unpad(data);
8505 // Remove one more byte -- the
0x80 byte
8511 return CryptoJS.pad.Iso97971;
8514 },{
"./cipher-core":
30,
"./core":
31}],
48:[function(_dereq_,module,exports){
8515 ;(function (root, factory, undef) {
8516 if (typeof exports ===
"object") {
8518 module.exports = exports = factory(_dereq_(
"./core"), _dereq_(
"./cipher-core"));
8520 else if (typeof define ===
"function" && define.amd) {
8522 define([
"./core",
"./cipher-core"], factory);
8526 factory(root.CryptoJS);
8528 }(this, function (CryptoJS) {
8531 * A noop padding strategy.
8533 CryptoJS.pad.NoPadding = {
8537 unpad: function () {
8542 return CryptoJS.pad.NoPadding;
8545 },{
"./cipher-core":
30,
"./core":
31}],
49:[function(_dereq_,module,exports){
8546 ;(function (root, factory, undef) {
8547 if (typeof exports ===
"object") {
8549 module.exports = exports = factory(_dereq_(
"./core"), _dereq_(
"./cipher-core"));
8551 else if (typeof define ===
"function" && define.amd) {
8553 define([
"./core",
"./cipher-core"], factory);
8557 factory(root.CryptoJS);
8559 }(this, function (CryptoJS) {
8562 * Zero padding strategy.
8564 CryptoJS.pad.ZeroPadding = {
8565 pad: function (data, blockSize) {
8567 var blockSizeBytes = blockSize *
4;
8571 data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);
8574 unpad: function (data) {
8576 var dataWords = data.words;
8579 var i = data.sigBytes -
1;
8580 while (!((dataWords[i
>>> 2]
>>> (
24 - (i %
4) *
8)) &
0xff)) {
8583 data.sigBytes = i +
1;
8588 return CryptoJS.pad.ZeroPadding;
8591 },{"./cipher-core":
30,"./core":
31}],
50:[function(_dereq_,module,exports){
8592 ;(function (root, factory, undef) {
8593 if (typeof exports === "object") {
8595 module.exports = exports = factory(_dereq_("./core"), _dereq_("./sha1"), _dereq_("./hmac"));
8597 else if (typeof define === "function" && define.amd) {
8599 define(["./core", "./sha1", "./hmac"], factory);
8603 factory(root.CryptoJS);
8605 }(this, function (CryptoJS) {
8611 var Base = C_lib.Base;
8612 var WordArray = C_lib.WordArray;
8613 var C_algo = C.algo;
8614 var SHA1 = C_algo.SHA1;
8615 var HMAC = C_algo.HMAC;
8618 * Password-Based Key Derivation Function
2 algorithm.
8620 var PBKDF2 = C_algo.PBKDF2 = Base.extend({
8622 * Configuration options.
8624 * @property {number} keySize The key size in words to generate. Default:
4 (
128 bits)
8625 * @property {Hasher} hasher The hasher to use. Default: SHA1
8626 * @property {number} iterations The number of iterations to perform. Default:
1
8635 * Initializes a newly created key derivation function.
8637 * @param {Object} cfg (Optional) The configuration options to use for the derivation.
8641 * var kdf = CryptoJS.algo.PBKDF2.create();
8642 * var kdf = CryptoJS.algo.PBKDF2.create({ keySize:
8 });
8643 * var kdf = CryptoJS.algo.PBKDF2.create({ keySize:
8, iterations:
1000 });
8645 init: function (cfg) {
8646 this.cfg = this.cfg.extend(cfg);
8650 * Computes the Password-Based Key Derivation Function
2.
8652 * @param {WordArray|string} password The password.
8653 * @param {WordArray|string} salt A salt.
8655 * @return {WordArray} The derived key.
8659 * var key = kdf.compute(password, salt);
8661 compute: function (password, salt) {
8666 var hmac = HMAC.create(cfg.hasher, password);
8669 var derivedKey = WordArray.create();
8670 var blockIndex = WordArray.create([
0x00000001]);
8673 var derivedKeyWords = derivedKey.words;
8674 var blockIndexWords = blockIndex.words;
8675 var keySize = cfg.keySize;
8676 var iterations = cfg.iterations;
8679 while (derivedKeyWords.length < keySize) {
8680 var block = hmac.update(salt).finalize(blockIndex);
8684 var blockWords = block.words;
8685 var blockWordsLength = blockWords.length;
8688 var intermediate = block;
8689 for (var i =
1; i < iterations; i++) {
8690 intermediate = hmac.finalize(intermediate);
8694 var intermediateWords = intermediate.words;
8696 // XOR intermediate with block
8697 for (var j =
0; j < blockWordsLength; j++) {
8698 blockWords[j] ^= intermediateWords[j];
8702 derivedKey.concat(block);
8703 blockIndexWords[
0]++;
8705 derivedKey.sigBytes = keySize *
4;
8712 * Computes the Password-Based Key Derivation Function
2.
8714 * @param {WordArray|string} password The password.
8715 * @param {WordArray|string} salt A salt.
8716 * @param {Object} cfg (Optional) The configuration options to use for this computation.
8718 * @return {WordArray} The derived key.
8724 * var key = CryptoJS.PBKDF2(password, salt);
8725 * var key = CryptoJS.PBKDF2(password, salt, { keySize:
8 });
8726 * var key = CryptoJS.PBKDF2(password, salt, { keySize:
8, iterations:
1000 });
8728 C.PBKDF2 = function (password, salt, cfg) {
8729 return PBKDF2.create(cfg).compute(password, salt);
8734 return CryptoJS.PBKDF2;
8737 },{"./core":
31,"./hmac":
36,"./sha1":
55}],
51:[function(_dereq_,module,exports){
8738 ;(function (root, factory, undef) {
8739 if (typeof exports === "object") {
8741 module.exports = exports = factory(_dereq_("./core"), _dereq_("./enc-base64"), _dereq_("./md5"), _dereq_("./evpkdf"), _dereq_("./cipher-core"));
8743 else if (typeof define === "function" && define.amd) {
8745 define(["./core", "./enc-base64", "./md5", "./evpkdf", "./cipher-core"], factory);
8749 factory(root.CryptoJS);
8751 }(this, function (CryptoJS) {
8757 var StreamCipher = C_lib.StreamCipher;
8758 var C_algo = C.algo;
8766 * Rabbit stream cipher algorithm.
8768 * This is a legacy version that neglected to convert the key to little-endian.
8769 * This error doesn't affect the cipher's security,
8770 * but it does affect its compatibility with other implementations.
8772 var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({
8773 _doReset: function () {
8775 var K = this._key.words;
8776 var iv = this.cfg.iv;
8778 // Generate initial state values
8780 K[
0], (K[
3] <<
16) | (K[
2]
>>> 16),
8781 K[
1], (K[
0] <<
16) | (K[
3]
>>> 16),
8782 K[
2], (K[
1] <<
16) | (K[
0]
>>> 16),
8783 K[
3], (K[
2] <<
16) | (K[
1]
>>> 16)
8786 // Generate initial counter values
8788 (K[
2] <<
16) | (K[
2]
>>> 16), (K[
0] &
0xffff0000) | (K[
1] &
0x0000ffff),
8789 (K[
3] <<
16) | (K[
3]
>>> 16), (K[
1] &
0xffff0000) | (K[
2] &
0x0000ffff),
8790 (K[
0] <<
16) | (K[
0]
>>> 16), (K[
2] &
0xffff0000) | (K[
3] &
0x0000ffff),
8791 (K[
1] <<
16) | (K[
1]
>>> 16), (K[
3] &
0xffff0000) | (K[
0] &
0x0000ffff)
8797 // Iterate the system four times
8798 for (var i =
0; i <
4; i++) {
8799 nextState.call(this);
8802 // Modify the counters
8803 for (var i =
0; i <
8; i++) {
8804 C[i] ^= X[(i +
4) &
7];
8814 // Generate four subvectors
8815 var i0 = (((IV_0 <<
8) | (IV_0
>>> 24)) &
0x00ff00ff) | (((IV_0 <<
24) | (IV_0
>>> 8)) &
0xff00ff00);
8816 var i2 = (((IV_1 <<
8) | (IV_1
>>> 24)) &
0x00ff00ff) | (((IV_1 <<
24) | (IV_1
>>> 8)) &
0xff00ff00);
8817 var i1 = (i0
>>> 16) | (i2 &
0xffff0000);
8818 var i3 = (i2 <<
16) | (i0 &
0x0000ffff);
8820 // Modify counter values
8830 // Iterate the system four times
8831 for (var i =
0; i <
4; i++) {
8832 nextState.call(this);
8837 _doProcessBlock: function (M, offset) {
8841 // Iterate the system
8842 nextState.call(this);
8844 // Generate four keystream words
8845 S[
0] = X[
0] ^ (X[
5]
>>> 16) ^ (X[
3] <<
16);
8846 S[
1] = X[
2] ^ (X[
7]
>>> 16) ^ (X[
5] <<
16);
8847 S[
2] = X[
4] ^ (X[
1]
>>> 16) ^ (X[
7] <<
16);
8848 S[
3] = X[
6] ^ (X[
3]
>>> 16) ^ (X[
1] <<
16);
8850 for (var i =
0; i <
4; i++) {
8852 S[i] = (((S[i] <<
8) | (S[i]
>>> 24)) &
0x00ff00ff) |
8853 (((S[i] <<
24) | (S[i]
>>> 8)) &
0xff00ff00);
8856 M[offset + i] ^= S[i];
8865 function nextState() {
8870 // Save old counter values
8871 for (var i =
0; i <
8; i++) {
8875 // Calculate new counter values
8876 C[
0] = (C[
0] +
0x4d34d34d + this._b) |
0;
8877 C[
1] = (C[
1] +
0xd34d34d3 + ((C[
0]
>>> 0) < (C_[
0]
>>> 0) ?
1 :
0)) |
0;
8878 C[
2] = (C[
2] +
0x34d34d34 + ((C[
1]
>>> 0) < (C_[
1]
>>> 0) ?
1 :
0)) |
0;
8879 C[
3] = (C[
3] +
0x4d34d34d + ((C[
2]
>>> 0) < (C_[
2]
>>> 0) ?
1 :
0)) |
0;
8880 C[
4] = (C[
4] +
0xd34d34d3 + ((C[
3]
>>> 0) < (C_[
3]
>>> 0) ?
1 :
0)) |
0;
8881 C[
5] = (C[
5] +
0x34d34d34 + ((C[
4]
>>> 0) < (C_[
4]
>>> 0) ?
1 :
0)) |
0;
8882 C[
6] = (C[
6] +
0x4d34d34d + ((C[
5]
>>> 0) < (C_[
5]
>>> 0) ?
1 :
0)) |
0;
8883 C[
7] = (C[
7] +
0xd34d34d3 + ((C[
6]
>>> 0) < (C_[
6]
>>> 0) ?
1 :
0)) |
0;
8884 this._b = (C[
7]
>>> 0) < (C_[
7]
>>> 0) ?
1 :
0;
8886 // Calculate the g-values
8887 for (var i =
0; i <
8; i++) {
8888 var gx = X[i] + C[i];
8890 // Construct high and low argument for squaring
8891 var ga = gx &
0xffff;
8894 // Calculate high and low result of squaring
8895 var gh = ((((ga * ga)
>>> 17) + ga * gb)
>>> 15) + gb * gb;
8896 var gl = (((gx &
0xffff0000) * gx) |
0) + (((gx &
0x0000ffff) * gx) |
0);
8902 // Calculate new state values
8903 X[
0] = (G[
0] + ((G[
7] <<
16) | (G[
7]
>>> 16)) + ((G[
6] <<
16) | (G[
6]
>>> 16))) |
0;
8904 X[
1] = (G[
1] + ((G[
0] <<
8) | (G[
0]
>>> 24)) + G[
7]) |
0;
8905 X[
2] = (G[
2] + ((G[
1] <<
16) | (G[
1]
>>> 16)) + ((G[
0] <<
16) | (G[
0]
>>> 16))) |
0;
8906 X[
3] = (G[
3] + ((G[
2] <<
8) | (G[
2]
>>> 24)) + G[
1]) |
0;
8907 X[
4] = (G[
4] + ((G[
3] <<
16) | (G[
3]
>>> 16)) + ((G[
2] <<
16) | (G[
2]
>>> 16))) |
0;
8908 X[
5] = (G[
5] + ((G[
4] <<
8) | (G[
4]
>>> 24)) + G[
3]) |
0;
8909 X[
6] = (G[
6] + ((G[
5] <<
16) | (G[
5]
>>> 16)) + ((G[
4] <<
16) | (G[
4]
>>> 16))) |
0;
8910 X[
7] = (G[
7] + ((G[
6] <<
8) | (G[
6]
>>> 24)) + G[
5]) |
0;
8914 * Shortcut functions to the cipher's object interface.
8918 * var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);
8919 * var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);
8921 C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);
8925 return CryptoJS.RabbitLegacy;
8928 },{
"./cipher-core":
30,
"./core":
31,
"./enc-base64":
32,
"./evpkdf":
34,
"./md5":
39}],
52:[function(_dereq_,module,exports){
8929 ;(function (root, factory, undef) {
8930 if (typeof exports ===
"object") {
8932 module.exports = exports = factory(_dereq_(
"./core"), _dereq_(
"./enc-base64"), _dereq_(
"./md5"), _dereq_(
"./evpkdf"), _dereq_(
"./cipher-core"));
8934 else if (typeof define ===
"function" && define.amd) {
8936 define([
"./core",
"./enc-base64",
"./md5",
"./evpkdf",
"./cipher-core"], factory);
8940 factory(root.CryptoJS);
8942 }(this, function (CryptoJS) {
8948 var StreamCipher = C_lib.StreamCipher;
8949 var C_algo = C.algo;
8957 * Rabbit stream cipher algorithm
8959 var Rabbit = C_algo.Rabbit = StreamCipher.extend({
8960 _doReset: function () {
8962 var K = this._key.words;
8963 var iv = this.cfg.iv;
8966 for (var i =
0; i <
4; i++) {
8967 K[i] = (((K[i] <<
8) | (K[i]
>>> 24)) &
0x00ff00ff) |
8968 (((K[i] <<
24) | (K[i]
>>> 8)) &
0xff00ff00);
8971 // Generate initial state values
8973 K[
0], (K[
3] <<
16) | (K[
2]
>>> 16),
8974 K[
1], (K[
0] <<
16) | (K[
3]
>>> 16),
8975 K[
2], (K[
1] <<
16) | (K[
0]
>>> 16),
8976 K[
3], (K[
2] <<
16) | (K[
1]
>>> 16)
8979 // Generate initial counter values
8981 (K[
2] <<
16) | (K[
2]
>>> 16), (K[
0] &
0xffff0000) | (K[
1] &
0x0000ffff),
8982 (K[
3] <<
16) | (K[
3]
>>> 16), (K[
1] &
0xffff0000) | (K[
2] &
0x0000ffff),
8983 (K[
0] <<
16) | (K[
0]
>>> 16), (K[
2] &
0xffff0000) | (K[
3] &
0x0000ffff),
8984 (K[
1] <<
16) | (K[
1]
>>> 16), (K[
3] &
0xffff0000) | (K[
0] &
0x0000ffff)
8990 // Iterate the system four times
8991 for (var i =
0; i <
4; i++) {
8992 nextState.call(this);
8995 // Modify the counters
8996 for (var i =
0; i <
8; i++) {
8997 C[i] ^= X[(i +
4) &
7];
9007 // Generate four subvectors
9008 var i0 = (((IV_0 <<
8) | (IV_0
>>> 24)) &
0x00ff00ff) | (((IV_0 <<
24) | (IV_0
>>> 8)) &
0xff00ff00);
9009 var i2 = (((IV_1 <<
8) | (IV_1
>>> 24)) &
0x00ff00ff) | (((IV_1 <<
24) | (IV_1
>>> 8)) &
0xff00ff00);
9010 var i1 = (i0
>>> 16) | (i2 &
0xffff0000);
9011 var i3 = (i2 <<
16) | (i0 &
0x0000ffff);
9013 // Modify counter values
9023 // Iterate the system four times
9024 for (var i =
0; i <
4; i++) {
9025 nextState.call(this);
9030 _doProcessBlock: function (M, offset) {
9034 // Iterate the system
9035 nextState.call(this);
9037 // Generate four keystream words
9038 S[
0] = X[
0] ^ (X[
5]
>>> 16) ^ (X[
3] <<
16);
9039 S[
1] = X[
2] ^ (X[
7]
>>> 16) ^ (X[
5] <<
16);
9040 S[
2] = X[
4] ^ (X[
1]
>>> 16) ^ (X[
7] <<
16);
9041 S[
3] = X[
6] ^ (X[
3]
>>> 16) ^ (X[
1] <<
16);
9043 for (var i =
0; i <
4; i++) {
9045 S[i] = (((S[i] <<
8) | (S[i]
>>> 24)) &
0x00ff00ff) |
9046 (((S[i] <<
24) | (S[i]
>>> 8)) &
0xff00ff00);
9049 M[offset + i] ^= S[i];
9058 function nextState() {
9063 // Save old counter values
9064 for (var i =
0; i <
8; i++) {
9068 // Calculate new counter values
9069 C[
0] = (C[
0] +
0x4d34d34d + this._b) |
0;
9070 C[
1] = (C[
1] +
0xd34d34d3 + ((C[
0]
>>> 0) < (C_[
0]
>>> 0) ?
1 :
0)) |
0;
9071 C[
2] = (C[
2] +
0x34d34d34 + ((C[
1]
>>> 0) < (C_[
1]
>>> 0) ?
1 :
0)) |
0;
9072 C[
3] = (C[
3] +
0x4d34d34d + ((C[
2]
>>> 0) < (C_[
2]
>>> 0) ?
1 :
0)) |
0;
9073 C[
4] = (C[
4] +
0xd34d34d3 + ((C[
3]
>>> 0) < (C_[
3]
>>> 0) ?
1 :
0)) |
0;
9074 C[
5] = (C[
5] +
0x34d34d34 + ((C[
4]
>>> 0) < (C_[
4]
>>> 0) ?
1 :
0)) |
0;
9075 C[
6] = (C[
6] +
0x4d34d34d + ((C[
5]
>>> 0) < (C_[
5]
>>> 0) ?
1 :
0)) |
0;
9076 C[
7] = (C[
7] +
0xd34d34d3 + ((C[
6]
>>> 0) < (C_[
6]
>>> 0) ?
1 :
0)) |
0;
9077 this._b = (C[
7]
>>> 0) < (C_[
7]
>>> 0) ?
1 :
0;
9079 // Calculate the g-values
9080 for (var i =
0; i <
8; i++) {
9081 var gx = X[i] + C[i];
9083 // Construct high and low argument for squaring
9084 var ga = gx &
0xffff;
9087 // Calculate high and low result of squaring
9088 var gh = ((((ga * ga)
>>> 17) + ga * gb)
>>> 15) + gb * gb;
9089 var gl = (((gx &
0xffff0000) * gx) |
0) + (((gx &
0x0000ffff) * gx) |
0);
9095 // Calculate new state values
9096 X[
0] = (G[
0] + ((G[
7] <<
16) | (G[
7]
>>> 16)) + ((G[
6] <<
16) | (G[
6]
>>> 16))) |
0;
9097 X[
1] = (G[
1] + ((G[
0] <<
8) | (G[
0]
>>> 24)) + G[
7]) |
0;
9098 X[
2] = (G[
2] + ((G[
1] <<
16) | (G[
1]
>>> 16)) + ((G[
0] <<
16) | (G[
0]
>>> 16))) |
0;
9099 X[
3] = (G[
3] + ((G[
2] <<
8) | (G[
2]
>>> 24)) + G[
1]) |
0;
9100 X[
4] = (G[
4] + ((G[
3] <<
16) | (G[
3]
>>> 16)) + ((G[
2] <<
16) | (G[
2]
>>> 16))) |
0;
9101 X[
5] = (G[
5] + ((G[
4] <<
8) | (G[
4]
>>> 24)) + G[
3]) |
0;
9102 X[
6] = (G[
6] + ((G[
5] <<
16) | (G[
5]
>>> 16)) + ((G[
4] <<
16) | (G[
4]
>>> 16))) |
0;
9103 X[
7] = (G[
7] + ((G[
6] <<
8) | (G[
6]
>>> 24)) + G[
5]) |
0;
9107 * Shortcut functions to the cipher's object interface.
9111 * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);
9112 * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);
9114 C.Rabbit = StreamCipher._createHelper(Rabbit);
9118 return CryptoJS.Rabbit;
9121 },{
"./cipher-core":
30,
"./core":
31,
"./enc-base64":
32,
"./evpkdf":
34,
"./md5":
39}],
53:[function(_dereq_,module,exports){
9122 ;(function (root, factory, undef) {
9123 if (typeof exports ===
"object") {
9125 module.exports = exports = factory(_dereq_(
"./core"), _dereq_(
"./enc-base64"), _dereq_(
"./md5"), _dereq_(
"./evpkdf"), _dereq_(
"./cipher-core"));
9127 else if (typeof define ===
"function" && define.amd) {
9129 define([
"./core",
"./enc-base64",
"./md5",
"./evpkdf",
"./cipher-core"], factory);
9133 factory(root.CryptoJS);
9135 }(this, function (CryptoJS) {
9141 var StreamCipher = C_lib.StreamCipher;
9142 var C_algo = C.algo;
9145 * RC4 stream cipher algorithm.
9147 var RC4 = C_algo.RC4 = StreamCipher.extend({
9148 _doReset: function () {
9150 var key = this._key;
9151 var keyWords = key.words;
9152 var keySigBytes = key.sigBytes;
9155 var S = this._S = [];
9156 for (var i =
0; i <
256; i++) {
9161 for (var i =
0, j =
0; i <
256; i++) {
9162 var keyByteIndex = i % keySigBytes;
9163 var keyByte = (keyWords[keyByteIndex
>>> 2]
>>> (
24 - (keyByteIndex %
4) *
8)) &
0xff;
9165 j = (j + S[i] + keyByte) %
256;
9174 this._i = this._j =
0;
9177 _doProcessBlock: function (M, offset) {
9178 M[offset] ^= generateKeystreamWord.call(this);
9186 function generateKeystreamWord() {
9192 // Generate keystream word
9193 var keystreamWord =
0;
9194 for (var n =
0; n <
4; n++) {
9196 j = (j + S[i]) %
256;
9203 keystreamWord |= S[(S[i] + S[j]) %
256] << (
24 - n *
8);
9210 return keystreamWord;
9214 * Shortcut functions to the cipher's object interface.
9218 * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);
9219 * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);
9221 C.RC4 = StreamCipher._createHelper(RC4);
9224 * Modified RC4 stream cipher algorithm.
9226 var RC4Drop = C_algo.RC4Drop = RC4.extend({
9228 * Configuration options.
9230 * @property {number} drop The number of keystream words to drop. Default
192
9232 cfg: RC4.cfg.extend({
9236 _doReset: function () {
9237 RC4._doReset.call(this);
9240 for (var i = this.cfg.drop; i
> 0; i--) {
9241 generateKeystreamWord.call(this);
9247 * Shortcut functions to the cipher's object interface.
9251 * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);
9252 * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);
9254 C.RC4Drop = StreamCipher._createHelper(RC4Drop);
9258 return CryptoJS.RC4;
9261 },{
"./cipher-core":
30,
"./core":
31,
"./enc-base64":
32,
"./evpkdf":
34,
"./md5":
39}],
54:[function(_dereq_,module,exports){
9262 ;(function (root, factory) {
9263 if (typeof exports ===
"object") {
9265 module.exports = exports = factory(_dereq_(
"./core"));
9267 else if (typeof define ===
"function" && define.amd) {
9269 define([
"./core"], factory);
9273 factory(root.CryptoJS);
9275 }(this, function (CryptoJS) {
9278 (c)
2012 by Cédric Mesnil. All rights reserved.
9280 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
9282 - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
9283 - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
9285 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
9292 var WordArray = C_lib.WordArray;
9293 var Hasher = C_lib.Hasher;
9294 var C_algo = C.algo;
9297 var _zl = WordArray.create([
9298 0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
9299 7,
4,
13,
1,
10,
6,
15,
3,
12,
0,
9,
5,
2,
14,
11,
8,
9300 3,
10,
14,
4,
9,
15,
8,
1,
2,
7,
0,
6,
13,
11,
5,
12,
9301 1,
9,
11,
10,
0,
8,
12,
4,
13,
3,
7,
15,
14,
5,
6,
2,
9302 4,
0,
5,
9,
7,
12,
2,
10,
14,
1,
3,
8,
11,
6,
15,
13]);
9303 var _zr = WordArray.create([
9304 5,
14,
7,
0,
9,
2,
11,
4,
13,
6,
15,
8,
1,
10,
3,
12,
9305 6,
11,
3,
7,
0,
13,
5,
10,
14,
15,
8,
12,
4,
9,
1,
2,
9306 15,
5,
1,
3,
7,
14,
6,
9,
11,
8,
12,
2,
10,
0,
4,
13,
9307 8,
6,
4,
1,
3,
11,
15,
0,
5,
12,
2,
13,
9,
7,
10,
14,
9308 12,
15,
10,
4,
1,
5,
8,
7,
6,
2,
13,
14,
0,
3,
9,
11]);
9309 var _sl = WordArray.create([
9310 11,
14,
15,
12,
5,
8,
7,
9,
11,
13,
14,
15,
6,
7,
9,
8,
9311 7,
6,
8,
13,
11,
9,
7,
15,
7,
12,
15,
9,
11,
7,
13,
12,
9312 11,
13,
6,
7,
14,
9,
13,
15,
14,
8,
13,
6,
5,
12,
7,
5,
9313 11,
12,
14,
15,
14,
15,
9,
8,
9,
14,
5,
6,
8,
6,
5,
12,
9314 9,
15,
5,
11,
6,
8,
13,
12,
5,
12,
13,
14,
11,
8,
5,
6 ]);
9315 var _sr = WordArray.create([
9316 8,
9,
9,
11,
13,
15,
15,
5,
7,
7,
8,
11,
14,
14,
12,
6,
9317 9,
13,
15,
7,
12,
8,
9,
11,
7,
7,
12,
7,
6,
15,
13,
11,
9318 9,
7,
15,
11,
8,
6,
6,
14,
12,
13,
5,
14,
13,
13,
7,
5,
9319 15,
5,
8,
11,
14,
14,
6,
14,
6,
9,
12,
9,
12,
5,
15,
8,
9320 8,
5,
12,
9,
12,
5,
14,
6,
8,
13,
6,
5,
15,
13,
11,
11 ]);
9322 var _hl = WordArray.create([
0x00000000,
0x5A827999,
0x6ED9EBA1,
0x8F1BBCDC,
0xA953FD4E]);
9323 var _hr = WordArray.create([
0x50A28BE6,
0x5C4DD124,
0x6D703EF3,
0x7A6D76E9,
0x00000000]);
9326 * RIPEMD160 hash algorithm.
9328 var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({
9329 _doReset: function () {
9330 this._hash = WordArray.create([
0x67452301,
0xEFCDAB89,
0x98BADCFE,
0x10325476,
0xC3D2E1F0]);
9333 _doProcessBlock: function (M, offset) {
9336 for (var i =
0; i <
16; i++) {
9338 var offset_i = offset + i;
9339 var M_offset_i = M[offset_i];
9343 (((M_offset_i <<
8) | (M_offset_i
>>> 24)) &
0x00ff00ff) |
9344 (((M_offset_i <<
24) | (M_offset_i
>>> 8)) &
0xff00ff00)
9348 var H = this._hash.words;
9356 // Working variables
9357 var al, bl, cl, dl, el;
9358 var ar, br, cr, dr, er;
9367 for (var i =
0; i <
80; i +=
1) {
9368 t = (al + M[offset+zl[i]])|
0;
9370 t += f1(bl,cl,dl) + hl[
0];
9372 t += f2(bl,cl,dl) + hl[
1];
9374 t += f3(bl,cl,dl) + hl[
2];
9376 t += f4(bl,cl,dl) + hl[
3];
9377 } else {// if (i
<80) {
9378 t += f5(bl,cl,dl) + hl[
4];
9389 t = (ar + M[offset+zr[i]])|
0;
9391 t += f5(br,cr,dr) + hr[
0];
9393 t += f4(br,cr,dr) + hr[
1];
9395 t += f3(br,cr,dr) + hr[
2];
9397 t += f2(br,cr,dr) + hr[
3];
9398 } else {// if (i
<80) {
9399 t += f1(br,cr,dr) + hr[
4];
9410 // Intermediate hash value
9411 t = (H[
1] + cl + dr)|
0;
9412 H[
1] = (H[
2] + dl + er)|
0;
9413 H[
2] = (H[
3] + el + ar)|
0;
9414 H[
3] = (H[
4] + al + br)|
0;
9415 H[
4] = (H[
0] + bl + cr)|
0;
9419 _doFinalize: function () {
9421 var data = this._data;
9422 var dataWords = data.words;
9424 var nBitsTotal = this._nDataBytes *
8;
9425 var nBitsLeft = data.sigBytes *
8;
9428 dataWords[nBitsLeft
>>> 5] |=
0x80 << (
24 - nBitsLeft %
32);
9429 dataWords[(((nBitsLeft +
64)
>>> 9) <<
4) +
14] = (
9430 (((nBitsTotal <<
8) | (nBitsTotal
>>> 24)) &
0x00ff00ff) |
9431 (((nBitsTotal <<
24) | (nBitsTotal
>>> 8)) &
0xff00ff00)
9433 data.sigBytes = (dataWords.length +
1) *
4;
9435 // Hash final blocks
9439 var hash = this._hash;
9443 for (var i =
0; i <
5; i++) {
9448 H[i] = (((H_i <<
8) | (H_i
>>> 24)) &
0x00ff00ff) |
9449 (((H_i <<
24) | (H_i
>>> 8)) &
0xff00ff00);
9452 // Return final computed hash
9456 clone: function () {
9457 var clone = Hasher.clone.call(this);
9458 clone._hash = this._hash.clone();
9465 function f1(x, y, z) {
9466 return ((x) ^ (y) ^ (z));
9470 function f2(x, y, z) {
9471 return (((x)&(y)) | ((~x)&(z)));
9474 function f3(x, y, z) {
9475 return (((x) | (~(y))) ^ (z));
9478 function f4(x, y, z) {
9479 return (((x) & (z)) | ((y)&(~(z))));
9482 function f5(x, y, z) {
9483 return ((x) ^ ((y) |(~(z))));
9487 function rotl(x,n) {
9488 return (x<
<n) | (x
>>>(
32-n));
9493 * Shortcut function to the hasher's object interface.
9495 * @param {WordArray|string} message The message to hash.
9497 * @return {WordArray} The hash.
9503 * var hash = CryptoJS.RIPEMD160('message');
9504 * var hash = CryptoJS.RIPEMD160(wordArray);
9506 C.RIPEMD160 = Hasher._createHelper(RIPEMD160);
9509 * Shortcut function to the HMAC's object interface.
9511 * @param {WordArray|string} message The message to hash.
9512 * @param {WordArray|string} key The secret key.
9514 * @return {WordArray} The HMAC.
9520 * var hmac = CryptoJS.HmacRIPEMD160(message, key);
9522 C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);
9526 return CryptoJS.RIPEMD160;
9529 },{"./core":
31}],
55:[function(_dereq_,module,exports){
9530 ;(function (root, factory) {
9531 if (typeof exports === "object") {
9533 module.exports = exports = factory(_dereq_("./core"));
9535 else if (typeof define === "function" && define.amd) {
9537 define(["./core"], factory);
9541 factory(root.CryptoJS);
9543 }(this, function (CryptoJS) {
9549 var WordArray = C_lib.WordArray;
9550 var Hasher = C_lib.Hasher;
9551 var C_algo = C.algo;
9557 * SHA-
1 hash algorithm.
9559 var SHA1 = C_algo.SHA1 = Hasher.extend({
9560 _doReset: function () {
9561 this._hash = new WordArray.init([
9562 0x67452301,
0xefcdab89,
9563 0x98badcfe,
0x10325476,
9568 _doProcessBlock: function (M, offset) {
9570 var H = this._hash.words;
9572 // Working variables
9580 for (var i =
0; i <
80; i++) {
9582 W[i] = M[offset + i] |
0;
9584 var n = W[i -
3] ^ W[i -
8] ^ W[i -
14] ^ W[i -
16];
9585 W[i] = (n <<
1) | (n
>>> 31);
9588 var t = ((a <<
5) | (a
>>> 27)) + e + W[i];
9590 t += ((b & c) | (~b & d)) +
0x5a827999;
9591 } else if (i <
40) {
9592 t += (b ^ c ^ d) +
0x6ed9eba1;
9593 } else if (i <
60) {
9594 t += ((b & c) | (b & d) | (c & d)) -
0x70e44324;
9595 } else /* if (i <
80) */ {
9596 t += (b ^ c ^ d) -
0x359d3e2a;
9601 c = (b <<
30) | (b
>>> 2);
9606 // Intermediate hash value
9607 H[
0] = (H[
0] + a) |
0;
9608 H[
1] = (H[
1] + b) |
0;
9609 H[
2] = (H[
2] + c) |
0;
9610 H[
3] = (H[
3] + d) |
0;
9611 H[
4] = (H[
4] + e) |
0;
9614 _doFinalize: function () {
9616 var data = this._data;
9617 var dataWords = data.words;
9619 var nBitsTotal = this._nDataBytes *
8;
9620 var nBitsLeft = data.sigBytes *
8;
9623 dataWords[nBitsLeft
>>> 5] |=
0x80 << (
24 - nBitsLeft %
32);
9624 dataWords[(((nBitsLeft +
64)
>>> 9) <<
4) +
14] = Math.floor(nBitsTotal /
0x100000000);
9625 dataWords[(((nBitsLeft +
64)
>>> 9) <<
4) +
15] = nBitsTotal;
9626 data.sigBytes = dataWords.length *
4;
9628 // Hash final blocks
9631 // Return final computed hash
9635 clone: function () {
9636 var clone = Hasher.clone.call(this);
9637 clone._hash = this._hash.clone();
9644 * Shortcut function to the hasher's object interface.
9646 * @param {WordArray|string} message The message to hash.
9648 * @return {WordArray} The hash.
9654 * var hash = CryptoJS.SHA1('message');
9655 * var hash = CryptoJS.SHA1(wordArray);
9657 C.SHA1 = Hasher._createHelper(SHA1);
9660 * Shortcut function to the HMAC's object interface.
9662 * @param {WordArray|string} message The message to hash.
9663 * @param {WordArray|string} key The secret key.
9665 * @return {WordArray} The HMAC.
9671 * var hmac = CryptoJS.HmacSHA1(message, key);
9673 C.HmacSHA1 = Hasher._createHmacHelper(SHA1);
9677 return CryptoJS.SHA1;
9680 },{
"./core":
31}],
56:[function(_dereq_,module,exports){
9681 ;(function (root, factory, undef) {
9682 if (typeof exports ===
"object") {
9684 module.exports = exports = factory(_dereq_(
"./core"), _dereq_(
"./sha256"));
9686 else if (typeof define ===
"function" && define.amd) {
9688 define([
"./core",
"./sha256"], factory);
9692 factory(root.CryptoJS);
9694 }(this, function (CryptoJS) {
9700 var WordArray = C_lib.WordArray;
9701 var C_algo = C.algo;
9702 var SHA256 = C_algo.SHA256;
9705 * SHA-
224 hash algorithm.
9707 var SHA224 = C_algo.SHA224 = SHA256.extend({
9708 _doReset: function () {
9709 this._hash = new WordArray.init([
9710 0xc1059ed8,
0x367cd507,
0x3070dd17,
0xf70e5939,
9711 0xffc00b31,
0x68581511,
0x64f98fa7,
0xbefa4fa4
9715 _doFinalize: function () {
9716 var hash = SHA256._doFinalize.call(this);
9725 * Shortcut function to the hasher's object interface.
9727 * @param {WordArray|string} message The message to hash.
9729 * @return {WordArray} The hash.
9735 * var hash = CryptoJS.SHA224('message');
9736 * var hash = CryptoJS.SHA224(wordArray);
9738 C.SHA224 = SHA256._createHelper(SHA224);
9741 * Shortcut function to the HMAC's object interface.
9743 * @param {WordArray|string} message The message to hash.
9744 * @param {WordArray|string} key The secret key.
9746 * @return {WordArray} The HMAC.
9752 * var hmac = CryptoJS.HmacSHA224(message, key);
9754 C.HmacSHA224 = SHA256._createHmacHelper(SHA224);
9758 return CryptoJS.SHA224;
9761 },{
"./core":
31,
"./sha256":
57}],
57:[function(_dereq_,module,exports){
9762 ;(function (root, factory) {
9763 if (typeof exports ===
"object") {
9765 module.exports = exports = factory(_dereq_(
"./core"));
9767 else if (typeof define ===
"function" && define.amd) {
9769 define([
"./core"], factory);
9773 factory(root.CryptoJS);
9775 }(this, function (CryptoJS) {
9781 var WordArray = C_lib.WordArray;
9782 var Hasher = C_lib.Hasher;
9783 var C_algo = C.algo;
9785 // Initialization and round constants tables
9789 // Compute constants
9791 function isPrime(n) {
9792 var sqrtN = Math.sqrt(n);
9793 for (var factor =
2; factor <= sqrtN; factor++) {
9794 if (!(n % factor)) {
9802 function getFractionalBits(n) {
9803 return ((n - (n |
0)) *
0x100000000) |
0;
9808 while (nPrime <
64) {
9811 H[nPrime] = getFractionalBits(Math.pow(n,
1 /
2));
9813 K[nPrime] = getFractionalBits(Math.pow(n,
1 /
3));
9826 * SHA-
256 hash algorithm.
9828 var SHA256 = C_algo.SHA256 = Hasher.extend({
9829 _doReset: function () {
9830 this._hash = new WordArray.init(H.slice(
0));
9833 _doProcessBlock: function (M, offset) {
9835 var H = this._hash.words;
9837 // Working variables
9848 for (var i =
0; i <
64; i++) {
9850 W[i] = M[offset + i] |
0;
9852 var gamma0x = W[i -
15];
9853 var gamma0 = ((gamma0x <<
25) | (gamma0x
>>> 7)) ^
9854 ((gamma0x <<
14) | (gamma0x
>>> 18)) ^
9857 var gamma1x = W[i -
2];
9858 var gamma1 = ((gamma1x <<
15) | (gamma1x
>>> 17)) ^
9859 ((gamma1x <<
13) | (gamma1x
>>> 19)) ^
9862 W[i] = gamma0 + W[i -
7] + gamma1 + W[i -
16];
9865 var ch = (e & f) ^ (~e & g);
9866 var maj = (a & b) ^ (a & c) ^ (b & c);
9868 var sigma0 = ((a <<
30) | (a
>>> 2)) ^ ((a <<
19) | (a
>>> 13)) ^ ((a <<
10) | (a
>>> 22));
9869 var sigma1 = ((e <<
26) | (e
>>> 6)) ^ ((e <<
21) | (e
>>> 11)) ^ ((e <<
7) | (e
>>> 25));
9871 var t1 = h + sigma1 + ch + K[i] + W[i];
9872 var t2 = sigma0 + maj;
9884 // Intermediate hash value
9885 H[
0] = (H[
0] + a) |
0;
9886 H[
1] = (H[
1] + b) |
0;
9887 H[
2] = (H[
2] + c) |
0;
9888 H[
3] = (H[
3] + d) |
0;
9889 H[
4] = (H[
4] + e) |
0;
9890 H[
5] = (H[
5] + f) |
0;
9891 H[
6] = (H[
6] + g) |
0;
9892 H[
7] = (H[
7] + h) |
0;
9895 _doFinalize: function () {
9897 var data = this._data;
9898 var dataWords = data.words;
9900 var nBitsTotal = this._nDataBytes *
8;
9901 var nBitsLeft = data.sigBytes *
8;
9904 dataWords[nBitsLeft
>>> 5] |=
0x80 << (
24 - nBitsLeft %
32);
9905 dataWords[(((nBitsLeft +
64)
>>> 9) <<
4) +
14] = Math.floor(nBitsTotal /
0x100000000);
9906 dataWords[(((nBitsLeft +
64)
>>> 9) <<
4) +
15] = nBitsTotal;
9907 data.sigBytes = dataWords.length *
4;
9909 // Hash final blocks
9912 // Return final computed hash
9916 clone: function () {
9917 var clone = Hasher.clone.call(this);
9918 clone._hash = this._hash.clone();
9925 * Shortcut function to the hasher's object interface.
9927 * @param {WordArray|string} message The message to hash.
9929 * @return {WordArray} The hash.
9935 * var hash = CryptoJS.SHA256('message');
9936 * var hash = CryptoJS.SHA256(wordArray);
9938 C.SHA256 = Hasher._createHelper(SHA256);
9941 * Shortcut function to the HMAC's object interface.
9943 * @param {WordArray|string} message The message to hash.
9944 * @param {WordArray|string} key The secret key.
9946 * @return {WordArray} The HMAC.
9952 * var hmac = CryptoJS.HmacSHA256(message, key);
9954 C.HmacSHA256 = Hasher._createHmacHelper(SHA256);
9958 return CryptoJS.SHA256;
9961 },{
"./core":
31}],
58:[function(_dereq_,module,exports){
9962 ;(function (root, factory, undef) {
9963 if (typeof exports ===
"object") {
9965 module.exports = exports = factory(_dereq_(
"./core"), _dereq_(
"./x64-core"));
9967 else if (typeof define ===
"function" && define.amd) {
9969 define([
"./core",
"./x64-core"], factory);
9973 factory(root.CryptoJS);
9975 }(this, function (CryptoJS) {
9981 var WordArray = C_lib.WordArray;
9982 var Hasher = C_lib.Hasher;
9984 var X64Word = C_x64.Word;
9985 var C_algo = C.algo;
9988 var RHO_OFFSETS = [];
9989 var PI_INDEXES = [];
9990 var ROUND_CONSTANTS = [];
9992 // Compute Constants
9994 // Compute rho offset constants
9996 for (var t =
0; t <
24; t++) {
9997 RHO_OFFSETS[x +
5 * y] = ((t +
1) * (t +
2) /
2) %
64;
10000 var newY = (
2 * x +
3 * y) %
5;
10005 // Compute pi index constants
10006 for (var x =
0; x <
5; x++) {
10007 for (var y =
0; y <
5; y++) {
10008 PI_INDEXES[x +
5 * y] = y + ((
2 * x +
3 * y) %
5) *
5;
10012 // Compute round constants
10014 for (var i =
0; i <
24; i++) {
10015 var roundConstantMsw =
0;
10016 var roundConstantLsw =
0;
10018 for (var j =
0; j <
7; j++) {
10020 var bitPosition = (
1 << j) -
1;
10021 if (bitPosition <
32) {
10022 roundConstantLsw ^=
1 << bitPosition;
10023 } else /* if (bitPosition
>=
32) */ {
10024 roundConstantMsw ^=
1 << (bitPosition -
32);
10028 // Compute next LFSR
10030 // Primitive polynomial over GF(
2): x^
8 + x^
6 + x^
5 + x^
4 +
1
10031 LFSR = (LFSR <<
1) ^
0x71;
10037 ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);
10041 // Reusable objects for temporary values
10044 for (var i =
0; i <
25; i++) {
10045 T[i] = X64Word.create();
10050 * SHA-
3 hash algorithm.
10052 var SHA3 = C_algo.SHA3 = Hasher.extend({
10054 * Configuration options.
10056 * @property {number} outputLength
10057 * The desired number of bits in the output hash.
10058 * Only values permitted are:
224,
256,
384,
512.
10061 cfg: Hasher.cfg.extend({
10065 _doReset: function () {
10066 var state = this._state = []
10067 for (var i =
0; i <
25; i++) {
10068 state[i] = new X64Word.init();
10071 this.blockSize = (
1600 -
2 * this.cfg.outputLength) /
32;
10074 _doProcessBlock: function (M, offset) {
10076 var state = this._state;
10077 var nBlockSizeLanes = this.blockSize /
2;
10080 for (var i =
0; i < nBlockSizeLanes; i++) {
10082 var M2i = M[offset +
2 * i];
10083 var M2i1 = M[offset +
2 * i +
1];
10087 (((M2i <<
8) | (M2i
>>> 24)) &
0x00ff00ff) |
10088 (((M2i <<
24) | (M2i
>>> 8)) &
0xff00ff00)
10091 (((M2i1 <<
8) | (M2i1
>>> 24)) &
0x00ff00ff) |
10092 (((M2i1 <<
24) | (M2i1
>>> 8)) &
0xff00ff00)
10095 // Absorb message into state
10096 var lane = state[i];
10102 for (var round =
0; round <
24; round++) {
10104 for (var x =
0; x <
5; x++) {
10105 // Mix column lanes
10106 var tMsw =
0, tLsw =
0;
10107 for (var y =
0; y <
5; y++) {
10108 var lane = state[x +
5 * y];
10113 // Temporary values
10118 for (var x =
0; x <
5; x++) {
10120 var Tx4 = T[(x +
4) %
5];
10121 var Tx1 = T[(x +
1) %
5];
10122 var Tx1Msw = Tx1.high;
10123 var Tx1Lsw = Tx1.low;
10125 // Mix surrounding columns
10126 var tMsw = Tx4.high ^ ((Tx1Msw <<
1) | (Tx1Lsw
>>> 31));
10127 var tLsw = Tx4.low ^ ((Tx1Lsw <<
1) | (Tx1Msw
>>> 31));
10128 for (var y =
0; y <
5; y++) {
10129 var lane = state[x +
5 * y];
10136 for (var laneIndex =
1; laneIndex <
25; laneIndex++) {
10138 var lane = state[laneIndex];
10139 var laneMsw = lane.high;
10140 var laneLsw = lane.low;
10141 var rhoOffset = RHO_OFFSETS[laneIndex];
10144 if (rhoOffset <
32) {
10145 var tMsw = (laneMsw << rhoOffset) | (laneLsw
>>> (
32 - rhoOffset));
10146 var tLsw = (laneLsw << rhoOffset) | (laneMsw
>>> (
32 - rhoOffset));
10147 } else /* if (rhoOffset
>=
32) */ {
10148 var tMsw = (laneLsw << (rhoOffset -
32)) | (laneMsw
>>> (
64 - rhoOffset));
10149 var tLsw = (laneMsw << (rhoOffset -
32)) | (laneLsw
>>> (
64 - rhoOffset));
10153 var TPiLane = T[PI_INDEXES[laneIndex]];
10154 TPiLane.high = tMsw;
10155 TPiLane.low = tLsw;
10158 // Rho pi at x = y =
0
10160 var state0 = state[
0];
10161 T0.high = state0.high;
10162 T0.low = state0.low;
10165 for (var x =
0; x <
5; x++) {
10166 for (var y =
0; y <
5; y++) {
10168 var laneIndex = x +
5 * y;
10169 var lane = state[laneIndex];
10170 var TLane = T[laneIndex];
10171 var Tx1Lane = T[((x +
1) %
5) +
5 * y];
10172 var Tx2Lane = T[((x +
2) %
5) +
5 * y];
10175 lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high);
10176 lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low);
10181 var lane = state[
0];
10182 var roundConstant = ROUND_CONSTANTS[round];
10183 lane.high ^= roundConstant.high;
10184 lane.low ^= roundConstant.low;;
10188 _doFinalize: function () {
10190 var data = this._data;
10191 var dataWords = data.words;
10192 var nBitsTotal = this._nDataBytes *
8;
10193 var nBitsLeft = data.sigBytes *
8;
10194 var blockSizeBits = this.blockSize *
32;
10197 dataWords[nBitsLeft
>>> 5] |=
0x1 << (
24 - nBitsLeft %
32);
10198 dataWords[((Math.ceil((nBitsLeft +
1) / blockSizeBits) * blockSizeBits)
>>> 5) -
1] |=
0x80;
10199 data.sigBytes = dataWords.length *
4;
10201 // Hash final blocks
10205 var state = this._state;
10206 var outputLengthBytes = this.cfg.outputLength /
8;
10207 var outputLengthLanes = outputLengthBytes /
8;
10210 var hashWords = [];
10211 for (var i =
0; i < outputLengthLanes; i++) {
10213 var lane = state[i];
10214 var laneMsw = lane.high;
10215 var laneLsw = lane.low;
10219 (((laneMsw <<
8) | (laneMsw
>>> 24)) &
0x00ff00ff) |
10220 (((laneMsw <<
24) | (laneMsw
>>> 8)) &
0xff00ff00)
10223 (((laneLsw <<
8) | (laneLsw
>>> 24)) &
0x00ff00ff) |
10224 (((laneLsw <<
24) | (laneLsw
>>> 8)) &
0xff00ff00)
10227 // Squeeze state to retrieve hash
10228 hashWords.push(laneLsw);
10229 hashWords.push(laneMsw);
10232 // Return final computed hash
10233 return new WordArray.init(hashWords, outputLengthBytes);
10236 clone: function () {
10237 var clone = Hasher.clone.call(this);
10239 var state = clone._state = this._state.slice(
0);
10240 for (var i =
0; i <
25; i++) {
10241 state[i] = state[i].clone();
10249 * Shortcut function to the hasher's object interface.
10251 * @param {WordArray|string} message The message to hash.
10253 * @return {WordArray} The hash.
10259 * var hash = CryptoJS.SHA3('message');
10260 * var hash = CryptoJS.SHA3(wordArray);
10262 C.SHA3 = Hasher._createHelper(SHA3);
10265 * Shortcut function to the HMAC's object interface.
10267 * @param {WordArray|string} message The message to hash.
10268 * @param {WordArray|string} key The secret key.
10270 * @return {WordArray} The HMAC.
10276 * var hmac = CryptoJS.HmacSHA3(message, key);
10278 C.HmacSHA3 = Hasher._createHmacHelper(SHA3);
10282 return CryptoJS.SHA3;
10285 },{
"./core":
31,
"./x64-core":
62}],
59:[function(_dereq_,module,exports){
10286 ;(function (root, factory, undef) {
10287 if (typeof exports ===
"object") {
10289 module.exports = exports = factory(_dereq_(
"./core"), _dereq_(
"./x64-core"), _dereq_(
"./sha512"));
10291 else if (typeof define ===
"function" && define.amd) {
10293 define([
"./core",
"./x64-core",
"./sha512"], factory);
10296 // Global (browser)
10297 factory(root.CryptoJS);
10299 }(this, function (CryptoJS) {
10305 var X64Word = C_x64.Word;
10306 var X64WordArray = C_x64.WordArray;
10307 var C_algo = C.algo;
10308 var SHA512 = C_algo.SHA512;
10311 * SHA-
384 hash algorithm.
10313 var SHA384 = C_algo.SHA384 = SHA512.extend({
10314 _doReset: function () {
10315 this._hash = new X64WordArray.init([
10316 new X64Word.init(
0xcbbb9d5d,
0xc1059ed8), new X64Word.init(
0x629a292a,
0x367cd507),
10317 new X64Word.init(
0x9159015a,
0x3070dd17), new X64Word.init(
0x152fecd8,
0xf70e5939),
10318 new X64Word.init(
0x67332667,
0xffc00b31), new X64Word.init(
0x8eb44a87,
0x68581511),
10319 new X64Word.init(
0xdb0c2e0d,
0x64f98fa7), new X64Word.init(
0x47b5481d,
0xbefa4fa4)
10323 _doFinalize: function () {
10324 var hash = SHA512._doFinalize.call(this);
10326 hash.sigBytes -=
16;
10333 * Shortcut function to the hasher's object interface.
10335 * @param {WordArray|string} message The message to hash.
10337 * @return {WordArray} The hash.
10343 * var hash = CryptoJS.SHA384('message');
10344 * var hash = CryptoJS.SHA384(wordArray);
10346 C.SHA384 = SHA512._createHelper(SHA384);
10349 * Shortcut function to the HMAC's object interface.
10351 * @param {WordArray|string} message The message to hash.
10352 * @param {WordArray|string} key The secret key.
10354 * @return {WordArray} The HMAC.
10360 * var hmac = CryptoJS.HmacSHA384(message, key);
10362 C.HmacSHA384 = SHA512._createHmacHelper(SHA384);
10366 return CryptoJS.SHA384;
10369 },{
"./core":
31,
"./sha512":
60,
"./x64-core":
62}],
60:[function(_dereq_,module,exports){
10370 ;(function (root, factory, undef) {
10371 if (typeof exports ===
"object") {
10373 module.exports = exports = factory(_dereq_(
"./core"), _dereq_(
"./x64-core"));
10375 else if (typeof define ===
"function" && define.amd) {
10377 define([
"./core",
"./x64-core"], factory);
10380 // Global (browser)
10381 factory(root.CryptoJS);
10383 }(this, function (CryptoJS) {
10389 var Hasher = C_lib.Hasher;
10391 var X64Word = C_x64.Word;
10392 var X64WordArray = C_x64.WordArray;
10393 var C_algo = C.algo;
10395 function X64Word_create() {
10396 return X64Word.create.apply(X64Word, arguments);
10401 X64Word_create(
0x428a2f98,
0xd728ae22), X64Word_create(
0x71374491,
0x23ef65cd),
10402 X64Word_create(
0xb5c0fbcf,
0xec4d3b2f), X64Word_create(
0xe9b5dba5,
0x8189dbbc),
10403 X64Word_create(
0x3956c25b,
0xf348b538), X64Word_create(
0x59f111f1,
0xb605d019),
10404 X64Word_create(
0x923f82a4,
0xaf194f9b), X64Word_create(
0xab1c5ed5,
0xda6d8118),
10405 X64Word_create(
0xd807aa98,
0xa3030242), X64Word_create(
0x12835b01,
0x45706fbe),
10406 X64Word_create(
0x243185be,
0x4ee4b28c), X64Word_create(
0x550c7dc3,
0xd5ffb4e2),
10407 X64Word_create(
0x72be5d74,
0xf27b896f), X64Word_create(
0x80deb1fe,
0x3b1696b1),
10408 X64Word_create(
0x9bdc06a7,
0x25c71235), X64Word_create(
0xc19bf174,
0xcf692694),
10409 X64Word_create(
0xe49b69c1,
0x9ef14ad2), X64Word_create(
0xefbe4786,
0x384f25e3),
10410 X64Word_create(
0x0fc19dc6,
0x8b8cd5b5), X64Word_create(
0x240ca1cc,
0x77ac9c65),
10411 X64Word_create(
0x2de92c6f,
0x592b0275), X64Word_create(
0x4a7484aa,
0x6ea6e483),
10412 X64Word_create(
0x5cb0a9dc,
0xbd41fbd4), X64Word_create(
0x76f988da,
0x831153b5),
10413 X64Word_create(
0x983e5152,
0xee66dfab), X64Word_create(
0xa831c66d,
0x2db43210),
10414 X64Word_create(
0xb00327c8,
0x98fb213f), X64Word_create(
0xbf597fc7,
0xbeef0ee4),
10415 X64Word_create(
0xc6e00bf3,
0x3da88fc2), X64Word_create(
0xd5a79147,
0x930aa725),
10416 X64Word_create(
0x06ca6351,
0xe003826f), X64Word_create(
0x14292967,
0x0a0e6e70),
10417 X64Word_create(
0x27b70a85,
0x46d22ffc), X64Word_create(
0x2e1b2138,
0x5c26c926),
10418 X64Word_create(
0x4d2c6dfc,
0x5ac42aed), X64Word_create(
0x53380d13,
0x9d95b3df),
10419 X64Word_create(
0x650a7354,
0x8baf63de), X64Word_create(
0x766a0abb,
0x3c77b2a8),
10420 X64Word_create(
0x81c2c92e,
0x47edaee6), X64Word_create(
0x92722c85,
0x1482353b),
10421 X64Word_create(
0xa2bfe8a1,
0x4cf10364), X64Word_create(
0xa81a664b,
0xbc423001),
10422 X64Word_create(
0xc24b8b70,
0xd0f89791), X64Word_create(
0xc76c51a3,
0x0654be30),
10423 X64Word_create(
0xd192e819,
0xd6ef5218), X64Word_create(
0xd6990624,
0x5565a910),
10424 X64Word_create(
0xf40e3585,
0x5771202a), X64Word_create(
0x106aa070,
0x32bbd1b8),
10425 X64Word_create(
0x19a4c116,
0xb8d2d0c8), X64Word_create(
0x1e376c08,
0x5141ab53),
10426 X64Word_create(
0x2748774c,
0xdf8eeb99), X64Word_create(
0x34b0bcb5,
0xe19b48a8),
10427 X64Word_create(
0x391c0cb3,
0xc5c95a63), X64Word_create(
0x4ed8aa4a,
0xe3418acb),
10428 X64Word_create(
0x5b9cca4f,
0x7763e373), X64Word_create(
0x682e6ff3,
0xd6b2b8a3),
10429 X64Word_create(
0x748f82ee,
0x5defb2fc), X64Word_create(
0x78a5636f,
0x43172f60),
10430 X64Word_create(
0x84c87814,
0xa1f0ab72), X64Word_create(
0x8cc70208,
0x1a6439ec),
10431 X64Word_create(
0x90befffa,
0x23631e28), X64Word_create(
0xa4506ceb,
0xde82bde9),
10432 X64Word_create(
0xbef9a3f7,
0xb2c67915), X64Word_create(
0xc67178f2,
0xe372532b),
10433 X64Word_create(
0xca273ece,
0xea26619c), X64Word_create(
0xd186b8c7,
0x21c0c207),
10434 X64Word_create(
0xeada7dd6,
0xcde0eb1e), X64Word_create(
0xf57d4f7f,
0xee6ed178),
10435 X64Word_create(
0x06f067aa,
0x72176fba), X64Word_create(
0x0a637dc5,
0xa2c898a6),
10436 X64Word_create(
0x113f9804,
0xbef90dae), X64Word_create(
0x1b710b35,
0x131c471b),
10437 X64Word_create(
0x28db77f5,
0x23047d84), X64Word_create(
0x32caab7b,
0x40c72493),
10438 X64Word_create(
0x3c9ebe0a,
0x15c9bebc), X64Word_create(
0x431d67c4,
0x9c100d4c),
10439 X64Word_create(
0x4cc5d4be,
0xcb3e42b6), X64Word_create(
0x597f299c,
0xfc657e2a),
10440 X64Word_create(
0x5fcb6fab,
0x3ad6faec), X64Word_create(
0x6c44198c,
0x4a475817)
10443 // Reusable objects
10446 for (var i =
0; i <
80; i++) {
10447 W[i] = X64Word_create();
10452 * SHA-
512 hash algorithm.
10454 var SHA512 = C_algo.SHA512 = Hasher.extend({
10455 _doReset: function () {
10456 this._hash = new X64WordArray.init([
10457 new X64Word.init(
0x6a09e667,
0xf3bcc908), new X64Word.init(
0xbb67ae85,
0x84caa73b),
10458 new X64Word.init(
0x3c6ef372,
0xfe94f82b), new X64Word.init(
0xa54ff53a,
0x5f1d36f1),
10459 new X64Word.init(
0x510e527f,
0xade682d1), new X64Word.init(
0x9b05688c,
0x2b3e6c1f),
10460 new X64Word.init(
0x1f83d9ab,
0xfb41bd6b), new X64Word.init(
0x5be0cd19,
0x137e2179)
10464 _doProcessBlock: function (M, offset) {
10466 var H = this._hash.words;
10494 // Working variables
10513 for (var i =
0; i <
80; i++) {
10519 var Wih = Wi.high = M[offset + i *
2] |
0;
10520 var Wil = Wi.low = M[offset + i *
2 +
1] |
0;
10523 var gamma0x = W[i -
15];
10524 var gamma0xh = gamma0x.high;
10525 var gamma0xl = gamma0x.low;
10526 var gamma0h = ((gamma0xh
>>> 1) | (gamma0xl <<
31)) ^ ((gamma0xh
>>> 8) | (gamma0xl <<
24)) ^ (gamma0xh
>>> 7);
10527 var gamma0l = ((gamma0xl
>>> 1) | (gamma0xh <<
31)) ^ ((gamma0xl
>>> 8) | (gamma0xh <<
24)) ^ ((gamma0xl
>>> 7) | (gamma0xh <<
25));
10530 var gamma1x = W[i -
2];
10531 var gamma1xh = gamma1x.high;
10532 var gamma1xl = gamma1x.low;
10533 var gamma1h = ((gamma1xh
>>> 19) | (gamma1xl <<
13)) ^ ((gamma1xh <<
3) | (gamma1xl
>>> 29)) ^ (gamma1xh
>>> 6);
10534 var gamma1l = ((gamma1xl
>>> 19) | (gamma1xh <<
13)) ^ ((gamma1xl <<
3) | (gamma1xh
>>> 29)) ^ ((gamma1xl
>>> 6) | (gamma1xh <<
26));
10536 // W[i] = gamma0 + W[i -
7] + gamma1 + W[i -
16]
10537 var Wi7 = W[i -
7];
10538 var Wi7h = Wi7.high;
10539 var Wi7l = Wi7.low;
10541 var Wi16 = W[i -
16];
10542 var Wi16h = Wi16.high;
10543 var Wi16l = Wi16.low;
10545 var Wil = gamma0l + Wi7l;
10546 var Wih = gamma0h + Wi7h + ((Wil
>>> 0) < (gamma0l
>>> 0) ?
1 :
0);
10547 var Wil = Wil + gamma1l;
10548 var Wih = Wih + gamma1h + ((Wil
>>> 0) < (gamma1l
>>> 0) ?
1 :
0);
10549 var Wil = Wil + Wi16l;
10550 var Wih = Wih + Wi16h + ((Wil
>>> 0) < (Wi16l
>>> 0) ?
1 :
0);
10556 var chh = (eh & fh) ^ (~eh & gh);
10557 var chl = (el & fl) ^ (~el & gl);
10558 var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);
10559 var majl = (al & bl) ^ (al & cl) ^ (bl & cl);
10561 var sigma0h = ((ah
>>> 28) | (al <<
4)) ^ ((ah <<
30) | (al
>>> 2)) ^ ((ah <<
25) | (al
>>> 7));
10562 var sigma0l = ((al
>>> 28) | (ah <<
4)) ^ ((al <<
30) | (ah
>>> 2)) ^ ((al <<
25) | (ah
>>> 7));
10563 var sigma1h = ((eh
>>> 14) | (el <<
18)) ^ ((eh
>>> 18) | (el <<
14)) ^ ((eh <<
23) | (el
>>> 9));
10564 var sigma1l = ((el
>>> 14) | (eh <<
18)) ^ ((el
>>> 18) | (eh <<
14)) ^ ((el <<
23) | (eh
>>> 9));
10566 // t1 = h + sigma1 + ch + K[i] + W[i]
10571 var t1l = hl + sigma1l;
10572 var t1h = hh + sigma1h + ((t1l
>>> 0) < (hl
>>> 0) ?
1 :
0);
10573 var t1l = t1l + chl;
10574 var t1h = t1h + chh + ((t1l
>>> 0) < (chl
>>> 0) ?
1 :
0);
10575 var t1l = t1l + Kil;
10576 var t1h = t1h + Kih + ((t1l
>>> 0) < (Kil
>>> 0) ?
1 :
0);
10577 var t1l = t1l + Wil;
10578 var t1h = t1h + Wih + ((t1l
>>> 0) < (Wil
>>> 0) ?
1 :
0);
10580 // t2 = sigma0 + maj
10581 var t2l = sigma0l + majl;
10582 var t2h = sigma0h + majh + ((t2l
>>> 0) < (sigma0l
>>> 0) ?
1 :
0);
10584 // Update working variables
10591 el = (dl + t1l) |
0;
10592 eh = (dh + t1h + ((el
>>> 0) < (dl
>>> 0) ?
1 :
0)) |
0;
10599 al = (t1l + t2l) |
0;
10600 ah = (t1h + t2h + ((al
>>> 0) < (t1l
>>> 0) ?
1 :
0)) |
0;
10603 // Intermediate hash value
10604 H0l = H0.low = (H0l + al);
10605 H0.high = (H0h + ah + ((H0l
>>> 0) < (al
>>> 0) ?
1 :
0));
10606 H1l = H1.low = (H1l + bl);
10607 H1.high = (H1h + bh + ((H1l
>>> 0) < (bl
>>> 0) ?
1 :
0));
10608 H2l = H2.low = (H2l + cl);
10609 H2.high = (H2h + ch + ((H2l
>>> 0) < (cl
>>> 0) ?
1 :
0));
10610 H3l = H3.low = (H3l + dl);
10611 H3.high = (H3h + dh + ((H3l
>>> 0) < (dl
>>> 0) ?
1 :
0));
10612 H4l = H4.low = (H4l + el);
10613 H4.high = (H4h + eh + ((H4l
>>> 0) < (el
>>> 0) ?
1 :
0));
10614 H5l = H5.low = (H5l + fl);
10615 H5.high = (H5h + fh + ((H5l
>>> 0) < (fl
>>> 0) ?
1 :
0));
10616 H6l = H6.low = (H6l + gl);
10617 H6.high = (H6h + gh + ((H6l
>>> 0) < (gl
>>> 0) ?
1 :
0));
10618 H7l = H7.low = (H7l + hl);
10619 H7.high = (H7h + hh + ((H7l
>>> 0) < (hl
>>> 0) ?
1 :
0));
10622 _doFinalize: function () {
10624 var data = this._data;
10625 var dataWords = data.words;
10627 var nBitsTotal = this._nDataBytes *
8;
10628 var nBitsLeft = data.sigBytes *
8;
10631 dataWords[nBitsLeft
>>> 5] |=
0x80 << (
24 - nBitsLeft %
32);
10632 dataWords[(((nBitsLeft +
128)
>>> 10) <<
5) +
30] = Math.floor(nBitsTotal /
0x100000000);
10633 dataWords[(((nBitsLeft +
128)
>>> 10) <<
5) +
31] = nBitsTotal;
10634 data.sigBytes = dataWords.length *
4;
10636 // Hash final blocks
10639 // Convert hash to
32-bit word array before returning
10640 var hash = this._hash.toX32();
10642 // Return final computed hash
10646 clone: function () {
10647 var clone = Hasher.clone.call(this);
10648 clone._hash = this._hash.clone();
10657 * Shortcut function to the hasher's object interface.
10659 * @param {WordArray|string} message The message to hash.
10661 * @return {WordArray} The hash.
10667 * var hash = CryptoJS.SHA512('message');
10668 * var hash = CryptoJS.SHA512(wordArray);
10670 C.SHA512 = Hasher._createHelper(SHA512);
10673 * Shortcut function to the HMAC's object interface.
10675 * @param {WordArray|string} message The message to hash.
10676 * @param {WordArray|string} key The secret key.
10678 * @return {WordArray} The HMAC.
10684 * var hmac = CryptoJS.HmacSHA512(message, key);
10686 C.HmacSHA512 = Hasher._createHmacHelper(SHA512);
10690 return CryptoJS.SHA512;
10693 },{
"./core":
31,
"./x64-core":
62}],
61:[function(_dereq_,module,exports){
10694 ;(function (root, factory, undef) {
10695 if (typeof exports ===
"object") {
10697 module.exports = exports = factory(_dereq_(
"./core"), _dereq_(
"./enc-base64"), _dereq_(
"./md5"), _dereq_(
"./evpkdf"), _dereq_(
"./cipher-core"));
10699 else if (typeof define ===
"function" && define.amd) {
10701 define([
"./core",
"./enc-base64",
"./md5",
"./evpkdf",
"./cipher-core"], factory);
10704 // Global (browser)
10705 factory(root.CryptoJS);
10707 }(this, function (CryptoJS) {
10713 var WordArray = C_lib.WordArray;
10714 var BlockCipher = C_lib.BlockCipher;
10715 var C_algo = C.algo;
10717 // Permuted Choice
1 constants
10719 57,
49,
41,
33,
25,
17,
9,
1,
10720 58,
50,
42,
34,
26,
18,
10,
2,
10721 59,
51,
43,
35,
27,
19,
11,
3,
10722 60,
52,
44,
36,
63,
55,
47,
39,
10723 31,
23,
15,
7,
62,
54,
46,
38,
10724 30,
22,
14,
6,
61,
53,
45,
37,
10725 29,
21,
13,
5,
28,
20,
12,
4
10728 // Permuted Choice
2 constants
10730 14,
17,
11,
24,
1,
5,
10731 3,
28,
15,
6,
21,
10,
10732 23,
19,
12,
4,
26,
8,
10733 16,
7,
27,
20,
13,
2,
10734 41,
52,
31,
37,
47,
55,
10735 30,
40,
51,
45,
33,
48,
10736 44,
49,
39,
56,
34,
53,
10737 46,
42,
50,
36,
29,
32
10740 // Cumulative bit shift constants
10741 var BIT_SHIFTS = [
1,
2,
4,
6,
8,
10,
12,
14,
15,
17,
19,
21,
23,
25,
27,
28];
10743 // SBOXes and round permutation constants
10747 0x10000000:
0x8000,
10748 0x20000000:
0x808002,
10751 0x50000000:
0x808202,
10752 0x60000000:
0x800202,
10753 0x70000000:
0x800000,
10755 0x90000000:
0x800200,
10756 0xa0000000:
0x8200,
10757 0xb0000000:
0x808000,
10758 0xc0000000:
0x8002,
10759 0xd0000000:
0x800002,
10761 0xf0000000:
0x8202,
10763 0x18000000:
0x808202,
10764 0x28000000:
0x8202,
10765 0x38000000:
0x8000,
10766 0x48000000:
0x808200,
10768 0x68000000:
0x808002,
10770 0x88000000:
0x800200,
10771 0x98000000:
0x8200,
10772 0xa8000000:
0x808000,
10773 0xb8000000:
0x800202,
10774 0xc8000000:
0x800002,
10775 0xd8000000:
0x8002,
10777 0xf8000000:
0x800000,
10780 0x20000001:
0x808200,
10781 0x30000001:
0x800000,
10782 0x40000001:
0x808002,
10783 0x50000001:
0x8200,
10785 0x70000001:
0x800202,
10786 0x80000001:
0x808202,
10787 0x90000001:
0x808000,
10788 0xa0000001:
0x800002,
10789 0xb0000001:
0x8202,
10791 0xd0000001:
0x800200,
10792 0xe0000001:
0x8002,
10794 0x8000001:
0x808202,
10795 0x18000001:
0x808000,
10796 0x28000001:
0x800000,
10798 0x48000001:
0x8000,
10799 0x58000001:
0x800002,
10801 0x78000001:
0x8202,
10802 0x88000001:
0x8002,
10803 0x98000001:
0x800202,
10805 0xb8000001:
0x808200,
10806 0xc8000001:
0x800200,
10808 0xe8000001:
0x8200,
10809 0xf8000001:
0x808002
10814 0x2000000:
0x80000,
10815 0x3000000:
0x40080010,
10816 0x4000000:
0x40000010,
10817 0x5000000:
0x40084000,
10818 0x6000000:
0x40004000,
10820 0x8000000:
0x84000,
10821 0x9000000:
0x40004010,
10822 0xa000000:
0x40000000,
10823 0xb000000:
0x84010,
10824 0xc000000:
0x80010,
10827 0xf000000:
0x40080000,
10828 0x800000:
0x40004000,
10829 0x1800000:
0x84010,
10831 0x3800000:
0x40004010,
10832 0x4800000:
0x40084010,
10833 0x5800000:
0x40000000,
10834 0x6800000:
0x80000,
10835 0x7800000:
0x40080010,
10836 0x8800000:
0x80010,
10839 0xb800000:
0x40080000,
10840 0xc800000:
0x40000010,
10841 0xd800000:
0x84000,
10842 0xe800000:
0x40084000,
10845 0x11000000:
0x40080010,
10846 0x12000000:
0x40004010,
10847 0x13000000:
0x40084000,
10848 0x14000000:
0x40080000,
10850 0x16000000:
0x84010,
10851 0x17000000:
0x4000,
10852 0x18000000:
0x4010,
10853 0x19000000:
0x80000,
10854 0x1a000000:
0x80010,
10855 0x1b000000:
0x40000010,
10856 0x1c000000:
0x84000,
10857 0x1d000000:
0x40004000,
10858 0x1e000000:
0x40000000,
10859 0x1f000000:
0x40084010,
10860 0x10800000:
0x84010,
10861 0x11800000:
0x80000,
10862 0x12800000:
0x40080000,
10863 0x13800000:
0x4000,
10864 0x14800000:
0x40004000,
10865 0x15800000:
0x40084010,
10867 0x17800000:
0x40000000,
10868 0x18800000:
0x40084000,
10869 0x19800000:
0x40000010,
10870 0x1a800000:
0x40004010,
10871 0x1b800000:
0x80010,
10873 0x1d800000:
0x4010,
10874 0x1e800000:
0x40080010,
10875 0x1f800000:
0x84000
10880 0x200000:
0x4000100,
10883 0x500000:
0x4000004,
10884 0x600000:
0x4010104,
10885 0x700000:
0x4010000,
10886 0x800000:
0x4000000,
10887 0x900000:
0x4010100,
10889 0xb00000:
0x4010004,
10890 0xc00000:
0x4000104,
10894 0x80000:
0x4010100,
10895 0x180000:
0x4010004,
10897 0x380000:
0x4000100,
10898 0x480000:
0x4000004,
10904 0xa80000:
0x4010000,
10907 0xd80000:
0x4000104,
10908 0xe80000:
0x4010104,
10909 0xf80000:
0x4000000,
10910 0x1000000:
0x4010100,
10911 0x1100000:
0x10004,
10912 0x1200000:
0x10000,
10913 0x1300000:
0x4000100,
10915 0x1500000:
0x4010104,
10916 0x1600000:
0x4000004,
10918 0x1800000:
0x4000104,
10919 0x1900000:
0x4000000,
10921 0x1b00000:
0x10100,
10922 0x1c00000:
0x4010000,
10924 0x1e00000:
0x10104,
10925 0x1f00000:
0x4010004,
10926 0x1080000:
0x4000000,
10928 0x1280000:
0x4010100,
10930 0x1480000:
0x10004,
10931 0x1580000:
0x4000100,
10933 0x1780000:
0x4010004,
10934 0x1880000:
0x10000,
10935 0x1980000:
0x4010104,
10936 0x1a80000:
0x10104,
10937 0x1b80000:
0x4000004,
10938 0x1c80000:
0x4000104,
10939 0x1d80000:
0x4010000,
10945 0x10000:
0x80001040,
10947 0x30000:
0x80400000,
10950 0x60000:
0x80000040,
10952 0x80000:
0x80000000,
10955 0xb0000:
0x80001000,
10956 0xc0000:
0x80400040,
10959 0xf0000:
0x80401040,
10960 0x8000:
0x80001040,
10962 0x28000:
0x80400040,
10963 0x38000:
0x80001000,
10965 0x58000:
0x80401040,
10967 0x78000:
0x80400000,
10969 0x98000:
0x80401000,
10972 0xc8000:
0x80000000,
10975 0xf8000:
0x80000040,
10976 0x100000:
0x400040,
10977 0x110000:
0x401000,
10978 0x120000:
0x80000040,
10981 0x150000:
0x80400040,
10982 0x160000:
0x80401000,
10983 0x170000:
0x80001040,
10984 0x180000:
0x80401040,
10985 0x190000:
0x80000000,
10986 0x1a0000:
0x80400000,
10987 0x1b0000:
0x401040,
10988 0x1c0000:
0x80001000,
10989 0x1d0000:
0x400000,
10992 0x108000:
0x80400000,
10993 0x118000:
0x80401040,
10995 0x138000:
0x401000,
10996 0x148000:
0x400040,
10997 0x158000:
0x80000000,
10998 0x168000:
0x80001040,
11000 0x188000:
0x80000040,
11002 0x1a8000:
0x80001000,
11003 0x1b8000:
0x80400040,
11005 0x1d8000:
0x80401000,
11006 0x1e8000:
0x400000,
11013 0x3000:
0x20000000,
11014 0x4000:
0x20040080,
11016 0x6000:
0x21000080,
11019 0x9000:
0x20040000,
11020 0xa000:
0x20000080,
11021 0xb000:
0x21040080,
11022 0xc000:
0x21040000,
11025 0xf000:
0x21000000,
11027 0x1800:
0x21000080,
11031 0x5800:
0x20040080,
11032 0x6800:
0x21040000,
11033 0x7800:
0x20000000,
11034 0x8800:
0x20040000,
11036 0xa800:
0x21040080,
11038 0xc800:
0x20000080,
11039 0xd800:
0x21000000,
11044 0x12000:
0x20000000,
11045 0x13000:
0x21000080,
11046 0x14000:
0x1000080,
11047 0x15000:
0x21040000,
11048 0x16000:
0x20040080,
11049 0x17000:
0x1000000,
11050 0x18000:
0x21040080,
11051 0x19000:
0x21000000,
11052 0x1a000:
0x1040000,
11053 0x1b000:
0x20040000,
11055 0x1d000:
0x20000080,
11057 0x1f000:
0x1040080,
11058 0x10800:
0x21000080,
11059 0x11800:
0x1000000,
11060 0x12800:
0x1040000,
11061 0x13800:
0x20040080,
11062 0x14800:
0x20000000,
11063 0x15800:
0x1040080,
11065 0x17800:
0x21040000,
11067 0x19800:
0x21040080,
11069 0x1b800:
0x21000000,
11070 0x1c800:
0x1000080,
11072 0x1e800:
0x20040000,
11073 0x1f800:
0x20000080
11108 0x1000:
0x10002000,
11109 0x1100:
0x10200008,
11110 0x1200:
0x10202008,
11113 0x1500:
0x10000000,
11114 0x1600:
0x10000008,
11119 0x1b00:
0x10200000,
11121 0x1d00:
0x10002008,
11122 0x1e00:
0x10202000,
11127 0x1380:
0x10000008,
11128 0x1480:
0x10002000,
11130 0x1680:
0x10202008,
11131 0x1780:
0x10200000,
11132 0x1880:
0x10202000,
11133 0x1980:
0x10200008,
11138 0x1e80:
0x10000000,
11225 0x80000001:
0x8020820,
11226 0x80000002:
0x8000820,
11227 0x80000003:
0x8000000,
11228 0x80000004:
0x8020000,
11229 0x80000005:
0x20800,
11230 0x80000006:
0x20820,
11232 0x80000008:
0x8000020,
11234 0x8000000a:
0x20020,
11235 0x8000000b:
0x8020800,
11237 0x8000000d:
0x8020020,
11238 0x8000000e:
0x8000800,
11239 0x8000000f:
0x20000,
11256 0x80000010:
0x20000,
11258 0x80000012:
0x8020020,
11259 0x80000013:
0x20820,
11261 0x80000015:
0x8020000,
11262 0x80000016:
0x8000000,
11263 0x80000017:
0x8000820,
11264 0x80000018:
0x8020820,
11265 0x80000019:
0x8000020,
11266 0x8000001a:
0x8000800,
11268 0x8000001c:
0x20800,
11270 0x8000001e:
0x20020,
11271 0x8000001f:
0x8020800
11275 // Masks that select the SBOX input
11277 0xf8000001,
0x1f800000,
0x01f80000,
0x001f8000,
11278 0x0001f800,
0x00001f80,
0x000001f8,
0x8000001f
11282 * DES block cipher algorithm.
11284 var DES = C_algo.DES = BlockCipher.extend({
11285 _doReset: function () {
11287 var key = this._key;
11288 var keyWords = key.words;
11290 // Select
56 bits according to PC1
11292 for (var i =
0; i <
56; i++) {
11293 var keyBitPos = PC1[i] -
1;
11294 keyBits[i] = (keyWords[keyBitPos
>>> 5]
>>> (
31 - keyBitPos %
32)) &
1;
11297 // Assemble
16 subkeys
11298 var subKeys = this._subKeys = [];
11299 for (var nSubKey =
0; nSubKey <
16; nSubKey++) {
11301 var subKey = subKeys[nSubKey] = [];
11304 var bitShift = BIT_SHIFTS[nSubKey];
11306 // Select
48 bits according to PC2
11307 for (var i =
0; i <
24; i++) {
11308 // Select from the left
28 key bits
11309 subKey[(i /
6) |
0] |= keyBits[((PC2[i] -
1) + bitShift) %
28] << (
31 - i %
6);
11311 // Select from the right
28 key bits
11312 subKey[
4 + ((i /
6) |
0)] |= keyBits[
28 + (((PC2[i +
24] -
1) + bitShift) %
28)] << (
31 - i %
6);
11315 // Since each subkey is applied to an expanded
32-bit input,
11316 // the subkey can be broken into
8 values scaled to
32-bits,
11317 // which allows the key to be used without expansion
11318 subKey[
0] = (subKey[
0] <<
1) | (subKey[
0]
>>> 31);
11319 for (var i =
1; i <
7; i++) {
11320 subKey[i] = subKey[i]
>>> ((i -
1) *
4 +
3);
11322 subKey[
7] = (subKey[
7] <<
5) | (subKey[
7]
>>> 27);
11325 // Compute inverse subkeys
11326 var invSubKeys = this._invSubKeys = [];
11327 for (var i =
0; i <
16; i++) {
11328 invSubKeys[i] = subKeys[
15 - i];
11332 encryptBlock: function (M, offset) {
11333 this._doCryptBlock(M, offset, this._subKeys);
11336 decryptBlock: function (M, offset) {
11337 this._doCryptBlock(M, offset, this._invSubKeys);
11340 _doCryptBlock: function (M, offset, subKeys) {
11342 this._lBlock = M[offset];
11343 this._rBlock = M[offset +
1];
11345 // Initial permutation
11346 exchangeLR.call(this,
4,
0x0f0f0f0f);
11347 exchangeLR.call(this,
16,
0x0000ffff);
11348 exchangeRL.call(this,
2,
0x33333333);
11349 exchangeRL.call(this,
8,
0x00ff00ff);
11350 exchangeLR.call(this,
1,
0x55555555);
11353 for (var round =
0; round <
16; round++) {
11355 var subKey = subKeys[round];
11356 var lBlock = this._lBlock;
11357 var rBlock = this._rBlock;
11359 // Feistel function
11361 for (var i =
0; i <
8; i++) {
11362 f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i])
>>> 0];
11364 this._lBlock = rBlock;
11365 this._rBlock = lBlock ^ f;
11368 // Undo swap from last round
11369 var t = this._lBlock;
11370 this._lBlock = this._rBlock;
11373 // Final permutation
11374 exchangeLR.call(this,
1,
0x55555555);
11375 exchangeRL.call(this,
8,
0x00ff00ff);
11376 exchangeRL.call(this,
2,
0x33333333);
11377 exchangeLR.call(this,
16,
0x0000ffff);
11378 exchangeLR.call(this,
4,
0x0f0f0f0f);
11381 M[offset] = this._lBlock;
11382 M[offset +
1] = this._rBlock;
11392 // Swap bits across the left and right words
11393 function exchangeLR(offset, mask) {
11394 var t = ((this._lBlock
>>> offset) ^ this._rBlock) & mask;
11396 this._lBlock ^= t << offset;
11399 function exchangeRL(offset, mask) {
11400 var t = ((this._rBlock
>>> offset) ^ this._lBlock) & mask;
11402 this._rBlock ^= t << offset;
11406 * Shortcut functions to the cipher's object interface.
11410 * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);
11411 * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);
11413 C.DES = BlockCipher._createHelper(DES);
11416 * Triple-DES block cipher algorithm.
11418 var TripleDES = C_algo.TripleDES = BlockCipher.extend({
11419 _doReset: function () {
11421 var key = this._key;
11422 var keyWords = key.words;
11424 // Create DES instances
11425 this._des1 = DES.createEncryptor(WordArray.create(keyWords.slice(
0,
2)));
11426 this._des2 = DES.createEncryptor(WordArray.create(keyWords.slice(
2,
4)));
11427 this._des3 = DES.createEncryptor(WordArray.create(keyWords.slice(
4,
6)));
11430 encryptBlock: function (M, offset) {
11431 this._des1.encryptBlock(M, offset);
11432 this._des2.decryptBlock(M, offset);
11433 this._des3.encryptBlock(M, offset);
11436 decryptBlock: function (M, offset) {
11437 this._des3.decryptBlock(M, offset);
11438 this._des2.encryptBlock(M, offset);
11439 this._des1.decryptBlock(M, offset);
11450 * Shortcut functions to the cipher's object interface.
11454 * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);
11455 * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);
11457 C.TripleDES = BlockCipher._createHelper(TripleDES);
11461 return CryptoJS.TripleDES;
11464 },{"./cipher-core":
30,"./core":
31,"./enc-base64":
32,"./evpkdf":
34,"./md5":
39}],
62:[function(_dereq_,module,exports){
11465 ;(function (root, factory) {
11466 if (typeof exports === "object") {
11468 module.exports = exports = factory(_dereq_("./core"));
11470 else if (typeof define === "function" && define.amd) {
11472 define(["./core"], factory);
11475 // Global (browser)
11476 factory(root.CryptoJS);
11478 }(this, function (CryptoJS) {
11480 (function (undefined) {
11484 var Base = C_lib.Base;
11485 var X32WordArray = C_lib.WordArray;
11490 var C_x64 = C.x64 = {};
11495 var X64Word = C_x64.Word = Base.extend({
11497 * Initializes a newly created
64-bit word.
11499 * @param {number} high The high
32 bits.
11500 * @param {number} low The low
32 bits.
11504 * var x64Word = CryptoJS.x64.Word.create(
0x00010203,
0x04050607);
11506 init: function (high, low) {
11512 * Bitwise NOTs this word.
11514 * @return {X64Word} A new x64-Word object after negating.
11518 * var negated = x64Word.not();
11520 // not: function () {
11521 // var high = ~this.high;
11522 // var low = ~this.low;
11524 // return X64Word.create(high, low);
11528 * Bitwise ANDs this word with the passed word.
11530 * @param {X64Word} word The x64-Word to AND with this word.
11532 * @return {X64Word} A new x64-Word object after ANDing.
11536 * var anded = x64Word.and(anotherX64Word);
11538 // and: function (word) {
11539 // var high = this.high & word.high;
11540 // var low = this.low & word.low;
11542 // return X64Word.create(high, low);
11546 * Bitwise ORs this word with the passed word.
11548 * @param {X64Word} word The x64-Word to OR with this word.
11550 * @return {X64Word} A new x64-Word object after ORing.
11554 * var ored = x64Word.or(anotherX64Word);
11556 // or: function (word) {
11557 // var high = this.high | word.high;
11558 // var low = this.low | word.low;
11560 // return X64Word.create(high, low);
11564 * Bitwise XORs this word with the passed word.
11566 * @param {X64Word} word The x64-Word to XOR with this word.
11568 * @return {X64Word} A new x64-Word object after XORing.
11572 * var xored = x64Word.xor(anotherX64Word);
11574 // xor: function (word) {
11575 // var high = this.high ^ word.high;
11576 // var low = this.low ^ word.low;
11578 // return X64Word.create(high, low);
11582 * Shifts this word n bits to the left.
11584 * @param {number} n The number of bits to shift.
11586 * @return {X64Word} A new x64-Word object after shifting.
11590 * var shifted = x64Word.shiftL(
25);
11592 // shiftL: function (n) {
11594 // var high = (this.high << n) | (this.low
>>> (
32 - n));
11595 // var low = this.low << n;
11597 // var high = this.low << (n -
32);
11601 // return X64Word.create(high, low);
11605 * Shifts this word n bits to the right.
11607 * @param {number} n The number of bits to shift.
11609 * @return {X64Word} A new x64-Word object after shifting.
11613 * var shifted = x64Word.shiftR(
7);
11615 // shiftR: function (n) {
11617 // var low = (this.low
>>> n) | (this.high << (
32 - n));
11618 // var high = this.high
>>> n;
11620 // var low = this.high
>>> (n -
32);
11624 // return X64Word.create(high, low);
11628 * Rotates this word n bits to the left.
11630 * @param {number} n The number of bits to rotate.
11632 * @return {X64Word} A new x64-Word object after rotating.
11636 * var rotated = x64Word.rotL(
25);
11638 // rotL: function (n) {
11639 // return this.shiftL(n).or(this.shiftR(
64 - n));
11643 * Rotates this word n bits to the right.
11645 * @param {number} n The number of bits to rotate.
11647 * @return {X64Word} A new x64-Word object after rotating.
11651 * var rotated = x64Word.rotR(
7);
11653 // rotR: function (n) {
11654 // return this.shiftR(n).or(this.shiftL(
64 - n));
11658 * Adds this word with the passed word.
11660 * @param {X64Word} word The x64-Word to add with this word.
11662 * @return {X64Word} A new x64-Word object after adding.
11666 * var added = x64Word.add(anotherX64Word);
11668 // add: function (word) {
11669 // var low = (this.low + word.low) |
0;
11670 // var carry = (low
>>> 0) < (this.low
>>> 0) ?
1 :
0;
11671 // var high = (this.high + word.high + carry) |
0;
11673 // return X64Word.create(high, low);
11678 * An array of
64-bit words.
11680 * @property {Array} words The array of CryptoJS.x64.Word objects.
11681 * @property {number} sigBytes The number of significant bytes in this word array.
11683 var X64WordArray = C_x64.WordArray = Base.extend({
11685 * Initializes a newly created word array.
11687 * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.
11688 * @param {number} sigBytes (Optional) The number of significant bytes in the words.
11692 * var wordArray = CryptoJS.x64.WordArray.create();
11694 * var wordArray = CryptoJS.x64.WordArray.create([
11695 * CryptoJS.x64.Word.create(
0x00010203,
0x04050607),
11696 * CryptoJS.x64.Word.create(
0x18191a1b,
0x1c1d1e1f)
11699 * var wordArray = CryptoJS.x64.WordArray.create([
11700 * CryptoJS.x64.Word.create(
0x00010203,
0x04050607),
11701 * CryptoJS.x64.Word.create(
0x18191a1b,
0x1c1d1e1f)
11704 init: function (words, sigBytes) {
11705 words = this.words = words || [];
11707 if (sigBytes != undefined) {
11708 this.sigBytes = sigBytes;
11710 this.sigBytes = words.length *
8;
11715 * Converts this
64-bit word array to a
32-bit word array.
11717 * @return {CryptoJS.lib.WordArray} This word array's data as a
32-bit word array.
11721 * var x32WordArray = x64WordArray.toX32();
11723 toX32: function () {
11725 var x64Words = this.words;
11726 var x64WordsLength = x64Words.length;
11730 for (var i =
0; i < x64WordsLength; i++) {
11731 var x64Word = x64Words[i];
11732 x32Words.push(x64Word.high);
11733 x32Words.push(x64Word.low);
11736 return X32WordArray.create(x32Words, this.sigBytes);
11740 * Creates a copy of this word array.
11742 * @return {X64WordArray} The clone.
11746 * var clone = x64WordArray.clone();
11748 clone: function () {
11749 var clone = Base.clone.call(this);
11751 // Clone
"words" array
11752 var words = clone.words = this.words.slice(
0);
11754 // Clone each X64Word object
11755 var wordsLength = words.length;
11756 for (var i =
0; i < wordsLength; i++) {
11757 words[i] = words[i].clone();
11769 },{
"./core":
31}],
63:[function(_dereq_,module,exports){
11770 var assert = _dereq_('assert')
11771 var BigInteger = _dereq_('bigi')
11773 var Point = _dereq_('./point')
11775 function Curve(p, a, b, Gx, Gy, n, h) {
11779 this.G = Point.fromAffine(this, Gx, Gy)
11783 this.infinity = new Point(this, null, null, BigInteger.ZERO)
11786 this.pOverFour = p.add(BigInteger.ONE).shiftRight(
2)
11789 Curve.prototype.pointFromX = function(isOdd, x) {
11790 var alpha = x.pow(
3).add(this.a.multiply(x)).add(this.b).mod(this.p)
11791 var beta = alpha.modPow(this.pOverFour, this.p)
11794 if (beta.isEven() ^ !isOdd) {
11795 y = this.p.subtract(y) // -y % p
11798 return Point.fromAffine(this, x, y)
11801 Curve.prototype.isInfinity = function(Q) {
11802 if (Q === this.infinity) return true
11804 return Q.z.signum() ===
0 && Q.y.signum() !==
0
11807 Curve.prototype.isOnCurve = function(Q) {
11808 if (this.isInfinity(Q)) return true
11816 // Check that xQ and yQ are integers in the interval [
0, p -
1]
11817 if (x.signum() <
0 || x.compareTo(p)
>=
0) return false
11818 if (y.signum() <
0 || y.compareTo(p)
>=
0) return false
11820 // and check that y^
2 = x^
3 + ax + b (mod p)
11821 var lhs = y.square().mod(p)
11822 var rhs = x.pow(
3).add(a.multiply(x)).add(b).mod(p)
11823 return lhs.equals(rhs)
11827 * Validate an elliptic curve point.
11829 * See SEC
1, section
3.2.2.1: Elliptic Curve Public Key Validation Primitive
11831 Curve.prototype.validate = function(Q) {
11833 assert(!this.isInfinity(Q), 'Point is at infinity')
11834 assert(this.isOnCurve(Q), 'Point is not on the curve')
11836 // Check nQ = O (where Q is a scalar multiple of G)
11837 var nQ = Q.multiply(this.n)
11838 assert(this.isInfinity(nQ), 'Point is not a scalar multiple of G')
11843 module.exports = Curve
11845 },{"./point":
67,"assert":
4,"bigi":
3}],
64:[function(_dereq_,module,exports){
11848 "p": "fffffffdffffffffffffffffffffffff",
11849 "a": "fffffffdfffffffffffffffffffffffc",
11850 "b": "e87579c11079f43dd824993c2cee5ed3",
11851 "n": "fffffffe0000000075a30d1b9038a115",
11853 "Gx": "
161ff7528b899b2d0c28607ca52c5b86",
11854 "Gy": "cf5ac8395bafeb13c02da292dded7a83"
11857 "p": "fffffffffffffffffffffffffffffffeffffac73",
11860 "n": "
0100000000000000000001b8fa16dfab9aca16b6b3",
11862 "Gx": "
3b4c382ce37aa192a4019e763036f4f5dd4d7ebb",
11863 "Gy": "
938cf935318fdced6bc28286531733c3f03c4fee"
11866 "p": "ffffffffffffffffffffffffffffffff7fffffff",
11867 "a": "ffffffffffffffffffffffffffffffff7ffffffc",
11868 "b": "
1c97befc54bd7a8b65acf89f81d4d4adc565fa45",
11869 "n": "
0100000000000000000001f4c8f927aed3ca752257",
11871 "Gx": "
4a96b5688ef573284664698968c38bb913cbfc82",
11872 "Gy": "
23a628553168947d59dcc912042351377ac5fb32"
11875 "p": "fffffffffffffffffffffffffffffffffffffffeffffee37",
11878 "n": "fffffffffffffffffffffffe26f2fc170f69466a74defd8d",
11880 "Gx": "db4ff10ec057e9ae26b07d0280b7f4341da5d1b1eae06c7d",
11881 "Gy": "
9b2f2f6d9c5628a7844163d015be86344082aa88d95e2f9d"
11884 "p": "fffffffffffffffffffffffffffffffeffffffffffffffff",
11885 "a": "fffffffffffffffffffffffffffffffefffffffffffffffc",
11886 "b": "
64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1",
11887 "n": "ffffffffffffffffffffffff99def836146bc9b1b4d22831",
11889 "Gx": "
188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012",
11890 "Gy": "
07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
11893 "p": "ffffffffffffffffffffffffffffffff000000000000000000000001",
11894 "a": "fffffffffffffffffffffffffffffffefffffffffffffffffffffffe",
11895 "b": "b4050a850c04b3abf54132565044b0b7d7bfd8ba270b39432355ffb4",
11896 "n": "ffffffffffffffffffffffffffff16a2e0b8f03e13dd29455c5c2a3d",
11898 "Gx": "b70e0cbd6bb4bf7f321390b94a03c1d356c21122343280d6115c1d21",
11899 "Gy": "bd376388b5f723fb4c22dfe6cd4375a05a07476444d5819985007e34"
11902 "p": "fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f",
11905 "n": "fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141",
11907 "Gx": "
79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798",
11908 "Gy": "
483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8"
11911 "p": "ffffffff00000001000000000000000000000000ffffffffffffffffffffffff",
11912 "a": "ffffffff00000001000000000000000000000000fffffffffffffffffffffffc",
11913 "b": "
5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b",
11914 "n": "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551",
11916 "Gx": "
6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296",
11917 "Gy": "
4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5"
11921 },{}],
65:[function(_dereq_,module,exports){
11922 var Point = _dereq_('./point')
11923 var Curve = _dereq_('./curve')
11925 var getCurveByName = _dereq_('./names')
11930 getCurveByName: getCurveByName
11933 },{"./curve":
63,"./names":
66,"./point":
67}],
66:[function(_dereq_,module,exports){
11934 var BigInteger = _dereq_('bigi')
11936 var curves = _dereq_('./curves')
11937 var Curve = _dereq_('./curve')
11939 function getCurveByName(name) {
11940 var curve = curves[name]
11941 if (!curve) return null
11943 var p = new BigInteger(curve.p,
16)
11944 var a = new BigInteger(curve.a,
16)
11945 var b = new BigInteger(curve.b,
16)
11946 var n = new BigInteger(curve.n,
16)
11947 var h = new BigInteger(curve.h,
16)
11948 var Gx = new BigInteger(curve.Gx,
16)
11949 var Gy = new BigInteger(curve.Gy,
16)
11951 return new Curve(p, a, b, Gx, Gy, n, h)
11954 module.exports = getCurveByName
11956 },{"./curve":
63,"./curves":
64,"bigi":
3}],
67:[function(_dereq_,module,exports){
11957 (function (Buffer){
11958 var assert = _dereq_('assert')
11959 var BigInteger = _dereq_('bigi')
11961 var THREE = BigInteger.valueOf(
3)
11963 function Point(curve, x, y, z) {
11964 assert.notStrictEqual(z, undefined, 'Missing Z coordinate')
11972 this.compressed = true
11975 Object.defineProperty(Point.prototype, 'zInv', {
11977 if (this._zInv === null) {
11978 this._zInv = this.z.modInverse(this.curve.p)
11985 Object.defineProperty(Point.prototype, 'affineX', {
11987 return this.x.multiply(this.zInv).mod(this.curve.p)
11991 Object.defineProperty(Point.prototype, 'affineY', {
11993 return this.y.multiply(this.zInv).mod(this.curve.p)
11997 Point.fromAffine = function(curve, x, y) {
11998 return new Point(curve, x, y, BigInteger.ONE)
12001 Point.prototype.equals = function(other) {
12002 if (other === this) return true
12003 if (this.curve.isInfinity(this)) return this.curve.isInfinity(other)
12004 if (this.curve.isInfinity(other)) return this.curve.isInfinity(this)
12006 // u = Y2 * Z1 - Y1 * Z2
12007 var u = other.y.multiply(this.z).subtract(this.y.multiply(other.z)).mod(this.curve.p)
12009 if (u.signum() !==
0) return false
12011 // v = X2 * Z1 - X1 * Z2
12012 var v = other.x.multiply(this.z).subtract(this.x.multiply(other.z)).mod(this.curve.p)
12014 return v.signum() ===
0
12017 Point.prototype.negate = function() {
12018 var y = this.curve.p.subtract(this.y)
12020 return new Point(this.curve, this.x, y, this.z)
12023 Point.prototype.add = function(b) {
12024 if (this.curve.isInfinity(this)) return b
12025 if (this.curve.isInfinity(b)) return this
12032 // u = Y2 * Z1 - Y1 * Z2
12033 var u = y2.multiply(this.z).subtract(y1.multiply(b.z)).mod(this.curve.p)
12034 // v = X2 * Z1 - X1 * Z2
12035 var v = x2.multiply(this.z).subtract(x1.multiply(b.z)).mod(this.curve.p)
12037 if (v.signum() ===
0) {
12038 if (u.signum() ===
0) {
12039 return this.twice() // this == b, so double
12042 return this.curve.infinity // this = -b, so infinity
12045 var v2 = v.square()
12046 var v3 = v2.multiply(v)
12047 var x1v2 = x1.multiply(v2)
12048 var zu2 = u.square().multiply(this.z)
12050 // x3 = v * (z2 * (z1 * u^
2 -
2 * x1 * v^
2) - v^
3)
12051 var x3 = zu2.subtract(x1v2.shiftLeft(
1)).multiply(b.z).subtract(v3).multiply(v).mod(this.curve.p)
12052 // y3 = z2 * (
3 * x1 * u * v^
2 - y1 * v^
3 - z1 * u^
3) + u * v^
3
12053 var y3 = x1v2.multiply(THREE).multiply(u).subtract(y1.multiply(v3)).subtract(zu2.multiply(u)).multiply(b.z).add(u.multiply(v3)).mod(this.curve.p)
12054 // z3 = v^
3 * z1 * z2
12055 var z3 = v3.multiply(this.z).multiply(b.z).mod(this.curve.p)
12057 return new Point(this.curve, x3, y3, z3)
12060 Point.prototype.twice = function() {
12061 if (this.curve.isInfinity(this)) return this
12062 if (this.y.signum() ===
0) return this.curve.infinity
12067 var y1z1 = y1.multiply(this.z)
12068 var y1sqz1 = y1z1.multiply(y1).mod(this.curve.p)
12069 var a = this.curve.a
12071 // w =
3 * x1^
2 + a * z1^
2
12072 var w = x1.square().multiply(THREE)
12074 if (a.signum() !==
0) {
12075 w = w.add(this.z.square().multiply(a))
12078 w = w.mod(this.curve.p)
12079 // x3 =
2 * y1 * z1 * (w^
2 -
8 * x1 * y1^
2 * z1)
12080 var x3 = w.square().subtract(x1.shiftLeft(
3).multiply(y1sqz1)).shiftLeft(
1).multiply(y1z1).mod(this.curve.p)
12081 // y3 =
4 * y1^
2 * z1 * (
3 * w * x1 -
2 * y1^
2 * z1) - w^
3
12082 var y3 = w.multiply(THREE).multiply(x1).subtract(y1sqz1.shiftLeft(
1)).shiftLeft(
2).multiply(y1sqz1).subtract(w.pow(
3)).mod(this.curve.p)
12083 // z3 =
8 * (y1 * z1)^
3
12084 var z3 = y1z1.pow(
3).shiftLeft(
3).mod(this.curve.p)
12086 return new Point(this.curve, x3, y3, z3)
12089 // Simple NAF (Non-Adjacent Form) multiplication algorithm
12090 // TODO: modularize the multiplication algorithm
12091 Point.prototype.multiply = function(k) {
12092 if (this.curve.isInfinity(this)) return this
12093 if (k.signum() ===
0) return this.curve.infinity
12096 var h = e.multiply(THREE)
12098 var neg = this.negate()
12101 for (var i = h.bitLength() -
2; i
> 0; --i) {
12104 var hBit = h.testBit(i)
12105 var eBit = e.testBit(i)
12107 if (hBit != eBit) {
12108 R = R.add(hBit ? this : neg)
12115 // Compute this*j + x*k (simultaneous multiplication)
12116 Point.prototype.multiplyTwo = function(j, x, k) {
12119 if (j.bitLength()
> k.bitLength())
12120 i = j.bitLength() -
1
12122 i = k.bitLength() -
1
12124 var R = this.curve.infinity
12125 var both = this.add(x)
12130 var jBit = j.testBit(i)
12131 var kBit = k.testBit(i)
12152 Point.prototype.getEncoded = function(compressed) {
12153 if (compressed == undefined) compressed = this.compressed
12154 if (this.curve.isInfinity(this)) return new Buffer('
00', 'hex') // Infinity point encoded is simply '
00'
12156 var x = this.affineX
12157 var y = this.affineY
12161 // Determine size of q in bytes
12162 var byteLength = Math.floor((this.curve.p.bitLength() +
7) /
8)
12166 buffer = new Buffer(
1 + byteLength)
12167 buffer.writeUInt8(y.isEven() ?
0x02 :
0x03,
0)
12171 buffer = new Buffer(
1 + byteLength + byteLength)
12172 buffer.writeUInt8(
0x04,
0)
12174 y.toBuffer(byteLength).copy(buffer,
1 + byteLength)
12177 x.toBuffer(byteLength).copy(buffer,
1)
12182 Point.decodeFrom = function(curve, buffer) {
12183 var type = buffer.readUInt8(
0)
12184 var compressed = (type !==
4)
12186 var x = BigInteger.fromBuffer(buffer.slice(
1,
33))
12187 var byteLength = Math.floor((curve.p.bitLength() +
7) /
8)
12191 assert.equal(buffer.length, byteLength +
1, 'Invalid sequence length')
12192 assert(type ===
0x02 || type ===
0x03, 'Invalid sequence tag')
12194 var isOdd = (type ===
0x03)
12195 Q = curve.pointFromX(isOdd, x)
12198 assert.equal(buffer.length,
1 + byteLength + byteLength, 'Invalid sequence length')
12200 var y = BigInteger.fromBuffer(buffer.slice(
1 + byteLength))
12201 Q = Point.fromAffine(curve, x, y)
12204 Q.compressed = compressed
12208 Point.prototype.toString = function () {
12209 if (this.curve.isInfinity(this)) return '(INFINITY)'
12211 return '(' + this.affineX.toString() + ',' + this.affineY.toString() + ')'
12214 module.exports = Point
12216 }).call(this,_dereq_("buffer").Buffer)
12217 },{"assert":
4,"bigi":
3,"buffer":
8}],
68:[function(_dereq_,module,exports){
12218 (function (process,Buffer){
12219 // Closure compiler error - result of 'not' operator not being used
12220 //!function(globals){
12221 (function(globals){
12225 if (typeof define !== 'undefined' && define.amd) { //require.js / AMD
12226 define([], function() {
12227 return secureRandom
12229 } else if (typeof module !== 'undefined' && module.exports) { //CommonJS
12230 module.exports = secureRandom
12231 } else { //script / browser
12232 globals.secureRandom = secureRandom
12236 //options.type is the only valid option
12237 function secureRandom(count, options) {
12238 options = options || {type: 'Array'}
12239 //we check for process.pid to prevent browserify from tricking us
12240 if (typeof process != 'undefined' && typeof process.pid == 'number') {
12241 return nodeRandom(count, options)
12243 var crypto = window.crypto || window.msCrypto
12244 if (!crypto) throw new Error("Your browser does not support window.crypto.")
12245 return browserRandom(count, options)
12249 function nodeRandom(count, options) {
12250 var crypto = _dereq_('crypto')
12251 var buf = crypto.randomBytes(count)
12253 switch (options.type) {
12255 return [].slice.call(buf)
12259 var arr = new Uint8Array(count)
12260 for (var i =
0; i < count; ++i) { arr[i] = buf.readUInt8(i) }
12263 throw new Error(options.type + " is unsupported.")
12267 function browserRandom(count, options) {
12268 var nativeArr = new Uint8Array(count)
12269 var crypto = window.crypto || window.msCrypto
12270 crypto.getRandomValues(nativeArr)
12272 switch (options.type) {
12274 return [].slice.call(nativeArr)
12276 try { var b = new Buffer(
1) } catch(e) { throw new Error('Buffer not supported in this environment. Use Node.js or Browserify for browser support.')}
12277 return new Buffer(nativeArr)
12281 throw new Error(options.type + " is unsupported.")
12285 secureRandom.randomArray = function(byteCount) {
12286 return secureRandom(byteCount, {type: 'Array'})
12289 secureRandom.randomUint8Array = function(byteCount) {
12290 return secureRandom(byteCount, {type: 'Uint8Array'})
12293 secureRandom.randomBuffer = function(byteCount) {
12294 return secureRandom(byteCount, {type: 'Buffer'})
12300 }).call(this,_dereq_("FWaASH"),_dereq_("buffer").Buffer)
12301 },{"FWaASH":
12,"buffer":
8,"crypto":
7}],
69:[function(_dereq_,module,exports){
12302 (function (Buffer){
12303 var assert = _dereq_('assert')
12304 var base58check = _dereq_('./base58check')
12305 var networks = _dereq_('./networks')
12306 var scripts = _dereq_('./scripts')
12308 function findScriptTypeByVersion(version) {
12309 for (var networkName in networks) {
12310 var network = networks[networkName]
12312 if (version === network.pubKeyHash) return 'pubkeyhash'
12313 if (version === network.scriptHash) return 'scripthash'
12317 function Address(hash, version) {
12318 assert(Buffer.isBuffer(hash), 'Expected Buffer, got ' + hash)
12319 assert.strictEqual(hash.length,
20, 'Invalid hash length')
12320 assert.strictEqual(version &
0xff, version, 'Invalid version byte')
12323 this.version = version
12326 // Import functions
12327 Address.fromBase58Check = function(string) {
12328 var payload = base58check.decode(string)
12329 var version = payload.readUInt8(
0)
12330 var hash = payload.slice(
1)
12332 return new Address(hash, version)
12335 Address.fromOutputScript = function(script, network) {
12336 network = network || networks.bitcoin
12338 var type = scripts.classifyOutput(script)
12340 if (type === 'pubkeyhash') return new Address(script.chunks[
2], network.pubKeyHash)
12341 if (type === 'scripthash') return new Address(script.chunks[
1], network.scriptHash)
12343 assert(false, type + ' has no matching Address')
12346 // Export functions
12347 Address.prototype.toBase58Check = function () {
12348 var payload = new Buffer(
21)
12349 payload.writeUInt8(this.version,
0)
12350 this.hash.copy(payload,
1)
12352 return base58check.encode(payload)
12355 Address.prototype.toOutputScript = function() {
12356 var scriptType = findScriptTypeByVersion(this.version)
12358 if (scriptType === 'pubkeyhash') return scripts.pubKeyHashOutput(this.hash)
12359 if (scriptType === 'scripthash') return scripts.scriptHashOutput(this.hash)
12361 assert(false, this.toString() + ' has no matching Script')
12364 Address.prototype.toString = Address.prototype.toBase58Check
12366 module.exports = Address
12368 }).call(this,_dereq_("buffer").Buffer)
12369 },{"./base58check":
70,"./networks":
81,"./scripts":
84,"assert":
4,"buffer":
8}],
70:[function(_dereq_,module,exports){
12370 (function (Buffer){
12371 // https://en.bitcoin.it/wiki/Base58Check_encoding
12372 var assert = _dereq_('assert')
12373 var base58 = _dereq_('bs58')
12374 var crypto = _dereq_('./crypto')
12376 // Encode a buffer as a base58-check-encoded string
12377 function encode(payload) {
12378 var checksum = crypto.hash256(payload).slice(
0,
4)
12380 return base58.encode(Buffer.concat([
12386 // Decode a base58-check-encoded string to a buffer
12387 function decode(string) {
12388 var buffer = base58.decode(string)
12390 var payload = buffer.slice(
0, -
4)
12391 var checksum = buffer.slice(-
4)
12392 var newChecksum = crypto.hash256(payload).slice(
0,
4)
12394 assert.deepEqual(newChecksum, checksum, 'Invalid checksum')
12404 }).call(this,_dereq_("buffer").Buffer)
12405 },{"./crypto":
73,"assert":
4,"bs58":
15,"buffer":
8}],
71:[function(_dereq_,module,exports){
12406 var assert = _dereq_('assert')
12407 var opcodes = _dereq_('./opcodes')
12409 // https://github.com/feross/buffer/blob/master/index.js#L1127
12410 function verifuint(value, max) {
12411 assert(typeof value === 'number', 'cannot write a non-number as a number')
12412 assert(value
>=
0, 'specified a negative value for writing an unsigned value')
12413 assert(value <= max, 'value is larger than maximum value for type')
12414 assert(Math.floor(value) === value, 'value has a fractional component')
12417 function pushDataSize(i) {
12418 return i < opcodes.OP_PUSHDATA1 ?
1
12424 function readPushDataInt(buffer, offset) {
12425 var opcode = buffer.readUInt8(offset)
12429 if (opcode < opcodes.OP_PUSHDATA1) {
12434 } else if (opcode === opcodes.OP_PUSHDATA1) {
12435 number = buffer.readUInt8(offset +
1)
12439 } else if (opcode === opcodes.OP_PUSHDATA2) {
12440 number = buffer.readUInt16LE(offset +
1)
12445 assert.equal(opcode, opcodes.OP_PUSHDATA4, 'Unexpected opcode')
12447 number = buffer.readUInt32LE(offset +
1)
12459 function readUInt64LE(buffer, offset) {
12460 var a = buffer.readUInt32LE(offset)
12461 var b = buffer.readUInt32LE(offset +
4)
12464 verifuint(b + a,
0x001fffffffffffff)
12469 function readVarInt(buffer, offset) {
12470 var t = buffer.readUInt8(offset)
12479 } else if (t <
254) {
12480 number = buffer.readUInt16LE(offset +
1)
12484 } else if (t <
255) {
12485 number = buffer.readUInt32LE(offset +
1)
12490 number = readUInt64LE(buffer, offset +
1)
12500 function writePushDataInt(buffer, number, offset) {
12501 var size = pushDataSize(number)
12505 buffer.writeUInt8(number, offset)
12508 } else if (size ===
2) {
12509 buffer.writeUInt8(opcodes.OP_PUSHDATA1, offset)
12510 buffer.writeUInt8(number, offset +
1)
12513 } else if (size ===
3) {
12514 buffer.writeUInt8(opcodes.OP_PUSHDATA2, offset)
12515 buffer.writeUInt16LE(number, offset +
1)
12519 buffer.writeUInt8(opcodes.OP_PUSHDATA4, offset)
12520 buffer.writeUInt32LE(number, offset +
1)
12527 function writeUInt64LE(buffer, value, offset) {
12528 verifuint(value,
0x001fffffffffffff)
12530 buffer.writeInt32LE(value & -
1, offset)
12531 buffer.writeUInt32LE(Math.floor(value /
0x100000000), offset +
4)
12534 function varIntSize(i) {
12537 : i <
0x100000000 ?
5
12541 function writeVarInt(buffer, number, offset) {
12542 var size = varIntSize(number)
12546 buffer.writeUInt8(number, offset)
12549 } else if (size ===
3) {
12550 buffer.writeUInt8(
253, offset)
12551 buffer.writeUInt16LE(number, offset +
1)
12554 } else if (size ===
5) {
12555 buffer.writeUInt8(
254, offset)
12556 buffer.writeUInt32LE(number, offset +
1)
12560 buffer.writeUInt8(
255, offset)
12561 writeUInt64LE(buffer, number, offset +
1)
12568 pushDataSize: pushDataSize,
12569 readPushDataInt: readPushDataInt,
12570 readUInt64LE: readUInt64LE,
12571 readVarInt: readVarInt,
12572 varIntSize: varIntSize,
12573 writePushDataInt: writePushDataInt,
12574 writeUInt64LE: writeUInt64LE,
12575 writeVarInt: writeVarInt
12578 },{"./opcodes":
82,"assert":
4}],
72:[function(_dereq_,module,exports){
12579 (function (Buffer){
12580 var assert = _dereq_('assert')
12581 var Crypto = _dereq_('crypto-js')
12582 var WordArray = Crypto.lib.WordArray
12584 function bufferToWordArray(buffer) {
12585 assert(Buffer.isBuffer(buffer), 'Expected Buffer, got', buffer)
12588 for (var i =
0, b =
0; i < buffer.length; i++, b +=
8) {
12589 words[b
>>> 5] |= buffer[i] << (
24 - b %
32)
12592 return new WordArray.init(words, buffer.length)
12595 function wordArrayToBuffer(wordArray) {
12596 assert(Array.isArray(wordArray.words), 'Expected WordArray, got' + wordArray)
12598 var words = wordArray.words
12599 var buffer = new Buffer(words.length *
4)
12601 words.forEach(function(value, i) {
12602 buffer.writeInt32BE(value & -
1, i *
4)
12609 bufferToWordArray: bufferToWordArray,
12610 wordArrayToBuffer: wordArrayToBuffer
12613 }).call(this,_dereq_(
"buffer").Buffer)
12614 },{
"assert":
4,
"buffer":
8,
"crypto-js":
37}],
73:[function(_dereq_,module,exports){
12615 (function (Buffer){
12616 // Crypto, crypto, where art thou crypto
12617 var assert = _dereq_('assert')
12618 var CryptoJS = _dereq_('crypto-js')
12619 var crypto = _dereq_('crypto')
12620 var convert = _dereq_('./convert')
12622 function hash160(buffer) {
12623 return ripemd160(sha256(buffer))
12626 function hash256(buffer) {
12627 return sha256(sha256(buffer))
12630 function ripemd160(buffer) {
12631 return crypto.createHash('rmd160').update(buffer).digest()
12634 function sha1(buffer) {
12635 return crypto.createHash('sha1').update(buffer).digest()
12638 function sha256(buffer) {
12639 return crypto.createHash('sha256').update(buffer).digest()
12642 // FIXME: Name not consistent with others
12643 function HmacSHA256(buffer, secret) {
12644 return crypto.createHmac('sha256', secret).update(buffer).digest()
12647 function HmacSHA512(data, secret) {
12648 assert(Buffer.isBuffer(data), 'Expected Buffer for data, got ' + data)
12649 assert(Buffer.isBuffer(secret), 'Expected Buffer for secret, got ' + secret)
12651 var dataWords = convert.bufferToWordArray(data)
12652 var secretWords = convert.bufferToWordArray(secret)
12654 var hash = CryptoJS.HmacSHA512(dataWords, secretWords)
12656 return convert.wordArrayToBuffer(hash)
12660 ripemd160: ripemd160,
12665 HmacSHA256: HmacSHA256,
12666 HmacSHA512: HmacSHA512
12669 }).call(this,_dereq_(
"buffer").Buffer)
12670 },{
"./convert":
72,
"assert":
4,
"buffer":
8,
"crypto":
19,
"crypto-js":
37}],
74:[function(_dereq_,module,exports){
12671 (function (Buffer){
12672 var assert = _dereq_('assert')
12673 var crypto = _dereq_('./crypto')
12675 var BigInteger = _dereq_('bigi')
12676 var ECSignature = _dereq_('./ecsignature')
12677 var Point = _dereq_('ecurve').Point
12679 // https://tools.ietf.org/html/rfc6979#section-
3.2
12680 function deterministicGenerateK(curve, hash, d) {
12681 assert(Buffer.isBuffer(hash), 'Hash must be a Buffer, not ' + hash)
12682 assert.equal(hash.length,
32, 'Hash must be
256 bit')
12683 assert(d instanceof BigInteger, 'Private key must be a BigInteger')
12685 var x = d.toBuffer(
32)
12686 var k = new Buffer(
32)
12687 var v = new Buffer(
32)
12696 k = crypto.HmacSHA256(Buffer.concat([v, new Buffer([
0]), x, hash]), k)
12699 v = crypto.HmacSHA256(v, k)
12702 k = crypto.HmacSHA256(Buffer.concat([v, new Buffer([
1]), x, hash]), k)
12705 v = crypto.HmacSHA256(v, k)
12707 // Step H1/H2a, ignored as tlen === qlen (
256 bit)
12709 v = crypto.HmacSHA256(v, k)
12711 var T = BigInteger.fromBuffer(v)
12713 // Step H3, repeat until T is within the interval [
1, n -
1]
12714 while ((T.signum() <=
0) || (T.compareTo(curve.n)
>=
0)) {
12715 k = crypto.HmacSHA256(Buffer.concat([v, new Buffer([
0])]), k)
12716 v = crypto.HmacSHA256(v, k)
12718 T = BigInteger.fromBuffer(v)
12724 function sign(curve, hash, d) {
12725 var k = deterministicGenerateK(curve, hash, d)
12729 var Q = G.multiply(k)
12730 var e = BigInteger.fromBuffer(hash)
12732 var r = Q.affineX.mod(n)
12733 assert.notEqual(r.signum(),
0, 'Invalid R value')
12735 var s = k.modInverse(n).multiply(e.add(d.multiply(r))).mod(n)
12736 assert.notEqual(s.signum(),
0, 'Invalid S value')
12738 var N_OVER_TWO = n.shiftRight(
1)
12740 // enforce low S values, see bip62: 'low s values in signatures'
12741 if (s.compareTo(N_OVER_TWO)
> 0) {
12745 return new ECSignature(r, s)
12748 function verify(curve, hash, signature, Q) {
12749 var e = BigInteger.fromBuffer(hash)
12751 return verifyRaw(curve, e, signature, Q)
12754 function verifyRaw(curve, e, signature, Q) {
12758 var r = signature.r
12759 var s = signature.s
12761 if (r.signum() ===
0 || r.compareTo(n)
>=
0) return false
12762 if (s.signum() ===
0 || s.compareTo(n)
>=
0) return false
12764 var c = s.modInverse(n)
12766 var u1 = e.multiply(c).mod(n)
12767 var u2 = r.multiply(c).mod(n)
12769 var point = G.multiplyTwo(u1, Q, u2)
12770 var v = point.affineX.mod(n)
12776 * Recover a public key from a signature.
12778 * See SEC
1: Elliptic Curve Cryptography, section
4.1.6, "Public
12779 * Key Recovery Operation".
12781 * http://www.secg.org/download/aid-
780/sec1-v2.pdf
12783 function recoverPubKey(curve, e, signature, i) {
12784 assert.strictEqual(i &
3, i, 'Recovery param is more than two bits')
12786 var r = signature.r
12787 var s = signature.s
12789 // A set LSB signifies that the y-coordinate is odd
12792 // The more significant bit specifies whether we should use the
12793 // first or second candidate key.
12794 var isSecondKey = i
>> 1
12799 //
1.1 Let x = r + jn
12800 var x = isSecondKey ? r.add(n) : r
12801 var R = curve.pointFromX(isYOdd, x)
12803 //
1.4 Check that nR is at infinity
12804 var nR = R.multiply(n)
12805 assert(curve.isInfinity(nR), 'nR is not a valid curve point')
12807 // Compute -e from e
12808 var eNeg = e.negate().mod(n)
12810 //
1.6.1 Compute Q = r^-
1 (sR - eG)
12811 // Q = r^-
1 (sR + -eG)
12812 var rInv = r.modInverse(n)
12814 var Q = R.multiplyTwo(s, G, eNeg).multiply(rInv)
12821 * Calculate pubkey extraction parameter.
12823 * When extracting a pubkey from a signature, we have to
12824 * distinguish four different cases. Rather than putting this
12825 * burden on the verifier, Bitcoin includes a
2-bit value with the
12828 * This function simply tries all four cases and returns the value
12829 * that resulted in a successful pubkey recovery.
12831 function calcPubKeyRecoveryParam(curve, e, signature, Q) {
12832 for (var i =
0; i <
4; i++) {
12833 var Qprime = recoverPubKey(curve, e, signature, i)
12836 if (Qprime.equals(Q)) {
12841 throw new Error('Unable to find valid recovery factor')
12845 calcPubKeyRecoveryParam: calcPubKeyRecoveryParam,
12846 deterministicGenerateK: deterministicGenerateK,
12847 recoverPubKey: recoverPubKey,
12850 verifyRaw: verifyRaw
12853 }).call(this,_dereq_(
"buffer").Buffer)
12854 },{
"./crypto":
73,
"./ecsignature":
77,
"assert":
4,
"bigi":
3,
"buffer":
8,
"ecurve":
65}],
75:[function(_dereq_,module,exports){
12855 (function (Buffer){
12856 var assert = _dereq_('assert')
12857 var base58check = _dereq_('./base58check')
12858 var ecdsa = _dereq_('./ecdsa')
12859 var networks = _dereq_('./networks')
12860 var secureRandom = _dereq_('secure-random')
12862 var BigInteger = _dereq_('bigi')
12863 var ECPubKey = _dereq_('./ecpubkey')
12865 var ecurve = _dereq_('ecurve')
12866 var curve = ecurve.getCurveByName('secp256k1')
12868 function ECKey(d, compressed) {
12869 assert(d.signum()
> 0, 'Private key must be greater than
0')
12870 assert(d.compareTo(curve.n) <
0, 'Private key must be less than the curve order')
12872 var Q = curve.G.multiply(d)
12875 this.pub = new ECPubKey(Q, compressed)
12878 // Static constructors
12879 ECKey.fromWIF = function(string) {
12880 var payload = base58check.decode(string)
12881 var compressed = false
12883 // Ignore the version byte
12884 payload = payload.slice(
1)
12886 if (payload.length ===
33) {
12887 assert.strictEqual(payload[
32],
0x01, 'Invalid compression flag')
12889 // Truncate the compression flag
12890 payload = payload.slice(
0, -
1)
12894 assert.equal(payload.length,
32, 'Invalid WIF payload length')
12896 var d = BigInteger.fromBuffer(payload)
12897 return new ECKey(d, compressed)
12900 ECKey.makeRandom = function(compressed, rng) {
12901 rng = rng || secureRandom.randomBuffer
12903 var buffer = rng(
32)
12904 assert(Buffer.isBuffer(buffer), 'Expected Buffer, got ' + buffer)
12906 var d = BigInteger.fromBuffer(buffer)
12909 return new ECKey(d, compressed)
12912 // Export functions
12913 ECKey.prototype.toWIF = function(network) {
12914 network = network || networks.bitcoin
12916 var bufferLen = this.pub.compressed ?
34 :
33
12917 var buffer = new Buffer(bufferLen)
12919 buffer.writeUInt8(network.wif,
0)
12920 this.d.toBuffer(
32).copy(buffer,
1)
12922 if (this.pub.compressed) {
12923 buffer.writeUInt8(
0x01,
33)
12926 return base58check.encode(buffer)
12930 ECKey.prototype.sign = function(hash) {
12931 return ecdsa.sign(curve, hash, this.d)
12934 module.exports = ECKey
12936 }).call(this,_dereq_(
"buffer").Buffer)
12937 },{
"./base58check":
70,
"./ecdsa":
74,
"./ecpubkey":
76,
"./networks":
81,
"assert":
4,
"bigi":
3,
"buffer":
8,
"ecurve":
65,
"secure-random":
68}],
76:[function(_dereq_,module,exports){
12938 (function (Buffer){
12939 var assert = _dereq_('assert')
12940 var crypto = _dereq_('./crypto')
12941 var ecdsa = _dereq_('./ecdsa')
12942 var networks = _dereq_('./networks')
12944 var Address = _dereq_('./address')
12946 var ecurve = _dereq_('ecurve')
12947 var curve = ecurve.getCurveByName('secp256k1')
12949 function ECPubKey(Q, compressed) {
12950 assert(Q instanceof ecurve.Point, 'Expected Point, got ' + Q)
12952 if (compressed == undefined) compressed = true
12953 assert.strictEqual(typeof compressed, 'boolean', 'Expected boolean, got ' + compressed)
12955 this.compressed = compressed
12959 // Static constructors
12960 ECPubKey.fromBuffer = function(buffer) {
12961 var Q = ecurve.Point.decodeFrom(curve, buffer)
12962 return new ECPubKey(Q, Q.compressed)
12965 ECPubKey.fromHex = function(hex) {
12966 return ECPubKey.fromBuffer(new Buffer(hex, 'hex'))
12970 ECPubKey.prototype.getAddress = function(network) {
12971 network = network || networks.bitcoin
12973 return new Address(crypto.hash160(this.toBuffer()), network.pubKeyHash)
12976 ECPubKey.prototype.verify = function(hash, signature) {
12977 return ecdsa.verify(curve, hash, signature, this.Q)
12980 // Export functions
12981 ECPubKey.prototype.toBuffer = function() {
12982 return this.Q.getEncoded(this.compressed)
12985 ECPubKey.prototype.toHex = function() {
12986 return this.toBuffer().toString('hex')
12989 module.exports = ECPubKey
12991 }).call(this,_dereq_(
"buffer").Buffer)
12992 },{
"./address":
69,
"./crypto":
73,
"./ecdsa":
74,
"./networks":
81,
"assert":
4,
"buffer":
8,
"ecurve":
65}],
77:[function(_dereq_,module,exports){
12993 (function (Buffer){
12994 var assert = _dereq_('assert')
12995 var BigInteger = _dereq_('bigi')
12997 function ECSignature(r, s) {
12998 assert(r instanceof BigInteger, 'Expected BigInteger, got ' + r)
12999 assert(s instanceof BigInteger, 'Expected BigInteger, got ' + s)
13004 // Import operations
13005 ECSignature.parseCompact = function(buffer) {
13006 assert.equal(buffer.length,
65, 'Invalid signature length')
13007 var i = buffer.readUInt8(
0) -
27
13010 assert.equal(i, i &
7, 'Invalid signature parameter')
13011 var compressed = !!(i &
4)
13013 // Recovery param only
13016 var r = BigInteger.fromBuffer(buffer.slice(
1,
33))
13017 var s = BigInteger.fromBuffer(buffer.slice(
33))
13020 compressed: compressed,
13022 signature: new ECSignature(r, s)
13026 ECSignature.fromDER = function(buffer) {
13027 assert.equal(buffer.readUInt8(
0),
0x30, 'Not a DER sequence')
13028 assert.equal(buffer.readUInt8(
1), buffer.length -
2, 'Invalid sequence length')
13029 assert.equal(buffer.readUInt8(
2),
0x02, 'Expected a DER integer')
13031 var rLen = buffer.readUInt8(
3)
13032 assert(rLen
> 0, 'R length is zero')
13034 var offset =
4 + rLen
13035 assert.equal(buffer.readUInt8(offset),
0x02, 'Expected a DER integer (
2)')
13037 var sLen = buffer.readUInt8(offset +
1)
13038 assert(sLen
> 0, 'S length is zero')
13040 var rB = buffer.slice(
4, offset)
13041 var sB = buffer.slice(offset +
2)
13044 if (rLen
> 1 && rB.readUInt8(
0) ===
0x00) {
13045 assert(rB.readUInt8(
1) &
0x80, 'R value excessively padded')
13048 if (sLen
> 1 && sB.readUInt8(
0) ===
0x00) {
13049 assert(sB.readUInt8(
1) &
0x80, 'S value excessively padded')
13052 assert.equal(offset, buffer.length, 'Invalid DER encoding')
13053 var r = BigInteger.fromDERInteger(rB)
13054 var s = BigInteger.fromDERInteger(sB)
13056 assert(r.signum()
>=
0, 'R value is negative')
13057 assert(s.signum()
>=
0, 'S value is negative')
13059 return new ECSignature(r, s)
13062 // FIXME:
0x00,
0x04,
0x80 are SIGHASH_* boundary constants, importing Transaction causes a circular dependency
13063 ECSignature.parseScriptSignature = function(buffer) {
13064 var hashType = buffer.readUInt8(buffer.length -
1)
13065 var hashTypeMod = hashType & ~
0x80
13067 assert(hashTypeMod
> 0x00 && hashTypeMod <
0x04, 'Invalid hashType')
13070 signature: ECSignature.fromDER(buffer.slice(
0, -
1)),
13075 // Export operations
13076 ECSignature.prototype.toCompact = function(i, compressed) {
13077 if (compressed) i +=
4
13080 var buffer = new Buffer(
65)
13081 buffer.writeUInt8(i,
0)
13083 this.r.toBuffer(
32).copy(buffer,
1)
13084 this.s.toBuffer(
32).copy(buffer,
33)
13089 ECSignature.prototype.toDER = function() {
13090 var rBa = this.r.toDERInteger()
13091 var sBa = this.s.toDERInteger()
13094 sequence.push(
0x02) // INTEGER
13095 sequence.push(rBa.length)
13096 sequence = sequence.concat(rBa)
13098 sequence.push(
0x02) // INTEGER
13099 sequence.push(sBa.length)
13100 sequence = sequence.concat(sBa)
13102 sequence.unshift(sequence.length)
13103 sequence.unshift(
0x30) // SEQUENCE
13105 return new Buffer(sequence)
13108 ECSignature.prototype.toScriptSignature = function(hashType) {
13109 var hashTypeBuffer = new Buffer(
1)
13110 hashTypeBuffer.writeUInt8(hashType,
0)
13112 return Buffer.concat([this.toDER(), hashTypeBuffer])
13115 module.exports = ECSignature
13117 }).call(this,_dereq_(
"buffer").Buffer)
13118 },{
"assert":
4,
"bigi":
3,
"buffer":
8}],
78:[function(_dereq_,module,exports){
13119 (function (Buffer){
13120 var assert = _dereq_('assert')
13121 var base58check = _dereq_('./base58check')
13122 var crypto = _dereq_('./crypto')
13123 var networks = _dereq_('./networks')
13125 var BigInteger = _dereq_('bigi')
13126 var ECKey = _dereq_('./eckey')
13127 var ECPubKey = _dereq_('./ecpubkey')
13129 var ecurve = _dereq_('ecurve')
13130 var curve = ecurve.getCurveByName('secp256k1')
13132 function findBIP32ParamsByVersion(version) {
13133 for (var name in networks) {
13134 var network = networks[name]
13136 for (var type in network.bip32) {
13137 if (version != network.bip32[type]) continue
13140 isPrivate: (type === 'private'),
13146 assert(false, 'Could not find version ' + version.toString(
16))
13149 function HDNode(K, chainCode, network) {
13150 network = network || networks.bitcoin
13152 assert(Buffer.isBuffer(chainCode), 'Expected Buffer, got ' + chainCode)
13153 assert(network.bip32, 'Unknown BIP32 constants for network')
13155 this.chainCode = chainCode
13158 this.network = network
13160 if (K instanceof BigInteger) {
13161 this.privKey = new ECKey(K, true)
13162 this.pubKey = this.privKey.pub
13164 this.pubKey = new ECPubKey(K, true)
13168 HDNode.MASTER_SECRET = new Buffer('Bitcoin seed')
13169 HDNode.HIGHEST_BIT =
0x80000000
13172 HDNode.fromSeedBuffer = function(seed, network) {
13173 var I = crypto.HmacSHA512(seed, HDNode.MASTER_SECRET)
13174 var IL = I.slice(
0,
32)
13175 var IR = I.slice(
32)
13177 // In case IL is
0 or
>= n, the master key is invalid
13178 // This is handled by `new ECKey` in the HDNode constructor
13179 var pIL = BigInteger.fromBuffer(IL)
13181 return new HDNode(pIL, IR, network)
13184 HDNode.fromSeedHex = function(hex, network) {
13185 return HDNode.fromSeedBuffer(new Buffer(hex, 'hex'), network)
13188 HDNode.fromBase58 = function(string) {
13189 return HDNode.fromBuffer(base58check.decode(string))
13192 HDNode.fromBuffer = function(buffer) {
13193 assert.strictEqual(buffer.length, HDNode.LENGTH, 'Invalid buffer length')
13195 //
4 byte: version bytes
13196 var version = buffer.readUInt32BE(
0)
13197 var params = findBIP32ParamsByVersion(version)
13199 //
1 byte: depth:
0x00 for master nodes,
0x01 for level-
1 descendants, ...
13200 var depth = buffer.readUInt8(
4)
13202 //
4 bytes: the fingerprint of the parent's key (
0x00000000 if master key)
13203 var parentFingerprint = buffer.readUInt32BE(
5)
13205 assert.strictEqual(parentFingerprint,
0x00000000, 'Invalid parent fingerprint')
13208 //
4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
13209 // This is encoded in MSB order. (
0x00000000 if master key)
13210 var index = buffer.readUInt32BE(
9)
13211 assert(depth
> 0 || index ===
0, 'Invalid index')
13213 //
32 bytes: the chain code
13214 var chainCode = buffer.slice(
13,
45)
13217 //
33 bytes: private key data (
0x00 + k)
13218 if (params.isPrivate) {
13219 assert.strictEqual(buffer.readUInt8(
45),
0x00, 'Invalid private key')
13220 var data = buffer.slice(
46,
78)
13221 var d = BigInteger.fromBuffer(data)
13222 hd = new HDNode(d, chainCode, params.network)
13224 //
33 bytes: public key data (
0x02 + X or
0x03 + X)
13226 var data = buffer.slice(
45,
78)
13227 var Q = ecurve.Point.decodeFrom(curve, data)
13228 assert.equal(Q.compressed, true, 'Invalid public key')
13230 // Verify that the X coordinate in the public point corresponds to a point on the curve.
13231 // If not, the extended public key is invalid.
13234 hd = new HDNode(Q, chainCode, params.network)
13239 hd.parentFingerprint = parentFingerprint
13244 HDNode.fromHex = function(hex) {
13245 return HDNode.fromBuffer(new Buffer(hex, 'hex'))
13248 HDNode.prototype.getIdentifier = function() {
13249 return crypto.hash160(this.pubKey.toBuffer())
13252 HDNode.prototype.getFingerprint = function() {
13253 return this.getIdentifier().slice(
0,
4)
13256 HDNode.prototype.getAddress = function() {
13257 return this.pubKey.getAddress(this.network)
13260 HDNode.prototype.toBase58 = function(isPrivate) {
13261 return base58check.encode(this.toBuffer(isPrivate))
13264 HDNode.prototype.toBuffer = function(isPrivate) {
13265 if (isPrivate == undefined) isPrivate = !!this.privKey
13268 var version = isPrivate ? this.network.bip32.private : this.network.bip32.public
13269 var buffer = new Buffer(HDNode.LENGTH)
13271 //
4 bytes: version bytes
13272 buffer.writeUInt32BE(version,
0)
13275 //
1 byte: depth:
0x00 for master nodes,
0x01 for level-
1 descendants, ....
13276 buffer.writeUInt8(this.depth,
4)
13278 //
4 bytes: the fingerprint of the parent's key (
0x00000000 if master key)
13279 var fingerprint = (this.depth ===
0) ?
0x00000000 : this.parentFingerprint
13280 buffer.writeUInt32BE(fingerprint,
5)
13282 //
4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
13283 // This is encoded in Big endian. (
0x00000000 if master key)
13284 buffer.writeUInt32BE(this.index,
9)
13286 //
32 bytes: the chain code
13287 this.chainCode.copy(buffer,
13)
13289 //
33 bytes: the public key or private key data
13291 assert(this.privKey, 'Missing private key')
13293 //
0x00 + k for private keys
13294 buffer.writeUInt8(
0,
45)
13295 this.privKey.d.toBuffer(
32).copy(buffer,
46)
13298 // X9.62 encoding for public keys
13299 this.pubKey.toBuffer().copy(buffer,
45)
13305 HDNode.prototype.toHex = function(isPrivate) {
13306 return this.toBuffer(isPrivate).toString('hex')
13309 // https://github.com/bitcoin/bips/blob/master/bip-
0032.mediawiki#child-key-derivation-ckd-functions
13310 HDNode.prototype.derive = function(index) {
13311 var isHardened = index
>= HDNode.HIGHEST_BIT
13312 var indexBuffer = new Buffer(
4)
13313 indexBuffer.writeUInt32BE(index,
0)
13319 assert(this.privKey, 'Could not derive hardened child key')
13321 // data =
0x00 || ser256(kpar) || ser32(index)
13322 data = Buffer.concat([
13323 this.privKey.d.toBuffer(
33),
13329 // data = serP(point(kpar)) || ser32(index)
13330 // = serP(Kpar) || ser32(index)
13331 data = Buffer.concat([
13332 this.pubKey.toBuffer(),
13337 var I = crypto.HmacSHA512(data, this.chainCode)
13338 var IL = I.slice(
0,
32)
13339 var IR = I.slice(
32)
13341 var pIL = BigInteger.fromBuffer(IL)
13343 // In case parse256(IL)
>= n, proceed with the next value for i
13344 if (pIL.compareTo(curve.n)
>=
0) {
13345 return this.derive(index +
1)
13348 // Private parent key -
> private child key
13350 if (this.privKey) {
13351 // ki = parse256(IL) + kpar (mod n)
13352 var ki = pIL.add(this.privKey.d).mod(curve.n)
13354 // In case ki ==
0, proceed with the next value for i
13355 if (ki.signum() ===
0) {
13356 return this.derive(index +
1)
13359 hd = new HDNode(ki, IR, this.network)
13361 // Public parent key -
> public child key
13363 // Ki = point(parse256(IL)) + Kpar
13365 var Ki = curve.G.multiply(pIL).add(this.pubKey.Q)
13367 // In case Ki is the point at infinity, proceed with the next value for i
13368 if (curve.isInfinity(Ki)) {
13369 return this.derive(index +
1)
13372 hd = new HDNode(Ki, IR, this.network)
13375 hd.depth = this.depth +
1
13377 hd.parentFingerprint = this.getFingerprint().readUInt32BE(
0)
13382 HDNode.prototype.deriveHardened = function(index) {
13383 // Only derives hardened private keys by default
13384 return this.derive(index + HDNode.HIGHEST_BIT)
13387 HDNode.prototype.toString = HDNode.prototype.toBase58
13389 module.exports = HDNode
13391 }).call(this,_dereq_("buffer").Buffer)
13392 },{"./base58check":
70,"./crypto":
73,"./eckey":
75,"./ecpubkey":
76,"./networks":
81,"assert":
4,"bigi":
3,"buffer":
8,"ecurve":
65}],
79:[function(_dereq_,module,exports){
13394 Address: _dereq_('./address'),
13395 base58check: _dereq_('./base58check'),
13396 bufferutils: _dereq_('./bufferutils'),
13397 convert: _dereq_('./convert'),
13398 crypto: _dereq_('./crypto'),
13399 ecdsa: _dereq_('./ecdsa'),
13400 ECKey: _dereq_('./eckey'),
13401 ECPubKey: _dereq_('./ecpubkey'),
13402 ECSignature: _dereq_('./ecsignature'),
13403 Message: _dereq_('./message'),
13404 opcodes: _dereq_('./opcodes'),
13405 HDNode: _dereq_('./hdnode'),
13406 Script: _dereq_('./script'),
13407 scripts: _dereq_('./scripts'),
13408 Transaction: _dereq_('./transaction'),
13409 networks: _dereq_('./networks'),
13410 Wallet: _dereq_('./wallet')
13413 },{"./address":
69,"./base58check":
70,"./bufferutils":
71,"./convert":
72,"./crypto":
73,"./ecdsa":
74,"./eckey":
75,"./ecpubkey":
76,"./ecsignature":
77,"./hdnode":
78,"./message":
80,"./networks":
81,"./opcodes":
82,"./script":
83,"./scripts":
84,"./transaction":
85,"./wallet":
86}],
80:[function(_dereq_,module,exports){
13414 (function (Buffer){
13415 /// Implements Bitcoin's feature for signing arbitrary messages.
13416 var Address = _dereq_('./address')
13417 var BigInteger = _dereq_('bigi')
13418 var bufferutils = _dereq_('./bufferutils')
13419 var crypto = _dereq_('./crypto')
13420 var ecdsa = _dereq_('./ecdsa')
13421 var networks = _dereq_('./networks')
13423 var Address = _dereq_('./address')
13424 var ECPubKey = _dereq_('./ecpubkey')
13425 var ECSignature = _dereq_('./ecsignature')
13427 var ecurve = _dereq_('ecurve')
13428 var ecparams = ecurve.getCurveByName('secp256k1')
13430 function magicHash(message, network) {
13431 var magicPrefix = new Buffer(network.magicPrefix)
13432 var messageBuffer = new Buffer(message)
13433 var lengthBuffer = new Buffer(bufferutils.varIntSize(messageBuffer.length))
13434 bufferutils.writeVarInt(lengthBuffer, messageBuffer.length,
0)
13436 var buffer = Buffer.concat([magicPrefix, lengthBuffer, messageBuffer])
13437 return crypto.hash256(buffer)
13440 function sign(privKey, message, network) {
13441 network = network || networks.bitcoin
13443 var hash = magicHash(message, network)
13444 var signature = privKey.sign(hash)
13445 var e = BigInteger.fromBuffer(hash)
13446 var i = ecdsa.calcPubKeyRecoveryParam(ecparams, e, signature, privKey.pub.Q)
13448 return signature.toCompact(i, privKey.pub.compressed)
13451 // TODO: network could be implied from address
13452 function verify(address, signatureBuffer, message, network) {
13453 if (address instanceof Address) {
13454 address = address.toString()
13456 network = network || networks.bitcoin
13458 var hash = magicHash(message, network)
13459 var parsed = ECSignature.parseCompact(signatureBuffer)
13460 var e = BigInteger.fromBuffer(hash)
13461 var Q = ecdsa.recoverPubKey(ecparams, e, parsed.signature, parsed.i)
13463 var pubKey = new ECPubKey(Q, parsed.compressed)
13464 return pubKey.getAddress(network).toString() === address
13468 magicHash: magicHash,
13473 }).call(this,_dereq_("buffer").Buffer)
13474 },{"./address":
69,"./bufferutils":
71,"./crypto":
73,"./ecdsa":
74,"./ecpubkey":
76,"./ecsignature":
77,"./networks":
81,"bigi":
3,"buffer":
8,"ecurve":
65}],
81:[function(_dereq_,module,exports){
13475 // https://en.bitcoin.it/wiki/List_of_address_prefixes
13476 // Dogecoin BIP32 is a proposed standard: https://bitcointalk.org/index.php?topic=
409731
13480 magicPrefix: '\x18Bitcoin Signed Message:\n',
13482 public:
0x0488b21e,
13483 private:
0x0488ade4
13488 dustThreshold:
546, // https://github.com/bitcoin/bitcoin/blob/v0.9
.2/src/core.h#L151-L162
13489 feePerKb:
10000, // https://github.com/bitcoin/bitcoin/blob/v0.9
.2/src/main.cpp#L53
13490 estimateFee: estimateFee('bitcoin')
13493 magicPrefix: '\x19Dogecoin Signed Message:\n',
13495 public:
0x02facafd,
13496 private:
0x02fac398
13501 dustThreshold:
0, // https://github.com/dogecoin/dogecoin/blob/v1.7
.1/src/core.h#L155-L160
13502 dustSoftThreshold:
100000000, // https://github.com/dogecoin/dogecoin/blob/v1.7
.1/src/main.h#L62
13503 feePerKb:
100000000, // https://github.com/dogecoin/dogecoin/blob/v1.7
.1/src/main.cpp#L58
13504 estimateFee: estimateFee('dogecoin')
13507 magicPrefix: '\x19Litecoin Signed Message:\n',
13509 public:
0x019da462,
13510 private:
0x019d9cfe
13515 dustThreshold:
0, // https://github.com/litecoin-project/litecoin/blob/v0.8
.7.2/src/main.cpp#L360-L365
13516 dustSoftThreshold:
100000, // https://github.com/litecoin-project/litecoin/blob/v0.8
.7.2/src/main.h#L53
13517 feePerKb:
100000, // https://github.com/litecoin-project/litecoin/blob/v0.8
.7.2/src/main.cpp#L56
13518 estimateFee: estimateFee('litecoin')
13521 magicPrefix: '\x18Bitcoin Signed Message:\n',
13523 public:
0x043587cf,
13524 private:
0x04358394
13529 dustThreshold:
546,
13531 estimateFee: estimateFee('testnet')
13535 function estimateFee(type) {
13536 return function(tx) {
13537 var network = networks[type]
13538 var baseFee = network.feePerKb
13539 var byteSize = tx.toBuffer().length
13541 var fee = baseFee * Math.ceil(byteSize /
1000)
13542 if (network.dustSoftThreshold == undefined) return fee
13544 tx.outs.forEach(function(e){
13545 if (e.value < network.dustSoftThreshold) {
13554 module.exports = networks
13556 },{}],
82:[function(_dereq_,module,exports){
13597 OP_TOALTSTACK :
107,
13598 OP_FROMALTSTACK :
108,
13630 OP_EQUALVERIFY :
136,
13631 OP_RESERVED1 :
137,
13632 OP_RESERVED2 :
138,
13642 OP_0NOTEQUAL :
146,
13655 OP_NUMEQUALVERIFY :
157,
13656 OP_NUMNOTEQUAL :
158,
13658 OP_GREATERTHAN :
160,
13659 OP_LESSTHANOREQUAL :
161,
13660 OP_GREATERTHANOREQUAL :
162,
13667 OP_RIPEMD160 :
166,
13672 OP_CODESEPARATOR :
171,
13674 OP_CHECKSIGVERIFY :
173,
13675 OP_CHECKMULTISIG :
174,
13676 OP_CHECKMULTISIGVERIFY :
175,
13690 // template matching params
13691 OP_PUBKEYHASH :
253,
13693 OP_INVALIDOPCODE :
255
13696 },{}],
83:[function(_dereq_,module,exports){
13697 (function (Buffer){
13698 var assert = _dereq_('assert')
13699 var bufferutils = _dereq_('./bufferutils')
13700 var crypto = _dereq_('./crypto')
13701 var opcodes = _dereq_('./opcodes')
13703 function Script(buffer, chunks) {
13704 assert(Buffer.isBuffer(buffer), 'Expected Buffer, got ' + buffer)
13705 assert(Array.isArray(chunks), 'Expected Array, got ' + chunks)
13707 this.buffer = buffer
13708 this.chunks = chunks
13711 // Import operations
13712 Script.fromASM = function(asm) {
13713 var strChunks = asm.split(' ')
13715 var chunks = strChunks.map(function(strChunk) {
13716 if (strChunk in opcodes) {
13717 return opcodes[strChunk]
13720 return new Buffer(strChunk, 'hex')
13724 return Script.fromChunks(chunks)
13727 Script.fromBuffer = function(buffer) {
13732 while (i < buffer.length) {
13733 var opcode = buffer.readUInt8(i)
13735 if ((opcode
> opcodes.OP_0) && (opcode <= opcodes.OP_PUSHDATA4)) {
13736 var d = bufferutils.readPushDataInt(buffer, i)
13739 var data = buffer.slice(i, i + d.number)
13745 chunks.push(opcode)
13751 return new Script(buffer, chunks)
13754 Script.fromChunks = function(chunks) {
13755 assert(Array.isArray(chunks), 'Expected Array, got ' + chunks)
13757 var bufferSize = chunks.reduce(function(accum, chunk) {
13758 if (Buffer.isBuffer(chunk)) {
13759 return accum + bufferutils.pushDataSize(chunk.length) + chunk.length
13765 var buffer = new Buffer(bufferSize)
13768 chunks.forEach(function(chunk) {
13769 if (Buffer.isBuffer(chunk)) {
13770 offset += bufferutils.writePushDataInt(buffer, chunk.length, offset)
13772 chunk.copy(buffer, offset)
13773 offset += chunk.length
13776 buffer.writeUInt8(chunk, offset)
13781 assert.equal(offset, buffer.length, 'Could not decode chunks')
13782 return new Script(buffer, chunks)
13785 Script.fromHex = function(hex) {
13786 return Script.fromBuffer(new Buffer(hex, 'hex'))
13790 Script.EMPTY = Script.fromChunks([])
13793 Script.prototype.getHash = function() {
13794 return crypto.hash160(this.buffer)
13797 // FIXME: doesn't work for data chunks, maybe time to use buffertools.compare...
13798 Script.prototype.without = function(needle) {
13799 return Script.fromChunks(this.chunks.filter(function(op) {
13800 return op !== needle
13804 // Export operations
13805 var reverseOps = []
13806 for (var op in opcodes) {
13807 var code = opcodes[op]
13808 reverseOps[code] = op
13811 Script.prototype.toASM = function() {
13812 return this.chunks.map(function(chunk) {
13813 if (Buffer.isBuffer(chunk)) {
13814 return chunk.toString('hex')
13817 return reverseOps[chunk]
13822 Script.prototype.toBuffer = function() {
13826 Script.prototype.toHex = function() {
13827 return this.toBuffer().toString('hex')
13830 module.exports = Script
13832 }).call(this,_dereq_("buffer").Buffer)
13833 },{"./bufferutils":
71,"./crypto":
73,"./opcodes":
82,"assert":
4,"buffer":
8}],
84:[function(_dereq_,module,exports){
13834 (function (Buffer){
13835 var assert = _dereq_('assert')
13836 var opcodes = _dereq_('./opcodes')
13838 // FIXME: use ECPubKey, currently the circular dependency breaks everything.
13841 // * Remove ECPubKey.getAddress
13842 // - Minimal change, but likely unpopular
13843 // * Move all script related functionality out of Address
13844 // - Means a lot of changes to Transaction/Wallet
13845 // * Ignore it (existing solution)
13846 // * Some form of hackery with commonjs
13848 var ecurve = _dereq_('ecurve')
13849 var curve = ecurve.getCurveByName('secp256k1')
13851 var ECSignature = _dereq_('./ecsignature')
13852 var Script = _dereq_('./script')
13854 function classifyOutput(script) {
13855 assert(script instanceof Script, 'Expected Script, got ', script)
13857 if (isPubKeyHashOutput.call(script)) {
13858 return 'pubkeyhash'
13859 } else if (isScriptHashOutput.call(script)) {
13860 return 'scripthash'
13861 } else if (isMultisigOutput.call(script)) {
13863 } else if (isPubKeyOutput.call(script)) {
13865 } else if (isNulldataOutput.call(script)) {
13868 return 'nonstandard'
13872 function classifyInput(script) {
13873 assert(script instanceof Script, 'Expected Script, got ', script)
13875 if (isPubKeyHashInput.call(script)) {
13876 return 'pubkeyhash'
13877 } else if (isScriptHashInput.call(script)) {
13878 return 'scripthash'
13879 } else if (isMultisigInput.call(script)) {
13881 } else if (isPubKeyInput.call(script)) {
13884 return 'nonstandard'
13888 function isCanonicalPubKey(buffer) {
13889 if (!Buffer.isBuffer(buffer)) return false
13893 ecurve.Point.decodeFrom(curve, buffer)
13895 if (!(e.message.match(/Invalid sequence (length|tag)/))) throw e
13903 function isCanonicalSignature(buffer) {
13904 if (!Buffer.isBuffer(buffer)) return false
13907 ECSignature.parseScriptSignature(buffer)
13909 if (!(e.message.match(/Not a DER sequence|Invalid sequence length|Expected a DER integer|R length is zero|S length is zero|R value excessively padded|S value excessively padded|R value is negative|S value is negative|Invalid hashType/))) throw e
13917 function isPubKeyHashInput() {
13918 return this.chunks.length ===
2 &&
13919 isCanonicalSignature(this.chunks[
0]) &&
13920 isCanonicalPubKey(this.chunks[
1])
13923 function isPubKeyHashOutput() {
13924 return this.chunks.length ===
5 &&
13925 this.chunks[
0] === opcodes.OP_DUP &&
13926 this.chunks[
1] === opcodes.OP_HASH160 &&
13927 Buffer.isBuffer(this.chunks[
2]) &&
13928 this.chunks[
2].length ===
20 &&
13929 this.chunks[
3] === opcodes.OP_EQUALVERIFY &&
13930 this.chunks[
4] === opcodes.OP_CHECKSIG
13933 function isPubKeyInput() {
13934 return this.chunks.length ===
1 &&
13935 isCanonicalSignature(this.chunks[
0])
13938 function isPubKeyOutput() {
13939 return this.chunks.length ===
2 &&
13940 isCanonicalPubKey(this.chunks[
0]) &&
13941 this.chunks[
1] === opcodes.OP_CHECKSIG
13944 function isScriptHashInput() {
13945 if (this.chunks.length <
2) return false
13946 var lastChunk = this.chunks[this.chunks.length -
1]
13948 if (!Buffer.isBuffer(lastChunk)) return false
13950 var scriptSig = Script.fromChunks(this.chunks.slice(
0, -
1))
13951 var scriptPubKey = Script.fromBuffer(lastChunk)
13953 return classifyInput(scriptSig) === classifyOutput(scriptPubKey)
13956 function isScriptHashOutput() {
13957 return this.chunks.length ===
3 &&
13958 this.chunks[
0] === opcodes.OP_HASH160 &&
13959 Buffer.isBuffer(this.chunks[
1]) &&
13960 this.chunks[
1].length ===
20 &&
13961 this.chunks[
2] === opcodes.OP_EQUAL
13964 function isMultisigInput() {
13965 return this.chunks[
0] === opcodes.OP_0 &&
13966 this.chunks.slice(
1).every(isCanonicalSignature)
13969 function isMultisigOutput() {
13970 if (this.chunks <
4) return false
13971 if (this.chunks[this.chunks.length -
1] !== opcodes.OP_CHECKMULTISIG) return false
13973 var mOp = this.chunks[
0]
13974 if (mOp === opcodes.OP_0) return false
13975 if (mOp < opcodes.OP_1) return false
13976 if (mOp
> opcodes.OP_16) return false
13978 var nOp = this.chunks[this.chunks.length -
2]
13979 if (nOp === opcodes.OP_0) return false
13980 if (nOp < opcodes.OP_1) return false
13981 if (nOp
> opcodes.OP_16) return false
13983 var m = mOp - (opcodes.OP_1 -
1)
13984 var n = nOp - (opcodes.OP_1 -
1)
13985 if (n < m) return false
13987 var pubKeys = this.chunks.slice(
1, -
2)
13988 if (n < pubKeys.length) return false
13990 return pubKeys.every(isCanonicalPubKey)
13993 function isNulldataOutput() {
13994 return this.chunks[
0] === opcodes.OP_RETURN
13997 // Standard Script Templates
13998 // {pubKey} OP_CHECKSIG
13999 function pubKeyOutput(pubKey) {
14000 return Script.fromChunks([
14002 opcodes.OP_CHECKSIG
14006 // OP_DUP OP_HASH160 {pubKeyHash} OP_EQUALVERIFY OP_CHECKSIG
14007 function pubKeyHashOutput(hash) {
14008 assert(Buffer.isBuffer(hash), 'Expected Buffer, got ' + hash)
14010 return Script.fromChunks([
14012 opcodes.OP_HASH160,
14014 opcodes.OP_EQUALVERIFY,
14015 opcodes.OP_CHECKSIG
14019 // OP_HASH160 {scriptHash} OP_EQUAL
14020 function scriptHashOutput(hash) {
14021 assert(Buffer.isBuffer(hash), 'Expected Buffer, got ' + hash)
14023 return Script.fromChunks([
14024 opcodes.OP_HASH160,
14030 // m [pubKeys ...] n OP_CHECKMULTISIG
14031 function multisigOutput(m, pubKeys) {
14032 assert(Array.isArray(pubKeys), 'Expected Array, got ' + pubKeys)
14033 assert(pubKeys.length
>= m, 'Not enough pubKeys provided')
14035 var pubKeyBuffers = pubKeys.map(function(pubKey) {
14036 return pubKey.toBuffer()
14038 var n = pubKeys.length
14040 return Script.fromChunks([].concat(
14041 (opcodes.OP_1 -
1) + m,
14043 (opcodes.OP_1 -
1) + n,
14044 opcodes.OP_CHECKMULTISIG
14049 function pubKeyInput(signature) {
14050 assert(Buffer.isBuffer(signature), 'Expected Buffer, got ' + signature)
14052 return Script.fromChunks([signature])
14055 // {signature} {pubKey}
14056 function pubKeyHashInput(signature, pubKey) {
14057 assert(Buffer.isBuffer(signature), 'Expected Buffer, got ' + signature)
14059 return Script.fromChunks([signature, pubKey.toBuffer()])
14062 //
<scriptSig> {serialized scriptPubKey script}
14063 function scriptHashInput(scriptSig, scriptPubKey) {
14064 return Script.fromChunks([].concat(
14066 scriptPubKey.toBuffer()
14070 // OP_0 [signatures ...]
14071 function multisigInput(signatures, scriptPubKey) {
14072 if (scriptPubKey) {
14073 assert(isMultisigOutput.call(scriptPubKey))
14075 var m = scriptPubKey.chunks[
0]
14076 var k = m - (opcodes.OP_1 -
1)
14077 assert(k <= signatures.length, 'Not enough signatures provided')
14080 return Script.fromChunks([].concat(opcodes.OP_0, signatures))
14084 classifyInput: classifyInput,
14085 classifyOutput: classifyOutput,
14086 multisigInput: multisigInput,
14087 multisigOutput: multisigOutput,
14088 pubKeyHashInput: pubKeyHashInput,
14089 pubKeyHashOutput: pubKeyHashOutput,
14090 pubKeyInput: pubKeyInput,
14091 pubKeyOutput: pubKeyOutput,
14092 scriptHashInput: scriptHashInput,
14093 scriptHashOutput: scriptHashOutput
14096 }).call(this,_dereq_("buffer").Buffer)
14097 },{"./ecsignature":
77,"./opcodes":
82,"./script":
83,"assert":
4,"buffer":
8,"ecurve":
65}],
85:[function(_dereq_,module,exports){
14098 (function (Buffer){
14099 var assert = _dereq_('assert')
14100 var bufferutils = _dereq_('./bufferutils')
14101 var crypto = _dereq_('./crypto')
14102 var opcodes = _dereq_('./opcodes')
14103 var scripts = _dereq_('./scripts')
14105 var Address = _dereq_('./address')
14106 var ECKey = _dereq_('./eckey')
14107 var ECSignature = _dereq_('./ecsignature')
14108 var Script = _dereq_('./script')
14110 Transaction.DEFAULT_SEQUENCE =
0xffffffff
14111 Transaction.SIGHASH_ALL =
0x01
14112 Transaction.SIGHASH_NONE =
0x02
14113 Transaction.SIGHASH_SINGLE =
0x03
14114 Transaction.SIGHASH_ANYONECANPAY =
0x80
14116 function Transaction() {
14124 * Create a new txin.
14126 * Can be called with any of:
14128 * - A transaction and an index
14129 * - A transaction hash and an index
14131 * Note that this method does not sign the created input.
14133 Transaction.prototype.addInput = function(tx, index, sequence) {
14134 if (sequence == undefined) sequence = Transaction.DEFAULT_SEQUENCE
14138 if (typeof tx === 'string') {
14139 hash = new Buffer(tx, 'hex')
14141 // TxId hex is big-endian, we need little-endian
14142 Array.prototype.reverse.call(hash)
14144 } else if (tx instanceof Transaction) {
14145 hash = tx.getHash()
14151 assert(Buffer.isBuffer(hash), 'Expected Transaction, txId or txHash, got ' + tx)
14152 assert.equal(hash.length,
32, 'Expected hash length of
32, got ' + hash.length)
14153 assert.equal(typeof index, 'number', 'Expected number index, got ' + index)
14155 return (this.ins.push({
14158 script: Script.EMPTY,
14164 * Create a new txout.
14166 * Can be called with:
14168 * - A base58 address string and a value
14169 * - An Address object and a value
14170 * - A scriptPubKey Script and a value
14172 Transaction.prototype.addOutput = function(scriptPubKey, value) {
14173 // Attempt to get a valid address if it's a base58 address string
14174 if (typeof scriptPubKey === 'string') {
14175 scriptPubKey = Address.fromBase58Check(scriptPubKey)
14178 // Attempt to get a valid script if it's an Address object
14179 if (scriptPubKey instanceof Address) {
14180 var address = scriptPubKey
14182 scriptPubKey = address.toOutputScript()
14185 return (this.outs.push({
14186 script: scriptPubKey,
14191 Transaction.prototype.toBuffer = function () {
14192 var txInSize = this.ins.reduce(function(a, x) {
14193 return a + (
40 + bufferutils.varIntSize(x.script.buffer.length) + x.script.buffer.length)
14196 var txOutSize = this.outs.reduce(function(a, x) {
14197 return a + (
8 + bufferutils.varIntSize(x.script.buffer.length) + x.script.buffer.length)
14200 var buffer = new Buffer(
14202 bufferutils.varIntSize(this.ins.length) +
14203 bufferutils.varIntSize(this.outs.length) +
14209 function writeSlice(slice) {
14210 slice.copy(buffer, offset)
14211 offset += slice.length
14213 function writeUInt32(i) {
14214 buffer.writeUInt32LE(i, offset)
14217 function writeUInt64(i) {
14218 bufferutils.writeUInt64LE(buffer, i, offset)
14221 function writeVarInt(i) {
14222 var n = bufferutils.writeVarInt(buffer, i, offset)
14226 writeUInt32(this.version)
14227 writeVarInt(this.ins.length)
14229 this.ins.forEach(function(txin) {
14230 writeSlice(txin.hash)
14231 writeUInt32(txin.index)
14232 writeVarInt(txin.script.buffer.length)
14233 writeSlice(txin.script.buffer)
14234 writeUInt32(txin.sequence)
14237 writeVarInt(this.outs.length)
14238 this.outs.forEach(function(txout) {
14239 writeUInt64(txout.value)
14240 writeVarInt(txout.script.buffer.length)
14241 writeSlice(txout.script.buffer)
14244 writeUInt32(this.locktime)
14249 Transaction.prototype.toHex = function() {
14250 return this.toBuffer().toString('hex')
14254 * Hash transaction for signing a specific input.
14256 * Bitcoin uses a different hash for each signed transaction input. This
14257 * method copies the transaction, makes the necessary changes based on the
14258 * hashType, serializes and finally hashes the result. This hash can then be
14259 * used to sign the transaction input in question.
14261 Transaction.prototype.hashForSignature = function(prevOutScript, inIndex, hashType) {
14262 assert(inIndex
>=
0, 'Invalid vin index')
14263 assert(inIndex < this.ins.length, 'Invalid vin index')
14264 assert(prevOutScript instanceof Script, 'Invalid Script object')
14266 var txTmp = this.clone()
14267 var hashScript = prevOutScript.without(opcodes.OP_CODESEPARATOR)
14269 // Blank out other inputs' signatures
14270 txTmp.ins.forEach(function(txin) {
14271 txin.script = Script.EMPTY
14273 txTmp.ins[inIndex].script = hashScript
14275 var hashTypeModifier = hashType &
0x1f
14276 if (hashTypeModifier === Transaction.SIGHASH_NONE) {
14277 assert(false, 'SIGHASH_NONE not yet supported')
14279 } else if (hashTypeModifier === Transaction.SIGHASH_SINGLE) {
14280 assert(false, 'SIGHASH_SINGLE not yet supported')
14284 if (hashType & Transaction.SIGHASH_ANYONECANPAY) {
14285 assert(false, 'SIGHASH_ANYONECANPAY not yet supported')
14288 var hashTypeBuffer = new Buffer(
4)
14289 hashTypeBuffer.writeInt32LE(hashType,
0)
14291 var buffer = Buffer.concat([txTmp.toBuffer(), hashTypeBuffer])
14292 return crypto.hash256(buffer)
14295 Transaction.prototype.getHash = function () {
14296 return crypto.hash256(this.toBuffer())
14299 Transaction.prototype.getId = function () {
14300 var buffer = this.getHash()
14302 // Big-endian is used for TxHash
14303 Array.prototype.reverse.call(buffer)
14305 return buffer.toString('hex')
14308 Transaction.prototype.clone = function () {
14309 var newTx = new Transaction()
14310 newTx.version = this.version
14311 newTx.locktime = this.locktime
14313 newTx.ins = this.ins.map(function(txin) {
14317 script: txin.script,
14318 sequence: txin.sequence
14322 newTx.outs = this.outs.map(function(txout) {
14324 script: txout.script,
14332 Transaction.fromBuffer = function(buffer) {
14334 function readSlice(n) {
14336 return buffer.slice(offset - n, offset)
14338 function readUInt32() {
14339 var i = buffer.readUInt32LE(offset)
14343 function readUInt64() {
14344 var i = bufferutils.readUInt64LE(buffer, offset)
14348 function readVarInt() {
14349 var vi = bufferutils.readVarInt(buffer, offset)
14354 var tx = new Transaction()
14355 tx.version = readUInt32()
14357 var vinLen = readVarInt()
14358 for (var i =
0; i < vinLen; ++i) {
14359 var hash = readSlice(
32)
14360 var vout = readUInt32()
14361 var scriptLen = readVarInt()
14362 var script = readSlice(scriptLen)
14363 var sequence = readUInt32()
14368 script: Script.fromBuffer(script),
14373 var voutLen = readVarInt()
14374 for (i =
0; i < voutLen; ++i) {
14375 var value = readUInt64()
14376 var scriptLen = readVarInt()
14377 var script = readSlice(scriptLen)
14381 script: Script.fromBuffer(script)
14385 tx.locktime = readUInt32()
14386 assert.equal(offset, buffer.length, 'Transaction has unexpected data')
14391 Transaction.fromHex = function(hex) {
14392 return Transaction.fromBuffer(new Buffer(hex, 'hex'))
14396 * Signs a pubKeyHash output at some index with the given key
14398 Transaction.prototype.sign = function(index, privKey, hashType) {
14399 var prevOutScript = privKey.pub.getAddress().toOutputScript()
14400 var signature = this.signInput(index, prevOutScript, privKey, hashType)
14402 // FIXME: Assumed prior TX was pay-to-pubkey-hash
14403 var scriptSig = scripts.pubKeyHashInput(signature, privKey.pub)
14404 this.setInputScript(index, scriptSig)
14407 Transaction.prototype.signInput = function(index, prevOutScript, privKey, hashType) {
14408 hashType = hashType || Transaction.SIGHASH_ALL
14410 var hash = this.hashForSignature(prevOutScript, index, hashType)
14411 var signature = privKey.sign(hash)
14413 return signature.toScriptSignature(hashType)
14416 Transaction.prototype.setInputScript = function(index, script) {
14417 this.ins[index].script = script
14420 // FIXME: could be validateInput(index, prevTxOut, pub)
14421 Transaction.prototype.validateInput = function(index, prevOutScript, pubKey, buffer) {
14422 var parsed = ECSignature.parseScriptSignature(buffer)
14423 var hash = this.hashForSignature(prevOutScript, index, parsed.hashType)
14425 return pubKey.verify(hash, parsed.signature)
14428 module.exports = Transaction
14430 }).call(this,_dereq_("buffer").Buffer)
14431 },{"./address":
69,"./bufferutils":
71,"./crypto":
73,"./eckey":
75,"./ecsignature":
77,"./opcodes":
82,"./script":
83,"./scripts":
84,"assert":
4,"buffer":
8}],
86:[function(_dereq_,module,exports){
14432 (function (Buffer){
14433 var assert = _dereq_('assert')
14434 var networks = _dereq_('./networks')
14435 var rng = _dereq_('secure-random')
14437 var Address = _dereq_('./address')
14438 var HDNode = _dereq_('./hdnode')
14439 var Transaction = _dereq_('./transaction')
14441 function Wallet(seed, network) {
14442 network = network || networks.bitcoin
14444 // Stored in a closure to make accidental serialization less likely
14445 var masterkey = null
14447 var accountZero = null
14448 var internalAccount = null
14449 var externalAccount = null
14452 this.addresses = []
14453 this.changeAddresses = []
14455 // Transaction output data
14458 // Make a new master key
14459 this.newMasterKey = function(seed) {
14460 seed = seed || new Buffer(rng(
32))
14461 masterkey = HDNode.fromSeedBuffer(seed, network)
14463 // HD first-level child derivation method should be hardened
14464 // See https://bitcointalk.org/index.php?topic=
405179.msg4415254#msg4415254
14465 accountZero = masterkey.deriveHardened(
0)
14466 externalAccount = accountZero.derive(
0)
14467 internalAccount = accountZero.derive(
1)
14470 me.changeAddresses = []
14475 this.newMasterKey(seed)
14477 this.generateAddress = function() {
14478 var key = externalAccount.derive(this.addresses.length)
14479 this.addresses.push(key.getAddress().toString())
14480 return this.addresses[this.addresses.length -
1]
14483 this.generateChangeAddress = function() {
14484 var key = internalAccount.derive(this.changeAddresses.length)
14485 this.changeAddresses.push(key.getAddress().toString())
14486 return this.changeAddresses[this.changeAddresses.length -
1]
14489 this.getBalance = function() {
14490 return this.getUnspentOutputs().reduce(function(memo, output){
14491 return memo + output.value
14495 this.getUnspentOutputs = function() {
14498 for(var key in this.outputs){
14499 var output = this.outputs[key]
14500 if(!output.to) utxo.push(outputToUnspentOutput(output))
14506 this.setUnspentOutputs = function(utxo) {
14509 utxo.forEach(function(uo){
14510 validateUnspentOutput(uo)
14511 var o = unspentOutputToOutput(uo)
14512 outputs[o.from] = o
14515 this.outputs = outputs
14518 function outputToUnspentOutput(output){
14519 var hashAndIndex = output.from.split(":")
14522 hash: hashAndIndex[
0],
14523 outputIndex: parseInt(hashAndIndex[
1]),
14524 address: output.address,
14525 value: output.value,
14526 pending: output.pending
14530 function unspentOutputToOutput(o) {
14532 var key = hash + ":" + o.outputIndex
14535 address: o.address,
14541 function validateUnspentOutput(uo) {
14544 if (isNullOrUndefined(uo.hash)) {
14545 missingField = "hash"
14548 var requiredKeys = ['outputIndex', 'address', 'value']
14549 requiredKeys.forEach(function (key) {
14550 if (isNullOrUndefined(uo[key])){
14555 if (missingField) {
14557 'Invalid unspent output: key', missingField, 'is missing.',
14558 'A valid unspent output must contain'
14560 message.push(requiredKeys.join(', '))
14561 message.push("and hash")
14562 throw new Error(message.join(' '))
14566 function isNullOrUndefined(value) {
14567 return value == undefined
14570 this.processPendingTx = function(tx){
14571 processTx(tx, true)
14574 this.processConfirmedTx = function(tx){
14575 processTx(tx, false)
14578 function processTx(tx, isPending) {
14579 var txid = tx.getId()
14581 tx.outs.forEach(function(txOut, i) {
14585 address = Address.fromOutputScript(txOut.script, network).toString()
14587 if (!(e.message.match(/has no matching Address/))) throw e
14590 if (isMyAddress(address)) {
14591 var output = txid + ':' + i
14593 me.outputs[output] = {
14595 value: txOut.value,
14602 tx.ins.forEach(function(txIn, i) {
14603 // copy and convert to big-endian hex
14604 var txinId = new Buffer(txIn.hash)
14605 Array.prototype.reverse.call(txinId)
14606 txinId = txinId.toString('hex')
14608 var output = txinId + ':' + txIn.index
14610 if (!(output in me.outputs)) return
14613 me.outputs[output].to = txid + ':' + i
14614 me.outputs[output].pending = true
14616 delete me.outputs[output]
14621 this.createTx = function(to, value, fixedFee, changeAddress) {
14622 assert(value
> network.dustThreshold, value + ' must be above dust threshold (' + network.dustThreshold + ' Satoshis)')
14624 var utxos = getCandidateOutputs(value)
14626 var subTotal = value
14629 var tx = new Transaction()
14630 tx.addOutput(to, value)
14632 for (var i =
0; i < utxos.length; ++i) {
14633 var utxo = utxos[i]
14634 addresses.push(utxo.address)
14636 var outpoint = utxo.from.split(':')
14637 tx.addInput(outpoint[
0], parseInt(outpoint[
1]))
14639 var fee = fixedFee == undefined ? estimateFeePadChangeOutput(tx) : fixedFee
14641 accum += utxo.value
14642 subTotal = value + fee
14643 if (accum
>= subTotal) {
14644 var change = accum - subTotal
14646 if (change
> network.dustThreshold) {
14647 tx.addOutput(changeAddress || getChangeAddress(), change)
14654 assert(accum
>= subTotal, 'Not enough funds (incl. fee): ' + accum + ' < ' + subTotal)
14656 this.signWith(tx, addresses)
14660 function getCandidateOutputs() {
14663 for (var key in me.outputs) {
14664 var output = me.outputs[key]
14665 if (!output.pending) unspent.push(output)
14668 var sortByValueDesc = unspent.sort(function(o1, o2){
14669 return o2.value - o1.value
14672 return sortByValueDesc
14675 function estimateFeePadChangeOutput(tx) {
14676 var tmpTx = tx.clone()
14677 tmpTx.addOutput(getChangeAddress(), network.dustSoftThreshold ||
0)
14679 return network.estimateFee(tmpTx)
14682 function getChangeAddress() {
14683 if(me.changeAddresses.length ===
0) me.generateChangeAddress();
14684 return me.changeAddresses[me.changeAddresses.length -
1]
14687 this.signWith = function(tx, addresses) {
14688 assert.equal(tx.ins.length, addresses.length, 'Number of addresses must match number of transaction inputs')
14690 addresses.forEach(function(address, i) {
14691 var key = me.getPrivateKeyForAddress(address)
14699 this.getMasterKey = function() { return masterkey }
14700 this.getAccountZero = function() { return accountZero }
14701 this.getInternalAccount = function() { return internalAccount }
14702 this.getExternalAccount = function() { return externalAccount }
14704 this.getPrivateKey = function(index) {
14705 return externalAccount.derive(index).privKey
14708 this.getInternalPrivateKey = function(index) {
14709 return internalAccount.derive(index).privKey
14712 this.getPrivateKeyForAddress = function(address) {
14714 if((index = this.addresses.indexOf(address))
> -
1) {
14715 return this.getPrivateKey(index)
14716 } else if((index = this.changeAddresses.indexOf(address))
> -
1) {
14717 return this.getInternalPrivateKey(index)
14719 throw new Error('Unknown address. Make sure the address is from the keychain and has been generated.')
14723 function isReceiveAddress(address){
14724 return me.addresses.indexOf(address)
> -
1
14727 function isChangeAddress(address){
14728 return me.changeAddresses.indexOf(address)
> -
1
14731 function isMyAddress(address) {
14732 return isReceiveAddress(address) || isChangeAddress(address)
14736 module.exports = Wallet
14738 }).call(this,_dereq_("buffer").Buffer)
14739 },{"./address":
69,"./hdnode":
78,"./networks":
81,"./transaction":
85,"assert":
4,"buffer":
8,"secure-random":
68}]},{},[
79])
14744 <!--<script src="/js/asmcrypto.js"></script>-->
14746 // INCLUDE ASMCRYPTO
14747 // https://rawgit.com/tresorit/asmcrypto.js/
598a1098504f1b2d0e615bc51dd8404afd2d338b/asmcrypto.js
14748 // Provides PBKDF2 functionality
14749 // It's faster than CryptoJS
14750 // Couldn't get SJCL working as desired
14753 (function(exports, global) {
14755 global["asmCrypto"] = exports;
14756 function string_to_bytes(str) {
14757 var i, len = str.length, arr = new Uint8Array(len);
14758 for (i =
0; i < len; i +=
1) {
14759 arr[i] = str.charCodeAt(i);
14763 function hex_to_bytes(str) {
14764 var arr = [], len = str.length, i;
14769 for (i =
0; i < len; i +=
2) {
14770 arr.push(parseInt(str.substr(i,
2),
16));
14772 return new Uint8Array(arr);
14774 function base64_to_bytes(str) {
14775 return string_to_bytes(atob(str));
14777 function bytes_to_string(arr) {
14779 for (var i =
0; i < arr.length; i++) str += String.fromCharCode(arr[i]);
14782 function bytes_to_hex(arr) {
14783 var sz = (arr.byteLength || arr.length) / arr.length, str = "";
14784 for (var i =
0; i < arr.length; i++) {
14785 var h = arr[i].toString(
16);
14786 if (h.length <
2 * sz) str += "
00000000000000".substr(
0,
2 * sz - h.length);
14791 function bytes_to_base64(arr) {
14792 return btoa(bytes_to_string(arr));
14794 function pow2_ceil(a) {
14804 function is_number(a) {
14805 return typeof a ===
"number";
14807 function is_string(a) {
14808 return typeof a ===
"string";
14810 function is_buffer(a) {
14811 return a instanceof ArrayBuffer;
14813 function is_bytes(a) {
14814 return a instanceof Uint8Array;
14816 function is_typed_array(a) {
14817 return a instanceof Int8Array || a instanceof Uint8Array || a instanceof Int16Array || a instanceof Uint16Array || a instanceof Int32Array || a instanceof Uint32Array || a instanceof Float32Array || a instanceof Float64Array;
14819 function IllegalStateError() {
14820 Error.apply(this, arguments);
14822 IllegalStateError.prototype = new Error();
14823 function IllegalArgumentError() {
14824 Error.apply(this, arguments);
14826 IllegalArgumentError.prototype = new Error();
14827 function SecurityError() {
14828 Error.apply(this, arguments);
14830 IllegalArgumentError.prototype = new Error();
14831 var _aes_tables = [
99,
124,
119,
123,
242,
107,
111,
197,
48,
1,
103,
43,
254,
215,
171,
118,
202,
130,
201,
125,
250,
89,
71,
240,
173,
212,
162,
175,
156,
164,
114,
192,
183,
253,
147,
38,
54,
63,
247,
204,
52,
165,
229,
241,
113,
216,
49,
21,
4,
199,
35,
195,
24,
150,
5,
154,
7,
18,
128,
226,
235,
39,
178,
117,
9,
131,
44,
26,
27,
110,
90,
160,
82,
59,
214,
179,
41,
227,
47,
132,
83,
209,
0,
237,
32,
252,
177,
91,
106,
203,
190,
57,
74,
76,
88,
207,
208,
239,
170,
251,
67,
77,
51,
133,
69,
249,
2,
127,
80,
60,
159,
168,
81,
163,
64,
143,
146,
157,
56,
245,
188,
182,
218,
33,
16,
255,
243,
210,
205,
12,
19,
236,
95,
151,
68,
23,
196,
167,
126,
61,
100,
93,
25,
115,
96,
129,
79,
220,
34,
42,
144,
136,
70,
238,
184,
20,
222,
94,
11,
219,
224,
50,
58,
10,
73,
6,
36,
92,
194,
211,
172,
98,
145,
149,
228,
121,
231,
200,
55,
109,
141,
213,
78,
169,
108,
86,
244,
234,
101,
122,
174,
8,
186,
120,
37,
46,
28,
166,
180,
198,
232,
221,
116,
31,
75,
189,
139,
138,
112,
62,
181,
102,
72,
3,
246,
14,
97,
53,
87,
185,
134,
193,
29,
158,
225,
248,
152,
17,
105,
217,
142,
148,
155,
30,
135,
233,
206,
85,
40,
223,
140,
161,
137,
13,
191,
230,
66,
104,
65,
153,
45,
15,
176,
84,
187,
22,
82,
9,
106,
213,
48,
54,
165,
56,
191,
64,
163,
158,
129,
243,
215,
251,
124,
227,
57,
130,
155,
47,
255,
135,
52,
142,
67,
68,
196,
222,
233,
203,
84,
123,
148,
50,
166,
194,
35,
61,
238,
76,
149,
11,
66,
250,
195,
78,
8,
46,
161,
102,
40,
217,
36,
178,
118,
91,
162,
73,
109,
139,
209,
37,
114,
248,
246,
100,
134,
104,
152,
22,
212,
164,
92,
204,
93,
101,
182,
146,
108,
112,
72,
80,
253,
237,
185,
218,
94,
21,
70,
87,
167,
141,
157,
132,
144,
216,
171,
0,
140,
188,
211,
10,
247,
228,
88,
5,
184,
179,
69,
6,
208,
44,
30,
143,
202,
63,
15,
2,
193,
175,
189,
3,
1,
19,
138,
107,
58,
145,
17,
65,
79,
103,
220,
234,
151,
242,
207,
206,
240,
180,
230,
115,
150,
172,
116,
34,
231,
173,
53,
133,
226,
249,
55,
232,
28,
117,
223,
110,
71,
241,
26,
113,
29,
41,
197,
137,
111,
183,
98,
14,
170,
24,
190,
27,
252,
86,
62,
75,
198,
210,
121,
32,
154,
219,
192,
254,
120,
205,
90,
244,
31,
221,
168,
51,
136,
7,
199,
49,
177,
18,
16,
89,
39,
128,
236,
95,
96,
81,
127,
169,
25,
181,
74,
13,
45,
229,
122,
159,
147,
201,
156,
239,
160,
224,
59,
77,
174,
42,
245,
176,
200,
235,
187,
60,
131,
83,
153,
97,
23,
43,
4,
126,
186,
119,
214,
38,
225,
105,
20,
99,
85,
33,
12,
125,
198,
248,
238,
246,
255,
214,
222,
145,
96,
2,
206,
86,
231,
181,
77,
236,
143,
31,
137,
250,
239,
178,
142,
251,
65,
179,
95,
69,
35,
83,
228,
155,
117,
225,
61,
76,
108,
126,
245,
131,
104,
81,
209,
249,
226,
171,
98,
42,
8,
149,
70,
157,
48,
55,
10,
47,
14,
36,
27,
223,
205,
78,
127,
234,
18,
29,
88,
52,
54,
220,
180,
91,
164,
118,
183,
125,
82,
221,
94,
19,
166,
185,
0,
193,
64,
227,
121,
182,
212,
141,
103,
114,
148,
152,
176,
133,
187,
197,
79,
237,
134,
154,
102,
17,
138,
233,
4,
254,
160,
120,
37,
75,
162,
93,
128,
5,
63,
33,
112,
241,
99,
119,
175,
66,
32,
229,
253,
191,
129,
24,
38,
195,
190,
53,
136,
46,
147,
85,
252,
122,
200,
186,
50,
230,
192,
25,
158,
163,
68,
84,
59,
11,
140,
199,
107,
40,
167,
188,
22,
173,
219,
100,
116,
20,
146,
12,
72,
184,
159,
189,
67,
196,
57,
49,
211,
242,
213,
139,
110,
218,
1,
177,
156,
73,
216,
172,
243,
207,
202,
244,
71,
16,
111,
240,
74,
92,
56,
87,
115,
151,
203,
161,
232,
62,
150,
97,
13,
15,
224,
124,
113,
204,
144,
6,
247,
28,
194,
106,
174,
105,
23,
153,
58,
39,
217,
235,
43,
34,
210,
169,
7,
51,
45,
60,
21,
201,
135,
170,
80,
165,
3,
89,
9,
26,
101,
215,
132,
208,
130,
41,
90,
30,
123,
168,
109,
44,
165,
132,
153,
141,
13,
189,
177,
84,
80,
3,
169,
125,
25,
98,
230,
154,
69,
157,
64,
135,
21,
235,
201,
11,
236,
103,
253,
234,
191,
247,
150,
91,
194,
28,
174,
106,
90,
65,
2,
79,
92,
244,
52,
8,
147,
115,
83,
63,
12,
82,
101,
94,
40,
161,
15,
181,
9,
54,
155,
61,
38,
105,
205,
159,
27,
158,
116,
46,
45,
178,
238,
251,
246,
77,
97,
206,
123,
62,
113,
151,
245,
104,
0,
44,
96,
31,
200,
237,
190,
70,
217,
75,
222,
212,
232,
74,
107,
42,
229,
22,
197,
215,
85,
148,
207,
16,
6,
129,
240,
68,
186,
227,
243,
254,
192,
138,
173,
188,
72,
4,
223,
193,
117,
99,
48,
26,
14,
109,
76,
20,
53,
47,
225,
162,
204,
57,
87,
242,
130,
71,
172,
231,
43,
149,
160,
152,
209,
127,
102,
126,
171,
131,
202,
41,
211,
60,
121,
226,
29,
118,
59,
86,
78,
30,
219,
10,
108,
228,
93,
110,
239,
166,
168,
164,
55,
139,
50,
67,
89,
183,
140,
100,
210,
224,
180,
250,
7,
37,
175,
142,
233,
24,
213,
136,
111,
114,
36,
241,
199,
81,
35,
124,
156,
33,
221,
220,
134,
133,
144,
66,
196,
170,
216,
5,
1,
18,
163,
95,
249,
208,
145,
88,
39,
185,
56,
19,
179,
51,
187,
112,
137,
167,
182,
34,
146,
32,
73,
255,
120,
122,
143,
248,
128,
23,
218,
49,
198,
184,
195,
176,
119,
17,
203,
252,
214,
58,
0,
9,
18,
27,
36,
45,
54,
63,
72,
65,
90,
83,
108,
101,
126,
119,
144,
153,
130,
139,
180,
189,
166,
175,
216,
209,
202,
195,
252,
245,
238,
231,
59,
50,
41,
32,
31,
22,
13,
4,
115,
122,
97,
104,
87,
94,
69,
76,
171,
162,
185,
176,
143,
134,
157,
148,
227,
234,
241,
248,
199,
206,
213,
220,
118,
127,
100,
109,
82,
91,
64,
73,
62,
55,
44,
37,
26,
19,
8,
1,
230,
239,
244,
253,
194,
203,
208,
217,
174,
167,
188,
181,
138,
131,
152,
145,
77,
68,
95,
86,
105,
96,
123,
114,
5,
12,
23,
30,
33,
40,
51,
58,
221,
212,
207,
198,
249,
240,
235,
226,
149,
156,
135,
142,
177,
184,
163,
170,
236,
229,
254,
247,
200,
193,
218,
211,
164,
173,
182,
191,
128,
137,
146,
155,
124,
117,
110,
103,
88,
81,
74,
67,
52,
61,
38,
47,
16,
25,
2,
11,
215,
222,
197,
204,
243,
250,
225,
232,
159,
150,
141,
132,
187,
178,
169,
160,
71,
78,
85,
92,
99,
106,
113,
120,
15,
6,
29,
20,
43,
34,
57,
48,
154,
147,
136,
129,
190,
183,
172,
165,
210,
219,
192,
201,
246,
255,
228,
237,
10,
3,
24,
17,
46,
39,
60,
53,
66,
75,
80,
89,
102,
111,
116,
125,
161,
168,
179,
186,
133,
140,
151,
158,
233,
224,
251,
242,
205,
196,
223,
214,
49,
56,
35,
42,
21,
28,
7,
14,
121,
112,
107,
98,
93,
84,
79,
70,
0,
11,
22,
29,
44,
39,
58,
49,
88,
83,
78,
69,
116,
127,
98,
105,
176,
187,
166,
173,
156,
151,
138,
129,
232,
227,
254,
245,
196,
207,
210,
217,
123,
112,
109,
102,
87,
92,
65,
74,
35,
40,
53,
62,
15,
4,
25,
18,
203,
192,
221,
214,
231,
236,
241,
250,
147,
152,
133,
142,
191,
180,
169,
162,
246,
253,
224,
235,
218,
209,
204,
199,
174,
165,
184,
179,
130,
137,
148,
159,
70,
77,
80,
91,
106,
97,
124,
119,
30,
21,
8,
3,
50,
57,
36,
47,
141,
134,
155,
144,
161,
170,
183,
188,
213,
222,
195,
200,
249,
242,
239,
228,
61,
54,
43,
32,
17,
26,
7,
12,
101,
110,
115,
120,
73,
66,
95,
84,
247,
252,
225,
234,
219,
208,
205,
198,
175,
164,
185,
178,
131,
136,
149,
158,
71,
76,
81,
90,
107,
96,
125,
118,
31,
20,
9,
2,
51,
56,
37,
46,
140,
135,
154,
145,
160,
171,
182,
189,
212,
223,
194,
201,
248,
243,
238,
229,
60,
55,
42,
33,
16,
27,
6,
13,
100,
111,
114,
121,
72,
67,
94,
85,
1,
10,
23,
28,
45,
38,
59,
48,
89,
82,
79,
68,
117,
126,
99,
104,
177,
186,
167,
172,
157,
150,
139,
128,
233,
226,
255,
244,
197,
206,
211,
216,
122,
113,
108,
103,
86,
93,
64,
75,
34,
41,
52,
63,
14,
5,
24,
19,
202,
193,
220,
215,
230,
237,
240,
251,
146,
153,
132,
143,
190,
181,
168,
163,
0,
13,
26,
23,
52,
57,
46,
35,
104,
101,
114,
127,
92,
81,
70,
75,
208,
221,
202,
199,
228,
233,
254,
243,
184,
181,
162,
175,
140,
129,
150,
155,
187,
182,
161,
172,
143,
130,
149,
152,
211,
222,
201,
196,
231,
234,
253,
240,
107,
102,
113,
124,
95,
82,
69,
72,
3,
14,
25,
20,
55,
58,
45,
32,
109,
96,
119,
122,
89,
84,
67,
78,
5,
8,
31,
18,
49,
60,
43,
38,
189,
176,
167,
170,
137,
132,
147,
158,
213,
216,
207,
194,
225,
236,
251,
246,
214,
219,
204,
193,
226,
239,
248,
245,
190,
179,
164,
169,
138,
135,
144,
157,
6,
11,
28,
17,
50,
63,
40,
37,
110,
99,
116,
121,
90,
87,
64,
77,
218,
215,
192,
205,
238,
227,
244,
249,
178,
191,
168,
165,
134,
139,
156,
145,
10,
7,
16,
29,
62,
51,
36,
41,
98,
111,
120,
117,
86,
91,
76,
65,
97,
108,
123,
118,
85,
88,
79,
66,
9,
4,
19,
30,
61,
48,
39,
42,
177,
188,
171,
166,
133,
136,
159,
146,
217,
212,
195,
206,
237,
224,
247,
250,
183,
186,
173,
160,
131,
142,
153,
148,
223,
210,
197,
200,
235,
230,
241,
252,
103,
106,
125,
112,
83,
94,
73,
68,
15,
2,
21,
24,
59,
54,
33,
44,
12,
1,
22,
27,
56,
53,
34,
47,
100,
105,
126,
115,
80,
93,
74,
71,
220,
209,
198,
203,
232,
229,
242,
255,
180,
185,
174,
163,
128,
141,
154,
151,
0,
14,
28,
18,
56,
54,
36,
42,
112,
126,
108,
98,
72,
70,
84,
90,
224,
238,
252,
242,
216,
214,
196,
202,
144,
158,
140,
130,
168,
166,
180,
186,
219,
213,
199,
201,
227,
237,
255,
241,
171,
165,
183,
185,
147,
157,
143,
129,
59,
53,
39,
41,
3,
13,
31,
17,
75,
69,
87,
89,
115,
125,
111,
97,
173,
163,
177,
191,
149,
155,
137,
135,
221,
211,
193,
207,
229,
235,
249,
247,
77,
67,
81,
95,
117,
123,
105,
103,
61,
51,
33,
47,
5,
11,
25,
23,
118,
120,
106,
100,
78,
64,
82,
92,
6,
8,
26,
20,
62,
48,
34,
44,
150,
152,
138,
132,
174,
160,
178,
188,
230,
232,
250,
244,
222,
208,
194,
204,
65,
79,
93,
83,
121,
119,
101,
107,
49,
63,
45,
35,
9,
7,
21,
27,
161,
175,
189,
179,
153,
151,
133,
139,
209,
223,
205,
195,
233,
231,
245,
251,
154,
148,
134,
136,
162,
172,
190,
176,
234,
228,
246,
248,
210,
220,
206,
192,
122,
116,
102,
104,
66,
76,
94,
80,
10,
4,
22,
24,
50,
60,
46,
32,
236,
226,
240,
254,
212,
218,
200,
198,
156,
146,
128,
142,
164,
170,
184,
182,
12,
2,
16,
30,
52,
58,
40,
38,
124,
114,
96,
110,
68,
74,
88,
86,
55,
57,
43,
37,
15,
1,
19,
29,
71,
73,
91,
85,
127,
113,
99,
109,
215,
217,
203,
197,
239,
225,
243,
253,
167,
169,
187,
181,
159,
145,
131,
141 ];
14832 var _aes_heap_start =
2048;
14833 function _aes_asm(stdlib, foreign, buffer) {
14834 // Closure Compiler warning - commented out
14836 var S0 =
0, S1 =
0, S2 =
0, S3 =
0, S4 =
0, S5 =
0, S6 =
0, S7 =
0, S8 =
0, S9 =
0, SA =
0, SB =
0, SC =
0, SD =
0, SE =
0, SF =
0;
14838 var R00 =
0, R01 =
0, R02 =
0, R03 =
0, R04 =
0, R05 =
0, R06 =
0, R07 =
0, R08 =
0, R09 =
0, R0A =
0, R0B =
0, R0C =
0, R0D =
0, R0E =
0, R0F =
0, R10 =
0, R11 =
0, R12 =
0, R13 =
0, R14 =
0, R15 =
0, R16 =
0, R17 =
0, R18 =
0, R19 =
0, R1A =
0, R1B =
0, R1C =
0, R1D =
0, R1E =
0, R1F =
0, R20 =
0, R21 =
0, R22 =
0, R23 =
0, R24 =
0, R25 =
0, R26 =
0, R27 =
0, R28 =
0, R29 =
0, R2A =
0, R2B =
0, R2C =
0, R2D =
0, R2E =
0, R2F =
0, R30 =
0, R31 =
0, R32 =
0, R33 =
0, R34 =
0, R35 =
0, R36 =
0, R37 =
0, R38 =
0, R39 =
0, R3A =
0, R3B =
0, R3C =
0, R3D =
0, R3E =
0, R3F =
0, R40 =
0, R41 =
0, R42 =
0, R43 =
0, R44 =
0, R45 =
0, R46 =
0, R47 =
0, R48 =
0, R49 =
0, R4A =
0, R4B =
0, R4C =
0, R4D =
0, R4E =
0, R4F =
0, R50 =
0, R51 =
0, R52 =
0, R53 =
0, R54 =
0, R55 =
0, R56 =
0, R57 =
0, R58 =
0, R59 =
0, R5A =
0, R5B =
0, R5C =
0, R5D =
0, R5E =
0, R5F =
0, R60 =
0, R61 =
0, R62 =
0, R63 =
0, R64 =
0, R65 =
0, R66 =
0, R67 =
0, R68 =
0, R69 =
0, R6A =
0, R6B =
0, R6C =
0, R6D =
0, R6E =
0, R6F =
0, R70 =
0, R71 =
0, R72 =
0, R73 =
0, R74 =
0, R75 =
0, R76 =
0, R77 =
0, R78 =
0, R79 =
0, R7A =
0, R7B =
0, R7C =
0, R7D =
0, R7E =
0, R7F =
0, R80 =
0, R81 =
0, R82 =
0, R83 =
0, R84 =
0, R85 =
0, R86 =
0, R87 =
0, R88 =
0, R89 =
0, R8A =
0, R8B =
0, R8C =
0, R8D =
0, R8E =
0, R8F =
0, R90 =
0, R91 =
0, R92 =
0, R93 =
0, R94 =
0, R95 =
0, R96 =
0, R97 =
0, R98 =
0, R99 =
0, R9A =
0, R9B =
0, R9C =
0, R9D =
0, R9E =
0, R9F =
0, RA0 =
0, RA1 =
0, RA2 =
0, RA3 =
0, RA4 =
0, RA5 =
0, RA6 =
0, RA7 =
0, RA8 =
0, RA9 =
0, RAA =
0, RAB =
0, RAC =
0, RAD =
0, RAE =
0, RAF =
0, RB0 =
0, RB1 =
0, RB2 =
0, RB3 =
0, RB4 =
0, RB5 =
0, RB6 =
0, RB7 =
0, RB8 =
0, RB9 =
0, RBA =
0, RBB =
0, RBC =
0, RBD =
0, RBE =
0, RBF =
0, RC0 =
0, RC1 =
0, RC2 =
0, RC3 =
0, RC4 =
0, RC5 =
0, RC6 =
0, RC7 =
0, RC8 =
0, RC9 =
0, RCA =
0, RCB =
0, RCC =
0, RCD =
0, RCE =
0, RCF =
0, RD0 =
0, RD1 =
0, RD2 =
0, RD3 =
0, RD4 =
0, RD5 =
0, RD6 =
0, RD7 =
0, RD8 =
0, RD9 =
0, RDA =
0, RDB =
0, RDC =
0, RDD =
0, RDE =
0, RDF =
0, RE0 =
0, RE1 =
0, RE2 =
0, RE3 =
0, RE4 =
0, RE5 =
0, RE6 =
0, RE7 =
0, RE8 =
0, RE9 =
0, REA =
0, REB =
0, REC =
0, RED =
0, REE =
0, REF =
0;
14839 var HEAP = new stdlib.Uint8Array(buffer);
14840 function _expand_key_128() {
14842 R10 = R00 ^ HEAP[sbox | R0D] ^
1;
14843 R11 = R01 ^ HEAP[sbox | R0E];
14844 R12 = R02 ^ HEAP[sbox | R0F];
14845 R13 = R03 ^ HEAP[sbox | R0C];
14858 R20 = R10 ^ HEAP[sbox | R1D] ^
2;
14859 R21 = R11 ^ HEAP[sbox | R1E];
14860 R22 = R12 ^ HEAP[sbox | R1F];
14861 R23 = R13 ^ HEAP[sbox | R1C];
14874 R30 = R20 ^ HEAP[sbox | R2D] ^
4;
14875 R31 = R21 ^ HEAP[sbox | R2E];
14876 R32 = R22 ^ HEAP[sbox | R2F];
14877 R33 = R23 ^ HEAP[sbox | R2C];
14890 R40 = R30 ^ HEAP[sbox | R3D] ^
8;
14891 R41 = R31 ^ HEAP[sbox | R3E];
14892 R42 = R32 ^ HEAP[sbox | R3F];
14893 R43 = R33 ^ HEAP[sbox | R3C];
14906 R50 = R40 ^ HEAP[sbox | R4D] ^
16;
14907 R51 = R41 ^ HEAP[sbox | R4E];
14908 R52 = R42 ^ HEAP[sbox | R4F];
14909 R53 = R43 ^ HEAP[sbox | R4C];
14922 R60 = R50 ^ HEAP[sbox | R5D] ^
32;
14923 R61 = R51 ^ HEAP[sbox | R5E];
14924 R62 = R52 ^ HEAP[sbox | R5F];
14925 R63 = R53 ^ HEAP[sbox | R5C];
14938 R70 = R60 ^ HEAP[sbox | R6D] ^
64;
14939 R71 = R61 ^ HEAP[sbox | R6E];
14940 R72 = R62 ^ HEAP[sbox | R6F];
14941 R73 = R63 ^ HEAP[sbox | R6C];
14954 R80 = R70 ^ HEAP[sbox | R7D] ^
128;
14955 R81 = R71 ^ HEAP[sbox | R7E];
14956 R82 = R72 ^ HEAP[sbox | R7F];
14957 R83 = R73 ^ HEAP[sbox | R7C];
14970 R90 = R80 ^ HEAP[sbox | R8D] ^
27;
14971 R91 = R81 ^ HEAP[sbox | R8E];
14972 R92 = R82 ^ HEAP[sbox | R8F];
14973 R93 = R83 ^ HEAP[sbox | R8C];
14986 RA0 = R90 ^ HEAP[sbox | R9D] ^
54;
14987 RA1 = R91 ^ HEAP[sbox | R9E];
14988 RA2 = R92 ^ HEAP[sbox | R9F];
14989 RA3 = R93 ^ HEAP[sbox | R9C];
15003 function _expand_key_256() {
15005 R20 = R00 ^ HEAP[sbox | R1D] ^
1;
15006 R21 = R01 ^ HEAP[sbox | R1E];
15007 R22 = R02 ^ HEAP[sbox | R1F];
15008 R23 = R03 ^ HEAP[sbox | R1C];
15021 R30 = R10 ^ HEAP[sbox | R2C];
15022 R31 = R11 ^ HEAP[sbox | R2D];
15023 R32 = R12 ^ HEAP[sbox | R2E];
15024 R33 = R13 ^ HEAP[sbox | R2F];
15037 R40 = R20 ^ HEAP[sbox | R3D] ^
2;
15038 R41 = R21 ^ HEAP[sbox | R3E];
15039 R42 = R22 ^ HEAP[sbox | R3F];
15040 R43 = R23 ^ HEAP[sbox | R3C];
15053 R50 = R30 ^ HEAP[sbox | R4C];
15054 R51 = R31 ^ HEAP[sbox | R4D];
15055 R52 = R32 ^ HEAP[sbox | R4E];
15056 R53 = R33 ^ HEAP[sbox | R4F];
15069 R60 = R40 ^ HEAP[sbox | R5D] ^
4;
15070 R61 = R41 ^ HEAP[sbox | R5E];
15071 R62 = R42 ^ HEAP[sbox | R5F];
15072 R63 = R43 ^ HEAP[sbox | R5C];
15085 R70 = R50 ^ HEAP[sbox | R6C];
15086 R71 = R51 ^ HEAP[sbox | R6D];
15087 R72 = R52 ^ HEAP[sbox | R6E];
15088 R73 = R53 ^ HEAP[sbox | R6F];
15101 R80 = R60 ^ HEAP[sbox | R7D] ^
8;
15102 R81 = R61 ^ HEAP[sbox | R7E];
15103 R82 = R62 ^ HEAP[sbox | R7F];
15104 R83 = R63 ^ HEAP[sbox | R7C];
15117 R90 = R70 ^ HEAP[sbox | R8C];
15118 R91 = R71 ^ HEAP[sbox | R8D];
15119 R92 = R72 ^ HEAP[sbox | R8E];
15120 R93 = R73 ^ HEAP[sbox | R8F];
15133 RA0 = R80 ^ HEAP[sbox | R9D] ^
16;
15134 RA1 = R81 ^ HEAP[sbox | R9E];
15135 RA2 = R82 ^ HEAP[sbox | R9F];
15136 RA3 = R83 ^ HEAP[sbox | R9C];
15149 RB0 = R90 ^ HEAP[sbox | RAC];
15150 RB1 = R91 ^ HEAP[sbox | RAD];
15151 RB2 = R92 ^ HEAP[sbox | RAE];
15152 RB3 = R93 ^ HEAP[sbox | RAF];
15165 RC0 = RA0 ^ HEAP[sbox | RBD] ^
32;
15166 RC1 = RA1 ^ HEAP[sbox | RBE];
15167 RC2 = RA2 ^ HEAP[sbox | RBF];
15168 RC3 = RA3 ^ HEAP[sbox | RBC];
15181 RD0 = RB0 ^ HEAP[sbox | RCC];
15182 RD1 = RB1 ^ HEAP[sbox | RCD];
15183 RD2 = RB2 ^ HEAP[sbox | RCE];
15184 RD3 = RB3 ^ HEAP[sbox | RCF];
15197 RE0 = RC0 ^ HEAP[sbox | RDD] ^
64;
15198 RE1 = RC1 ^ HEAP[sbox | RDE];
15199 RE2 = RC2 ^ HEAP[sbox | RDF];
15200 RE3 = RC3 ^ HEAP[sbox | RDC];
15214 function _encrypt(s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF) {
15231 var t0 =
0, t1 =
0, t2 =
0, t3 =
0, t4 =
0, t5 =
0, t6 =
0, t7 =
0, t8 =
0, t9 =
0, tA =
0, tB =
0, tC =
0, tD =
0, tE =
0, tF =
0, sbox =
0, x2_sbox =
512, x3_sbox =
768;
15248 t0 = HEAP[x2_sbox | s0] ^ HEAP[x3_sbox | s5] ^ HEAP[sbox | sA] ^ HEAP[sbox | sF] ^ R10;
15249 t1 = HEAP[sbox | s0] ^ HEAP[x2_sbox | s5] ^ HEAP[x3_sbox | sA] ^ HEAP[sbox | sF] ^ R11;
15250 t2 = HEAP[sbox | s0] ^ HEAP[sbox | s5] ^ HEAP[x2_sbox | sA] ^ HEAP[x3_sbox | sF] ^ R12;
15251 t3 = HEAP[x3_sbox | s0] ^ HEAP[sbox | s5] ^ HEAP[sbox | sA] ^ HEAP[x2_sbox | sF] ^ R13;
15252 t4 = HEAP[x2_sbox | s4] ^ HEAP[x3_sbox | s9] ^ HEAP[sbox | sE] ^ HEAP[sbox | s3] ^ R14;
15253 t5 = HEAP[sbox | s4] ^ HEAP[x2_sbox | s9] ^ HEAP[x3_sbox | sE] ^ HEAP[sbox | s3] ^ R15;
15254 t6 = HEAP[sbox | s4] ^ HEAP[sbox | s9] ^ HEAP[x2_sbox | sE] ^ HEAP[x3_sbox | s3] ^ R16;
15255 t7 = HEAP[x3_sbox | s4] ^ HEAP[sbox | s9] ^ HEAP[sbox | sE] ^ HEAP[x2_sbox | s3] ^ R17;
15256 t8 = HEAP[x2_sbox | s8] ^ HEAP[x3_sbox | sD] ^ HEAP[sbox | s2] ^ HEAP[sbox | s7] ^ R18;
15257 t9 = HEAP[sbox | s8] ^ HEAP[x2_sbox | sD] ^ HEAP[x3_sbox | s2] ^ HEAP[sbox | s7] ^ R19;
15258 tA = HEAP[sbox | s8] ^ HEAP[sbox | sD] ^ HEAP[x2_sbox | s2] ^ HEAP[x3_sbox | s7] ^ R1A;
15259 tB = HEAP[x3_sbox | s8] ^ HEAP[sbox | sD] ^ HEAP[sbox | s2] ^ HEAP[x2_sbox | s7] ^ R1B;
15260 tC = HEAP[x2_sbox | sC] ^ HEAP[x3_sbox | s1] ^ HEAP[sbox | s6] ^ HEAP[sbox | sB] ^ R1C;
15261 tD = HEAP[sbox | sC] ^ HEAP[x2_sbox | s1] ^ HEAP[x3_sbox | s6] ^ HEAP[sbox | sB] ^ R1D;
15262 tE = HEAP[sbox | sC] ^ HEAP[sbox | s1] ^ HEAP[x2_sbox | s6] ^ HEAP[x3_sbox | sB] ^ R1E;
15263 tF = HEAP[x3_sbox | sC] ^ HEAP[sbox | s1] ^ HEAP[sbox | s6] ^ HEAP[x2_sbox | sB] ^ R1F;
15264 s0 = HEAP[x2_sbox | t0] ^ HEAP[x3_sbox | t5] ^ HEAP[sbox | tA] ^ HEAP[sbox | tF] ^ R20;
15265 s1 = HEAP[sbox | t0] ^ HEAP[x2_sbox | t5] ^ HEAP[x3_sbox | tA] ^ HEAP[sbox | tF] ^ R21;
15266 s2 = HEAP[sbox | t0] ^ HEAP[sbox | t5] ^ HEAP[x2_sbox | tA] ^ HEAP[x3_sbox | tF] ^ R22;
15267 s3 = HEAP[x3_sbox | t0] ^ HEAP[sbox | t5] ^ HEAP[sbox | tA] ^ HEAP[x2_sbox | tF] ^ R23;
15268 s4 = HEAP[x2_sbox | t4] ^ HEAP[x3_sbox | t9] ^ HEAP[sbox | tE] ^ HEAP[sbox | t3] ^ R24;
15269 s5 = HEAP[sbox | t4] ^ HEAP[x2_sbox | t9] ^ HEAP[x3_sbox | tE] ^ HEAP[sbox | t3] ^ R25;
15270 s6 = HEAP[sbox | t4] ^ HEAP[sbox | t9] ^ HEAP[x2_sbox | tE] ^ HEAP[x3_sbox | t3] ^ R26;
15271 s7 = HEAP[x3_sbox | t4] ^ HEAP[sbox | t9] ^ HEAP[sbox | tE] ^ HEAP[x2_sbox | t3] ^ R27;
15272 s8 = HEAP[x2_sbox | t8] ^ HEAP[x3_sbox | tD] ^ HEAP[sbox | t2] ^ HEAP[sbox | t7] ^ R28;
15273 s9 = HEAP[sbox | t8] ^ HEAP[x2_sbox | tD] ^ HEAP[x3_sbox | t2] ^ HEAP[sbox | t7] ^ R29;
15274 sA = HEAP[sbox | t8] ^ HEAP[sbox | tD] ^ HEAP[x2_sbox | t2] ^ HEAP[x3_sbox | t7] ^ R2A;
15275 sB = HEAP[x3_sbox | t8] ^ HEAP[sbox | tD] ^ HEAP[sbox | t2] ^ HEAP[x2_sbox | t7] ^ R2B;
15276 sC = HEAP[x2_sbox | tC] ^ HEAP[x3_sbox | t1] ^ HEAP[sbox | t6] ^ HEAP[sbox | tB] ^ R2C;
15277 sD = HEAP[sbox | tC] ^ HEAP[x2_sbox | t1] ^ HEAP[x3_sbox | t6] ^ HEAP[sbox | tB] ^ R2D;
15278 sE = HEAP[sbox | tC] ^ HEAP[sbox | t1] ^ HEAP[x2_sbox | t6] ^ HEAP[x3_sbox | tB] ^ R2E;
15279 sF = HEAP[x3_sbox | tC] ^ HEAP[sbox | t1] ^ HEAP[sbox | t6] ^ HEAP[x2_sbox | tB] ^ R2F;
15280 t0 = HEAP[x2_sbox | s0] ^ HEAP[x3_sbox | s5] ^ HEAP[sbox | sA] ^ HEAP[sbox | sF] ^ R30;
15281 t1 = HEAP[sbox | s0] ^ HEAP[x2_sbox | s5] ^ HEAP[x3_sbox | sA] ^ HEAP[sbox | sF] ^ R31;
15282 t2 = HEAP[sbox | s0] ^ HEAP[sbox | s5] ^ HEAP[x2_sbox | sA] ^ HEAP[x3_sbox | sF] ^ R32;
15283 t3 = HEAP[x3_sbox | s0] ^ HEAP[sbox | s5] ^ HEAP[sbox | sA] ^ HEAP[x2_sbox | sF] ^ R33;
15284 t4 = HEAP[x2_sbox | s4] ^ HEAP[x3_sbox | s9] ^ HEAP[sbox | sE] ^ HEAP[sbox | s3] ^ R34;
15285 t5 = HEAP[sbox | s4] ^ HEAP[x2_sbox | s9] ^ HEAP[x3_sbox | sE] ^ HEAP[sbox | s3] ^ R35;
15286 t6 = HEAP[sbox | s4] ^ HEAP[sbox | s9] ^ HEAP[x2_sbox | sE] ^ HEAP[x3_sbox | s3] ^ R36;
15287 t7 = HEAP[x3_sbox | s4] ^ HEAP[sbox | s9] ^ HEAP[sbox | sE] ^ HEAP[x2_sbox | s3] ^ R37;
15288 t8 = HEAP[x2_sbox | s8] ^ HEAP[x3_sbox | sD] ^ HEAP[sbox | s2] ^ HEAP[sbox | s7] ^ R38;
15289 t9 = HEAP[sbox | s8] ^ HEAP[x2_sbox | sD] ^ HEAP[x3_sbox | s2] ^ HEAP[sbox | s7] ^ R39;
15290 tA = HEAP[sbox | s8] ^ HEAP[sbox | sD] ^ HEAP[x2_sbox | s2] ^ HEAP[x3_sbox | s7] ^ R3A;
15291 tB = HEAP[x3_sbox | s8] ^ HEAP[sbox | sD] ^ HEAP[sbox | s2] ^ HEAP[x2_sbox | s7] ^ R3B;
15292 tC = HEAP[x2_sbox | sC] ^ HEAP[x3_sbox | s1] ^ HEAP[sbox | s6] ^ HEAP[sbox | sB] ^ R3C;
15293 tD = HEAP[sbox | sC] ^ HEAP[x2_sbox | s1] ^ HEAP[x3_sbox | s6] ^ HEAP[sbox | sB] ^ R3D;
15294 tE = HEAP[sbox | sC] ^ HEAP[sbox | s1] ^ HEAP[x2_sbox | s6] ^ HEAP[x3_sbox | sB] ^ R3E;
15295 tF = HEAP[x3_sbox | sC] ^ HEAP[sbox | s1] ^ HEAP[sbox | s6] ^ HEAP[x2_sbox | sB] ^ R3F;
15296 s0 = HEAP[x2_sbox | t0] ^ HEAP[x3_sbox | t5] ^ HEAP[sbox | tA] ^ HEAP[sbox | tF] ^ R40;
15297 s1 = HEAP[sbox | t0] ^ HEAP[x2_sbox | t5] ^ HEAP[x3_sbox | tA] ^ HEAP[sbox | tF] ^ R41;
15298 s2 = HEAP[sbox | t0] ^ HEAP[sbox | t5] ^ HEAP[x2_sbox | tA] ^ HEAP[x3_sbox | tF] ^ R42;
15299 s3 = HEAP[x3_sbox | t0] ^ HEAP[sbox | t5] ^ HEAP[sbox | tA] ^ HEAP[x2_sbox | tF] ^ R43;
15300 s4 = HEAP[x2_sbox | t4] ^ HEAP[x3_sbox | t9] ^ HEAP[sbox | tE] ^ HEAP[sbox | t3] ^ R44;
15301 s5 = HEAP[sbox | t4] ^ HEAP[x2_sbox | t9] ^ HEAP[x3_sbox | tE] ^ HEAP[sbox | t3] ^ R45;
15302 s6 = HEAP[sbox | t4] ^ HEAP[sbox | t9] ^ HEAP[x2_sbox | tE] ^ HEAP[x3_sbox | t3] ^ R46;
15303 s7 = HEAP[x3_sbox | t4] ^ HEAP[sbox | t9] ^ HEAP[sbox | tE] ^ HEAP[x2_sbox | t3] ^ R47;
15304 s8 = HEAP[x2_sbox | t8] ^ HEAP[x3_sbox | tD] ^ HEAP[sbox | t2] ^ HEAP[sbox | t7] ^ R48;
15305 s9 = HEAP[sbox | t8] ^ HEAP[x2_sbox | tD] ^ HEAP[x3_sbox | t2] ^ HEAP[sbox | t7] ^ R49;
15306 sA = HEAP[sbox | t8] ^ HEAP[sbox | tD] ^ HEAP[x2_sbox | t2] ^ HEAP[x3_sbox | t7] ^ R4A;
15307 sB = HEAP[x3_sbox | t8] ^ HEAP[sbox | tD] ^ HEAP[sbox | t2] ^ HEAP[x2_sbox | t7] ^ R4B;
15308 sC = HEAP[x2_sbox | tC] ^ HEAP[x3_sbox | t1] ^ HEAP[sbox | t6] ^ HEAP[sbox | tB] ^ R4C;
15309 sD = HEAP[sbox | tC] ^ HEAP[x2_sbox | t1] ^ HEAP[x3_sbox | t6] ^ HEAP[sbox | tB] ^ R4D;
15310 sE = HEAP[sbox | tC] ^ HEAP[sbox | t1] ^ HEAP[x2_sbox | t6] ^ HEAP[x3_sbox | tB] ^ R4E;
15311 sF = HEAP[x3_sbox | tC] ^ HEAP[sbox | t1] ^ HEAP[sbox | t6] ^ HEAP[x2_sbox | tB] ^ R4F;
15312 t0 = HEAP[x2_sbox | s0] ^ HEAP[x3_sbox | s5] ^ HEAP[sbox | sA] ^ HEAP[sbox | sF] ^ R50;
15313 t1 = HEAP[sbox | s0] ^ HEAP[x2_sbox | s5] ^ HEAP[x3_sbox | sA] ^ HEAP[sbox | sF] ^ R51;
15314 t2 = HEAP[sbox | s0] ^ HEAP[sbox | s5] ^ HEAP[x2_sbox | sA] ^ HEAP[x3_sbox | sF] ^ R52;
15315 t3 = HEAP[x3_sbox | s0] ^ HEAP[sbox | s5] ^ HEAP[sbox | sA] ^ HEAP[x2_sbox | sF] ^ R53;
15316 t4 = HEAP[x2_sbox | s4] ^ HEAP[x3_sbox | s9] ^ HEAP[sbox | sE] ^ HEAP[sbox | s3] ^ R54;
15317 t5 = HEAP[sbox | s4] ^ HEAP[x2_sbox | s9] ^ HEAP[x3_sbox | sE] ^ HEAP[sbox | s3] ^ R55;
15318 t6 = HEAP[sbox | s4] ^ HEAP[sbox | s9] ^ HEAP[x2_sbox | sE] ^ HEAP[x3_sbox | s3] ^ R56;
15319 t7 = HEAP[x3_sbox | s4] ^ HEAP[sbox | s9] ^ HEAP[sbox | sE] ^ HEAP[x2_sbox | s3] ^ R57;
15320 t8 = HEAP[x2_sbox | s8] ^ HEAP[x3_sbox | sD] ^ HEAP[sbox | s2] ^ HEAP[sbox | s7] ^ R58;
15321 t9 = HEAP[sbox | s8] ^ HEAP[x2_sbox | sD] ^ HEAP[x3_sbox | s2] ^ HEAP[sbox | s7] ^ R59;
15322 tA = HEAP[sbox | s8] ^ HEAP[sbox | sD] ^ HEAP[x2_sbox | s2] ^ HEAP[x3_sbox | s7] ^ R5A;
15323 tB = HEAP[x3_sbox | s8] ^ HEAP[sbox | sD] ^ HEAP[sbox | s2] ^ HEAP[x2_sbox | s7] ^ R5B;
15324 tC = HEAP[x2_sbox | sC] ^ HEAP[x3_sbox | s1] ^ HEAP[sbox | s6] ^ HEAP[sbox | sB] ^ R5C;
15325 tD = HEAP[sbox | sC] ^ HEAP[x2_sbox | s1] ^ HEAP[x3_sbox | s6] ^ HEAP[sbox | sB] ^ R5D;
15326 tE = HEAP[sbox | sC] ^ HEAP[sbox | s1] ^ HEAP[x2_sbox | s6] ^ HEAP[x3_sbox | sB] ^ R5E;
15327 tF = HEAP[x3_sbox | sC] ^ HEAP[sbox | s1] ^ HEAP[sbox | s6] ^ HEAP[x2_sbox | sB] ^ R5F;
15328 s0 = HEAP[x2_sbox | t0] ^ HEAP[x3_sbox | t5] ^ HEAP[sbox | tA] ^ HEAP[sbox | tF] ^ R60;
15329 s1 = HEAP[sbox | t0] ^ HEAP[x2_sbox | t5] ^ HEAP[x3_sbox | tA] ^ HEAP[sbox | tF] ^ R61;
15330 s2 = HEAP[sbox | t0] ^ HEAP[sbox | t5] ^ HEAP[x2_sbox | tA] ^ HEAP[x3_sbox | tF] ^ R62;
15331 s3 = HEAP[x3_sbox | t0] ^ HEAP[sbox | t5] ^ HEAP[sbox | tA] ^ HEAP[x2_sbox | tF] ^ R63;
15332 s4 = HEAP[x2_sbox | t4] ^ HEAP[x3_sbox | t9] ^ HEAP[sbox | tE] ^ HEAP[sbox | t3] ^ R64;
15333 s5 = HEAP[sbox | t4] ^ HEAP[x2_sbox | t9] ^ HEAP[x3_sbox | tE] ^ HEAP[sbox | t3] ^ R65;
15334 s6 = HEAP[sbox | t4] ^ HEAP[sbox | t9] ^ HEAP[x2_sbox | tE] ^ HEAP[x3_sbox | t3] ^ R66;
15335 s7 = HEAP[x3_sbox | t4] ^ HEAP[sbox | t9] ^ HEAP[sbox | tE] ^ HEAP[x2_sbox | t3] ^ R67;
15336 s8 = HEAP[x2_sbox | t8] ^ HEAP[x3_sbox | tD] ^ HEAP[sbox | t2] ^ HEAP[sbox | t7] ^ R68;
15337 s9 = HEAP[sbox | t8] ^ HEAP[x2_sbox | tD] ^ HEAP[x3_sbox | t2] ^ HEAP[sbox | t7] ^ R69;
15338 sA = HEAP[sbox | t8] ^ HEAP[sbox | tD] ^ HEAP[x2_sbox | t2] ^ HEAP[x3_sbox | t7] ^ R6A;
15339 sB = HEAP[x3_sbox | t8] ^ HEAP[sbox | tD] ^ HEAP[sbox | t2] ^ HEAP[x2_sbox | t7] ^ R6B;
15340 sC = HEAP[x2_sbox | tC] ^ HEAP[x3_sbox | t1] ^ HEAP[sbox | t6] ^ HEAP[sbox | tB] ^ R6C;
15341 sD = HEAP[sbox | tC] ^ HEAP[x2_sbox | t1] ^ HEAP[x3_sbox | t6] ^ HEAP[sbox | tB] ^ R6D;
15342 sE = HEAP[sbox | tC] ^ HEAP[sbox | t1] ^ HEAP[x2_sbox | t6] ^ HEAP[x3_sbox | tB] ^ R6E;
15343 sF = HEAP[x3_sbox | tC] ^ HEAP[sbox | t1] ^ HEAP[sbox | t6] ^ HEAP[x2_sbox | tB] ^ R6F;
15344 t0 = HEAP[x2_sbox | s0] ^ HEAP[x3_sbox | s5] ^ HEAP[sbox | sA] ^ HEAP[sbox | sF] ^ R70;
15345 t1 = HEAP[sbox | s0] ^ HEAP[x2_sbox | s5] ^ HEAP[x3_sbox | sA] ^ HEAP[sbox | sF] ^ R71;
15346 t2 = HEAP[sbox | s0] ^ HEAP[sbox | s5] ^ HEAP[x2_sbox | sA] ^ HEAP[x3_sbox | sF] ^ R72;
15347 t3 = HEAP[x3_sbox | s0] ^ HEAP[sbox | s5] ^ HEAP[sbox | sA] ^ HEAP[x2_sbox | sF] ^ R73;
15348 t4 = HEAP[x2_sbox | s4] ^ HEAP[x3_sbox | s9] ^ HEAP[sbox | sE] ^ HEAP[sbox | s3] ^ R74;
15349 t5 = HEAP[sbox | s4] ^ HEAP[x2_sbox | s9] ^ HEAP[x3_sbox | sE] ^ HEAP[sbox | s3] ^ R75;
15350 t6 = HEAP[sbox | s4] ^ HEAP[sbox | s9] ^ HEAP[x2_sbox | sE] ^ HEAP[x3_sbox | s3] ^ R76;
15351 t7 = HEAP[x3_sbox | s4] ^ HEAP[sbox | s9] ^ HEAP[sbox | sE] ^ HEAP[x2_sbox | s3] ^ R77;
15352 t8 = HEAP[x2_sbox | s8] ^ HEAP[x3_sbox | sD] ^ HEAP[sbox | s2] ^ HEAP[sbox | s7] ^ R78;
15353 t9 = HEAP[sbox | s8] ^ HEAP[x2_sbox | sD] ^ HEAP[x3_sbox | s2] ^ HEAP[sbox | s7] ^ R79;
15354 tA = HEAP[sbox | s8] ^ HEAP[sbox | sD] ^ HEAP[x2_sbox | s2] ^ HEAP[x3_sbox | s7] ^ R7A;
15355 tB = HEAP[x3_sbox | s8] ^ HEAP[sbox | sD] ^ HEAP[sbox | s2] ^ HEAP[x2_sbox | s7] ^ R7B;
15356 tC = HEAP[x2_sbox | sC] ^ HEAP[x3_sbox | s1] ^ HEAP[sbox | s6] ^ HEAP[sbox | sB] ^ R7C;
15357 tD = HEAP[sbox | sC] ^ HEAP[x2_sbox | s1] ^ HEAP[x3_sbox | s6] ^ HEAP[sbox | sB] ^ R7D;
15358 tE = HEAP[sbox | sC] ^ HEAP[sbox | s1] ^ HEAP[x2_sbox | s6] ^ HEAP[x3_sbox | sB] ^ R7E;
15359 tF = HEAP[x3_sbox | sC] ^ HEAP[sbox | s1] ^ HEAP[sbox | s6] ^ HEAP[x2_sbox | sB] ^ R7F;
15360 s0 = HEAP[x2_sbox | t0] ^ HEAP[x3_sbox | t5] ^ HEAP[sbox | tA] ^ HEAP[sbox | tF] ^ R80;
15361 s1 = HEAP[sbox | t0] ^ HEAP[x2_sbox | t5] ^ HEAP[x3_sbox | tA] ^ HEAP[sbox | tF] ^ R81;
15362 s2 = HEAP[sbox | t0] ^ HEAP[sbox | t5] ^ HEAP[x2_sbox | tA] ^ HEAP[x3_sbox | tF] ^ R82;
15363 s3 = HEAP[x3_sbox | t0] ^ HEAP[sbox | t5] ^ HEAP[sbox | tA] ^ HEAP[x2_sbox | tF] ^ R83;
15364 s4 = HEAP[x2_sbox | t4] ^ HEAP[x3_sbox | t9] ^ HEAP[sbox | tE] ^ HEAP[sbox | t3] ^ R84;
15365 s5 = HEAP[sbox | t4] ^ HEAP[x2_sbox | t9] ^ HEAP[x3_sbox | tE] ^ HEAP[sbox | t3] ^ R85;
15366 s6 = HEAP[sbox | t4] ^ HEAP[sbox | t9] ^ HEAP[x2_sbox | tE] ^ HEAP[x3_sbox | t3] ^ R86;
15367 s7 = HEAP[x3_sbox | t4] ^ HEAP[sbox | t9] ^ HEAP[sbox | tE] ^ HEAP[x2_sbox | t3] ^ R87;
15368 s8 = HEAP[x2_sbox | t8] ^ HEAP[x3_sbox | tD] ^ HEAP[sbox | t2] ^ HEAP[sbox | t7] ^ R88;
15369 s9 = HEAP[sbox | t8] ^ HEAP[x2_sbox | tD] ^ HEAP[x3_sbox | t2] ^ HEAP[sbox | t7] ^ R89;
15370 sA = HEAP[sbox | t8] ^ HEAP[sbox | tD] ^ HEAP[x2_sbox | t2] ^ HEAP[x3_sbox | t7] ^ R8A;
15371 sB = HEAP[x3_sbox | t8] ^ HEAP[sbox | tD] ^ HEAP[sbox | t2] ^ HEAP[x2_sbox | t7] ^ R8B;
15372 sC = HEAP[x2_sbox | tC] ^ HEAP[x3_sbox | t1] ^ HEAP[sbox | t6] ^ HEAP[sbox | tB] ^ R8C;
15373 sD = HEAP[sbox | tC] ^ HEAP[x2_sbox | t1] ^ HEAP[x3_sbox | t6] ^ HEAP[sbox | tB] ^ R8D;
15374 sE = HEAP[sbox | tC] ^ HEAP[sbox | t1] ^ HEAP[x2_sbox | t6] ^ HEAP[x3_sbox | tB] ^ R8E;
15375 sF = HEAP[x3_sbox | tC] ^ HEAP[sbox | t1] ^ HEAP[sbox | t6] ^ HEAP[x2_sbox | tB] ^ R8F;
15376 t0 = HEAP[x2_sbox | s0] ^ HEAP[x3_sbox | s5] ^ HEAP[sbox | sA] ^ HEAP[sbox | sF] ^ R90;
15377 t1 = HEAP[sbox | s0] ^ HEAP[x2_sbox | s5] ^ HEAP[x3_sbox | sA] ^ HEAP[sbox | sF] ^ R91;
15378 t2 = HEAP[sbox | s0] ^ HEAP[sbox | s5] ^ HEAP[x2_sbox | sA] ^ HEAP[x3_sbox | sF] ^ R92;
15379 t3 = HEAP[x3_sbox | s0] ^ HEAP[sbox | s5] ^ HEAP[sbox | sA] ^ HEAP[x2_sbox | sF] ^ R93;
15380 t4 = HEAP[x2_sbox | s4] ^ HEAP[x3_sbox | s9] ^ HEAP[sbox | sE] ^ HEAP[sbox | s3] ^ R94;
15381 t5 = HEAP[sbox | s4] ^ HEAP[x2_sbox | s9] ^ HEAP[x3_sbox | sE] ^ HEAP[sbox | s3] ^ R95;
15382 t6 = HEAP[sbox | s4] ^ HEAP[sbox | s9] ^ HEAP[x2_sbox | sE] ^ HEAP[x3_sbox | s3] ^ R96;
15383 t7 = HEAP[x3_sbox | s4] ^ HEAP[sbox | s9] ^ HEAP[sbox | sE] ^ HEAP[x2_sbox | s3] ^ R97;
15384 t8 = HEAP[x2_sbox | s8] ^ HEAP[x3_sbox | sD] ^ HEAP[sbox | s2] ^ HEAP[sbox | s7] ^ R98;
15385 t9 = HEAP[sbox | s8] ^ HEAP[x2_sbox | sD] ^ HEAP[x3_sbox | s2] ^ HEAP[sbox | s7] ^ R99;
15386 tA = HEAP[sbox | s8] ^ HEAP[sbox | sD] ^ HEAP[x2_sbox | s2] ^ HEAP[x3_sbox | s7] ^ R9A;
15387 tB = HEAP[x3_sbox | s8] ^ HEAP[sbox | sD] ^ HEAP[sbox | s2] ^ HEAP[x2_sbox | s7] ^ R9B;
15388 tC = HEAP[x2_sbox | sC] ^ HEAP[x3_sbox | s1] ^ HEAP[sbox | s6] ^ HEAP[sbox | sB] ^ R9C;
15389 tD = HEAP[sbox | sC] ^ HEAP[x2_sbox | s1] ^ HEAP[x3_sbox | s6] ^ HEAP[sbox | sB] ^ R9D;
15390 tE = HEAP[sbox | sC] ^ HEAP[sbox | s1] ^ HEAP[x2_sbox | s6] ^ HEAP[x3_sbox | sB] ^ R9E;
15391 tF = HEAP[x3_sbox | sC] ^ HEAP[sbox | s1] ^ HEAP[sbox | s6] ^ HEAP[x2_sbox | sB] ^ R9F;
15392 if ((keySize |
0) ==
16) {
15393 S0 = HEAP[sbox | t0] ^ RA0;
15394 S1 = HEAP[sbox | t5] ^ RA1;
15395 S2 = HEAP[sbox | tA] ^ RA2;
15396 S3 = HEAP[sbox | tF] ^ RA3;
15397 S4 = HEAP[sbox | t4] ^ RA4;
15398 S5 = HEAP[sbox | t9] ^ RA5;
15399 S6 = HEAP[sbox | tE] ^ RA6;
15400 S7 = HEAP[sbox | t3] ^ RA7;
15401 S8 = HEAP[sbox | t8] ^ RA8;
15402 S9 = HEAP[sbox | tD] ^ RA9;
15403 SA = HEAP[sbox | t2] ^ RAA;
15404 SB = HEAP[sbox | t7] ^ RAB;
15405 SC = HEAP[sbox | tC] ^ RAC;
15406 SD = HEAP[sbox | t1] ^ RAD;
15407 SE = HEAP[sbox | t6] ^ RAE;
15408 SF = HEAP[sbox | tB] ^ RAF;
15411 s0 = HEAP[x2_sbox | t0] ^ HEAP[x3_sbox | t5] ^ HEAP[sbox | tA] ^ HEAP[sbox | tF] ^ RA0;
15412 s1 = HEAP[sbox | t0] ^ HEAP[x2_sbox | t5] ^ HEAP[x3_sbox | tA] ^ HEAP[sbox | tF] ^ RA1;
15413 s2 = HEAP[sbox | t0] ^ HEAP[sbox | t5] ^ HEAP[x2_sbox | tA] ^ HEAP[x3_sbox | tF] ^ RA2;
15414 s3 = HEAP[x3_sbox | t0] ^ HEAP[sbox | t5] ^ HEAP[sbox | tA] ^ HEAP[x2_sbox | tF] ^ RA3;
15415 s4 = HEAP[x2_sbox | t4] ^ HEAP[x3_sbox | t9] ^ HEAP[sbox | tE] ^ HEAP[sbox | t3] ^ RA4;
15416 s5 = HEAP[sbox | t4] ^ HEAP[x2_sbox | t9] ^ HEAP[x3_sbox | tE] ^ HEAP[sbox | t3] ^ RA5;
15417 s6 = HEAP[sbox | t4] ^ HEAP[sbox | t9] ^ HEAP[x2_sbox | tE] ^ HEAP[x3_sbox | t3] ^ RA6;
15418 s7 = HEAP[x3_sbox | t4] ^ HEAP[sbox | t9] ^ HEAP[sbox | tE] ^ HEAP[x2_sbox | t3] ^ RA7;
15419 s8 = HEAP[x2_sbox | t8] ^ HEAP[x3_sbox | tD] ^ HEAP[sbox | t2] ^ HEAP[sbox | t7] ^ RA8;
15420 s9 = HEAP[sbox | t8] ^ HEAP[x2_sbox | tD] ^ HEAP[x3_sbox | t2] ^ HEAP[sbox | t7] ^ RA9;
15421 sA = HEAP[sbox | t8] ^ HEAP[sbox | tD] ^ HEAP[x2_sbox | t2] ^ HEAP[x3_sbox | t7] ^ RAA;
15422 sB = HEAP[x3_sbox | t8] ^ HEAP[sbox | tD] ^ HEAP[sbox | t2] ^ HEAP[x2_sbox | t7] ^ RAB;
15423 sC = HEAP[x2_sbox | tC] ^ HEAP[x3_sbox | t1] ^ HEAP[sbox | t6] ^ HEAP[sbox | tB] ^ RAC;
15424 sD = HEAP[sbox | tC] ^ HEAP[x2_sbox | t1] ^ HEAP[x3_sbox | t6] ^ HEAP[sbox | tB] ^ RAD;
15425 sE = HEAP[sbox | tC] ^ HEAP[sbox | t1] ^ HEAP[x2_sbox | t6] ^ HEAP[x3_sbox | tB] ^ RAE;
15426 sF = HEAP[x3_sbox | tC] ^ HEAP[sbox | t1] ^ HEAP[sbox | t6] ^ HEAP[x2_sbox | tB] ^ RAF;
15427 t0 = HEAP[x2_sbox | s0] ^ HEAP[x3_sbox | s5] ^ HEAP[sbox | sA] ^ HEAP[sbox | sF] ^ RB0;
15428 t1 = HEAP[sbox | s0] ^ HEAP[x2_sbox | s5] ^ HEAP[x3_sbox | sA] ^ HEAP[sbox | sF] ^ RB1;
15429 t2 = HEAP[sbox | s0] ^ HEAP[sbox | s5] ^ HEAP[x2_sbox | sA] ^ HEAP[x3_sbox | sF] ^ RB2;
15430 t3 = HEAP[x3_sbox | s0] ^ HEAP[sbox | s5] ^ HEAP[sbox | sA] ^ HEAP[x2_sbox | sF] ^ RB3;
15431 t4 = HEAP[x2_sbox | s4] ^ HEAP[x3_sbox | s9] ^ HEAP[sbox | sE] ^ HEAP[sbox | s3] ^ RB4;
15432 t5 = HEAP[sbox | s4] ^ HEAP[x2_sbox | s9] ^ HEAP[x3_sbox | sE] ^ HEAP[sbox | s3] ^ RB5;
15433 t6 = HEAP[sbox | s4] ^ HEAP[sbox | s9] ^ HEAP[x2_sbox | sE] ^ HEAP[x3_sbox | s3] ^ RB6;
15434 t7 = HEAP[x3_sbox | s4] ^ HEAP[sbox | s9] ^ HEAP[sbox | sE] ^ HEAP[x2_sbox | s3] ^ RB7;
15435 t8 = HEAP[x2_sbox | s8] ^ HEAP[x3_sbox | sD] ^ HEAP[sbox | s2] ^ HEAP[sbox | s7] ^ RB8;
15436 t9 = HEAP[sbox | s8] ^ HEAP[x2_sbox | sD] ^ HEAP[x3_sbox | s2] ^ HEAP[sbox | s7] ^ RB9;
15437 tA = HEAP[sbox | s8] ^ HEAP[sbox | sD] ^ HEAP[x2_sbox | s2] ^ HEAP[x3_sbox | s7] ^ RBA;
15438 tB = HEAP[x3_sbox | s8] ^ HEAP[sbox | sD] ^ HEAP[sbox | s2] ^ HEAP[x2_sbox | s7] ^ RBB;
15439 tC = HEAP[x2_sbox | sC] ^ HEAP[x3_sbox | s1] ^ HEAP[sbox | s6] ^ HEAP[sbox | sB] ^ RBC;
15440 tD = HEAP[sbox | sC] ^ HEAP[x2_sbox | s1] ^ HEAP[x3_sbox | s6] ^ HEAP[sbox | sB] ^ RBD;
15441 tE = HEAP[sbox | sC] ^ HEAP[sbox | s1] ^ HEAP[x2_sbox | s6] ^ HEAP[x3_sbox | sB] ^ RBE;
15442 tF = HEAP[x3_sbox | sC] ^ HEAP[sbox | s1] ^ HEAP[sbox | s6] ^ HEAP[x2_sbox | sB] ^ RBF;
15443 s0 = HEAP[x2_sbox | t0] ^ HEAP[x3_sbox | t5] ^ HEAP[sbox | tA] ^ HEAP[sbox | tF] ^ RC0;
15444 s1 = HEAP[sbox | t0] ^ HEAP[x2_sbox | t5] ^ HEAP[x3_sbox | tA] ^ HEAP[sbox | tF] ^ RC1;
15445 s2 = HEAP[sbox | t0] ^ HEAP[sbox | t5] ^ HEAP[x2_sbox | tA] ^ HEAP[x3_sbox | tF] ^ RC2;
15446 s3 = HEAP[x3_sbox | t0] ^ HEAP[sbox | t5] ^ HEAP[sbox | tA] ^ HEAP[x2_sbox | tF] ^ RC3;
15447 s4 = HEAP[x2_sbox | t4] ^ HEAP[x3_sbox | t9] ^ HEAP[sbox | tE] ^ HEAP[sbox | t3] ^ RC4;
15448 s5 = HEAP[sbox | t4] ^ HEAP[x2_sbox | t9] ^ HEAP[x3_sbox | tE] ^ HEAP[sbox | t3] ^ RC5;
15449 s6 = HEAP[sbox | t4] ^ HEAP[sbox | t9] ^ HEAP[x2_sbox | tE] ^ HEAP[x3_sbox | t3] ^ RC6;
15450 s7 = HEAP[x3_sbox | t4] ^ HEAP[sbox | t9] ^ HEAP[sbox | tE] ^ HEAP[x2_sbox | t3] ^ RC7;
15451 s8 = HEAP[x2_sbox | t8] ^ HEAP[x3_sbox | tD] ^ HEAP[sbox | t2] ^ HEAP[sbox | t7] ^ RC8;
15452 s9 = HEAP[sbox | t8] ^ HEAP[x2_sbox | tD] ^ HEAP[x3_sbox | t2] ^ HEAP[sbox | t7] ^ RC9;
15453 sA = HEAP[sbox | t8] ^ HEAP[sbox | tD] ^ HEAP[x2_sbox | t2] ^ HEAP[x3_sbox | t7] ^ RCA;
15454 sB = HEAP[x3_sbox | t8] ^ HEAP[sbox | tD] ^ HEAP[sbox | t2] ^ HEAP[x2_sbox | t7] ^ RCB;
15455 sC = HEAP[x2_sbox | tC] ^ HEAP[x3_sbox | t1] ^ HEAP[sbox | t6] ^ HEAP[sbox | tB] ^ RCC;
15456 sD = HEAP[sbox | tC] ^ HEAP[x2_sbox | t1] ^ HEAP[x3_sbox | t6] ^ HEAP[sbox | tB] ^ RCD;
15457 sE = HEAP[sbox | tC] ^ HEAP[sbox | t1] ^ HEAP[x2_sbox | t6] ^ HEAP[x3_sbox | tB] ^ RCE;
15458 sF = HEAP[x3_sbox | tC] ^ HEAP[sbox | t1] ^ HEAP[sbox | t6] ^ HEAP[x2_sbox | tB] ^ RCF;
15459 t0 = HEAP[x2_sbox | s0] ^ HEAP[x3_sbox | s5] ^ HEAP[sbox | sA] ^ HEAP[sbox | sF] ^ RD0;
15460 t1 = HEAP[sbox | s0] ^ HEAP[x2_sbox | s5] ^ HEAP[x3_sbox | sA] ^ HEAP[sbox | sF] ^ RD1;
15461 t2 = HEAP[sbox | s0] ^ HEAP[sbox | s5] ^ HEAP[x2_sbox | sA] ^ HEAP[x3_sbox | sF] ^ RD2;
15462 t3 = HEAP[x3_sbox | s0] ^ HEAP[sbox | s5] ^ HEAP[sbox | sA] ^ HEAP[x2_sbox | sF] ^ RD3;
15463 t4 = HEAP[x2_sbox | s4] ^ HEAP[x3_sbox | s9] ^ HEAP[sbox | sE] ^ HEAP[sbox | s3] ^ RD4;
15464 t5 = HEAP[sbox | s4] ^ HEAP[x2_sbox | s9] ^ HEAP[x3_sbox | sE] ^ HEAP[sbox | s3] ^ RD5;
15465 t6 = HEAP[sbox | s4] ^ HEAP[sbox | s9] ^ HEAP[x2_sbox | sE] ^ HEAP[x3_sbox | s3] ^ RD6;
15466 t7 = HEAP[x3_sbox | s4] ^ HEAP[sbox | s9] ^ HEAP[sbox | sE] ^ HEAP[x2_sbox | s3] ^ RD7;
15467 t8 = HEAP[x2_sbox | s8] ^ HEAP[x3_sbox | sD] ^ HEAP[sbox | s2] ^ HEAP[sbox | s7] ^ RD8;
15468 t9 = HEAP[sbox | s8] ^ HEAP[x2_sbox | sD] ^ HEAP[x3_sbox | s2] ^ HEAP[sbox | s7] ^ RD9;
15469 tA = HEAP[sbox | s8] ^ HEAP[sbox | sD] ^ HEAP[x2_sbox | s2] ^ HEAP[x3_sbox | s7] ^ RDA;
15470 tB = HEAP[x3_sbox | s8] ^ HEAP[sbox | sD] ^ HEAP[sbox | s2] ^ HEAP[x2_sbox | s7] ^ RDB;
15471 tC = HEAP[x2_sbox | sC] ^ HEAP[x3_sbox | s1] ^ HEAP[sbox | s6] ^ HEAP[sbox | sB] ^ RDC;
15472 tD = HEAP[sbox | sC] ^ HEAP[x2_sbox | s1] ^ HEAP[x3_sbox | s6] ^ HEAP[sbox | sB] ^ RDD;
15473 tE = HEAP[sbox | sC] ^ HEAP[sbox | s1] ^ HEAP[x2_sbox | s6] ^ HEAP[x3_sbox | sB] ^ RDE;
15474 tF = HEAP[x3_sbox | sC] ^ HEAP[sbox | s1] ^ HEAP[sbox | s6] ^ HEAP[x2_sbox | sB] ^ RDF;
15475 S0 = HEAP[sbox | t0] ^ RE0;
15476 S1 = HEAP[sbox | t5] ^ RE1;
15477 S2 = HEAP[sbox | tA] ^ RE2;
15478 S3 = HEAP[sbox | tF] ^ RE3;
15479 S4 = HEAP[sbox | t4] ^ RE4;
15480 S5 = HEAP[sbox | t9] ^ RE5;
15481 S6 = HEAP[sbox | tE] ^ RE6;
15482 S7 = HEAP[sbox | t3] ^ RE7;
15483 S8 = HEAP[sbox | t8] ^ RE8;
15484 S9 = HEAP[sbox | tD] ^ RE9;
15485 SA = HEAP[sbox | t2] ^ REA;
15486 SB = HEAP[sbox | t7] ^ REB;
15487 SC = HEAP[sbox | tC] ^ REC;
15488 SD = HEAP[sbox | t1] ^ RED;
15489 SE = HEAP[sbox | t6] ^ REE;
15490 SF = HEAP[sbox | tB] ^ REF;
15492 function _decrypt(s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF) {
15509 var t0 =
0, t1 =
0, t2 =
0, t3 =
0, t4 =
0, t5 =
0, t6 =
0, t7 =
0, t8 =
0, t9 =
0, tA =
0, tB =
0, tC =
0, tD =
0, tE =
0, tF =
0, inv_sbox =
256, x9 =
1024, xB =
1280, xD =
1536, xE =
1792;
15510 if ((keySize |
0) ==
32) {
15511 t0 = HEAP[inv_sbox | s0 ^ RE0] ^ RD0;
15512 t1 = HEAP[inv_sbox | sD ^ RED] ^ RD1;
15513 t2 = HEAP[inv_sbox | sA ^ REA] ^ RD2;
15514 t3 = HEAP[inv_sbox | s7 ^ RE7] ^ RD3;
15515 t4 = HEAP[inv_sbox | s4 ^ RE4] ^ RD4;
15516 t5 = HEAP[inv_sbox | s1 ^ RE1] ^ RD5;
15517 t6 = HEAP[inv_sbox | sE ^ REE] ^ RD6;
15518 t7 = HEAP[inv_sbox | sB ^ REB] ^ RD7;
15519 t8 = HEAP[inv_sbox | s8 ^ RE8] ^ RD8;
15520 t9 = HEAP[inv_sbox | s5 ^ RE5] ^ RD9;
15521 tA = HEAP[inv_sbox | s2 ^ RE2] ^ RDA;
15522 tB = HEAP[inv_sbox | sF ^ REF] ^ RDB;
15523 tC = HEAP[inv_sbox | sC ^ REC] ^ RDC;
15524 tD = HEAP[inv_sbox | s9 ^ RE9] ^ RDD;
15525 tE = HEAP[inv_sbox | s6 ^ RE6] ^ RDE;
15526 tF = HEAP[inv_sbox | s3 ^ RE3] ^ RDF;
15527 s0 = HEAP[xE | t0] ^ HEAP[xB | t1] ^ HEAP[xD | t2] ^ HEAP[x9 | t3];
15528 s1 = HEAP[x9 | tC] ^ HEAP[xE | tD] ^ HEAP[xB | tE] ^ HEAP[xD | tF];
15529 s2 = HEAP[xD | t8] ^ HEAP[x9 | t9] ^ HEAP[xE | tA] ^ HEAP[xB | tB];
15530 s3 = HEAP[xB | t4] ^ HEAP[xD | t5] ^ HEAP[x9 | t6] ^ HEAP[xE | t7];
15531 s4 = HEAP[xE | t4] ^ HEAP[xB | t5] ^ HEAP[xD | t6] ^ HEAP[x9 | t7];
15532 s5 = HEAP[x9 | t0] ^ HEAP[xE | t1] ^ HEAP[xB | t2] ^ HEAP[xD | t3];
15533 s6 = HEAP[xD | tC] ^ HEAP[x9 | tD] ^ HEAP[xE | tE] ^ HEAP[xB | tF];
15534 s7 = HEAP[xB | t8] ^ HEAP[xD | t9] ^ HEAP[x9 | tA] ^ HEAP[xE | tB];
15535 s8 = HEAP[xE | t8] ^ HEAP[xB | t9] ^ HEAP[xD | tA] ^ HEAP[x9 | tB];
15536 s9 = HEAP[x9 | t4] ^ HEAP[xE | t5] ^ HEAP[xB | t6] ^ HEAP[xD | t7];
15537 sA = HEAP[xD | t0] ^ HEAP[x9 | t1] ^ HEAP[xE | t2] ^ HEAP[xB | t3];
15538 sB = HEAP[xB | tC] ^ HEAP[xD | tD] ^ HEAP[x9 | tE] ^ HEAP[xE | tF];
15539 sC = HEAP[xE | tC] ^ HEAP[xB | tD] ^ HEAP[xD | tE] ^ HEAP[x9 | tF];
15540 sD = HEAP[x9 | t8] ^ HEAP[xE | t9] ^ HEAP[xB | tA] ^ HEAP[xD | tB];
15541 sE = HEAP[xD | t4] ^ HEAP[x9 | t5] ^ HEAP[xE | t6] ^ HEAP[xB | t7];
15542 sF = HEAP[xB | t0] ^ HEAP[xD | t1] ^ HEAP[x9 | t2] ^ HEAP[xE | t3];
15543 t0 = HEAP[inv_sbox | s0] ^ RC0;
15544 t1 = HEAP[inv_sbox | s1] ^ RC1;
15545 t2 = HEAP[inv_sbox | s2] ^ RC2;
15546 t3 = HEAP[inv_sbox | s3] ^ RC3;
15547 t4 = HEAP[inv_sbox | s4] ^ RC4;
15548 t5 = HEAP[inv_sbox | s5] ^ RC5;
15549 t6 = HEAP[inv_sbox | s6] ^ RC6;
15550 t7 = HEAP[inv_sbox | s7] ^ RC7;
15551 t8 = HEAP[inv_sbox | s8] ^ RC8;
15552 t9 = HEAP[inv_sbox | s9] ^ RC9;
15553 tA = HEAP[inv_sbox | sA] ^ RCA;
15554 tB = HEAP[inv_sbox | sB] ^ RCB;
15555 tC = HEAP[inv_sbox | sC] ^ RCC;
15556 tD = HEAP[inv_sbox | sD] ^ RCD;
15557 tE = HEAP[inv_sbox | sE] ^ RCE;
15558 tF = HEAP[inv_sbox | sF] ^ RCF;
15559 s0 = HEAP[xE | t0] ^ HEAP[xB | t1] ^ HEAP[xD | t2] ^ HEAP[x9 | t3];
15560 s1 = HEAP[x9 | tC] ^ HEAP[xE | tD] ^ HEAP[xB | tE] ^ HEAP[xD | tF];
15561 s2 = HEAP[xD | t8] ^ HEAP[x9 | t9] ^ HEAP[xE | tA] ^ HEAP[xB | tB];
15562 s3 = HEAP[xB | t4] ^ HEAP[xD | t5] ^ HEAP[x9 | t6] ^ HEAP[xE | t7];
15563 s4 = HEAP[xE | t4] ^ HEAP[xB | t5] ^ HEAP[xD | t6] ^ HEAP[x9 | t7];
15564 s5 = HEAP[x9 | t0] ^ HEAP[xE | t1] ^ HEAP[xB | t2] ^ HEAP[xD | t3];
15565 s6 = HEAP[xD | tC] ^ HEAP[x9 | tD] ^ HEAP[xE | tE] ^ HEAP[xB | tF];
15566 s7 = HEAP[xB | t8] ^ HEAP[xD | t9] ^ HEAP[x9 | tA] ^ HEAP[xE | tB];
15567 s8 = HEAP[xE | t8] ^ HEAP[xB | t9] ^ HEAP[xD | tA] ^ HEAP[x9 | tB];
15568 s9 = HEAP[x9 | t4] ^ HEAP[xE | t5] ^ HEAP[xB | t6] ^ HEAP[xD | t7];
15569 sA = HEAP[xD | t0] ^ HEAP[x9 | t1] ^ HEAP[xE | t2] ^ HEAP[xB | t3];
15570 sB = HEAP[xB | tC] ^ HEAP[xD | tD] ^ HEAP[x9 | tE] ^ HEAP[xE | tF];
15571 sC = HEAP[xE | tC] ^ HEAP[xB | tD] ^ HEAP[xD | tE] ^ HEAP[x9 | tF];
15572 sD = HEAP[x9 | t8] ^ HEAP[xE | t9] ^ HEAP[xB | tA] ^ HEAP[xD | tB];
15573 sE = HEAP[xD | t4] ^ HEAP[x9 | t5] ^ HEAP[xE | t6] ^ HEAP[xB | t7];
15574 sF = HEAP[xB | t0] ^ HEAP[xD | t1] ^ HEAP[x9 | t2] ^ HEAP[xE | t3];
15575 t0 = HEAP[inv_sbox | s0] ^ RB0;
15576 t1 = HEAP[inv_sbox | s1] ^ RB1;
15577 t2 = HEAP[inv_sbox | s2] ^ RB2;
15578 t3 = HEAP[inv_sbox | s3] ^ RB3;
15579 t4 = HEAP[inv_sbox | s4] ^ RB4;
15580 t5 = HEAP[inv_sbox | s5] ^ RB5;
15581 t6 = HEAP[inv_sbox | s6] ^ RB6;
15582 t7 = HEAP[inv_sbox | s7] ^ RB7;
15583 t8 = HEAP[inv_sbox | s8] ^ RB8;
15584 t9 = HEAP[inv_sbox | s9] ^ RB9;
15585 tA = HEAP[inv_sbox | sA] ^ RBA;
15586 tB = HEAP[inv_sbox | sB] ^ RBB;
15587 tC = HEAP[inv_sbox | sC] ^ RBC;
15588 tD = HEAP[inv_sbox | sD] ^ RBD;
15589 tE = HEAP[inv_sbox | sE] ^ RBE;
15590 tF = HEAP[inv_sbox | sF] ^ RBF;
15591 s0 = HEAP[xE | t0] ^ HEAP[xB | t1] ^ HEAP[xD | t2] ^ HEAP[x9 | t3];
15592 s1 = HEAP[x9 | tC] ^ HEAP[xE | tD] ^ HEAP[xB | tE] ^ HEAP[xD | tF];
15593 s2 = HEAP[xD | t8] ^ HEAP[x9 | t9] ^ HEAP[xE | tA] ^ HEAP[xB | tB];
15594 s3 = HEAP[xB | t4] ^ HEAP[xD | t5] ^ HEAP[x9 | t6] ^ HEAP[xE | t7];
15595 s4 = HEAP[xE | t4] ^ HEAP[xB | t5] ^ HEAP[xD | t6] ^ HEAP[x9 | t7];
15596 s5 = HEAP[x9 | t0] ^ HEAP[xE | t1] ^ HEAP[xB | t2] ^ HEAP[xD | t3];
15597 s6 = HEAP[xD | tC] ^ HEAP[x9 | tD] ^ HEAP[xE | tE] ^ HEAP[xB | tF];
15598 s7 = HEAP[xB | t8] ^ HEAP[xD | t9] ^ HEAP[x9 | tA] ^ HEAP[xE | tB];
15599 s8 = HEAP[xE | t8] ^ HEAP[xB | t9] ^ HEAP[xD | tA] ^ HEAP[x9 | tB];
15600 s9 = HEAP[x9 | t4] ^ HEAP[xE | t5] ^ HEAP[xB | t6] ^ HEAP[xD | t7];
15601 sA = HEAP[xD | t0] ^ HEAP[x9 | t1] ^ HEAP[xE | t2] ^ HEAP[xB | t3];
15602 sB = HEAP[xB | tC] ^ HEAP[xD | tD] ^ HEAP[x9 | tE] ^ HEAP[xE | tF];
15603 sC = HEAP[xE | tC] ^ HEAP[xB | tD] ^ HEAP[xD | tE] ^ HEAP[x9 | tF];
15604 sD = HEAP[x9 | t8] ^ HEAP[xE | t9] ^ HEAP[xB | tA] ^ HEAP[xD | tB];
15605 sE = HEAP[xD | t4] ^ HEAP[x9 | t5] ^ HEAP[xE | t6] ^ HEAP[xB | t7];
15606 sF = HEAP[xB | t0] ^ HEAP[xD | t1] ^ HEAP[x9 | t2] ^ HEAP[xE | t3];
15607 t0 = HEAP[inv_sbox | s0] ^ RA0;
15608 t1 = HEAP[inv_sbox | s1] ^ RA1;
15609 t2 = HEAP[inv_sbox | s2] ^ RA2;
15610 t3 = HEAP[inv_sbox | s3] ^ RA3;
15611 t4 = HEAP[inv_sbox | s4] ^ RA4;
15612 t5 = HEAP[inv_sbox | s5] ^ RA5;
15613 t6 = HEAP[inv_sbox | s6] ^ RA6;
15614 t7 = HEAP[inv_sbox | s7] ^ RA7;
15615 t8 = HEAP[inv_sbox | s8] ^ RA8;
15616 t9 = HEAP[inv_sbox | s9] ^ RA9;
15617 tA = HEAP[inv_sbox | sA] ^ RAA;
15618 tB = HEAP[inv_sbox | sB] ^ RAB;
15619 tC = HEAP[inv_sbox | sC] ^ RAC;
15620 tD = HEAP[inv_sbox | sD] ^ RAD;
15621 tE = HEAP[inv_sbox | sE] ^ RAE;
15622 tF = HEAP[inv_sbox | sF] ^ RAF;
15623 s0 = HEAP[xE | t0] ^ HEAP[xB | t1] ^ HEAP[xD | t2] ^ HEAP[x9 | t3];
15624 s1 = HEAP[x9 | tC] ^ HEAP[xE | tD] ^ HEAP[xB | tE] ^ HEAP[xD | tF];
15625 s2 = HEAP[xD | t8] ^ HEAP[x9 | t9] ^ HEAP[xE | tA] ^ HEAP[xB | tB];
15626 s3 = HEAP[xB | t4] ^ HEAP[xD | t5] ^ HEAP[x9 | t6] ^ HEAP[xE | t7];
15627 s4 = HEAP[xE | t4] ^ HEAP[xB | t5] ^ HEAP[xD | t6] ^ HEAP[x9 | t7];
15628 s5 = HEAP[x9 | t0] ^ HEAP[xE | t1] ^ HEAP[xB | t2] ^ HEAP[xD | t3];
15629 s6 = HEAP[xD | tC] ^ HEAP[x9 | tD] ^ HEAP[xE | tE] ^ HEAP[xB | tF];
15630 s7 = HEAP[xB | t8] ^ HEAP[xD | t9] ^ HEAP[x9 | tA] ^ HEAP[xE | tB];
15631 s8 = HEAP[xE | t8] ^ HEAP[xB | t9] ^ HEAP[xD | tA] ^ HEAP[x9 | tB];
15632 s9 = HEAP[x9 | t4] ^ HEAP[xE | t5] ^ HEAP[xB | t6] ^ HEAP[xD | t7];
15633 sA = HEAP[xD | t0] ^ HEAP[x9 | t1] ^ HEAP[xE | t2] ^ HEAP[xB | t3];
15634 sB = HEAP[xB | tC] ^ HEAP[xD | tD] ^ HEAP[x9 | tE] ^ HEAP[xE | tF];
15635 sC = HEAP[xE | tC] ^ HEAP[xB | tD] ^ HEAP[xD | tE] ^ HEAP[x9 | tF];
15636 sD = HEAP[x9 | t8] ^ HEAP[xE | t9] ^ HEAP[xB | tA] ^ HEAP[xD | tB];
15637 sE = HEAP[xD | t4] ^ HEAP[x9 | t5] ^ HEAP[xE | t6] ^ HEAP[xB | t7];
15638 sF = HEAP[xB | t0] ^ HEAP[xD | t1] ^ HEAP[x9 | t2] ^ HEAP[xE | t3];
15639 t0 = HEAP[inv_sbox | s0] ^ R90;
15640 t1 = HEAP[inv_sbox | s1] ^ R91;
15641 t2 = HEAP[inv_sbox | s2] ^ R92;
15642 t3 = HEAP[inv_sbox | s3] ^ R93;
15643 t4 = HEAP[inv_sbox | s4] ^ R94;
15644 t5 = HEAP[inv_sbox | s5] ^ R95;
15645 t6 = HEAP[inv_sbox | s6] ^ R96;
15646 t7 = HEAP[inv_sbox | s7] ^ R97;
15647 t8 = HEAP[inv_sbox | s8] ^ R98;
15648 t9 = HEAP[inv_sbox | s9] ^ R99;
15649 tA = HEAP[inv_sbox | sA] ^ R9A;
15650 tB = HEAP[inv_sbox | sB] ^ R9B;
15651 tC = HEAP[inv_sbox | sC] ^ R9C;
15652 tD = HEAP[inv_sbox | sD] ^ R9D;
15653 tE = HEAP[inv_sbox | sE] ^ R9E;
15654 tF = HEAP[inv_sbox | sF] ^ R9F;
15656 t0 = HEAP[inv_sbox | s0 ^ RA0] ^ R90;
15657 t1 = HEAP[inv_sbox | sD ^ RAD] ^ R91;
15658 t2 = HEAP[inv_sbox | sA ^ RAA] ^ R92;
15659 t3 = HEAP[inv_sbox | s7 ^ RA7] ^ R93;
15660 t4 = HEAP[inv_sbox | s4 ^ RA4] ^ R94;
15661 t5 = HEAP[inv_sbox | s1 ^ RA1] ^ R95;
15662 t6 = HEAP[inv_sbox | sE ^ RAE] ^ R96;
15663 t7 = HEAP[inv_sbox | sB ^ RAB] ^ R97;
15664 t8 = HEAP[inv_sbox | s8 ^ RA8] ^ R98;
15665 t9 = HEAP[inv_sbox | s5 ^ RA5] ^ R99;
15666 tA = HEAP[inv_sbox | s2 ^ RA2] ^ R9A;
15667 tB = HEAP[inv_sbox | sF ^ RAF] ^ R9B;
15668 tC = HEAP[inv_sbox | sC ^ RAC] ^ R9C;
15669 tD = HEAP[inv_sbox | s9 ^ RA9] ^ R9D;
15670 tE = HEAP[inv_sbox | s6 ^ RA6] ^ R9E;
15671 tF = HEAP[inv_sbox | s3 ^ RA3] ^ R9F;
15673 s0 = HEAP[xE | t0] ^ HEAP[xB | t1] ^ HEAP[xD | t2] ^ HEAP[x9 | t3];
15674 s1 = HEAP[x9 | tC] ^ HEAP[xE | tD] ^ HEAP[xB | tE] ^ HEAP[xD | tF];
15675 s2 = HEAP[xD | t8] ^ HEAP[x9 | t9] ^ HEAP[xE | tA] ^ HEAP[xB | tB];
15676 s3 = HEAP[xB | t4] ^ HEAP[xD | t5] ^ HEAP[x9 | t6] ^ HEAP[xE | t7];
15677 s4 = HEAP[xE | t4] ^ HEAP[xB | t5] ^ HEAP[xD | t6] ^ HEAP[x9 | t7];
15678 s5 = HEAP[x9 | t0] ^ HEAP[xE | t1] ^ HEAP[xB | t2] ^ HEAP[xD | t3];
15679 s6 = HEAP[xD | tC] ^ HEAP[x9 | tD] ^ HEAP[xE | tE] ^ HEAP[xB | tF];
15680 s7 = HEAP[xB | t8] ^ HEAP[xD | t9] ^ HEAP[x9 | tA] ^ HEAP[xE | tB];
15681 s8 = HEAP[xE | t8] ^ HEAP[xB | t9] ^ HEAP[xD | tA] ^ HEAP[x9 | tB];
15682 s9 = HEAP[x9 | t4] ^ HEAP[xE | t5] ^ HEAP[xB | t6] ^ HEAP[xD | t7];
15683 sA = HEAP[xD | t0] ^ HEAP[x9 | t1] ^ HEAP[xE | t2] ^ HEAP[xB | t3];
15684 sB = HEAP[xB | tC] ^ HEAP[xD | tD] ^ HEAP[x9 | tE] ^ HEAP[xE | tF];
15685 sC = HEAP[xE | tC] ^ HEAP[xB | tD] ^ HEAP[xD | tE] ^ HEAP[x9 | tF];
15686 sD = HEAP[x9 | t8] ^ HEAP[xE | t9] ^ HEAP[xB | tA] ^ HEAP[xD | tB];
15687 sE = HEAP[xD | t4] ^ HEAP[x9 | t5] ^ HEAP[xE | t6] ^ HEAP[xB | t7];
15688 sF = HEAP[xB | t0] ^ HEAP[xD | t1] ^ HEAP[x9 | t2] ^ HEAP[xE | t3];
15689 t0 = HEAP[inv_sbox | s0] ^ R80;
15690 t1 = HEAP[inv_sbox | s1] ^ R81;
15691 t2 = HEAP[inv_sbox | s2] ^ R82;
15692 t3 = HEAP[inv_sbox | s3] ^ R83;
15693 t4 = HEAP[inv_sbox | s4] ^ R84;
15694 t5 = HEAP[inv_sbox | s5] ^ R85;
15695 t6 = HEAP[inv_sbox | s6] ^ R86;
15696 t7 = HEAP[inv_sbox | s7] ^ R87;
15697 t8 = HEAP[inv_sbox | s8] ^ R88;
15698 t9 = HEAP[inv_sbox | s9] ^ R89;
15699 tA = HEAP[inv_sbox | sA] ^ R8A;
15700 tB = HEAP[inv_sbox | sB] ^ R8B;
15701 tC = HEAP[inv_sbox | sC] ^ R8C;
15702 tD = HEAP[inv_sbox | sD] ^ R8D;
15703 tE = HEAP[inv_sbox | sE] ^ R8E;
15704 tF = HEAP[inv_sbox | sF] ^ R8F;
15705 s0 = HEAP[xE | t0] ^ HEAP[xB | t1] ^ HEAP[xD | t2] ^ HEAP[x9 | t3];
15706 s1 = HEAP[x9 | tC] ^ HEAP[xE | tD] ^ HEAP[xB | tE] ^ HEAP[xD | tF];
15707 s2 = HEAP[xD | t8] ^ HEAP[x9 | t9] ^ HEAP[xE | tA] ^ HEAP[xB | tB];
15708 s3 = HEAP[xB | t4] ^ HEAP[xD | t5] ^ HEAP[x9 | t6] ^ HEAP[xE | t7];
15709 s4 = HEAP[xE | t4] ^ HEAP[xB | t5] ^ HEAP[xD | t6] ^ HEAP[x9 | t7];
15710 s5 = HEAP[x9 | t0] ^ HEAP[xE | t1] ^ HEAP[xB | t2] ^ HEAP[xD | t3];
15711 s6 = HEAP[xD | tC] ^ HEAP[x9 | tD] ^ HEAP[xE | tE] ^ HEAP[xB | tF];
15712 s7 = HEAP[xB | t8] ^ HEAP[xD | t9] ^ HEAP[x9 | tA] ^ HEAP[xE | tB];
15713 s8 = HEAP[xE | t8] ^ HEAP[xB | t9] ^ HEAP[xD | tA] ^ HEAP[x9 | tB];
15714 s9 = HEAP[x9 | t4] ^ HEAP[xE | t5] ^ HEAP[xB | t6] ^ HEAP[xD | t7];
15715 sA = HEAP[xD | t0] ^ HEAP[x9 | t1] ^ HEAP[xE | t2] ^ HEAP[xB | t3];
15716 sB = HEAP[xB | tC] ^ HEAP[xD | tD] ^ HEAP[x9 | tE] ^ HEAP[xE | tF];
15717 sC = HEAP[xE | tC] ^ HEAP[xB | tD] ^ HEAP[xD | tE] ^ HEAP[x9 | tF];
15718 sD = HEAP[x9 | t8] ^ HEAP[xE | t9] ^ HEAP[xB | tA] ^ HEAP[xD | tB];
15719 sE = HEAP[xD | t4] ^ HEAP[x9 | t5] ^ HEAP[xE | t6] ^ HEAP[xB | t7];
15720 sF = HEAP[xB | t0] ^ HEAP[xD | t1] ^ HEAP[x9 | t2] ^ HEAP[xE | t3];
15721 t0 = HEAP[inv_sbox | s0] ^ R70;
15722 t1 = HEAP[inv_sbox | s1] ^ R71;
15723 t2 = HEAP[inv_sbox | s2] ^ R72;
15724 t3 = HEAP[inv_sbox | s3] ^ R73;
15725 t4 = HEAP[inv_sbox | s4] ^ R74;
15726 t5 = HEAP[inv_sbox | s5] ^ R75;
15727 t6 = HEAP[inv_sbox | s6] ^ R76;
15728 t7 = HEAP[inv_sbox | s7] ^ R77;
15729 t8 = HEAP[inv_sbox | s8] ^ R78;
15730 t9 = HEAP[inv_sbox | s9] ^ R79;
15731 tA = HEAP[inv_sbox | sA] ^ R7A;
15732 tB = HEAP[inv_sbox | sB] ^ R7B;
15733 tC = HEAP[inv_sbox | sC] ^ R7C;
15734 tD = HEAP[inv_sbox | sD] ^ R7D;
15735 tE = HEAP[inv_sbox | sE] ^ R7E;
15736 tF = HEAP[inv_sbox | sF] ^ R7F;
15737 s0 = HEAP[xE | t0] ^ HEAP[xB | t1] ^ HEAP[xD | t2] ^ HEAP[x9 | t3];
15738 s1 = HEAP[x9 | tC] ^ HEAP[xE | tD] ^ HEAP[xB | tE] ^ HEAP[xD | tF];
15739 s2 = HEAP[xD | t8] ^ HEAP[x9 | t9] ^ HEAP[xE | tA] ^ HEAP[xB | tB];
15740 s3 = HEAP[xB | t4] ^ HEAP[xD | t5] ^ HEAP[x9 | t6] ^ HEAP[xE | t7];
15741 s4 = HEAP[xE | t4] ^ HEAP[xB | t5] ^ HEAP[xD | t6] ^ HEAP[x9 | t7];
15742 s5 = HEAP[x9 | t0] ^ HEAP[xE | t1] ^ HEAP[xB | t2] ^ HEAP[xD | t3];
15743 s6 = HEAP[xD | tC] ^ HEAP[x9 | tD] ^ HEAP[xE | tE] ^ HEAP[xB | tF];
15744 s7 = HEAP[xB | t8] ^ HEAP[xD | t9] ^ HEAP[x9 | tA] ^ HEAP[xE | tB];
15745 s8 = HEAP[xE | t8] ^ HEAP[xB | t9] ^ HEAP[xD | tA] ^ HEAP[x9 | tB];
15746 s9 = HEAP[x9 | t4] ^ HEAP[xE | t5] ^ HEAP[xB | t6] ^ HEAP[xD | t7];
15747 sA = HEAP[xD | t0] ^ HEAP[x9 | t1] ^ HEAP[xE | t2] ^ HEAP[xB | t3];
15748 sB = HEAP[xB | tC] ^ HEAP[xD | tD] ^ HEAP[x9 | tE] ^ HEAP[xE | tF];
15749 sC = HEAP[xE | tC] ^ HEAP[xB | tD] ^ HEAP[xD | tE] ^ HEAP[x9 | tF];
15750 sD = HEAP[x9 | t8] ^ HEAP[xE | t9] ^ HEAP[xB | tA] ^ HEAP[xD | tB];
15751 sE = HEAP[xD | t4] ^ HEAP[x9 | t5] ^ HEAP[xE | t6] ^ HEAP[xB | t7];
15752 sF = HEAP[xB | t0] ^ HEAP[xD | t1] ^ HEAP[x9 | t2] ^ HEAP[xE | t3];
15753 t0 = HEAP[inv_sbox | s0] ^ R60;
15754 t1 = HEAP[inv_sbox | s1] ^ R61;
15755 t2 = HEAP[inv_sbox | s2] ^ R62;
15756 t3 = HEAP[inv_sbox | s3] ^ R63;
15757 t4 = HEAP[inv_sbox | s4] ^ R64;
15758 t5 = HEAP[inv_sbox | s5] ^ R65;
15759 t6 = HEAP[inv_sbox | s6] ^ R66;
15760 t7 = HEAP[inv_sbox | s7] ^ R67;
15761 t8 = HEAP[inv_sbox | s8] ^ R68;
15762 t9 = HEAP[inv_sbox | s9] ^ R69;
15763 tA = HEAP[inv_sbox | sA] ^ R6A;
15764 tB = HEAP[inv_sbox | sB] ^ R6B;
15765 tC = HEAP[inv_sbox | sC] ^ R6C;
15766 tD = HEAP[inv_sbox | sD] ^ R6D;
15767 tE = HEAP[inv_sbox | sE] ^ R6E;
15768 tF = HEAP[inv_sbox | sF] ^ R6F;
15769 s0 = HEAP[xE | t0] ^ HEAP[xB | t1] ^ HEAP[xD | t2] ^ HEAP[x9 | t3];
15770 s1 = HEAP[x9 | tC] ^ HEAP[xE | tD] ^ HEAP[xB | tE] ^ HEAP[xD | tF];
15771 s2 = HEAP[xD | t8] ^ HEAP[x9 | t9] ^ HEAP[xE | tA] ^ HEAP[xB | tB];
15772 s3 = HEAP[xB | t4] ^ HEAP[xD | t5] ^ HEAP[x9 | t6] ^ HEAP[xE | t7];
15773 s4 = HEAP[xE | t4] ^ HEAP[xB | t5] ^ HEAP[xD | t6] ^ HEAP[x9 | t7];
15774 s5 = HEAP[x9 | t0] ^ HEAP[xE | t1] ^ HEAP[xB | t2] ^ HEAP[xD | t3];
15775 s6 = HEAP[xD | tC] ^ HEAP[x9 | tD] ^ HEAP[xE | tE] ^ HEAP[xB | tF];
15776 s7 = HEAP[xB | t8] ^ HEAP[xD | t9] ^ HEAP[x9 | tA] ^ HEAP[xE | tB];
15777 s8 = HEAP[xE | t8] ^ HEAP[xB | t9] ^ HEAP[xD | tA] ^ HEAP[x9 | tB];
15778 s9 = HEAP[x9 | t4] ^ HEAP[xE | t5] ^ HEAP[xB | t6] ^ HEAP[xD | t7];
15779 sA = HEAP[xD | t0] ^ HEAP[x9 | t1] ^ HEAP[xE | t2] ^ HEAP[xB | t3];
15780 sB = HEAP[xB | tC] ^ HEAP[xD | tD] ^ HEAP[x9 | tE] ^ HEAP[xE | tF];
15781 sC = HEAP[xE | tC] ^ HEAP[xB | tD] ^ HEAP[xD | tE] ^ HEAP[x9 | tF];
15782 sD = HEAP[x9 | t8] ^ HEAP[xE | t9] ^ HEAP[xB | tA] ^ HEAP[xD | tB];
15783 sE = HEAP[xD | t4] ^ HEAP[x9 | t5] ^ HEAP[xE | t6] ^ HEAP[xB | t7];
15784 sF = HEAP[xB | t0] ^ HEAP[xD | t1] ^ HEAP[x9 | t2] ^ HEAP[xE | t3];
15785 t0 = HEAP[inv_sbox | s0] ^ R50;
15786 t1 = HEAP[inv_sbox | s1] ^ R51;
15787 t2 = HEAP[inv_sbox | s2] ^ R52;
15788 t3 = HEAP[inv_sbox | s3] ^ R53;
15789 t4 = HEAP[inv_sbox | s4] ^ R54;
15790 t5 = HEAP[inv_sbox | s5] ^ R55;
15791 t6 = HEAP[inv_sbox | s6] ^ R56;
15792 t7 = HEAP[inv_sbox | s7] ^ R57;
15793 t8 = HEAP[inv_sbox | s8] ^ R58;
15794 t9 = HEAP[inv_sbox | s9] ^ R59;
15795 tA = HEAP[inv_sbox | sA] ^ R5A;
15796 tB = HEAP[inv_sbox | sB] ^ R5B;
15797 tC = HEAP[inv_sbox | sC] ^ R5C;
15798 tD = HEAP[inv_sbox | sD] ^ R5D;
15799 tE = HEAP[inv_sbox | sE] ^ R5E;
15800 tF = HEAP[inv_sbox | sF] ^ R5F;
15801 s0 = HEAP[xE | t0] ^ HEAP[xB | t1] ^ HEAP[xD | t2] ^ HEAP[x9 | t3];
15802 s1 = HEAP[x9 | tC] ^ HEAP[xE | tD] ^ HEAP[xB | tE] ^ HEAP[xD | tF];
15803 s2 = HEAP[xD | t8] ^ HEAP[x9 | t9] ^ HEAP[xE | tA] ^ HEAP[xB | tB];
15804 s3 = HEAP[xB | t4] ^ HEAP[xD | t5] ^ HEAP[x9 | t6] ^ HEAP[xE | t7];
15805 s4 = HEAP[xE | t4] ^ HEAP[xB | t5] ^ HEAP[xD | t6] ^ HEAP[x9 | t7];
15806 s5 = HEAP[x9 | t0] ^ HEAP[xE | t1] ^ HEAP[xB | t2] ^ HEAP[xD | t3];
15807 s6 = HEAP[xD | tC] ^ HEAP[x9 | tD] ^ HEAP[xE | tE] ^ HEAP[xB | tF];
15808 s7 = HEAP[xB | t8] ^ HEAP[xD | t9] ^ HEAP[x9 | tA] ^ HEAP[xE | tB];
15809 s8 = HEAP[xE | t8] ^ HEAP[xB | t9] ^ HEAP[xD | tA] ^ HEAP[x9 | tB];
15810 s9 = HEAP[x9 | t4] ^ HEAP[xE | t5] ^ HEAP[xB | t6] ^ HEAP[xD | t7];
15811 sA = HEAP[xD | t0] ^ HEAP[x9 | t1] ^ HEAP[xE | t2] ^ HEAP[xB | t3];
15812 sB = HEAP[xB | tC] ^ HEAP[xD | tD] ^ HEAP[x9 | tE] ^ HEAP[xE | tF];
15813 sC = HEAP[xE | tC] ^ HEAP[xB | tD] ^ HEAP[xD | tE] ^ HEAP[x9 | tF];
15814 sD = HEAP[x9 | t8] ^ HEAP[xE | t9] ^ HEAP[xB | tA] ^ HEAP[xD | tB];
15815 sE = HEAP[xD | t4] ^ HEAP[x9 | t5] ^ HEAP[xE | t6] ^ HEAP[xB | t7];
15816 sF = HEAP[xB | t0] ^ HEAP[xD | t1] ^ HEAP[x9 | t2] ^ HEAP[xE | t3];
15817 t0 = HEAP[inv_sbox | s0] ^ R40;
15818 t1 = HEAP[inv_sbox | s1] ^ R41;
15819 t2 = HEAP[inv_sbox | s2] ^ R42;
15820 t3 = HEAP[inv_sbox | s3] ^ R43;
15821 t4 = HEAP[inv_sbox | s4] ^ R44;
15822 t5 = HEAP[inv_sbox | s5] ^ R45;
15823 t6 = HEAP[inv_sbox | s6] ^ R46;
15824 t7 = HEAP[inv_sbox | s7] ^ R47;
15825 t8 = HEAP[inv_sbox | s8] ^ R48;
15826 t9 = HEAP[inv_sbox | s9] ^ R49;
15827 tA = HEAP[inv_sbox | sA] ^ R4A;
15828 tB = HEAP[inv_sbox | sB] ^ R4B;
15829 tC = HEAP[inv_sbox | sC] ^ R4C;
15830 tD = HEAP[inv_sbox | sD] ^ R4D;
15831 tE = HEAP[inv_sbox | sE] ^ R4E;
15832 tF = HEAP[inv_sbox | sF] ^ R4F;
15833 s0 = HEAP[xE | t0] ^ HEAP[xB | t1] ^ HEAP[xD | t2] ^ HEAP[x9 | t3];
15834 s1 = HEAP[x9 | tC] ^ HEAP[xE | tD] ^ HEAP[xB | tE] ^ HEAP[xD | tF];
15835 s2 = HEAP[xD | t8] ^ HEAP[x9 | t9] ^ HEAP[xE | tA] ^ HEAP[xB | tB];
15836 s3 = HEAP[xB | t4] ^ HEAP[xD | t5] ^ HEAP[x9 | t6] ^ HEAP[xE | t7];
15837 s4 = HEAP[xE | t4] ^ HEAP[xB | t5] ^ HEAP[xD | t6] ^ HEAP[x9 | t7];
15838 s5 = HEAP[x9 | t0] ^ HEAP[xE | t1] ^ HEAP[xB | t2] ^ HEAP[xD | t3];
15839 s6 = HEAP[xD | tC] ^ HEAP[x9 | tD] ^ HEAP[xE | tE] ^ HEAP[xB | tF];
15840 s7 = HEAP[xB | t8] ^ HEAP[xD | t9] ^ HEAP[x9 | tA] ^ HEAP[xE | tB];
15841 s8 = HEAP[xE | t8] ^ HEAP[xB | t9] ^ HEAP[xD | tA] ^ HEAP[x9 | tB];
15842 s9 = HEAP[x9 | t4] ^ HEAP[xE | t5] ^ HEAP[xB | t6] ^ HEAP[xD | t7];
15843 sA = HEAP[xD | t0] ^ HEAP[x9 | t1] ^ HEAP[xE | t2] ^ HEAP[xB | t3];
15844 sB = HEAP[xB | tC] ^ HEAP[xD | tD] ^ HEAP[x9 | tE] ^ HEAP[xE | tF];
15845 sC = HEAP[xE | tC] ^ HEAP[xB | tD] ^ HEAP[xD | tE] ^ HEAP[x9 | tF];
15846 sD = HEAP[x9 | t8] ^ HEAP[xE | t9] ^ HEAP[xB | tA] ^ HEAP[xD | tB];
15847 sE = HEAP[xD | t4] ^ HEAP[x9 | t5] ^ HEAP[xE | t6] ^ HEAP[xB | t7];
15848 sF = HEAP[xB | t0] ^ HEAP[xD | t1] ^ HEAP[x9 | t2] ^ HEAP[xE | t3];
15849 t0 = HEAP[inv_sbox | s0] ^ R30;
15850 t1 = HEAP[inv_sbox | s1] ^ R31;
15851 t2 = HEAP[inv_sbox | s2] ^ R32;
15852 t3 = HEAP[inv_sbox | s3] ^ R33;
15853 t4 = HEAP[inv_sbox | s4] ^ R34;
15854 t5 = HEAP[inv_sbox | s5] ^ R35;
15855 t6 = HEAP[inv_sbox | s6] ^ R36;
15856 t7 = HEAP[inv_sbox | s7] ^ R37;
15857 t8 = HEAP[inv_sbox | s8] ^ R38;
15858 t9 = HEAP[inv_sbox | s9] ^ R39;
15859 tA = HEAP[inv_sbox | sA] ^ R3A;
15860 tB = HEAP[inv_sbox | sB] ^ R3B;
15861 tC = HEAP[inv_sbox | sC] ^ R3C;
15862 tD = HEAP[inv_sbox | sD] ^ R3D;
15863 tE = HEAP[inv_sbox | sE] ^ R3E;
15864 tF = HEAP[inv_sbox | sF] ^ R3F;
15865 s0 = HEAP[xE | t0] ^ HEAP[xB | t1] ^ HEAP[xD | t2] ^ HEAP[x9 | t3];
15866 s1 = HEAP[x9 | tC] ^ HEAP[xE | tD] ^ HEAP[xB | tE] ^ HEAP[xD | tF];
15867 s2 = HEAP[xD | t8] ^ HEAP[x9 | t9] ^ HEAP[xE | tA] ^ HEAP[xB | tB];
15868 s3 = HEAP[xB | t4] ^ HEAP[xD | t5] ^ HEAP[x9 | t6] ^ HEAP[xE | t7];
15869 s4 = HEAP[xE | t4] ^ HEAP[xB | t5] ^ HEAP[xD | t6] ^ HEAP[x9 | t7];
15870 s5 = HEAP[x9 | t0] ^ HEAP[xE | t1] ^ HEAP[xB | t2] ^ HEAP[xD | t3];
15871 s6 = HEAP[xD | tC] ^ HEAP[x9 | tD] ^ HEAP[xE | tE] ^ HEAP[xB | tF];
15872 s7 = HEAP[xB | t8] ^ HEAP[xD | t9] ^ HEAP[x9 | tA] ^ HEAP[xE | tB];
15873 s8 = HEAP[xE | t8] ^ HEAP[xB | t9] ^ HEAP[xD | tA] ^ HEAP[x9 | tB];
15874 s9 = HEAP[x9 | t4] ^ HEAP[xE | t5] ^ HEAP[xB | t6] ^ HEAP[xD | t7];
15875 sA = HEAP[xD | t0] ^ HEAP[x9 | t1] ^ HEAP[xE | t2] ^ HEAP[xB | t3];
15876 sB = HEAP[xB | tC] ^ HEAP[xD | tD] ^ HEAP[x9 | tE] ^ HEAP[xE | tF];
15877 sC = HEAP[xE | tC] ^ HEAP[xB | tD] ^ HEAP[xD | tE] ^ HEAP[x9 | tF];
15878 sD = HEAP[x9 | t8] ^ HEAP[xE | t9] ^ HEAP[xB | tA] ^ HEAP[xD | tB];
15879 sE = HEAP[xD | t4] ^ HEAP[x9 | t5] ^ HEAP[xE | t6] ^ HEAP[xB | t7];
15880 sF = HEAP[xB | t0] ^ HEAP[xD | t1] ^ HEAP[x9 | t2] ^ HEAP[xE | t3];
15881 t0 = HEAP[inv_sbox | s0] ^ R20;
15882 t1 = HEAP[inv_sbox | s1] ^ R21;
15883 t2 = HEAP[inv_sbox | s2] ^ R22;
15884 t3 = HEAP[inv_sbox | s3] ^ R23;
15885 t4 = HEAP[inv_sbox | s4] ^ R24;
15886 t5 = HEAP[inv_sbox | s5] ^ R25;
15887 t6 = HEAP[inv_sbox | s6] ^ R26;
15888 t7 = HEAP[inv_sbox | s7] ^ R27;
15889 t8 = HEAP[inv_sbox | s8] ^ R28;
15890 t9 = HEAP[inv_sbox | s9] ^ R29;
15891 tA = HEAP[inv_sbox | sA] ^ R2A;
15892 tB = HEAP[inv_sbox | sB] ^ R2B;
15893 tC = HEAP[inv_sbox | sC] ^ R2C;
15894 tD = HEAP[inv_sbox | sD] ^ R2D;
15895 tE = HEAP[inv_sbox | sE] ^ R2E;
15896 tF = HEAP[inv_sbox | sF] ^ R2F;
15897 s0 = HEAP[xE | t0] ^ HEAP[xB | t1] ^ HEAP[xD | t2] ^ HEAP[x9 | t3];
15898 s1 = HEAP[x9 | tC] ^ HEAP[xE | tD] ^ HEAP[xB | tE] ^ HEAP[xD | tF];
15899 s2 = HEAP[xD | t8] ^ HEAP[x9 | t9] ^ HEAP[xE | tA] ^ HEAP[xB | tB];
15900 s3 = HEAP[xB | t4] ^ HEAP[xD | t5] ^ HEAP[x9 | t6] ^ HEAP[xE | t7];
15901 s4 = HEAP[xE | t4] ^ HEAP[xB | t5] ^ HEAP[xD | t6] ^ HEAP[x9 | t7];
15902 s5 = HEAP[x9 | t0] ^ HEAP[xE | t1] ^ HEAP[xB | t2] ^ HEAP[xD | t3];
15903 s6 = HEAP[xD | tC] ^ HEAP[x9 | tD] ^ HEAP[xE | tE] ^ HEAP[xB | tF];
15904 s7 = HEAP[xB | t8] ^ HEAP[xD | t9] ^ HEAP[x9 | tA] ^ HEAP[xE | tB];
15905 s8 = HEAP[xE | t8] ^ HEAP[xB | t9] ^ HEAP[xD | tA] ^ HEAP[x9 | tB];
15906 s9 = HEAP[x9 | t4] ^ HEAP[xE | t5] ^ HEAP[xB | t6] ^ HEAP[xD | t7];
15907 sA = HEAP[xD | t0] ^ HEAP[x9 | t1] ^ HEAP[xE | t2] ^ HEAP[xB | t3];
15908 sB = HEAP[xB | tC] ^ HEAP[xD | tD] ^ HEAP[x9 | tE] ^ HEAP[xE | tF];
15909 sC = HEAP[xE | tC] ^ HEAP[xB | tD] ^ HEAP[xD | tE] ^ HEAP[x9 | tF];
15910 sD = HEAP[x9 | t8] ^ HEAP[xE | t9] ^ HEAP[xB | tA] ^ HEAP[xD | tB];
15911 sE = HEAP[xD | t4] ^ HEAP[x9 | t5] ^ HEAP[xE | t6] ^ HEAP[xB | t7];
15912 sF = HEAP[xB | t0] ^ HEAP[xD | t1] ^ HEAP[x9 | t2] ^ HEAP[xE | t3];
15913 t0 = HEAP[inv_sbox | s0] ^ R10;
15914 t1 = HEAP[inv_sbox | s1] ^ R11;
15915 t2 = HEAP[inv_sbox | s2] ^ R12;
15916 t3 = HEAP[inv_sbox | s3] ^ R13;
15917 t4 = HEAP[inv_sbox | s4] ^ R14;
15918 t5 = HEAP[inv_sbox | s5] ^ R15;
15919 t6 = HEAP[inv_sbox | s6] ^ R16;
15920 t7 = HEAP[inv_sbox | s7] ^ R17;
15921 t8 = HEAP[inv_sbox | s8] ^ R18;
15922 t9 = HEAP[inv_sbox | s9] ^ R19;
15923 tA = HEAP[inv_sbox | sA] ^ R1A;
15924 tB = HEAP[inv_sbox | sB] ^ R1B;
15925 tC = HEAP[inv_sbox | sC] ^ R1C;
15926 tD = HEAP[inv_sbox | sD] ^ R1D;
15927 tE = HEAP[inv_sbox | sE] ^ R1E;
15928 tF = HEAP[inv_sbox | sF] ^ R1F;
15929 s0 = HEAP[xE | t0] ^ HEAP[xB | t1] ^ HEAP[xD | t2] ^ HEAP[x9 | t3];
15930 s1 = HEAP[x9 | tC] ^ HEAP[xE | tD] ^ HEAP[xB | tE] ^ HEAP[xD | tF];
15931 s2 = HEAP[xD | t8] ^ HEAP[x9 | t9] ^ HEAP[xE | tA] ^ HEAP[xB | tB];
15932 s3 = HEAP[xB | t4] ^ HEAP[xD | t5] ^ HEAP[x9 | t6] ^ HEAP[xE | t7];
15933 s4 = HEAP[xE | t4] ^ HEAP[xB | t5] ^ HEAP[xD | t6] ^ HEAP[x9 | t7];
15934 s5 = HEAP[x9 | t0] ^ HEAP[xE | t1] ^ HEAP[xB | t2] ^ HEAP[xD | t3];
15935 s6 = HEAP[xD | tC] ^ HEAP[x9 | tD] ^ HEAP[xE | tE] ^ HEAP[xB | tF];
15936 s7 = HEAP[xB | t8] ^ HEAP[xD | t9] ^ HEAP[x9 | tA] ^ HEAP[xE | tB];
15937 s8 = HEAP[xE | t8] ^ HEAP[xB | t9] ^ HEAP[xD | tA] ^ HEAP[x9 | tB];
15938 s9 = HEAP[x9 | t4] ^ HEAP[xE | t5] ^ HEAP[xB | t6] ^ HEAP[xD | t7];
15939 sA = HEAP[xD | t0] ^ HEAP[x9 | t1] ^ HEAP[xE | t2] ^ HEAP[xB | t3];
15940 sB = HEAP[xB | tC] ^ HEAP[xD | tD] ^ HEAP[x9 | tE] ^ HEAP[xE | tF];
15941 sC = HEAP[xE | tC] ^ HEAP[xB | tD] ^ HEAP[xD | tE] ^ HEAP[x9 | tF];
15942 sD = HEAP[x9 | t8] ^ HEAP[xE | t9] ^ HEAP[xB | tA] ^ HEAP[xD | tB];
15943 sE = HEAP[xD | t4] ^ HEAP[x9 | t5] ^ HEAP[xE | t6] ^ HEAP[xB | t7];
15944 sF = HEAP[xB | t0] ^ HEAP[xD | t1] ^ HEAP[x9 | t2] ^ HEAP[xE | t3];
15945 S0 = HEAP[inv_sbox | s0] ^ R00;
15946 S1 = HEAP[inv_sbox | s1] ^ R01;
15947 S2 = HEAP[inv_sbox | s2] ^ R02;
15948 S3 = HEAP[inv_sbox | s3] ^ R03;
15949 S4 = HEAP[inv_sbox | s4] ^ R04;
15950 S5 = HEAP[inv_sbox | s5] ^ R05;
15951 S6 = HEAP[inv_sbox | s6] ^ R06;
15952 S7 = HEAP[inv_sbox | s7] ^ R07;
15953 S8 = HEAP[inv_sbox | s8] ^ R08;
15954 S9 = HEAP[inv_sbox | s9] ^ R09;
15955 SA = HEAP[inv_sbox | sA] ^ R0A;
15956 SB = HEAP[inv_sbox | sB] ^ R0B;
15957 SC = HEAP[inv_sbox | sC] ^ R0C;
15958 SD = HEAP[inv_sbox | sD] ^ R0D;
15959 SE = HEAP[inv_sbox | sE] ^ R0E;
15960 SF = HEAP[inv_sbox | sF] ^ R0F;
15962 function init_state(s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF) {
15996 function save_state(offset) {
15997 offset = offset |
0;
15999 HEAP[offset |
1] = S1;
16000 HEAP[offset |
2] = S2;
16001 HEAP[offset |
3] = S3;
16002 HEAP[offset |
4] = S4;
16003 HEAP[offset |
5] = S5;
16004 HEAP[offset |
6] = S6;
16005 HEAP[offset |
7] = S7;
16006 HEAP[offset |
8] = S8;
16007 HEAP[offset |
9] = S9;
16008 HEAP[offset |
10] = SA;
16009 HEAP[offset |
11] = SB;
16010 HEAP[offset |
12] = SC;
16011 HEAP[offset |
13] = SD;
16012 HEAP[offset |
14] = SE;
16013 HEAP[offset |
15] = SF;
16015 function init_key_128(k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, kA, kB, kC, kD, kE, kF) {
16051 function init_key_256(k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F) {
16119 function cbc_encrypt(offset, length) {
16120 offset = offset |
0;
16121 length = length |
0;
16123 if (offset &
15) return -
1;
16124 while ((length |
0)
>=
16) {
16125 _encrypt(S0 ^ HEAP[offset], S1 ^ HEAP[offset |
1], S2 ^ HEAP[offset |
2], S3 ^ HEAP[offset |
3], S4 ^ HEAP[offset |
4], S5 ^ HEAP[offset |
5], S6 ^ HEAP[offset |
6], S7 ^ HEAP[offset |
7], S8 ^ HEAP[offset |
8], S9 ^ HEAP[offset |
9], SA ^ HEAP[offset |
10], SB ^ HEAP[offset |
11], SC ^ HEAP[offset |
12], SD ^ HEAP[offset |
13], SE ^ HEAP[offset |
14], SF ^ HEAP[offset |
15]);
16127 HEAP[offset |
1] = S1;
16128 HEAP[offset |
2] = S2;
16129 HEAP[offset |
3] = S3;
16130 HEAP[offset |
4] = S4;
16131 HEAP[offset |
5] = S5;
16132 HEAP[offset |
6] = S6;
16133 HEAP[offset |
7] = S7;
16134 HEAP[offset |
8] = S8;
16135 HEAP[offset |
9] = S9;
16136 HEAP[offset |
10] = SA;
16137 HEAP[offset |
11] = SB;
16138 HEAP[offset |
12] = SC;
16139 HEAP[offset |
13] = SD;
16140 HEAP[offset |
14] = SE;
16141 HEAP[offset |
15] = SF;
16142 offset = offset +
16 |
0;
16143 length = length -
16 |
0;
16144 encrypted = encrypted +
16 |
0;
16146 return encrypted |
0;
16148 function cbc_decrypt(offset, length) {
16149 offset = offset |
0;
16150 length = length |
0;
16151 var iv0 =
0, iv1 =
0, iv2 =
0, iv3 =
0, iv4 =
0, iv5 =
0, iv6 =
0, iv7 =
0, iv8 =
0, iv9 =
0, ivA =
0, ivB =
0, ivC =
0, ivD =
0, ivE =
0, ivF =
0, decrypted =
0;
16152 if (offset &
15) return -
1;
16169 while ((length |
0)
>=
16) {
16170 _decrypt(HEAP[offset] |
0, HEAP[offset |
1] |
0, HEAP[offset |
2] |
0, HEAP[offset |
3] |
0, HEAP[offset |
4] |
0, HEAP[offset |
5] |
0, HEAP[offset |
6] |
0, HEAP[offset |
7] |
0, HEAP[offset |
8] |
0, HEAP[offset |
9] |
0, HEAP[offset |
10] |
0, HEAP[offset |
11] |
0, HEAP[offset |
12] |
0, HEAP[offset |
13] |
0, HEAP[offset |
14] |
0, HEAP[offset |
15] |
0);
16172 iv0 = HEAP[offset] |
0;
16174 iv1 = HEAP[offset |
1] |
0;
16176 iv2 = HEAP[offset |
2] |
0;
16178 iv3 = HEAP[offset |
3] |
0;
16180 iv4 = HEAP[offset |
4] |
0;
16182 iv5 = HEAP[offset |
5] |
0;
16184 iv6 = HEAP[offset |
6] |
0;
16186 iv7 = HEAP[offset |
7] |
0;
16188 iv8 = HEAP[offset |
8] |
0;
16190 iv9 = HEAP[offset |
9] |
0;
16192 ivA = HEAP[offset |
10] |
0;
16194 ivB = HEAP[offset |
11] |
0;
16196 ivC = HEAP[offset |
12] |
0;
16198 ivD = HEAP[offset |
13] |
0;
16200 ivE = HEAP[offset |
14] |
0;
16202 ivF = HEAP[offset |
15] |
0;
16204 HEAP[offset |
1] = S1;
16205 HEAP[offset |
2] = S2;
16206 HEAP[offset |
3] = S3;
16207 HEAP[offset |
4] = S4;
16208 HEAP[offset |
5] = S5;
16209 HEAP[offset |
6] = S6;
16210 HEAP[offset |
7] = S7;
16211 HEAP[offset |
8] = S8;
16212 HEAP[offset |
9] = S9;
16213 HEAP[offset |
10] = SA;
16214 HEAP[offset |
11] = SB;
16215 HEAP[offset |
12] = SC;
16216 HEAP[offset |
13] = SD;
16217 HEAP[offset |
14] = SE;
16218 HEAP[offset |
15] = SF;
16219 offset = offset +
16 |
0;
16220 length = length -
16 |
0;
16221 decrypted = decrypted +
16 |
0;
16239 return decrypted |
0;
16241 function cbc_mac(offset, length, output) {
16242 offset = offset |
0;
16243 length = length |
0;
16244 output = output |
0;
16245 if (offset &
15) return -
1;
16246 if (~output) if (output &
31) return -
1;
16247 while ((length |
0)
>=
16) {
16248 _encrypt(S0 ^ HEAP[offset], S1 ^ HEAP[offset |
1], S2 ^ HEAP[offset |
2], S3 ^ HEAP[offset |
3], S4 ^ HEAP[offset |
4], S5 ^ HEAP[offset |
5], S6 ^ HEAP[offset |
6], S7 ^ HEAP[offset |
7], S8 ^ HEAP[offset |
8], S9 ^ HEAP[offset |
9], SA ^ HEAP[offset |
10], SB ^ HEAP[offset |
11], SC ^ HEAP[offset |
12], SD ^ HEAP[offset |
13], SE ^ HEAP[offset |
14], SF ^ HEAP[offset |
15]);
16249 offset = offset +
16 |
0;
16250 length = length -
16 |
0;
16252 if ((length |
0)
> 0) {
16253 S0 = S0 ^ HEAP[offset];
16254 if ((length |
0)
> 1) S1 = S1 ^ HEAP[offset |
1];
16255 if ((length |
0)
> 2) S2 = S2 ^ HEAP[offset |
2];
16256 if ((length |
0)
> 3) S3 = S3 ^ HEAP[offset |
3];
16257 if ((length |
0)
> 4) S4 = S4 ^ HEAP[offset |
4];
16258 if ((length |
0)
> 5) S5 = S5 ^ HEAP[offset |
5];
16259 if ((length |
0)
> 6) S6 = S6 ^ HEAP[offset |
6];
16260 if ((length |
0)
> 7) S7 = S7 ^ HEAP[offset |
7];
16261 if ((length |
0)
> 8) S8 = S8 ^ HEAP[offset |
8];
16262 if ((length |
0)
> 9) S9 = S9 ^ HEAP[offset |
9];
16263 if ((length |
0)
> 10) SA = SA ^ HEAP[offset |
10];
16264 if ((length |
0)
> 11) SB = SB ^ HEAP[offset |
11];
16265 if ((length |
0)
> 12) SC = SC ^ HEAP[offset |
12];
16266 if ((length |
0)
> 13) SD = SD ^ HEAP[offset |
13];
16267 if ((length |
0)
> 14) SE = SE ^ HEAP[offset |
14];
16268 _encrypt(S0, S1, S2, S3, S4, S5, S6, S7, S8, S9, SA, SB, SC, SD, SE, SF);
16269 offset = offset + length |
0;
16273 HEAP[output |
0] = S0;
16274 HEAP[output |
1] = S1;
16275 HEAP[output |
2] = S2;
16276 HEAP[output |
3] = S3;
16277 HEAP[output |
4] = S4;
16278 HEAP[output |
5] = S5;
16279 HEAP[output |
6] = S6;
16280 HEAP[output |
7] = S7;
16281 HEAP[output |
8] = S8;
16282 HEAP[output |
9] = S9;
16283 HEAP[output |
10] = SA;
16284 HEAP[output |
11] = SB;
16285 HEAP[output |
12] = SC;
16286 HEAP[output |
13] = SD;
16287 HEAP[output |
14] = SE;
16288 HEAP[output |
15] = SF;
16292 function ccm_encrypt(offset, length, nonce0, nonce1, nonce2, nonce3, nonce4, nonce5, nonce6, nonce7, nonce8, nonce9, nonceA, nonceB, nonceC, nonceD, counter0, counter1) {
16293 offset = offset |
0;
16294 length = length |
0;
16295 nonce0 = nonce0 |
0;
16296 nonce1 = nonce1 |
0;
16297 nonce2 = nonce2 |
0;
16298 nonce3 = nonce3 |
0;
16299 nonce4 = nonce4 |
0;
16300 nonce5 = nonce5 |
0;
16301 nonce6 = nonce6 |
0;
16302 nonce7 = nonce7 |
0;
16303 nonce8 = nonce8 |
0;
16304 nonce9 = nonce9 |
0;
16305 nonceA = nonceA |
0;
16306 nonceB = nonceB |
0;
16307 nonceC = nonceC |
0;
16308 nonceD = nonceD |
0;
16309 counter0 = counter0 |
0;
16310 counter1 = counter1 |
0;
16311 var iv0 =
0, iv1 =
0, iv2 =
0, iv3 =
0, iv4 =
0, iv5 =
0, iv6 =
0, iv7 =
0, iv8 =
0, iv9 =
0, ivA =
0, ivB =
0, ivC =
0, ivD =
0, ivE =
0, ivF =
0, s0 =
0, s1 =
0, s2 =
0, s3 =
0, s4 =
0, s5 =
0, s6 =
0, s7 =
0, s8 =
0, s9 =
0, sA =
0, sB =
0, sC =
0, sD =
0, sE =
0, sF =
0, encrypted =
0;
16312 if (offset &
15) return -
1;
16313 iv0 = S0, iv1 = S1, iv2 = S2, iv3 = S3, iv4 = S4, iv5 = S5, iv6 = S6, iv7 = S7,
16314 iv8 = S8, iv9 = S9, ivA = SA, ivB = SB, ivC = SC, ivD = SD, ivE = SE, ivF = SF;
16315 while ((length |
0)
>=
16) {
16316 s0 = HEAP[offset] |
0;
16317 s1 = HEAP[offset |
1] |
0;
16318 s2 = HEAP[offset |
2] |
0;
16319 s3 = HEAP[offset |
3] |
0;
16320 s4 = HEAP[offset |
4] |
0;
16321 s5 = HEAP[offset |
5] |
0;
16322 s6 = HEAP[offset |
6] |
0;
16323 s7 = HEAP[offset |
7] |
0;
16324 s8 = HEAP[offset |
8] |
0;
16325 s9 = HEAP[offset |
9] |
0;
16326 sA = HEAP[offset |
10] |
0;
16327 sB = HEAP[offset |
11] |
0;
16328 sC = HEAP[offset |
12] |
0;
16329 sD = HEAP[offset |
13] |
0;
16330 sE = HEAP[offset |
14] |
0;
16331 sF = HEAP[offset |
15] |
0;
16332 _encrypt(nonce0, nonce1, nonce2, nonce3, nonce4, nonce5, nonce6, nonce7, nonce8 ^ counter0
>>> 24, nonce9 ^ counter0
>>> 16 &
255, nonceA ^ counter0
>>> 8 &
255, nonceB ^ counter0 &
255, nonceC ^ counter1
>>> 24, nonceD ^ counter1
>>> 16 &
255, counter1
>>> 8 &
255, counter1 &
255);
16333 HEAP[offset] = s0 ^ S0;
16334 HEAP[offset |
1] = s1 ^ S1;
16335 HEAP[offset |
2] = s2 ^ S2;
16336 HEAP[offset |
3] = s3 ^ S3;
16337 HEAP[offset |
4] = s4 ^ S4;
16338 HEAP[offset |
5] = s5 ^ S5;
16339 HEAP[offset |
6] = s6 ^ S6;
16340 HEAP[offset |
7] = s7 ^ S7;
16341 HEAP[offset |
8] = s8 ^ S8;
16342 HEAP[offset |
9] = s9 ^ S9;
16343 HEAP[offset |
10] = sA ^ SA;
16344 HEAP[offset |
11] = sB ^ SB;
16345 HEAP[offset |
12] = sC ^ SC;
16346 HEAP[offset |
13] = sD ^ SD;
16347 HEAP[offset |
14] = sE ^ SE;
16348 HEAP[offset |
15] = sF ^ SF;
16349 _encrypt(s0 ^ iv0, s1 ^ iv1, s2 ^ iv2, s3 ^ iv3, s4 ^ iv4, s5 ^ iv5, s6 ^ iv6, s7 ^ iv7, s8 ^ iv8, s9 ^ iv9, sA ^ ivA, sB ^ ivB, sC ^ ivC, sD ^ ivD, sE ^ ivE, sF ^ ivF);
16350 iv0 = S0, iv1 = S1, iv2 = S2, iv3 = S3, iv4 = S4, iv5 = S5, iv6 = S6, iv7 = S7,
16351 iv8 = S8, iv9 = S9, ivA = SA, ivB = SB, ivC = SC, ivD = SD, ivE = SE, ivF = SF;
16352 encrypted = encrypted +
16 |
0;
16353 offset = offset +
16 |
0;
16354 length = length -
16 |
0;
16355 counter1 = counter1 +
1 |
0;
16356 if ((counter1 |
0) ==
0) counter0 = counter0 +
1 |
0;
16358 if ((length |
0)
> 0) {
16359 s0 = HEAP[offset] |
0;
16360 s1 = (length |
0)
> 1 ? HEAP[offset |
1] |
0 :
0;
16361 s2 = (length |
0)
> 2 ? HEAP[offset |
2] |
0 :
0;
16362 s3 = (length |
0)
> 3 ? HEAP[offset |
3] |
0 :
0;
16363 s4 = (length |
0)
> 4 ? HEAP[offset |
4] |
0 :
0;
16364 s5 = (length |
0)
> 5 ? HEAP[offset |
5] |
0 :
0;
16365 s6 = (length |
0)
> 6 ? HEAP[offset |
6] |
0 :
0;
16366 s7 = (length |
0)
> 7 ? HEAP[offset |
7] |
0 :
0;
16367 s8 = (length |
0)
> 8 ? HEAP[offset |
8] |
0 :
0;
16368 s9 = (length |
0)
> 9 ? HEAP[offset |
9] |
0 :
0;
16369 sA = (length |
0)
> 10 ? HEAP[offset |
10] |
0 :
0;
16370 sB = (length |
0)
> 11 ? HEAP[offset |
11] |
0 :
0;
16371 sC = (length |
0)
> 12 ? HEAP[offset |
12] |
0 :
0;
16372 sD = (length |
0)
> 13 ? HEAP[offset |
13] |
0 :
0;
16373 sE = (length |
0)
> 14 ? HEAP[offset |
14] |
0 :
0;
16374 _encrypt(nonce0, nonce1, nonce2, nonce3, nonce4, nonce5, nonce6, nonce7, nonce8 ^ counter0
>>> 24, nonce9 ^ counter0
>>> 16 &
255, nonceA ^ counter0
>>> 8 &
255, nonceB ^ counter0 &
255, nonceC ^ counter1
>>> 24, nonceD ^ counter1
>>> 16 &
255, counter1
>>> 8 &
255, counter1 &
255);
16375 HEAP[offset] = s0 ^ S0;
16376 if ((length |
0)
> 1) HEAP[offset |
1] = s1 ^ S1;
16377 if ((length |
0)
> 2) HEAP[offset |
2] = s2 ^ S2;
16378 if ((length |
0)
> 3) HEAP[offset |
3] = s3 ^ S3;
16379 if ((length |
0)
> 4) HEAP[offset |
4] = s4 ^ S4;
16380 if ((length |
0)
> 5) HEAP[offset |
5] = s5 ^ S5;
16381 if ((length |
0)
> 6) HEAP[offset |
6] = s6 ^ S6;
16382 if ((length |
0)
> 7) HEAP[offset |
7] = s7 ^ S7;
16383 if ((length |
0)
> 8) HEAP[offset |
8] = s8 ^ S8;
16384 if ((length |
0)
> 9) HEAP[offset |
9] = s9 ^ S9;
16385 if ((length |
0)
> 10) HEAP[offset |
10] = sA ^ SA;
16386 if ((length |
0)
> 11) HEAP[offset |
11] = sB ^ SB;
16387 if ((length |
0)
> 12) HEAP[offset |
12] = sC ^ SC;
16388 if ((length |
0)
> 13) HEAP[offset |
13] = sD ^ SD;
16389 if ((length |
0)
> 14) HEAP[offset |
14] = sE ^ SE;
16390 _encrypt(s0 ^ iv0, s1 ^ iv1, s2 ^ iv2, s3 ^ iv3, s4 ^ iv4, s5 ^ iv5, s6 ^ iv6, s7 ^ iv7, s8 ^ iv8, s9 ^ iv9, sA ^ ivA, sB ^ ivB, sC ^ ivC, sD ^ ivD, sE ^ ivE, ivF);
16391 iv0 = S0, iv1 = S1, iv2 = S2, iv3 = S3, iv4 = S4, iv5 = S5, iv6 = S6, iv7 = S7,
16392 iv8 = S8, iv9 = S9, ivA = SA, ivB = SB, ivC = SC, ivD = SD, ivE = SE, ivF = SF;
16393 encrypted = encrypted + length |
0;
16394 offset = offset + length |
0;
16396 counter1 = counter1 +
1 |
0;
16397 if ((counter1 |
0) ==
0) counter0 = counter0 +
1 |
0;
16399 return encrypted |
0;
16401 function ccm_decrypt(offset, length, nonce0, nonce1, nonce2, nonce3, nonce4, nonce5, nonce6, nonce7, nonce8, nonce9, nonceA, nonceB, nonceC, nonceD, counter0, counter1) {
16402 offset = offset |
0;
16403 length = length |
0;
16404 nonce0 = nonce0 |
0;
16405 nonce1 = nonce1 |
0;
16406 nonce2 = nonce2 |
0;
16407 nonce3 = nonce3 |
0;
16408 nonce4 = nonce4 |
0;
16409 nonce5 = nonce5 |
0;
16410 nonce6 = nonce6 |
0;
16411 nonce7 = nonce7 |
0;
16412 nonce8 = nonce8 |
0;
16413 nonce9 = nonce9 |
0;
16414 nonceA = nonceA |
0;
16415 nonceB = nonceB |
0;
16416 nonceC = nonceC |
0;
16417 nonceD = nonceD |
0;
16418 counter0 = counter0 |
0;
16419 counter1 = counter1 |
0;
16420 var iv0 =
0, iv1 =
0, iv2 =
0, iv3 =
0, iv4 =
0, iv5 =
0, iv6 =
0, iv7 =
0, iv8 =
0, iv9 =
0, ivA =
0, ivB =
0, ivC =
0, ivD =
0, ivE =
0, ivF =
0, s0 =
0, s1 =
0, s2 =
0, s3 =
0, s4 =
0, s5 =
0, s6 =
0, s7 =
0, s8 =
0, s9 =
0, sA =
0, sB =
0, sC =
0, sD =
0, sE =
0, sF =
0, decrypted =
0;
16421 if (offset &
15) return -
1;
16422 iv0 = S0, iv1 = S1, iv2 = S2, iv3 = S3, iv4 = S4, iv5 = S5, iv6 = S6, iv7 = S7,
16423 iv8 = S8, iv9 = S9, ivA = SA, ivB = SB, ivC = SC, ivD = SD, ivE = SE, ivF = SF;
16424 while ((length |
0)
>=
16) {
16425 _encrypt(nonce0, nonce1, nonce2, nonce3, nonce4, nonce5, nonce6, nonce7, nonce8 ^ counter0
>>> 24, nonce9 ^ counter0
>>> 16 &
255, nonceA ^ counter0
>>> 8 &
255, nonceB ^ counter0 &
255, nonceC ^ counter1
>>> 24, nonceD ^ counter1
>>> 16 &
255, counter1
>>> 8 &
255, counter1 &
255);
16426 HEAP[offset] = s0 = HEAP[offset] ^ S0;
16427 HEAP[offset |
1] = s1 = HEAP[offset |
1] ^ S1;
16428 HEAP[offset |
2] = s2 = HEAP[offset |
2] ^ S2;
16429 HEAP[offset |
3] = s3 = HEAP[offset |
3] ^ S3;
16430 HEAP[offset |
4] = s4 = HEAP[offset |
4] ^ S4;
16431 HEAP[offset |
5] = s5 = HEAP[offset |
5] ^ S5;
16432 HEAP[offset |
6] = s6 = HEAP[offset |
6] ^ S6;
16433 HEAP[offset |
7] = s7 = HEAP[offset |
7] ^ S7;
16434 HEAP[offset |
8] = s8 = HEAP[offset |
8] ^ S8;
16435 HEAP[offset |
9] = s9 = HEAP[offset |
9] ^ S9;
16436 HEAP[offset |
10] = sA = HEAP[offset |
10] ^ SA;
16437 HEAP[offset |
11] = sB = HEAP[offset |
11] ^ SB;
16438 HEAP[offset |
12] = sC = HEAP[offset |
12] ^ SC;
16439 HEAP[offset |
13] = sD = HEAP[offset |
13] ^ SD;
16440 HEAP[offset |
14] = sE = HEAP[offset |
14] ^ SE;
16441 HEAP[offset |
15] = sF = HEAP[offset |
15] ^ SF;
16442 _encrypt(s0 ^ iv0, s1 ^ iv1, s2 ^ iv2, s3 ^ iv3, s4 ^ iv4, s5 ^ iv5, s6 ^ iv6, s7 ^ iv7, s8 ^ iv8, s9 ^ iv9, sA ^ ivA, sB ^ ivB, sC ^ ivC, sD ^ ivD, sE ^ ivE, sF ^ ivF);
16443 iv0 = S0, iv1 = S1, iv2 = S2, iv3 = S3, iv4 = S4, iv5 = S5, iv6 = S6, iv7 = S7,
16444 iv8 = S8, iv9 = S9, ivA = SA, ivB = SB, ivC = SC, ivD = SD, ivE = SE, ivF = SF;
16445 decrypted = decrypted +
16 |
0;
16446 offset = offset +
16 |
0;
16447 length = length -
16 |
0;
16448 counter1 = counter1 +
1 |
0;
16449 if ((counter1 |
0) ==
0) counter0 = counter0 +
1 |
0;
16451 if ((length |
0)
> 0) {
16452 _encrypt(nonce0, nonce1, nonce2, nonce3, nonce4, nonce5, nonce6, nonce7, nonce8 ^ counter0
>>> 24, nonce9 ^ counter0
>>> 16 &
255, nonceA ^ counter0
>>> 8 &
255, nonceB ^ counter0 &
255, nonceC ^ counter1
>>> 24, nonceD ^ counter1
>>> 16 &
255, counter1
>>> 8 &
255, counter1 &
255);
16453 s0 = HEAP[offset] ^ S0;
16454 s1 = (length |
0)
> 1 ? HEAP[offset |
1] ^ S1 :
0;
16455 s2 = (length |
0)
> 2 ? HEAP[offset |
2] ^ S2 :
0;
16456 s3 = (length |
0)
> 3 ? HEAP[offset |
3] ^ S3 :
0;
16457 s4 = (length |
0)
> 4 ? HEAP[offset |
4] ^ S4 :
0;
16458 s5 = (length |
0)
> 5 ? HEAP[offset |
5] ^ S5 :
0;
16459 s6 = (length |
0)
> 6 ? HEAP[offset |
6] ^ S6 :
0;
16460 s7 = (length |
0)
> 7 ? HEAP[offset |
7] ^ S7 :
0;
16461 s8 = (length |
0)
> 8 ? HEAP[offset |
8] ^ S8 :
0;
16462 s9 = (length |
0)
> 9 ? HEAP[offset |
9] ^ S9 :
0;
16463 sA = (length |
0)
> 10 ? HEAP[offset |
10] ^ SA :
0;
16464 sB = (length |
0)
> 11 ? HEAP[offset |
11] ^ SB :
0;
16465 sC = (length |
0)
> 12 ? HEAP[offset |
12] ^ SC :
0;
16466 sD = (length |
0)
> 13 ? HEAP[offset |
13] ^ SD :
0;
16467 sE = (length |
0)
> 14 ? HEAP[offset |
14] ^ SE :
0;
16468 sF = (length |
0)
> 15 ? HEAP[offset |
15] ^ SF :
0;
16470 if ((length |
0)
> 1) HEAP[offset |
1] = s1;
16471 if ((length |
0)
> 2) HEAP[offset |
2] = s2;
16472 if ((length |
0)
> 3) HEAP[offset |
3] = s3;
16473 if ((length |
0)
> 4) HEAP[offset |
4] = s4;
16474 if ((length |
0)
> 5) HEAP[offset |
5] = s5;
16475 if ((length |
0)
> 6) HEAP[offset |
6] = s6;
16476 if ((length |
0)
> 7) HEAP[offset |
7] = s7;
16477 if ((length |
0)
> 8) HEAP[offset |
8] = s8;
16478 if ((length |
0)
> 9) HEAP[offset |
9] = s9;
16479 if ((length |
0)
> 10) HEAP[offset |
10] = sA;
16480 if ((length |
0)
> 11) HEAP[offset |
11] = sB;
16481 if ((length |
0)
> 12) HEAP[offset |
12] = sC;
16482 if ((length |
0)
> 13) HEAP[offset |
13] = sD;
16483 if ((length |
0)
> 14) HEAP[offset |
14] = sE;
16484 _encrypt(s0 ^ iv0, s1 ^ iv1, s2 ^ iv2, s3 ^ iv3, s4 ^ iv4, s5 ^ iv5, s6 ^ iv6, s7 ^ iv7, s8 ^ iv8, s9 ^ iv9, sA ^ ivA, sB ^ ivB, sC ^ ivC, sD ^ ivD, sE ^ ivE, sF ^ ivF);
16485 iv0 = S0, iv1 = S1, iv2 = S2, iv3 = S3, iv4 = S4, iv5 = S5, iv6 = S6, iv7 = S7,
16486 iv8 = S8, iv9 = S9, ivA = SA, ivB = SB, ivC = SC, ivD = SD, ivE = SE, ivF = SF;
16487 decrypted = decrypted + length |
0;
16488 offset = offset + length |
0;
16490 counter1 = counter1 +
1 |
0;
16491 if ((counter1 |
0) ==
0) counter0 = counter0 +
1 |
0;
16493 return decrypted |
0;
16495 function cfb_encrypt(offset, length) {
16496 offset = offset |
0;
16497 length = length |
0;
16499 if (offset &
15) return -
1;
16500 while ((length |
0)
>=
16) {
16501 _encrypt(S0, S1, S2, S3, S4, S5, S6, S7, S8, S9, SA, SB, SC, SD, SE, SF);
16502 S0 = S0 ^ HEAP[offset];
16503 S1 = S1 ^ HEAP[offset |
1];
16504 S2 = S2 ^ HEAP[offset |
2];
16505 S3 = S3 ^ HEAP[offset |
3];
16506 S4 = S4 ^ HEAP[offset |
4];
16507 S5 = S5 ^ HEAP[offset |
5];
16508 S6 = S6 ^ HEAP[offset |
6];
16509 S7 = S7 ^ HEAP[offset |
7];
16510 S8 = S8 ^ HEAP[offset |
8];
16511 S9 = S9 ^ HEAP[offset |
9];
16512 SA = SA ^ HEAP[offset |
10];
16513 SB = SB ^ HEAP[offset |
11];
16514 SC = SC ^ HEAP[offset |
12];
16515 SD = SD ^ HEAP[offset |
13];
16516 SE = SE ^ HEAP[offset |
14];
16517 SF = SF ^ HEAP[offset |
15];
16519 HEAP[offset |
1] = S1;
16520 HEAP[offset |
2] = S2;
16521 HEAP[offset |
3] = S3;
16522 HEAP[offset |
4] = S4;
16523 HEAP[offset |
5] = S5;
16524 HEAP[offset |
6] = S6;
16525 HEAP[offset |
7] = S7;
16526 HEAP[offset |
8] = S8;
16527 HEAP[offset |
9] = S9;
16528 HEAP[offset |
10] = SA;
16529 HEAP[offset |
11] = SB;
16530 HEAP[offset |
12] = SC;
16531 HEAP[offset |
13] = SD;
16532 HEAP[offset |
14] = SE;
16533 HEAP[offset |
15] = SF;
16534 offset = offset +
16 |
0;
16535 length = length -
16 |
0;
16536 encrypted = encrypted +
16 |
0;
16538 if ((length |
0)
> 0) {
16539 _encrypt(S0, S1, S2, S3, S4, S5, S6, S7, S8, S9, SA, SB, SC, SD, SE, SF);
16540 HEAP[offset] = HEAP[offset] ^ S0;
16541 if ((length |
0)
> 1) HEAP[offset |
1] = HEAP[offset |
1] ^ S1;
16542 if ((length |
0)
> 2) HEAP[offset |
2] = HEAP[offset |
2] ^ S2;
16543 if ((length |
0)
> 3) HEAP[offset |
3] = HEAP[offset |
3] ^ S3;
16544 if ((length |
0)
> 4) HEAP[offset |
4] = HEAP[offset |
4] ^ S4;
16545 if ((length |
0)
> 5) HEAP[offset |
5] = HEAP[offset |
5] ^ S5;
16546 if ((length |
0)
> 6) HEAP[offset |
6] = HEAP[offset |
6] ^ S6;
16547 if ((length |
0)
> 7) HEAP[offset |
7] = HEAP[offset |
7] ^ S7;
16548 if ((length |
0)
> 8) HEAP[offset |
8] = HEAP[offset |
8] ^ S8;
16549 if ((length |
0)
> 9) HEAP[offset |
9] = HEAP[offset |
9] ^ S9;
16550 if ((length |
0)
> 10) HEAP[offset |
10] = HEAP[offset |
10] ^ SA;
16551 if ((length |
0)
> 11) HEAP[offset |
11] = HEAP[offset |
11] ^ SB;
16552 if ((length |
0)
> 12) HEAP[offset |
12] = HEAP[offset |
12] ^ SC;
16553 if ((length |
0)
> 13) HEAP[offset |
13] = HEAP[offset |
13] ^ SD;
16554 if ((length |
0)
> 14) HEAP[offset |
14] = HEAP[offset |
14] ^ SE;
16555 encrypted = encrypted + length |
0;
16556 offset = offset + length |
0;
16559 return encrypted |
0;
16561 function cfb_decrypt(offset, length) {
16562 offset = offset |
0;
16563 length = length |
0;
16564 var iv0 =
0, iv1 =
0, iv2 =
0, iv3 =
0, iv4 =
0, iv5 =
0, iv6 =
0, iv7 =
0, iv8 =
0, iv9 =
0, ivA =
0, ivB =
0, ivC =
0, ivD =
0, ivE =
0, ivF =
0, decrypted =
0;
16565 if (offset &
15) return -
1;
16566 while ((length |
0)
>=
16) {
16567 _encrypt(S0, S1, S2, S3, S4, S5, S6, S7, S8, S9, SA, SB, SC, SD, SE, SF);
16568 iv0 = HEAP[offset] |
0;
16569 iv1 = HEAP[offset |
1] |
0;
16570 iv2 = HEAP[offset |
2] |
0;
16571 iv3 = HEAP[offset |
3] |
0;
16572 iv4 = HEAP[offset |
4] |
0;
16573 iv5 = HEAP[offset |
5] |
0;
16574 iv6 = HEAP[offset |
6] |
0;
16575 iv7 = HEAP[offset |
7] |
0;
16576 iv8 = HEAP[offset |
8] |
0;
16577 iv9 = HEAP[offset |
9] |
0;
16578 ivA = HEAP[offset |
10] |
0;
16579 ivB = HEAP[offset |
11] |
0;
16580 ivC = HEAP[offset |
12] |
0;
16581 ivD = HEAP[offset |
13] |
0;
16582 ivE = HEAP[offset |
14] |
0;
16583 ivF = HEAP[offset |
15] |
0;
16584 HEAP[offset] = S0 ^ iv0;
16585 HEAP[offset |
1] = S1 ^ iv1;
16586 HEAP[offset |
2] = S2 ^ iv2;
16587 HEAP[offset |
3] = S3 ^ iv3;
16588 HEAP[offset |
4] = S4 ^ iv4;
16589 HEAP[offset |
5] = S5 ^ iv5;
16590 HEAP[offset |
6] = S6 ^ iv6;
16591 HEAP[offset |
7] = S7 ^ iv7;
16592 HEAP[offset |
8] = S8 ^ iv8;
16593 HEAP[offset |
9] = S9 ^ iv9;
16594 HEAP[offset |
10] = SA ^ ivA;
16595 HEAP[offset |
11] = SB ^ ivB;
16596 HEAP[offset |
12] = SC ^ ivC;
16597 HEAP[offset |
13] = SD ^ ivD;
16598 HEAP[offset |
14] = SE ^ ivE;
16599 HEAP[offset |
15] = SF ^ ivF;
16616 offset = offset +
16 |
0;
16617 length = length -
16 |
0;
16618 decrypted = decrypted +
16 |
0;
16620 if ((length |
0)
> 0) {
16621 _encrypt(S0, S1, S2, S3, S4, S5, S6, S7, S8, S9, SA, SB, SC, SD, SE, SF);
16622 HEAP[offset] = HEAP[offset] ^ S0;
16623 if ((length |
0)
> 1) HEAP[offset |
1] = HEAP[offset |
1] ^ S1;
16624 if ((length |
0)
> 2) HEAP[offset |
2] = HEAP[offset |
2] ^ S2;
16625 if ((length |
0)
> 3) HEAP[offset |
3] = HEAP[offset |
3] ^ S3;
16626 if ((length |
0)
> 4) HEAP[offset |
4] = HEAP[offset |
4] ^ S4;
16627 if ((length |
0)
> 5) HEAP[offset |
5] = HEAP[offset |
5] ^ S5;
16628 if ((length |
0)
> 6) HEAP[offset |
6] = HEAP[offset |
6] ^ S6;
16629 if ((length |
0)
> 7) HEAP[offset |
7] = HEAP[offset |
7] ^ S7;
16630 if ((length |
0)
> 8) HEAP[offset |
8] = HEAP[offset |
8] ^ S8;
16631 if ((length |
0)
> 9) HEAP[offset |
9] = HEAP[offset |
9] ^ S9;
16632 if ((length |
0)
> 10) HEAP[offset |
10] = HEAP[offset |
10] ^ SA;
16633 if ((length |
0)
> 11) HEAP[offset |
11] = HEAP[offset |
11] ^ SB;
16634 if ((length |
0)
> 12) HEAP[offset |
12] = HEAP[offset |
12] ^ SC;
16635 if ((length |
0)
> 13) HEAP[offset |
13] = HEAP[offset |
13] ^ SD;
16636 if ((length |
0)
> 14) HEAP[offset |
14] = HEAP[offset |
14] ^ SE;
16637 decrypted = decrypted + length |
0;
16638 offset = offset + length |
0;
16641 return decrypted |
0;
16644 init_state: init_state,
16645 save_state: save_state,
16646 init_key_128: init_key_128,
16647 init_key_256: init_key_256,
16648 cbc_encrypt: cbc_encrypt,
16649 cbc_decrypt: cbc_decrypt,
16651 ccm_encrypt: ccm_encrypt,
16652 ccm_decrypt: ccm_decrypt,
16653 cfb_encrypt: cfb_encrypt,
16654 cfb_decrypt: cfb_decrypt
16657 function aes_asm(stdlib, foreign, buffer) {
16658 var heap = new Uint8Array(buffer);
16659 heap.set(_aes_tables);
16660 return _aes_asm(stdlib, foreign, buffer);
16662 var _aes_block_size =
16;
16663 function _aes_constructor(options) {
16664 options = options || {};
16665 options.heapSize = options.heapSize ||
4096;
16666 if (options.heapSize <=
0 || options.heapSize %
4096) throw new IllegalArgumentError(
"heapSize must be a positive number and multiple of 4096");
16667 this.BLOCK_SIZE = _aes_block_size;
16668 this.heap = options.heap || new Uint8Array(options.heapSize);
16669 this.asm = options.asm || aes_asm(global, null, this.heap.buffer);
16670 this.pos = _aes_heap_start;
16673 this.result = null;
16674 this.reset(options);
16676 function _aes_reset(options) {
16677 options = options || {};
16678 this.result = null;
16679 this.pos = _aes_heap_start;
16681 var asm = this.asm;
16682 var key = options.key;
16683 if (key !== undefined) {
16684 if (is_buffer(key) || is_bytes(key)) {
16685 key = new Uint8Array(key);
16686 } else if (is_string(key)) {
16688 key = new Uint8Array(str.length);
16689 for (var i =
0; i < str.length; ++i) key[i] = str.charCodeAt(i);
16691 throw new TypeError(
"unexpected key type");
16693 if (key.length ===
16) {
16695 asm.init_key_128.call(asm, key[
0], key[
1], key[
2], key[
3], key[
4], key[
5], key[
6], key[
7], key[
8], key[
9], key[
10], key[
11], key[
12], key[
13], key[
14], key[
15]);
16696 } else if (key.length ===
24) {
16697 throw new IllegalArgumentError(
"illegal key size");
16698 } else if (key.length ===
32) {
16700 asm.init_key_256.call(asm, key[
0], key[
1], key[
2], key[
3], key[
4], key[
5], key[
6], key[
7], key[
8], key[
9], key[
10], key[
11], key[
12], key[
13], key[
14], key[
15], key[
16], key[
17], key[
18], key[
19], key[
20], key[
21], key[
22], key[
23], key[
24], key[
25], key[
26], key[
27], key[
28], key[
29], key[
30], key[
31]);
16702 throw new IllegalArgumentError(
"illegal key size");
16707 function _aes_init_iv(iv) {
16708 var asm = this.asm;
16709 if (iv !== undefined) {
16710 if (is_buffer(iv) || is_bytes(iv)) {
16711 iv = new Uint8Array(iv);
16712 } else if (is_string(iv)) {
16714 iv = new Uint8Array(str.length);
16715 for (var i =
0; i < str.length; ++i) iv[i] = str.charCodeAt(i);
16717 throw new TypeError(
"unexpected iv type");
16719 if (iv.length !== _aes_block_size) throw new IllegalArgumentError(
"illegal iv size");
16721 asm.init_state.call(asm, iv[
0], iv[
1], iv[
2], iv[
3], iv[
4], iv[
5], iv[
6], iv[
7], iv[
8], iv[
9], iv[
10], iv[
11], iv[
12], iv[
13], iv[
14], iv[
15]);
16724 asm.init_state.call(asm,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0);
16727 function _aes_heap_write(heap, hpos, data, dpos, dlen) {
16728 var hlen = heap.byteLength - hpos, wlen = hlen < dlen ? hlen : dlen;
16729 if (is_buffer(data) || is_bytes(data)) {
16730 heap.set(new Uint8Array(data.buffer || data, dpos, wlen), hpos);
16731 } else if (is_string(data)) {
16732 for (var i =
0; i < wlen; ++i) heap[hpos + i] = data.charCodeAt(dpos + i);
16734 throw new TypeError(
"unexpected data type");
16738 function cbc_aes_constructor(options) {
16739 this.padding = true;
16742 _aes_constructor.call(this, options);
16744 function cbc_aes_encrypt_constructor(options) {
16745 cbc_aes_constructor.call(this, options);
16747 function cbc_aes_decrypt_constructor(options) {
16748 cbc_aes_constructor.call(this, options);
16750 function cbc_aes_reset(options) {
16751 options = options || {};
16752 _aes_reset.call(this, options);
16753 var padding = options.padding;
16754 if (padding !== undefined) {
16755 this.padding = !!padding;
16757 this.padding = true;
16759 _aes_init_iv.call(this, options.iv);
16762 function cbc_aes_encrypt_process(data) {
16763 if (!this.key) throw new IllegalStateError(
"no key is associated with the instance");
16764 var dpos = data.byteOffset ||
0, dlen = data.byteLength || data.length ||
0, asm = this.asm, heap = this.heap, pos = this.pos, len = this.len, rpos =
0, rlen = _aes_block_size * Math.floor((len + dlen) / _aes_block_size), wlen =
0;
16765 var result = new Uint8Array(rlen);
16767 wlen = _aes_heap_write(heap, pos + len, data, dpos, dlen);
16771 wlen = asm.cbc_encrypt(pos, len);
16772 result.set(heap.subarray(pos, pos + wlen), rpos);
16778 pos = _aes_heap_start;
16782 this.result = result;
16787 function cbc_aes_encrypt_finish() {
16788 if (!this.key) throw new IllegalStateError(
"no key is associated with the instance");
16789 var asm = this.asm, heap = this.heap, padding = this.padding, pos = this.pos, len = this.len, rlen = _aes_block_size * Math.ceil(len / _aes_block_size);
16790 if (len % _aes_block_size ===
0) {
16791 if (padding) rlen += _aes_block_size;
16792 } else if (!padding) {
16793 throw new IllegalArgumentError(
"data length must be a multiple of " + _aes_block_size);
16795 var result = new Uint8Array(rlen);
16797 var plen = _aes_block_size - len % _aes_block_size;
16798 for (var p =
0; p < plen; ++p) heap[pos + len + p] = plen;
16801 asm.cbc_encrypt(pos, len);
16802 result.set(heap.subarray(pos, pos + len));
16803 this.result = result;
16804 this.pos = _aes_heap_start;
16808 function cbc_aes_encrypt(data) {
16809 var result1 = cbc_aes_encrypt_process.call(this, data).result, result2 = cbc_aes_encrypt_finish.call(this).result, result;
16810 result = new Uint8Array(result1.length + result2.length);
16811 result.set(result1);
16812 result.set(result2, result1.length);
16813 this.result = result;
16816 function cbc_aes_decrypt_process(data) {
16817 if (!this.key) throw new IllegalStateError(
"no key is associated with the instance");
16818 var dpos = data.byteOffset ||
0, dlen = data.byteLength || data.length ||
0, asm = this.asm, heap = this.heap, padding = this.padding, pos = this.pos, len = this.len, rpos =
0, rlen = _aes_block_size * Math.floor((len + dlen) / _aes_block_size), wlen =
0;
16819 var result = new Uint8Array(rlen);
16821 wlen = _aes_heap_write(heap, pos + len, data, dpos, dlen);
16825 wlen = asm.cbc_decrypt(pos, len - (padding && dlen ===
0 && len % _aes_block_size ===
0 ? _aes_block_size :
0));
16826 result.set(heap.subarray(pos, pos + wlen), rpos);
16832 pos = _aes_heap_start;
16836 this.result = result.subarray(
0, rpos);
16841 function cbc_aes_decrypt_finish() {
16842 if (!this.key) throw new IllegalStateError(
"no key is associated with the instance");
16843 var asm = this.asm, heap = this.heap, padding = this.padding, pos = this.pos, len = this.len;
16846 this.result = new Uint8Array(
0);
16847 this.pos = _aes_heap_start;
16851 throw new IllegalStateError(
"padding not found");
16854 if (len % _aes_block_size !==
0) throw new IllegalArgumentError(
"data length must be a multiple of " + _aes_block_size);
16855 var result = new Uint8Array(len);
16856 asm.cbc_decrypt(pos, len);
16857 result.set(heap.subarray(pos, pos + len));
16859 var pad = result[len -
1];
16860 result = result.subarray(
0, len - pad);
16862 this.result = result;
16863 this.pos = _aes_heap_start;
16867 function cbc_aes_decrypt(data) {
16868 var result1 = cbc_aes_decrypt_process.call(this, data).result, result2 = cbc_aes_decrypt_finish.call(this).result, result;
16869 result = new Uint8Array(result1.length + result2.length);
16870 result.set(result1);
16871 result.set(result2, result1.length);
16872 this.result = result;
16875 var cbc_aes_encrypt_prototype = cbc_aes_encrypt_constructor.prototype;
16876 cbc_aes_encrypt_prototype.reset = cbc_aes_reset;
16877 cbc_aes_encrypt_prototype.process = cbc_aes_encrypt_process;
16878 cbc_aes_encrypt_prototype.finish = cbc_aes_encrypt_finish;
16879 var cbc_aes_decrypt_prototype = cbc_aes_decrypt_constructor.prototype;
16880 cbc_aes_decrypt_prototype.reset = cbc_aes_reset;
16881 cbc_aes_decrypt_prototype.process = cbc_aes_decrypt_process;
16882 cbc_aes_decrypt_prototype.finish = cbc_aes_decrypt_finish;
16883 var cbc_aes_prototype = cbc_aes_constructor.prototype;
16884 cbc_aes_prototype.reset = cbc_aes_reset;
16885 cbc_aes_prototype.encrypt = cbc_aes_encrypt;
16886 cbc_aes_prototype.decrypt = cbc_aes_decrypt;
16887 function _cbc_mac_process(data) {
16888 var dpos = data.byteOffset ||
0, dlen = data.byteLength || data.length ||
0, wlen =
0;
16890 wlen = _aes_heap_write(this.heap, _aes_heap_start, data, dpos, dlen);
16891 this.asm.cbc_mac(_aes_heap_start, wlen, -
1);
16896 var _ccm_adata_maxLength =
65279, _ccm_data_maxLength =
68719476720;
16897 function ccm_aes_constructor(options) {
16898 this.padding = false;
16900 this.tagSize = _aes_block_size;
16901 this.lengthSize =
4;
16905 this.dataLength = -
1;
16906 this.dataLeft = -
1;
16908 _aes_constructor.call(this, options);
16910 function ccm_aes_encrypt_constructor(options) {
16911 ccm_aes_constructor.call(this, options);
16913 function ccm_aes_decrypt_constructor(options) {
16914 ccm_aes_constructor.call(this, options);
16916 function _ccm_calculate_iv() {
16917 var nonce = this.nonce, adata = this.adata, tagSize = this.tagSize, lengthSize = this.lengthSize, dataLength = this.dataLength;
16918 var data = new Uint8Array(_aes_block_size + (adata ?
2 + adata.byteLength :
0));
16919 data[
0] = (adata ?
64 :
0) | tagSize -
2 <<
2 | lengthSize -
1;
16920 data.set(nonce,
1);
16921 if (lengthSize
> 4) data[
11] = (dataLength - (dataLength
>>> 0)) /
4294967296 &
15;
16922 if (lengthSize
> 3) data[
12] = dataLength
>>> 24;
16923 if (lengthSize
> 2) data[
13] = dataLength
>>> 16 &
255;
16924 data[
14] = dataLength
>>> 8 &
255;
16925 data[
15] = dataLength &
255;
16927 data[
16] = adata.byteLength
>>> 8 &
255;
16928 data[
17] = adata.byteLength &
255;
16929 data.set(adata,
18);
16931 _cbc_mac_process.call(this, data);
16932 this.asm.save_state(_aes_heap_start);
16933 this.iv = new Uint8Array(this.heap.subarray(_aes_heap_start, _aes_heap_start + _aes_block_size));
16935 function ccm_aes_reset(options) {
16936 options = options || {};
16937 _aes_reset.call(this, options);
16938 _aes_init_iv.call(this, options.iv);
16939 var tagSize = options.tagSize;
16940 if (tagSize !== undefined) {
16941 if (!is_number(tagSize)) throw new TypeError(
"tagSize must be a number");
16942 if (tagSize <
4 || tagSize
> 16 || tagSize &
1) throw new IllegalArgumentError(
"illegal tagSize value");
16943 this.tagSize = tagSize;
16945 this.tagSize = _aes_block_size;
16947 var lengthSize = options.lengthSize, nonce = options.nonce;
16948 if (nonce !== undefined) {
16949 if (is_buffer(nonce) || is_bytes(nonce)) {
16950 nonce = new Uint8Array(nonce);
16951 } else if (is_string(nonce)) {
16953 nonce = new Uint8Array(str.length);
16954 for (var i =
0; i < str.length; ++i) nonce[i] = str.charCodeAt(i);
16956 throw new TypeError(
"unexpected nonce type");
16958 if (nonce.length <
10 || nonce.length
> 13) throw new IllegalArgumentError(
"illegal nonce length");
16959 lengthSize = lengthSize ||
15 - nonce.length;
16960 this.nonce = nonce;
16964 if (lengthSize !== undefined) {
16965 if (!is_number(lengthSize)) throw new TypeError(
"lengthSize must be a number");
16966 if (lengthSize <
2 || lengthSize
> 5 || nonce.length + lengthSize !==
15) throw new IllegalArgumentError(
"illegal lengthSize value");
16967 this.lengthSize = lengthSize;
16969 this.lengthSize = lengthSize =
4;
16972 var counter = options.counter;
16973 if (counter !== undefined) {
16974 if (iv === null) throw new IllegalStateError(
"iv is also required");
16975 if (!is_number(counter)) throw new TypeError(
"counter must be a number");
16976 this.counter = counter;
16980 var dataLength = options.dataLength;
16981 if (dataLength !== undefined) {
16982 if (!is_number(dataLength)) throw new TypeError(
"dataLength must be a number");
16983 if (dataLength <
0 || dataLength
> _ccm_data_maxLength || dataLength
> Math.pow(
2,
8 * lengthSize) -
1) throw new IllegalArgumentError("illegal dataLength value");
16984 this.dataLength = dataLength;
16985 var dataLeft = options.dataLeft || dataLength;
16986 if (!is_number(dataLeft)) throw new TypeError("dataLeft must be a number");
16987 if (dataLeft <
0 || dataLeft
> dataLength) throw new IllegalArgumentError("illegal dataLeft value");
16988 this.dataLeft = dataLeft;
16990 this.dataLength = dataLength = -
1;
16991 this.dataLeft = dataLength;
16993 var adata = options.adata;
16994 if (adata !== undefined) {
16995 if (iv !== null) throw new IllegalStateError("you must specify either adata or iv, not both");
16996 if (is_buffer(adata) || is_bytes(adata)) {
16997 adata = new Uint8Array(adata);
16998 } else if (is_string(adata)) {
17000 adata = new Uint8Array(str.length);
17001 for (var i =
0; i < str.length; ++i) adata[i] = str.charCodeAt(i);
17003 throw new TypeError("unexpected adata type");
17005 if (adata.byteLength ===
0 || adata.byteLength
> _ccm_adata_maxLength) throw new IllegalArgumentError("illegal adata length");
17006 this.adata = adata;
17009 this.adata = adata = null;
17011 if (dataLength !== -
1) _ccm_calculate_iv.call(this);
17014 function ccm_aes_encrypt_process(data) {
17015 if (!this.key) throw new IllegalStateError("no key is associated with the instance");
17016 var dpos = data.byteOffset ||
0, dlen = data.byteLength || data.length ||
0, asm = this.asm, heap = this.heap, nonce = this.nonce, counter = this.counter, pos = this.pos, len = this.len, rpos =
0, rlen = _aes_block_size * Math.floor((len + dlen) / _aes_block_size), wlen =
0;
17017 if ((counter -
1 <<
4) + len + dlen
> _ccm_data_maxLength) throw new RangeError("counter overflow");
17018 var result = new Uint8Array(rlen);
17019 var asm_args = [
0,
0, this.lengthSize -
1,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0 ];
17020 for (var i =
0; i < nonce.length; i++) asm_args[
3 + i] = nonce[i];
17022 wlen = _aes_heap_write(heap, pos + len, data, dpos, dlen);
17027 asm_args[
1] = len & ~
15;
17028 asm_args[
16] = counter /
4294967296 >>> 0;
17029 asm_args[
17] = counter
>>> 0;
17030 wlen = asm.ccm_encrypt.apply(asm, asm_args);
17031 result.set(heap.subarray(pos, pos + wlen), rpos);
17032 counter += wlen
>>> 4;
17038 pos = _aes_heap_start;
17042 this.result = result;
17043 this.counter = counter;
17048 function ccm_aes_encrypt_finish() {
17049 if (!this.key) throw new IllegalStateError(
"no key is associated with the instance");
17050 var asm = this.asm, heap = this.heap, nonce = this.nonce, counter = this.counter, tagSize = this.tagSize, pos = this.pos, len = this.len, wlen =
0;
17051 var result = new Uint8Array(len + tagSize);
17052 var asm_args = [
0,
0, this.lengthSize -
1,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0 ];
17053 for (var i =
0; i < nonce.length; i++) asm_args[
3 + i] = nonce[i];
17056 asm_args[
16] = counter /
4294967296 >>> 0;
17057 asm_args[
17] = counter
>>> 0;
17058 wlen = asm.ccm_encrypt.apply(asm, asm_args);
17059 result.set(heap.subarray(pos, pos + wlen));
17061 pos = _aes_heap_start;
17063 asm.save_state(_aes_heap_start);
17064 asm_args[
0] = _aes_heap_start, asm_args[
1] = _aes_block_size, asm_args[
16] =
0;
17066 asm.ccm_encrypt.apply(asm, asm_args);
17067 result.set(heap.subarray(_aes_heap_start, _aes_heap_start + tagSize), wlen);
17068 this.result = result;
17069 this.counter = counter;
17074 function ccm_aes_encrypt(data) {
17075 this.dataLength = this.dataLeft = data.byteLength || data.length ||
0;
17076 var result1 = ccm_aes_encrypt_process.call(this, data).result, result2 = ccm_aes_encrypt_finish.call(this).result, result;
17077 result = new Uint8Array(result1.length + result2.length);
17078 result.set(result1);
17079 result.set(result2, result1.length);
17080 this.result = result;
17083 function ccm_aes_decrypt_process(data) {
17084 if (!this.key) throw new IllegalStateError(
"no key is associated with the instance");
17085 var dpos = data.byteOffset ||
0, dlen = data.byteLength || data.length ||
0, asm = this.asm, heap = this.heap, nonce = this.nonce, counter = this.counter, tagSize = this.tagSize, pos = this.pos, len = this.len, rpos =
0, rlen = _aes_block_size * Math.floor((len + dlen) / _aes_block_size), wlen =
0;
17086 if ((counter -
1 <<
4) + len + dlen
> _ccm_data_maxLength) throw new RangeError("counter overflow");
17087 var result = new Uint8Array(rlen);
17088 var asm_args = [
0,
0, this.lengthSize -
1,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0 ];
17089 for (var i =
0; i < nonce.length; i++) asm_args[
3 + i] = nonce[i];
17091 wlen = _aes_heap_write(heap, pos + len, data, dpos, dlen);
17096 asm_args[
1] = len + dlen - tagSize
>= _aes_block_size ? dlen
>= tagSize ? len & ~
15 : len + dlen - tagSize & ~
15 :
0;
17097 asm_args[
16] = counter /
4294967296 >>> 0;
17098 asm_args[
17] = counter
>>> 0;
17099 wlen = asm.ccm_decrypt.apply(asm, asm_args);
17100 result.set(heap.subarray(pos, pos + wlen), rpos);
17101 counter += wlen
>>> 4;
17107 pos = _aes_heap_start;
17111 this.result = result.subarray(
0, rpos);
17112 this.counter = counter;
17117 function ccm_aes_decrypt_finish() {
17118 if (!this.key) throw new IllegalStateError(
"no key is associated with the instance");
17119 var asm = this.asm, heap = this.heap, nonce = this.nonce, counter = this.counter, tagSize = this.tagSize, pos = this.pos, len = this.len, rlen = len - tagSize, wlen =
0;
17120 if (len < tagSize) throw new IllegalStateError(
"authentication tag not found");
17121 var result = new Uint8Array(rlen), atag = new Uint8Array(heap.subarray(pos + rlen, pos + len));
17122 var asm_args = [
0,
0, this.lengthSize -
1,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0 ];
17123 for (var i =
0; i < nonce.length; i++) asm_args[
3 + i] = nonce[i];
17125 asm_args[
1] = rlen;
17126 asm_args[
16] = counter /
4294967296 >>> 0;
17127 asm_args[
17] = counter
>>> 0;
17128 wlen = asm.ccm_decrypt.apply(asm, asm_args);
17129 result.set(heap.subarray(pos, pos + wlen));
17131 pos = _aes_heap_start;
17133 asm.save_state(_aes_heap_start);
17134 asm_args[
0] = _aes_heap_start, asm_args[
1] = _aes_block_size, asm_args[
16] =
0;
17136 asm.ccm_encrypt.apply(asm, asm_args);
17138 for (var i =
0; i < tagSize; ++i) acheck |= atag[i] ^ heap[_aes_heap_start + i];
17139 if (acheck) throw new SecurityError(
"data integrity check failed");
17140 this.result = result;
17141 this.counter = counter;
17146 function ccm_aes_decrypt(data) {
17147 this.dataLength = this.dataLeft = data.byteLength || data.length ||
0;
17148 var result1 = ccm_aes_decrypt_process.call(this, data).result, result2 = ccm_aes_decrypt_finish.call(this).result, result;
17149 result = new Uint8Array(result1.length + result2.length);
17150 result.set(result1);
17151 result.set(result2, result1.length);
17152 this.result = result;
17155 var ccm_aes_prototype = ccm_aes_constructor.prototype;
17156 ccm_aes_prototype.reset = ccm_aes_reset;
17157 ccm_aes_prototype.encrypt = ccm_aes_encrypt;
17158 ccm_aes_prototype.decrypt = ccm_aes_decrypt;
17159 var ccm_aes_encrypt_prototype = ccm_aes_encrypt_constructor.prototype;
17160 ccm_aes_encrypt_prototype.reset = ccm_aes_reset;
17161 ccm_aes_encrypt_prototype.process = ccm_aes_encrypt_process;
17162 ccm_aes_encrypt_prototype.finish = ccm_aes_encrypt_finish;
17163 var ccm_aes_decrypt_prototype = ccm_aes_decrypt_constructor.prototype;
17164 ccm_aes_decrypt_prototype.reset = ccm_aes_reset;
17165 ccm_aes_decrypt_prototype.process = ccm_aes_decrypt_process;
17166 ccm_aes_decrypt_prototype.finish = ccm_aes_decrypt_finish;
17167 function cfb_aes_constructor(options) {
17168 this.padding = false;
17171 _aes_constructor.call(this, options);
17173 function cfb_aes_encrypt_constructor(options) {
17174 cfb_aes_constructor.call(this, options);
17176 function cfb_aes_decrypt_constructor(options) {
17177 cfb_aes_constructor.call(this, options);
17179 function cfb_aes_reset(options) {
17180 options = options || {};
17181 _aes_reset.call(this, options);
17182 _aes_init_iv.call(this, options.iv);
17185 function cfb_aes_encrypt_process(data) {
17186 if (!this.key) throw new IllegalStateError(
"no key is associated with the instance");
17187 var dpos = data.byteOffset ||
0, dlen = data.byteLength || data.length ||
0, asm = this.asm, heap = this.heap, pos = this.pos, len = this.len, rpos =
0, rlen = _aes_block_size * Math.floor((len + dlen) / _aes_block_size), wlen =
0;
17188 var result = new Uint8Array(rlen);
17190 wlen = _aes_heap_write(heap, pos + len, data, dpos, dlen);
17194 wlen = asm.cfb_encrypt(pos, _aes_block_size * Math.floor(len / _aes_block_size));
17195 result.set(heap.subarray(pos, pos + wlen), rpos);
17201 pos = _aes_heap_start;
17205 this.result = result;
17210 function cfb_aes_encrypt_finish() {
17211 if (!this.key) throw new IllegalStateError(
"no key is associated with the instance");
17212 var asm = this.asm, heap = this.heap, pos = this.pos, len = this.len;
17213 var result = new Uint8Array(len);
17214 asm.cfb_encrypt(pos, len);
17215 result.set(heap.subarray(pos, pos + len));
17216 this.result = result;
17217 this.pos = _aes_heap_start;
17221 function cfb_aes_encrypt(data) {
17222 var result1 = cfb_aes_encrypt_process.call(this, data).result, result2 = cfb_aes_encrypt_finish.call(this).result, result;
17223 result = new Uint8Array(result1.length + result2.length);
17224 result.set(result1);
17225 result.set(result2, result1.length);
17226 this.result = result;
17229 function cfb_aes_decrypt_process(data) {
17230 if (!this.key) throw new IllegalStateError(
"no key is associated with the instance");
17231 var dpos = data.byteOffset ||
0, dlen = data.byteLength || data.length ||
0, asm = this.asm, heap = this.heap, pos = this.pos, len = this.len, rpos =
0, rlen = _aes_block_size * Math.floor((len + dlen) / _aes_block_size), wlen =
0;
17232 var result = new Uint8Array(rlen);
17234 wlen = _aes_heap_write(heap, pos + len, data, dpos, dlen);
17238 wlen = asm.cfb_decrypt(pos, _aes_block_size * Math.floor(len / _aes_block_size));
17239 result.set(heap.subarray(pos, pos + wlen), rpos);
17245 pos = _aes_heap_start;
17249 this.result = result.subarray(
0, rpos);
17254 function cfb_aes_decrypt_finish() {
17255 if (!this.key) throw new IllegalStateError(
"no key is associated with the instance");
17256 var asm = this.asm, heap = this.heap, pos = this.pos, len = this.len;
17258 this.result = new Uint8Array(
0);
17259 this.pos = _aes_heap_start;
17263 var result = new Uint8Array(len);
17264 asm.cfb_decrypt(pos, len);
17265 result.set(heap.subarray(pos, pos + len));
17266 this.result = result;
17267 this.pos = _aes_heap_start;
17271 function cfb_aes_decrypt(data) {
17272 var result1 = cfb_aes_decrypt_process.call(this, data).result, result2 = cfb_aes_decrypt_finish.call(this).result, result;
17273 result = new Uint8Array(result1.length + result2.length);
17274 result.set(result1);
17275 result.set(result2, result1.length);
17276 this.result = result;
17279 var cfb_aes_encrypt_prototype = cfb_aes_encrypt_constructor.prototype;
17280 cfb_aes_encrypt_prototype.reset = cfb_aes_reset;
17281 cfb_aes_encrypt_prototype.process = cfb_aes_encrypt_process;
17282 cfb_aes_encrypt_prototype.finish = cfb_aes_encrypt_finish;
17283 var cfb_aes_decrypt_prototype = cfb_aes_decrypt_constructor.prototype;
17284 cfb_aes_decrypt_prototype.reset = cfb_aes_reset;
17285 cfb_aes_decrypt_prototype.process = cfb_aes_decrypt_process;
17286 cfb_aes_decrypt_prototype.finish = cfb_aes_decrypt_finish;
17287 var cfb_aes_prototype = cfb_aes_constructor.prototype;
17288 cfb_aes_prototype.reset = cfb_aes_reset;
17289 cfb_aes_prototype.encrypt = cfb_aes_encrypt;
17290 cfb_aes_prototype.decrypt = cfb_aes_decrypt;
17291 function sha256_asm(stdlib, foreign, buffer) {
17292 // Closure Compiler warning - commented out
17294 var H0 =
0, H1 =
0, H2 =
0, H3 =
0, H4 =
0, H5 =
0, H6 =
0, H7 =
0, TOTAL =
0;
17295 var I0 =
0, I1 =
0, I2 =
0, I3 =
0, I4 =
0, I5 =
0, I6 =
0, I7 =
0, O0 =
0, O1 =
0, O2 =
0, O3 =
0, O4 =
0, O5 =
0, O6 =
0, O7 =
0;
17296 var HEAP = new stdlib.Uint8Array(buffer);
17297 function _core(w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15) {
17314 var a =
0, b =
0, c =
0, d =
0, e =
0, f =
0, g =
0, h =
0, t =
0;
17323 t = w0 + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
1116352408 |
0;
17331 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17332 t = w1 + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
1899447441 |
0;
17340 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17341 t = w2 + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
3049323471 |
0;
17349 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17350 t = w3 + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
3921009573 |
0;
17358 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17359 t = w4 + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
961987163 |
0;
17367 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17368 t = w5 + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
1508970993 |
0;
17376 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17377 t = w6 + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
2453635748 |
0;
17385 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17386 t = w7 + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
2870763221 |
0;
17394 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17395 t = w8 + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
3624381080 |
0;
17403 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17404 t = w9 + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
310598401 |
0;
17412 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17413 t = w10 + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
607225278 |
0;
17421 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17422 t = w11 + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
1426881987 |
0;
17430 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17431 t = w12 + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
1925078388 |
0;
17439 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17440 t = w13 + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
2162078206 |
0;
17448 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17449 t = w14 + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
2614888103 |
0;
17457 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17458 t = w15 + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
3248222580 |
0;
17466 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17467 w0 = t = (w1
>>> 7 ^ w1
>>> 18 ^ w1
>>> 3 ^ w1 <<
25 ^ w1 <<
14) + (w14
>>> 17 ^ w14
>>> 19 ^ w14
>>> 10 ^ w14 <<
15 ^ w14 <<
13) + w0 + w9 |
0;
17468 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
3835390401 |
0;
17476 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17477 w1 = t = (w2
>>> 7 ^ w2
>>> 18 ^ w2
>>> 3 ^ w2 <<
25 ^ w2 <<
14) + (w15
>>> 17 ^ w15
>>> 19 ^ w15
>>> 10 ^ w15 <<
15 ^ w15 <<
13) + w1 + w10 |
0;
17478 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
4022224774 |
0;
17486 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17487 w2 = t = (w3
>>> 7 ^ w3
>>> 18 ^ w3
>>> 3 ^ w3 <<
25 ^ w3 <<
14) + (w0
>>> 17 ^ w0
>>> 19 ^ w0
>>> 10 ^ w0 <<
15 ^ w0 <<
13) + w2 + w11 |
0;
17488 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
264347078 |
0;
17496 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17497 w3 = t = (w4
>>> 7 ^ w4
>>> 18 ^ w4
>>> 3 ^ w4 <<
25 ^ w4 <<
14) + (w1
>>> 17 ^ w1
>>> 19 ^ w1
>>> 10 ^ w1 <<
15 ^ w1 <<
13) + w3 + w12 |
0;
17498 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
604807628 |
0;
17506 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17507 w4 = t = (w5
>>> 7 ^ w5
>>> 18 ^ w5
>>> 3 ^ w5 <<
25 ^ w5 <<
14) + (w2
>>> 17 ^ w2
>>> 19 ^ w2
>>> 10 ^ w2 <<
15 ^ w2 <<
13) + w4 + w13 |
0;
17508 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
770255983 |
0;
17516 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17517 w5 = t = (w6
>>> 7 ^ w6
>>> 18 ^ w6
>>> 3 ^ w6 <<
25 ^ w6 <<
14) + (w3
>>> 17 ^ w3
>>> 19 ^ w3
>>> 10 ^ w3 <<
15 ^ w3 <<
13) + w5 + w14 |
0;
17518 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
1249150122 |
0;
17526 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17527 w6 = t = (w7
>>> 7 ^ w7
>>> 18 ^ w7
>>> 3 ^ w7 <<
25 ^ w7 <<
14) + (w4
>>> 17 ^ w4
>>> 19 ^ w4
>>> 10 ^ w4 <<
15 ^ w4 <<
13) + w6 + w15 |
0;
17528 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
1555081692 |
0;
17536 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17537 w7 = t = (w8
>>> 7 ^ w8
>>> 18 ^ w8
>>> 3 ^ w8 <<
25 ^ w8 <<
14) + (w5
>>> 17 ^ w5
>>> 19 ^ w5
>>> 10 ^ w5 <<
15 ^ w5 <<
13) + w7 + w0 |
0;
17538 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
1996064986 |
0;
17546 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17547 w8 = t = (w9
>>> 7 ^ w9
>>> 18 ^ w9
>>> 3 ^ w9 <<
25 ^ w9 <<
14) + (w6
>>> 17 ^ w6
>>> 19 ^ w6
>>> 10 ^ w6 <<
15 ^ w6 <<
13) + w8 + w1 |
0;
17548 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
2554220882 |
0;
17556 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17557 w9 = t = (w10
>>> 7 ^ w10
>>> 18 ^ w10
>>> 3 ^ w10 <<
25 ^ w10 <<
14) + (w7
>>> 17 ^ w7
>>> 19 ^ w7
>>> 10 ^ w7 <<
15 ^ w7 <<
13) + w9 + w2 |
0;
17558 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
2821834349 |
0;
17566 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17567 w10 = t = (w11
>>> 7 ^ w11
>>> 18 ^ w11
>>> 3 ^ w11 <<
25 ^ w11 <<
14) + (w8
>>> 17 ^ w8
>>> 19 ^ w8
>>> 10 ^ w8 <<
15 ^ w8 <<
13) + w10 + w3 |
0;
17568 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
2952996808 |
0;
17576 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17577 w11 = t = (w12
>>> 7 ^ w12
>>> 18 ^ w12
>>> 3 ^ w12 <<
25 ^ w12 <<
14) + (w9
>>> 17 ^ w9
>>> 19 ^ w9
>>> 10 ^ w9 <<
15 ^ w9 <<
13) + w11 + w4 |
0;
17578 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
3210313671 |
0;
17586 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17587 w12 = t = (w13
>>> 7 ^ w13
>>> 18 ^ w13
>>> 3 ^ w13 <<
25 ^ w13 <<
14) + (w10
>>> 17 ^ w10
>>> 19 ^ w10
>>> 10 ^ w10 <<
15 ^ w10 <<
13) + w12 + w5 |
0;
17588 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
3336571891 |
0;
17596 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17597 w13 = t = (w14
>>> 7 ^ w14
>>> 18 ^ w14
>>> 3 ^ w14 <<
25 ^ w14 <<
14) + (w11
>>> 17 ^ w11
>>> 19 ^ w11
>>> 10 ^ w11 <<
15 ^ w11 <<
13) + w13 + w6 |
0;
17598 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
3584528711 |
0;
17606 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17607 w14 = t = (w15
>>> 7 ^ w15
>>> 18 ^ w15
>>> 3 ^ w15 <<
25 ^ w15 <<
14) + (w12
>>> 17 ^ w12
>>> 19 ^ w12
>>> 10 ^ w12 <<
15 ^ w12 <<
13) + w14 + w7 |
0;
17608 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
113926993 |
0;
17616 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17617 w15 = t = (w0
>>> 7 ^ w0
>>> 18 ^ w0
>>> 3 ^ w0 <<
25 ^ w0 <<
14) + (w13
>>> 17 ^ w13
>>> 19 ^ w13
>>> 10 ^ w13 <<
15 ^ w13 <<
13) + w15 + w8 |
0;
17618 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
338241895 |
0;
17626 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17627 w0 = t = (w1
>>> 7 ^ w1
>>> 18 ^ w1
>>> 3 ^ w1 <<
25 ^ w1 <<
14) + (w14
>>> 17 ^ w14
>>> 19 ^ w14
>>> 10 ^ w14 <<
15 ^ w14 <<
13) + w0 + w9 |
0;
17628 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
666307205 |
0;
17636 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17637 w1 = t = (w2
>>> 7 ^ w2
>>> 18 ^ w2
>>> 3 ^ w2 <<
25 ^ w2 <<
14) + (w15
>>> 17 ^ w15
>>> 19 ^ w15
>>> 10 ^ w15 <<
15 ^ w15 <<
13) + w1 + w10 |
0;
17638 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
773529912 |
0;
17646 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17647 w2 = t = (w3
>>> 7 ^ w3
>>> 18 ^ w3
>>> 3 ^ w3 <<
25 ^ w3 <<
14) + (w0
>>> 17 ^ w0
>>> 19 ^ w0
>>> 10 ^ w0 <<
15 ^ w0 <<
13) + w2 + w11 |
0;
17648 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
1294757372 |
0;
17656 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17657 w3 = t = (w4
>>> 7 ^ w4
>>> 18 ^ w4
>>> 3 ^ w4 <<
25 ^ w4 <<
14) + (w1
>>> 17 ^ w1
>>> 19 ^ w1
>>> 10 ^ w1 <<
15 ^ w1 <<
13) + w3 + w12 |
0;
17658 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
1396182291 |
0;
17666 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17667 w4 = t = (w5
>>> 7 ^ w5
>>> 18 ^ w5
>>> 3 ^ w5 <<
25 ^ w5 <<
14) + (w2
>>> 17 ^ w2
>>> 19 ^ w2
>>> 10 ^ w2 <<
15 ^ w2 <<
13) + w4 + w13 |
0;
17668 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
1695183700 |
0;
17676 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17677 w5 = t = (w6
>>> 7 ^ w6
>>> 18 ^ w6
>>> 3 ^ w6 <<
25 ^ w6 <<
14) + (w3
>>> 17 ^ w3
>>> 19 ^ w3
>>> 10 ^ w3 <<
15 ^ w3 <<
13) + w5 + w14 |
0;
17678 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
1986661051 |
0;
17686 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17687 w6 = t = (w7
>>> 7 ^ w7
>>> 18 ^ w7
>>> 3 ^ w7 <<
25 ^ w7 <<
14) + (w4
>>> 17 ^ w4
>>> 19 ^ w4
>>> 10 ^ w4 <<
15 ^ w4 <<
13) + w6 + w15 |
0;
17688 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
2177026350 |
0;
17696 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17697 w7 = t = (w8
>>> 7 ^ w8
>>> 18 ^ w8
>>> 3 ^ w8 <<
25 ^ w8 <<
14) + (w5
>>> 17 ^ w5
>>> 19 ^ w5
>>> 10 ^ w5 <<
15 ^ w5 <<
13) + w7 + w0 |
0;
17698 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
2456956037 |
0;
17706 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17707 w8 = t = (w9
>>> 7 ^ w9
>>> 18 ^ w9
>>> 3 ^ w9 <<
25 ^ w9 <<
14) + (w6
>>> 17 ^ w6
>>> 19 ^ w6
>>> 10 ^ w6 <<
15 ^ w6 <<
13) + w8 + w1 |
0;
17708 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
2730485921 |
0;
17716 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17717 w9 = t = (w10
>>> 7 ^ w10
>>> 18 ^ w10
>>> 3 ^ w10 <<
25 ^ w10 <<
14) + (w7
>>> 17 ^ w7
>>> 19 ^ w7
>>> 10 ^ w7 <<
15 ^ w7 <<
13) + w9 + w2 |
0;
17718 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
2820302411 |
0;
17726 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17727 w10 = t = (w11
>>> 7 ^ w11
>>> 18 ^ w11
>>> 3 ^ w11 <<
25 ^ w11 <<
14) + (w8
>>> 17 ^ w8
>>> 19 ^ w8
>>> 10 ^ w8 <<
15 ^ w8 <<
13) + w10 + w3 |
0;
17728 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
3259730800 |
0;
17736 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17737 w11 = t = (w12
>>> 7 ^ w12
>>> 18 ^ w12
>>> 3 ^ w12 <<
25 ^ w12 <<
14) + (w9
>>> 17 ^ w9
>>> 19 ^ w9
>>> 10 ^ w9 <<
15 ^ w9 <<
13) + w11 + w4 |
0;
17738 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
3345764771 |
0;
17746 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17747 w12 = t = (w13
>>> 7 ^ w13
>>> 18 ^ w13
>>> 3 ^ w13 <<
25 ^ w13 <<
14) + (w10
>>> 17 ^ w10
>>> 19 ^ w10
>>> 10 ^ w10 <<
15 ^ w10 <<
13) + w12 + w5 |
0;
17748 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
3516065817 |
0;
17756 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17757 w13 = t = (w14
>>> 7 ^ w14
>>> 18 ^ w14
>>> 3 ^ w14 <<
25 ^ w14 <<
14) + (w11
>>> 17 ^ w11
>>> 19 ^ w11
>>> 10 ^ w11 <<
15 ^ w11 <<
13) + w13 + w6 |
0;
17758 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
3600352804 |
0;
17766 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17767 w14 = t = (w15
>>> 7 ^ w15
>>> 18 ^ w15
>>> 3 ^ w15 <<
25 ^ w15 <<
14) + (w12
>>> 17 ^ w12
>>> 19 ^ w12
>>> 10 ^ w12 <<
15 ^ w12 <<
13) + w14 + w7 |
0;
17768 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
4094571909 |
0;
17776 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17777 w15 = t = (w0
>>> 7 ^ w0
>>> 18 ^ w0
>>> 3 ^ w0 <<
25 ^ w0 <<
14) + (w13
>>> 17 ^ w13
>>> 19 ^ w13
>>> 10 ^ w13 <<
15 ^ w13 <<
13) + w15 + w8 |
0;
17778 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
275423344 |
0;
17786 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17787 w0 = t = (w1
>>> 7 ^ w1
>>> 18 ^ w1
>>> 3 ^ w1 <<
25 ^ w1 <<
14) + (w14
>>> 17 ^ w14
>>> 19 ^ w14
>>> 10 ^ w14 <<
15 ^ w14 <<
13) + w0 + w9 |
0;
17788 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
430227734 |
0;
17796 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17797 w1 = t = (w2
>>> 7 ^ w2
>>> 18 ^ w2
>>> 3 ^ w2 <<
25 ^ w2 <<
14) + (w15
>>> 17 ^ w15
>>> 19 ^ w15
>>> 10 ^ w15 <<
15 ^ w15 <<
13) + w1 + w10 |
0;
17798 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
506948616 |
0;
17806 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17807 w2 = t = (w3
>>> 7 ^ w3
>>> 18 ^ w3
>>> 3 ^ w3 <<
25 ^ w3 <<
14) + (w0
>>> 17 ^ w0
>>> 19 ^ w0
>>> 10 ^ w0 <<
15 ^ w0 <<
13) + w2 + w11 |
0;
17808 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
659060556 |
0;
17816 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17817 w3 = t = (w4
>>> 7 ^ w4
>>> 18 ^ w4
>>> 3 ^ w4 <<
25 ^ w4 <<
14) + (w1
>>> 17 ^ w1
>>> 19 ^ w1
>>> 10 ^ w1 <<
15 ^ w1 <<
13) + w3 + w12 |
0;
17818 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
883997877 |
0;
17826 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17827 w4 = t = (w5
>>> 7 ^ w5
>>> 18 ^ w5
>>> 3 ^ w5 <<
25 ^ w5 <<
14) + (w2
>>> 17 ^ w2
>>> 19 ^ w2
>>> 10 ^ w2 <<
15 ^ w2 <<
13) + w4 + w13 |
0;
17828 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
958139571 |
0;
17836 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17837 w5 = t = (w6
>>> 7 ^ w6
>>> 18 ^ w6
>>> 3 ^ w6 <<
25 ^ w6 <<
14) + (w3
>>> 17 ^ w3
>>> 19 ^ w3
>>> 10 ^ w3 <<
15 ^ w3 <<
13) + w5 + w14 |
0;
17838 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
1322822218 |
0;
17846 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17847 w6 = t = (w7
>>> 7 ^ w7
>>> 18 ^ w7
>>> 3 ^ w7 <<
25 ^ w7 <<
14) + (w4
>>> 17 ^ w4
>>> 19 ^ w4
>>> 10 ^ w4 <<
15 ^ w4 <<
13) + w6 + w15 |
0;
17848 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
1537002063 |
0;
17856 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17857 w7 = t = (w8
>>> 7 ^ w8
>>> 18 ^ w8
>>> 3 ^ w8 <<
25 ^ w8 <<
14) + (w5
>>> 17 ^ w5
>>> 19 ^ w5
>>> 10 ^ w5 <<
15 ^ w5 <<
13) + w7 + w0 |
0;
17858 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
1747873779 |
0;
17866 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17867 w8 = t = (w9
>>> 7 ^ w9
>>> 18 ^ w9
>>> 3 ^ w9 <<
25 ^ w9 <<
14) + (w6
>>> 17 ^ w6
>>> 19 ^ w6
>>> 10 ^ w6 <<
15 ^ w6 <<
13) + w8 + w1 |
0;
17868 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
1955562222 |
0;
17876 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17877 w9 = t = (w10
>>> 7 ^ w10
>>> 18 ^ w10
>>> 3 ^ w10 <<
25 ^ w10 <<
14) + (w7
>>> 17 ^ w7
>>> 19 ^ w7
>>> 10 ^ w7 <<
15 ^ w7 <<
13) + w9 + w2 |
0;
17878 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
2024104815 |
0;
17886 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17887 w10 = t = (w11
>>> 7 ^ w11
>>> 18 ^ w11
>>> 3 ^ w11 <<
25 ^ w11 <<
14) + (w8
>>> 17 ^ w8
>>> 19 ^ w8
>>> 10 ^ w8 <<
15 ^ w8 <<
13) + w10 + w3 |
0;
17888 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
2227730452 |
0;
17896 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17897 w11 = t = (w12
>>> 7 ^ w12
>>> 18 ^ w12
>>> 3 ^ w12 <<
25 ^ w12 <<
14) + (w9
>>> 17 ^ w9
>>> 19 ^ w9
>>> 10 ^ w9 <<
15 ^ w9 <<
13) + w11 + w4 |
0;
17898 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
2361852424 |
0;
17906 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17907 w12 = t = (w13
>>> 7 ^ w13
>>> 18 ^ w13
>>> 3 ^ w13 <<
25 ^ w13 <<
14) + (w10
>>> 17 ^ w10
>>> 19 ^ w10
>>> 10 ^ w10 <<
15 ^ w10 <<
13) + w12 + w5 |
0;
17908 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
2428436474 |
0;
17916 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17917 w13 = t = (w14
>>> 7 ^ w14
>>> 18 ^ w14
>>> 3 ^ w14 <<
25 ^ w14 <<
14) + (w11
>>> 17 ^ w11
>>> 19 ^ w11
>>> 10 ^ w11 <<
15 ^ w11 <<
13) + w13 + w6 |
0;
17918 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
2756734187 |
0;
17926 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17927 w14 = t = (w15
>>> 7 ^ w15
>>> 18 ^ w15
>>> 3 ^ w15 <<
25 ^ w15 <<
14) + (w12
>>> 17 ^ w12
>>> 19 ^ w12
>>> 10 ^ w12 <<
15 ^ w12 <<
13) + w14 + w7 |
0;
17928 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
3204031479 |
0;
17936 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17937 w15 = t = (w0
>>> 7 ^ w0
>>> 18 ^ w0
>>> 3 ^ w0 <<
25 ^ w0 <<
14) + (w13
>>> 17 ^ w13
>>> 19 ^ w13
>>> 10 ^ w13 <<
15 ^ w13 <<
13) + w15 + w8 |
0;
17938 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
3329325298 |
0;
17946 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17956 function _core_heap(offset) {
17957 offset = offset |
0;
17958 _core(HEAP[offset |
0] <<
24 | HEAP[offset |
1] <<
16 | HEAP[offset |
2] <<
8 | HEAP[offset |
3], HEAP[offset |
4] <<
24 | HEAP[offset |
5] <<
16 | HEAP[offset |
6] <<
8 | HEAP[offset |
7], HEAP[offset |
8] <<
24 | HEAP[offset |
9] <<
16 | HEAP[offset |
10] <<
8 | HEAP[offset |
11], HEAP[offset |
12] <<
24 | HEAP[offset |
13] <<
16 | HEAP[offset |
14] <<
8 | HEAP[offset |
15], HEAP[offset |
16] <<
24 | HEAP[offset |
17] <<
16 | HEAP[offset |
18] <<
8 | HEAP[offset |
19], HEAP[offset |
20] <<
24 | HEAP[offset |
21] <<
16 | HEAP[offset |
22] <<
8 | HEAP[offset |
23], HEAP[offset |
24] <<
24 | HEAP[offset |
25] <<
16 | HEAP[offset |
26] <<
8 | HEAP[offset |
27], HEAP[offset |
28] <<
24 | HEAP[offset |
29] <<
16 | HEAP[offset |
30] <<
8 | HEAP[offset |
31], HEAP[offset |
32] <<
24 | HEAP[offset |
33] <<
16 | HEAP[offset |
34] <<
8 | HEAP[offset |
35], HEAP[offset |
36] <<
24 | HEAP[offset |
37] <<
16 | HEAP[offset |
38] <<
8 | HEAP[offset |
39], HEAP[offset |
40] <<
24 | HEAP[offset |
41] <<
16 | HEAP[offset |
42] <<
8 | HEAP[offset |
43], HEAP[offset |
44] <<
24 | HEAP[offset |
45] <<
16 | HEAP[offset |
46] <<
8 | HEAP[offset |
47], HEAP[offset |
48] <<
24 | HEAP[offset |
49] <<
16 | HEAP[offset |
50] <<
8 | HEAP[offset |
51], HEAP[offset |
52] <<
24 | HEAP[offset |
53] <<
16 | HEAP[offset |
54] <<
8 | HEAP[offset |
55], HEAP[offset |
56] <<
24 | HEAP[offset |
57] <<
16 | HEAP[offset |
58] <<
8 | HEAP[offset |
59], HEAP[offset |
60] <<
24 | HEAP[offset |
61] <<
16 | HEAP[offset |
62] <<
8 | HEAP[offset |
63]);
17960 function _state_to_heap(output) {
17961 output = output |
0;
17962 HEAP[output |
0] = H0
>>> 24;
17963 HEAP[output |
1] = H0
>>> 16 &
255;
17964 HEAP[output |
2] = H0
>>> 8 &
255;
17965 HEAP[output |
3] = H0 &
255;
17966 HEAP[output |
4] = H1
>>> 24;
17967 HEAP[output |
5] = H1
>>> 16 &
255;
17968 HEAP[output |
6] = H1
>>> 8 &
255;
17969 HEAP[output |
7] = H1 &
255;
17970 HEAP[output |
8] = H2
>>> 24;
17971 HEAP[output |
9] = H2
>>> 16 &
255;
17972 HEAP[output |
10] = H2
>>> 8 &
255;
17973 HEAP[output |
11] = H2 &
255;
17974 HEAP[output |
12] = H3
>>> 24;
17975 HEAP[output |
13] = H3
>>> 16 &
255;
17976 HEAP[output |
14] = H3
>>> 8 &
255;
17977 HEAP[output |
15] = H3 &
255;
17978 HEAP[output |
16] = H4
>>> 24;
17979 HEAP[output |
17] = H4
>>> 16 &
255;
17980 HEAP[output |
18] = H4
>>> 8 &
255;
17981 HEAP[output |
19] = H4 &
255;
17982 HEAP[output |
20] = H5
>>> 24;
17983 HEAP[output |
21] = H5
>>> 16 &
255;
17984 HEAP[output |
22] = H5
>>> 8 &
255;
17985 HEAP[output |
23] = H5 &
255;
17986 HEAP[output |
24] = H6
>>> 24;
17987 HEAP[output |
25] = H6
>>> 16 &
255;
17988 HEAP[output |
26] = H6
>>> 8 &
255;
17989 HEAP[output |
27] = H6 &
255;
17990 HEAP[output |
28] = H7
>>> 24;
17991 HEAP[output |
29] = H7
>>> 16 &
255;
17992 HEAP[output |
30] = H7
>>> 8 &
255;
17993 HEAP[output |
31] = H7 &
255;
18006 function init(h0, h1, h2, h3, h4, h5, h6, h7, total) {
18026 function process(offset, length) {
18027 offset = offset |
0;
18028 length = length |
0;
18030 if (offset &
63) return -
1;
18031 while ((length |
0)
>=
64) {
18032 _core_heap(offset);
18033 offset = offset +
64 |
0;
18034 length = length -
64 |
0;
18035 hashed = hashed +
64 |
0;
18037 TOTAL = TOTAL + hashed |
0;
18040 function finish(offset, length, output) {
18041 offset = offset |
0;
18042 length = length |
0;
18043 output = output |
0;
18044 var hashed =
0, i =
0;
18045 if (offset &
63) return -
1;
18046 if (~output) if (output &
31) return -
1;
18047 if ((length |
0)
>=
64) {
18048 hashed = process(offset, length) |
0;
18049 if ((hashed |
0) == -
1) return -
1;
18050 offset = offset + hashed |
0;
18051 length = length - hashed |
0;
18053 hashed = hashed + length |
0;
18054 TOTAL = TOTAL + length |
0;
18055 HEAP[offset | length] =
128;
18056 if ((length |
0)
>=
56) {
18057 for (i = length +
1 |
0; (i |
0) <
64; i = i +
1 |
0) HEAP[offset | i] =
0;
18058 _core_heap(offset);
18060 HEAP[offset |
0] =
0;
18062 for (i = length +
1 |
0; (i |
0) <
59; i = i +
1 |
0) HEAP[offset | i] =
0;
18063 HEAP[offset |
59] = TOTAL
>>> 29;
18064 HEAP[offset |
60] = TOTAL
>>> 21 &
255;
18065 HEAP[offset |
61] = TOTAL
>>> 13 &
255;
18066 HEAP[offset |
62] = TOTAL
>>> 5 &
255;
18067 HEAP[offset |
63] = TOTAL <<
3 &
255;
18068 _core_heap(offset);
18069 if (~output) _state_to_heap(output);
18072 function hmac_reset() {
18083 function _hmac_opad() {
18094 function hmac_init(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15) {
18112 _core(p0 ^
1549556828, p1 ^
1549556828, p2 ^
1549556828, p3 ^
1549556828, p4 ^
1549556828, p5 ^
1549556828, p6 ^
1549556828, p7 ^
1549556828, p8 ^
1549556828, p9 ^
1549556828, p10 ^
1549556828, p11 ^
1549556828, p12 ^
1549556828, p13 ^
1549556828, p14 ^
1549556828, p15 ^
1549556828);
18122 _core(p0 ^
909522486, p1 ^
909522486, p2 ^
909522486, p3 ^
909522486, p4 ^
909522486, p5 ^
909522486, p6 ^
909522486, p7 ^
909522486, p8 ^
909522486, p9 ^
909522486, p10 ^
909522486, p11 ^
909522486, p12 ^
909522486, p13 ^
909522486, p14 ^
909522486, p15 ^
909522486);
18133 function hmac_finish(offset, length, output) {
18134 offset = offset |
0;
18135 length = length |
0;
18136 output = output |
0;
18137 var t0 =
0, t1 =
0, t2 =
0, t3 =
0, t4 =
0, t5 =
0, t6 =
0, t7 =
0, hashed =
0;
18138 if (offset &
63) return -
1;
18139 if (~output) if (output &
31) return -
1;
18140 hashed = finish(offset, length, -
1) |
0;
18141 t0 = H0, t1 = H1, t2 = H2, t3 = H3, t4 = H4, t5 = H5, t6 = H6, t7 = H7;
18143 _core(t0, t1, t2, t3, t4, t5, t6, t7,
2147483648,
0,
0,
0,
0,
0,
0,
768);
18144 if (~output) _state_to_heap(output);
18147 function pbkdf2_generate_block(offset, length, block, count, output) {
18148 offset = offset |
0;
18149 length = length |
0;
18152 output = output |
0;
18153 var h0 =
0, h1 =
0, h2 =
0, h3 =
0, h4 =
0, h5 =
0, h6 =
0, h7 =
0, t0 =
0, t1 =
0, t2 =
0, t3 =
0, t4 =
0, t5 =
0, t6 =
0, t7 =
0;
18154 if (offset &
63) return -
1;
18155 if (~output) if (output &
31) return -
1;
18156 HEAP[offset + length |
0] = block
>>> 24;
18157 HEAP[offset + length +
1 |
0] = block
>>> 16 &
255;
18158 HEAP[offset + length +
2 |
0] = block
>>> 8 &
255;
18159 HEAP[offset + length +
3 |
0] = block &
255;
18160 // Closure compiler warning - The result of the 'bitor' operator is not being used
18161 //hmac_finish(offset, length +
4 |
0, -
1) |
0;
18162 hmac_finish(offset, length +
4 |
0, -
1);
18163 h0 = t0 = H0, h1 = t1 = H1, h2 = t2 = H2, h3 = t3 = H3, h4 = t4 = H4, h5 = t5 = H5,
18164 h6 = t6 = H6, h7 = t7 = H7;
18165 count = count -
1 |
0;
18166 while ((count |
0)
> 0) {
18168 _core(t0, t1, t2, t3, t4, t5, t6, t7,
2147483648,
0,
0,
0,
0,
0,
0,
768);
18169 t0 = H0, t1 = H1, t2 = H2, t3 = H3, t4 = H4, t5 = H5, t6 = H6, t7 = H7;
18171 _core(t0, t1, t2, t3, t4, t5, t6, t7,
2147483648,
0,
0,
0,
0,
0,
0,
768);
18172 t0 = H0, t1 = H1, t2 = H2, t3 = H3, t4 = H4, t5 = H5, t6 = H6, t7 = H7;
18181 count = count -
1 |
0;
18191 if (~output) _state_to_heap(output);
18199 hmac_reset: hmac_reset,
18200 hmac_init: hmac_init,
18201 hmac_finish: hmac_finish,
18202 pbkdf2_generate_block: pbkdf2_generate_block
18205 var _sha256_block_size =
64, _sha256_hash_size =
32;
18206 function sha256_constructor(options) {
18207 options = options || {};
18208 options.heapSize = options.heapSize ||
4096;
18209 if (options.heapSize <=
0 || options.heapSize %
4096) throw new IllegalArgumentError(
"heapSize must be a positive number and multiple of 4096");
18210 this.heap = options.heap || new Uint8Array(options.heapSize);
18211 this.asm = options.asm || sha256_asm(global, null, this.heap.buffer);
18212 this.BLOCK_SIZE = _sha256_block_size;
18213 this.HASH_SIZE = _sha256_hash_size;
18216 function sha256_reset() {
18217 this.result = null;
18223 function sha256_process(data) {
18224 if (this.result !== null) throw new IllegalStateError(
"state must be reset before processing new data");
18225 var dpos =
0, dlen =
0, clen =
0;
18226 if (is_buffer(data) || is_bytes(data)) {
18227 dpos = data.byteOffset ||
0;
18228 dlen = data.byteLength;
18229 } else if (is_string(data)) {
18230 dlen = data.length;
18232 throw new TypeError(
"data isn't of expected type");
18235 clen = this.heap.byteLength - this.pos - this.len;
18236 clen = clen < dlen ? clen : dlen;
18237 if (is_buffer(data) || is_bytes(data)) {
18238 this.heap.set(new Uint8Array(data.buffer || data, dpos, clen), this.pos + this.len);
18240 for (var i =
0; i < clen; i++) this.heap[this.pos + this.len + i] = data.charCodeAt(dpos + i);
18245 clen = this.asm.process(this.pos, this.len);
18246 if (clen < this.len) {
18256 function sha256_finish() {
18257 if (this.result !== null) throw new IllegalStateError(
"state must be reset before processing new data");
18258 this.asm.finish(this.pos, this.len,
0);
18259 this.result = new Uint8Array(_sha256_hash_size);
18260 this.result.set(this.heap.subarray(
0, _sha256_hash_size));
18265 sha256_constructor.BLOCK_SIZE = _sha256_block_size;
18266 sha256_constructor.HASH_SIZE = _sha256_hash_size;
18267 var sha256_prototype = sha256_constructor.prototype;
18268 sha256_prototype.reset = sha256_reset;
18269 sha256_prototype.process = sha256_process;
18270 sha256_prototype.finish = sha256_finish;
18271 function sha512_asm(stdlib, foreign, buffer) {
18272 // Closure Compiler warning - commented out
18274 var H0h =
0, H0l =
0, H1h =
0, H1l =
0, H2h =
0, H2l =
0, H3h =
0, H3l =
0, H4h =
0, H4l =
0, H5h =
0, H5l =
0, H6h =
0, H6l =
0, H7h =
0, H7l =
0, TOTAL =
0;
18275 var I0h =
0, I0l =
0, I1h =
0, I1l =
0, I2h =
0, I2l =
0, I3h =
0, I3l =
0, I4h =
0, I4l =
0, I5h =
0, I5l =
0, I6h =
0, I6l =
0, I7h =
0, I7l =
0, O0h =
0, O0l =
0, O1h =
0, O1l =
0, O2h =
0, O2l =
0, O3h =
0, O3l =
0, O4h =
0, O4l =
0, O5h =
0, O5l =
0, O6h =
0, O6l =
0, O7h =
0, O7l =
0;
18276 var HEAP = new stdlib.Uint8Array(buffer);
18277 function _core(w0h, w0l, w1h, w1l, w2h, w2l, w3h, w3l, w4h, w4l, w5h, w5l, w6h, w6l, w7h, w7l, w8h, w8l, w9h, w9l, w10h, w10l, w11h, w11l, w12h, w12l, w13h, w13l, w14h, w14l, w15h, w15l) {
18310 var ah =
0, al =
0, bh =
0, bl =
0, ch =
0, cl =
0, dh =
0, dl =
0, eh =
0, el =
0, fh =
0, fl =
0, gh =
0, gl =
0, hh =
0, hl =
0, th =
0, tl =
0, xl =
0;
18327 tl =
3609767458 + w0l |
0;
18328 th =
1116352408 + w0h + (tl
>>> 0 < w0l
>>> 0 ?
1 :
0) |
0;
18330 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
18331 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
18333 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18334 xl = gl ^ el & (fl ^ gl) |
0;
18336 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18344 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
18351 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
18352 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
18353 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
18355 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18356 tl =
602891725 + w1l |
0;
18357 th =
1899447441 + w1h + (tl
>>> 0 < w1l
>>> 0 ?
1 :
0) |
0;
18359 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
18360 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
18362 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18363 xl = gl ^ el & (fl ^ gl) |
0;
18365 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18373 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
18380 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
18381 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
18382 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
18384 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18385 tl =
3964484399 + w2l |
0;
18386 th =
3049323471 + w2h + (tl
>>> 0 < w2l
>>> 0 ?
1 :
0) |
0;
18388 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
18389 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
18391 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18392 xl = gl ^ el & (fl ^ gl) |
0;
18394 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18402 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
18409 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
18410 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
18411 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
18413 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18414 tl =
2173295548 + w3l |
0;
18415 th =
3921009573 + w3h + (tl
>>> 0 < w3l
>>> 0 ?
1 :
0) |
0;
18417 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
18418 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
18420 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18421 xl = gl ^ el & (fl ^ gl) |
0;
18423 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18431 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
18438 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
18439 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
18440 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
18442 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18443 tl =
4081628472 + w4l |
0;
18444 th =
961987163 + w4h + (tl
>>> 0 < w4l
>>> 0 ?
1 :
0) |
0;
18446 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
18447 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
18449 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18450 xl = gl ^ el & (fl ^ gl) |
0;
18452 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18460 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
18467 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
18468 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
18469 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
18471 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18472 tl =
3053834265 + w5l |
0;
18473 th =
1508970993 + w5h + (tl
>>> 0 < w5l
>>> 0 ?
1 :
0) |
0;
18475 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
18476 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
18478 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18479 xl = gl ^ el & (fl ^ gl) |
0;
18481 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18489 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
18496 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
18497 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
18498 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
18500 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18501 tl =
2937671579 + w6l |
0;
18502 th =
2453635748 + w6h + (tl
>>> 0 < w6l
>>> 0 ?
1 :
0) |
0;
18504 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
18505 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
18507 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18508 xl = gl ^ el & (fl ^ gl) |
0;
18510 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18518 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
18525 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
18526 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
18527 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
18529 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18530 tl =
3664609560 + w7l |
0;
18531 th =
2870763221 + w7h + (tl
>>> 0 < w7l
>>> 0 ?
1 :
0) |
0;
18533 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
18534 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
18536 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18537 xl = gl ^ el & (fl ^ gl) |
0;
18539 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18547 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
18554 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
18555 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
18556 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
18558 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18559 tl =
2734883394 + w8l |
0;
18560 th =
3624381080 + w8h + (tl
>>> 0 < w8l
>>> 0 ?
1 :
0) |
0;
18562 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
18563 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
18565 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18566 xl = gl ^ el & (fl ^ gl) |
0;
18568 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18576 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
18583 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
18584 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
18585 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
18587 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18588 tl =
1164996542 + w9l |
0;
18589 th =
310598401 + w9h + (tl
>>> 0 < w9l
>>> 0 ?
1 :
0) |
0;
18591 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
18592 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
18594 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18595 xl = gl ^ el & (fl ^ gl) |
0;
18597 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18605 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
18612 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
18613 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
18614 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
18616 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18617 tl =
1323610764 + w10l |
0;
18618 th =
607225278 + w10h + (tl
>>> 0 < w10l
>>> 0 ?
1 :
0) |
0;
18620 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
18621 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
18623 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18624 xl = gl ^ el & (fl ^ gl) |
0;
18626 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18634 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
18641 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
18642 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
18643 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
18645 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18646 tl =
3590304994 + w11l |
0;
18647 th =
1426881987 + w11h + (tl
>>> 0 < w11l
>>> 0 ?
1 :
0) |
0;
18649 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
18650 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
18652 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18653 xl = gl ^ el & (fl ^ gl) |
0;
18655 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18663 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
18670 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
18671 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
18672 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
18674 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18675 tl =
4068182383 + w12l |
0;
18676 th =
1925078388 + w12h + (tl
>>> 0 < w12l
>>> 0 ?
1 :
0) |
0;
18678 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
18679 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
18681 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18682 xl = gl ^ el & (fl ^ gl) |
0;
18684 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18692 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
18699 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
18700 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
18701 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
18703 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18704 tl =
991336113 + w13l |
0;
18705 th =
2162078206 + w13h + (tl
>>> 0 < w13l
>>> 0 ?
1 :
0) |
0;
18707 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
18708 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
18710 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18711 xl = gl ^ el & (fl ^ gl) |
0;
18713 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18721 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
18728 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
18729 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
18730 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
18732 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18733 tl =
633803317 + w14l |
0;
18734 th =
2614888103 + w14h + (tl
>>> 0 < w14l
>>> 0 ?
1 :
0) |
0;
18736 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
18737 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
18739 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18740 xl = gl ^ el & (fl ^ gl) |
0;
18742 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18750 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
18757 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
18758 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
18759 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
18761 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18762 tl =
3479774868 + w15l |
0;
18763 th =
3248222580 + w15h + (tl
>>> 0 < w15l
>>> 0 ?
1 :
0) |
0;
18765 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
18766 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
18768 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18769 xl = gl ^ el & (fl ^ gl) |
0;
18771 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18779 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
18786 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
18787 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
18788 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
18790 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18791 w0l = w0l + w9l |
0;
18792 w0h = w0h + w9h + (w0l
>>> 0 < w9l
>>> 0 ?
1 :
0) |
0;
18793 xl = (w1l
>>> 1 | w1h <<
31) ^ (w1l
>>> 8 | w1h <<
24) ^ (w1l
>>> 7 | w1h <<
25) |
0;
18794 w0l = w0l + xl |
0;
18795 w0h = w0h + ((w1h
>>> 1 | w1l <<
31) ^ (w1h
>>> 8 | w1l <<
24) ^ w1h
>>> 7) + (w0l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18796 xl = (w14l
>>> 19 | w14h <<
13) ^ (w14l <<
3 | w14h
>>> 29) ^ (w14l
>>> 6 | w14h <<
26) |
0;
18797 w0l = w0l + xl |
0;
18798 w0h = w0h + ((w14h
>>> 19 | w14l <<
13) ^ (w14h <<
3 | w14l
>>> 29) ^ w14h
>>> 6) + (w0l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18799 tl =
2666613458 + w0l |
0;
18800 th =
3835390401 + w0h + (tl
>>> 0 < w0l
>>> 0 ?
1 :
0) |
0;
18802 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
18803 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
18805 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18806 xl = gl ^ el & (fl ^ gl) |
0;
18808 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18816 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
18823 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
18824 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
18825 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
18827 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18828 w1l = w1l + w10l |
0;
18829 w1h = w1h + w10h + (w1l
>>> 0 < w10l
>>> 0 ?
1 :
0) |
0;
18830 xl = (w2l
>>> 1 | w2h <<
31) ^ (w2l
>>> 8 | w2h <<
24) ^ (w2l
>>> 7 | w2h <<
25) |
0;
18831 w1l = w1l + xl |
0;
18832 w1h = w1h + ((w2h
>>> 1 | w2l <<
31) ^ (w2h
>>> 8 | w2l <<
24) ^ w2h
>>> 7) + (w1l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18833 xl = (w15l
>>> 19 | w15h <<
13) ^ (w15l <<
3 | w15h
>>> 29) ^ (w15l
>>> 6 | w15h <<
26) |
0;
18834 w1l = w1l + xl |
0;
18835 w1h = w1h + ((w15h
>>> 19 | w15l <<
13) ^ (w15h <<
3 | w15l
>>> 29) ^ w15h
>>> 6) + (w1l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18836 tl =
944711139 + w1l |
0;
18837 th =
4022224774 + w1h + (tl
>>> 0 < w1l
>>> 0 ?
1 :
0) |
0;
18839 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
18840 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
18842 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18843 xl = gl ^ el & (fl ^ gl) |
0;
18845 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18853 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
18860 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
18861 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
18862 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
18864 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18865 w2l = w2l + w11l |
0;
18866 w2h = w2h + w11h + (w2l
>>> 0 < w11l
>>> 0 ?
1 :
0) |
0;
18867 xl = (w3l
>>> 1 | w3h <<
31) ^ (w3l
>>> 8 | w3h <<
24) ^ (w3l
>>> 7 | w3h <<
25) |
0;
18868 w2l = w2l + xl |
0;
18869 w2h = w2h + ((w3h
>>> 1 | w3l <<
31) ^ (w3h
>>> 8 | w3l <<
24) ^ w3h
>>> 7) + (w2l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18870 xl = (w0l
>>> 19 | w0h <<
13) ^ (w0l <<
3 | w0h
>>> 29) ^ (w0l
>>> 6 | w0h <<
26) |
0;
18871 w2l = w2l + xl |
0;
18872 w2h = w2h + ((w0h
>>> 19 | w0l <<
13) ^ (w0h <<
3 | w0l
>>> 29) ^ w0h
>>> 6) + (w2l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18873 tl =
2341262773 + w2l |
0;
18874 th =
264347078 + w2h + (tl
>>> 0 < w2l
>>> 0 ?
1 :
0) |
0;
18876 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
18877 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
18879 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18880 xl = gl ^ el & (fl ^ gl) |
0;
18882 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18890 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
18897 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
18898 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
18899 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
18901 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18902 w3l = w3l + w12l |
0;
18903 w3h = w3h + w12h + (w3l
>>> 0 < w12l
>>> 0 ?
1 :
0) |
0;
18904 xl = (w4l
>>> 1 | w4h <<
31) ^ (w4l
>>> 8 | w4h <<
24) ^ (w4l
>>> 7 | w4h <<
25) |
0;
18905 w3l = w3l + xl |
0;
18906 w3h = w3h + ((w4h
>>> 1 | w4l <<
31) ^ (w4h
>>> 8 | w4l <<
24) ^ w4h
>>> 7) + (w3l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18907 xl = (w1l
>>> 19 | w1h <<
13) ^ (w1l <<
3 | w1h
>>> 29) ^ (w1l
>>> 6 | w1h <<
26) |
0;
18908 w3l = w3l + xl |
0;
18909 w3h = w3h + ((w1h
>>> 19 | w1l <<
13) ^ (w1h <<
3 | w1l
>>> 29) ^ w1h
>>> 6) + (w3l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18910 tl =
2007800933 + w3l |
0;
18911 th =
604807628 + w3h + (tl
>>> 0 < w3l
>>> 0 ?
1 :
0) |
0;
18913 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
18914 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
18916 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18917 xl = gl ^ el & (fl ^ gl) |
0;
18919 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18927 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
18934 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
18935 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
18936 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
18938 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18939 w4l = w4l + w13l |
0;
18940 w4h = w4h + w13h + (w4l
>>> 0 < w13l
>>> 0 ?
1 :
0) |
0;
18941 xl = (w5l
>>> 1 | w5h <<
31) ^ (w5l
>>> 8 | w5h <<
24) ^ (w5l
>>> 7 | w5h <<
25) |
0;
18942 w4l = w4l + xl |
0;
18943 w4h = w4h + ((w5h
>>> 1 | w5l <<
31) ^ (w5h
>>> 8 | w5l <<
24) ^ w5h
>>> 7) + (w4l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18944 xl = (w2l
>>> 19 | w2h <<
13) ^ (w2l <<
3 | w2h
>>> 29) ^ (w2l
>>> 6 | w2h <<
26) |
0;
18945 w4l = w4l + xl |
0;
18946 w4h = w4h + ((w2h
>>> 19 | w2l <<
13) ^ (w2h <<
3 | w2l
>>> 29) ^ w2h
>>> 6) + (w4l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18947 tl =
1495990901 + w4l |
0;
18948 th =
770255983 + w4h + (tl
>>> 0 < w4l
>>> 0 ?
1 :
0) |
0;
18950 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
18951 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
18953 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18954 xl = gl ^ el & (fl ^ gl) |
0;
18956 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18964 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
18971 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
18972 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
18973 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
18975 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18976 w5l = w5l + w14l |
0;
18977 w5h = w5h + w14h + (w5l
>>> 0 < w14l
>>> 0 ?
1 :
0) |
0;
18978 xl = (w6l
>>> 1 | w6h <<
31) ^ (w6l
>>> 8 | w6h <<
24) ^ (w6l
>>> 7 | w6h <<
25) |
0;
18979 w5l = w5l + xl |
0;
18980 w5h = w5h + ((w6h
>>> 1 | w6l <<
31) ^ (w6h
>>> 8 | w6l <<
24) ^ w6h
>>> 7) + (w5l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18981 xl = (w3l
>>> 19 | w3h <<
13) ^ (w3l <<
3 | w3h
>>> 29) ^ (w3l
>>> 6 | w3h <<
26) |
0;
18982 w5l = w5l + xl |
0;
18983 w5h = w5h + ((w3h
>>> 19 | w3l <<
13) ^ (w3h <<
3 | w3l
>>> 29) ^ w3h
>>> 6) + (w5l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18984 tl =
1856431235 + w5l |
0;
18985 th =
1249150122 + w5h + (tl
>>> 0 < w5l
>>> 0 ?
1 :
0) |
0;
18987 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
18988 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
18990 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18991 xl = gl ^ el & (fl ^ gl) |
0;
18993 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19001 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19008 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19009 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19010 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19012 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19013 w6l = w6l + w15l |
0;
19014 w6h = w6h + w15h + (w6l
>>> 0 < w15l
>>> 0 ?
1 :
0) |
0;
19015 xl = (w7l
>>> 1 | w7h <<
31) ^ (w7l
>>> 8 | w7h <<
24) ^ (w7l
>>> 7 | w7h <<
25) |
0;
19016 w6l = w6l + xl |
0;
19017 w6h = w6h + ((w7h
>>> 1 | w7l <<
31) ^ (w7h
>>> 8 | w7l <<
24) ^ w7h
>>> 7) + (w6l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19018 xl = (w4l
>>> 19 | w4h <<
13) ^ (w4l <<
3 | w4h
>>> 29) ^ (w4l
>>> 6 | w4h <<
26) |
0;
19019 w6l = w6l + xl |
0;
19020 w6h = w6h + ((w4h
>>> 19 | w4l <<
13) ^ (w4h <<
3 | w4l
>>> 29) ^ w4h
>>> 6) + (w6l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19021 tl =
3175218132 + w6l |
0;
19022 th =
1555081692 + w6h + (tl
>>> 0 < w6l
>>> 0 ?
1 :
0) |
0;
19024 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19025 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19027 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19028 xl = gl ^ el & (fl ^ gl) |
0;
19030 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19038 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19045 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19046 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19047 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19049 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19050 w7l = w7l + w0l |
0;
19051 w7h = w7h + w0h + (w7l
>>> 0 < w0l
>>> 0 ?
1 :
0) |
0;
19052 xl = (w8l
>>> 1 | w8h <<
31) ^ (w8l
>>> 8 | w8h <<
24) ^ (w8l
>>> 7 | w8h <<
25) |
0;
19053 w7l = w7l + xl |
0;
19054 w7h = w7h + ((w8h
>>> 1 | w8l <<
31) ^ (w8h
>>> 8 | w8l <<
24) ^ w8h
>>> 7) + (w7l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19055 xl = (w5l
>>> 19 | w5h <<
13) ^ (w5l <<
3 | w5h
>>> 29) ^ (w5l
>>> 6 | w5h <<
26) |
0;
19056 w7l = w7l + xl |
0;
19057 w7h = w7h + ((w5h
>>> 19 | w5l <<
13) ^ (w5h <<
3 | w5l
>>> 29) ^ w5h
>>> 6) + (w7l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19058 tl =
2198950837 + w7l |
0;
19059 th =
1996064986 + w7h + (tl
>>> 0 < w7l
>>> 0 ?
1 :
0) |
0;
19061 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19062 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19064 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19065 xl = gl ^ el & (fl ^ gl) |
0;
19067 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19075 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19082 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19083 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19084 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19086 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19087 w8l = w8l + w1l |
0;
19088 w8h = w8h + w1h + (w8l
>>> 0 < w1l
>>> 0 ?
1 :
0) |
0;
19089 xl = (w9l
>>> 1 | w9h <<
31) ^ (w9l
>>> 8 | w9h <<
24) ^ (w9l
>>> 7 | w9h <<
25) |
0;
19090 w8l = w8l + xl |
0;
19091 w8h = w8h + ((w9h
>>> 1 | w9l <<
31) ^ (w9h
>>> 8 | w9l <<
24) ^ w9h
>>> 7) + (w8l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19092 xl = (w6l
>>> 19 | w6h <<
13) ^ (w6l <<
3 | w6h
>>> 29) ^ (w6l
>>> 6 | w6h <<
26) |
0;
19093 w8l = w8l + xl |
0;
19094 w8h = w8h + ((w6h
>>> 19 | w6l <<
13) ^ (w6h <<
3 | w6l
>>> 29) ^ w6h
>>> 6) + (w8l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19095 tl =
3999719339 + w8l |
0;
19096 th =
2554220882 + w8h + (tl
>>> 0 < w8l
>>> 0 ?
1 :
0) |
0;
19098 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19099 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19101 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19102 xl = gl ^ el & (fl ^ gl) |
0;
19104 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19112 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19119 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19120 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19121 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19123 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19124 w9l = w9l + w2l |
0;
19125 w9h = w9h + w2h + (w9l
>>> 0 < w2l
>>> 0 ?
1 :
0) |
0;
19126 xl = (w10l
>>> 1 | w10h <<
31) ^ (w10l
>>> 8 | w10h <<
24) ^ (w10l
>>> 7 | w10h <<
25) |
0;
19127 w9l = w9l + xl |
0;
19128 w9h = w9h + ((w10h
>>> 1 | w10l <<
31) ^ (w10h
>>> 8 | w10l <<
24) ^ w10h
>>> 7) + (w9l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19129 xl = (w7l
>>> 19 | w7h <<
13) ^ (w7l <<
3 | w7h
>>> 29) ^ (w7l
>>> 6 | w7h <<
26) |
0;
19130 w9l = w9l + xl |
0;
19131 w9h = w9h + ((w7h
>>> 19 | w7l <<
13) ^ (w7h <<
3 | w7l
>>> 29) ^ w7h
>>> 6) + (w9l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19132 tl =
766784016 + w9l |
0;
19133 th =
2821834349 + w9h + (tl
>>> 0 < w9l
>>> 0 ?
1 :
0) |
0;
19135 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19136 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19138 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19139 xl = gl ^ el & (fl ^ gl) |
0;
19141 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19149 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19156 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19157 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19158 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19160 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19161 w10l = w10l + w3l |
0;
19162 w10h = w10h + w3h + (w10l
>>> 0 < w3l
>>> 0 ?
1 :
0) |
0;
19163 xl = (w11l
>>> 1 | w11h <<
31) ^ (w11l
>>> 8 | w11h <<
24) ^ (w11l
>>> 7 | w11h <<
25) |
0;
19164 w10l = w10l + xl |
0;
19165 w10h = w10h + ((w11h
>>> 1 | w11l <<
31) ^ (w11h
>>> 8 | w11l <<
24) ^ w11h
>>> 7) + (w10l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19166 xl = (w8l
>>> 19 | w8h <<
13) ^ (w8l <<
3 | w8h
>>> 29) ^ (w8l
>>> 6 | w8h <<
26) |
0;
19167 w10l = w10l + xl |
0;
19168 w10h = w10h + ((w8h
>>> 19 | w8l <<
13) ^ (w8h <<
3 | w8l
>>> 29) ^ w8h
>>> 6) + (w10l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19169 tl =
2566594879 + w10l |
0;
19170 th =
2952996808 + w10h + (tl
>>> 0 < w10l
>>> 0 ?
1 :
0) |
0;
19172 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19173 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19175 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19176 xl = gl ^ el & (fl ^ gl) |
0;
19178 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19186 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19193 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19194 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19195 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19197 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19198 w11l = w11l + w4l |
0;
19199 w11h = w11h + w4h + (w11l
>>> 0 < w4l
>>> 0 ?
1 :
0) |
0;
19200 xl = (w12l
>>> 1 | w12h <<
31) ^ (w12l
>>> 8 | w12h <<
24) ^ (w12l
>>> 7 | w12h <<
25) |
0;
19201 w11l = w11l + xl |
0;
19202 w11h = w11h + ((w12h
>>> 1 | w12l <<
31) ^ (w12h
>>> 8 | w12l <<
24) ^ w12h
>>> 7) + (w11l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19203 xl = (w9l
>>> 19 | w9h <<
13) ^ (w9l <<
3 | w9h
>>> 29) ^ (w9l
>>> 6 | w9h <<
26) |
0;
19204 w11l = w11l + xl |
0;
19205 w11h = w11h + ((w9h
>>> 19 | w9l <<
13) ^ (w9h <<
3 | w9l
>>> 29) ^ w9h
>>> 6) + (w11l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19206 tl =
3203337956 + w11l |
0;
19207 th =
3210313671 + w11h + (tl
>>> 0 < w11l
>>> 0 ?
1 :
0) |
0;
19209 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19210 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19212 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19213 xl = gl ^ el & (fl ^ gl) |
0;
19215 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19223 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19230 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19231 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19232 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19234 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19235 w12l = w12l + w5l |
0;
19236 w12h = w12h + w5h + (w12l
>>> 0 < w5l
>>> 0 ?
1 :
0) |
0;
19237 xl = (w13l
>>> 1 | w13h <<
31) ^ (w13l
>>> 8 | w13h <<
24) ^ (w13l
>>> 7 | w13h <<
25) |
0;
19238 w12l = w12l + xl |
0;
19239 w12h = w12h + ((w13h
>>> 1 | w13l <<
31) ^ (w13h
>>> 8 | w13l <<
24) ^ w13h
>>> 7) + (w12l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19240 xl = (w10l
>>> 19 | w10h <<
13) ^ (w10l <<
3 | w10h
>>> 29) ^ (w10l
>>> 6 | w10h <<
26) |
0;
19241 w12l = w12l + xl |
0;
19242 w12h = w12h + ((w10h
>>> 19 | w10l <<
13) ^ (w10h <<
3 | w10l
>>> 29) ^ w10h
>>> 6) + (w12l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19243 tl =
1034457026 + w12l |
0;
19244 th =
3336571891 + w12h + (tl
>>> 0 < w12l
>>> 0 ?
1 :
0) |
0;
19246 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19247 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19249 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19250 xl = gl ^ el & (fl ^ gl) |
0;
19252 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19260 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19267 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19268 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19269 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19271 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19272 w13l = w13l + w6l |
0;
19273 w13h = w13h + w6h + (w13l
>>> 0 < w6l
>>> 0 ?
1 :
0) |
0;
19274 xl = (w14l
>>> 1 | w14h <<
31) ^ (w14l
>>> 8 | w14h <<
24) ^ (w14l
>>> 7 | w14h <<
25) |
0;
19275 w13l = w13l + xl |
0;
19276 w13h = w13h + ((w14h
>>> 1 | w14l <<
31) ^ (w14h
>>> 8 | w14l <<
24) ^ w14h
>>> 7) + (w13l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19277 xl = (w11l
>>> 19 | w11h <<
13) ^ (w11l <<
3 | w11h
>>> 29) ^ (w11l
>>> 6 | w11h <<
26) |
0;
19278 w13l = w13l + xl |
0;
19279 w13h = w13h + ((w11h
>>> 19 | w11l <<
13) ^ (w11h <<
3 | w11l
>>> 29) ^ w11h
>>> 6) + (w13l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19280 tl =
2466948901 + w13l |
0;
19281 th =
3584528711 + w13h + (tl
>>> 0 < w13l
>>> 0 ?
1 :
0) |
0;
19283 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19284 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19286 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19287 xl = gl ^ el & (fl ^ gl) |
0;
19289 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19297 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19304 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19305 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19306 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19308 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19309 w14l = w14l + w7l |
0;
19310 w14h = w14h + w7h + (w14l
>>> 0 < w7l
>>> 0 ?
1 :
0) |
0;
19311 xl = (w15l
>>> 1 | w15h <<
31) ^ (w15l
>>> 8 | w15h <<
24) ^ (w15l
>>> 7 | w15h <<
25) |
0;
19312 w14l = w14l + xl |
0;
19313 w14h = w14h + ((w15h
>>> 1 | w15l <<
31) ^ (w15h
>>> 8 | w15l <<
24) ^ w15h
>>> 7) + (w14l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19314 xl = (w12l
>>> 19 | w12h <<
13) ^ (w12l <<
3 | w12h
>>> 29) ^ (w12l
>>> 6 | w12h <<
26) |
0;
19315 w14l = w14l + xl |
0;
19316 w14h = w14h + ((w12h
>>> 19 | w12l <<
13) ^ (w12h <<
3 | w12l
>>> 29) ^ w12h
>>> 6) + (w14l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19317 tl =
3758326383 + w14l |
0;
19318 th =
113926993 + w14h + (tl
>>> 0 < w14l
>>> 0 ?
1 :
0) |
0;
19320 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19321 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19323 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19324 xl = gl ^ el & (fl ^ gl) |
0;
19326 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19334 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19341 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19342 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19343 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19345 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19346 w15l = w15l + w8l |
0;
19347 w15h = w15h + w8h + (w15l
>>> 0 < w8l
>>> 0 ?
1 :
0) |
0;
19348 xl = (w0l
>>> 1 | w0h <<
31) ^ (w0l
>>> 8 | w0h <<
24) ^ (w0l
>>> 7 | w0h <<
25) |
0;
19349 w15l = w15l + xl |
0;
19350 w15h = w15h + ((w0h
>>> 1 | w0l <<
31) ^ (w0h
>>> 8 | w0l <<
24) ^ w0h
>>> 7) + (w15l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19351 xl = (w13l
>>> 19 | w13h <<
13) ^ (w13l <<
3 | w13h
>>> 29) ^ (w13l
>>> 6 | w13h <<
26) |
0;
19352 w15l = w15l + xl |
0;
19353 w15h = w15h + ((w13h
>>> 19 | w13l <<
13) ^ (w13h <<
3 | w13l
>>> 29) ^ w13h
>>> 6) + (w15l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19354 tl =
168717936 + w15l |
0;
19355 th =
338241895 + w15h + (tl
>>> 0 < w15l
>>> 0 ?
1 :
0) |
0;
19357 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19358 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19360 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19361 xl = gl ^ el & (fl ^ gl) |
0;
19363 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19371 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19378 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19379 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19380 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19382 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19383 w0l = w0l + w9l |
0;
19384 w0h = w0h + w9h + (w0l
>>> 0 < w9l
>>> 0 ?
1 :
0) |
0;
19385 xl = (w1l
>>> 1 | w1h <<
31) ^ (w1l
>>> 8 | w1h <<
24) ^ (w1l
>>> 7 | w1h <<
25) |
0;
19386 w0l = w0l + xl |
0;
19387 w0h = w0h + ((w1h
>>> 1 | w1l <<
31) ^ (w1h
>>> 8 | w1l <<
24) ^ w1h
>>> 7) + (w0l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19388 xl = (w14l
>>> 19 | w14h <<
13) ^ (w14l <<
3 | w14h
>>> 29) ^ (w14l
>>> 6 | w14h <<
26) |
0;
19389 w0l = w0l + xl |
0;
19390 w0h = w0h + ((w14h
>>> 19 | w14l <<
13) ^ (w14h <<
3 | w14l
>>> 29) ^ w14h
>>> 6) + (w0l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19391 tl =
1188179964 + w0l |
0;
19392 th =
666307205 + w0h + (tl
>>> 0 < w0l
>>> 0 ?
1 :
0) |
0;
19394 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19395 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19397 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19398 xl = gl ^ el & (fl ^ gl) |
0;
19400 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19408 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19415 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19416 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19417 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19419 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19420 w1l = w1l + w10l |
0;
19421 w1h = w1h + w10h + (w1l
>>> 0 < w10l
>>> 0 ?
1 :
0) |
0;
19422 xl = (w2l
>>> 1 | w2h <<
31) ^ (w2l
>>> 8 | w2h <<
24) ^ (w2l
>>> 7 | w2h <<
25) |
0;
19423 w1l = w1l + xl |
0;
19424 w1h = w1h + ((w2h
>>> 1 | w2l <<
31) ^ (w2h
>>> 8 | w2l <<
24) ^ w2h
>>> 7) + (w1l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19425 xl = (w15l
>>> 19 | w15h <<
13) ^ (w15l <<
3 | w15h
>>> 29) ^ (w15l
>>> 6 | w15h <<
26) |
0;
19426 w1l = w1l + xl |
0;
19427 w1h = w1h + ((w15h
>>> 19 | w15l <<
13) ^ (w15h <<
3 | w15l
>>> 29) ^ w15h
>>> 6) + (w1l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19428 tl =
1546045734 + w1l |
0;
19429 th =
773529912 + w1h + (tl
>>> 0 < w1l
>>> 0 ?
1 :
0) |
0;
19431 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19432 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19434 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19435 xl = gl ^ el & (fl ^ gl) |
0;
19437 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19445 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19452 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19453 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19454 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19456 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19457 w2l = w2l + w11l |
0;
19458 w2h = w2h + w11h + (w2l
>>> 0 < w11l
>>> 0 ?
1 :
0) |
0;
19459 xl = (w3l
>>> 1 | w3h <<
31) ^ (w3l
>>> 8 | w3h <<
24) ^ (w3l
>>> 7 | w3h <<
25) |
0;
19460 w2l = w2l + xl |
0;
19461 w2h = w2h + ((w3h
>>> 1 | w3l <<
31) ^ (w3h
>>> 8 | w3l <<
24) ^ w3h
>>> 7) + (w2l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19462 xl = (w0l
>>> 19 | w0h <<
13) ^ (w0l <<
3 | w0h
>>> 29) ^ (w0l
>>> 6 | w0h <<
26) |
0;
19463 w2l = w2l + xl |
0;
19464 w2h = w2h + ((w0h
>>> 19 | w0l <<
13) ^ (w0h <<
3 | w0l
>>> 29) ^ w0h
>>> 6) + (w2l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19465 tl =
1522805485 + w2l |
0;
19466 th =
1294757372 + w2h + (tl
>>> 0 < w2l
>>> 0 ?
1 :
0) |
0;
19468 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19469 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19471 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19472 xl = gl ^ el & (fl ^ gl) |
0;
19474 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19482 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19489 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19490 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19491 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19493 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19494 w3l = w3l + w12l |
0;
19495 w3h = w3h + w12h + (w3l
>>> 0 < w12l
>>> 0 ?
1 :
0) |
0;
19496 xl = (w4l
>>> 1 | w4h <<
31) ^ (w4l
>>> 8 | w4h <<
24) ^ (w4l
>>> 7 | w4h <<
25) |
0;
19497 w3l = w3l + xl |
0;
19498 w3h = w3h + ((w4h
>>> 1 | w4l <<
31) ^ (w4h
>>> 8 | w4l <<
24) ^ w4h
>>> 7) + (w3l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19499 xl = (w1l
>>> 19 | w1h <<
13) ^ (w1l <<
3 | w1h
>>> 29) ^ (w1l
>>> 6 | w1h <<
26) |
0;
19500 w3l = w3l + xl |
0;
19501 w3h = w3h + ((w1h
>>> 19 | w1l <<
13) ^ (w1h <<
3 | w1l
>>> 29) ^ w1h
>>> 6) + (w3l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19502 tl =
2643833823 + w3l |
0;
19503 th =
1396182291 + w3h + (tl
>>> 0 < w3l
>>> 0 ?
1 :
0) |
0;
19505 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19506 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19508 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19509 xl = gl ^ el & (fl ^ gl) |
0;
19511 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19519 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19526 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19527 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19528 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19530 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19531 w4l = w4l + w13l |
0;
19532 w4h = w4h + w13h + (w4l
>>> 0 < w13l
>>> 0 ?
1 :
0) |
0;
19533 xl = (w5l
>>> 1 | w5h <<
31) ^ (w5l
>>> 8 | w5h <<
24) ^ (w5l
>>> 7 | w5h <<
25) |
0;
19534 w4l = w4l + xl |
0;
19535 w4h = w4h + ((w5h
>>> 1 | w5l <<
31) ^ (w5h
>>> 8 | w5l <<
24) ^ w5h
>>> 7) + (w4l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19536 xl = (w2l
>>> 19 | w2h <<
13) ^ (w2l <<
3 | w2h
>>> 29) ^ (w2l
>>> 6 | w2h <<
26) |
0;
19537 w4l = w4l + xl |
0;
19538 w4h = w4h + ((w2h
>>> 19 | w2l <<
13) ^ (w2h <<
3 | w2l
>>> 29) ^ w2h
>>> 6) + (w4l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19539 tl =
2343527390 + w4l |
0;
19540 th =
1695183700 + w4h + (tl
>>> 0 < w4l
>>> 0 ?
1 :
0) |
0;
19542 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19543 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19545 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19546 xl = gl ^ el & (fl ^ gl) |
0;
19548 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19556 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19563 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19564 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19565 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19567 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19568 w5l = w5l + w14l |
0;
19569 w5h = w5h + w14h + (w5l
>>> 0 < w14l
>>> 0 ?
1 :
0) |
0;
19570 xl = (w6l
>>> 1 | w6h <<
31) ^ (w6l
>>> 8 | w6h <<
24) ^ (w6l
>>> 7 | w6h <<
25) |
0;
19571 w5l = w5l + xl |
0;
19572 w5h = w5h + ((w6h
>>> 1 | w6l <<
31) ^ (w6h
>>> 8 | w6l <<
24) ^ w6h
>>> 7) + (w5l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19573 xl = (w3l
>>> 19 | w3h <<
13) ^ (w3l <<
3 | w3h
>>> 29) ^ (w3l
>>> 6 | w3h <<
26) |
0;
19574 w5l = w5l + xl |
0;
19575 w5h = w5h + ((w3h
>>> 19 | w3l <<
13) ^ (w3h <<
3 | w3l
>>> 29) ^ w3h
>>> 6) + (w5l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19576 tl =
1014477480 + w5l |
0;
19577 th =
1986661051 + w5h + (tl
>>> 0 < w5l
>>> 0 ?
1 :
0) |
0;
19579 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19580 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19582 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19583 xl = gl ^ el & (fl ^ gl) |
0;
19585 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19593 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19600 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19601 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19602 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19604 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19605 w6l = w6l + w15l |
0;
19606 w6h = w6h + w15h + (w6l
>>> 0 < w15l
>>> 0 ?
1 :
0) |
0;
19607 xl = (w7l
>>> 1 | w7h <<
31) ^ (w7l
>>> 8 | w7h <<
24) ^ (w7l
>>> 7 | w7h <<
25) |
0;
19608 w6l = w6l + xl |
0;
19609 w6h = w6h + ((w7h
>>> 1 | w7l <<
31) ^ (w7h
>>> 8 | w7l <<
24) ^ w7h
>>> 7) + (w6l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19610 xl = (w4l
>>> 19 | w4h <<
13) ^ (w4l <<
3 | w4h
>>> 29) ^ (w4l
>>> 6 | w4h <<
26) |
0;
19611 w6l = w6l + xl |
0;
19612 w6h = w6h + ((w4h
>>> 19 | w4l <<
13) ^ (w4h <<
3 | w4l
>>> 29) ^ w4h
>>> 6) + (w6l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19613 tl =
1206759142 + w6l |
0;
19614 th =
2177026350 + w6h + (tl
>>> 0 < w6l
>>> 0 ?
1 :
0) |
0;
19616 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19617 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19619 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19620 xl = gl ^ el & (fl ^ gl) |
0;
19622 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19630 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19637 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19638 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19639 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19641 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19642 w7l = w7l + w0l |
0;
19643 w7h = w7h + w0h + (w7l
>>> 0 < w0l
>>> 0 ?
1 :
0) |
0;
19644 xl = (w8l
>>> 1 | w8h <<
31) ^ (w8l
>>> 8 | w8h <<
24) ^ (w8l
>>> 7 | w8h <<
25) |
0;
19645 w7l = w7l + xl |
0;
19646 w7h = w7h + ((w8h
>>> 1 | w8l <<
31) ^ (w8h
>>> 8 | w8l <<
24) ^ w8h
>>> 7) + (w7l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19647 xl = (w5l
>>> 19 | w5h <<
13) ^ (w5l <<
3 | w5h
>>> 29) ^ (w5l
>>> 6 | w5h <<
26) |
0;
19648 w7l = w7l + xl |
0;
19649 w7h = w7h + ((w5h
>>> 19 | w5l <<
13) ^ (w5h <<
3 | w5l
>>> 29) ^ w5h
>>> 6) + (w7l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19650 tl =
344077627 + w7l |
0;
19651 th =
2456956037 + w7h + (tl
>>> 0 < w7l
>>> 0 ?
1 :
0) |
0;
19653 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19654 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19656 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19657 xl = gl ^ el & (fl ^ gl) |
0;
19659 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19667 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19674 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19675 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19676 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19678 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19679 w8l = w8l + w1l |
0;
19680 w8h = w8h + w1h + (w8l
>>> 0 < w1l
>>> 0 ?
1 :
0) |
0;
19681 xl = (w9l
>>> 1 | w9h <<
31) ^ (w9l
>>> 8 | w9h <<
24) ^ (w9l
>>> 7 | w9h <<
25) |
0;
19682 w8l = w8l + xl |
0;
19683 w8h = w8h + ((w9h
>>> 1 | w9l <<
31) ^ (w9h
>>> 8 | w9l <<
24) ^ w9h
>>> 7) + (w8l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19684 xl = (w6l
>>> 19 | w6h <<
13) ^ (w6l <<
3 | w6h
>>> 29) ^ (w6l
>>> 6 | w6h <<
26) |
0;
19685 w8l = w8l + xl |
0;
19686 w8h = w8h + ((w6h
>>> 19 | w6l <<
13) ^ (w6h <<
3 | w6l
>>> 29) ^ w6h
>>> 6) + (w8l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19687 tl =
1290863460 + w8l |
0;
19688 th =
2730485921 + w8h + (tl
>>> 0 < w8l
>>> 0 ?
1 :
0) |
0;
19690 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19691 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19693 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19694 xl = gl ^ el & (fl ^ gl) |
0;
19696 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19704 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19711 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19712 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19713 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19715 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19716 w9l = w9l + w2l |
0;
19717 w9h = w9h + w2h + (w9l
>>> 0 < w2l
>>> 0 ?
1 :
0) |
0;
19718 xl = (w10l
>>> 1 | w10h <<
31) ^ (w10l
>>> 8 | w10h <<
24) ^ (w10l
>>> 7 | w10h <<
25) |
0;
19719 w9l = w9l + xl |
0;
19720 w9h = w9h + ((w10h
>>> 1 | w10l <<
31) ^ (w10h
>>> 8 | w10l <<
24) ^ w10h
>>> 7) + (w9l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19721 xl = (w7l
>>> 19 | w7h <<
13) ^ (w7l <<
3 | w7h
>>> 29) ^ (w7l
>>> 6 | w7h <<
26) |
0;
19722 w9l = w9l + xl |
0;
19723 w9h = w9h + ((w7h
>>> 19 | w7l <<
13) ^ (w7h <<
3 | w7l
>>> 29) ^ w7h
>>> 6) + (w9l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19724 tl =
3158454273 + w9l |
0;
19725 th =
2820302411 + w9h + (tl
>>> 0 < w9l
>>> 0 ?
1 :
0) |
0;
19727 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19728 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19730 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19731 xl = gl ^ el & (fl ^ gl) |
0;
19733 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19741 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19748 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19749 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19750 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19752 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19753 w10l = w10l + w3l |
0;
19754 w10h = w10h + w3h + (w10l
>>> 0 < w3l
>>> 0 ?
1 :
0) |
0;
19755 xl = (w11l
>>> 1 | w11h <<
31) ^ (w11l
>>> 8 | w11h <<
24) ^ (w11l
>>> 7 | w11h <<
25) |
0;
19756 w10l = w10l + xl |
0;
19757 w10h = w10h + ((w11h
>>> 1 | w11l <<
31) ^ (w11h
>>> 8 | w11l <<
24) ^ w11h
>>> 7) + (w10l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19758 xl = (w8l
>>> 19 | w8h <<
13) ^ (w8l <<
3 | w8h
>>> 29) ^ (w8l
>>> 6 | w8h <<
26) |
0;
19759 w10l = w10l + xl |
0;
19760 w10h = w10h + ((w8h
>>> 19 | w8l <<
13) ^ (w8h <<
3 | w8l
>>> 29) ^ w8h
>>> 6) + (w10l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19761 tl =
3505952657 + w10l |
0;
19762 th =
3259730800 + w10h + (tl
>>> 0 < w10l
>>> 0 ?
1 :
0) |
0;
19764 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19765 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19767 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19768 xl = gl ^ el & (fl ^ gl) |
0;
19770 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19778 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19785 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19786 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19787 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19789 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19790 w11l = w11l + w4l |
0;
19791 w11h = w11h + w4h + (w11l
>>> 0 < w4l
>>> 0 ?
1 :
0) |
0;
19792 xl = (w12l
>>> 1 | w12h <<
31) ^ (w12l
>>> 8 | w12h <<
24) ^ (w12l
>>> 7 | w12h <<
25) |
0;
19793 w11l = w11l + xl |
0;
19794 w11h = w11h + ((w12h
>>> 1 | w12l <<
31) ^ (w12h
>>> 8 | w12l <<
24) ^ w12h
>>> 7) + (w11l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19795 xl = (w9l
>>> 19 | w9h <<
13) ^ (w9l <<
3 | w9h
>>> 29) ^ (w9l
>>> 6 | w9h <<
26) |
0;
19796 w11l = w11l + xl |
0;
19797 w11h = w11h + ((w9h
>>> 19 | w9l <<
13) ^ (w9h <<
3 | w9l
>>> 29) ^ w9h
>>> 6) + (w11l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19798 tl =
106217008 + w11l |
0;
19799 th =
3345764771 + w11h + (tl
>>> 0 < w11l
>>> 0 ?
1 :
0) |
0;
19801 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19802 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19804 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19805 xl = gl ^ el & (fl ^ gl) |
0;
19807 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19815 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19822 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19823 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19824 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19826 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19827 w12l = w12l + w5l |
0;
19828 w12h = w12h + w5h + (w12l
>>> 0 < w5l
>>> 0 ?
1 :
0) |
0;
19829 xl = (w13l
>>> 1 | w13h <<
31) ^ (w13l
>>> 8 | w13h <<
24) ^ (w13l
>>> 7 | w13h <<
25) |
0;
19830 w12l = w12l + xl |
0;
19831 w12h = w12h + ((w13h
>>> 1 | w13l <<
31) ^ (w13h
>>> 8 | w13l <<
24) ^ w13h
>>> 7) + (w12l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19832 xl = (w10l
>>> 19 | w10h <<
13) ^ (w10l <<
3 | w10h
>>> 29) ^ (w10l
>>> 6 | w10h <<
26) |
0;
19833 w12l = w12l + xl |
0;
19834 w12h = w12h + ((w10h
>>> 19 | w10l <<
13) ^ (w10h <<
3 | w10l
>>> 29) ^ w10h
>>> 6) + (w12l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19835 tl =
3606008344 + w12l |
0;
19836 th =
3516065817 + w12h + (tl
>>> 0 < w12l
>>> 0 ?
1 :
0) |
0;
19838 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19839 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19841 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19842 xl = gl ^ el & (fl ^ gl) |
0;
19844 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19852 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19859 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19860 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19861 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19863 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19864 w13l = w13l + w6l |
0;
19865 w13h = w13h + w6h + (w13l
>>> 0 < w6l
>>> 0 ?
1 :
0) |
0;
19866 xl = (w14l
>>> 1 | w14h <<
31) ^ (w14l
>>> 8 | w14h <<
24) ^ (w14l
>>> 7 | w14h <<
25) |
0;
19867 w13l = w13l + xl |
0;
19868 w13h = w13h + ((w14h
>>> 1 | w14l <<
31) ^ (w14h
>>> 8 | w14l <<
24) ^ w14h
>>> 7) + (w13l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19869 xl = (w11l
>>> 19 | w11h <<
13) ^ (w11l <<
3 | w11h
>>> 29) ^ (w11l
>>> 6 | w11h <<
26) |
0;
19870 w13l = w13l + xl |
0;
19871 w13h = w13h + ((w11h
>>> 19 | w11l <<
13) ^ (w11h <<
3 | w11l
>>> 29) ^ w11h
>>> 6) + (w13l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19872 tl =
1432725776 + w13l |
0;
19873 th =
3600352804 + w13h + (tl
>>> 0 < w13l
>>> 0 ?
1 :
0) |
0;
19875 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19876 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19878 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19879 xl = gl ^ el & (fl ^ gl) |
0;
19881 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19889 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19896 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19897 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19898 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19900 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19901 w14l = w14l + w7l |
0;
19902 w14h = w14h + w7h + (w14l
>>> 0 < w7l
>>> 0 ?
1 :
0) |
0;
19903 xl = (w15l
>>> 1 | w15h <<
31) ^ (w15l
>>> 8 | w15h <<
24) ^ (w15l
>>> 7 | w15h <<
25) |
0;
19904 w14l = w14l + xl |
0;
19905 w14h = w14h + ((w15h
>>> 1 | w15l <<
31) ^ (w15h
>>> 8 | w15l <<
24) ^ w15h
>>> 7) + (w14l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19906 xl = (w12l
>>> 19 | w12h <<
13) ^ (w12l <<
3 | w12h
>>> 29) ^ (w12l
>>> 6 | w12h <<
26) |
0;
19907 w14l = w14l + xl |
0;
19908 w14h = w14h + ((w12h
>>> 19 | w12l <<
13) ^ (w12h <<
3 | w12l
>>> 29) ^ w12h
>>> 6) + (w14l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19909 tl =
1467031594 + w14l |
0;
19910 th =
4094571909 + w14h + (tl
>>> 0 < w14l
>>> 0 ?
1 :
0) |
0;
19912 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19913 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19915 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19916 xl = gl ^ el & (fl ^ gl) |
0;
19918 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19926 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19933 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19934 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19935 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19937 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19938 w15l = w15l + w8l |
0;
19939 w15h = w15h + w8h + (w15l
>>> 0 < w8l
>>> 0 ?
1 :
0) |
0;
19940 xl = (w0l
>>> 1 | w0h <<
31) ^ (w0l
>>> 8 | w0h <<
24) ^ (w0l
>>> 7 | w0h <<
25) |
0;
19941 w15l = w15l + xl |
0;
19942 w15h = w15h + ((w0h
>>> 1 | w0l <<
31) ^ (w0h
>>> 8 | w0l <<
24) ^ w0h
>>> 7) + (w15l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19943 xl = (w13l
>>> 19 | w13h <<
13) ^ (w13l <<
3 | w13h
>>> 29) ^ (w13l
>>> 6 | w13h <<
26) |
0;
19944 w15l = w15l + xl |
0;
19945 w15h = w15h + ((w13h
>>> 19 | w13l <<
13) ^ (w13h <<
3 | w13l
>>> 29) ^ w13h
>>> 6) + (w15l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19946 tl =
851169720 + w15l |
0;
19947 th =
275423344 + w15h + (tl
>>> 0 < w15l
>>> 0 ?
1 :
0) |
0;
19949 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19950 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19952 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19953 xl = gl ^ el & (fl ^ gl) |
0;
19955 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19963 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19970 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19971 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19972 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19974 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19975 w0l = w0l + w9l |
0;
19976 w0h = w0h + w9h + (w0l
>>> 0 < w9l
>>> 0 ?
1 :
0) |
0;
19977 xl = (w1l
>>> 1 | w1h <<
31) ^ (w1l
>>> 8 | w1h <<
24) ^ (w1l
>>> 7 | w1h <<
25) |
0;
19978 w0l = w0l + xl |
0;
19979 w0h = w0h + ((w1h
>>> 1 | w1l <<
31) ^ (w1h
>>> 8 | w1l <<
24) ^ w1h
>>> 7) + (w0l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19980 xl = (w14l
>>> 19 | w14h <<
13) ^ (w14l <<
3 | w14h
>>> 29) ^ (w14l
>>> 6 | w14h <<
26) |
0;
19981 w0l = w0l + xl |
0;
19982 w0h = w0h + ((w14h
>>> 19 | w14l <<
13) ^ (w14h <<
3 | w14l
>>> 29) ^ w14h
>>> 6) + (w0l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19983 tl =
3100823752 + w0l |
0;
19984 th =
430227734 + w0h + (tl
>>> 0 < w0l
>>> 0 ?
1 :
0) |
0;
19986 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19987 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19989 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19990 xl = gl ^ el & (fl ^ gl) |
0;
19992 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20000 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20007 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20008 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20009 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20011 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20012 w1l = w1l + w10l |
0;
20013 w1h = w1h + w10h + (w1l
>>> 0 < w10l
>>> 0 ?
1 :
0) |
0;
20014 xl = (w2l
>>> 1 | w2h <<
31) ^ (w2l
>>> 8 | w2h <<
24) ^ (w2l
>>> 7 | w2h <<
25) |
0;
20015 w1l = w1l + xl |
0;
20016 w1h = w1h + ((w2h
>>> 1 | w2l <<
31) ^ (w2h
>>> 8 | w2l <<
24) ^ w2h
>>> 7) + (w1l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20017 xl = (w15l
>>> 19 | w15h <<
13) ^ (w15l <<
3 | w15h
>>> 29) ^ (w15l
>>> 6 | w15h <<
26) |
0;
20018 w1l = w1l + xl |
0;
20019 w1h = w1h + ((w15h
>>> 19 | w15l <<
13) ^ (w15h <<
3 | w15l
>>> 29) ^ w15h
>>> 6) + (w1l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20020 tl =
1363258195 + w1l |
0;
20021 th =
506948616 + w1h + (tl
>>> 0 < w1l
>>> 0 ?
1 :
0) |
0;
20023 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20024 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20026 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20027 xl = gl ^ el & (fl ^ gl) |
0;
20029 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20037 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20044 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20045 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20046 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20048 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20049 w2l = w2l + w11l |
0;
20050 w2h = w2h + w11h + (w2l
>>> 0 < w11l
>>> 0 ?
1 :
0) |
0;
20051 xl = (w3l
>>> 1 | w3h <<
31) ^ (w3l
>>> 8 | w3h <<
24) ^ (w3l
>>> 7 | w3h <<
25) |
0;
20052 w2l = w2l + xl |
0;
20053 w2h = w2h + ((w3h
>>> 1 | w3l <<
31) ^ (w3h
>>> 8 | w3l <<
24) ^ w3h
>>> 7) + (w2l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20054 xl = (w0l
>>> 19 | w0h <<
13) ^ (w0l <<
3 | w0h
>>> 29) ^ (w0l
>>> 6 | w0h <<
26) |
0;
20055 w2l = w2l + xl |
0;
20056 w2h = w2h + ((w0h
>>> 19 | w0l <<
13) ^ (w0h <<
3 | w0l
>>> 29) ^ w0h
>>> 6) + (w2l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20057 tl =
3750685593 + w2l |
0;
20058 th =
659060556 + w2h + (tl
>>> 0 < w2l
>>> 0 ?
1 :
0) |
0;
20060 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20061 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20063 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20064 xl = gl ^ el & (fl ^ gl) |
0;
20066 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20074 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20081 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20082 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20083 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20085 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20086 w3l = w3l + w12l |
0;
20087 w3h = w3h + w12h + (w3l
>>> 0 < w12l
>>> 0 ?
1 :
0) |
0;
20088 xl = (w4l
>>> 1 | w4h <<
31) ^ (w4l
>>> 8 | w4h <<
24) ^ (w4l
>>> 7 | w4h <<
25) |
0;
20089 w3l = w3l + xl |
0;
20090 w3h = w3h + ((w4h
>>> 1 | w4l <<
31) ^ (w4h
>>> 8 | w4l <<
24) ^ w4h
>>> 7) + (w3l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20091 xl = (w1l
>>> 19 | w1h <<
13) ^ (w1l <<
3 | w1h
>>> 29) ^ (w1l
>>> 6 | w1h <<
26) |
0;
20092 w3l = w3l + xl |
0;
20093 w3h = w3h + ((w1h
>>> 19 | w1l <<
13) ^ (w1h <<
3 | w1l
>>> 29) ^ w1h
>>> 6) + (w3l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20094 tl =
3785050280 + w3l |
0;
20095 th =
883997877 + w3h + (tl
>>> 0 < w3l
>>> 0 ?
1 :
0) |
0;
20097 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20098 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20100 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20101 xl = gl ^ el & (fl ^ gl) |
0;
20103 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20111 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20118 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20119 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20120 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20122 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20123 w4l = w4l + w13l |
0;
20124 w4h = w4h + w13h + (w4l
>>> 0 < w13l
>>> 0 ?
1 :
0) |
0;
20125 xl = (w5l
>>> 1 | w5h <<
31) ^ (w5l
>>> 8 | w5h <<
24) ^ (w5l
>>> 7 | w5h <<
25) |
0;
20126 w4l = w4l + xl |
0;
20127 w4h = w4h + ((w5h
>>> 1 | w5l <<
31) ^ (w5h
>>> 8 | w5l <<
24) ^ w5h
>>> 7) + (w4l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20128 xl = (w2l
>>> 19 | w2h <<
13) ^ (w2l <<
3 | w2h
>>> 29) ^ (w2l
>>> 6 | w2h <<
26) |
0;
20129 w4l = w4l + xl |
0;
20130 w4h = w4h + ((w2h
>>> 19 | w2l <<
13) ^ (w2h <<
3 | w2l
>>> 29) ^ w2h
>>> 6) + (w4l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20131 tl =
3318307427 + w4l |
0;
20132 th =
958139571 + w4h + (tl
>>> 0 < w4l
>>> 0 ?
1 :
0) |
0;
20134 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20135 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20137 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20138 xl = gl ^ el & (fl ^ gl) |
0;
20140 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20148 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20155 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20156 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20157 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20159 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20160 w5l = w5l + w14l |
0;
20161 w5h = w5h + w14h + (w5l
>>> 0 < w14l
>>> 0 ?
1 :
0) |
0;
20162 xl = (w6l
>>> 1 | w6h <<
31) ^ (w6l
>>> 8 | w6h <<
24) ^ (w6l
>>> 7 | w6h <<
25) |
0;
20163 w5l = w5l + xl |
0;
20164 w5h = w5h + ((w6h
>>> 1 | w6l <<
31) ^ (w6h
>>> 8 | w6l <<
24) ^ w6h
>>> 7) + (w5l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20165 xl = (w3l
>>> 19 | w3h <<
13) ^ (w3l <<
3 | w3h
>>> 29) ^ (w3l
>>> 6 | w3h <<
26) |
0;
20166 w5l = w5l + xl |
0;
20167 w5h = w5h + ((w3h
>>> 19 | w3l <<
13) ^ (w3h <<
3 | w3l
>>> 29) ^ w3h
>>> 6) + (w5l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20168 tl =
3812723403 + w5l |
0;
20169 th =
1322822218 + w5h + (tl
>>> 0 < w5l
>>> 0 ?
1 :
0) |
0;
20171 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20172 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20174 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20175 xl = gl ^ el & (fl ^ gl) |
0;
20177 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20185 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20192 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20193 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20194 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20196 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20197 w6l = w6l + w15l |
0;
20198 w6h = w6h + w15h + (w6l
>>> 0 < w15l
>>> 0 ?
1 :
0) |
0;
20199 xl = (w7l
>>> 1 | w7h <<
31) ^ (w7l
>>> 8 | w7h <<
24) ^ (w7l
>>> 7 | w7h <<
25) |
0;
20200 w6l = w6l + xl |
0;
20201 w6h = w6h + ((w7h
>>> 1 | w7l <<
31) ^ (w7h
>>> 8 | w7l <<
24) ^ w7h
>>> 7) + (w6l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20202 xl = (w4l
>>> 19 | w4h <<
13) ^ (w4l <<
3 | w4h
>>> 29) ^ (w4l
>>> 6 | w4h <<
26) |
0;
20203 w6l = w6l + xl |
0;
20204 w6h = w6h + ((w4h
>>> 19 | w4l <<
13) ^ (w4h <<
3 | w4l
>>> 29) ^ w4h
>>> 6) + (w6l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20205 tl =
2003034995 + w6l |
0;
20206 th =
1537002063 + w6h + (tl
>>> 0 < w6l
>>> 0 ?
1 :
0) |
0;
20208 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20209 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20211 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20212 xl = gl ^ el & (fl ^ gl) |
0;
20214 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20222 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20229 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20230 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20231 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20233 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20234 w7l = w7l + w0l |
0;
20235 w7h = w7h + w0h + (w7l
>>> 0 < w0l
>>> 0 ?
1 :
0) |
0;
20236 xl = (w8l
>>> 1 | w8h <<
31) ^ (w8l
>>> 8 | w8h <<
24) ^ (w8l
>>> 7 | w8h <<
25) |
0;
20237 w7l = w7l + xl |
0;
20238 w7h = w7h + ((w8h
>>> 1 | w8l <<
31) ^ (w8h
>>> 8 | w8l <<
24) ^ w8h
>>> 7) + (w7l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20239 xl = (w5l
>>> 19 | w5h <<
13) ^ (w5l <<
3 | w5h
>>> 29) ^ (w5l
>>> 6 | w5h <<
26) |
0;
20240 w7l = w7l + xl |
0;
20241 w7h = w7h + ((w5h
>>> 19 | w5l <<
13) ^ (w5h <<
3 | w5l
>>> 29) ^ w5h
>>> 6) + (w7l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20242 tl =
3602036899 + w7l |
0;
20243 th =
1747873779 + w7h + (tl
>>> 0 < w7l
>>> 0 ?
1 :
0) |
0;
20245 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20246 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20248 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20249 xl = gl ^ el & (fl ^ gl) |
0;
20251 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20259 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20266 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20267 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20268 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20270 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20271 w8l = w8l + w1l |
0;
20272 w8h = w8h + w1h + (w8l
>>> 0 < w1l
>>> 0 ?
1 :
0) |
0;
20273 xl = (w9l
>>> 1 | w9h <<
31) ^ (w9l
>>> 8 | w9h <<
24) ^ (w9l
>>> 7 | w9h <<
25) |
0;
20274 w8l = w8l + xl |
0;
20275 w8h = w8h + ((w9h
>>> 1 | w9l <<
31) ^ (w9h
>>> 8 | w9l <<
24) ^ w9h
>>> 7) + (w8l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20276 xl = (w6l
>>> 19 | w6h <<
13) ^ (w6l <<
3 | w6h
>>> 29) ^ (w6l
>>> 6 | w6h <<
26) |
0;
20277 w8l = w8l + xl |
0;
20278 w8h = w8h + ((w6h
>>> 19 | w6l <<
13) ^ (w6h <<
3 | w6l
>>> 29) ^ w6h
>>> 6) + (w8l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20279 tl =
1575990012 + w8l |
0;
20280 th =
1955562222 + w8h + (tl
>>> 0 < w8l
>>> 0 ?
1 :
0) |
0;
20282 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20283 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20285 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20286 xl = gl ^ el & (fl ^ gl) |
0;
20288 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20296 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20303 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20304 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20305 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20307 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20308 w9l = w9l + w2l |
0;
20309 w9h = w9h + w2h + (w9l
>>> 0 < w2l
>>> 0 ?
1 :
0) |
0;
20310 xl = (w10l
>>> 1 | w10h <<
31) ^ (w10l
>>> 8 | w10h <<
24) ^ (w10l
>>> 7 | w10h <<
25) |
0;
20311 w9l = w9l + xl |
0;
20312 w9h = w9h + ((w10h
>>> 1 | w10l <<
31) ^ (w10h
>>> 8 | w10l <<
24) ^ w10h
>>> 7) + (w9l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20313 xl = (w7l
>>> 19 | w7h <<
13) ^ (w7l <<
3 | w7h
>>> 29) ^ (w7l
>>> 6 | w7h <<
26) |
0;
20314 w9l = w9l + xl |
0;
20315 w9h = w9h + ((w7h
>>> 19 | w7l <<
13) ^ (w7h <<
3 | w7l
>>> 29) ^ w7h
>>> 6) + (w9l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20316 tl =
1125592928 + w9l |
0;
20317 th =
2024104815 + w9h + (tl
>>> 0 < w9l
>>> 0 ?
1 :
0) |
0;
20319 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20320 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20322 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20323 xl = gl ^ el & (fl ^ gl) |
0;
20325 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20333 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20340 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20341 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20342 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20344 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20345 w10l = w10l + w3l |
0;
20346 w10h = w10h + w3h + (w10l
>>> 0 < w3l
>>> 0 ?
1 :
0) |
0;
20347 xl = (w11l
>>> 1 | w11h <<
31) ^ (w11l
>>> 8 | w11h <<
24) ^ (w11l
>>> 7 | w11h <<
25) |
0;
20348 w10l = w10l + xl |
0;
20349 w10h = w10h + ((w11h
>>> 1 | w11l <<
31) ^ (w11h
>>> 8 | w11l <<
24) ^ w11h
>>> 7) + (w10l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20350 xl = (w8l
>>> 19 | w8h <<
13) ^ (w8l <<
3 | w8h
>>> 29) ^ (w8l
>>> 6 | w8h <<
26) |
0;
20351 w10l = w10l + xl |
0;
20352 w10h = w10h + ((w8h
>>> 19 | w8l <<
13) ^ (w8h <<
3 | w8l
>>> 29) ^ w8h
>>> 6) + (w10l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20353 tl =
2716904306 + w10l |
0;
20354 th =
2227730452 + w10h + (tl
>>> 0 < w10l
>>> 0 ?
1 :
0) |
0;
20356 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20357 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20359 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20360 xl = gl ^ el & (fl ^ gl) |
0;
20362 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20370 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20377 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20378 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20379 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20381 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20382 w11l = w11l + w4l |
0;
20383 w11h = w11h + w4h + (w11l
>>> 0 < w4l
>>> 0 ?
1 :
0) |
0;
20384 xl = (w12l
>>> 1 | w12h <<
31) ^ (w12l
>>> 8 | w12h <<
24) ^ (w12l
>>> 7 | w12h <<
25) |
0;
20385 w11l = w11l + xl |
0;
20386 w11h = w11h + ((w12h
>>> 1 | w12l <<
31) ^ (w12h
>>> 8 | w12l <<
24) ^ w12h
>>> 7) + (w11l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20387 xl = (w9l
>>> 19 | w9h <<
13) ^ (w9l <<
3 | w9h
>>> 29) ^ (w9l
>>> 6 | w9h <<
26) |
0;
20388 w11l = w11l + xl |
0;
20389 w11h = w11h + ((w9h
>>> 19 | w9l <<
13) ^ (w9h <<
3 | w9l
>>> 29) ^ w9h
>>> 6) + (w11l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20390 tl =
442776044 + w11l |
0;
20391 th =
2361852424 + w11h + (tl
>>> 0 < w11l
>>> 0 ?
1 :
0) |
0;
20393 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20394 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20396 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20397 xl = gl ^ el & (fl ^ gl) |
0;
20399 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20407 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20414 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20415 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20416 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20418 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20419 w12l = w12l + w5l |
0;
20420 w12h = w12h + w5h + (w12l
>>> 0 < w5l
>>> 0 ?
1 :
0) |
0;
20421 xl = (w13l
>>> 1 | w13h <<
31) ^ (w13l
>>> 8 | w13h <<
24) ^ (w13l
>>> 7 | w13h <<
25) |
0;
20422 w12l = w12l + xl |
0;
20423 w12h = w12h + ((w13h
>>> 1 | w13l <<
31) ^ (w13h
>>> 8 | w13l <<
24) ^ w13h
>>> 7) + (w12l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20424 xl = (w10l
>>> 19 | w10h <<
13) ^ (w10l <<
3 | w10h
>>> 29) ^ (w10l
>>> 6 | w10h <<
26) |
0;
20425 w12l = w12l + xl |
0;
20426 w12h = w12h + ((w10h
>>> 19 | w10l <<
13) ^ (w10h <<
3 | w10l
>>> 29) ^ w10h
>>> 6) + (w12l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20427 tl =
593698344 + w12l |
0;
20428 th =
2428436474 + w12h + (tl
>>> 0 < w12l
>>> 0 ?
1 :
0) |
0;
20430 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20431 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20433 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20434 xl = gl ^ el & (fl ^ gl) |
0;
20436 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20444 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20451 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20452 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20453 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20455 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20456 w13l = w13l + w6l |
0;
20457 w13h = w13h + w6h + (w13l
>>> 0 < w6l
>>> 0 ?
1 :
0) |
0;
20458 xl = (w14l
>>> 1 | w14h <<
31) ^ (w14l
>>> 8 | w14h <<
24) ^ (w14l
>>> 7 | w14h <<
25) |
0;
20459 w13l = w13l + xl |
0;
20460 w13h = w13h + ((w14h
>>> 1 | w14l <<
31) ^ (w14h
>>> 8 | w14l <<
24) ^ w14h
>>> 7) + (w13l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20461 xl = (w11l
>>> 19 | w11h <<
13) ^ (w11l <<
3 | w11h
>>> 29) ^ (w11l
>>> 6 | w11h <<
26) |
0;
20462 w13l = w13l + xl |
0;
20463 w13h = w13h + ((w11h
>>> 19 | w11l <<
13) ^ (w11h <<
3 | w11l
>>> 29) ^ w11h
>>> 6) + (w13l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20464 tl =
3733110249 + w13l |
0;
20465 th =
2756734187 + w13h + (tl
>>> 0 < w13l
>>> 0 ?
1 :
0) |
0;
20467 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20468 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20470 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20471 xl = gl ^ el & (fl ^ gl) |
0;
20473 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20481 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20488 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20489 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20490 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20492 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20493 w14l = w14l + w7l |
0;
20494 w14h = w14h + w7h + (w14l
>>> 0 < w7l
>>> 0 ?
1 :
0) |
0;
20495 xl = (w15l
>>> 1 | w15h <<
31) ^ (w15l
>>> 8 | w15h <<
24) ^ (w15l
>>> 7 | w15h <<
25) |
0;
20496 w14l = w14l + xl |
0;
20497 w14h = w14h + ((w15h
>>> 1 | w15l <<
31) ^ (w15h
>>> 8 | w15l <<
24) ^ w15h
>>> 7) + (w14l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20498 xl = (w12l
>>> 19 | w12h <<
13) ^ (w12l <<
3 | w12h
>>> 29) ^ (w12l
>>> 6 | w12h <<
26) |
0;
20499 w14l = w14l + xl |
0;
20500 w14h = w14h + ((w12h
>>> 19 | w12l <<
13) ^ (w12h <<
3 | w12l
>>> 29) ^ w12h
>>> 6) + (w14l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20501 tl =
2999351573 + w14l |
0;
20502 th =
3204031479 + w14h + (tl
>>> 0 < w14l
>>> 0 ?
1 :
0) |
0;
20504 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20505 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20507 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20508 xl = gl ^ el & (fl ^ gl) |
0;
20510 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20518 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20525 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20526 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20527 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20529 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20530 w15l = w15l + w8l |
0;
20531 w15h = w15h + w8h + (w15l
>>> 0 < w8l
>>> 0 ?
1 :
0) |
0;
20532 xl = (w0l
>>> 1 | w0h <<
31) ^ (w0l
>>> 8 | w0h <<
24) ^ (w0l
>>> 7 | w0h <<
25) |
0;
20533 w15l = w15l + xl |
0;
20534 w15h = w15h + ((w0h
>>> 1 | w0l <<
31) ^ (w0h
>>> 8 | w0l <<
24) ^ w0h
>>> 7) + (w15l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20535 xl = (w13l
>>> 19 | w13h <<
13) ^ (w13l <<
3 | w13h
>>> 29) ^ (w13l
>>> 6 | w13h <<
26) |
0;
20536 w15l = w15l + xl |
0;
20537 w15h = w15h + ((w13h
>>> 19 | w13l <<
13) ^ (w13h <<
3 | w13l
>>> 29) ^ w13h
>>> 6) + (w15l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20538 tl =
3815920427 + w15l |
0;
20539 th =
3329325298 + w15h + (tl
>>> 0 < w15l
>>> 0 ?
1 :
0) |
0;
20541 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20542 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20544 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20545 xl = gl ^ el & (fl ^ gl) |
0;
20547 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20555 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20562 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20563 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20564 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20566 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20567 w0l = w0l + w9l |
0;
20568 w0h = w0h + w9h + (w0l
>>> 0 < w9l
>>> 0 ?
1 :
0) |
0;
20569 xl = (w1l
>>> 1 | w1h <<
31) ^ (w1l
>>> 8 | w1h <<
24) ^ (w1l
>>> 7 | w1h <<
25) |
0;
20570 w0l = w0l + xl |
0;
20571 w0h = w0h + ((w1h
>>> 1 | w1l <<
31) ^ (w1h
>>> 8 | w1l <<
24) ^ w1h
>>> 7) + (w0l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20572 xl = (w14l
>>> 19 | w14h <<
13) ^ (w14l <<
3 | w14h
>>> 29) ^ (w14l
>>> 6 | w14h <<
26) |
0;
20573 w0l = w0l + xl |
0;
20574 w0h = w0h + ((w14h
>>> 19 | w14l <<
13) ^ (w14h <<
3 | w14l
>>> 29) ^ w14h
>>> 6) + (w0l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20575 tl =
3928383900 + w0l |
0;
20576 th =
3391569614 + w0h + (tl
>>> 0 < w0l
>>> 0 ?
1 :
0) |
0;
20578 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20579 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20581 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20582 xl = gl ^ el & (fl ^ gl) |
0;
20584 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20592 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20599 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20600 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20601 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20603 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20604 w1l = w1l + w10l |
0;
20605 w1h = w1h + w10h + (w1l
>>> 0 < w10l
>>> 0 ?
1 :
0) |
0;
20606 xl = (w2l
>>> 1 | w2h <<
31) ^ (w2l
>>> 8 | w2h <<
24) ^ (w2l
>>> 7 | w2h <<
25) |
0;
20607 w1l = w1l + xl |
0;
20608 w1h = w1h + ((w2h
>>> 1 | w2l <<
31) ^ (w2h
>>> 8 | w2l <<
24) ^ w2h
>>> 7) + (w1l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20609 xl = (w15l
>>> 19 | w15h <<
13) ^ (w15l <<
3 | w15h
>>> 29) ^ (w15l
>>> 6 | w15h <<
26) |
0;
20610 w1l = w1l + xl |
0;
20611 w1h = w1h + ((w15h
>>> 19 | w15l <<
13) ^ (w15h <<
3 | w15l
>>> 29) ^ w15h
>>> 6) + (w1l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20612 tl =
566280711 + w1l |
0;
20613 th =
3515267271 + w1h + (tl
>>> 0 < w1l
>>> 0 ?
1 :
0) |
0;
20615 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20616 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20618 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20619 xl = gl ^ el & (fl ^ gl) |
0;
20621 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20629 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20636 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20637 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20638 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20640 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20641 w2l = w2l + w11l |
0;
20642 w2h = w2h + w11h + (w2l
>>> 0 < w11l
>>> 0 ?
1 :
0) |
0;
20643 xl = (w3l
>>> 1 | w3h <<
31) ^ (w3l
>>> 8 | w3h <<
24) ^ (w3l
>>> 7 | w3h <<
25) |
0;
20644 w2l = w2l + xl |
0;
20645 w2h = w2h + ((w3h
>>> 1 | w3l <<
31) ^ (w3h
>>> 8 | w3l <<
24) ^ w3h
>>> 7) + (w2l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20646 xl = (w0l
>>> 19 | w0h <<
13) ^ (w0l <<
3 | w0h
>>> 29) ^ (w0l
>>> 6 | w0h <<
26) |
0;
20647 w2l = w2l + xl |
0;
20648 w2h = w2h + ((w0h
>>> 19 | w0l <<
13) ^ (w0h <<
3 | w0l
>>> 29) ^ w0h
>>> 6) + (w2l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20649 tl =
3454069534 + w2l |
0;
20650 th =
3940187606 + w2h + (tl
>>> 0 < w2l
>>> 0 ?
1 :
0) |
0;
20652 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20653 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20655 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20656 xl = gl ^ el & (fl ^ gl) |
0;
20658 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20666 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20673 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20674 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20675 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20677 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20678 w3l = w3l + w12l |
0;
20679 w3h = w3h + w12h + (w3l
>>> 0 < w12l
>>> 0 ?
1 :
0) |
0;
20680 xl = (w4l
>>> 1 | w4h <<
31) ^ (w4l
>>> 8 | w4h <<
24) ^ (w4l
>>> 7 | w4h <<
25) |
0;
20681 w3l = w3l + xl |
0;
20682 w3h = w3h + ((w4h
>>> 1 | w4l <<
31) ^ (w4h
>>> 8 | w4l <<
24) ^ w4h
>>> 7) + (w3l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20683 xl = (w1l
>>> 19 | w1h <<
13) ^ (w1l <<
3 | w1h
>>> 29) ^ (w1l
>>> 6 | w1h <<
26) |
0;
20684 w3l = w3l + xl |
0;
20685 w3h = w3h + ((w1h
>>> 19 | w1l <<
13) ^ (w1h <<
3 | w1l
>>> 29) ^ w1h
>>> 6) + (w3l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20686 tl =
4000239992 + w3l |
0;
20687 th =
4118630271 + w3h + (tl
>>> 0 < w3l
>>> 0 ?
1 :
0) |
0;
20689 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20690 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20692 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20693 xl = gl ^ el & (fl ^ gl) |
0;
20695 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20703 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20710 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20711 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20712 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20714 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20715 w4l = w4l + w13l |
0;
20716 w4h = w4h + w13h + (w4l
>>> 0 < w13l
>>> 0 ?
1 :
0) |
0;
20717 xl = (w5l
>>> 1 | w5h <<
31) ^ (w5l
>>> 8 | w5h <<
24) ^ (w5l
>>> 7 | w5h <<
25) |
0;
20718 w4l = w4l + xl |
0;
20719 w4h = w4h + ((w5h
>>> 1 | w5l <<
31) ^ (w5h
>>> 8 | w5l <<
24) ^ w5h
>>> 7) + (w4l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20720 xl = (w2l
>>> 19 | w2h <<
13) ^ (w2l <<
3 | w2h
>>> 29) ^ (w2l
>>> 6 | w2h <<
26) |
0;
20721 w4l = w4l + xl |
0;
20722 w4h = w4h + ((w2h
>>> 19 | w2l <<
13) ^ (w2h <<
3 | w2l
>>> 29) ^ w2h
>>> 6) + (w4l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20723 tl =
1914138554 + w4l |
0;
20724 th =
116418474 + w4h + (tl
>>> 0 < w4l
>>> 0 ?
1 :
0) |
0;
20726 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20727 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20729 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20730 xl = gl ^ el & (fl ^ gl) |
0;
20732 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20740 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20747 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20748 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20749 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20751 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20752 w5l = w5l + w14l |
0;
20753 w5h = w5h + w14h + (w5l
>>> 0 < w14l
>>> 0 ?
1 :
0) |
0;
20754 xl = (w6l
>>> 1 | w6h <<
31) ^ (w6l
>>> 8 | w6h <<
24) ^ (w6l
>>> 7 | w6h <<
25) |
0;
20755 w5l = w5l + xl |
0;
20756 w5h = w5h + ((w6h
>>> 1 | w6l <<
31) ^ (w6h
>>> 8 | w6l <<
24) ^ w6h
>>> 7) + (w5l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20757 xl = (w3l
>>> 19 | w3h <<
13) ^ (w3l <<
3 | w3h
>>> 29) ^ (w3l
>>> 6 | w3h <<
26) |
0;
20758 w5l = w5l + xl |
0;
20759 w5h = w5h + ((w3h
>>> 19 | w3l <<
13) ^ (w3h <<
3 | w3l
>>> 29) ^ w3h
>>> 6) + (w5l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20760 tl =
2731055270 + w5l |
0;
20761 th =
174292421 + w5h + (tl
>>> 0 < w5l
>>> 0 ?
1 :
0) |
0;
20763 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20764 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20766 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20767 xl = gl ^ el & (fl ^ gl) |
0;
20769 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20777 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20784 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20785 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20786 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20788 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20789 w6l = w6l + w15l |
0;
20790 w6h = w6h + w15h + (w6l
>>> 0 < w15l
>>> 0 ?
1 :
0) |
0;
20791 xl = (w7l
>>> 1 | w7h <<
31) ^ (w7l
>>> 8 | w7h <<
24) ^ (w7l
>>> 7 | w7h <<
25) |
0;
20792 w6l = w6l + xl |
0;
20793 w6h = w6h + ((w7h
>>> 1 | w7l <<
31) ^ (w7h
>>> 8 | w7l <<
24) ^ w7h
>>> 7) + (w6l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20794 xl = (w4l
>>> 19 | w4h <<
13) ^ (w4l <<
3 | w4h
>>> 29) ^ (w4l
>>> 6 | w4h <<
26) |
0;
20795 w6l = w6l + xl |
0;
20796 w6h = w6h + ((w4h
>>> 19 | w4l <<
13) ^ (w4h <<
3 | w4l
>>> 29) ^ w4h
>>> 6) + (w6l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20797 tl =
3203993006 + w6l |
0;
20798 th =
289380356 + w6h + (tl
>>> 0 < w6l
>>> 0 ?
1 :
0) |
0;
20800 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20801 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20803 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20804 xl = gl ^ el & (fl ^ gl) |
0;
20806 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20814 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20821 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20822 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20823 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20825 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20826 w7l = w7l + w0l |
0;
20827 w7h = w7h + w0h + (w7l
>>> 0 < w0l
>>> 0 ?
1 :
0) |
0;
20828 xl = (w8l
>>> 1 | w8h <<
31) ^ (w8l
>>> 8 | w8h <<
24) ^ (w8l
>>> 7 | w8h <<
25) |
0;
20829 w7l = w7l + xl |
0;
20830 w7h = w7h + ((w8h
>>> 1 | w8l <<
31) ^ (w8h
>>> 8 | w8l <<
24) ^ w8h
>>> 7) + (w7l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20831 xl = (w5l
>>> 19 | w5h <<
13) ^ (w5l <<
3 | w5h
>>> 29) ^ (w5l
>>> 6 | w5h <<
26) |
0;
20832 w7l = w7l + xl |
0;
20833 w7h = w7h + ((w5h
>>> 19 | w5l <<
13) ^ (w5h <<
3 | w5l
>>> 29) ^ w5h
>>> 6) + (w7l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20834 tl =
320620315 + w7l |
0;
20835 th =
460393269 + w7h + (tl
>>> 0 < w7l
>>> 0 ?
1 :
0) |
0;
20837 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20838 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20840 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20841 xl = gl ^ el & (fl ^ gl) |
0;
20843 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20851 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20858 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20859 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20860 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20862 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20863 w8l = w8l + w1l |
0;
20864 w8h = w8h + w1h + (w8l
>>> 0 < w1l
>>> 0 ?
1 :
0) |
0;
20865 xl = (w9l
>>> 1 | w9h <<
31) ^ (w9l
>>> 8 | w9h <<
24) ^ (w9l
>>> 7 | w9h <<
25) |
0;
20866 w8l = w8l + xl |
0;
20867 w8h = w8h + ((w9h
>>> 1 | w9l <<
31) ^ (w9h
>>> 8 | w9l <<
24) ^ w9h
>>> 7) + (w8l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20868 xl = (w6l
>>> 19 | w6h <<
13) ^ (w6l <<
3 | w6h
>>> 29) ^ (w6l
>>> 6 | w6h <<
26) |
0;
20869 w8l = w8l + xl |
0;
20870 w8h = w8h + ((w6h
>>> 19 | w6l <<
13) ^ (w6h <<
3 | w6l
>>> 29) ^ w6h
>>> 6) + (w8l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20871 tl =
587496836 + w8l |
0;
20872 th =
685471733 + w8h + (tl
>>> 0 < w8l
>>> 0 ?
1 :
0) |
0;
20874 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20875 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20877 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20878 xl = gl ^ el & (fl ^ gl) |
0;
20880 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20888 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20895 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20896 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20897 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20899 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20900 w9l = w9l + w2l |
0;
20901 w9h = w9h + w2h + (w9l
>>> 0 < w2l
>>> 0 ?
1 :
0) |
0;
20902 xl = (w10l
>>> 1 | w10h <<
31) ^ (w10l
>>> 8 | w10h <<
24) ^ (w10l
>>> 7 | w10h <<
25) |
0;
20903 w9l = w9l + xl |
0;
20904 w9h = w9h + ((w10h
>>> 1 | w10l <<
31) ^ (w10h
>>> 8 | w10l <<
24) ^ w10h
>>> 7) + (w9l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20905 xl = (w7l
>>> 19 | w7h <<
13) ^ (w7l <<
3 | w7h
>>> 29) ^ (w7l
>>> 6 | w7h <<
26) |
0;
20906 w9l = w9l + xl |
0;
20907 w9h = w9h + ((w7h
>>> 19 | w7l <<
13) ^ (w7h <<
3 | w7l
>>> 29) ^ w7h
>>> 6) + (w9l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20908 tl =
1086792851 + w9l |
0;
20909 th =
852142971 + w9h + (tl
>>> 0 < w9l
>>> 0 ?
1 :
0) |
0;
20911 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20912 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20914 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20915 xl = gl ^ el & (fl ^ gl) |
0;
20917 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20925 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20932 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20933 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20934 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20936 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20937 w10l = w10l + w3l |
0;
20938 w10h = w10h + w3h + (w10l
>>> 0 < w3l
>>> 0 ?
1 :
0) |
0;
20939 xl = (w11l
>>> 1 | w11h <<
31) ^ (w11l
>>> 8 | w11h <<
24) ^ (w11l
>>> 7 | w11h <<
25) |
0;
20940 w10l = w10l + xl |
0;
20941 w10h = w10h + ((w11h
>>> 1 | w11l <<
31) ^ (w11h
>>> 8 | w11l <<
24) ^ w11h
>>> 7) + (w10l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20942 xl = (w8l
>>> 19 | w8h <<
13) ^ (w8l <<
3 | w8h
>>> 29) ^ (w8l
>>> 6 | w8h <<
26) |
0;
20943 w10l = w10l + xl |
0;
20944 w10h = w10h + ((w8h
>>> 19 | w8l <<
13) ^ (w8h <<
3 | w8l
>>> 29) ^ w8h
>>> 6) + (w10l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20945 tl =
365543100 + w10l |
0;
20946 th =
1017036298 + w10h + (tl
>>> 0 < w10l
>>> 0 ?
1 :
0) |
0;
20948 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20949 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20951 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20952 xl = gl ^ el & (fl ^ gl) |
0;
20954 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20962 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20969 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20970 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20971 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20973 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20974 w11l = w11l + w4l |
0;
20975 w11h = w11h + w4h + (w11l
>>> 0 < w4l
>>> 0 ?
1 :
0) |
0;
20976 xl = (w12l
>>> 1 | w12h <<
31) ^ (w12l
>>> 8 | w12h <<
24) ^ (w12l
>>> 7 | w12h <<
25) |
0;
20977 w11l = w11l + xl |
0;
20978 w11h = w11h + ((w12h
>>> 1 | w12l <<
31) ^ (w12h
>>> 8 | w12l <<
24) ^ w12h
>>> 7) + (w11l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20979 xl = (w9l
>>> 19 | w9h <<
13) ^ (w9l <<
3 | w9h
>>> 29) ^ (w9l
>>> 6 | w9h <<
26) |
0;
20980 w11l = w11l + xl |
0;
20981 w11h = w11h + ((w9h
>>> 19 | w9l <<
13) ^ (w9h <<
3 | w9l
>>> 29) ^ w9h
>>> 6) + (w11l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20982 tl =
2618297676 + w11l |
0;
20983 th =
1126000580 + w11h + (tl
>>> 0 < w11l
>>> 0 ?
1 :
0) |
0;
20985 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20986 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20988 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20989 xl = gl ^ el & (fl ^ gl) |
0;
20991 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20999 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
21006 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
21007 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
21008 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
21010 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21011 w12l = w12l + w5l |
0;
21012 w12h = w12h + w5h + (w12l
>>> 0 < w5l
>>> 0 ?
1 :
0) |
0;
21013 xl = (w13l
>>> 1 | w13h <<
31) ^ (w13l
>>> 8 | w13h <<
24) ^ (w13l
>>> 7 | w13h <<
25) |
0;
21014 w12l = w12l + xl |
0;
21015 w12h = w12h + ((w13h
>>> 1 | w13l <<
31) ^ (w13h
>>> 8 | w13l <<
24) ^ w13h
>>> 7) + (w12l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21016 xl = (w10l
>>> 19 | w10h <<
13) ^ (w10l <<
3 | w10h
>>> 29) ^ (w10l
>>> 6 | w10h <<
26) |
0;
21017 w12l = w12l + xl |
0;
21018 w12h = w12h + ((w10h
>>> 19 | w10l <<
13) ^ (w10h <<
3 | w10l
>>> 29) ^ w10h
>>> 6) + (w12l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21019 tl =
3409855158 + w12l |
0;
21020 th =
1288033470 + w12h + (tl
>>> 0 < w12l
>>> 0 ?
1 :
0) |
0;
21022 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
21023 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
21025 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21026 xl = gl ^ el & (fl ^ gl) |
0;
21028 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21036 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
21043 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
21044 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
21045 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
21047 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21048 w13l = w13l + w6l |
0;
21049 w13h = w13h + w6h + (w13l
>>> 0 < w6l
>>> 0 ?
1 :
0) |
0;
21050 xl = (w14l
>>> 1 | w14h <<
31) ^ (w14l
>>> 8 | w14h <<
24) ^ (w14l
>>> 7 | w14h <<
25) |
0;
21051 w13l = w13l + xl |
0;
21052 w13h = w13h + ((w14h
>>> 1 | w14l <<
31) ^ (w14h
>>> 8 | w14l <<
24) ^ w14h
>>> 7) + (w13l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21053 xl = (w11l
>>> 19 | w11h <<
13) ^ (w11l <<
3 | w11h
>>> 29) ^ (w11l
>>> 6 | w11h <<
26) |
0;
21054 w13l = w13l + xl |
0;
21055 w13h = w13h + ((w11h
>>> 19 | w11l <<
13) ^ (w11h <<
3 | w11l
>>> 29) ^ w11h
>>> 6) + (w13l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21056 tl =
4234509866 + w13l |
0;
21057 th =
1501505948 + w13h + (tl
>>> 0 < w13l
>>> 0 ?
1 :
0) |
0;
21059 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
21060 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
21062 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21063 xl = gl ^ el & (fl ^ gl) |
0;
21065 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21073 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
21080 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
21081 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
21082 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
21084 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21085 w14l = w14l + w7l |
0;
21086 w14h = w14h + w7h + (w14l
>>> 0 < w7l
>>> 0 ?
1 :
0) |
0;
21087 xl = (w15l
>>> 1 | w15h <<
31) ^ (w15l
>>> 8 | w15h <<
24) ^ (w15l
>>> 7 | w15h <<
25) |
0;
21088 w14l = w14l + xl |
0;
21089 w14h = w14h + ((w15h
>>> 1 | w15l <<
31) ^ (w15h
>>> 8 | w15l <<
24) ^ w15h
>>> 7) + (w14l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21090 xl = (w12l
>>> 19 | w12h <<
13) ^ (w12l <<
3 | w12h
>>> 29) ^ (w12l
>>> 6 | w12h <<
26) |
0;
21091 w14l = w14l + xl |
0;
21092 w14h = w14h + ((w12h
>>> 19 | w12l <<
13) ^ (w12h <<
3 | w12l
>>> 29) ^ w12h
>>> 6) + (w14l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21093 tl =
987167468 + w14l |
0;
21094 th =
1607167915 + w14h + (tl
>>> 0 < w14l
>>> 0 ?
1 :
0) |
0;
21096 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
21097 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
21099 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21100 xl = gl ^ el & (fl ^ gl) |
0;
21102 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21110 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
21117 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
21118 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
21119 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
21121 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21122 w15l = w15l + w8l |
0;
21123 w15h = w15h + w8h + (w15l
>>> 0 < w8l
>>> 0 ?
1 :
0) |
0;
21124 xl = (w0l
>>> 1 | w0h <<
31) ^ (w0l
>>> 8 | w0h <<
24) ^ (w0l
>>> 7 | w0h <<
25) |
0;
21125 w15l = w15l + xl |
0;
21126 w15h = w15h + ((w0h
>>> 1 | w0l <<
31) ^ (w0h
>>> 8 | w0l <<
24) ^ w0h
>>> 7) + (w15l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21127 xl = (w13l
>>> 19 | w13h <<
13) ^ (w13l <<
3 | w13h
>>> 29) ^ (w13l
>>> 6 | w13h <<
26) |
0;
21128 w15l = w15l + xl |
0;
21129 w15h = w15h + ((w13h
>>> 19 | w13l <<
13) ^ (w13h <<
3 | w13l
>>> 29) ^ w13h
>>> 6) + (w15l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21130 tl =
1246189591 + w15l |
0;
21131 th =
1816402316 + w15h + (tl
>>> 0 < w15l
>>> 0 ?
1 :
0) |
0;
21133 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
21134 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
21136 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21137 xl = gl ^ el & (fl ^ gl) |
0;
21139 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21147 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
21154 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
21155 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
21156 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
21158 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21159 H0l = H0l + al |
0;
21160 H0h = H0h + ah + (H0l
>>> 0 < al
>>> 0 ?
1 :
0) |
0;
21161 H1l = H1l + bl |
0;
21162 H1h = H1h + bh + (H1l
>>> 0 < bl
>>> 0 ?
1 :
0) |
0;
21163 H2l = H2l + cl |
0;
21164 H2h = H2h + ch + (H2l
>>> 0 < cl
>>> 0 ?
1 :
0) |
0;
21165 H3l = H3l + dl |
0;
21166 H3h = H3h + dh + (H3l
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
21167 H4l = H4l + el |
0;
21168 H4h = H4h + eh + (H4l
>>> 0 < el
>>> 0 ?
1 :
0) |
0;
21169 H5l = H5l + fl |
0;
21170 H5h = H5h + fh + (H5l
>>> 0 < fl
>>> 0 ?
1 :
0) |
0;
21171 H6l = H6l + gl |
0;
21172 H6h = H6h + gh + (H6l
>>> 0 < gl
>>> 0 ?
1 :
0) |
0;
21173 H7l = H7l + hl |
0;
21174 H7h = H7h + hh + (H7l
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
21176 function _core_heap(offset) {
21177 offset = offset |
0;
21178 _core(HEAP[offset |
0] <<
24 | HEAP[offset |
1] <<
16 | HEAP[offset |
2] <<
8 | HEAP[offset |
3], HEAP[offset |
4] <<
24 | HEAP[offset |
5] <<
16 | HEAP[offset |
6] <<
8 | HEAP[offset |
7], HEAP[offset |
8] <<
24 | HEAP[offset |
9] <<
16 | HEAP[offset |
10] <<
8 | HEAP[offset |
11], HEAP[offset |
12] <<
24 | HEAP[offset |
13] <<
16 | HEAP[offset |
14] <<
8 | HEAP[offset |
15], HEAP[offset |
16] <<
24 | HEAP[offset |
17] <<
16 | HEAP[offset |
18] <<
8 | HEAP[offset |
19], HEAP[offset |
20] <<
24 | HEAP[offset |
21] <<
16 | HEAP[offset |
22] <<
8 | HEAP[offset |
23], HEAP[offset |
24] <<
24 | HEAP[offset |
25] <<
16 | HEAP[offset |
26] <<
8 | HEAP[offset |
27], HEAP[offset |
28] <<
24 | HEAP[offset |
29] <<
16 | HEAP[offset |
30] <<
8 | HEAP[offset |
31], HEAP[offset |
32] <<
24 | HEAP[offset |
33] <<
16 | HEAP[offset |
34] <<
8 | HEAP[offset |
35], HEAP[offset |
36] <<
24 | HEAP[offset |
37] <<
16 | HEAP[offset |
38] <<
8 | HEAP[offset |
39], HEAP[offset |
40] <<
24 | HEAP[offset |
41] <<
16 | HEAP[offset |
42] <<
8 | HEAP[offset |
43], HEAP[offset |
44] <<
24 | HEAP[offset |
45] <<
16 | HEAP[offset |
46] <<
8 | HEAP[offset |
47], HEAP[offset |
48] <<
24 | HEAP[offset |
49] <<
16 | HEAP[offset |
50] <<
8 | HEAP[offset |
51], HEAP[offset |
52] <<
24 | HEAP[offset |
53] <<
16 | HEAP[offset |
54] <<
8 | HEAP[offset |
55], HEAP[offset |
56] <<
24 | HEAP[offset |
57] <<
16 | HEAP[offset |
58] <<
8 | HEAP[offset |
59], HEAP[offset |
60] <<
24 | HEAP[offset |
61] <<
16 | HEAP[offset |
62] <<
8 | HEAP[offset |
63], HEAP[offset |
64] <<
24 | HEAP[offset |
65] <<
16 | HEAP[offset |
66] <<
8 | HEAP[offset |
67], HEAP[offset |
68] <<
24 | HEAP[offset |
69] <<
16 | HEAP[offset |
70] <<
8 | HEAP[offset |
71], HEAP[offset |
72] <<
24 | HEAP[offset |
73] <<
16 | HEAP[offset |
74] <<
8 | HEAP[offset |
75], HEAP[offset |
76] <<
24 | HEAP[offset |
77] <<
16 | HEAP[offset |
78] <<
8 | HEAP[offset |
79], HEAP[offset |
80] <<
24 | HEAP[offset |
81] <<
16 | HEAP[offset |
82] <<
8 | HEAP[offset |
83], HEAP[offset |
84] <<
24 | HEAP[offset |
85] <<
16 | HEAP[offset |
86] <<
8 | HEAP[offset |
87], HEAP[offset |
88] <<
24 | HEAP[offset |
89] <<
16 | HEAP[offset |
90] <<
8 | HEAP[offset |
91], HEAP[offset |
92] <<
24 | HEAP[offset |
93] <<
16 | HEAP[offset |
94] <<
8 | HEAP[offset |
95], HEAP[offset |
96] <<
24 | HEAP[offset |
97] <<
16 | HEAP[offset |
98] <<
8 | HEAP[offset |
99], HEAP[offset |
100] <<
24 | HEAP[offset |
101] <<
16 | HEAP[offset |
102] <<
8 | HEAP[offset |
103], HEAP[offset |
104] <<
24 | HEAP[offset |
105] <<
16 | HEAP[offset |
106] <<
8 | HEAP[offset |
107], HEAP[offset |
108] <<
24 | HEAP[offset |
109] <<
16 | HEAP[offset |
110] <<
8 | HEAP[offset |
111], HEAP[offset |
112] <<
24 | HEAP[offset |
113] <<
16 | HEAP[offset |
114] <<
8 | HEAP[offset |
115], HEAP[offset |
116] <<
24 | HEAP[offset |
117] <<
16 | HEAP[offset |
118] <<
8 | HEAP[offset |
119], HEAP[offset |
120] <<
24 | HEAP[offset |
121] <<
16 | HEAP[offset |
122] <<
8 | HEAP[offset |
123], HEAP[offset |
124] <<
24 | HEAP[offset |
125] <<
16 | HEAP[offset |
126] <<
8 | HEAP[offset |
127]);
21180 function _state_to_heap(output) {
21181 output = output |
0;
21182 HEAP[output |
0] = H0h
>>> 24;
21183 HEAP[output |
1] = H0h
>>> 16 &
255;
21184 HEAP[output |
2] = H0h
>>> 8 &
255;
21185 HEAP[output |
3] = H0h &
255;
21186 HEAP[output |
4] = H0l
>>> 24;
21187 HEAP[output |
5] = H0l
>>> 16 &
255;
21188 HEAP[output |
6] = H0l
>>> 8 &
255;
21189 HEAP[output |
7] = H0l &
255;
21190 HEAP[output |
8] = H1h
>>> 24;
21191 HEAP[output |
9] = H1h
>>> 16 &
255;
21192 HEAP[output |
10] = H1h
>>> 8 &
255;
21193 HEAP[output |
11] = H1h &
255;
21194 HEAP[output |
12] = H1l
>>> 24;
21195 HEAP[output |
13] = H1l
>>> 16 &
255;
21196 HEAP[output |
14] = H1l
>>> 8 &
255;
21197 HEAP[output |
15] = H1l &
255;
21198 HEAP[output |
16] = H2h
>>> 24;
21199 HEAP[output |
17] = H2h
>>> 16 &
255;
21200 HEAP[output |
18] = H2h
>>> 8 &
255;
21201 HEAP[output |
19] = H2h &
255;
21202 HEAP[output |
20] = H2l
>>> 24;
21203 HEAP[output |
21] = H2l
>>> 16 &
255;
21204 HEAP[output |
22] = H2l
>>> 8 &
255;
21205 HEAP[output |
23] = H2l &
255;
21206 HEAP[output |
24] = H3h
>>> 24;
21207 HEAP[output |
25] = H3h
>>> 16 &
255;
21208 HEAP[output |
26] = H3h
>>> 8 &
255;
21209 HEAP[output |
27] = H3h &
255;
21210 HEAP[output |
28] = H3l
>>> 24;
21211 HEAP[output |
29] = H3l
>>> 16 &
255;
21212 HEAP[output |
30] = H3l
>>> 8 &
255;
21213 HEAP[output |
31] = H3l &
255;
21214 HEAP[output |
32] = H4h
>>> 24;
21215 HEAP[output |
33] = H4h
>>> 16 &
255;
21216 HEAP[output |
34] = H4h
>>> 8 &
255;
21217 HEAP[output |
35] = H4h &
255;
21218 HEAP[output |
36] = H4l
>>> 24;
21219 HEAP[output |
37] = H4l
>>> 16 &
255;
21220 HEAP[output |
38] = H4l
>>> 8 &
255;
21221 HEAP[output |
39] = H4l &
255;
21222 HEAP[output |
40] = H5h
>>> 24;
21223 HEAP[output |
41] = H5h
>>> 16 &
255;
21224 HEAP[output |
42] = H5h
>>> 8 &
255;
21225 HEAP[output |
43] = H5h &
255;
21226 HEAP[output |
44] = H5l
>>> 24;
21227 HEAP[output |
45] = H5l
>>> 16 &
255;
21228 HEAP[output |
46] = H5l
>>> 8 &
255;
21229 HEAP[output |
47] = H5l &
255;
21230 HEAP[output |
48] = H6h
>>> 24;
21231 HEAP[output |
49] = H6h
>>> 16 &
255;
21232 HEAP[output |
50] = H6h
>>> 8 &
255;
21233 HEAP[output |
51] = H6h &
255;
21234 HEAP[output |
52] = H6l
>>> 24;
21235 HEAP[output |
53] = H6l
>>> 16 &
255;
21236 HEAP[output |
54] = H6l
>>> 8 &
255;
21237 HEAP[output |
55] = H6l &
255;
21238 HEAP[output |
56] = H7h
>>> 24;
21239 HEAP[output |
57] = H7h
>>> 16 &
255;
21240 HEAP[output |
58] = H7h
>>> 8 &
255;
21241 HEAP[output |
59] = H7h &
255;
21242 HEAP[output |
60] = H7l
>>> 24;
21243 HEAP[output |
61] = H7l
>>> 16 &
255;
21244 HEAP[output |
62] = H7l
>>> 8 &
255;
21245 HEAP[output |
63] = H7l &
255;
21266 function init(h0h, h0l, h1h, h1l, h2h, h2l, h3h, h3l, h4h, h4l, h5h, h5l, h6h, h6l, h7h, h7l, total) {
21302 function process(offset, length) {
21303 offset = offset |
0;
21304 length = length |
0;
21306 if (offset &
127) return -
1;
21307 while ((length |
0)
>=
128) {
21308 _core_heap(offset);
21309 offset = offset +
128 |
0;
21310 length = length -
128 |
0;
21311 hashed = hashed +
128 |
0;
21313 TOTAL = TOTAL + hashed |
0;
21316 function finish(offset, length, output) {
21317 offset = offset |
0;
21318 length = length |
0;
21319 output = output |
0;
21320 var hashed =
0, i =
0;
21321 if (offset &
127) return -
1;
21322 if (~output) if (output &
63) return -
1;
21323 if ((length |
0)
>=
128) {
21324 hashed = process(offset, length) |
0;
21325 if ((hashed |
0) == -
1) return -
1;
21326 offset = offset + hashed |
0;
21327 length = length - hashed |
0;
21329 hashed = hashed + length |
0;
21330 TOTAL = TOTAL + length |
0;
21331 HEAP[offset | length] =
128;
21332 if ((length |
0)
>=
112) {
21333 for (i = length +
1 |
0; (i |
0) <
128; i = i +
1 |
0) HEAP[offset | i] =
0;
21334 _core_heap(offset);
21336 HEAP[offset |
0] =
0;
21338 for (i = length +
1 |
0; (i |
0) <
123; i = i +
1 |
0) HEAP[offset | i] =
0;
21339 HEAP[offset |
123] = TOTAL
>>> 29;
21340 HEAP[offset |
124] = TOTAL
>>> 21 &
255;
21341 HEAP[offset |
125] = TOTAL
>>> 13 &
255;
21342 HEAP[offset |
126] = TOTAL
>>> 5 &
255;
21343 HEAP[offset |
127] = TOTAL <<
3 &
255;
21344 _core_heap(offset);
21345 if (~output) _state_to_heap(output);
21348 function hmac_reset() {
21367 function _hmac_opad() {
21386 function hmac_init(p0h, p0l, p1h, p1l, p2h, p2l, p3h, p3l, p4h, p4l, p5h, p5l, p6h, p6l, p7h, p7l, p8h, p8l, p9h, p9l, p10h, p10l, p11h, p11l, p12h, p12l, p13h, p13l, p14h, p14l, p15h, p15l) {
21420 _core(p0h ^
1549556828, p0l ^
1549556828, p1h ^
1549556828, p1l ^
1549556828, p2h ^
1549556828, p2l ^
1549556828, p3h ^
1549556828, p3l ^
1549556828, p4h ^
1549556828, p4l ^
1549556828, p5h ^
1549556828, p5l ^
1549556828, p6h ^
1549556828, p6l ^
1549556828, p7h ^
1549556828, p7l ^
1549556828, p8h ^
1549556828, p8l ^
1549556828, p9h ^
1549556828, p9l ^
1549556828, p10h ^
1549556828, p10l ^
1549556828, p11h ^
1549556828, p11l ^
1549556828, p12h ^
1549556828, p12l ^
1549556828, p13h ^
1549556828, p13l ^
1549556828, p14h ^
1549556828, p14l ^
1549556828, p15h ^
1549556828, p15l ^
1549556828);
21438 _core(p0h ^
909522486, p0l ^
909522486, p1h ^
909522486, p1l ^
909522486, p2h ^
909522486, p2l ^
909522486, p3h ^
909522486, p3l ^
909522486, p4h ^
909522486, p4l ^
909522486, p5h ^
909522486, p5l ^
909522486, p6h ^
909522486, p6l ^
909522486, p7h ^
909522486, p7l ^
909522486, p8h ^
909522486, p8l ^
909522486, p9h ^
909522486, p9l ^
909522486, p10h ^
909522486, p10l ^
909522486, p11h ^
909522486, p11l ^
909522486, p12h ^
909522486, p12l ^
909522486, p13h ^
909522486, p13l ^
909522486, p14h ^
909522486, p14l ^
909522486, p15h ^
909522486, p15l ^
909522486);
21457 function hmac_finish(offset, length, output) {
21458 offset = offset |
0;
21459 length = length |
0;
21460 output = output |
0;
21461 var t0h =
0, t0l =
0, t1h =
0, t1l =
0, t2h =
0, t2l =
0, t3h =
0, t3l =
0, t4h =
0, t4l =
0, t5h =
0, t5l =
0, t6h =
0, t6l =
0, t7h =
0, t7l =
0, hashed =
0;
21462 if (offset &
127) return -
1;
21463 if (~output) if (output &
63) return -
1;
21464 hashed = finish(offset, length, -
1) |
0;
21482 _core(t0h, t0l, t1h, t1l, t2h, t2l, t3h, t3l, t4h, t4l, t5h, t5l, t6h, t6l, t7h, t7l,
2147483648,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
1536);
21483 if (~output) _state_to_heap(output);
21486 function pbkdf2_generate_block(offset, length, block, count, output) {
21487 offset = offset |
0;
21488 length = length |
0;
21491 output = output |
0;
21492 var h0h =
0, h0l =
0, h1h =
0, h1l =
0, h2h =
0, h2l =
0, h3h =
0, h3l =
0, h4h =
0, h4l =
0, h5h =
0, h5l =
0, h6h =
0, h6l =
0, h7h =
0, h7l =
0, t0h =
0, t0l =
0, t1h =
0, t1l =
0, t2h =
0, t2l =
0, t3h =
0, t3l =
0, t4h =
0, t4l =
0, t5h =
0, t5l =
0, t6h =
0, t6l =
0, t7h =
0, t7l =
0;
21493 if (offset &
127) return -
1;
21494 if (~output) if (output &
63) return -
1;
21495 HEAP[offset + length |
0] = block
>>> 24;
21496 HEAP[offset + length +
1 |
0] = block
>>> 16 &
255;
21497 HEAP[offset + length +
2 |
0] = block
>>> 8 &
255;
21498 HEAP[offset + length +
3 |
0] = block &
255;
21499 // Closure compiler warning - The result of the 'bitor' operator is not being used
21500 //hmac_finish(offset, length +
4 |
0, -
1) |
0;
21501 hmac_finish(offset, length +
4 |
0, -
1);
21518 count = count -
1 |
0;
21519 while ((count |
0)
> 0) {
21521 _core(t0h, t0l, t1h, t1l, t2h, t2l, t3h, t3l, t4h, t4l, t5h, t5l, t6h, t6l, t7h, t7l,
2147483648,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
1536);
21539 _core(t0h, t0l, t1h, t1l, t2h, t2l, t3h, t3l, t4h, t4l, t5h, t5l, t6h, t6l, t7h, t7l,
2147483648,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
1536);
21572 count = count -
1 |
0;
21590 if (~output) _state_to_heap(output);
21598 hmac_reset: hmac_reset,
21599 hmac_init: hmac_init,
21600 hmac_finish: hmac_finish,
21601 pbkdf2_generate_block: pbkdf2_generate_block
21604 var _sha512_block_size =
128, _sha512_hash_size =
64;
21605 function sha512_constructor(options) {
21606 options = options || {};
21607 options.heapSize = options.heapSize ||
4096;
21608 if (options.heapSize <=
0 || options.heapSize %
4096) throw new IllegalArgumentError(
"heapSize must be a positive number and multiple of 4096");
21609 this.heap = options.heap || new Uint8Array(options.heapSize);
21610 this.asm = options.asm || sha512_asm(global, null, this.heap.buffer);
21611 this.BLOCK_SIZE = _sha512_block_size;
21612 this.HASH_SIZE = _sha512_hash_size;
21615 function sha512_reset() {
21616 this.result = null;
21622 function sha512_process(data) {
21623 if (this.result !== null) throw new IllegalStateError(
"state must be reset before processing new data");
21624 var dpos =
0, dlen =
0, clen =
0;
21625 if (is_buffer(data) || is_bytes(data)) {
21626 dpos = data.byteOffset ||
0;
21627 dlen = data.byteLength;
21628 } else if (is_string(data)) {
21629 dlen = data.length;
21631 throw new TypeError(
"data isn't of expected type");
21634 clen = this.heap.byteLength - this.pos - this.len;
21635 clen = clen < dlen ? clen : dlen;
21636 if (is_buffer(data) || is_bytes(data)) {
21637 this.heap.set(new Uint8Array(data.buffer || data, dpos, clen), this.pos + this.len);
21639 for (var i =
0; i < clen; i++) this.heap[this.pos + this.len + i] = data.charCodeAt(dpos + i);
21644 clen = this.asm.process(this.pos, this.len);
21645 if (clen < this.len) {
21655 function sha512_finish() {
21656 if (this.result !== null) throw new IllegalStateError(
"state must be reset before processing new data");
21657 this.asm.finish(this.pos, this.len,
0);
21658 this.result = new Uint8Array(_sha512_hash_size);
21659 this.result.set(this.heap.subarray(
0, _sha512_hash_size));
21664 sha512_constructor.BLOCK_SIZE = _sha512_block_size;
21665 sha512_constructor.HASH_SIZE = _sha512_hash_size;
21666 var sha512_prototype = sha512_constructor.prototype;
21667 sha512_prototype.reset = sha512_reset;
21668 sha512_prototype.process = sha512_process;
21669 sha512_prototype.finish = sha512_finish;
21670 function hmac_constructor(options) {
21671 options = options || {};
21672 if (!options.hash) throw new SyntaxError(
"option 'hash' is required");
21673 if (!options.hash.HASH_SIZE) throw new SyntaxError(
"option 'hash' supplied doesn't seem to be a valid hash function");
21674 this.hash = options.hash;
21675 this.BLOCK_SIZE = this.hash.BLOCK_SIZE;
21676 this.HMAC_SIZE = this.hash.HASH_SIZE;
21678 this.verify = null;
21679 this.result = null;
21680 if (options.password !== undefined || options.verify !== undefined) this.reset(options);
21683 function hmac_sha256_constructor(options) {
21684 options = options || {};
21685 if (!(options.hash instanceof sha256_constructor)) options.hash = new sha256_constructor(options);
21686 hmac_constructor.call(this, options);
21689 function hmac_sha512_constructor(options) {
21690 options = options || {};
21691 if (!(options.hash instanceof sha512_constructor)) options.hash = new sha512_constructor(options);
21692 hmac_constructor.call(this, options);
21695 function _hmac_key(hash, password) {
21697 if (is_buffer(password) || is_bytes(password)) {
21698 key = new Uint8Array(hash.BLOCK_SIZE);
21699 if (password.byteLength
> hash.BLOCK_SIZE) {
21700 key.set(new Uint8Array(hash.reset().process(password).finish().result));
21701 } else if (is_buffer(password)) {
21702 key.set(new Uint8Array(password));
21706 } else if (is_string(password)) {
21707 key = new Uint8Array(hash.BLOCK_SIZE);
21708 if (password.length
> hash.BLOCK_SIZE) {
21709 key.set(new Uint8Array(hash.reset().process(password).finish().result));
21711 for (var i =
0; i < password.length; ++i) key[i] = password.charCodeAt(i);
21714 throw new TypeError("password isn't of expected type");
21718 function _hmac_init_verify(verify) {
21719 if (is_buffer(verify) || is_bytes(verify)) {
21720 verify = new Uint8Array(verify);
21721 } else if (is_string(verify)) {
21722 verify = string_to_bytes(verify);
21724 throw new TypeError("verify tag isn't of expected type");
21726 if (verify.length !== this.HMAC_SIZE) throw new IllegalArgumentError("illegal verification tag size");
21727 this.verify = verify;
21729 function hmac_reset(options) {
21730 options = options || {};
21731 var password = options.password;
21732 if (this.key === null && !is_string(password) && !password) throw new IllegalStateError("no key is associated with the instance");
21733 this.result = null;
21735 if (password || is_string(password)) this.key = _hmac_key(this.hash, password);
21736 var ipad = new Uint8Array(this.key);
21737 for (var i =
0; i < ipad.length; ++i) ipad[i] ^=
54;
21738 this.hash.process(ipad);
21739 var verify = options.verify;
21740 if (verify !== undefined) {
21741 _hmac_init_verify.call(this, verify);
21743 this.verify = null;
21747 function hmac_sha256_reset(options) {
21748 options = options || {};
21749 var password = options.password;
21750 if (this.key === null && !is_string(password) && !password) throw new IllegalStateError("no key is associated with the instance");
21751 this.result = null;
21753 if (password || is_string(password)) {
21754 this.key = _hmac_key(this.hash, password);
21755 this.hash.reset().asm.hmac_init(this.key[
0] <<
24 | this.key[
1] <<
16 | this.key[
2] <<
8 | this.key[
3], this.key[
4] <<
24 | this.key[
5] <<
16 | this.key[
6] <<
8 | this.key[
7], this.key[
8] <<
24 | this.key[
9] <<
16 | this.key[
10] <<
8 | this.key[
11], this.key[
12] <<
24 | this.key[
13] <<
16 | this.key[
14] <<
8 | this.key[
15], this.key[
16] <<
24 | this.key[
17] <<
16 | this.key[
18] <<
8 | this.key[
19], this.key[
20] <<
24 | this.key[
21] <<
16 | this.key[
22] <<
8 | this.key[
23], this.key[
24] <<
24 | this.key[
25] <<
16 | this.key[
26] <<
8 | this.key[
27], this.key[
28] <<
24 | this.key[
29] <<
16 | this.key[
30] <<
8 | this.key[
31], this.key[
32] <<
24 | this.key[
33] <<
16 | this.key[
34] <<
8 | this.key[
35], this.key[
36] <<
24 | this.key[
37] <<
16 | this.key[
38] <<
8 | this.key[
39], this.key[
40] <<
24 | this.key[
41] <<
16 | this.key[
42] <<
8 | this.key[
43], this.key[
44] <<
24 | this.key[
45] <<
16 | this.key[
46] <<
8 | this.key[
47], this.key[
48] <<
24 | this.key[
49] <<
16 | this.key[
50] <<
8 | this.key[
51], this.key[
52] <<
24 | this.key[
53] <<
16 | this.key[
54] <<
8 | this.key[
55], this.key[
56] <<
24 | this.key[
57] <<
16 | this.key[
58] <<
8 | this.key[
59], this.key[
60] <<
24 | this.key[
61] <<
16 | this.key[
62] <<
8 | this.key[
63]);
21757 this.hash.asm.hmac_reset();
21759 var verify = options.verify;
21760 if (verify !== undefined) {
21761 _hmac_init_verify.call(this, verify);
21763 this.verify = null;
21767 function hmac_sha512_reset(options) {
21768 options = options || {};
21769 var password = options.password;
21770 if (this.key === null && !is_string(password) && !password) throw new IllegalStateError("no key is associated with the instance");
21771 this.result = null;
21773 if (password || is_string(password)) {
21774 this.key = _hmac_key(this.hash, password);
21775 this.hash.reset().asm.hmac_init(this.key[
0] <<
24 | this.key[
1] <<
16 | this.key[
2] <<
8 | this.key[
3], this.key[
4] <<
24 | this.key[
5] <<
16 | this.key[
6] <<
8 | this.key[
7], this.key[
8] <<
24 | this.key[
9] <<
16 | this.key[
10] <<
8 | this.key[
11], this.key[
12] <<
24 | this.key[
13] <<
16 | this.key[
14] <<
8 | this.key[
15], this.key[
16] <<
24 | this.key[
17] <<
16 | this.key[
18] <<
8 | this.key[
19], this.key[
20] <<
24 | this.key[
21] <<
16 | this.key[
22] <<
8 | this.key[
23], this.key[
24] <<
24 | this.key[
25] <<
16 | this.key[
26] <<
8 | this.key[
27], this.key[
28] <<
24 | this.key[
29] <<
16 | this.key[
30] <<
8 | this.key[
31], this.key[
32] <<
24 | this.key[
33] <<
16 | this.key[
34] <<
8 | this.key[
35], this.key[
36] <<
24 | this.key[
37] <<
16 | this.key[
38] <<
8 | this.key[
39], this.key[
40] <<
24 | this.key[
41] <<
16 | this.key[
42] <<
8 | this.key[
43], this.key[
44] <<
24 | this.key[
45] <<
16 | this.key[
46] <<
8 | this.key[
47], this.key[
48] <<
24 | this.key[
49] <<
16 | this.key[
50] <<
8 | this.key[
51], this.key[
52] <<
24 | this.key[
53] <<
16 | this.key[
54] <<
8 | this.key[
55], this.key[
56] <<
24 | this.key[
57] <<
16 | this.key[
58] <<
8 | this.key[
59], this.key[
60] <<
24 | this.key[
61] <<
16 | this.key[
62] <<
8 | this.key[
63], this.key[
64] <<
24 | this.key[
65] <<
16 | this.key[
66] <<
8 | this.key[
67], this.key[
68] <<
24 | this.key[
69] <<
16 | this.key[
70] <<
8 | this.key[
71], this.key[
72] <<
24 | this.key[
73] <<
16 | this.key[
74] <<
8 | this.key[
75], this.key[
76] <<
24 | this.key[
77] <<
16 | this.key[
78] <<
8 | this.key[
79], this.key[
80] <<
24 | this.key[
81] <<
16 | this.key[
82] <<
8 | this.key[
83], this.key[
84] <<
24 | this.key[
85] <<
16 | this.key[
86] <<
8 | this.key[
87], this.key[
88] <<
24 | this.key[
89] <<
16 | this.key[
90] <<
8 | this.key[
91], this.key[
92] <<
24 | this.key[
93] <<
16 | this.key[
94] <<
8 | this.key[
95], this.key[
96] <<
24 | this.key[
97] <<
16 | this.key[
98] <<
8 | this.key[
99], this.key[
100] <<
24 | this.key[
101] <<
16 | this.key[
102] <<
8 | this.key[
103], this.key[
104] <<
24 | this.key[
105] <<
16 | this.key[
106] <<
8 | this.key[
107], this.key[
108] <<
24 | this.key[
109] <<
16 | this.key[
110] <<
8 | this.key[
111], this.key[
112] <<
24 | this.key[
113] <<
16 | this.key[
114] <<
8 | this.key[
115], this.key[
116] <<
24 | this.key[
117] <<
16 | this.key[
118] <<
8 | this.key[
119], this.key[
120] <<
24 | this.key[
121] <<
16 | this.key[
122] <<
8 | this.key[
123], this.key[
124] <<
24 | this.key[
125] <<
16 | this.key[
126] <<
8 | this.key[
127]);
21777 this.hash.asm.hmac_reset();
21779 var verify = options.verify;
21780 if (verify !== undefined) {
21781 _hmac_init_verify.call(this, verify);
21783 this.verify = null;
21787 function hmac_process(data) {
21788 if (this.key === null) throw new IllegalStateError("no key is associated with the instance");
21789 if (this.result !== null) throw new IllegalStateError("state must be reset before processing new data");
21790 this.hash.process(data);
21793 function hmac_finish() {
21794 if (this.key === null) throw new IllegalStateError("no key is associated with the instance");
21795 if (this.result !== null) throw new IllegalStateError("state must be reset before processing new data");
21796 var inner_result = this.hash.finish().result;
21797 var opad = new Uint8Array(this.key);
21798 for (var i =
0; i < opad.length; ++i) opad[i] ^=
92;
21799 var verify = this.verify;
21800 var result = this.hash.reset().process(opad).process(inner_result).finish().result;
21802 if (verify.length === result.length) {
21804 for (var i =
0; i < verify.length; i++) {
21805 diff |= verify[i] ^ result[i];
21807 this.result = !diff;
21809 this.result = false;
21812 this.result = result;
21816 function hmac_sha256_finish() {
21817 if (this.key === null) throw new IllegalStateError("no key is associated with the instance");
21818 if (this.result !== null) throw new IllegalStateError("state must be reset before processing new data");
21819 var hash = this.hash, asm = this.hash.asm, heap = this.hash.heap;
21820 asm.hmac_finish(hash.pos, hash.len,
0);
21821 var verify = this.verify;
21822 var result = new Uint8Array(_sha256_hash_size);
21823 result.set(heap.subarray(
0, _sha256_hash_size));
21825 if (verify.length === result.length) {
21827 for (var i =
0; i < verify.length; i++) {
21828 diff |= verify[i] ^ result[i];
21830 this.result = !diff;
21832 this.result = false;
21835 this.result = result;
21839 function hmac_sha512_finish() {
21840 if (this.key === null) throw new IllegalStateError("no key is associated with the instance");
21841 if (this.result !== null) throw new IllegalStateError("state must be reset before processing new data");
21842 var hash = this.hash, asm = this.hash.asm, heap = this.hash.heap;
21843 asm.hmac_finish(hash.pos, hash.len,
0);
21844 var verify = this.verify;
21845 var result = new Uint8Array(_sha512_hash_size);
21846 result.set(heap.subarray(
0, _sha512_hash_size));
21848 if (verify.length === result.length) {
21850 for (var i =
0; i < verify.length; i++) {
21851 diff |= verify[i] ^ result[i];
21853 this.result = !diff;
21855 this.result = false;
21858 this.result = result;
21862 var hmac_prototype = hmac_constructor.prototype;
21863 hmac_prototype.reset = hmac_reset;
21864 hmac_prototype.process = hmac_process;
21865 hmac_prototype.finish = hmac_finish;
21866 hmac_sha256_constructor.BLOCK_SIZE = sha256_constructor.BLOCK_SIZE;
21867 hmac_sha256_constructor.HMAC_SIZE = sha256_constructor.HASH_SIZE;
21868 var hmac_sha256_prototype = hmac_sha256_constructor.prototype;
21869 hmac_sha256_prototype.reset = hmac_sha256_reset;
21870 hmac_sha256_prototype.process = hmac_process;
21871 hmac_sha256_prototype.finish = hmac_sha256_finish;
21872 hmac_sha512_constructor.BLOCK_SIZE = sha512_constructor.BLOCK_SIZE;
21873 hmac_sha512_constructor.HMAC_SIZE = sha512_constructor.HASH_SIZE;
21874 var hmac_sha512_prototype = hmac_sha512_constructor.prototype;
21875 hmac_sha512_prototype.reset = hmac_sha512_reset;
21876 hmac_sha512_prototype.process = hmac_process;
21877 hmac_sha512_prototype.finish = hmac_sha512_finish;
21878 function pbkdf2_constructor(options) {
21879 options = options || {};
21880 if (!options.hmac) throw new SyntaxError("option 'hmac' is required");
21881 if (!options.hmac.HMAC_SIZE) throw new SyntaxError("option 'hmac' supplied doesn't seem to be a valid HMAC function");
21882 this.hmac = options.hmac;
21883 this.count = options.count ||
4096;
21884 this.length = options.length || this.hmac.HMAC_SIZE;
21885 this.result = null;
21886 var password = options.password;
21887 if (password || is_string(password)) this.reset(options);
21890 function pbkdf2_hmac_sha256_constructor(options) {
21891 options = options || {};
21892 if (!(options.hmac instanceof hmac_sha256_constructor)) options.hmac = new hmac_sha256_constructor(options);
21893 pbkdf2_constructor.call(this, options);
21896 function pbkdf2_hmac_sha512_constructor(options) {
21897 options = options || {};
21898 if (!(options.hmac instanceof hmac_sha512_constructor)) options.hmac = new hmac_sha512_constructor(options);
21899 pbkdf2_constructor.call(this, options);
21902 function pbkdf2_reset(options) {
21903 this.result = null;
21904 this.hmac.reset(options);
21907 function pbkdf2_generate(salt, count, length) {
21908 if (this.result !== null) throw new IllegalStateError("state must be reset before processing new data");
21909 if (!salt && !is_string(salt)) throw new IllegalArgumentError("bad 'salt' value");
21910 count = count || this.count;
21911 length = length || this.length;
21912 this.result = new Uint8Array(length);
21913 var blocks = Math.ceil(length / this.hmac.HMAC_SIZE);
21914 for (var i =
1; i <= blocks; ++i) {
21915 var j = (i -
1) * this.hmac.HMAC_SIZE;
21916 var l = (i < blocks ?
0 : length % this.hmac.HMAC_SIZE) || this.hmac.HMAC_SIZE;
21917 var tmp = new Uint8Array(this.hmac.reset().process(salt).process(new Uint8Array([ i
>>> 24 &
255, i
>>> 16 &
255, i
>>> 8 &
255, i &
255 ])).finish().result);
21918 this.result.set(tmp.subarray(
0, l), j);
21919 for (var k =
1; k < count; ++k) {
21920 tmp = new Uint8Array(this.hmac.reset().process(tmp).finish().result);
21921 for (var r =
0; r < l; ++r) this.result[j + r] ^= tmp[r];
21926 function pbkdf2_hmac_sha256_generate(salt, count, length) {
21927 if (this.result !== null) throw new IllegalStateError(
"state must be reset before processing new data");
21928 if (!salt && !is_string(salt)) throw new IllegalArgumentError(
"bad 'salt' value");
21929 count = count || this.count;
21930 length = length || this.length;
21931 this.result = new Uint8Array(length);
21932 var blocks = Math.ceil(length / this.hmac.HMAC_SIZE);
21933 for (var i =
1; i <= blocks; ++i) {
21934 var j = (i -
1) * this.hmac.HMAC_SIZE;
21935 var l = (i < blocks ?
0 : length % this.hmac.HMAC_SIZE) || this.hmac.HMAC_SIZE;
21936 this.hmac.reset().process(salt);
21937 this.hmac.hash.asm.pbkdf2_generate_block(this.hmac.hash.pos, this.hmac.hash.len, i, count,
0);
21938 this.result.set(this.hmac.hash.heap.subarray(
0, l), j);
21942 function pbkdf2_hmac_sha512_generate(salt, count, length) {
21943 if (this.result !== null) throw new IllegalStateError(
"state must be reset before processing new data");
21944 if (!salt && !is_string(salt)) throw new IllegalArgumentError(
"bad 'salt' value");
21945 count = count || this.count;
21946 length = length || this.length;
21947 this.result = new Uint8Array(length);
21948 var blocks = Math.ceil(length / this.hmac.HMAC_SIZE);
21949 for (var i =
1; i <= blocks; ++i) {
21950 var j = (i -
1) * this.hmac.HMAC_SIZE;
21951 var l = (i < blocks ?
0 : length % this.hmac.HMAC_SIZE) || this.hmac.HMAC_SIZE;
21952 this.hmac.reset().process(salt);
21953 this.hmac.hash.asm.pbkdf2_generate_block(this.hmac.hash.pos, this.hmac.hash.len, i, count,
0);
21954 this.result.set(this.hmac.hash.heap.subarray(
0, l), j);
21958 var pbkdf2_prototype = pbkdf2_constructor.prototype;
21959 pbkdf2_prototype.reset = pbkdf2_reset;
21960 pbkdf2_prototype.generate = pbkdf2_generate;
21961 var pbkdf2_hmac_sha256_prototype = pbkdf2_hmac_sha256_constructor.prototype;
21962 pbkdf2_hmac_sha256_prototype.reset = pbkdf2_reset;
21963 pbkdf2_hmac_sha256_prototype.generate = pbkdf2_hmac_sha256_generate;
21964 var pbkdf2_hmac_sha512_prototype = pbkdf2_hmac_sha512_constructor.prototype;
21965 pbkdf2_hmac_sha512_prototype.reset = pbkdf2_reset;
21966 pbkdf2_hmac_sha512_prototype.generate = pbkdf2_hmac_sha512_generate;
21967 global.IllegalStateError = IllegalStateError;
21968 global.IllegalArgumentError = IllegalArgumentError;
21969 global.SecurityError = SecurityError;
21970 exports.string_to_bytes = string_to_bytes;
21971 exports.hex_to_bytes = hex_to_bytes;
21972 exports.base64_to_bytes = base64_to_bytes;
21973 exports.bytes_to_string = bytes_to_string;
21974 exports.bytes_to_hex = bytes_to_hex;
21975 exports.bytes_to_base64 = bytes_to_base64;
21976 var SHA256_instance = new sha256_constructor({
21979 function sha256_bytes(data) {
21980 if (data === undefined) throw new SyntaxError(
"data required");
21981 return SHA256_instance.reset().process(data).finish().result;
21983 function sha256_hex(data) {
21984 var result = sha256_bytes(data);
21985 return bytes_to_hex(result);
21987 function sha256_base64(data) {
21988 var result = sha256_bytes(data);
21989 return bytes_to_base64(result);
21992 bytes: sha256_bytes,
21994 base64: sha256_base64
21996 var SHA512_instance = new sha512_constructor({
21999 function sha512_bytes(data) {
22000 if (data === undefined) throw new SyntaxError(
"data required");
22001 return SHA512_instance.reset().process(data).finish().result;
22003 function sha512_hex(data) {
22004 var result = sha512_bytes(data);
22005 return bytes_to_hex(result);
22007 function sha512_base64(data) {
22008 var result = sha512_bytes(data);
22009 return bytes_to_base64(result);
22012 bytes: sha512_bytes,
22014 base64: sha512_base64
22016 var hmac_sha256_instance = new hmac_sha256_constructor({
22017 hash: SHA256_instance
22019 function hmac_sha256_bytes(data, password) {
22020 if (data === undefined) throw new SyntaxError(
"data required");
22021 if (password === undefined) throw new SyntaxError(
"password required");
22022 return hmac_sha256_instance.reset({
22024 }).process(data).finish().result;
22026 function hmac_sha256_hex(data, password) {
22027 var result = hmac_sha256_bytes(data, password);
22028 return bytes_to_hex(result);
22030 function hmac_sha256_base64(data, password) {
22031 var result = hmac_sha256_bytes(data, password);
22032 return bytes_to_base64(result);
22034 exports.HMAC = exports.HMAC_SHA256 = {
22035 bytes: hmac_sha256_bytes,
22036 hex: hmac_sha256_hex,
22037 base64: hmac_sha256_base64
22039 var hmac_sha512_instance = new hmac_sha512_constructor({
22040 hash: SHA512_instance
22042 function hmac_sha512_bytes(data, password) {
22043 if (data === undefined) throw new SyntaxError(
"data required");
22044 if (password === undefined) throw new SyntaxError(
"password required");
22045 return hmac_sha512_instance.reset({
22047 }).process(data).finish().result;
22049 function hmac_sha512_hex(data, password) {
22050 var result = hmac_sha512_bytes(data, password);
22051 return bytes_to_hex(result);
22053 function hmac_sha512_base64(data, password) {
22054 var result = hmac_sha512_bytes(data, password);
22055 return bytes_to_base64(result);
22057 exports.HMAC_SHA512 = {
22058 bytes: hmac_sha512_bytes,
22059 hex: hmac_sha512_hex,
22060 base64: hmac_sha512_base64
22062 var pbkdf2_hmac_sha256_instance = new pbkdf2_hmac_sha256_constructor({
22063 hmac: hmac_sha256_instance
22065 function pbkdf2_hmac_sha256_bytes(password, salt, iterations, dklen) {
22066 if (password === undefined) throw new SyntaxError(
"password required");
22067 if (salt === undefined) throw new SyntaxError(
"salt required");
22068 return pbkdf2_hmac_sha256_instance.reset({
22070 }).generate(salt, iterations, dklen).result;
22072 function pbkdf2_hmac_sha256_hex(password, salt, iterations, dklen) {
22073 var result = pbkdf2_hmac_sha256_bytes(password, salt, iterations, dklen);
22074 return bytes_to_hex(result);
22076 function pbkdf2_hmac_sha256_base64(password, salt, iterations, dklen) {
22077 var result = pbkdf2_hmac_sha256_bytes(password, salt, iterations, dklen);
22078 return bytes_to_base64(result);
22080 exports.PBKDF2 = exports.PBKDF2_HMAC_SHA256 = {
22081 bytes: pbkdf2_hmac_sha256_bytes,
22082 hex: pbkdf2_hmac_sha256_hex,
22083 base64: pbkdf2_hmac_sha256_base64
22085 var pbkdf2_hmac_sha512_instance = new pbkdf2_hmac_sha512_constructor({
22086 hmac: hmac_sha512_instance
22088 function pbkdf2_hmac_sha512_bytes(password, salt, iterations, dklen) {
22089 if (password === undefined) throw new SyntaxError(
"password required");
22090 if (salt === undefined) throw new SyntaxError(
"salt required");
22091 return pbkdf2_hmac_sha512_instance.reset({
22093 }).generate(salt, iterations, dklen).result;
22095 function pbkdf2_hmac_sha512_hex(password, salt, iterations, dklen) {
22096 var result = pbkdf2_hmac_sha512_bytes(password, salt, iterations, dklen);
22097 return bytes_to_hex(result);
22099 function pbkdf2_hmac_sha512_base64(password, salt, iterations, dklen) {
22100 var result = pbkdf2_hmac_sha512_bytes(password, salt, iterations, dklen);
22101 return bytes_to_base64(result);
22103 exports.PBKDF2_HMAC_SHA512 = {
22104 bytes: pbkdf2_hmac_sha512_bytes,
22105 hex: pbkdf2_hmac_sha512_hex,
22106 base64: pbkdf2_hmac_sha512_base64
22108 var cbc_aes_instance = new cbc_aes_constructor({
22111 function cbc_aes_encrypt_bytes(data, key, padding, iv) {
22112 if (data === undefined) throw new SyntaxError(
"data required");
22113 if (key === undefined) throw new SyntaxError(
"key required");
22114 return cbc_aes_instance.reset({
22118 }).encrypt(data).result;
22120 function cbc_aes_decrypt_bytes(data, key, padding, iv) {
22121 if (data === undefined) throw new SyntaxError(
"data required");
22122 if (key === undefined) throw new SyntaxError(
"key required");
22123 return cbc_aes_instance.reset({
22127 }).decrypt(data).result;
22129 exports.AES = exports.AES_CBC = {
22130 encrypt: cbc_aes_encrypt_bytes,
22131 decrypt: cbc_aes_decrypt_bytes
22133 var ccm_aes_instance = new ccm_aes_constructor({
22134 heap: cbc_aes_instance.heap,
22135 asm: cbc_aes_instance.asm
22137 function ccm_aes_encrypt_bytes(data, key, nonce, adata, tagSize) {
22138 if (data === undefined) throw new SyntaxError(
"data required");
22139 if (key === undefined) throw new SyntaxError(
"key required");
22140 if (nonce === undefined) throw new SyntaxError(
"nonce required");
22141 var dataLength = data.byteLength || data.length ||
0;
22142 return ccm_aes_instance.reset({
22147 dataLength: dataLength
22148 }).encrypt(data).result;
22150 function ccm_aes_decrypt_bytes(data, key, nonce, adata, tagSize) {
22151 if (data === undefined) throw new SyntaxError(
"data required");
22152 if (key === undefined) throw new SyntaxError(
"key required");
22153 if (nonce === undefined) throw new SyntaxError(
"nonce required");
22154 var dataLength = data.byteLength || data.length ||
0;
22155 tagSize = tagSize || _aes_block_size;
22156 return ccm_aes_instance.reset({
22161 dataLength: dataLength - tagSize
22162 }).decrypt(data).result;
22164 exports.AES_CCM = {
22165 encrypt: ccm_aes_encrypt_bytes,
22166 decrypt: ccm_aes_decrypt_bytes
22168 var cfb_aes_instance = new cfb_aes_constructor({
22169 heap: cbc_aes_instance.heap,
22170 asm: cbc_aes_instance.asm
22172 function cfb_aes_encrypt_bytes(data, key, padding, iv) {
22173 if (data === undefined) throw new SyntaxError(
"data required");
22174 if (key === undefined) throw new SyntaxError(
"key required");
22175 return cfb_aes_instance.reset({
22179 }).encrypt(data).result;
22181 function cfb_aes_decrypt_bytes(data, key, padding, iv) {
22182 if (data === undefined) throw new SyntaxError(
"data required");
22183 if (key === undefined) throw new SyntaxError(
"key required");
22184 return cfb_aes_instance.reset({
22188 }).decrypt(data).result;
22190 exports.AES_CFB = {
22191 encrypt: cfb_aes_encrypt_bytes,
22192 decrypt: cfb_aes_decrypt_bytes
22194 var cfb_aes_decrypt_instance = new cfb_aes_decrypt_constructor({
22195 heap: cbc_aes_instance.heap,
22196 asm: cbc_aes_instance.asm
22198 function cfb_aes_decrypt_init(key, padding, iv) {
22199 if (key === undefined) throw new SyntaxError(
"key required");
22200 return cfb_aes_decrypt_instance.reset({
22206 exports.AES_CFB = exports.AES_CFB || {};
22207 exports.AES_CFB.decryptor = {
22208 init: cfb_aes_decrypt_init
22210 })({}, function() {
22215 <!--<script src="/js/jsbip39.js"></script>-->
22218 * Copyright (c)
2013 Pavol Rusnak
22220 * Permission is hereby granted, free of charge, to any person obtaining a copy of
22221 * this software and associated documentation files (the "Software"), to deal in
22222 * the Software without restriction, including without limitation the rights to
22223 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
22224 * of the Software, and to permit persons to whom the Software is furnished to do
22225 * so, subject to the following conditions:
22227 * The above copyright notice and this permission notice shall be included in all
22228 * copies or substantial portions of the Software.
22230 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22231 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22232 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22233 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
22234 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22235 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22239 * Javascript port from python by Ian Coleman
22241 * Includes code from asmCrypto
22242 * https://github.com/tresorit/asmcrypto.js
22245 var Mnemonic = function(language) {
22247 var PBKDF2_ROUNDS =
2048;
22254 wordlist = WORDLISTS[language];
22255 if (wordlist.length != RADIX) {
22256 err = 'Wordlist should contain ' + RADIX + ' words, but it contains ' + wordlist.length + ' words.';
22261 self.generate = function(strength) {
22262 strength = strength ||
128;
22263 var r = strength %
32;
22265 throw 'Strength should be divisible by
32, but it is not (' + r + ').';
22267 var hasStrongCrypto = 'crypto' in window && window['crypto'] !== null;
22268 if (!hasStrongCrypto) {
22269 throw 'Mnemonic should be generated with strong randomness, but crypto.getRandomValues is unavailable';
22271 var buffer = new Uint8Array(strength /
8);
22272 var data = crypto.getRandomValues(buffer);
22273 return self.toMnemonic(data);
22276 self.toMnemonic = function(data) {
22277 if (data.length %
4 > 0) {
22278 throw 'Data length in bits should be divisible by
32, but it is not (' + data.length + ' bytes = ' + data.length*
8 + ' bits).'
22281 //h = hashlib.sha256(data).hexdigest()
22282 var uintArray = new Uint8Array(data);
22283 var h = asmCrypto.SHA256.bytes(uintArray);
22285 // b is a binary string, eg '
00111010101100...'
22286 //b = bin(int(binascii.hexlify(data),
16))[
2:].zfill(len(data) *
8) + \
22287 // bin(int(h,
16))[
2:].zfill(
256)[:len(data) *
8 /
32]
22289 // a = bin(int(binascii.hexlify(data),
16))[
2:].zfill(len(data) *
8)
22290 // c = bin(int(h,
16))[
2:].zfill(
256)
22291 // d = c[:len(data) *
8 /
32]
22292 var a = byteArrayToBinaryString(data);
22293 var c = byteArrayToBinaryString(h);
22294 var d = c.substring(
0, data.length *
8 /
32);
22295 // b = line1 + line2
22299 var blen = b.length /
11;
22300 for (var i=
0; i
<blen; i++) {
22301 var idx = parseInt(b.substring(i *
11, (i +
1) *
11),
2);
22302 result.push(wordlist[idx]);
22304 return result.join(' ');
22307 self.check = function(mnemonic) {
22308 var mnemonic = mnemonic.split(' ')
22309 if (mnemonic.length %
3 > 0) {
22312 // idx = map(lambda x: bin(self.wordlist.index(x))[
2:].zfill(
11), mnemonic)
22314 for (var i=
0; i
<mnemonic.length; i++) {
22315 var word = mnemonic[i];
22316 var wordIndex = wordlist.indexOf(word);
22317 if (wordIndex == -
1) {
22320 var binaryIndex = zfill(wordIndex.toString(
2),
11);
22321 idx.push(binaryIndex);
22323 var b = idx.join('');
22325 //d = b[:l /
33 *
32]
22327 var d = b.substring(
0, l /
33 *
32);
22328 var h = b.substring(l - l /
33, l);
22329 //nd = binascii.unhexlify(hex(int(d,
2))[
2:].rstrip('L').zfill(l /
33 *
8))
22330 //nh = bin(int(hashlib.sha256(nd).hexdigest(),
16))[
2:].zfill(
256)[:l /
33]
22331 var nd = binaryStringToByteArray(d);
22332 var ndHash = asmCrypto.SHA256.bytes(nd);
22333 var ndBstr = zfill(byteArrayToBinaryString(ndHash),
256);
22334 var nh = ndBstr.substring(
0,l/
33);
22338 self.toSeed = function(mnemonic, passphrase) {
22339 passphrase = passphrase || '';
22340 mnemonic = normalizeString(mnemonic)
22341 passphrase = normalizeString(passphrase)
22342 passphrase =
"mnemonic" + passphrase;
22343 //return PBKDF2(mnemonic, 'mnemonic' + passphrase, iterations=PBKDF2_ROUNDS, macmodule=hmac, digestmodule=hashlib.sha512).read(
64)
22344 return asmCrypto.PBKDF2_HMAC_SHA512.hex(mnemonic, passphrase, PBKDF2_ROUNDS,
512/
8);
22347 function normalizeString(str) {
22348 if (typeof str.normalize ==
"function") {
22349 return str.normalize(
"NFKD");
22352 // TODO find a library to do this
22353 // Not supported on firefox mobile
22354 console.warn(
"NFKD Normalization is unavailable");
22359 function byteArrayToBinaryString(data) {
22361 for (var i=
0; i
<data.length; i++) {
22362 bin += zfill(data[i].toString(
2),
8);
22367 function binaryStringToByteArray(str) {
22368 var arrayLen = str.length /
8;
22369 var array = new Uint8Array(arrayLen);
22370 for (var i=
0; i
<arrayLen; i++) {
22371 var valueStr = str.substring(
0,
8);
22372 var value = parseInt(valueStr,
2);
22374 str = str.slice(
8);
22379 // Pad a numeric string on the left with zero digits until the given width
22381 // Note this differs to the python implementation because it does not
22382 // handle numbers starting with a sign.
22383 function zfill(source, length) {
22384 source = source.toString();
22385 while (source.length < length) {
22386 source = '
0' + source;
22397 "abandon",
"ability",
"able",
"about",
"above",
"absent",
"absorb",
"abstract",
"absurd",
"abuse",
22398 "access",
"accident",
"account",
"accuse",
"achieve",
"acid",
"acoustic",
"acquire",
"across",
"act",
22399 "action",
"actor",
"actress",
"actual",
"adapt",
"add",
"addict",
"address",
"adjust",
"admit",
22400 "adult",
"advance",
"advice",
"aerobic",
"affair",
"afford",
"afraid",
"again",
"age",
"agent",
22401 "agree",
"ahead",
"aim",
"air",
"airport",
"aisle",
"alarm",
"album",
"alcohol",
"alert",
22402 "alien",
"all",
"alley",
"allow",
"almost",
"alone",
"alpha",
"already",
"also",
"alter",
22403 "always",
"amateur",
"amazing",
"among",
"amount",
"amused",
"analyst",
"anchor",
"ancient",
"anger",
22404 "angle",
"angry",
"animal",
"ankle",
"announce",
"annual",
"another",
"answer",
"antenna",
"antique",
22405 "anxiety",
"any",
"apart",
"apology",
"appear",
"apple",
"approve",
"april",
"arch",
"arctic",
22406 "area",
"arena",
"argue",
"arm",
"armed",
"armor",
"army",
"around",
"arrange",
"arrest",
22407 "arrive",
"arrow",
"art",
"artefact",
"artist",
"artwork",
"ask",
"aspect",
"assault",
"asset",
22408 "assist",
"assume",
"asthma",
"athlete",
"atom",
"attack",
"attend",
"attitude",
"attract",
"auction",
22409 "audit",
"august",
"aunt",
"author",
"auto",
"autumn",
"average",
"avocado",
"avoid",
"awake",
22410 "aware",
"away",
"awesome",
"awful",
"awkward",
"axis",
"baby",
"bachelor",
"bacon",
"badge",
22411 "bag",
"balance",
"balcony",
"ball",
"bamboo",
"banana",
"banner",
"bar",
"barely",
"bargain",
22412 "barrel",
"base",
"basic",
"basket",
"battle",
"beach",
"bean",
"beauty",
"because",
"become",
22413 "beef",
"before",
"begin",
"behave",
"behind",
"believe",
"below",
"belt",
"bench",
"benefit",
22414 "best",
"betray",
"better",
"between",
"beyond",
"bicycle",
"bid",
"bike",
"bind",
"biology",
22415 "bird",
"birth",
"bitter",
"black",
"blade",
"blame",
"blanket",
"blast",
"bleak",
"bless",
22416 "blind",
"blood",
"blossom",
"blouse",
"blue",
"blur",
"blush",
"board",
"boat",
"body",
22417 "boil",
"bomb",
"bone",
"bonus",
"book",
"boost",
"border",
"boring",
"borrow",
"boss",
22418 "bottom",
"bounce",
"box",
"boy",
"bracket",
"brain",
"brand",
"brass",
"brave",
"bread",
22419 "breeze",
"brick",
"bridge",
"brief",
"bright",
"bring",
"brisk",
"broccoli",
"broken",
"bronze",
22420 "broom",
"brother",
"brown",
"brush",
"bubble",
"buddy",
"budget",
"buffalo",
"build",
"bulb",
22421 "bulk",
"bullet",
"bundle",
"bunker",
"burden",
"burger",
"burst",
"bus",
"business",
"busy",
22422 "butter",
"buyer",
"buzz",
"cabbage",
"cabin",
"cable",
"cactus",
"cage",
"cake",
"call",
22423 "calm",
"camera",
"camp",
"can",
"canal",
"cancel",
"candy",
"cannon",
"canoe",
"canvas",
22424 "canyon",
"capable",
"capital",
"captain",
"car",
"carbon",
"card",
"cargo",
"carpet",
"carry",
22425 "cart",
"case",
"cash",
"casino",
"castle",
"casual",
"cat",
"catalog",
"catch",
"category",
22426 "cattle",
"caught",
"cause",
"caution",
"cave",
"ceiling",
"celery",
"cement",
"census",
"century",
22427 "cereal",
"certain",
"chair",
"chalk",
"champion",
"change",
"chaos",
"chapter",
"charge",
"chase",
22428 "chat",
"cheap",
"check",
"cheese",
"chef",
"cherry",
"chest",
"chicken",
"chief",
"child",
22429 "chimney",
"choice",
"choose",
"chronic",
"chuckle",
"chunk",
"churn",
"cigar",
"cinnamon",
"circle",
22430 "citizen",
"city",
"civil",
"claim",
"clap",
"clarify",
"claw",
"clay",
"clean",
"clerk",
22431 "clever",
"click",
"client",
"cliff",
"climb",
"clinic",
"clip",
"clock",
"clog",
"close",
22432 "cloth",
"cloud",
"clown",
"club",
"clump",
"cluster",
"clutch",
"coach",
"coast",
"coconut",
22433 "code",
"coffee",
"coil",
"coin",
"collect",
"color",
"column",
"combine",
"come",
"comfort",
22434 "comic",
"common",
"company",
"concert",
"conduct",
"confirm",
"congress",
"connect",
"consider",
"control",
22435 "convince",
"cook",
"cool",
"copper",
"copy",
"coral",
"core",
"corn",
"correct",
"cost",
22436 "cotton",
"couch",
"country",
"couple",
"course",
"cousin",
"cover",
"coyote",
"crack",
"cradle",
22437 "craft",
"cram",
"crane",
"crash",
"crater",
"crawl",
"crazy",
"cream",
"credit",
"creek",
22438 "crew",
"cricket",
"crime",
"crisp",
"critic",
"crop",
"cross",
"crouch",
"crowd",
"crucial",
22439 "cruel",
"cruise",
"crumble",
"crunch",
"crush",
"cry",
"crystal",
"cube",
"culture",
"cup",
22440 "cupboard",
"curious",
"current",
"curtain",
"curve",
"cushion",
"custom",
"cute",
"cycle",
"dad",
22441 "damage",
"damp",
"dance",
"danger",
"daring",
"dash",
"daughter",
"dawn",
"day",
"deal",
22442 "debate",
"debris",
"decade",
"december",
"decide",
"decline",
"decorate",
"decrease",
"deer",
"defense",
22443 "define",
"defy",
"degree",
"delay",
"deliver",
"demand",
"demise",
"denial",
"dentist",
"deny",
22444 "depart",
"depend",
"deposit",
"depth",
"deputy",
"derive",
"describe",
"desert",
"design",
"desk",
22445 "despair",
"destroy",
"detail",
"detect",
"develop",
"device",
"devote",
"diagram",
"dial",
"diamond",
22446 "diary",
"dice",
"diesel",
"diet",
"differ",
"digital",
"dignity",
"dilemma",
"dinner",
"dinosaur",
22447 "direct",
"dirt",
"disagree",
"discover",
"disease",
"dish",
"dismiss",
"disorder",
"display",
"distance",
22448 "divert",
"divide",
"divorce",
"dizzy",
"doctor",
"document",
"dog",
"doll",
"dolphin",
"domain",
22449 "donate",
"donkey",
"donor",
"door",
"dose",
"double",
"dove",
"draft",
"dragon",
"drama",
22450 "drastic",
"draw",
"dream",
"dress",
"drift",
"drill",
"drink",
"drip",
"drive",
"drop",
22451 "drum",
"dry",
"duck",
"dumb",
"dune",
"during",
"dust",
"dutch",
"duty",
"dwarf",
22452 "dynamic",
"eager",
"eagle",
"early",
"earn",
"earth",
"easily",
"east",
"easy",
"echo",
22453 "ecology",
"economy",
"edge",
"edit",
"educate",
"effort",
"egg",
"eight",
"either",
"elbow",
22454 "elder",
"electric",
"elegant",
"element",
"elephant",
"elevator",
"elite",
"else",
"embark",
"embody",
22455 "embrace",
"emerge",
"emotion",
"employ",
"empower",
"empty",
"enable",
"enact",
"end",
"endless",
22456 "endorse",
"enemy",
"energy",
"enforce",
"engage",
"engine",
"enhance",
"enjoy",
"enlist",
"enough",
22457 "enrich",
"enroll",
"ensure",
"enter",
"entire",
"entry",
"envelope",
"episode",
"equal",
"equip",
22458 "era",
"erase",
"erode",
"erosion",
"error",
"erupt",
"escape",
"essay",
"essence",
"estate",
22459 "eternal",
"ethics",
"evidence",
"evil",
"evoke",
"evolve",
"exact",
"example",
"excess",
"exchange",
22460 "excite",
"exclude",
"excuse",
"execute",
"exercise",
"exhaust",
"exhibit",
"exile",
"exist",
"exit",
22461 "exotic",
"expand",
"expect",
"expire",
"explain",
"expose",
"express",
"extend",
"extra",
"eye",
22462 "eyebrow",
"fabric",
"face",
"faculty",
"fade",
"faint",
"faith",
"fall",
"false",
"fame",
22463 "family",
"famous",
"fan",
"fancy",
"fantasy",
"farm",
"fashion",
"fat",
"fatal",
"father",
22464 "fatigue",
"fault",
"favorite",
"feature",
"february",
"federal",
"fee",
"feed",
"feel",
"female",
22465 "fence",
"festival",
"fetch",
"fever",
"few",
"fiber",
"fiction",
"field",
"figure",
"file",
22466 "film",
"filter",
"final",
"find",
"fine",
"finger",
"finish",
"fire",
"firm",
"first",
22467 "fiscal",
"fish",
"fit",
"fitness",
"fix",
"flag",
"flame",
"flash",
"flat",
"flavor",
22468 "flee",
"flight",
"flip",
"float",
"flock",
"floor",
"flower",
"fluid",
"flush",
"fly",
22469 "foam",
"focus",
"fog",
"foil",
"fold",
"follow",
"food",
"foot",
"force",
"forest",
22470 "forget",
"fork",
"fortune",
"forum",
"forward",
"fossil",
"foster",
"found",
"fox",
"fragile",
22471 "frame",
"frequent",
"fresh",
"friend",
"fringe",
"frog",
"front",
"frost",
"frown",
"frozen",
22472 "fruit",
"fuel",
"fun",
"funny",
"furnace",
"fury",
"future",
"gadget",
"gain",
"galaxy",
22473 "gallery",
"game",
"gap",
"garage",
"garbage",
"garden",
"garlic",
"garment",
"gas",
"gasp",
22474 "gate",
"gather",
"gauge",
"gaze",
"general",
"genius",
"genre",
"gentle",
"genuine",
"gesture",
22475 "ghost",
"giant",
"gift",
"giggle",
"ginger",
"giraffe",
"girl",
"give",
"glad",
"glance",
22476 "glare",
"glass",
"glide",
"glimpse",
"globe",
"gloom",
"glory",
"glove",
"glow",
"glue",
22477 "goat",
"goddess",
"gold",
"good",
"goose",
"gorilla",
"gospel",
"gossip",
"govern",
"gown",
22478 "grab",
"grace",
"grain",
"grant",
"grape",
"grass",
"gravity",
"great",
"green",
"grid",
22479 "grief",
"grit",
"grocery",
"group",
"grow",
"grunt",
"guard",
"guess",
"guide",
"guilt",
22480 "guitar",
"gun",
"gym",
"habit",
"hair",
"half",
"hammer",
"hamster",
"hand",
"happy",
22481 "harbor",
"hard",
"harsh",
"harvest",
"hat",
"have",
"hawk",
"hazard",
"head",
"health",
22482 "heart",
"heavy",
"hedgehog",
"height",
"hello",
"helmet",
"help",
"hen",
"hero",
"hidden",
22483 "high",
"hill",
"hint",
"hip",
"hire",
"history",
"hobby",
"hockey",
"hold",
"hole",
22484 "holiday",
"hollow",
"home",
"honey",
"hood",
"hope",
"horn",
"horror",
"horse",
"hospital",
22485 "host",
"hotel",
"hour",
"hover",
"hub",
"huge",
"human",
"humble",
"humor",
"hundred",
22486 "hungry",
"hunt",
"hurdle",
"hurry",
"hurt",
"husband",
"hybrid",
"ice",
"icon",
"idea",
22487 "identify",
"idle",
"ignore",
"ill",
"illegal",
"illness",
"image",
"imitate",
"immense",
"immune",
22488 "impact",
"impose",
"improve",
"impulse",
"inch",
"include",
"income",
"increase",
"index",
"indicate",
22489 "indoor",
"industry",
"infant",
"inflict",
"inform",
"inhale",
"inherit",
"initial",
"inject",
"injury",
22490 "inmate",
"inner",
"innocent",
"input",
"inquiry",
"insane",
"insect",
"inside",
"inspire",
"install",
22491 "intact",
"interest",
"into",
"invest",
"invite",
"involve",
"iron",
"island",
"isolate",
"issue",
22492 "item",
"ivory",
"jacket",
"jaguar",
"jar",
"jazz",
"jealous",
"jeans",
"jelly",
"jewel",
22493 "job",
"join",
"joke",
"journey",
"joy",
"judge",
"juice",
"jump",
"jungle",
"junior",
22494 "junk",
"just",
"kangaroo",
"keen",
"keep",
"ketchup",
"key",
"kick",
"kid",
"kidney",
22495 "kind",
"kingdom",
"kiss",
"kit",
"kitchen",
"kite",
"kitten",
"kiwi",
"knee",
"knife",
22496 "knock",
"know",
"lab",
"label",
"labor",
"ladder",
"lady",
"lake",
"lamp",
"language",
22497 "laptop",
"large",
"later",
"latin",
"laugh",
"laundry",
"lava",
"law",
"lawn",
"lawsuit",
22498 "layer",
"lazy",
"leader",
"leaf",
"learn",
"leave",
"lecture",
"left",
"leg",
"legal",
22499 "legend",
"leisure",
"lemon",
"lend",
"length",
"lens",
"leopard",
"lesson",
"letter",
"level",
22500 "liar",
"liberty",
"library",
"license",
"life",
"lift",
"light",
"like",
"limb",
"limit",
22501 "link",
"lion",
"liquid",
"list",
"little",
"live",
"lizard",
"load",
"loan",
"lobster",
22502 "local",
"lock",
"logic",
"lonely",
"long",
"loop",
"lottery",
"loud",
"lounge",
"love",
22503 "loyal",
"lucky",
"luggage",
"lumber",
"lunar",
"lunch",
"luxury",
"lyrics",
"machine",
"mad",
22504 "magic",
"magnet",
"maid",
"mail",
"main",
"major",
"make",
"mammal",
"man",
"manage",
22505 "mandate",
"mango",
"mansion",
"manual",
"maple",
"marble",
"march",
"margin",
"marine",
"market",
22506 "marriage",
"mask",
"mass",
"master",
"match",
"material",
"math",
"matrix",
"matter",
"maximum",
22507 "maze",
"meadow",
"mean",
"measure",
"meat",
"mechanic",
"medal",
"media",
"melody",
"melt",
22508 "member",
"memory",
"mention",
"menu",
"mercy",
"merge",
"merit",
"merry",
"mesh",
"message",
22509 "metal",
"method",
"middle",
"midnight",
"milk",
"million",
"mimic",
"mind",
"minimum",
"minor",
22510 "minute",
"miracle",
"mirror",
"misery",
"miss",
"mistake",
"mix",
"mixed",
"mixture",
"mobile",
22511 "model",
"modify",
"mom",
"moment",
"monitor",
"monkey",
"monster",
"month",
"moon",
"moral",
22512 "more",
"morning",
"mosquito",
"mother",
"motion",
"motor",
"mountain",
"mouse",
"move",
"movie",
22513 "much",
"muffin",
"mule",
"multiply",
"muscle",
"museum",
"mushroom",
"music",
"must",
"mutual",
22514 "myself",
"mystery",
"myth",
"naive",
"name",
"napkin",
"narrow",
"nasty",
"nation",
"nature",
22515 "near",
"neck",
"need",
"negative",
"neglect",
"neither",
"nephew",
"nerve",
"nest",
"net",
22516 "network",
"neutral",
"never",
"news",
"next",
"nice",
"night",
"noble",
"noise",
"nominee",
22517 "noodle",
"normal",
"north",
"nose",
"notable",
"note",
"nothing",
"notice",
"novel",
"now",
22518 "nuclear",
"number",
"nurse",
"nut",
"oak",
"obey",
"object",
"oblige",
"obscure",
"observe",
22519 "obtain",
"obvious",
"occur",
"ocean",
"october",
"odor",
"off",
"offer",
"office",
"often",
22520 "oil",
"okay",
"old",
"olive",
"olympic",
"omit",
"once",
"one",
"onion",
"online",
22521 "only",
"open",
"opera",
"opinion",
"oppose",
"option",
"orange",
"orbit",
"orchard",
"order",
22522 "ordinary",
"organ",
"orient",
"original",
"orphan",
"ostrich",
"other",
"outdoor",
"outer",
"output",
22523 "outside",
"oval",
"oven",
"over",
"own",
"owner",
"oxygen",
"oyster",
"ozone",
"pact",
22524 "paddle",
"page",
"pair",
"palace",
"palm",
"panda",
"panel",
"panic",
"panther",
"paper",
22525 "parade",
"parent",
"park",
"parrot",
"party",
"pass",
"patch",
"path",
"patient",
"patrol",
22526 "pattern",
"pause",
"pave",
"payment",
"peace",
"peanut",
"pear",
"peasant",
"pelican",
"pen",
22527 "penalty",
"pencil",
"people",
"pepper",
"perfect",
"permit",
"person",
"pet",
"phone",
"photo",
22528 "phrase",
"physical",
"piano",
"picnic",
"picture",
"piece",
"pig",
"pigeon",
"pill",
"pilot",
22529 "pink",
"pioneer",
"pipe",
"pistol",
"pitch",
"pizza",
"place",
"planet",
"plastic",
"plate",
22530 "play",
"please",
"pledge",
"pluck",
"plug",
"plunge",
"poem",
"poet",
"point",
"polar",
22531 "pole",
"police",
"pond",
"pony",
"pool",
"popular",
"portion",
"position",
"possible",
"post",
22532 "potato",
"pottery",
"poverty",
"powder",
"power",
"practice",
"praise",
"predict",
"prefer",
"prepare",
22533 "present",
"pretty",
"prevent",
"price",
"pride",
"primary",
"print",
"priority",
"prison",
"private",
22534 "prize",
"problem",
"process",
"produce",
"profit",
"program",
"project",
"promote",
"proof",
"property",
22535 "prosper",
"protect",
"proud",
"provide",
"public",
"pudding",
"pull",
"pulp",
"pulse",
"pumpkin",
22536 "punch",
"pupil",
"puppy",
"purchase",
"purity",
"purpose",
"purse",
"push",
"put",
"puzzle",
22537 "pyramid",
"quality",
"quantum",
"quarter",
"question",
"quick",
"quit",
"quiz",
"quote",
"rabbit",
22538 "raccoon",
"race",
"rack",
"radar",
"radio",
"rail",
"rain",
"raise",
"rally",
"ramp",
22539 "ranch",
"random",
"range",
"rapid",
"rare",
"rate",
"rather",
"raven",
"raw",
"razor",
22540 "ready",
"real",
"reason",
"rebel",
"rebuild",
"recall",
"receive",
"recipe",
"record",
"recycle",
22541 "reduce",
"reflect",
"reform",
"refuse",
"region",
"regret",
"regular",
"reject",
"relax",
"release",
22542 "relief",
"rely",
"remain",
"remember",
"remind",
"remove",
"render",
"renew",
"rent",
"reopen",
22543 "repair",
"repeat",
"replace",
"report",
"require",
"rescue",
"resemble",
"resist",
"resource",
"response",
22544 "result",
"retire",
"retreat",
"return",
"reunion",
"reveal",
"review",
"reward",
"rhythm",
"rib",
22545 "ribbon",
"rice",
"rich",
"ride",
"ridge",
"rifle",
"right",
"rigid",
"ring",
"riot",
22546 "ripple",
"risk",
"ritual",
"rival",
"river",
"road",
"roast",
"robot",
"robust",
"rocket",
22547 "romance",
"roof",
"rookie",
"room",
"rose",
"rotate",
"rough",
"round",
"route",
"royal",
22548 "rubber",
"rude",
"rug",
"rule",
"run",
"runway",
"rural",
"sad",
"saddle",
"sadness",
22549 "safe",
"sail",
"salad",
"salmon",
"salon",
"salt",
"salute",
"same",
"sample",
"sand",
22550 "satisfy",
"satoshi",
"sauce",
"sausage",
"save",
"say",
"scale",
"scan",
"scare",
"scatter",
22551 "scene",
"scheme",
"school",
"science",
"scissors",
"scorpion",
"scout",
"scrap",
"screen",
"script",
22552 "scrub",
"sea",
"search",
"season",
"seat",
"second",
"secret",
"section",
"security",
"seed",
22553 "seek",
"segment",
"select",
"sell",
"seminar",
"senior",
"sense",
"sentence",
"series",
"service",
22554 "session",
"settle",
"setup",
"seven",
"shadow",
"shaft",
"shallow",
"share",
"shed",
"shell",
22555 "sheriff",
"shield",
"shift",
"shine",
"ship",
"shiver",
"shock",
"shoe",
"shoot",
"shop",
22556 "short",
"shoulder",
"shove",
"shrimp",
"shrug",
"shuffle",
"shy",
"sibling",
"sick",
"side",
22557 "siege",
"sight",
"sign",
"silent",
"silk",
"silly",
"silver",
"similar",
"simple",
"since",
22558 "sing",
"siren",
"sister",
"situate",
"six",
"size",
"skate",
"sketch",
"ski",
"skill",
22559 "skin",
"skirt",
"skull",
"slab",
"slam",
"sleep",
"slender",
"slice",
"slide",
"slight",
22560 "slim",
"slogan",
"slot",
"slow",
"slush",
"small",
"smart",
"smile",
"smoke",
"smooth",
22561 "snack",
"snake",
"snap",
"sniff",
"snow",
"soap",
"soccer",
"social",
"sock",
"soda",
22562 "soft",
"solar",
"soldier",
"solid",
"solution",
"solve",
"someone",
"song",
"soon",
"sorry",
22563 "sort",
"soul",
"sound",
"soup",
"source",
"south",
"space",
"spare",
"spatial",
"spawn",
22564 "speak",
"special",
"speed",
"spell",
"spend",
"sphere",
"spice",
"spider",
"spike",
"spin",
22565 "spirit",
"split",
"spoil",
"sponsor",
"spoon",
"sport",
"spot",
"spray",
"spread",
"spring",
22566 "spy",
"square",
"squeeze",
"squirrel",
"stable",
"stadium",
"staff",
"stage",
"stairs",
"stamp",
22567 "stand",
"start",
"state",
"stay",
"steak",
"steel",
"stem",
"step",
"stereo",
"stick",
22568 "still",
"sting",
"stock",
"stomach",
"stone",
"stool",
"story",
"stove",
"strategy",
"street",
22569 "strike",
"strong",
"struggle",
"student",
"stuff",
"stumble",
"style",
"subject",
"submit",
"subway",
22570 "success",
"such",
"sudden",
"suffer",
"sugar",
"suggest",
"suit",
"summer",
"sun",
"sunny",
22571 "sunset",
"super",
"supply",
"supreme",
"sure",
"surface",
"surge",
"surprise",
"surround",
"survey",
22572 "suspect",
"sustain",
"swallow",
"swamp",
"swap",
"swarm",
"swear",
"sweet",
"swift",
"swim",
22573 "swing",
"switch",
"sword",
"symbol",
"symptom",
"syrup",
"system",
"table",
"tackle",
"tag",
22574 "tail",
"talent",
"talk",
"tank",
"tape",
"target",
"task",
"taste",
"tattoo",
"taxi",
22575 "teach",
"team",
"tell",
"ten",
"tenant",
"tennis",
"tent",
"term",
"test",
"text",
22576 "thank",
"that",
"theme",
"then",
"theory",
"there",
"they",
"thing",
"this",
"thought",
22577 "three",
"thrive",
"throw",
"thumb",
"thunder",
"ticket",
"tide",
"tiger",
"tilt",
"timber",
22578 "time",
"tiny",
"tip",
"tired",
"tissue",
"title",
"toast",
"tobacco",
"today",
"toddler",
22579 "toe",
"together",
"toilet",
"token",
"tomato",
"tomorrow",
"tone",
"tongue",
"tonight",
"tool",
22580 "tooth",
"top",
"topic",
"topple",
"torch",
"tornado",
"tortoise",
"toss",
"total",
"tourist",
22581 "toward",
"tower",
"town",
"toy",
"track",
"trade",
"traffic",
"tragic",
"train",
"transfer",
22582 "trap",
"trash",
"travel",
"tray",
"treat",
"tree",
"trend",
"trial",
"tribe",
"trick",
22583 "trigger",
"trim",
"trip",
"trophy",
"trouble",
"truck",
"true",
"truly",
"trumpet",
"trust",
22584 "truth",
"try",
"tube",
"tuition",
"tumble",
"tuna",
"tunnel",
"turkey",
"turn",
"turtle",
22585 "twelve",
"twenty",
"twice",
"twin",
"twist",
"two",
"type",
"typical",
"ugly",
"umbrella",
22586 "unable",
"unaware",
"uncle",
"uncover",
"under",
"undo",
"unfair",
"unfold",
"unhappy",
"uniform",
22587 "unique",
"unit",
"universe",
"unknown",
"unlock",
"until",
"unusual",
"unveil",
"update",
"upgrade",
22588 "uphold",
"upon",
"upper",
"upset",
"urban",
"urge",
"usage",
"use",
"used",
"useful",
22589 "useless",
"usual",
"utility",
"vacant",
"vacuum",
"vague",
"valid",
"valley",
"valve",
"van",
22590 "vanish",
"vapor",
"various",
"vast",
"vault",
"vehicle",
"velvet",
"vendor",
"venture",
"venue",
22591 "verb",
"verify",
"version",
"very",
"vessel",
"veteran",
"viable",
"vibrant",
"vicious",
"victory",
22592 "video",
"view",
"village",
"vintage",
"violin",
"virtual",
"virus",
"visa",
"visit",
"visual",
22593 "vital",
"vivid",
"vocal",
"voice",
"void",
"volcano",
"volume",
"vote",
"voyage",
"wage",
22594 "wagon",
"wait",
"walk",
"wall",
"walnut",
"want",
"warfare",
"warm",
"warrior",
"wash",
22595 "wasp",
"waste",
"water",
"wave",
"way",
"wealth",
"weapon",
"wear",
"weasel",
"weather",
22596 "web",
"wedding",
"weekend",
"weird",
"welcome",
"west",
"wet",
"whale",
"what",
"wheat",
22597 "wheel",
"when",
"where",
"whip",
"whisper",
"wide",
"width",
"wife",
"wild",
"will",
22598 "win",
"window",
"wine",
"wing",
"wink",
"winner",
"winter",
"wire",
"wisdom",
"wise",
22599 "wish",
"witness",
"wolf",
"woman",
"wonder",
"wood",
"wool",
"word",
"work",
"world",
22600 "worry",
"worth",
"wrap",
"wreck",
"wrestle",
"wrist",
"write",
"wrong",
"yard",
"year",
22601 "yellow",
"you",
"young",
"youth",
"zebra",
"zero",
"zone",
"zoo"]
22605 <!--<script src="/js/index.js"></script>-->
22609 var mnemonic = new Mnemonic("english");
22610 var bip32RootKey = null;
22611 var bip32ExtendedKey = null;
22612 var network = Bitcoin.networks.bitcoin;
22613 var addressRowTemplate = $("#address-row-template");
22615 var phraseChangeTimeoutEvent = null;
22618 DOM.phrase = $(".phrase");
22619 DOM.generate = $(".generate");
22620 DOM.rootKey = $(".root-key");
22621 DOM.extendedPrivKey = $(".extended-priv-key");
22622 DOM.extendedPubKey = $(".extended-pub-key");
22623 DOM.bip32path = $("#bip32-path");
22624 DOM.bip44path = $("#bip44-path");
22625 DOM.bip44purpose = $("#bip44 .purpose");
22626 DOM.bip44coin = $("#bip44 .coin");
22627 DOM.bip44account = $("#bip44 .account");
22628 DOM.bip44change = $("#bip44 .change");
22629 DOM.strength = $(".strength");
22630 DOM.addresses = $(".addresses");
22631 DOM.rowsToAdd = $(".rows-to-add");
22632 DOM.more = $(".more");
22633 DOM.feedback = $(".feedback");
22634 DOM.tab = $(".derivation-type a");
22635 DOM.indexToggle = $(".index-toggle");
22636 DOM.addressToggle = $(".address-toggle");
22637 DOM.privateKeyToggle = $(".private-key-toggle");
22639 var derivationPath = DOM.bip44path.val();
22643 DOM.phrase.on("keyup", delayedPhraseChanged);
22644 DOM.generate.on("click", generateClicked);
22645 DOM.more.on("click", showMore);
22646 DOM.bip32path.on("keyup", bip32Changed);
22647 DOM.bip44purpose.on("keyup", bip44Changed);
22648 DOM.bip44coin.on("keyup", bip44Changed);
22649 DOM.bip44account.on("keyup", bip44Changed);
22650 DOM.bip44change.on("keyup", bip44Changed);
22651 DOM.tab.on("click", tabClicked);
22652 DOM.indexToggle.on("click", toggleIndexes);
22653 DOM.addressToggle.on("click", toggleAddresses);
22654 DOM.privateKeyToggle.on("click", togglePrivateKeys);
22657 hideValidationError();
22662 function delayedPhraseChanged() {
22663 hideValidationError();
22665 if (phraseChangeTimeoutEvent != null) {
22666 clearTimeout(phraseChangeTimeoutEvent);
22668 phraseChangeTimeoutEvent = setTimeout(phraseChanged,
400);
22671 function phraseChanged() {
22673 hideValidationError();
22674 // Get the mnemonic phrase
22675 var phrase = DOM.phrase.val();
22676 var errorText = findPhraseErrors(phrase);
22678 showValidationError(errorText);
22681 // Get the derivation path
22682 var errorText = findDerivationPathErrors();
22684 showValidationError(errorText);
22687 // Calculate and display
22688 calcBip32Seed(phrase, derivationPath);
22689 displayBip32Info();
22693 function generateClicked() {
22696 setTimeout(function() {
22697 var phrase = generateRandomPhrase();
22705 function tabClicked(e) {
22706 var activePath = $(e.target.getAttribute("href") + " .path");
22707 derivationPath = activePath.val();
22708 derivationChanged();
22711 function derivationChanged() {
22712 delayedPhraseChanged();
22715 function bip32Changed() {
22716 derivationPath = DOM.bip32path.val();
22717 derivationChanged();
22720 function bip44Changed() {
22721 setBip44DerivationPath();
22722 derivationPath = DOM.bip44path.val();
22723 derivationChanged();
22726 function toggleIndexes() {
22727 $("td.index span").toggleClass("invisible");
22730 function toggleAddresses() {
22731 $("td.address span").toggleClass("invisible");
22734 function togglePrivateKeys() {
22735 $("td.privkey span").toggleClass("invisible");
22740 function generateRandomPhrase() {
22741 if (!hasStrongRandom()) {
22742 var errorText = "This browser does not support strong randomness";
22743 showValidationError(errorText);
22746 var numWords = parseInt(DOM.strength.val());
22747 // Check strength is an integer
22748 if (isNaN(numWords)) {
22749 DOM.strength.val("
12");
22752 // Check strength is a multiple of
32, if not round it down
22753 if (numWords %
3 !=
0) {
22754 numWords = Math.floor(numWords /
3) *
3;
22755 DOM.strength.val(numWords);
22757 // Check strength is at least
32
22758 if (numWords ==
0) {
22760 DOM.strength.val(numWords);
22762 var strength = numWords /
3 *
32;
22763 var words = mnemonic.generate(strength);
22764 DOM.phrase.val(words);
22768 function calcBip32Seed(phrase, path) {
22769 var seed = mnemonic.toSeed(phrase);
22770 var seedHash = Bitcoin.crypto.sha256(seed).toString("hex");
22771 bip32RootKey = Bitcoin.HDNode.fromSeedHex(seedHash, network);
22772 bip32ExtendedKey = bip32RootKey;
22773 // Derive the key from the path
22774 var pathBits = path.split("/");
22775 for (var i=
0; i
<pathBits.length; i++) {
22776 var bit = pathBits[i];
22777 var index = parseInt(bit);
22778 if (isNaN(index)) {
22781 var hardened = bit[bit.length-
1] ==
"'";
22783 bip32ExtendedKey = bip32ExtendedKey.deriveHardened(index);
22786 bip32ExtendedKey = bip32ExtendedKey.derive(index);
22791 function showValidationError(errorText) {
22797 function hideValidationError() {
22803 function findPhraseErrors(phrase) {
22804 // TODO make this right
22805 // Preprocess the words
22806 var parts = phrase.split(
" ");
22808 for (var i=
0; i
<parts.length; i++) {
22809 var part = parts[i];
22810 if (part.length
> 0) {
22811 // TODO check that lowercasing is always valid to do
22812 proper.push(part.toLowerCase());
22815 // TODO some levenstein on the words
22816 var properPhrase = proper.join(' ');
22817 // Check the words are valid
22818 var isValid = mnemonic.check(properPhrase);
22820 return
"Invalid mnemonic";
22825 function findDerivationPathErrors(path) {
22830 function displayBip32Info() {
22832 var rootKey = bip32RootKey.toBase58();
22833 DOM.rootKey.val(rootKey);
22834 var extendedPrivKey = bip32ExtendedKey.toBase58();
22835 DOM.extendedPrivKey.val(extendedPrivKey);
22836 var extendedPubKey = bip32ExtendedKey.toBase58(false);
22837 DOM.extendedPubKey.val(extendedPubKey);
22838 // Display the addresses and privkeys
22839 clearAddressesList();
22840 displayAddresses(
0,
20);
22843 function displayAddresses(start, total) {
22844 for (var i=
0; i
<total; i++) {
22845 var index = i+ start;
22846 var key = bip32ExtendedKey.derive(index);
22847 var address = key.getAddress().toString();
22848 var privkey = key.privKey.toWIF();
22849 addAddressToList(index, address, privkey);
22853 function showMore() {
22854 var start = DOM.addresses.children().length;
22855 var rowsToAdd = parseInt(DOM.rowsToAdd.val());
22856 if (isNaN(rowsToAdd)) {
22858 DOM.rowsToAdd.val(
"20");
22860 if (rowsToAdd
> 200) {
22861 var msg =
"Generating " + rowsToAdd +
" rows could take a while. ";
22862 msg +=
"Do you want to continue?";
22863 if (!confirm(msg)) {
22868 setTimeout(function() {
22869 displayAddresses(start, rowsToAdd);
22874 function clearDisplay() {
22875 clearAddressesList();
22877 hideValidationError();
22880 function clearAddressesList() {
22881 DOM.addresses.empty();
22884 function clearKey() {
22885 DOM.rootKey.val(
"");
22886 DOM.extendedPrivKey.val(
"");
22887 DOM.extendedPubKey.val(
"");
22890 function addAddressToList(index, address, privkey) {
22891 var row = $(addressRowTemplate.html());
22892 row.find(
".index span").text(index);
22893 row.find(
".address span").text(address);
22894 row.find(
".privkey span").text(privkey);
22895 DOM.addresses.append(row);
22898 function hasStrongRandom() {
22899 return 'crypto' in window && window['crypto'] !== null;
22902 function disableForms() {
22903 $(
"form").on(
"submit", function(e) {
22904 e.preventDefault();
22908 function setBip44DerivationPath() {
22909 var purpose = parseIntNoNaN(DOM.bip44purpose.val(),
44);
22910 var coin = parseIntNoNaN(DOM.bip44coin.val(),
0);
22911 var account = parseIntNoNaN(DOM.bip44account.val(),
0);
22912 var change = parseIntNoNaN(DOM.bip44change.val(),
0);
22914 path += purpose +
"'/";
22915 path += coin +
"'/";
22916 path += account +
"'/";
22918 DOM.bip44path.val(path);
22921 function parseIntNoNaN(val, defaultVal) {
22922 var v = parseInt(val);
22929 function showPending() {
22931 .text(
"Calculating...")
22935 function hidePending() {