]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/BIP39.git/blob - bip39-standalone.html
Merge pull request #70 from LedgerHQ/master
[perso/Immae/Projets/Cryptomonnaies/BIP39.git] / bip39-standalone.html
1 <!DOCTYPE html>
2 <html>
3 <head lang="en">
4 <meta charset="utf-8" />
5 <title>BIP39 - Mnemonic Code</title>
6 <style>/*!
7 * Bootstrap v3.2.0 (http://getbootstrap.com)
8 * Copyright 2011-2014 Twitter, Inc.
9 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
10 *//*! 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}}</style>
11 <meta content="Mnemonic code for generating deterministic keys" name="description"/>
12 <meta content="width=device-width, initial-scale=1.0" name="viewport" />
13 <meta content="bitcoin mnemonic converter" name="description" />
14 <meta content="Ian Coleman" name="author" />
15 <link type="image/x-icon" rel="icon" href="data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABmJLR0T///////8JWPfcAAAACXBIWXMAAABIAAAASABGyWs+AAAAF0lEQVRIx2NgGAWjYBSMglEwCkbBSAcACBAAAeaR9cIAAAAASUVORK5CYII=" />
16
17 <style>
18 body {
19 padding-bottom: 32px;
20 }
21 .form-control[readonly] {
22 cursor: text;
23 }
24 .feedback-container {
25 position: fixed;
26 top: 0;
27 width: 100%;
28 text-align: center;
29 z-index: 4;
30 }
31 .feedback {
32 display: table;
33 padding: 0.5em 1em;
34 background-color: orange;
35 margin: 0 auto;
36 font-size: 2em;
37 color: #444;
38 border: 2px solid #555;
39 border-top: 0;
40 border-bottom-left-radius: 20px 20px;
41 border-bottom-right-radius: 20px 20px;
42 }
43 .no-border {
44 border: 0;
45 box-shadow: inset 0 1px 1px rgba(0,0,0,.0);
46 -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.0);
47 }
48 .phrase {
49 word-break: keep-all;
50 }
51 .generate-container .strength {
52 /* override mobile width from bootstrap */
53 width: auto!important;
54 display: inline-block;
55 }
56 .languages a {
57 padding-left: 10px;
58 }
59 .languages a:nth-of-type(1) {
60 margin-left: -12px;
61 padding-left: 0;
62 }
63 .monospace {
64 font-family: monospace;
65 }
66 .entropy-container .filtered,
67 .entropy-container .binary {
68 word-wrap: break-word;
69 }
70 .entropy-container li {
71 padding-bottom: 5px;
72 }
73 .card-suit {
74 font-size: 19px;
75 line-height: 0;
76 }
77 .card-suit.club {
78 color: #009F00;
79 }
80 .card-suit.diamond {
81 color: #3D5DC4;
82 }
83 .card-suit.heart {
84 color: #F00;
85 }
86 .card-suit.spade {
87 color: #000;
88 }
89 .qr-container {
90 position: fixed;
91 top: 0;
92 right: 0;
93 text-align: center;
94 background-color: #FFF;
95 border: 1px solid #CCC;
96 }
97 .qr-image {
98 margin: 5px;
99 }
100 .qr-hint,
101 .qr-warning {
102 padding: 2px;
103 max-width: 150px;
104 }
105 .more-info {
106 cursor: help;
107 border-bottom: 1px dashed #000;
108 text-decoration: none;
109 }
110 </style>
111 </head>
112 <body>
113 <div class="container">
114
115 <h1 class="text-center">Mnemonic Code Converter</h1>
116 <hr>
117 <div class="row">
118 <div class="col-md-12">
119 <h2>Mnemonic</h2>
120 <form class="form-horizontal" role="form">
121 <div class="form-group">
122 <div class="col-sm-2"></div>
123 <div class="col-sm-10">
124 <p data-translate>You can enter an existing BIP39 mnemonic, or generate a new random one. Typing your own twelve words will probably not work how you expect, since the words require a particular structure (the last word is a checksum).</p>
125 <p data-translate-html>
126 For more info see the
127 <a href="https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki" target="_blank">BIP39 spec</a>.
128 </p>
129 </div>
130 </div>
131 <div class="form-group generate-container">
132 <label class="col-sm-2 control-label"></label>
133 <div class="col-sm-10">
134 <div class="form-inline">
135 <div class="input-group-inline">
136 <span data-translate>Generate a random mnemonic, or enter your own below</span>:
137 <button class="btn generate">Generate</button>
138 <select id="strength" class="strength form-control">
139 <option value="3">3</option>
140 <option value="6">6</option>
141 <option value="9">9</option>
142 <option value="12">12</option>
143 <option value="15" selected>15</option>
144 <option value="18">18</option>
145 <option value="21">21</option>
146 <option value="24">24</option>
147 </select>
148 <span data-translate>words</span>
149 </div>
150 </div>
151 </div>
152 </div>
153 <div class="entropy-container hidden">
154 <div class="form-group text-danger">
155 <label class="col-sm-2 control-label" data-translate>Warning</label>
156 <div class="col-sm-10 form-control-static">
157 <span data-translate>Entropy is an advanced feature. Your mnemonic may be insecure if this feature is used incorrectly.</span>
158 <a href="#entropy-notes" data-translate>Read more</a>
159 </div>
160 </div>
161 <div class="form-group">
162 <label for="entropy" class="col-sm-2 control-label" data-translate>Entropy</label>
163 <div class="col-sm-7">
164 <textarea id="entropy" rows="2" class="entropy form-control" placeholder="Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards" data-translate-placeholder></textarea>
165 <div class="row">
166 <label class="col-sm-3 control-label" data-translate>Strength</label>
167 <div class="strength col-sm-3 form-control-static"></div>
168 <label class="col-sm-3 control-label" data-translate>Event Count</label>
169 <div class="event-count col-sm-3 form-control-static"></div>
170 </div>
171 <div class="row">
172 <label class="col-sm-3 control-label" data-translate>Entropy Type</label>
173 <div class="type col-sm-3 form-control-static"></div>
174 <label class="col-sm-3 control-label" data-translate>Bits Per Event</label>
175 <div class="bits-per-event col-sm-3 form-control-static"></div>
176 </div>
177 <div class="row">
178 <label class="col-sm-3 control-label" data-translate>Word Count</label>
179 <div class="word-count col-sm-3 form-control-static"></div>
180 <label class="col-sm-3 control-label" data-translate><span class="more-info" data-translate-title title="Total bits of entropy may be less than indicated if any entropy event uses a weak source.">Total Bits</span></label>
181 <div class="bits col-sm-3 form-control-static"></div>
182 </div>
183 <label class="col-sm-3 control-label" data-translate>Filtered Entropy</label>
184 <div class="filtered col-sm-9 form-control-static"></div>
185 <label class="col-sm-3 control-label" data-translate>Raw Binary</label>
186 <div class="binary col-sm-9 form-control-static"></div>
187 <label class="col-sm-3 control-label" data-translate>Mnemonic Length</label>
188 <div class="col-sm-9">
189 <select class="mnemonic-length form-control">
190 <option value="raw" selected data-translate>Use Raw Entropy (3 words per 32 bits)</option>
191 <option value="12">12 <span data-translate>Words</span></option>
192 <option value="15">15 <span data-translate>Words</option>
193 <option value="18">18 <span data-translate>Words</span></option>
194 <option value="21">21 <span data-translate>Words</span></option>
195 <option value="24">24 <span data-translate>Words</span></option>
196 </select>
197 </div>
198 </div>
199 <div class="col-sm-3">
200 <p data-translate>Valid entropy values include:</p>
201 <ul>
202 <li><strong data-translate>Binary</strong> [0-1]<br>101010011</li>
203 <li><strong data-translate>Base 6</strong> [0-5]<br>123434014</li>
204 <li><strong data-translate>Dice</strong> [1-6]<br>62535634</li>
205 <li><strong data-translate>Base 10</strong> [0-9]<br>90834528</li>
206 <li><strong data-translate>Hex</strong> [0-9A-F]<br>4187a8bfd9</li>
207 <li><strong data-translate>Card</strong> [A2-9TJQK][CDHS]<br>ahqs9dtc</li>
208 </ul>
209 </div>
210 </div>
211 </div>
212 <div class="form-group">
213 <div class="col-sm-2"></div>
214 <div class="col-sm-10 checkbox">
215 <label>
216 <input type="checkbox" class="use-entropy">
217 <span data-translate>Supply my own source of entropy</span>
218 </label>
219 </div>
220 </div>
221 <div class="form-group">
222 <label class="col-sm-2 control-label" data-translate>Mnemonic Language</label>
223 <div class="col-sm-10 languages">
224 <div class="form-control no-border">
225 <a href="#english">English</a>
226 <a href="#japanese" title="Japanese">日本語</a>
227 <a href="#spanish" title="Spanish">Español</a>
228 <a href="#chinese_simplified" title="Chinese (Simplified)">中文(简体)</a>
229 <a href="#chinese_traditional" title="Chinese (Traditional)">中文(繁體)</a>
230 <a href="#french" title="French">Français</a>
231 <a href="#italian" title="Italian">Italiano</a>
232 </div>
233 </div>
234 </div>
235 <div class="form-group">
236 <label for="phrase" class="col-sm-2 control-label" data-translate>BIP39 Mnemonic</label>
237 <div class="col-sm-10">
238 <textarea id="phrase" class="phrase form-control" data-show-qr></textarea>
239 </div>
240 </div>
241 <div class="form-group">
242 <label for="passphrase" class="col-sm-2 control-label" data-translate>BIP39 Passphrase (optional)</label>
243 <div class="col-sm-10">
244 <textarea id="passphrase" class="passphrase form-control"></textarea>
245 </div>
246 </div>
247 <div class="form-group">
248 <label for="seed" class="col-sm-2 control-label" data-translate>BIP39 Seed</label>
249 <div class="col-sm-10">
250 <textarea id="seed" class="seed form-control" readonly="readonly" data-show-qr></textarea>
251 </div>
252 </div>
253 <div class="form-group">
254 <label for="network-phrase" class="col-sm-2 control-label" data-translate>Coin</label>
255 <div class="col-sm-10">
256 <select id="network-phrase" class="network form-control">
257 <!-- populated by javascript -->
258 </select>
259 </div>
260 </div>
261 <div class="form-group">
262 <label for="root-key" class="col-sm-2 control-label" data-translate>BIP32 Root Key</label>
263 <div class="col-sm-10">
264 <textarea id="root-key" class="root-key form-control" data-show-qr></textarea>
265 </div>
266 </div>
267 </form>
268 </div>
269 </div>
270
271 <hr>
272
273 <div class="row">
274 <div class="col-md-12">
275 <h2>Derivation Path</h2>
276 <ul class="derivation-type nav nav-tabs" role="tablist">
277 <li id="bip44-tab" class="active">
278 <a href="#bip44" role="tab" data-toggle="tab">BIP44</a>
279 </li>
280 <li id="bip32-tab">
281 <a href="#bip32" role="tab" data-toggle="tab">BIP32</a>
282 </li>
283 </ul>
284 <div class="derivation-type tab-content">
285 <div id="bip44" class="tab-pane active">
286 <form class="form-horizontal" role="form">
287 <br>
288 <div class="col-sm-2"></div>
289 <div class="col-sm-10">
290 <p data-translate-html>
291 For more info see the
292 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target="_blank">BIP44 spec</a>.
293 </p>
294 </div>
295 <div class="form-group">
296 <label for="purpose" class="col-sm-2 control-label">
297 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#purpose" target="_blank" data-translate>Purpose</a>
298 </label>
299 <div class="col-sm-10">
300 <input id="purpose" type="text" class="purpose form-control" value="44">
301 </div>
302 </div>
303 <div class="form-group">
304 <label for="coin" class="col-sm-2 control-label">
305 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#registered-coin-types" target="_blank" data-translate>Coin</a>
306 </label>
307 <div class="col-sm-10">
308 <input id="coin" type="text" class="coin form-control" value="0">
309 </div>
310 </div>
311 <div class="form-group">
312 <label for="account" class="col-sm-2 control-label">
313 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#account" target="_blank" data-translate>Account</a>
314 </label>
315 <div class="col-sm-10">
316 <input id="account" type="text" class="account form-control" value="0">
317 </div>
318 </div>
319 <div class="form-group">
320 <label for="change" class="col-sm-2 control-label">
321 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#change" target="_blank" data-translate>External / Internal</a>
322 </label>
323 <div class="col-sm-10">
324 <input id="change" type="text" class="change form-control" value="0">
325 </div>
326 </div>
327 <div class="form-group">
328 <label class="col-sm-2 control-label">
329 </label>
330 <div class="col-sm-10">
331 <p data-translate>The account extended keys can be used for importing to most BIP44 compatible wallets, such as mycelium or electrum.</p>
332 </div>
333 </div>
334 <div class="form-group">
335 <label for="account-xprv" class="col-sm-2 control-label">
336 <span data-translate>Account Extended Private Key</span>
337 </label>
338 <div class="col-sm-10">
339 <textarea id="account-xprv" type="text" class="account-xprv form-control" readonly data-show-qr></textarea>
340 </div>
341 </div>
342 <div class="form-group">
343 <label for="account-xpub" class="col-sm-2 control-label">
344 <span data-translate>Account Extended Public Key</span>
345 </label>
346 <div class="col-sm-10">
347 <textarea id="account-xpub" type="text" class="account-xpub form-control" readonly data-show-qr></textarea>
348 </div>
349 </div>
350 <div class="form-group">
351 <label class="col-sm-2 control-label">
352 </label>
353 <div class="col-sm-10">
354 <p data-translate>The BIP32 derivation path and extended keys are the basis for the derived addresses.</p>
355 </div>
356 </div>
357 <div class="form-group">
358 <label for="bip44-path" class="col-sm-2 control-label" data-translate>BIP32 Derivation Path</label>
359 <div class="col-sm-10">
360 <input id="bip44-path" type="text" class="path form-control" value="m/44'/0'/0'/0" readonly="readonly">
361 </div>
362 </div>
363 </form>
364 </div>
365 <div id="bip32" class="tab-pane">
366 <form class="form-horizontal" role="form">
367 <br>
368 <div class="col-sm-2"></div>
369 <div class="col-sm-10">
370 <p data-translate>
371 For more info see the
372 <a href="https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target="_blank">BIP32 spec</a>
373 </p>
374 </div>
375 <div class="form-group">
376 <label for="bip32-client" class="col-sm-2 control-label" data-translate>Client</label>
377 <div class="col-sm-10">
378 <select id="bip32-client" class="client form-control">
379 <option value="custom">Custom derivation path</option>
380 <!-- populated by javascript -->
381 </select>
382 </div>
383 </div>
384 <div class="form-group">
385 <label for="bip32-path" class="col-sm-2 control-label" data-translate>BIP32 Derivation Path</label>
386 <div class="col-sm-10">
387 <input id="bip32-path" type="text" class="path form-control" value="m/0">
388 </div>
389 </div>
390 <div class="form-group">
391 <div class="col-sm-2"></div>
392 <label class="col-sm-10">
393 <input class="hardened-addresses" type="checkbox">
394 <span data-translate>Use hardened addresses</span>
395 </label>
396 </div>
397 <div class="form-group">
398 <label for="core-path" class="col-sm-2 control-label" data-translate>Bitcoin Core</label>
399 <div class="col-sm-10">
400 <p class="form-control no-border" data-translate-html>
401 Use path <code>m/0'/0'</code> with hardened addresses.
402 </p>
403 <p class="form-control no-border" data-translate-html>
404 For more info see the
405 <a href="https://github.com/bitcoin/bitcoin/pull/8035" target="_blank">Bitcoin Core BIP32 implementation</a>
406 </p>
407 </div>
408 </div>
409 <div class="form-group">
410 <label for="core-path" class="col-sm-2 control-label" data-translate>Multibit</label>
411 <div class="col-sm-10">
412 <p class="form-control no-border">
413 <span data-translate-html>Use path <code>m/0'/0</code>.</span>
414 </p>
415 <p class="form-control no-border">
416 <span data-translate>For more info see</span>
417 <a href="https://multibit.org/" target="_blank">MultiBit HD</a>
418 </p>
419 </div>
420 </div>
421 <div class="form-group">
422 <label class="col-sm-2 control-label" data-translate>Block Explorers</label>
423 <div class="col-sm-10">
424 <p class="form-control no-border">
425 <span data-translate-html>Use path <code>m/44'/0'/0'</code>.</span>
426 <span data-translate-html>Only enter the <code>xpub</code> extended key into block explorer search fields, never the <code>xprv</code> key.</span>
427 </p>
428 <p class="form-control no-border">
429 <span data-translate>Can be used with</span>:
430 <a href="https://blockchain.info/" target="_blank">blockchain.info</a>
431 </p>
432 </div>
433 </div>
434 </form>
435 </div>
436 </div>
437 <form class="form-horizontal" role="form">
438 <div class="form-group">
439 <label for="extended-priv-key" class="col-sm-2 control-label" data-translate>BIP32 Extended Private Key</label>
440 <div class="col-sm-10">
441 <textarea id="extended-priv-key" class="extended-priv-key form-control" readonly="readonly" data-show-qr></textarea>
442 </div>
443 </div>
444 <div class="form-group">
445 <label for="extended-pub-key" class="col-sm-2 control-label" data-translate>BIP32 Extended Public Key</label>
446 <div class="col-sm-10">
447 <textarea id="extended-pub-key" class="extended-pub-key form-control" readonly="readonly" data-show-qr></textarea>
448 </div>
449 </div>
450 </form>
451 </div>
452 </div>
453
454 <hr>
455
456 <div class="row">
457 <div class="col-md-12">
458 <h2>Derived Addresses</h2>
459 <p data-translate>Note these addreses are derived from the BIP32 Extended Key</p>
460 <table class="table table-striped">
461 <thead>
462 <th>
463 <div class="input-group">
464 <span data-translate>Path</span>&nbsp;&nbsp;
465 <button class="index-toggle" data-translate>Toggle</button>
466 </div>
467 </th>
468 <th>
469 <div class="input-group">
470 <span data-translate>Address</span>&nbsp;&nbsp;
471 <button class="address-toggle" data-translate>Toggle</button>
472 </div>
473 </th>
474 <th>
475 <div class="input-group">
476 <span data-translate>Public Key</span>&nbsp;&nbsp;
477 <button class="public-key-toggle" data-translate>Toggle</button>
478 </div>
479 </th>
480 <th>
481 <div class="input-group">
482 <span data-translate>Private Key</span>&nbsp;&nbsp;
483 <button class="private-key-toggle" data-translate>Toggle</button>
484 </div>
485 </th>
486 </thead>
487 <tbody class="addresses monospace">
488 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
489 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
490 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
491 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
492 <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
493 </tbody>
494 </table>
495 </div>
496 </div>
497 <span data-translate>Show more rows</span>:
498 <input type="number" class="rows-to-add" value="20">
499 <button class="more" data-translate>Show</button>
500
501 <hr>
502
503 <div class="row">
504 <div class="col-md-12">
505 <h2 data-translate>More info</h2>
506 <h3>BIP39 <span class="small" data-translate>Mnemonic code for generating deterministic keys</span></h3>
507 <p data-translate-html>
508 Read more at the
509 <a href="https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki">official BIP39 spec</a>
510 </p>
511 <h3>BIP32 <span class="small" data-translate>Hierarchical Deterministic Wallets</span></h3>
512 <p data-translate-html>
513 Read more at the
514 <a href="https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target="_blank">official BIP32 spec</a>
515 </p>
516 <p data-translate-html>
517 See the demo at
518 <a href="http://bip32.org/" target="_blank">bip32.org</a>
519 </p>
520 <h3>BIP44 <span class="small" data-translate>Multi-Account Hierarchy for Deterministic Wallets</span></h3>
521 <p data-translate-html>
522 Read more at the
523 <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target="_blank">official BIP44 spec</a>
524 </p>
525 <h3 data-translate>Private Keys</h3>
526 <p>
527 <span data-translate-html>
528 Use private keys at
529 <a href="https://web.archive.org/web/20150707020924/https://brainwallet.org/" target="_blank">brainwallet.org</a>.
530 </span>
531 <span data-translate>Be careful - it can be easy to make mistakes if you don't know what you're doing.</span>
532 </p>
533 <h3 id="entropy-notes" data-translate>Entropy</h3>
534 <p>
535 <span data-translate-html>
536 Entropy values must be sourced from a
537 <a href="https://en.wikipedia.org/wiki/Random_number_generation" target="_blank">strong source of randomness</a>.
538 </span>
539 <span data-translate>This means flipping a fair coin, rolling a fair dice, noise measurements etc.</span>
540 <span data-translate-html>
541 Do <strong>NOT</strong> use phrases from books, lyrics from songs, your birthday or steet address,
542 keyboard mashing, or anything you <i>think</i> is random, because chances are overwhelming it isn't
543 random enough for the needs of this tool.
544 </span>
545 </p>
546 <p>
547 <strong><span data-translate>Do not store entropy.</span></strong>
548 </p>
549 <p>
550 <span data-translate>Storing entropy (such as keeping a deck of cards in a specific shuffled order) is unreliable compared to storing a mnemonic.</span>
551 <span data-translate>Instead of storing entropy, store the mnemonic generated from the entropy.</span>
552 <span data-translate-html><a href="https://en.wikipedia.org/wiki/Steganography#Physical" target="_blank">Steganography</a> may be beneficial when storing the mnemonic.</span>
553 </p>
554 <p>
555 <span data-translate-html>
556 The random mnemonic generator on this page uses a
557 <a href="https://developer.mozilla.org/en-US/docs/Web/API/RandomSource/getRandomValues" target="_blank">cryptographically secure random number generator</a>.
558 </span>
559 <span data-translate>The built in random generator can generally be trusted more than your own intuition about randomness.</span>
560 <span data-translate>If cryptographic randomness isn't available in your browser, this page will show a warning and the generate button will not work.</span>
561 <span data-translate>In that case you might choose to use your own source of entropy.</span>
562 </p>
563 <p>
564 <a href="https://bitcointalk.org/index.php?topic=311000.msg3345309#msg3345309" target="_blank" data-translate>You are not a good source of entropy.</a>
565 </p>
566 <h3 data-translate>License</h3>
567 <p>
568 <span data-translate-html>Please refer to <a href="https://github.com/iancoleman/bip39/blob/master/LICENSE" target="_blank">the software license</a> for more detail.
569 </span>
570 </p>
571 <p data-translate>The software is provided "as is", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the software.</p>
572 </div>
573 </div>
574
575 <hr>
576
577 <div class="row">
578 <div class="col-md-12">
579
580 <h2 data-translate>Offline Usage</h2>
581
582 <p data-translate>
583 You can use this tool without having to be online.
584 </p>
585 <p data-translate>
586 In your browser, select file save-as, and save this page
587 as a file.
588 </p>
589 <p data-translate>
590 Double-click that file to open it in a browser
591 on any offline computer.
592 </p>
593 <p>
594 <span data-translate>Alternatively, download the file from the repository</span>
595 -
596 <a href="https://github.com/iancoleman/bip39">https://github.com/iancoleman/bip39</a>
597 </p>
598
599 </div>
600 </div>
601
602 <hr>
603
604 <div class="row">
605 <div class="col-md-12">
606
607 <h2 data-translate>This project is 100% open-source code</h2>
608
609 <p>
610 <span data-translate>Get the source code from the repository</span>
611 -
612 <a href="https://github.com/iancoleman/bip39" target="_blank">
613 https://github.com/iancoleman/bip39
614 </a>
615 </p>
616
617 <h3 data-translate>Libraries</h3>
618
619 <p>
620 <span>BitcoinJS - </span>
621 <a href="https://github.com/bitcoinjs/bitcoinjs-lib" target="_blank">
622 https://github.com/bitcoinjs/bitcoinjs-lib
623 </a>
624 </p>
625
626 <p>
627 <span>jsBIP39 - </span>
628 <a href="https://github.com/iancoleman/jsbip39" target="_blank">
629 https://github.com/iancoleman/jsbip39
630 </a>
631 </p>
632
633 <p>
634 <span>sjcl - </span>
635 <a href="https://github.com/bitwiseshiftleft/sjcl" target="_blank">
636 https://github.com/bitwiseshiftleft/sjcl
637 </a>
638 </p>
639
640 <p>
641 <span>jQuery - </span>
642 <a href="https://jquery.com/" target="_blank">
643 https://jquery.com/
644 </a>
645 </p>
646
647 <p>
648 <span>Twitter Bootstrap - </span>
649 <a href="http://getbootstrap.com/" target="_blank">
650 http://getbootstrap.com/
651 </a>
652 </p>
653
654 </div>
655 </div>
656
657 </div>
658
659 <div class="qr-container hidden">
660 <div class="qr-hint bg-primary hidden" data-translate>Click field to hide QR</div>
661 <div class="qr-hint bg-primary" data-translate>Click field to show QR</div>
662 <div class="qr-hider hidden">
663 <div class="qr-image"></div>
664 <div class="qr-warning bg-primary" data-translate>Caution: Scanner may keep history</div>
665 </div>
666 </div>
667
668 <div class="feedback-container">
669 <div class="feedback">Loading...</div>
670 </div>
671
672 <script type="text/template" id="address-row-template">
673 <tr>
674 <td class="index"><span></span></td>
675 <td class="address"><span data-show-qr></span></td>
676 <td class="pubkey"><span data-show-qr></span></td>
677 <td class="privkey"><span data-show-qr></span></td>
678 </tr>
679 </script>
680 <script>// From
681 // https://raw.githubusercontent.com/inexorabletash/polyfill/a6bc6ced78160c994f76a909b6ff6bbbab3d43de/es6.js
682 // Required for ethereumjs-utils.js when run in phantomjs-2.1.1
683 // but is not required in any modern browsers.
684 // For more information, see
685 // https://www.bountysource.com/issues/38485709-error-rendering-plot-with-phantomjs
686
687 //----------------------------------------------------------------------
688 //
689 // ECMAScript 2015 Polyfills
690 //
691 //----------------------------------------------------------------------
692
693 (function (global) {
694 "use strict";
695
696 // Set this to always override native implementations, for testing
697 // the polyfill in browsers with partial/full ES2015 support.
698 var OVERRIDE_NATIVE_FOR_TESTING = false;
699
700 var undefined = (void 0); // Paranoia
701
702 // Helpers
703
704 function strict(o) {
705 return o === global ? undefined : o;
706 }
707
708 function hook(o, p, f) {
709 var op = o[p];
710 console.assert(typeof op === 'function', 'Hooking a non-function');
711 o[p] = function() {
712 var o = strict(this);
713 var r = f.apply(o, arguments);
714 return r !== undefined ? r : op.apply(o, arguments);
715 };
716 }
717
718 function isSymbol(s) {
719 return (typeof s === 'symbol') || ('Symbol' in global && s instanceof global.Symbol);
720 }
721
722 function getPropertyDescriptor(target, name) {
723 var desc = Object.getOwnPropertyDescriptor(target, name);
724 var proto = Object.getPrototypeOf(target);
725 while (!desc && proto) {
726 desc = Object.getOwnPropertyDescriptor(proto, name);
727 proto = Object.getPrototypeOf(proto);
728 }
729 return desc;
730 }
731
732 var enqueue = (function(nativePromise, nativeSetImmediate) {
733 if (nativePromise)
734 return function(job) { nativePromise.resolve().then(function() { job(); }); };
735 if (nativeSetImmediate)
736 return function(job) { nativeSetImmediate(job); };
737 return function(job) { setTimeout(job, 0); };
738 }(global['Promise'], global['setImmediate']));
739
740 function define(o, p, v, override) {
741 if (p in o && !override && !OVERRIDE_NATIVE_FOR_TESTING)
742 return;
743
744 if (typeof v === 'function') {
745 // Sanity check that functions are appropriately named (where possible)
746 console.assert(isSymbol(p) || !('name' in v) || v.name === p || v.name === p + '_', 'Expected function name "' + p.toString() + '", was "' + v.name + '"');
747 Object.defineProperty(o, p, {
748 value: v,
749 configurable: true,
750 enumerable: false,
751 writable: true
752 });
753 } else {
754 Object.defineProperty(o, p, {
755 value: v,
756 configurable: false,
757 enumerable: false,
758 writable: false
759 });
760 }
761 }
762
763 function set_internal(o, p, v) {
764 Object.defineProperty(o, p, {
765 value: v,
766 configurable: false,
767 enumerable: false,
768 writable: true
769 });
770 }
771
772 // Snapshot intrinsic functions
773 var $isNaN = global.isNaN,
774 $parseInt = global.parseInt,
775 $parseFloat = global.parseFloat;
776
777 var E = Math.E,
778 LOG10E = Math.LOG10E,
779 LOG2E = Math.LOG2E,
780 abs = Math.abs,
781 ceil = Math.ceil,
782 exp = Math.exp,
783 floor = Math.floor,
784 log = Math.log,
785 max = Math.max,
786 min = Math.min,
787 pow = Math.pow,
788 random = Math.random,
789 sqrt = Math.sqrt;
790
791 var orig_match = String.prototype.match,
792 orig_replace = String.prototype.replace,
793 orig_search = String.prototype.search,
794 orig_split = String.prototype.split;
795
796 // These are used for implementing the polyfills, but not exported.
797
798 // Inspired by https://gist.github.com/1638059
799 /** @constructor */
800 function EphemeronTable() {
801 var secretKey = ObjectCreate(null);
802
803 function conceal(o) {
804 var oValueOf = o.valueOf, secrets = ObjectCreate(null);
805 Object.defineProperty(o, 'valueOf', {
806 value: (function(secretKey) {
807 return function (k) {
808 return (k === secretKey) ? secrets : oValueOf.apply(o, arguments);
809 };
810 }(secretKey)),
811 configurable: true,
812 writeable: true,
813 enumerable: false
814 });
815 return secrets;
816 }
817
818 function reveal(o) {
819 var v = typeof o.valueOf === 'function' && o.valueOf(secretKey);
820 return v === o ? null : v;
821 }
822
823 return {
824 clear: function() {
825 secretKey = ObjectCreate(null);
826 },
827 remove: function(key) {
828 var secrets = reveal(key);
829 if (secrets && HasOwnProperty(secrets, 'value')) {
830 delete secrets.value;
831 return true;
832 }
833 return false;
834 },
835 get: function(key, defaultValue) {
836 var secrets = reveal(key);
837 return (secrets && HasOwnProperty(secrets, 'value')) ? secrets.value : defaultValue;
838 },
839 has: function(key) {
840 var secrets = reveal(key);
841 return Boolean(secrets && HasOwnProperty(secrets, 'value'));
842 },
843 set: function(key, value) {
844 var secrets = reveal(key) || conceal(key);
845 secrets.value = value;
846 }
847 };
848 }
849
850 var empty = Object.create(null);
851
852 //----------------------------------------------------------------------
853 //
854 // ECMAScript 2015
855 // http://www.ecma-international.org/ecma-262/6.0/
856 //
857 //----------------------------------------------------------------------
858
859 // ---------------------------------------
860 // 19.4 Symbol Objects
861 // ---------------------------------------
862
863 // NOTE: Symbols are defined here - out of spec order - since we need the
864 // properties and prototype to be populated for other polyfills.
865
866 // NOTE: Not secure, nor is obj[$$symbol] hidden from Object.keys()
867
868 var symbolForKey;
869 (function() {
870 var secret = Object.create(null);
871 var symbolMap = {};
872 symbolForKey = function(k) {
873 return symbolMap[k];
874 };
875
876 var GlobalSymbolRegistry = [];
877
878 function unique(bits) {
879 return Array(bits + 1).join('x').replace(/x/g, function() {
880 return random() < 0.5 ? '\u200C' : '\u200D'; // JWNJ / ZWJ
881 });
882 }
883
884 // 19.4.1 The Symbol Constructor
885 // 19.4.1.1 Symbol ( description=undefined )
886 function Symbol(description) {
887 if (!(this instanceof Symbol)) return new Symbol(description, secret);
888 if (this instanceof Symbol && arguments[1] !== secret) throw TypeError();
889
890 var descString = description === undefined ? undefined : String(description);
891
892 set_internal(this, '[[SymbolData]]', unique(128));
893 set_internal(this, '[[Description]]', descString);
894
895 symbolMap[this] = this;
896 return this;
897 }
898
899 if (!('Symbol' in global) || OVERRIDE_NATIVE_FOR_TESTING)
900 global.Symbol = Symbol;
901
902 // 19.4.2 Properties of the Symbol Constructor
903
904 // 19.4.2.1 Symbol.for (key)
905 define(Symbol, 'for', function for_(key) {
906 var stringKey = String(key);
907 for (var i = 0; i < GlobalSymbolRegistry.length; ++i) {
908 var e = GlobalSymbolRegistry[i];
909 if (SameValue(e['[[key]]'], stringKey)) return e['[[symbol]]'];
910 }
911 var newSymbol = Symbol(key);
912 GlobalSymbolRegistry.push({'[[key]]': stringKey, '[[symbol]]': newSymbol});
913 return newSymbol;
914 });
915
916 // 19.4.2.2 Symbol.hasInstance
917 // 19.4.2.3 Symbol.isConcatSpreadable
918
919 // 19.4.2.4 Symbol.iterator
920 define(global.Symbol, 'iterator', global.Symbol('Symbol.iterator'));
921
922 // 19.4.2.5 Symbol.keyFor (sym)
923 define(Symbol, 'keyFor', function keyFor(sym) {
924 if (!(sym instanceof Symbol)) throw TypeError();
925 for (var i = 0; i < GlobalSymbolRegistry.length; ++i) {
926 var e = GlobalSymbolRegistry[i];
927 if (SameValue(e['[[symbol]]'], sym)) return e['[[key]]'];
928 }
929 return undefined;
930 });
931
932 // 19.4.2.6 Symbol.match
933 define(global.Symbol, 'match', global.Symbol('Symbol.match'));
934
935 // 19.4.2.7 Symbol.prototype
936
937 // 19.4.2.8 Symbol.replace
938 define(global.Symbol, 'replace', global.Symbol('Symbol.replace'));
939
940 // 19.4.2.9 Symbol.search
941 define(global.Symbol, 'search', global.Symbol('Symbol.search'));
942
943 // 19.4.2.10 Symbol.species
944
945 // 19.4.2.11 Symbol.search
946 define(global.Symbol, 'split', global.Symbol('Symbol.split'));
947
948 // 19.4.2.12 Symbol.toPrimitive
949
950 // 19.4.2.13 Symbol.toStringTag
951 define(global.Symbol, 'toStringTag', global.Symbol('Symbol.toStringTag'));
952
953 // 19.4.2.14 Symbol.unscopables
954
955 // 19.4.3 Properties of the Symbol Prototype Object
956 // 19.4.3.1 Symbol.prototype.constructor
957
958 // 19.4.3.2 Symbol.prototype.toString ( )
959 Object.defineProperty(Symbol.prototype, 'toString', {
960 value: function toString() {
961 var s = strict(this);
962 var desc = s['[[Description]]'];
963 return 'Symbol(' + (desc === undefined ? '' : desc) + s['[[SymbolData]]'] + ')';
964 },
965 configurable: true, writeable: true, enumerable: false });
966
967 // 19.4.3.3 Symbol.prototype.valueOf ( )
968 Object.defineProperty(Symbol.prototype, 'valueOf', {
969 value: function valueOf() {
970 // To prevent automatic string conversion:
971 throw TypeError();
972
973 // Spec has approximately the following:
974 //var s = strict(this);
975 //if (Type(s) === 'symbol') return s;
976 //if (Type(s) !== 'object') throw TypeError();
977 //if (!('[[SymbolData]]' in s)) throw TypeError();
978 //return s['[[SymbolData]]'];
979 },
980 configurable: true, writeable: true, enumerable: false });
981
982 // 19.4.3.4 Symbol.prototype [ @@toStringTag ]
983 // (Done later to polyfill partial implementations)
984
985 // 19.4.4 Properties of Symbol Instances
986 }());
987
988 console.assert(typeof global.Symbol() === 'symbol' || symbolForKey(String(global.Symbol('x'))));
989
990 // Defined here so that other prototypes can reference it
991 // 25.1.2 The %IteratorPrototype% Object
992 var $IteratorPrototype$ = {};
993
994 //----------------------------------------
995 // 6 ECMAScript Data Types and Values
996 //----------------------------------------
997
998 // 6.1 ECMAScript Language Types
999
1000 // "Type(x)" is used as shorthand for "the type of x"...
1001 function Type(v) {
1002 switch (typeof v) {
1003 case 'undefined': return 'undefined';
1004 case 'boolean': return 'boolean';
1005 case 'number': return 'number';
1006 case 'string': return 'string';
1007 case 'symbol': return 'symbol';
1008 default:
1009 if (v === null) return 'null';
1010 if (v instanceof global.Symbol) return 'symbol';
1011 return 'object';
1012 }
1013 }
1014
1015 // 6.1.5.1 Well-Known Symbols
1016 var $$iterator = global.Symbol.iterator,
1017 $$match = global.Symbol.match,
1018 $$replace = global.Symbol.replace,
1019 $$search = global.Symbol.search,
1020 $$split = global.Symbol.split,
1021 $$toStringTag = global.Symbol.toStringTag;
1022
1023 //----------------------------------------
1024 // 7 Abstract Operations
1025 //----------------------------------------
1026
1027 //----------------------------------------
1028 // 7.1 Type Conversion
1029 //----------------------------------------
1030
1031 // 7.1.1 ToPrimitive ( input [, PreferredType] )
1032 // just use valueOf()
1033
1034 // 7.1.2 ToBoolean ( argument )
1035 // just use Boolean()
1036
1037 // 7.1.3 ToNumber ( argument )
1038 // just use Number()
1039
1040 // 7.1.4 ToInteger ( argument )
1041 function ToInteger(n) {
1042 n = Number(n);
1043 if ($isNaN(n)) return 0;
1044 if (n === 0 || n === Infinity || n === -Infinity) return n;
1045 return ((n < 0) ? -1 : 1) * floor(abs(n));
1046 }
1047
1048 // 7.1.5 ToInt32 ( argument )
1049 function ToInt32(v) { return v >> 0; }
1050
1051 // 7.1.6 ToUint32 ( argument )
1052 function ToUint32(v) { return v >>> 0; }
1053
1054 // 7.1.7 ToInt16 ( argument )
1055 function ToInt16(v) { return (v << 16) >> 16; }
1056
1057 // 7.1.8 ToUint16 ( argument )
1058 function ToUint16(v) { return v & 0xFFFF; }
1059
1060 // 7.1.9 ToInt8 ( argument )
1061 function ToInt8(v) { return (v << 24) >> 24; }
1062
1063 // 7.1.10 ToUint8 ( argument )
1064 function ToUint8(v) { return v & 0xFF; }
1065
1066 // 7.1.11 ToUint8Clamp ( argument )
1067 function ToUint8Clamp(argument) {
1068 var number = Number(argument);
1069 if ($isNaN(number)) return 0;
1070 if (number <= 0) return 0;
1071 if (number >= 255) return 255;
1072 var f = floor(number);
1073 if ((f + 0.5) < number) return f + 1;
1074 if (number < (f + 0.5)) return f;
1075 if (f % 2) return f + 1;
1076 return f;
1077 }
1078
1079 // 7.1.12 ToString ( argument )
1080 // just use String()
1081
1082 // 7.1.13 ToObject ( argument )
1083 function ToObject(v) {
1084 if (v === null || v === undefined) throw TypeError();
1085 return Object(v);
1086 }
1087
1088 // 7.1.14 ToPropertyKey ( argument )
1089 function ToPropertyKey(v) {
1090 return String(v);
1091 }
1092
1093 // 7.1.15 ToLength ( argument )
1094 function ToLength(v) {
1095 var len = ToInteger(v);
1096 if (len <= 0) return 0;
1097 if (len === Infinity) return 0x20000000000000 - 1; // 2^53-1
1098 return min(len, 0x20000000000000 - 1); // 2^53-1
1099 }
1100
1101 // 7.1.16 CanonicalNumericIndexString ( argument )
1102
1103 //----------------------------------------
1104 // 7.2 Testing and Comparison Operations
1105 //----------------------------------------
1106
1107 // 7.2.1 RequireObjectCoercible ( argument )
1108 // 7.2.2 IsArray ( argument )
1109
1110 // 7.2.3 IsCallable ( argument )
1111 function IsCallable(o) { return typeof o === 'function'; }
1112
1113 // 7.2.4 IsConstructor ( argument )
1114 function IsConstructor(o) {
1115 // Hacks for Safari 7 TypedArray XXXConstructor objects
1116 if (/Constructor/.test(Object.prototype.toString.call(o))) return true;
1117 if (/Function/.test(Object.prototype.toString.call(o))) return true;
1118 // TODO: Can this be improved on?
1119 return typeof o === 'function';
1120 }
1121
1122 // 7.2.5 IsExtensible (O)
1123 // 7.2.6 IsInteger ( argument )
1124
1125 // 7.2.7 IsPropertyKey ( argument )
1126 function IsPropertyKey(argument) {
1127 if (Type(argument) === 'string') return true;
1128 if (Type(argument) === 'symbol') return true;
1129 return false;
1130 }
1131
1132 // 7.2.8 IsRegExp ( argument )
1133 // 7.2.5 IsConstructor ( argument )
1134
1135 // 7.2.9 SameValue(x, y)
1136 function SameValue(x, y) {
1137 if (typeof x !== typeof y) return false;
1138 switch (typeof x) {
1139 case 'undefined':
1140 return true;
1141 case 'number':
1142 if (x !== x && y !== y) return true;
1143 if (x === 0 && y === 0) return 1/x === 1/y;
1144 return x === y;
1145 case 'boolean':
1146 case 'string':
1147 case 'object':
1148 default:
1149 return x === y;
1150 }
1151 }
1152
1153 // 7.2.10 SameValueZero(x, y)
1154 function SameValueZero(x, y) {
1155 if (typeof x !== typeof y) return false;
1156 switch (typeof x) {
1157 case 'undefined':
1158 return true;
1159 case 'number':
1160 if (x !== x && y !== y) return true;
1161 return x === y;
1162 case 'boolean':
1163 case 'string':
1164 case 'object':
1165 default:
1166 return x === y;
1167 }
1168 }
1169
1170 //----------------------------------------
1171 // 7.3 Operations on Objects
1172 //----------------------------------------
1173
1174 // 7.3.1 Get (O, P)
1175 // - just use o.p or o[p]
1176
1177 // 7.3.2 GetV (V, P)
1178 function GetV(v, p) {
1179 var o = ToObject(v);
1180 return o[p];
1181 }
1182
1183 // 7.3.3 Set (O, P, V, Throw)
1184 // - just use o.p = v or o[p] = v
1185
1186
1187
1188
1189 // 7.3.9 GetMethod (O, P)
1190 function GetMethod(o, p) {
1191 var func = GetV(o, p);
1192 if (func === undefined || func === null) return undefined;
1193 if (!IsCallable(func)) throw TypeError();
1194 return func;
1195 }
1196
1197 // 7.3.10 HasProperty (O, P)
1198 function HasProperty(o, p) {
1199 while (o) {
1200 if (Object.prototype.hasOwnProperty.call(o, p)) return true;
1201 if (Type(o) !== 'object') return false;
1202 o = Object.getPrototypeOf(o);
1203 }
1204 return false;
1205 }
1206
1207 // 7.3.11 HasOwnProperty (O, P)
1208 function HasOwnProperty(o, p) {
1209 return Object.prototype.hasOwnProperty.call(o, p);
1210 }
1211
1212 //----------------------------------------
1213 // 7.4 Operations on Iterator Objects
1214 //----------------------------------------
1215
1216 // 7.4.1 GetIterator ( obj, method )
1217 function GetIterator(obj, method) {
1218 if (arguments.length < 2)
1219 method = GetMethod(obj, $$iterator);
1220 var iterator = method.call(obj);
1221 if (Type(iterator) !== 'object') throw TypeError();
1222 return iterator;
1223 }
1224
1225 // 7.4.2 IteratorNext ( iterator, value )
1226 function IteratorNext(iterator, value) {
1227 if (arguments.length < 2)
1228 var result = iterator.next();
1229 else
1230 result = iterator.next(value);
1231 if (Type(result) !== 'object') throw TypeError();
1232 return result;
1233 }
1234
1235 // 7.4.3 IteratorComplete ( iterResult )
1236 function IteratorComplete(iterResult) {
1237 console.assert(Type(iterResult) === 'object');
1238 return Boolean(iterResult.done);
1239 }
1240
1241 // 7.4.4 IteratorValue ( iterResult )
1242 function IteratorValue(iterResult) {
1243 console.assert(Type(iterResult) === 'object');
1244 return iterResult.value;
1245 }
1246
1247 // 7.4.5 IteratorStep ( iterator )
1248 function IteratorStep( iterator, value ) {
1249 var result = IteratorNext(iterator, value);
1250 var done = result['done'];
1251 if (Boolean(done) === true) return false;
1252 return result;
1253 }
1254
1255 // 7.4.6 IteratorClose( iterator, completion )
1256 function IteratorClose( iterator, completion ) {
1257 console.assert(Type(iterator) === 'object');
1258 var _return = GetMethod(iterator, 'return');
1259 if (_return === undefined) return completion;
1260 try {
1261 var innerResult = _return[iterator]();
1262 } catch (result) {
1263 // TODO: If completion.[[type]] is throw, return completion
1264 return result;
1265 }
1266 if (Type(innerResult) !== 'object') throw TypeError();
1267 return completion;
1268 }
1269
1270 // 7.4.7 CreateIterResultObject (value, done)
1271 function CreateIterResultObject(value, done) {
1272 console.assert(Type(done) === 'boolean');
1273 var obj = {};
1274 obj["value"] = value;
1275 obj["done"] = done;
1276 return obj;
1277 }
1278
1279 // 7.4.8 CreateListIterator (list)
1280 // 7.4.8.1 ListIterator next( )
1281 // 7.4.9 CreateCompoundIterator ( iterator1, iterator2 )
1282 // 7.4.9.1 CompoundIterator next( )
1283
1284 //----------------------------------------
1285 // 8 Executable Code and Execution Contexts
1286 //----------------------------------------
1287
1288 //----------------------------------------
1289 // 8.4 Jobs and Job Queues
1290 //----------------------------------------
1291
1292 // 8.4.1 EnqueueJob ( queueName, job, arguments)
1293 function EnqueueJob(queueName, job, args) {
1294 var fn = function() { job.apply(undefined, args); };
1295 enqueue(fn);
1296 }
1297
1298 // 8.4.2 NextJob result
1299 function NextJob(result) {
1300 // no-op
1301 }
1302
1303 //----------------------------------------
1304 // 9 Ordinary and Exotic Objects Behaviors
1305 //----------------------------------------
1306
1307 // 9.1.11 [[Enumerate]] ()
1308 function Enumerate(obj) {
1309 var e = [];
1310 if (Object(obj) !== obj) return e;
1311 var visited = new Set;
1312 while (obj !== null) {
1313 Object.getOwnPropertyNames(obj).forEach(function(name) {
1314 if (!visited.has(name)) {
1315 var desc = Object.getOwnPropertyDescriptor(obj, name);
1316 if (desc) {
1317 visited.add(name);
1318 if (desc.enumerable) e.push(name);
1319 }
1320 }
1321 });
1322 obj = Object.getPrototypeOf(obj);
1323 }
1324 return e[$$iterator]();
1325 }
1326
1327 // 9.1.12 [[OwnPropertyKeys]] ( )
1328 function OwnPropertyKeys(o) {
1329 return Object.getOwnPropertyNames(o);
1330 }
1331
1332 // 9.1.13 ObjectCreate(proto, internalSlotsList)
1333 function ObjectCreate(proto, internalSlotsList) {
1334 return Object.create(proto, internalSlotsList);
1335 }
1336
1337 // ---------------------------------------
1338 // 19 Fundamental Objects
1339 // ---------------------------------------
1340
1341 // ---------------------------------------
1342 // 19.1 Object Objects
1343 // ---------------------------------------
1344
1345 // 19.1.1 The Object Constructor
1346 // 19.1.1.1 Object ( [ value ] )
1347 // 19.1.2 Properties of the Object Constructor
1348 // 19.1.2.1 Object.assign ( target, ...sources )
1349 define(
1350 Object, 'assign',
1351 function assign(target, /*...*/sources) {
1352 var to = ToObject(target);
1353 if (arguments.length < 2) return to;
1354
1355 var sourcesIndex = 1;
1356 while (sourcesIndex < arguments.length) {
1357 var nextSource = arguments[sourcesIndex++];
1358 if (nextSource === undefined || nextSource === null) {
1359 var keys = [];
1360 } else {
1361 var from = ToObject(nextSource);
1362 keys = OwnPropertyKeys(from);
1363 }
1364 for (var keysIndex = 0; keysIndex < keys.length; ++keysIndex) {
1365 var nextKey = keys[keysIndex];
1366 var desc = Object.getOwnPropertyDescriptor(from, nextKey);
1367 if (desc !== undefined && desc.enumerable) {
1368 var propValue = from[nextKey];
1369 to[nextKey] = propValue;
1370 }
1371 }
1372 }
1373 return to;
1374 });
1375
1376 // 19.1.2.2 Object.create ( O [ , Properties ] )
1377 // 19.1.2.3 Object.defineProperties ( O, Properties )
1378 // 19.1.2.4 Object.defineProperty ( O, P, Attributes )
1379 // 19.1.2.5 Object.freeze ( O )
1380 // 19.1.2.6 Object.getOwnPropertyDescriptor ( O, P )
1381
1382 (function() {
1383 var nativeSymbols = (typeof global.Symbol() === 'symbol'),
1384 $getOwnPropertyNames = Object.getOwnPropertyNames,
1385 $keys = Object.keys,
1386 $window_names = (typeof window === 'object' ? $getOwnPropertyNames(window) : []);
1387
1388 function isStringKey(k) { return !symbolForKey(k); }
1389
1390 // 19.1.2.7 Object.getOwnPropertyNames ( O )
1391 define(
1392 Object, 'getOwnPropertyNames',
1393 function getOwnPropertyNames(o) {
1394 if (Object.prototype.toString.call(o) === '[object Window]') {
1395 // Workaround for cross-realm calling by IE itself.
1396 // https://github.com/inexorabletash/polyfill/issues/96
1397 try {
1398 return $getOwnPropertyNames(o).filter(isStringKey);
1399 } catch (_) {
1400 return $window_names.slice();
1401 }
1402 }
1403 return $getOwnPropertyNames(o).filter(isStringKey);
1404 }, !nativeSymbols);
1405
1406 // 19.1.2.8 Object.getOwnPropertySymbols ( O )
1407 define(
1408 Object, 'getOwnPropertySymbols',
1409 function getOwnPropertySymbols(o) {
1410 return $getOwnPropertyNames(o).filter(symbolForKey).map(symbolForKey);
1411 }, !nativeSymbols);
1412
1413 // 19.1.2.14 Object.keys ( O )
1414 define(
1415 Object, 'keys',
1416 function keys(o) {
1417 return $keys(o).filter(isStringKey);
1418 }, !nativeSymbols);
1419 }());
1420
1421 // 19.1.2.9 Object.getPrototypeOf ( O )
1422 // 19.1.2.10 Object.is ( value1, value2 )
1423 define(
1424 Object, 'is',
1425 function is(value1, value2) {
1426 return SameValue(value1, value2);
1427 });
1428
1429 // 19.1.2.11 Object.isExtensible ( O )
1430 // 19.1.2.12 Object.isFrozen ( O )
1431 // 19.1.2.13 Object.isSealed ( O )
1432
1433 // 19.1.2.14 Object.keys ( O )
1434 // see above
1435
1436 // 19.1.2.15 Object.preventExtensions ( O )
1437 // 19.1.2.16 Object.prototype
1438 // 19.1.2.17 Object.seal ( O )
1439
1440 // 19.1.2.18 Object.setPrototypeOf ( O, proto )
1441 define(
1442 Object, 'setPrototypeOf',
1443 function setPrototypeOf(o, proto) {
1444 if (Type(o) !== 'object') throw TypeError();
1445 if (Type(proto) !== 'object' && Type(proto) !== 'null') throw TypeError();
1446 o.__proto__ = proto;
1447 return o;
1448 }
1449 );
1450
1451 // 19.1.3 Properties of the Object Prototype Object
1452 // 19.1.3.1 Object.prototype.constructor
1453 // 19.1.3.2 Object.prototype.hasOwnProperty ( V )
1454 // 19.1.3.3 Object.prototype.isPrototypeOf ( V )
1455 // 19.1.3.4 Object.prototype.propertyIsEnumerable ( V )
1456 // 19.1.3.5 Object.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
1457 // 19.1.3.6 Object.prototype.toString ( )
1458 hook(Object.prototype, 'toString',
1459 function() {
1460 var o = strict(this);
1461 if (o === Object(o) && $$toStringTag in o) {
1462 return '[object ' + o[$$toStringTag] + ']';
1463 }
1464 return undefined;
1465 });
1466
1467 // 19.1.3.7 Object.prototype.valueOf ( )
1468 // 19.1.4 Properties of Object Instances
1469
1470 // ---------------------------------------
1471 // 19.2 Function Objects
1472 // ---------------------------------------
1473
1474 // 19.2.1 The Function Constructor
1475 // 19.2.1.1 Function ( p1, p2, … , pn, body )
1476 // 19.2.2 Properties of the Function Constructor
1477 // 19.2.2.1 Function.length
1478 // 19.2.2.2 Function.prototype
1479 // 19.2.3 Properties of the Function Prototype Object
1480 // 19.2.3.1 Function.prototype.apply ( thisArg, argArray )
1481 // 19.2.3.2 Function.prototype.bind ( thisArg , ...args)
1482 // 19.2.3.3 Function.prototype.call (thisArg , ...args)
1483 // 19.2.3.4 Function.prototype.constructor
1484 // 19.2.3.5 Function.prototype.toString ( )
1485 // 19.2.3.6 Function.prototype[@@hasInstance] ( V )
1486 // 19.2.4 Function Instances
1487 // 19.2.4.1 length
1488 // 19.2.4.2 name
1489 // 19.2.4.3 prototype
1490
1491 // (No polyfillable changes from ES5)
1492
1493 // ---------------------------------------
1494 // 19.3 Boolean Objects
1495 // ---------------------------------------
1496
1497 // 19.3.1 The Boolean Constructor
1498 // 19.3.1.1 Boolean ( value )
1499 // 19.3.2 Properties of the Boolean Constructor
1500 // 19.3.2.1 Boolean.prototype
1501 // 19.3.3 Properties of the Boolean Prototype Object
1502 // 19.3.3.1 Boolean.prototype.constructor
1503 // 19.3.3.2 Boolean.prototype.toString ( )
1504 // 19.3.3.3 Boolean.prototype.valueOf ( )
1505 // 19.3.4 Properties of Boolean Instances
1506
1507 // (No polyfillable changes from ES5)
1508
1509 // ---------------------------------------
1510 // 19.4 Symbol Objects
1511 // ---------------------------------------
1512
1513 // Moved earlier in this script, so that other polyfills can depend on them.
1514
1515 // 19.4.3.4 Symbol.prototype [ @@toStringTag ]
1516 define(global.Symbol.prototype, global.Symbol.toStringTag, 'Symbol');
1517
1518 // ---------------------------------------
1519 // 19.5 Error Objects
1520 // ---------------------------------------
1521
1522 // 19.5.1 The Error Constructor
1523 // 19.5.1.1 Error ( message )
1524 // 19.5.1.2 new Error( ...argumentsList )
1525 // 19.5.2 Properties of the Error Constructor
1526 // 19.5.2.1 Error.prototype
1527 // 19.5.3 Properties of the Error Prototype Object
1528 // 19.5.3.1 Error.prototype.constructor
1529 // 19.5.3.2 Error.prototype.message
1530 // 19.5.3.3 Error.prototype.name
1531 // 19.5.3.4 Error.prototype.toString ( )
1532 // 19.5.4 Properties of Error Instances
1533 // 19.5.5 Native Error Types Used in This Standard
1534 // 19.5.5.1 EvalError
1535 // 19.5.5.2 RangeError
1536 // 19.5.5.3 ReferenceError
1537 // 19.5.5.4 SyntaxError
1538 // 19.5.5.5 TypeError
1539 // 19.5.5.6 URIError
1540 // 19.5.6 NativeError Object Structure
1541 // 19.5.6.1 NativeError Constructors
1542 // 19.5.6.1.1 NativeError ( message )
1543 // 19.5.6.1.2 new NativeError ( ...argumentsList )
1544 // 19.5.6.2 Properties of the NativeError Constructors
1545 // 19.5.6.2.1 NativeError.prototype
1546 // 19.5.6.3 Properties of the NativeError Prototype Objects
1547 // 19.5.6.4 Properties of NativeError Instances
1548
1549 // (No polyfillable changes from ES5)
1550
1551 // ---------------------------------------
1552 // 20 Numbers and Dates
1553 // ---------------------------------------
1554
1555 // ---------------------------------------
1556 // 20.1 Number Objects
1557 // ---------------------------------------
1558
1559 // 20.1.1 The Number Constructor
1560 // 20.1.1.1 Number ( [ value ] )
1561 // 20.1.1.2 new Number ( ...argumentsList )
1562 // 20.1.2 Properties of the Number Constructor
1563
1564 // 20.1.2.1 Number.EPSILON
1565 define(
1566 Number, 'EPSILON',
1567 (function () {
1568 var next, result;
1569 for (next = 1; 1 + next !== 1; next = next / 2)
1570 result = next;
1571 return result;
1572 }()));
1573
1574 // 20.1.2.2 Number.isFinite ( number )
1575 define(
1576 Number, 'isFinite',
1577 function isFinite(number) {
1578 if (Type(number) !== 'number') return false;
1579 if (number !== number || number === +Infinity || number === -Infinity) return false;
1580 return true;
1581 });
1582
1583 // 20.1.2.3 Number.isInteger ( number )
1584 define(
1585 Number, 'isInteger',
1586 function isInteger(number) {
1587 if (Type(number) !== 'number') return false;
1588 if (number !== number || number === +Infinity || number === -Infinity) return false;
1589 var integer = ToInteger(number);
1590 if (integer !== number) return false;
1591 return true;
1592 });
1593
1594 // 20.1.2.4 Number.isNaN ( number )
1595 define(
1596 Number, 'isNaN',
1597 function isNaN(number) {
1598 if (Type(number) !== 'number') return false;
1599 if (number !== number) return true;
1600 return false;
1601 });
1602
1603 // 20.1.2.5 Number.isSafeInteger ( number )
1604 define(
1605 Number, 'isSafeInteger',
1606 function isSafeInteger(number) {
1607 if (Type(number) !== 'number') return false;
1608 if (number !== number || number === +Infinity || number === -Infinity) return false;
1609 var integer = ToInteger(number);
1610 if (integer !== number) return false;
1611 if (abs(integer) <= (0x20000000000000 - 1)) // 2^53-1
1612 return true;
1613 return false;
1614 });
1615
1616 // 20.1.2.6 Number.MAX_SAFE_INTEGER
1617 define(
1618 Number, 'MAX_SAFE_INTEGER',
1619 9007199254740991); // 2^53-1
1620
1621 // 20.1.2.7 Number.MAX_VALUE
1622
1623 // 20.1.2.8 Number.MIN_SAFE_INTEGER
1624 define(
1625 Number, 'MIN_SAFE_INTEGER',
1626 -9007199254740991); // -2^53+1
1627
1628 // 20.1.2.9 Number.MIN_VALUE
1629 // 20.1.2.10 Number.NaN
1630 // 20.1.2.11 Number.NEGATIVE_INFINITY
1631
1632 // 20.1.2.12 Number.parseFloat ( string )
1633 define(Number, 'parseFloat', $parseFloat);
1634
1635 // 20.1.2.13 Number.parseInt ( string, radix )
1636 define(Number, 'parseInt', $parseInt);
1637
1638 // 20.1.2.14 Number.POSITIVE_INFINITY
1639 // 20.1.2.15 Number.prototype
1640
1641 // 20.1.3 Properties of the Number Prototype Object
1642 // 20.1.3.1 Number.prototype.constructor
1643 // 20.1.3.2 Number.prototype.toExponential ( fractionDigits )
1644 // 20.1.3.3 Number.prototype.toFixed ( fractionDigits )
1645 // 20.1.3.4 Number.prototype.toLocaleString( [ reserved1 [ , reserved2 ] ])
1646 // 20.1.3.5 Number.prototype.toPrecision ( precision )
1647 // 20.1.3.6 Number.prototype.toString ( [ radix ] )
1648 // 20.1.3.7 Number.prototype.valueOf ( )
1649 // 20.1.4 Properties of Number Instances
1650
1651 // ---------------------------------------
1652 // 20.2 The Math Object
1653 // ---------------------------------------
1654
1655 // 20.2.1 Value Properties of the Math Object
1656 // 20.2.1.1 Math.E
1657 // 20.2.1.2 Math.LN10
1658 // 20.2.1.3 Math.LN2
1659 // 20.2.1.4 Math.LOG10E
1660 // 20.2.1.5 Math.LOG2E
1661 // 20.2.1.6 Math.PI
1662 // 20.2.1.7 Math.SQRT1_2
1663 // 20.2.1.8 Math.SQRT2
1664
1665 // 20.2.1.9 Math [ @@toStringTag ]
1666 define(Math, $$toStringTag, 'Math');
1667
1668 // 20.2.2 Function Properties of the Math Object
1669 // 20.2.2.1 Math.abs ( x )
1670 // 20.2.2.2 Math.acos ( x )
1671
1672 // 20.2.2.3 Math.acosh(x)
1673 define(
1674 Math, 'acosh',
1675 function acosh(x) {
1676 x = Number(x);
1677 return log(x + sqrt(x * x - 1));
1678 });
1679
1680 // 20.2.2.4 Math.asin ( x )
1681
1682 // 20.2.2.5 Math.asinh( x )
1683 define(
1684 Math, 'asinh',
1685 function asinh(x) {
1686 x = Number(x);
1687 if (SameValue(x, -0)) {
1688 return x;
1689 }
1690 var s = sqrt(x * x + 1);
1691 return (s === -x) ? log(0) : log(x + s);
1692 });
1693
1694 // 20.2.2.6 Math.atan ( x )
1695
1696 // 20.2.2.7 Math.atanh( x )
1697 define(
1698 Math, 'atanh',
1699 function atanh(x) {
1700 x = Number(x);
1701 return (x === 0) ? x : log((1 + x) / (1 - x)) / 2;
1702 });
1703
1704 // 20.2.2.8 Math.atan2 ( y, x )
1705
1706 // 20.2.2.9 Math.cbrt ( x )
1707 define(
1708 Math, 'cbrt',
1709 function cbrt(x) {
1710 x = Number(x);
1711 if ($isNaN(x/x)) {
1712 return x;
1713 }
1714 var r = pow(abs(x), 1/3);
1715 var t = x/r/r;
1716 return r + (r * (t-r) / (2*r + t));
1717 });
1718
1719 // 20.2.2.10 Math.ceil ( x )
1720
1721 // 20.2.2.11 Math.clz32 ( x )
1722 define(
1723 Math, 'clz32',
1724 function clz32(x) {
1725 function clz8(x) {
1726 return (x & 0xf0) ? (x & 0x80 ? 0 : x & 0x40 ? 1 : x & 0x20 ? 2 : 3) :
1727 (x & 0x08 ? 4 : x & 0x04 ? 5 : x & 0x02 ? 6 : x & 0x01 ? 7 : 8);
1728 }
1729 x = ToUint32(x);
1730 return x & 0xff000000 ? clz8(x >> 24) :
1731 x & 0xff0000 ? clz8(x >> 16) + 8 :
1732 x & 0xff00 ? clz8(x >> 8) + 16 : clz8(x) + 24;
1733 });
1734
1735
1736
1737 // 20.2.2.12 Math.cos ( x )
1738
1739 // 20.2.2.13 Math.cosh ( x )
1740 define(
1741 Math, 'cosh',
1742 function cosh(x) {
1743 x = Number(x);
1744 return (pow(E, x) + pow(E, -x)) / 2;
1745 });
1746
1747 // 20.2.2.14 Math.exp ( x )
1748
1749 // 20.2.2.15 Math.expm1 ( x )
1750 define(
1751 Math, 'expm1',
1752 function expm1(x) {
1753 x = Number(x);
1754 // from: http://www.johndcook.com/cpp_log1p.html
1755 if (SameValue(x, -0)) {
1756 return -0;
1757 } else if (abs(x) < 1e-5) {
1758 return x + 0.5 * x * x; // two terms of Taylor expansion
1759 } else {
1760 return exp(x) - 1;
1761 }
1762 });
1763
1764 // 20.2.2.16 Math.floor ( x )
1765
1766 // 20.2.2.17 Math.fround ( x )
1767 define(
1768 Math, 'fround',
1769 function fround(x) {
1770 if ($isNaN(x)) {
1771 return NaN;
1772 }
1773 if (1/x === +Infinity || 1/x === -Infinity || x === +Infinity || x === -Infinity) {
1774 return x;
1775 }
1776 return (new Float32Array([x]))[0];
1777 });
1778
1779 // 20.2.2.18 Math.hypot ( value1 [, value2 [ ... ] ] )
1780 define(
1781 Math, 'hypot',
1782 function hypot() {
1783 var values = [];
1784 var m = 0, sawNaN = false;
1785 for (var i = 0; i < arguments.length; ++i) {
1786 var n = abs(Number(arguments[i]));
1787 if (n === Infinity) return n;
1788 if (n !== n) sawNaN = true;
1789 if (n > m) m = n;
1790 values[i] = n;
1791 }
1792 if (sawNaN) return NaN;
1793 if (m === 0) return +0;
1794 var sum = +0;
1795 for (i = 0; i < values.length; ++i) {
1796 var r = values[i] / m;
1797 sum = sum + r * r;
1798 }
1799 return m * sqrt(sum);
1800 });
1801
1802 // 20.2.2.19 Math.imul ( x, y )
1803 define(
1804 Math, 'imul',
1805 function imul(x, y) {
1806 var a = ToUint32(x);
1807 var b = ToUint32(y);
1808 // (slow but accurate)
1809 var ah = (a >>> 16) & 0xffff;
1810 var al = a & 0xffff;
1811 var bh = (b >>> 16) & 0xffff;
1812 var bl = b & 0xffff;
1813 return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0);
1814 }, ('imul' in Math && Math.imul(1, 0x80000000) === 0) // Safari 7 bug
1815 );
1816
1817 // 20.2.2.20 Math.log ( x )
1818
1819 // 20.2.2.21 Math.log1p ( x )
1820 define(
1821 Math, 'log1p',
1822 function log1p(x) {
1823 x = Number(x);
1824 // from: http://www.johndcook.com/cpp_expm1.html
1825 if (x < -1) {
1826 return NaN;
1827 } else if (SameValue(x, -0)) {
1828 return -0;
1829 } else if (abs(x) > 1e-4) {
1830 return log(1 + x);
1831 } else {
1832 return (-0.5 * x + 1) * x;
1833 }
1834 });
1835
1836 // 20.2.2.22 Math.log10 ( x )
1837 define(
1838 Math, 'log10',
1839 function log10(x) {
1840 x = Number(x);
1841 return log(x) * LOG10E;
1842 });
1843
1844 // 20.2.2.23 Math.log2 ( x )
1845 define(
1846 Math, 'log2',
1847 function log2(x) {
1848 x = Number(x);
1849 return log(x) * LOG2E;
1850 });
1851
1852 // 20.2.2.24 Math.max ( value1, value2 , ...values )
1853 // 20.2.2.25 Math.min ( value1, value2 , ...values )
1854 // 20.2.2.26 Math.pow ( x, y )
1855 // 20.2.2.27 Math.random ( )
1856 // 20.2.2.28 Math.round ( x )
1857
1858 // 20.2.2.29 Math.sign(x)
1859 define(
1860 Math, 'sign',
1861 function sign(x) {
1862 x = Number(x);
1863 return x < 0 ? -1 : x > 0 ? 1 : x;
1864 });
1865
1866 // 20.2.2.30 Math.sin ( x )
1867
1868 // 20.2.2.31 Math.sinh( x )
1869 define(
1870 Math, 'sinh',
1871 function sinh(x) {
1872 x = Number(x);
1873 return SameValue(x, -0) ? x : (pow(E, x) - pow(E, -x)) / 2;
1874 });
1875
1876 // 20.2.2.32 Math.sqrt ( x )
1877 // 20.2.2.33 Math.tan ( x )
1878
1879 // 20.2.2.34 Math.tanh ( x )
1880 define(
1881 Math, 'tanh',
1882 function tanh(x) {
1883 x = Number(x);
1884 var n = pow(E, 2 * x) - 1,
1885 d = pow(E, 2 * x) + 1;
1886 if (SameValue(x, -0))
1887 return x;
1888 return (n === d) ? 1 : n / d; // Handle Infinity/Infinity
1889 });
1890
1891 // 20.2.2.35 Math.trunc ( x )
1892 define(
1893 Math, 'trunc',
1894 function trunc(x) {
1895 x = Number(x);
1896 return $isNaN(x) ? NaN :
1897 x < 0 ? ceil(x) : floor(x);
1898 });
1899
1900 // ---------------------------------------
1901 // 20.3 Date Objects
1902 // ---------------------------------------
1903
1904 // 20.3.1 Overview of Date Objects and Definitions of Abstract Operations
1905 // 20.3.1.1 Time Values and Time Range
1906 // 20.3.1.2 Day Number and Time within Day
1907 // 20.3.1.3 Year Number
1908 // 20.3.1.4 Month Number
1909 // 20.3.1.5 Date Number
1910 // 20.3.1.6 Week Day
1911 // 20.3.1.7 Local Time Zone Adjustment
1912 // 20.3.1.8 Daylight Saving Time Adjustment
1913 // 20.3.1.9 Local Time
1914 // 20.3.1.10 Hours, Minutes, Second, and Milliseconds
1915 // 20.3.1.11 MakeTime (hour, min, sec, ms)
1916 // 20.3.1.12 MakeDay (year, month, date)
1917 // 20.3.1.13 MakeDate (day, time)
1918 // 20.3.1.14 TimeClip (time)
1919 // 20.3.1.15 Date Time String Format
1920 // 20.3.1.15.1 Extended years
1921 // 20.3.2 The Date Constructor
1922 // 20.3.2.1 Date ( year, month [, date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] )
1923 // 20.3.2.2 Date ( value )
1924 // 20.3.2.3 Date ( )
1925 // 20.3.3 Properties of the Date Constructor
1926 // 20.3.3.1 Date.now ( )
1927 // 20.3.3.2 Date.parse (string)
1928 // 20.3.3.3 Date.prototype
1929 // 20.3.3.4 Date.UTC ( year, month [ , date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] )
1930 // 20.3.4 Properties of the Date Prototype Object
1931 // 20.3.4.1 Date.prototype.constructor
1932 // 20.3.4.2 Date.prototype.getDate ( )
1933 // 20.3.4.3 Date.prototype.getDay ( )
1934 // 20.3.4.4 Date.prototype.getFullYear ( )
1935 // 20.3.4.5 Date.prototype.getHours ( )
1936 // 20.3.4.6 Date.prototype.getMilliseconds ( )
1937 // 20.3.4.7 Date.prototype.getMinutes ( )
1938 // 20.3.4.8 Date.prototype.getMonth ( )
1939 // 20.3.4.9 Date.prototype.getSeconds ( )
1940 // 20.3.4.10 Date.prototype.getTime ( )
1941 // 20.3.4.11 Date.prototype.getTimezoneOffset ( )
1942 // 20.3.4.12 Date.prototype.getUTCDate ( )
1943 // 20.3.4.13 Date.prototype.getUTCDay ( )
1944 // 20.3.4.14 Date.prototype.getUTCFullYear ( )
1945 // 20.3.4.15 Date.prototype.getUTCHours ( )
1946 // 20.3.4.16 Date.prototype.getUTCMilliseconds ( )
1947 // 20.3.4.17 Date.prototype.getUTCMinutes ( )
1948 // 20.3.4.18 Date.prototype.getUTCMonth ( )
1949 // 20.3.4.19 Date.prototype.getUTCSeconds ( )
1950 // 20.3.4.20 Date.prototype.setDate ( date )
1951 // 20.3.4.21 Date.prototype.setFullYear ( year [ , month [ , date ] ] )
1952 // 20.3.4.22 Date.prototype.setHours ( hour [ , min [ , sec [ , ms ] ] ] )
1953 // 20.3.4.23 Date.prototype.setMilliseconds ( ms )
1954 // 20.3.4.24 Date.prototype.setMinutes ( min [ , sec [ , ms ] ] )
1955 // 20.3.4.25 Date.prototype.setMonth ( month [ , date ] )
1956 // 20.3.4.26 Date.prototype.setSeconds ( sec [ , ms ] )
1957 // 20.3.4.27 Date.prototype.setTime ( time )
1958 // 20.3.4.28 Date.prototype.setUTCDate ( date )
1959 // 20.3.4.29 Date.prototype.setUTCFullYear ( year [ , month [ , date ] ] )
1960 // 20.3.4.30 Date.prototype.setUTCHours ( hour [ , min [ , sec [ , ms ] ] ] )
1961 // 20.3.4.31 Date.prototype.setUTCMilliseconds ( ms )
1962 // 20.3.4.32 Date.prototype.setUTCMinutes ( min [ , sec [, ms ] ] )
1963 // 20.3.4.33 Date.prototype.setUTCMonth ( month [ , date ] )
1964 // 20.3.4.34 Date.prototype.setUTCSeconds ( sec [ , ms ] )
1965 // 20.3.4.35 Date.prototype.toDateString ( )
1966 // 20.3.4.36 Date.prototype.toISOString ( )
1967 // 20.3.4.37 Date.prototype.toJSON ( key )
1968 // 20.3.4.38 Date.prototype.toLocaleDateString ( [ reserved1 [ , reserved2 ] ] )
1969 // 20.3.4.39 Date.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
1970 // 20.3.4.40 Date.prototype.toLocaleTimeString ( [ reserved1 [ , reserved2 ] ] )
1971 // 20.3.4.41 Date.prototype.toString ( )
1972 // 20.3.4.42 Date.prototype.toTimeString ( )
1973 // 20.3.4.43 Date.prototype.toUTCString ( )
1974 // 20.3.4.44 Date.prototype.valueOf ( )
1975 // 20.3.4.45 Date.prototype [ @@toPrimitive ] ( hint )
1976 // 20.3.5 Properties of Date Instances
1977
1978 // (No polyfillable changes from ES5)
1979
1980 // ---------------------------------------
1981 // 21 Text Processing
1982 // ---------------------------------------
1983
1984 var string_regexp_dispatch = (function() {
1985 var faux = {}, secret = Symbol();
1986 faux[Symbol.match] = function() { return secret; };
1987 return ("").match(faux) === secret;
1988 }());
1989
1990 // 21.1 String Objects
1991 // 21.1.1 The String Constructor
1992 // 21.1.1.1 String ( value )
1993 // 21.1.2 Properties of the String Constructor
1994 // 21.1.2.1 String.fromCharCode ( ...codeUnits )
1995
1996 // 21.1.2.2 String.fromCodePoint ( ...codePoints )
1997 define(
1998 String, 'fromCodePoint',
1999 function fromCodePoint(/*...codePoints*/) {
2000 var codePoints = arguments,
2001 length = codePoints.length,
2002 elements = [],
2003 nextIndex = 0;
2004 while (nextIndex < length) {
2005 var next = codePoints[nextIndex];
2006 var nextCP = Number(next);
2007 if (!SameValue(nextCP, ToInteger(nextCP)) ||
2008 nextCP < 0 || nextCP > 0x10FFFF) {
2009 throw RangeError('Invalid code point ' + nextCP);
2010 }
2011 if (nextCP < 0x10000) {
2012 elements.push(String.fromCharCode(nextCP));
2013 } else {
2014 nextCP -= 0x10000;
2015 elements.push(String.fromCharCode((nextCP >> 10) + 0xD800));
2016 elements.push(String.fromCharCode((nextCP % 0x400) + 0xDC00));
2017 }
2018 nextIndex += 1;
2019 }
2020 return elements.join('');
2021 });
2022
2023 // 21.1.2.3 String.prototype
2024
2025 // 21.1.2.4 String.raw ( template , ...substitutions )
2026 define(
2027 String, 'raw',
2028 function raw(template /*, ...substitutions*/) {
2029 var substitutions = [].slice.call(arguments, 1);
2030
2031 var cooked = Object(template);
2032 var rawValue = cooked['raw'];
2033 var raw = Object(rawValue);
2034 var len = raw['length'];
2035 var literalSegments = ToLength(len);
2036 if (literalSegments <= 0) return '';
2037 var stringElements = [];
2038 var nextIndex = 0;
2039 while (true) {
2040 var next = raw[nextIndex];
2041 var nextSeg = String(next);
2042 stringElements.push(nextSeg);
2043 if (nextIndex + 1 === literalSegments)
2044 return stringElements.join('');
2045 next = substitutions[nextIndex];
2046 var nextSub = String(next);
2047 stringElements.push(nextSub);
2048 nextIndex = nextIndex + 1;
2049 }
2050 });
2051
2052 // See https://githib.com/inexorabletash/uate for a more useful version.
2053
2054 // 21.1.3 Properties of the String Prototype Object
2055 // 21.1.3.1 String.prototype.charAt ( pos )
2056 // 21.1.3.2 String.prototype.charCodeAt ( pos )
2057
2058 // 21.1.3.3 String.prototype.codePointAt ( pos )
2059 define(
2060 String.prototype, 'codePointAt',
2061 function codePointAt(pos) {
2062 var o = strict(this);
2063 var s = String(o);
2064 var position = ToInteger(pos);
2065 var size = s.length;
2066 if (position < 0 || position >= size) return undefined;
2067 var first = s.charCodeAt(position);
2068 if (first < 0xD800 || first > 0xDBFF || position + 1 === size) return first;
2069 var second = s.charCodeAt(position + 1);
2070 if (second < 0xDC00 || second > 0xDFFF) return first;
2071 return ((first - 0xD800) * 1024) + (second - 0xDC00) + 0x10000;
2072 });
2073
2074 // 21.1.3.4 String.prototype.concat ( ...args )
2075 // 21.1.3.5 String.prototype.constructor
2076
2077 // 21.1.3.6 String.prototype.endsWith ( searchString [ , endPosition] )
2078 define(
2079 String.prototype, 'endsWith',
2080 function endsWith(searchString) {
2081 var endPosition = arguments[1];
2082
2083 var o = strict(this);
2084 var s = String(o);
2085 var searchStr = String(searchString);
2086 var len = s.length;
2087 var pos = (endPosition === undefined) ? len : ToInteger(endPosition);
2088 var end = min(max(pos, 0), len);
2089 var searchLength = searchStr.length;
2090 var start = end - searchLength;
2091 if (start < 0) return false;
2092 if (s.substring(start, start + searchLength) === searchStr) return true;
2093 return false;
2094 });
2095
2096 // 21.1.3.7 String.prototype.includes ( searchString [ , position ] )
2097 define(
2098 String.prototype, 'includes',
2099 function includes(searchString) {
2100 var position = arguments[1];
2101
2102 var o = strict(this);
2103 var s = String(o);
2104 var searchStr = String(searchString);
2105 var pos = ToInteger(position);
2106 var len = s.length;
2107 var start = min(max(pos, 0), len);
2108 return s.indexOf(searchStr, start) !== -1;
2109 });
2110
2111 // 21.1.3.8 String.prototype.indexOf ( searchString [ , position ] )
2112 // 21.1.3.9 String.prototype.lastIndexOf ( searchString [ , position ] )
2113 // 21.1.3.10 String.prototype.localeCompare ( that [, reserved1 [ , reserved2 ] ] )
2114 // 21.1.3.11 String.prototype.match ( regexp )
2115 define(
2116 String.prototype, 'match',
2117 function match(regexp) {
2118 var o = strict(this);
2119 var s = String(o);
2120 if (HasProperty(regexp, $$match)) var rx = regexp;
2121 else rx = new RegExp(regexp);
2122 return rx[$$match](s);
2123 }, !string_regexp_dispatch);
2124
2125 // 21.1.3.12 String.prototype.normalize ( [ form ] )
2126
2127 // Not practical due to table sizes; if needed, pull in:
2128 // https://github.com/walling/unorm/
2129
2130 // 21.1.3.13 String.prototype.repeat ( count )
2131 define(
2132 String.prototype, 'repeat',
2133 function repeat(count) {
2134 var o = strict(this);
2135 var s = String(o);
2136 var n = ToInteger(count);
2137 if (n < 0) throw RangeError();
2138 if (n === Infinity) throw RangeError();
2139 var t = new Array(n + 1).join(s);
2140 return t;
2141 });
2142
2143 // 21.1.3.14 String.prototype.replace (searchValue, replaceValue )
2144 define(
2145 String.prototype, 'replace',
2146 function replace(searchValue, replaceValue) {
2147 var o = strict(this);
2148 if (HasProperty(searchValue, $$replace))
2149 return searchValue[$$replace](o, replaceValue);
2150 return orig_replace.call(o, searchValue, replaceValue);
2151 }, !string_regexp_dispatch);
2152
2153 // 21.1.3.15 String.prototype.search ( regexp )
2154 define(
2155 String.prototype, 'search',
2156 function search(regexp) {
2157 var o = strict(this);
2158 var string = String(o);
2159 if (HasProperty(regexp, $$search)) var rx = regexp;
2160 else rx = new RegExp(regexp);
2161 return rx[$$search](string);
2162 }, !string_regexp_dispatch);
2163
2164 // 21.1.3.16 String.prototype.slice ( start, end )
2165 // 21.1.3.17 String.prototype.split ( separator, limit )
2166 define(
2167 String.prototype, 'split',
2168 function split(separator, limit) {
2169 var o = strict(this);
2170 if (HasProperty(separator, $$split))
2171 return separator[$$split](o, limit);
2172 return orig_split.call(o, separator, limit);
2173 }, !string_regexp_dispatch);
2174
2175 // 21.1.3.18 String.prototype.startsWith ( searchString [, position ] )
2176 define(
2177 String.prototype, 'startsWith',
2178 function startsWith(searchString) {
2179 var position = arguments[1];
2180
2181 var o = strict(this);
2182 var s = String(o);
2183 var searchStr = String(searchString);
2184 var pos = ToInteger(position);
2185 var len = s.length;
2186 var start = min(max(pos, 0), len);
2187 var searchLength = searchStr.length;
2188 if (searchLength + start > len) return false;
2189 if (s.substring(start, start + searchLength) === searchStr) return true;
2190 return false;
2191 });
2192
2193 // 21.1.3.19 String.prototype.substring ( start, end )
2194 // 21.1.3.20 String.prototype.toLocaleLowerCase ( [ reserved1 [ , reserved2 ] ] )
2195 // 21.1.3.21 String.prototype.toLocaleUpperCase ([ reserved1 [ , reserved2 ] ] )
2196 // 21.1.3.22 String.prototype.toLowerCase ( )
2197 // 21.1.3.23 String.prototype.toString ( )
2198 // 21.1.3.24 String.prototype.toUpperCase ( )
2199 // 21.1.3.25 String.prototype.trim ( )
2200 // 21.1.3.26 String.prototype.valueOf ( )
2201
2202 // 21.1.3.27 String.prototype [ @@iterator ]( )
2203 define(
2204 String.prototype, $$iterator,
2205 function entries() {
2206 return CreateStringIterator(this, 'value');
2207 });
2208
2209 // 21.1.4 Properties of String Instances
2210 // 21.1.4.1 length
2211
2212 // 21.1.5 String Iterator Objects
2213 /** @constructor */
2214 function StringIterator() {}
2215
2216 // 21.1.5.1 CreateStringIterator Abstract Operation
2217 function CreateStringIterator(string, kind) {
2218 var s = String(string);
2219 var iterator = new StringIterator;
2220 set_internal(iterator, '[[IteratedString]]', s);
2221 set_internal(iterator, '[[StringIteratorNextIndex]]', 0);
2222 set_internal(iterator, '[[StringIterationKind]]', kind);
2223 return iterator;
2224 }
2225
2226 // 21.1.5.2 The %StringIteratorPrototype% Object
2227 var $StringIteratorPrototype$ = Object.create($IteratorPrototype$);
2228 StringIterator.prototype = $StringIteratorPrototype$;
2229
2230 // 21.1.5.2.1 %StringIteratorPrototype%.next ( )
2231 define(
2232 $StringIteratorPrototype$, 'next',
2233 function next() {
2234 var o = ToObject(this);
2235 var s = String(o['[[IteratedString]]']),
2236 index = o['[[StringIteratorNextIndex]]'],
2237 len = s.length;
2238 if (index >= len) {
2239 set_internal(o, '[[StringIteratorNextIndex]]', Infinity);
2240 return CreateIterResultObject(undefined, true);
2241 }
2242 var cp = s.codePointAt(index);
2243 set_internal(o, '[[StringIteratorNextIndex]]', index + (cp > 0xFFFF ? 2 : 1));
2244 return CreateIterResultObject(String.fromCodePoint(cp), false);
2245 });
2246
2247 // 21.1.5.2.2 %StringIteratorPrototype% [ @@toStringTag ]
2248 define($StringIteratorPrototype$, $$toStringTag, 'String Iterator');
2249
2250 // 21.1.5.3 Properties of String Iterator Instances
2251
2252 // ---------------------------------------
2253 // 21.2 RegExp (Regular Expression) Objects
2254 // ---------------------------------------
2255
2256 // 21.2.1 Patterns
2257 // 21.2.2 Pattern Semantics
2258 // 21.2.2.1 Notation
2259 // 21.2.2.2 Pattern
2260 // 21.2.2.3 Disjunction
2261 // 21.2.2.4 Alternative
2262 // 21.2.2.5 Term
2263 // 21.2.2.6 Assertion
2264 // 21.2.2.7 Quantifier
2265 // 21.2.2.8 Atom
2266 // 21.2.2.9 AtomEscape
2267 // 21.2.2.10 CharacterEscape
2268 // 21.2.2.11 DecimalEscape
2269 // 21.2.2.12 CharacterClassEscape
2270 // 21.2.2.13 CharacterClass
2271 // 21.2.2.14 ClassRanges
2272 // 21.2.2.15 NonemptyClassRanges
2273 // 21.2.2.16 NonemptyClassRangesNoDash
2274 // 21.2.2.17 ClassAtom
2275 // 21.2.2.18 ClassAtomNoDash
2276 // 21.2.2.19 ClassEscape
2277 // 21.2.3 The RegExp Constructor
2278 // 21.2.3.1 RegExp ( pattern, flags )
2279 // 21.2.3.2 new RegExp( ...argumentsList )
2280 // 21.2.3.3 Abstract Operations for the RegExp Constructor
2281 // 21.2.4 Properties of the RegExp Constructor
2282 // 21.2.4.1 RegExp.prototype
2283 // 21.2.5 Properties of the RegExp Prototype Object
2284 // 21.2.5.1 RegExp.prototype.constructor
2285 // 21.2.5.2 RegExp.prototype.exec ( string )
2286
2287 // 21.2.5.3 get RegExp.prototype.flags
2288 if (!('flags' in RegExp.prototype)) {
2289 Object.defineProperty(
2290 RegExp.prototype, 'flags', {
2291 get: function() {
2292 var s = String(this);
2293 return s.substring(s.lastIndexOf('/') + 1);
2294 }
2295 });
2296 }
2297
2298 // 21.2.5.4 get RegExp.prototype.global
2299 // 21.2.5.5 get RegExp.prototype.ignoreCase
2300
2301 // 21.2.5.6 RegExp.prototype [ @@match ] ( string )
2302 define(RegExp.prototype, $$match, function(string) {
2303 var o = strict(this);
2304 return orig_match.call(string, o);
2305 });
2306
2307 // 21.2.5.7 get RegExp.prototype.multiline
2308
2309 // 21.2.5.8 RegExp.prototype [ @@replace ] ( string, replaceValue )
2310 define(RegExp.prototype, $$replace, function(string, replaceValue) {
2311 var o = strict(this);
2312 return orig_replace.call(string, o, replaceValue);
2313 });
2314
2315 // 21.2.5.9 RegExp.prototype [ @@search ] ( string )
2316 define(RegExp.prototype, $$search, function(string) {
2317 var o = strict(this);
2318 return orig_search.call(string, o);
2319 });
2320
2321 // 21.2.5.10 get RegExp.prototype.source
2322
2323 // 21.2.5.11 RegExp.prototype [ @@split ] ( string, limit )
2324 define(RegExp.prototype, $$split, function(string, limit) {
2325 var o = strict(this);
2326 return orig_split.call(string, o, limit);
2327 });
2328
2329 // 21.2.5.12 get RegExp.prototype.sticky
2330 // 21.2.5.13 RegExp.prototype.test( S )
2331 // 21.2.5.14 RegExp.prototype.toString ( )
2332 // 21.2.5.15 get RegExp.prototype.unicode
2333
2334 // 21.2.6 Properties of RegExp Instances
2335 // 21.2.6.1 lastIndex
2336
2337 // (No polyfillable changes from ES5)
2338
2339 // ---------------------------------------
2340 // 22 Indexed Collections
2341 // ---------------------------------------
2342
2343 // ---------------------------------------
2344 // 22.1 Array Objects
2345 // ---------------------------------------
2346
2347 // 22.1.1 The Array Constructor
2348 // 22.1.1.1 Array ( )
2349 // 22.1.1.2 Array (len)
2350 // 22.1.1.3 Array (...items )
2351
2352 // 22.1.2 Properties of the Array Constructor
2353
2354 // 22.1.2.1 Array.from ( items [ , mapfn [ , thisArg ] ] )
2355 define(
2356 Array, 'from',
2357 function from(items) {
2358 var mapfn = arguments[1];
2359 var thisArg = arguments[2];
2360
2361 var c = strict(this);
2362 if (mapfn === undefined) {
2363 var mapping = false;
2364 } else {
2365 if (!IsCallable(mapfn)) throw TypeError();
2366 var t = thisArg;
2367 mapping = true;
2368 }
2369 var usingIterator = GetMethod(items, $$iterator);
2370 if (usingIterator !== undefined) {
2371 if (IsConstructor(c)) {
2372 var a = new c();
2373 } else {
2374 a = new Array(0);
2375 }
2376 var iterator = GetIterator(items, usingIterator);
2377 var k = 0;
2378 while (true) {
2379 var next = IteratorStep(iterator);
2380 if (next === false) {
2381 a.length = k;
2382 return a;
2383 }
2384 var nextValue = IteratorValue(next);
2385 if (mapping)
2386 var mappedValue = mapfn.call(t, nextValue);
2387 else
2388 mappedValue = nextValue;
2389 a[k] = mappedValue;
2390 k += 1;
2391 }
2392 }
2393 var arrayLike = ToObject(items);
2394 var lenValue = arrayLike.length;
2395 var len = ToLength(lenValue);
2396 if (IsConstructor(c)) {
2397 a = new c(len);
2398 } else {
2399 a = new Array(len);
2400 }
2401 k = 0;
2402 while (k < len) {
2403 var kValue = arrayLike[k];
2404 if (mapping)
2405 mappedValue = mapfn.call(t, kValue, k);
2406 else
2407 mappedValue = kValue;
2408 a[k] = mappedValue;
2409 k += 1;
2410 }
2411 a.length = len;
2412 return a;
2413 });
2414
2415 // 22.1.2.2 Array.isArray ( arg )
2416
2417 // 22.1.2.3 Array.of ( ...items )
2418 define(
2419 Array, 'of',
2420 function of() {
2421 var items = arguments;
2422
2423 var lenValue = items.length;
2424 var len = ToUint32(lenValue);
2425 var c = strict(this), a;
2426 if (IsConstructor(c)) {
2427 a = new c(len);
2428 a = ToObject(a);
2429 } else {
2430 a = new Array(len);
2431 }
2432 var k = 0;
2433 while (k < len) {
2434 a[k] = items[k];
2435 k += 1;
2436 }
2437 a.length = len;
2438 return a;
2439 });
2440
2441 // 22.1.2.4 Array.prototype
2442 // 22.1.2.5 get Array [ @@species ]
2443 // 22.1.3 Properties of the Array Prototype Object
2444 // 22.1.3.1 Array.prototype.concat ( ...arguments )
2445 // 22.1.3.1.1 Runtime Semantics: IsConcatSpreadable ( O )
2446 // 22.1.3.2 Array.prototype.constructor
2447 // 22.1.3.3 Array.prototype.copyWithin (target, start [ , end ] )
2448 define(
2449 Array.prototype, 'copyWithin',
2450 function copyWithin(target, start/*, end*/) {
2451 var end = arguments[2];
2452
2453 var o = ToObject(this);
2454 var lenVal = o.length;
2455 var len = ToLength(lenVal);
2456 len = max(len, 0);
2457 var relativeTarget = ToInteger(target);
2458 var to;
2459 if (relativeTarget < 0)
2460 to = max(len + relativeTarget, 0);
2461 else
2462 to = min(relativeTarget, len);
2463 var relativeStart = ToInteger(start);
2464 var from;
2465 if (relativeStart < 0)
2466 from = max(len + relativeStart, 0);
2467 else
2468 from = min(relativeStart, len);
2469 var relativeEnd;
2470 if (end === undefined)
2471 relativeEnd = len;
2472 else
2473 relativeEnd = ToInteger(end);
2474 var final;
2475 if (relativeEnd < 0)
2476 final = max(len + relativeEnd, 0);
2477 else
2478 final = min(relativeEnd, len);
2479 var count = min(final - from, len - to);
2480 var direction;
2481 if (from < to && to < from + count) {
2482 direction = -1;
2483 from = from + count - 1;
2484 to = to + count - 1;
2485 } else {
2486 direction = 1;
2487 }
2488 while (count > 0) {
2489 var fromKey = String(from);
2490 var toKey = String(to);
2491 var fromPresent = HasProperty(o, fromKey);
2492 if (fromPresent) {
2493 var fromVal = o[fromKey];
2494 o[toKey] = fromVal;
2495 } else {
2496 delete o[toKey];
2497 }
2498 from = from + direction;
2499 to = to + direction;
2500 count = count - 1;
2501 }
2502 return o;
2503 });
2504
2505 // 22.1.3.4 Array.prototype.entries ( )
2506 var nativeArrayIteratorMethods =
2507 ('entries' in Array.prototype && 'next' in [].entries());
2508
2509 define(
2510 Array.prototype, 'entries',
2511 function entries() {
2512 return CreateArrayIterator(this, 'key+value');
2513 }, !nativeArrayIteratorMethods);
2514
2515 // 22.1.3.5 Array.prototype.every ( callbackfn [ , thisArg] )
2516
2517 // 22.1.3.6 Array.prototype.fill (value [ , start [ , end ] ] )
2518 define(
2519 Array.prototype, 'fill',
2520 function fill(value/*, start, end*/) {
2521 var start = arguments[1],
2522 end = arguments[2];
2523
2524 var o = ToObject(this);
2525 var lenVal = o.length;
2526 var len = ToLength(lenVal);
2527 len = max(len, 0);
2528 var relativeStart = ToInteger(start);
2529 var k;
2530 if (relativeStart < 0)
2531 k = max((len + relativeStart), 0);
2532 else
2533 k = min(relativeStart, len);
2534 var relativeEnd;
2535 if (end === undefined)
2536 relativeEnd = len;
2537 else
2538 relativeEnd = ToInteger(end);
2539 var final;
2540 if (relativeEnd < 0)
2541 final = max((len + relativeEnd), 0);
2542 else
2543 final = min(relativeEnd, len);
2544 while (k < final) {
2545 var pk = String(k);
2546 o[pk] = value;
2547 k += 1;
2548 }
2549 return o;
2550 });
2551
2552 // 22.1.3.7 Array.prototype.filter ( callbackfn [ , thisArg ] )
2553
2554 // 22.1.3.8 Array.prototype.find ( predicate [ , thisArg ] )
2555 define(
2556 Array.prototype, 'find',
2557 function find(predicate) {
2558 var o = ToObject(this);
2559 var lenValue = o.length;
2560 var len = ToInteger(lenValue);
2561 if (!IsCallable(predicate)) throw TypeError();
2562 var t = arguments.length > 1 ? arguments[1] : undefined;
2563 var k = 0;
2564 while (k < len) {
2565 var pk = String(k);
2566 var kPresent = HasProperty(o, pk);
2567 if (kPresent) {
2568 var kValue = o[pk];
2569 var testResult = predicate.call(t, kValue, k, o);
2570 if (Boolean(testResult)) {
2571 return kValue;
2572 }
2573 }
2574 ++k;
2575 }
2576 return undefined;
2577 });
2578
2579 // 22.1.3.9 Array.prototype.findIndex ( predicate [ , thisArg ] )
2580 define(
2581 Array.prototype, 'findIndex',
2582 function findIndex(predicate) {
2583 var o = ToObject(this);
2584 var lenValue = o.length;
2585 var len = ToLength(lenValue);
2586 if (!IsCallable(predicate)) throw TypeError();
2587 var t = arguments.length > 1 ? arguments[1] : undefined;
2588 var k = 0;
2589 while (k < len) {
2590 var pk = String(k);
2591 var kPresent = HasProperty(o, pk);
2592 if (kPresent) {
2593 var kValue = o[pk];
2594 var testResult = predicate.call(t, kValue, k, o);
2595 if (Boolean(testResult)) {
2596 return k;
2597 }
2598 }
2599 ++k;
2600 }
2601 return -1;
2602 });
2603
2604 // 22.1.3.10 Array.prototype.forEach ( callbackfn [ , thisArg ] )
2605 // 22.1.3.11 Array.prototype.indexOf ( searchElement [ , fromIndex ] )
2606 // 22.1.3.12 Array.prototype.join (separator)
2607
2608 // 22.1.3.13 Array.prototype.keys ( )
2609 define(
2610 Array.prototype, 'keys',
2611 function keys() {
2612 return CreateArrayIterator(this, 'key');
2613 }, !nativeArrayIteratorMethods);
2614
2615 // 22.1.3.14 Array.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
2616 // 22.1.3.15 Array.prototype.map ( callbackfn [ , thisArg ] )
2617 // 22.1.3.16 Array.prototype.pop ( )
2618 // 22.1.3.17 Array.prototype.push ( ...items )
2619 // 22.1.3.18 Array.prototype.reduce ( callbackfn [ , initialValue ] )
2620 // 22.1.3.19 Array.prototype.reduceRight ( callbackfn [ , initialValue ] )
2621 // 22.1.3.20 Array.prototype.reverse ( )
2622 // 22.1.3.21 Array.prototype.shift ( )
2623 // 22.1.3.22 Array.prototype.slice (start, end)
2624 // 22.1.3.23 Array.prototype.some ( callbackfn [ , thisArg ] )
2625 // 22.1.3.24 Array.prototype.sort (comparefn)
2626 // 22.1.3.25 Array.prototype.splice (start, deleteCount , ...items )
2627 // 22.1.3.26 Array.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
2628 // 22.1.3.27 Array.prototype.toString ( )
2629 // 22.1.3.28 Array.prototype.unshift ( ...items )
2630
2631 // 22.1.3.29 Array.prototype.values ( )
2632 define(
2633 Array.prototype, 'values',
2634 function values() {
2635 return CreateArrayIterator(this, 'value');
2636 }, !nativeArrayIteratorMethods);
2637
2638 // 22.1.3.30 Array.prototype [ @@iterator ] ( )
2639 define(
2640 Array.prototype, $$iterator,
2641 Array.prototype.values
2642 );
2643
2644 // 22.1.3.31 Array.prototype [ @@unscopables ]
2645 // 22.1.4 Properties of Array Instances
2646 // 22.1.4.1 length
2647
2648 // 22.1.5 Array Iterator Objects
2649 function ArrayIterator() {}
2650
2651 // 22.1.5.1 CreateArrayIterator Abstract Operation
2652 function CreateArrayIterator(array, kind) {
2653 var o = ToObject(array);
2654 var iterator = new ArrayIterator;
2655 set_internal(iterator, '[[IteratedObject]]', o);
2656 set_internal(iterator, '[[ArrayIteratorNextIndex]]', 0);
2657 set_internal(iterator, '[[ArrayIterationKind]]', kind);
2658 return iterator;
2659 }
2660
2661 // 22.1.5.2 The %ArrayIteratorPrototype% Object
2662 var $ArrayIteratorPrototype$ = Object.create($IteratorPrototype$);
2663 ArrayIterator.prototype = $ArrayIteratorPrototype$;
2664
2665 // 22.1.5.2.1 %ArrayIteratorPrototype%. next( )
2666 define(
2667 $ArrayIteratorPrototype$, 'next',
2668 function next() {
2669 var o = strict(this);
2670 if (Type(o) !== 'object') throw TypeError();
2671 var a = o['[[IteratedObject]]'],
2672 index = o['[[ArrayIteratorNextIndex]]'],
2673 itemKind = o['[[ArrayIterationKind]]'],
2674 lenValue = a.length,
2675 len = ToUint32(lenValue),
2676 elementKey,
2677 elementValue;
2678 if (itemKind.indexOf('sparse') !== -1) {
2679 var found = false;
2680 while (!found && index < len) {
2681 elementKey = String(index);
2682 found = HasProperty(a, elementKey);
2683 if (!found) {
2684 index += 1;
2685 }
2686 }
2687 }
2688 if (index >= len) {
2689 set_internal(o, '[[ArrayIteratorNextIndex]]', Infinity);
2690 return CreateIterResultObject(undefined, true);
2691 }
2692 elementKey = index;
2693 set_internal(o, '[[ArrayIteratorNextIndex]]', index + 1);
2694 if (itemKind.indexOf('value') !== -1)
2695 elementValue = a[elementKey];
2696 if (itemKind.indexOf('key+value') !== -1)
2697 return CreateIterResultObject([elementKey, elementValue], false);
2698 if (itemKind.indexOf('key') !== -1)
2699 return CreateIterResultObject(elementKey, false);
2700 if (itemKind === 'value')
2701 return CreateIterResultObject(elementValue, false);
2702 throw Error('Internal error');
2703 });
2704
2705 // 22.1.5.2.2 %ArrayIteratorPrototype% [ @@toStringTag ]
2706 define($ArrayIteratorPrototype$, $$toStringTag, 'Array Iterator');
2707
2708 // 22.1.5.3 Properties of Array Iterator Instances
2709
2710
2711 // ---------------------------------------
2712 // 22.2 TypedArray Objects
2713 // ---------------------------------------
2714
2715 // See typedarray.js for TypedArray polyfill
2716
2717 ['Int8Array', 'Uint8Array', 'Uint8ClampedArray',
2718 'Int16Array', 'Uint16Array',
2719 'Int32Array', 'Uint32Array',
2720 'Float32Array', 'Float64Array'].forEach(function ($TypedArrayName$) {
2721 if (!($TypedArrayName$ in global))
2722 return;
2723 var $TypedArray$ = global[$TypedArrayName$];
2724
2725 // 22.2.1 The %TypedArray% Intrinsic Object
2726 // 22.2.1.1 %TypedArray% ( length )
2727 // 22.2.1.2 %TypedArray% ( typedArray )
2728 // 22.2.1.3 %TypedArray% ( object )
2729 // 22.2.1.4 %TypedArray% ( buffer [ , byteOffset [ , length ] ] )
2730 // 22.2.1.5 %TypedArray% ( all other argument combinations )
2731 // 22.2.2 Properties of the %TypedArray% Intrinsic Object
2732
2733 // 22.2.2.1 %TypedArray%.from ( source [ , mapfn [ , thisArg ] ] )
2734 define(
2735 $TypedArray$, 'from',
2736 function from(source) {
2737 var mapfn = arguments[1];
2738 var thisArg = arguments[2];
2739
2740 var c = strict(this);
2741 if (!IsConstructor(c)) throw TypeError();
2742 if (mapfn === undefined) {
2743 var mapping = false;
2744 } else {
2745 if (IsCallable(mapfn)) throw TypeError();
2746 var t = thisArg;
2747 mapping = true;
2748 }
2749 var usingIterator = GetMethod(source, $$iterator);
2750 if (usingIterator !== undefined) {
2751 var iterator = GetIterator(source, usingIterator);
2752 var values = [];
2753 var next = true;
2754 while (next !== false) {
2755 next = IteratorStep(iterator);
2756 if (next !== false) {
2757 var nextValue = IteratorValue(next);
2758 values.push(nextValue);
2759 }
2760 }
2761 var len = values.length;
2762 var newObj = new c(len);
2763 var k = 0;
2764 while (k < len) {
2765 var kValue = values.shift();
2766 if (mapping) {
2767 var mappedValue = mapfn.call(t, kValue);
2768 } else {
2769 mappedValue = kValue;
2770 }
2771 newObj[k] = mappedValue;
2772 ++k;
2773 }
2774 console.assert(values.length === 0);
2775 return newObj;
2776 }
2777 var arrayLike = ToObject(source);
2778 var lenValue = arrayLike.length;
2779 len = ToLength(lenValue);
2780 newObj = new c(len);
2781 k = 0;
2782 while (k < len) {
2783 kValue = arrayLike[k];
2784 if (mapping) {
2785 mappedValue = mapfn.call(t, kValue, k);
2786 } else {
2787 mappedValue = kValue;
2788 }
2789 newObj[k] = mappedValue;
2790 ++k;
2791 }
2792 return newObj;
2793 });
2794
2795 // 22.2.2.2 %TypedArray%.of ( ...items )
2796 define(
2797 $TypedArray$, 'of',
2798 function of() {
2799 var items = arguments;
2800
2801 var len = items.length;
2802 var c = strict(this);
2803 var newObj = new c(len);
2804 var k = 0;
2805 while (k < len) {
2806 newObj[k] = items[k];
2807 ++k;
2808 }
2809 return newObj;
2810 });
2811
2812 // 22.2.2.3 %TypedArray%.prototype
2813 // 22.2.2.4 get %TypedArray% [ @@species ]
2814 // 22.2.3 Properties of the %TypedArrayPrototype% Object
2815 // 22.2.3.1 get %TypedArray%.prototype.buffer
2816 // 22.2.3.2 get %TypedArray%.prototype.byteLength
2817 // 22.2.3.3 get %TypedArray%.prototype.byteOffset
2818 // 22.2.3.4 %TypedArray%.prototype.constructor
2819
2820 // 22.2.3.5 %TypedArray%.prototype.copyWithin (target, start [, end ] )
2821 define($TypedArray$.prototype, 'copyWithin', Array.prototype.copyWithin);
2822
2823 // 22.2.3.6 %TypedArray%.prototype.entries ( )
2824 define($TypedArray$.prototype, 'entries', Array.prototype.entries);
2825
2826 // 22.2.3.7 %TypedArray%.prototype.every ( callbackfn [ , thisArg ] )
2827 define($TypedArray$.prototype, 'every', Array.prototype.every);
2828
2829 // 22.2.3.8 %TypedArray%.prototype.fill (value [ , start [ , end ] ] )
2830 define(
2831 $TypedArray$.prototype, 'fill',
2832 //Array.prototype.fill // Doesn't work in Safari 7
2833 function fill(value/*, start, end*/) {
2834 var start = arguments[1],
2835 end = arguments[2];
2836
2837 var o = ToObject(this);
2838 var lenVal = o.length;
2839 var len = ToLength(lenVal);
2840 len = max(len, 0);
2841 var relativeStart = ToInteger(start);
2842 var k;
2843 if (relativeStart < 0) k = max((len + relativeStart), 0);
2844 else k = min(relativeStart, len);
2845 var relativeEnd;
2846 if (end === undefined) relativeEnd = len;
2847 else relativeEnd = ToInteger(end);
2848 var final;
2849 if (relativeEnd < 0) final = max((len + relativeEnd), 0);
2850 else final = min(relativeEnd, len);
2851 while (k < final) {
2852 var pk = String(k);
2853 o[pk] = value;
2854 k += 1;
2855 }
2856 return o;
2857 });
2858
2859 // 22.2.3.9 %TypedArray%.prototype.filter ( callbackfn [ , thisArg ] )
2860 define(
2861 $TypedArray$.prototype, 'filter',
2862 function filter(callbackfn) {
2863 var thisArg = arguments[1];
2864
2865 var o = ToObject(this);
2866 var lenVal = o.length;
2867 var len = ToLength(lenVal);
2868 if (!IsCallable(callbackfn)) throw TypeError();
2869 var t = thisArg;
2870 var c = o.constructor;
2871 var kept = [];
2872 var k = 0;
2873 var captured = 0;
2874 while (k < len) {
2875 var kValue = o[k];
2876 var selected = callbackfn.call(t, kValue, k, o);
2877 if (selected) {
2878 kept.push(kValue);
2879 ++captured;
2880 }
2881 ++k;
2882 }
2883 var a = new c(captured);
2884 var n = 0;
2885 for (var i = 0; i < kept.length; ++i) {
2886 var e = kept[i];
2887 a[n] = e;
2888 ++n;
2889 }
2890 return a;
2891 });
2892
2893 // 22.2.3.10 %TypedArray%.prototype.find (predicate [ , thisArg ] )
2894 define($TypedArray$.prototype, 'find', Array.prototype.find);
2895
2896 // 22.2.3.11 %TypedArray%.prototype.findIndex ( predicate [ , thisArg ] )
2897 define($TypedArray$.prototype, 'findIndex', Array.prototype.findIndex);
2898
2899 // 22.2.3.12 %TypedArray%.prototype.forEach ( callbackfn [ , thisArg ] )
2900 define($TypedArray$.prototype, 'forEach', Array.prototype.forEach);
2901
2902 // 22.2.3.13 %TypedArray%.prototype.indexOf (searchElement [ , fromIndex ] )
2903 define($TypedArray$.prototype, 'indexOf', Array.prototype.indexOf);
2904
2905 // 22.2.3.14 %TypedArray%.prototype.join ( separator )
2906 define($TypedArray$.prototype, 'join', Array.prototype.join);
2907
2908 // 22.2.3.15 %TypedArray%.prototype.keys ( )
2909 define($TypedArray$.prototype, 'keys', Array.prototype.keys);
2910
2911 // 22.2.3.16 %TypedArray%.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
2912 define($TypedArray$.prototype, 'lastIndexOf', Array.prototype.lastIndexOf);
2913
2914 // 22.2.3.17 get %TypedArray%.prototype.length
2915
2916 // 22.2.3.18 %TypedArray%.prototype.map ( callbackfn [ , thisArg ] )
2917 define(
2918 $TypedArray$.prototype, 'map',
2919 function map(callbackfn) {
2920 var thisArg = arguments[1];
2921
2922 var o = ToObject(this);
2923 var lenValue = o.length;
2924 var len = ToLength(lenValue);
2925 if (!IsCallable(callbackfn)) throw TypeError();
2926 var t = thisArg;
2927 var a = undefined;
2928 var c = o.constructor;
2929 if (IsConstructor(c))
2930 a = new c(len);
2931 if (a === undefined)
2932 a = new Array(len);
2933 var k = 0;
2934 while (k < len) {
2935 var kPresent = HasProperty(o, k);
2936 if (kPresent) {
2937 var kValue = o[k];
2938 var mappedValue = callbackfn.call(t, kValue, k, o);
2939 a[k] = mappedValue;
2940 }
2941 ++k;
2942 }
2943 return a;
2944 });
2945
2946 // 22.2.3.19 %TypedArray%.prototype.reduce ( callbackfn [, initialValue] )
2947 define($TypedArray$.prototype, 'reduce', Array.prototype.reduce);
2948
2949 // 22.2.3.20 %TypedArray%.prototype.reduceRight ( callbackfn [, initialValue] )
2950 define($TypedArray$.prototype, 'reduceRight', Array.prototype.reduceRight);
2951
2952 // 22.2.3.21 %TypedArray%.prototype.reverse ( )
2953 define($TypedArray$.prototype, 'reverse', Array.prototype.reverse);
2954
2955 // 22.2.3.22 %TypedArray%.prototype.set ( overloaded [ , offset ])
2956 // 22.2.3.22.1 %TypedArray%.prototype.set (array [ , offset ] )
2957 // 22.2.3.22.2 %TypedArray%.prototype.set(typedArray [, offset ] )
2958
2959 // 22.2.3.23 %TypedArray%.prototype.slice ( start, end )
2960 define(
2961 $TypedArray$.prototype, 'slice',
2962 function slice(start, end) {
2963 var o = ToObject(this);
2964 var lenVal = o.length;
2965 var len = ToLength(lenVal);
2966 var relativeStart = ToInteger(start);
2967 var k = (relativeStart < 0) ? max(len + relativeStart, 0) : min(relativeStart, len);
2968 var relativeEnd = (end === undefined) ? len : ToInteger(end);
2969 var final = (relativeEnd < 0) ? max(len + relativeEnd, 0) : min(relativeEnd, len);
2970 var count = final - k;
2971 var c = o.constructor;
2972 if (IsConstructor(c)) {
2973 var a = new c(count);
2974 } else {
2975 throw TypeError();
2976 }
2977 var n = 0;
2978 while (k < final) {
2979 var kValue = o[k];
2980 a[n] = kValue;
2981 ++k;
2982 ++n;
2983 }
2984 return a;
2985 });
2986
2987 // 22.2.3.24 %TypedArray%.prototype.some ( callbackfn [ , thisArg ] )
2988 define($TypedArray$.prototype, 'some', Array.prototype.some);
2989
2990 // 22.2.3.25 %TypedArray%.prototype.sort ( comparefn )
2991 define(
2992 $TypedArray$.prototype, 'sort',
2993 function sort() {
2994 var comparefn = arguments[0];
2995
2996 function sortCompare(x, y) {
2997 console.assert(Type(x) === 'number' && Type(y) === 'number');
2998 if (x !== x && y !== y) return +0;
2999 if (x !== x) return 1;
3000 if (y !== y) return -1;
3001 if (comparefn !== undefined) {
3002 return comparefn(x, y);
3003 }
3004 if (x < y) return -1;
3005 if (x > y) return 1;
3006 return +0;
3007 }
3008 return Array.prototype.sort.call(this, sortCompare);
3009 });
3010
3011 // 22.2.3.26 %TypedArray%.prototype.subarray( [ begin [ , end ] ] )
3012 // 22.2.3.27 %TypedArray%.prototype.toLocaleString ([ reserved1 [ , reserved2 ] ])
3013 // 22.2.3.28 %TypedArray%.prototype.toString ( )
3014
3015 // 22.2.3.29 %TypedArray%.prototype.values ( )
3016 define($TypedArray$.prototype, 'values', Array.prototype.values);
3017
3018 // 22.2.3.30 %TypedArray%.prototype [ @@iterator ] ( )
3019 define(
3020 $TypedArray$.prototype, $$iterator,
3021 $TypedArray$.prototype.values
3022 );
3023
3024 // 22.2.3.31 get %TypedArray%.prototype [ @@toStringTag ]
3025 define($TypedArray$.prototype, $$toStringTag, $TypedArrayName$);
3026
3027 // 22.2.4 The TypedArray Constructors
3028 // 22.2.4.1TypedArray( ... argumentsList)
3029 // 22.2.5 Properties of the TypedArray Constructors
3030 // 22.2.5.1 TypedArray.BYTES_PER_ELEMENT
3031 // 22.2.5.2 TypedArray.prototype
3032 // 22.2.6 Properties of TypedArray Prototype Objects
3033 // 22.2.6.1 TypedArray.prototype.BYTES_PER_ELEMENT
3034 // 22.2.6.2 TypedArray.prototype.constructor
3035 // 22.2.7 Properties of TypedArray Instances
3036 });
3037
3038 // ---------------------------------------
3039 // 23 Keyed Collection
3040 // ---------------------------------------
3041
3042 // ---------------------------------------
3043 // 23.1 Map Objects
3044 // ---------------------------------------
3045
3046 (function() {
3047 // 23.1.1 The Map Constructor
3048
3049 // 23.1.1.1 Map ( [ iterable ] )
3050 /** @constructor */
3051 function Map(/*iterable*/) {
3052 var map = strict(this);
3053 var iterable = arguments[0];
3054
3055 if (Type(map) !== 'object') throw TypeError();
3056 if ('[[MapData]]' in map) throw TypeError();
3057
3058 if (iterable !== undefined) {
3059 var adder = map['set'];
3060 if (!IsCallable(adder)) throw TypeError();
3061 var iter = GetIterator(ToObject(iterable));
3062 }
3063 set_internal(map, '[[MapData]]', { keys: [], values: [] });
3064 if (iter === undefined) return map;
3065 while (true) {
3066 var next = IteratorStep(iter);
3067 if (next === false)
3068 return map;
3069 var nextItem = IteratorValue(next);
3070 if (Type(nextItem) !== 'object') throw TypeError();
3071 var k = nextItem[0];
3072 var v = nextItem[1];
3073 adder.call(map, k, v);
3074 }
3075
3076 return map;
3077 }
3078
3079 if (!('Map' in global) || OVERRIDE_NATIVE_FOR_TESTING ||
3080 (function() { try { new global.Map([]); return false; } catch (_) { return true; } }()) ||
3081 (function() { try { return !new global.Map().entries().next; } catch (_) { return true; } }()) ||
3082 (new global.Map([['a', 1]]).size !== 1))
3083 global.Map = Map;
3084
3085
3086 function MapDataIndexOf(mapData, key) {
3087 var i;
3088 if (key === key) return mapData.keys.indexOf(key);
3089 // Slow case for NaN
3090 for (i = 0; i < mapData.keys.length; i += 1)
3091 if (SameValueZero(mapData.keys[i], key)) return i;
3092 return -1;
3093 }
3094
3095 // 23.1.1.2 new Map ( ... argumentsList )
3096 // 23.1.2 Properties of the Map Constructor
3097 // 23.1.2.1 Map.prototype
3098 var $MapPrototype$ = {};
3099 Map.prototype = $MapPrototype$;
3100
3101 // 23.1.2.2 get Map [ @@species ]
3102
3103 // 23.1.3 Properties of the Map Prototype Object
3104 // 23.1.3.1 Map.prototype.clear ()
3105 define(
3106 Map.prototype, 'clear',
3107 function clear() {
3108 var m = strict(this);
3109 if (Type(m) !== 'object') throw TypeError();
3110 if (!('[[MapData]]' in m)) throw TypeError();
3111 if (m['[[MapData]]'] === undefined) throw TypeError();
3112 var entries = m['[[MapData]]'];
3113 entries.keys.length = 0;
3114 entries.values.length = 0;
3115 return undefined;
3116 });
3117
3118 // 23.1.3.2 Map.prototype.constructor
3119
3120 // 23.1.3.3 Map.prototype.delete ( key )
3121 define(
3122 Map.prototype, 'delete',
3123 function delete_(key) {
3124 var m = strict(this);
3125 if (Type(m) !== 'object') throw TypeError();
3126 if (!('[[MapData]]' in m)) throw TypeError();
3127 if (m['[[MapData]]'] === undefined) throw TypeError();
3128 var entries = m['[[MapData]]'];
3129 var i = MapDataIndexOf(entries, key);
3130 if (i < 0) return false;
3131 entries.keys[i] = empty;
3132 entries.values[i] = empty;
3133 return true;
3134 });
3135
3136 // 23.1.3.4 Map.prototype.entries ( )
3137 define(
3138 Map.prototype, 'entries',
3139 function entries() {
3140 var m = strict(this);
3141 if (Type(m) !== 'object') throw TypeError();
3142 return CreateMapIterator(m, 'key+value');
3143 });
3144
3145 // 23.1.3.5 Map.prototype.forEach ( callbackfn [ , thisArg ] )
3146 define(
3147 Map.prototype, 'forEach',
3148 function forEach(callbackfn /*, thisArg*/) {
3149 var thisArg = arguments[1];
3150
3151 var m = strict(this);
3152 if (Type(m) !== 'object') throw TypeError();
3153 if (!('[[MapData]]' in m)) throw TypeError();
3154 if (m['[[MapData]]'] === undefined) throw TypeError();
3155 var entries = m['[[MapData]]'];
3156
3157 if (!IsCallable(callbackfn)) {
3158 throw TypeError('First argument to forEach is not callable.');
3159 }
3160 for (var i = 0; i < entries.keys.length; ++i) {
3161 if (entries.keys[i] !== empty) {
3162 callbackfn.call(thisArg, entries.values[i], entries.keys[i], m);
3163 }
3164 }
3165 return undefined;
3166 });
3167
3168 // 23.1.3.6 Map.prototype.get ( key )
3169 define(
3170 Map.prototype, 'get',
3171 function get(key) {
3172 var m = strict(this);
3173 if (Type(m) !== 'object') throw TypeError();
3174 if (!('[[MapData]]' in m)) throw TypeError();
3175 if (m['[[MapData]]'] === undefined) throw TypeError();
3176 var entries = m['[[MapData]]'];
3177 var i = MapDataIndexOf(entries, key);
3178 if (i >= 0) return entries.values[i];
3179 return undefined;
3180 });
3181
3182 // 23.1.3.7 Map.prototype.has ( key )
3183 define(
3184 Map.prototype, 'has',
3185 function has(key) {
3186 var m = strict(this);
3187 if (Type(m) !== 'object') throw TypeError();
3188 if (!('[[MapData]]' in m)) throw TypeError();
3189 if (m['[[MapData]]'] === undefined) throw TypeError();
3190 var entries = m['[[MapData]]'];
3191 if (MapDataIndexOf(entries, key) >= 0) return true;
3192 return false;
3193 });
3194
3195 // 23.1.3.8 Map.prototype.keys ( )
3196 define(
3197 Map.prototype, 'keys',
3198 function keys() {
3199 var m = strict(this);
3200 if (Type(m) !== 'object') throw TypeError();
3201 return CreateMapIterator(m, 'key');
3202 });
3203
3204 // 23.1.3.9 Map.prototype.set ( key , value )
3205 define(
3206 Map.prototype, 'set',
3207 function set(key, value) {
3208 var m = strict(this);
3209 if (Type(m) !== 'object') throw TypeError();
3210 if (!('[[MapData]]' in m)) throw TypeError();
3211 if (m['[[MapData]]'] === undefined) throw TypeError();
3212 var entries = m['[[MapData]]'];
3213 var i = MapDataIndexOf(entries, key);
3214 if (i < 0) i = entries.keys.length;
3215 if (SameValue(key, -0)) key = 0;
3216 entries.keys[i] = key;
3217 entries.values[i] = value;
3218 return m;
3219 });
3220
3221 // 23.1.3.10 get Map.prototype.size
3222 Object.defineProperty(
3223 Map.prototype, 'size', {
3224 get: function() {
3225 var m = strict(this);
3226 if (Type(m) !== 'object') throw TypeError();
3227 if (!('[[MapData]]' in m)) throw TypeError();
3228 if (m['[[MapData]]'] === undefined) throw TypeError();
3229 var entries = m['[[MapData]]'];
3230 var count = 0;
3231 for (var i = 0; i < entries.keys.length; ++i) {
3232 if (entries.keys[i] !== empty)
3233 count = count + 1;
3234 }
3235 return count;
3236 }
3237 });
3238
3239 // 23.1.3.11 Map.prototype.values ( )
3240 define(
3241 Map.prototype, 'values',
3242 function values() {
3243 var m = strict(this);
3244 if (Type(m) !== 'object') throw TypeError();
3245 return CreateMapIterator(m, 'value');
3246 });
3247
3248 // 23.1.3.12 Map.prototype [ @@iterator ]( )
3249 define(
3250 Map.prototype, $$iterator,
3251 function() {
3252 var m = strict(this);
3253 if (Type(m) !== 'object') throw TypeError();
3254 return CreateMapIterator(m, 'key+value');
3255 });
3256
3257 // 23.1.3.13 Map.prototype [ @@toStringTag ]
3258 define(global.Map.prototype, $$toStringTag, 'Map');
3259
3260 // 23.1.4 Properties of Map Instances
3261 // 23.1.5 Map Iterator Objects
3262
3263 /** @constructor */
3264 function MapIterator() {}
3265
3266 // 23.1.5.1 CreateMapIterator Abstract Operation
3267 function CreateMapIterator(map, kind) {
3268 if (Type(map) !== 'object') throw TypeError();
3269 if (!('[[MapData]]' in map)) throw TypeError();
3270 if (map['[[MapData]]'] === undefined) throw TypeError();
3271 var iterator = new MapIterator;
3272 set_internal(iterator, '[[Map]]', map);
3273 set_internal(iterator, '[[MapNextIndex]]', 0);
3274 set_internal(iterator, '[[MapIterationKind]]', kind);
3275 return iterator;
3276 }
3277
3278 // 23.1.5.2 The %MapIteratorPrototype% Object
3279 var $MapIteratorPrototype$ = Object.create($IteratorPrototype$);
3280 MapIterator.prototype = $MapIteratorPrototype$;
3281
3282 // 23.1.5.2.1 %MapIteratorPrototype%.next ( )
3283 define(
3284 $MapIteratorPrototype$, 'next',
3285 function next() {
3286 var o = strict(this);
3287 if (Type(o) !== 'object') throw TypeError();
3288 var m = o['[[Map]]'],
3289 index = o['[[MapNextIndex]]'],
3290 itemKind = o['[[MapIterationKind]]'],
3291 entries = m['[[MapData]]'];
3292 while (index < entries.keys.length) {
3293 var e = {key: entries.keys[index], value: entries.values[index]};
3294 index = index += 1;
3295 set_internal(o, '[[MapNextIndex]]', index);
3296 if (e.key !== empty) {
3297 if (itemKind === 'key') {
3298 return CreateIterResultObject(e.key, false);
3299 } else if (itemKind === 'value') {
3300 return CreateIterResultObject(e.value, false);
3301 } else {
3302 return CreateIterResultObject([e.key, e.value], false);
3303 }
3304 }
3305 }
3306 return CreateIterResultObject(undefined, true);
3307 });
3308
3309 // 23.1.5.2.2 %MapIteratorPrototype% [ @@toStringTag ]
3310 define($MapIteratorPrototype$, $$toStringTag, 'Map Iterator');
3311
3312 // 23.1.5.3 Properties of Map Iterator Instances
3313 }());
3314
3315 // ---------------------------------------
3316 // 23.2 Set Objects
3317 // ---------------------------------------
3318
3319 (function() {
3320 // 23.2.1 The Set Constructor
3321 // 23.2.1.1 Set ( [ iterable ] )
3322
3323 /** @constructor */
3324 function Set(/*iterable*/) {
3325 var set = strict(this);
3326 var iterable = arguments[0];
3327
3328 if (Type(set) !== 'object') throw TypeError();
3329 if ('[[SetData]]' in set) throw TypeError();
3330
3331 if (iterable !== undefined) {
3332 var adder = set['add'];
3333 if (!IsCallable(adder)) throw TypeError();
3334 var iter = GetIterator(ToObject(iterable));
3335 }
3336 set_internal(set, '[[SetData]]', []);
3337 if (iter === undefined) return set;
3338 while (true) {
3339 var next = IteratorStep(iter);
3340 if (next === false)
3341 return set;
3342 var nextValue = IteratorValue(next);
3343 adder.call(set, nextValue);
3344 }
3345
3346 return set;
3347 }
3348
3349 if (!('Set' in global) || OVERRIDE_NATIVE_FOR_TESTING ||
3350 (function() { try { return !new global.Set().entries().next; } catch (_) { return true; } }()) ||
3351 (new global.Set([1]).size !== 1))
3352 global.Set = Set;
3353
3354 function SetDataIndexOf(setData, key) {
3355 var i;
3356 if (key === key)
3357 return setData.indexOf(key);
3358 // Slow case for NaN
3359 for (i = 0; i < setData.length; i += 1)
3360 if (SameValueZero(setData[i], key)) return i;
3361 return -1;
3362 }
3363
3364 // 23.2.1.2 new Set ( ...argumentsList )
3365 // 23.2.2 Properties of the Set Constructor
3366
3367 // 23.2.2.1 Set.prototype
3368 var $SetPrototype$ = {};
3369 Set.prototype = $SetPrototype$;
3370
3371 // 23.2.2.2 get Set [ @@species ]
3372 // 23.2.3 Properties of the Set Prototype Object
3373
3374 // 23.2.3.1 Set.prototype.add (value )
3375 define(
3376 Set.prototype, 'add',
3377 function add(value) {
3378 var s = strict(this);
3379 if (Type(s) !== 'object') throw TypeError();
3380 if (!('[[SetData]]' in s)) throw TypeError();
3381 if (s['[[SetData]]'] === undefined) throw TypeError();
3382 if (SameValue(value, -0)) value = 0;
3383 var entries = s['[[SetData]]'];
3384 var i = SetDataIndexOf(entries, value);
3385 if (i < 0) i = s['[[SetData]]'].length;
3386 s['[[SetData]]'][i] = value;
3387
3388 return s;
3389 });
3390
3391 // 23.2.3.2 Set.prototype.clear ()
3392 define(
3393 Set.prototype, 'clear',
3394 function clear() {
3395 var s = strict(this);
3396 if (Type(s) !== 'object') throw TypeError();
3397 if (!('[[SetData]]' in s)) throw TypeError();
3398 if (s['[[SetData]]'] === undefined) throw TypeError();
3399 var entries = s['[[SetData]]'];
3400 entries.length = 0;
3401 return undefined;
3402 });
3403
3404 // 23.2.3.3 Set.prototype.constructor
3405 // 23.2.3.4 Set.prototype.delete ( value )
3406 define(
3407 Set.prototype, 'delete',
3408 function delete_(value) {
3409 var s = strict(this);
3410 if (Type(s) !== 'object') throw TypeError();
3411 if (!('[[SetData]]' in s)) throw TypeError();
3412 if (s['[[SetData]]'] === undefined) throw TypeError();
3413 var entries = s['[[SetData]]'];
3414 var i = SetDataIndexOf(entries, value);
3415 if (i < 0) return false;
3416 entries[i] = empty;
3417 return true;
3418 });
3419
3420 // 23.2.3.5 Set.prototype.entries ( )
3421 define(
3422 Set.prototype, 'entries',
3423 function entries() {
3424 var s = strict(this);
3425 if (Type(s) !== 'object') throw TypeError();
3426 return CreateSetIterator(s, 'key+value');
3427 });
3428
3429 // 23.2.3.6 Set.prototype.forEach ( callbackfn [ , thisArg ] )
3430 define(
3431 Set.prototype, 'forEach',
3432 function forEach(callbackfn/*, thisArg*/) {
3433 var thisArg = arguments[1];
3434
3435 var s = strict(this);
3436 if (Type(s) !== 'object') throw TypeError();
3437 if (!('[[SetData]]' in s)) throw TypeError();
3438 if (s['[[SetData]]'] === undefined) throw TypeError();
3439 var entries = s['[[SetData]]'];
3440
3441 if (!IsCallable(callbackfn)) {
3442 throw TypeError('First argument to forEach is not callable.');
3443 }
3444 for (var i = 0; i < entries.length; ++i) {
3445 if (entries[i] !== empty) {
3446 callbackfn.call(thisArg, entries[i], entries[i], s);
3447 }
3448 }
3449 });
3450
3451 // 23.2.3.7 Set.prototype.has ( value )
3452 define(
3453 Set.prototype, 'has',
3454 function has(key) {
3455 var s = strict(this);
3456 if (Type(s) !== 'object') throw TypeError();
3457 if (!('[[SetData]]' in s)) throw TypeError();
3458 if (s['[[SetData]]'] === undefined) throw TypeError();
3459 var entries = s['[[SetData]]'];
3460 return SetDataIndexOf(entries, key) !== -1;
3461 });
3462
3463 // 23.2.3.8 Set.prototype.keys ( )
3464 // See Set.prototype.values
3465
3466 // 23.2.3.9 get Set.prototype.size
3467 Object.defineProperty(
3468 Set.prototype, 'size', {
3469 get: function() {
3470 var s = strict(this);
3471 if (Type(s) !== 'object') throw TypeError();
3472 if (!('[[SetData]]' in s)) throw TypeError();
3473 if (s['[[SetData]]'] === undefined) throw TypeError();
3474 var entries = s['[[SetData]]'];
3475 var count = 0;
3476 for (var i = 0; i < entries.length; ++i) {
3477 if (entries[i] !== empty)
3478 count = count + 1;
3479 }
3480 return count;
3481 }
3482 });
3483
3484 // 23.2.3.10 Set.prototype.values ( )
3485 define(
3486 Set.prototype, 'values',
3487 function values() {
3488 var s = strict(this);
3489 if (Type(s) !== 'object') throw TypeError();
3490 return CreateSetIterator(s, 'value');
3491 });
3492 // NOTE: function name is still 'values':
3493 Set.prototype.keys = Set.prototype.values;
3494
3495 // 23.2.3.11 Set.prototype [@@iterator ] ( )
3496 define(
3497 Set.prototype, $$iterator,
3498 function() {
3499 var s = strict(this);
3500 if (Type(s) !== 'object') throw TypeError();
3501 return CreateSetIterator(s);
3502 });
3503
3504 // 23.2.3.12 Set.prototype [ @@toStringTag ]
3505 define(global.Set.prototype, $$toStringTag, 'Set');
3506
3507 // 23.2.4 Properties of Set Instances
3508 // 23.2.5 Set Iterator Objects
3509 /** @constructor */
3510 function SetIterator() {}
3511
3512 // 23.2.5.1 CreateSetIterator Abstract Operation
3513 function CreateSetIterator(set, kind) {
3514 if (Type(set) !== 'object') throw TypeError();
3515 if (!('[[SetData]]' in set)) throw TypeError();
3516 if (set['[[SetData]]'] === undefined) throw TypeError();
3517 var iterator = new SetIterator;
3518 set_internal(iterator, '[[IteratedSet]]', set);
3519 set_internal(iterator, '[[SetNextIndex]]', 0);
3520 set_internal(iterator, '[[SetIterationKind]]', kind);
3521 return iterator;
3522 }
3523
3524 // 23.2.5.2 The %SetIteratorPrototype% Object
3525 var $SetIteratorPrototype$ = Object.create($IteratorPrototype$);
3526 SetIterator.prototype = $SetIteratorPrototype$;
3527
3528 // 23.2.5.2.1 %SetIteratorPrototype%.next( )
3529 define(
3530 $SetIteratorPrototype$, 'next',
3531 function next() {
3532 var o = strict(this);
3533 if (Type(o) !== 'object') throw TypeError();
3534 var s = o['[[IteratedSet]]'],
3535 index = o['[[SetNextIndex]]'],
3536 itemKind = o['[[SetIterationKind]]'],
3537 entries = s['[[SetData]]'];
3538 while (index < entries.length) {
3539 var e = entries[index];
3540 index = index += 1;
3541 set_internal(o, '[[SetNextIndex]]', index);
3542 if (e !== empty) {
3543 if (itemKind === 'key+value')
3544 return CreateIterResultObject([e, e], false);
3545 return CreateIterResultObject(e, false);
3546 }
3547 }
3548 return CreateIterResultObject(undefined, true);
3549 });
3550
3551 // 23.2.5.2.2 %SetIteratorPrototype% [ @@toStringTag ]
3552 define($SetIteratorPrototype$, $$toStringTag, 'Set Iterator');
3553
3554 // 23.2.5.3 Properties of Set Iterator Instances
3555
3556 }());
3557
3558 // ---------------------------------------
3559 // 23.3 WeakMap Objects
3560 // ---------------------------------------
3561
3562 (function() {
3563 // 23.3.1 The WeakMap Constructor
3564 // 23.3.1.1 WeakMap ( [ iterable ] )
3565 /** @constructor */
3566 function WeakMap(/*iterable*/) {
3567 var map = strict(this);
3568 var iterable = arguments[0];
3569
3570 if (Type(map) !== 'object') throw TypeError();
3571 if ('[[WeakMapData]]' in map) throw TypeError();
3572
3573 if (iterable !== undefined) {
3574 var adder = map['set'];
3575 if (!IsCallable(adder)) throw TypeError();
3576 var iter = GetIterator(ToObject(iterable));
3577 }
3578 set_internal(map, '[[WeakMapData]]', new EphemeronTable);
3579 if (iter === undefined) return map;
3580 while (true) {
3581 var next = IteratorStep(iter);
3582 if (next === false)
3583 return map;
3584 var nextValue = IteratorValue(next);
3585 if (Type(nextValue) !== 'object') throw TypeError();
3586 var k = nextValue[0];
3587 var v = nextValue[1];
3588 adder.call(map, k, v);
3589 }
3590
3591 return map;
3592 }
3593
3594 if (!('WeakMap' in global) || OVERRIDE_NATIVE_FOR_TESTING)
3595 global.WeakMap = WeakMap;
3596
3597 // 23.3.2 Properties of the WeakMap Constructor
3598 // 23.3.2.1 WeakMap.prototype
3599 var $WeakMapPrototype$ = {};
3600 WeakMap.prototype = $WeakMapPrototype$;
3601
3602
3603
3604 // 23.3.2.2 WeakMap[ @@create ] ( )
3605 // 23.3.3 Properties of the WeakMap Prototype Object
3606
3607 // 23.3.3.1 WeakMap.prototype.constructor
3608
3609 // 23.3.3.2 WeakMap.prototype.delete ( key )
3610 define(
3611 WeakMap.prototype, 'delete',
3612 function delete_(key) {
3613 var M = strict(this);
3614 if (Type(M) !== 'object') throw TypeError();
3615 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3616 if (Type(key) !== 'object') throw TypeError('Expected object');
3617 return M['[[WeakMapData]]'].remove(key);
3618 });
3619
3620 // 23.3.3.3 WeakMap.prototype.get ( key )
3621 define(
3622 WeakMap.prototype, 'get',
3623 function get(key, defaultValue) {
3624 var M = strict(this);
3625 if (Type(M) !== 'object') throw TypeError();
3626 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3627 if (Type(key) !== 'object') throw TypeError('Expected object');
3628 return M['[[WeakMapData]]'].get(key, defaultValue);
3629 });
3630
3631 // 23.3.3.4 WeakMap.prototype.has ( key )
3632 define(
3633 WeakMap.prototype, 'has',
3634 function has(key) {
3635 var M = strict(this);
3636 if (Type(M) !== 'object') throw TypeError();
3637 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3638 if (Type(key) !== 'object') throw TypeError('Expected object');
3639 return M['[[WeakMapData]]'].has(key);
3640 });
3641
3642 // 23.3.3.5 WeakMap.prototype.set ( key , value )
3643 define(
3644 WeakMap.prototype, 'set',
3645 function set(key, value) {
3646 var M = strict(this);
3647 if (Type(M) !== 'object') throw TypeError();
3648 if (M['[[WeakMapData]]'] === undefined) throw TypeError();
3649 if (Type(key) !== 'object') throw TypeError('Expected object');
3650 M['[[WeakMapData]]'].set(key, value);
3651 return M;
3652 });
3653
3654 // 23.3.3.6 WeakMap.prototype [ @@toStringTag ]
3655 define(global.WeakMap.prototype, $$toStringTag, 'WeakMap');
3656
3657 // 23.3.4 Properties of WeakMap Instances
3658
3659 // Polyfills for incomplete native implementations:
3660 (function() {
3661 var wm = new global.WeakMap();
3662 var orig = global.WeakMap.prototype.set;
3663 define(global.WeakMap.prototype, 'set', function set() {
3664 orig.apply(this, arguments);
3665 return this;
3666 }, wm.set({}, 0) !== wm);
3667 }());
3668 }());
3669
3670 // ---------------------------------------
3671 // 23.4 WeakSet Objects
3672 // ---------------------------------------
3673
3674 (function() {
3675 // 23.4.1 The WeakSet Constructor
3676 // 23.4.1.1 WeakSet ( [ iterable ] )
3677 /** @constructor */
3678 function WeakSet(/*iterable*/) {
3679 var set = strict(this);
3680 var iterable = arguments[0];
3681
3682 if (Type(set) !== 'object') throw TypeError();
3683 if ('[[WeakSetData]]' in set) throw TypeError();
3684
3685 if (iterable !== undefined) {
3686 var adder = set['add'];
3687 if (!IsCallable(adder)) throw TypeError();
3688 var iter = GetIterator(ToObject(iterable));
3689 }
3690 set_internal(set, '[[WeakSetData]]', new EphemeronTable);
3691 if (iter === undefined) return set;
3692 while (true) {
3693 var next = IteratorStep(iter);
3694 if (next === false)
3695 return set;
3696 var nextValue = IteratorValue(next);
3697 adder.call(set, nextValue);
3698 }
3699
3700 return set;
3701 }
3702
3703 if (!('WeakSet' in global) || OVERRIDE_NATIVE_FOR_TESTING)
3704 global.WeakSet = WeakSet;
3705
3706 // 23.4.2 Properties of the WeakSet Constructor
3707 // 23.4.2.1 WeakSet.prototype
3708 var $WeakSetPrototype$ = {};
3709 WeakSet.prototype = $WeakSetPrototype$;
3710
3711 // 23.4.3 Properties of the WeakSet Prototype Object
3712 // 23.4.3.1 WeakSet.prototype.add (value )
3713 define(
3714 WeakSet.prototype, 'add',
3715 function add(value) {
3716 var S = strict(this);
3717 if (Type(S) !== 'object') throw TypeError();
3718 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3719 if (Type(value) !== 'object') throw TypeError('Expected object');
3720 S['[[WeakSetData]]'].set(value, true);
3721 return S;
3722 });
3723
3724 // 23.4.3.2 WeakSet.prototype.constructor
3725 // 23.4.3.3 WeakSet.prototype.delete ( value )
3726 define(
3727 WeakSet.prototype, 'delete',
3728 function delete_(value) {
3729 var S = strict(this);
3730 if (Type(S) !== 'object') throw TypeError();
3731 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3732 if (Type(value) !== 'object') throw TypeError('Expected object');
3733 return S['[[WeakSetData]]'].remove(value);
3734 });
3735
3736 // 23.4.3.4 WeakSet.prototype.has ( value )
3737 define(
3738 WeakSet.prototype, 'has',
3739 function has(key) {
3740 var S = strict(this);
3741 if (Type(S) !== 'object') throw TypeError();
3742 if (S['[[WeakSetData]]'] === undefined) throw TypeError();
3743 if (Type(key) !== 'object') throw TypeError('Expected object');
3744 return S['[[WeakSetData]]'].has(key);
3745 });
3746
3747 // 23.4.3.5 WeakSet.prototype [ @@toStringTag ]
3748 define(global.WeakSet.prototype, $$toStringTag, 'WeakSet');
3749
3750 // 23.4.4 Properties of WeakSet Instances
3751
3752 // Polyfills for incomplete native implementations:
3753 (function() {
3754 var ws = new global.WeakSet();
3755 var orig = global.WeakSet.prototype.add;
3756 define(global.WeakSet.prototype, 'add', function add() {
3757 orig.apply(this, arguments);
3758 return this;
3759 }, ws.add({}) !== ws);
3760 }());
3761 }());
3762
3763 // ---------------------------------------
3764 // 24 Structured Data
3765 // ---------------------------------------
3766
3767 // ---------------------------------------
3768 // 24.1 ArrayBuffer Objects
3769 // ---------------------------------------
3770
3771 // See typedarray.js for TypedArray polyfill
3772
3773 (function() {
3774 if (!('ArrayBuffer' in global))
3775 return;
3776
3777 // 24.1.1 Abstract Operations For ArrayBuffer Objects
3778 // 24.1.1.1 AllocateArrayBuffer( constructor, byteLength )
3779 // 24.1.1.2 IsDetachedBuffer( arrayBuffer )
3780 // 24.1.1.3 DetachArrayBuffer( arrayBuffer )
3781 // 24.1.1.4 CloneArrayBuffer( srcBuffer, srcByteOffset [, cloneConstructor] )
3782 // 24.1.1.5 GetValueFromBuffer ( arrayBuffer, byteIndex, type, isLittleEndian )
3783 // 24.1.1.6 SetValueInBuffer ( arrayBuffer, byteIndex, type, value, isLittleEndian )
3784 // 24.1.2 The ArrayBuffer Constructor
3785 // 24.1.2.1 ArrayBuffer( length )
3786 // 24.1.3 Properties of the ArrayBuffer Constructor
3787
3788 // 24.1.3.1 ArrayBuffer.isView ( arg )
3789 define(
3790 ArrayBuffer, 'isView',
3791 function isView(arg) {
3792 if (Type(arg) !== 'object') return false;
3793 if ('buffer' in arg && arg.buffer instanceof ArrayBuffer) return true;
3794 return false;
3795 });
3796
3797 // 24.1.3.2 ArrayBuffer.prototype
3798 // 24.1.3.3 get ArrayBuffer [ @@species ]
3799 // 24.1.4 Properties of the ArrayBuffer Prototype Object
3800 // 24.1.4.1 get ArrayBuffer.prototype.byteLength
3801 // 24.1.4.2 ArrayBuffer.prototype.constructor
3802 // 24.1.4.3 ArrayBuffer.prototype.slice ( start , end)
3803
3804 // 24.1.4.4 ArrayBuffer.prototype [ @@toStringTag ]
3805 define(ArrayBuffer.prototype, $$toStringTag, 'ArrayBuffer');
3806
3807 // 24.1.5 Properties of the ArrayBuffer Instances
3808 }());
3809
3810 // ---------------------------------------
3811 // 24.2 DataView Objects
3812 // ---------------------------------------
3813
3814 // See typedarray.js for TypedArray polyfill
3815
3816 (function() {
3817 if (!('DataView' in global))
3818 return;
3819
3820 // 24.2.1 Abstract Operations For DataView Objects
3821 // 24.2.1.1 GetViewValue(view, requestIndex, isLittleEndian, type)
3822 // 24.2.1.2 SetViewValue(view, requestIndex, isLittleEndian, type, value)
3823 // 24.2.2 The DataView Constructor
3824 // 24.2.2.1 DataView (buffer [ , byteOffset [ , byteLength ] ] )
3825 // 24.2.3 Properties of the DataView Constructor
3826 // 24.2.3.1 DataView.prototype
3827 // 24.2.4 Properties of the DataView Prototype Object
3828 // 24.2.4.1 get DataView.prototype.buffer
3829 // 24.2.4.2 get DataView.prototype.byteLength
3830 // 24.2.4.3 get DataView.prototype.byteOffset
3831 // 24.2.4.4 DataView.prototype.constructor
3832 // 24.2.4.5 DataView.prototype.getFloat32 ( byteOffset [ , littleEndian ] )
3833 // 24.2.4.6 DataView.prototype.getFloat64 ( byteOffset [ , littleEndian ] )
3834 // 24.2.4.7 DataView.prototype.getInt8 ( byteOffset )
3835 // 24.2.4.8 DataView.prototype.getInt16 ( byteOffset [ , littleEndian ] )
3836 // 24.2.4.9 DataView.prototype.getInt32 ( byteOffset [ , littleEndian ] )
3837 // 24.2.4.10 DataView.prototype.getUint8 ( byteOffset )
3838 // 24.2.4.11 DataView.prototype.getUint16 ( byteOffset [ , littleEndian ] )
3839 // 24.2.4.12 DataView.prototype.getUint32 ( byteOffset [ , littleEndian ] )
3840 // 24.2.4.13 DataView.prototype.setFloat32 ( byteOffset, value [ , littleEndian ] )
3841 // 24.2.4.14 DataView.prototype.setFloat64 ( byteOffset, value [ , littleEndian ] )
3842 // 24.2.4.15 DataView.prototype.setInt8 ( byteOffset, value )
3843 // 24.2.4.16 DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] )
3844 // 24.2.4.17 DataView.prototype.setInt32 ( byteOffset, value [ , littleEndian ] )
3845 // 24.2.4.18 DataView.prototype.setUint8 ( byteOffset, value )
3846 // 24.2.4.19 DataView.prototype.setUint16 ( byteOffset, value [ , littleEndian ] )
3847 // 24.2.4.20 DataView.prototype.setUint32 ( byteOffset, value [ , littleEndian ] )
3848
3849 // 24.2.4.21 DataView.prototype[ @@toStringTag ]
3850 define(DataView.prototype, $$toStringTag, 'DataView');
3851
3852 // 24.2.5 Properties of DataView Instances
3853 }());
3854
3855 // ---------------------------------------
3856 // 24.3 The JSON Object
3857 // ---------------------------------------
3858
3859 // 24.3.1 JSON.parse ( text [ , reviver ] )
3860 // 24.3.2 JSON.stringify ( value [ , replacer [ , space ] ] )
3861 // 24.3.3 JSON [ @@toStringTag ]
3862 define(JSON, $$toStringTag, 'JSON');
3863
3864 // ---------------------------------------
3865 // 25.1 Iteration
3866 // ---------------------------------------
3867
3868 // 25.1.1 Common Iteration Interfaces
3869 // 25.1.1.1 The Iterable Interface
3870 // 25.1.1.2 The Iterator Interface
3871 // 25.1.1.3 The IteratorResult Interface
3872
3873 // 25.1.2 The %IteratorPrototype% Object
3874 // Defined earlier, so other prototypes can reference it.
3875 // 25.1.2.1 %IteratorPrototype% [ @@iterator ] ( )
3876 define($IteratorPrototype$, $$iterator, function() {
3877 return this;
3878 });
3879
3880
3881 // ---------------------------------------
3882 // 25.4 Promise Objects
3883 // ---------------------------------------
3884
3885 (function() {
3886 // 25.4 Promise Objects
3887
3888 // 25.4.1 Promise Abstract Operations
3889
3890 // 25.4.1.1 PromiseCapability Records
3891 // 25.4.1.1.1 IfAbruptRejectPromise ( value, capability )
3892
3893 function IfAbruptRejectPromise(value, capability) {
3894 var rejectResult = capability['[[Reject]]'].call(undefined, value);
3895 return capability['[[Promise]]'];
3896 }
3897
3898 // 25.4.1.2 PromiseReaction Records
3899
3900 // 25.4.1.3 CreateResolvingFunctions ( promise )
3901
3902 function CreateResolvingFunctions(promise) {
3903 var alreadyResolved = {'[[value]]': false};
3904 var resolve = PromiseResolveFunction();
3905 set_internal(resolve, '[[Promise]]', promise);
3906 set_internal(resolve, '[[AlreadyResolved]]', alreadyResolved);
3907 var reject = PromiseRejectFunction();
3908 set_internal(reject, '[[Promise]]', promise);
3909 set_internal(reject, '[[AlreadyResolved]]', alreadyResolved);
3910 return { '[[Resolve]]': resolve, '[[Reject]]': reject};
3911 }
3912
3913 // 25.4.1.3.1 Promise Reject Functions
3914
3915 function PromiseRejectFunction() {
3916 var F = function(reason) {
3917 console.assert(Type(F['[[Promise]]']) === 'object');
3918 var promise = F['[[Promise]]'];
3919 var alreadyResolved = F['[[AlreadyResolved]]'];
3920 if (alreadyResolved['[[value]]']) return undefined;
3921 set_internal(alreadyResolved, '[[value]]', true);
3922 return RejectPromise(promise, reason);
3923 };
3924 return F;
3925 }
3926
3927 // 25.4.1.3.2 Promise Resolve Functions
3928
3929 function PromiseResolveFunction() {
3930 var F = function(resolution) {
3931 console.assert(Type(F['[[Promise]]']) === 'object');
3932 var promise = F['[[Promise]]'];
3933 var alreadyResolved = F['[[AlreadyResolved]]'];
3934 if (alreadyResolved['[[value]]']) return undefined;
3935 set_internal(alreadyResolved, '[[value]]', true);
3936
3937 if (SameValue(resolution, promise)) {
3938 var selfResolutionError = TypeError();
3939 return RejectPromise(promise, selfResolutionError);
3940 }
3941 if (Type(resolution) !== 'object')
3942 return FulfillPromise(promise, resolution);
3943 try {
3944 var then = resolution['then'];
3945 } catch(then) {
3946 return RejectPromise(promise, then);
3947 }
3948 if (!IsCallable(then))
3949 return FulfillPromise(promise, resolution);
3950 EnqueueJob('PromiseJobs', PromiseResolveThenableJob, [promise, resolution, then]);
3951 return undefined;
3952 };
3953 return F;
3954 }
3955
3956 // 25.4.1.4 FulfillPromise ( promise, value )
3957
3958 function FulfillPromise(promise, value) {
3959 console.assert(promise['[[PromiseState]]'] === 'pending');
3960 var reactions = promise['[[PromiseFulfillReactions]]'];
3961 set_internal(promise, '[[PromiseResult]]', value);
3962 set_internal(promise, '[[PromiseFulfillReactions]]', undefined);
3963 set_internal(promise, '[[PromiseRejectReactions]]', undefined);
3964 set_internal(promise, '[[PromiseState]]', 'fulfilled');
3965 return TriggerPromiseReactions(reactions, value);
3966 }
3967
3968 // 25.4.1.5 NewPromiseCapability ( C )
3969
3970 function NewPromiseCapability(c) {
3971 // To keep Promise hermetic, this doesn't look much like the spec.
3972 return CreatePromiseCapabilityRecord(undefined, c);
3973 }
3974
3975 // 25.4.1.5.1 CreatePromiseCapabilityRecord ( promise, constructor )
3976
3977 function CreatePromiseCapabilityRecord(promise, constructor) {
3978 // To keep Promise hermetic, this doesn't look much like the spec.
3979 console.assert(IsConstructor(constructor));
3980 var promiseCapability = {};
3981 set_internal(promiseCapability, '[[Promise]]', promise);
3982 set_internal(promiseCapability, '[[Resolve]]', undefined);
3983 set_internal(promiseCapability, '[[Reject]]', undefined);
3984 var executor = GetCapabilitiesExecutor();
3985 set_internal(executor, '[[Capability]]', promiseCapability);
3986
3987 // NOTE: Differs from spec; object is constructed here
3988 var constructorResult = promise = new constructor(executor);
3989 set_internal(promiseCapability, '[[Promise]]', promise);
3990
3991 if (!IsCallable(promiseCapability['[[Resolve]]'])) throw TypeError();
3992 if (!IsCallable(promiseCapability['[[Reject]]'])) throw TypeError();
3993 if (Type(constructorResult) === 'object' && !SameValue(promise, constructorResult)) throw TypeError();
3994 return promiseCapability;
3995 }
3996
3997 // 25.4.1.5.2 GetCapabilitiesExecutor Functions
3998
3999 function GetCapabilitiesExecutor() {
4000 var F = function(resolve, reject) {
4001 console.assert(F['[[Capability]]']);
4002 var promiseCapability = F['[[Capability]]'];
4003 if (promiseCapability['[[Resolve]]'] !== undefined) throw TypeError();
4004 if (promiseCapability['[[Reject]]'] !== undefined) throw TypeError();
4005 set_internal(promiseCapability, '[[Resolve]]', resolve);
4006 set_internal(promiseCapability, '[[Reject]]', reject);
4007 return undefined;
4008 };
4009 return F;
4010 }
4011
4012 // 25.4.1.6 IsPromise ( x )
4013
4014 function IsPromise(x) {
4015 if (Type(x) !== 'object') return false;
4016 if (!('[[PromiseState]]' in x)) return false;
4017 if (x['[[PromiseState]]'] === undefined) return false;
4018 return true;
4019 }
4020
4021 // 25.4.1.7 RejectPromise ( promise, reason )
4022
4023 function RejectPromise(promise, reason) {
4024 console.assert(promise['[[PromiseState]]'] === 'pending');
4025 var reactions = promise['[[PromiseRejectReactions]]'];
4026 set_internal(promise, '[[PromiseResult]]', reason);
4027 set_internal(promise, '[[PromiseFulfillReactions]]', undefined);
4028 set_internal(promise, '[[PromiseRejectReactions]]', undefined);
4029 set_internal(promise, '[[PromiseState]]', 'rejected');
4030 return TriggerPromiseReactions(reactions, reason);
4031 }
4032
4033 // 25.4.1.8 TriggerPromiseReactions ( reactions, argument )
4034
4035 function TriggerPromiseReactions(reactions, argument) {
4036 for (var i = 0, len = reactions.length; i < len; ++i)
4037 EnqueueJob('PromiseJobs', PromiseReactionJob, [reactions[i], argument]);
4038 return undefined;
4039 }
4040
4041 // 25.4.2 Promise Jobs
4042
4043 // 25.4.2.1 PromiseReactionJob ( reaction, argument )
4044
4045 function PromiseReactionJob(reaction, argument) {
4046 var promiseCapability = reaction['[[Capabilities]]'];
4047 var handler = reaction['[[Handler]]'];
4048 var handlerResult, status;
4049 try {
4050 if (handler === 'Identity') handlerResult = argument;
4051 else if (handler === 'Thrower') throw argument;
4052 else handlerResult = handler.call(undefined, argument);
4053 } catch (handlerResult) {
4054 status = promiseCapability['[[Reject]]'].call(undefined, handlerResult);
4055 NextJob(status); return;
4056 }
4057 status = promiseCapability['[[Resolve]]'].call(undefined, handlerResult);
4058 NextJob(status);
4059 }
4060
4061 // 25.4.2.2 PromiseResolveThenableJob ( promiseToResolve, thenable, then)
4062
4063 function PromiseResolveThenableJob(promiseToResolve, thenable, then) {
4064 // SPEC BUG: promise vs. promiseToResolve
4065 var resolvingFunctions = CreateResolvingFunctions(promiseToResolve);
4066 try {
4067 var thenCallResult = then.call(thenable, resolvingFunctions['[[Resolve]]'],
4068 resolvingFunctions['[[Reject]]']);
4069 } catch (thenCallResult) {
4070 var status = resolvingFunctions['[[Reject]]'].call(undefined, thenCallResult);
4071 NextJob(status); return;
4072 }
4073 NextJob(thenCallResult);
4074 }
4075
4076 // 25.4.3 The Promise Constructor
4077
4078 // 25.4.3.1 Promise ( executor )
4079
4080 function Promise(executor) {
4081 var config = { configurable: false, enumerable: false, writable: true, value: undefined };
4082 Object.defineProperty(this, '[[PromiseState]]', config);
4083 Object.defineProperty(this, '[[PromiseConstructor]]', config);
4084 Object.defineProperty(this, '[[PromiseResult]]', config);
4085 Object.defineProperty(this, '[[PromiseFulfillReactions]]', config);
4086 Object.defineProperty(this, '[[PromiseRejectReactions]]', config);
4087
4088 var promise = this;
4089 if (Type(promise) !== 'object') throw new TypeError();
4090 if (!('[[PromiseState]]' in promise)) throw TypeError();
4091 if (promise['[[PromiseState]]'] !== undefined) throw TypeError();
4092 if (!IsCallable(executor)) throw TypeError();
4093
4094 set_internal(promise, '[[PromiseConstructor]]', Promise);
4095
4096 return InitializePromise(promise, executor);
4097 }
4098
4099 // 25.4.3.1.1 InitializePromise ( promise, executor )
4100
4101 function InitializePromise(promise, executor) {
4102 console.assert('[[PromiseState]]' in promise);
4103 console.assert(IsCallable(executor));
4104 set_internal(promise, '[[PromiseState]]', 'pending');
4105 set_internal(promise, '[[PromiseFulfillReactions]]', []);
4106 set_internal(promise, '[[PromiseRejectReactions]]', []);
4107 var resolvingFunctions = CreateResolvingFunctions(promise);
4108 try {
4109 var completion = executor.call(undefined, resolvingFunctions['[[Resolve]]'],
4110 resolvingFunctions['[[Reject]]']);
4111 } catch (completion) {
4112 var status = resolvingFunctions['[[Reject]]'].call(undefined, completion);
4113 }
4114 return promise;
4115 }
4116
4117 // 25.4.4 Properties of the Promise Constructor
4118 // 25.4.4.1 Promise.all ( iterable )
4119
4120 define(Promise, 'all', function all(iterable) {
4121 var c = strict(this);
4122 var promiseCapability = NewPromiseCapability(c);
4123 try {
4124 var iterator = GetIterator(iterable);
4125 } catch (value) {
4126 promiseCapability['[[Reject]]'].call(undefined, value);
4127 return promiseCapability['[[Promise]]'];
4128 }
4129 var values = [];
4130 var remainingElementsCount = { value: 1 };
4131 var index = 0;
4132 while (true) {
4133 try {
4134 var next = IteratorStep(iterator);
4135 } catch (value) {
4136 promiseCapability['[[Reject]]'].call(undefined, value);
4137 return promiseCapability['[[Promise]]'];
4138 }
4139 if (!next) {
4140 remainingElementsCount.value -= 1;
4141 if (remainingElementsCount.value === 0) {
4142 var resolveResult = promiseCapability['[[Resolve]]'].apply(undefined, values);
4143
4144
4145 }
4146 return promiseCapability['[[Promise]]'];
4147 }
4148 try {
4149 var nextValue = IteratorValue(next);
4150 } catch (value) {
4151 promiseCapability['[[Reject]]'].call(undefined, value);
4152 return promiseCapability['[[Promise]]'];
4153 }
4154 try {
4155 var nextPromise = c.resolve(nextValue);
4156 } catch (value) {
4157 promiseCapability['[[Reject]]'].call(undefined, value);
4158 return promiseCapability['[[Promise]]'];
4159 }
4160 var resolveElement = PromiseAllResolveElementFunction();
4161 set_internal(resolveElement, '[[AlreadyCalled]]', { value: false });
4162 set_internal(resolveElement, '[[Index]]', index);
4163 set_internal(resolveElement, '[[Values]]', values);
4164 set_internal(resolveElement, '[[Capabilities]]', promiseCapability);
4165 set_internal(resolveElement, '[[RemainingElements]]', remainingElementsCount);
4166 remainingElementsCount.value += 1;
4167 try {
4168 var result = nextPromise.then(resolveElement, promiseCapability['[[Reject]]']);
4169 } catch (value) {
4170 promiseCapability['[[Reject]]'].call(undefined, value);
4171 return promiseCapability['[[Promise]]'];
4172 }
4173 index += 1;
4174 }
4175 });
4176
4177 // 25.4.4.1.1 Promise.all Resolve Element Functions
4178
4179 function PromiseAllResolveElementFunction() {
4180 var F = function(x) {
4181 var alreadyCalled = F['[[AlreadyCalled]]'];
4182 if (alreadyCalled.value) return undefined;
4183 alreadyCalled.value = true;
4184 var index = F['[[Index]]'];
4185 var values = F['[[Values]]'];
4186 var promiseCapability = F['[[Capabilities]]'];
4187 var remainingElementsCount = F['[[RemainingElements]]'];
4188 try {
4189 values[index] = x;
4190 } catch (result) {
4191 promiseCapability['[[Reject]]'].call(undefined, result);
4192 return promiseCapability['[[Promise]]'];
4193 }
4194 remainingElementsCount.value -= 1;
4195 if (remainingElementsCount.value === 0)
4196 return promiseCapability['[[Resolve]]'].call(undefined, values);
4197 return undefined;
4198 };
4199 return F;
4200 }
4201
4202 // 25.4.4.2 Promise.prototype
4203
4204 Promise.prototype = {};
4205
4206 // 25.4.4.3 Promise.race ( iterable )
4207
4208 define(Promise, 'race', function race(iterable) {
4209 var c = strict(this);
4210 var promiseCapability = NewPromiseCapability(c);
4211 try {
4212 var iterator = GetIterator(iterable);
4213 } catch (value) {
4214 promiseCapability['[[Reject]]'].call(undefined, value);
4215 return promiseCapability['[[Promise]]'];
4216 }
4217 while (true) {
4218 try {
4219 var next = IteratorStep(iterator);
4220 } catch (value) {
4221 promiseCapability['[[Reject]]'].call(undefined, value);
4222 return promiseCapability['[[Promise]]'];
4223 }
4224 if (!next) return promiseCapability['[[Promise]]'];
4225 try {
4226 var nextValue = IteratorValue(next);
4227 } catch (value) {
4228 promiseCapability['[[Reject]]'].call(undefined, value);
4229 return promiseCapability['[[Promise]]'];
4230 }
4231 try {
4232 var nextPromise = c.resolve(nextValue);
4233 } catch (value) {
4234 promiseCapability['[[Reject]]'].call(undefined, value);
4235 return promiseCapability['[[Promise]]'];
4236 }
4237 try {
4238 nextPromise.then(promiseCapability['[[Resolve]]'], promiseCapability['[[Reject]]']);
4239 } catch (value) {
4240 promiseCapability['[[Reject]]'].call(undefined, value);
4241 return promiseCapability['[[Promise]]'];
4242 }
4243 }
4244 });
4245
4246 // 25.4.4.4 Promise.reject ( r )
4247
4248 define(Promise, 'reject', function reject(r) {
4249 var c = strict(this);
4250 var promiseCapability = NewPromiseCapability(c);
4251 var rejectResult = promiseCapability['[[Reject]]'].call(undefined, r);
4252 return promiseCapability['[[Promise]]'];
4253 });
4254
4255 // 25.4.4.5 Promise.resolve ( x )
4256
4257 define(Promise, 'resolve', function resolve(x) {
4258 var c = strict(this);
4259 if (IsPromise(x)) {
4260 var constructor = x['[[PromiseConstructor]]'];
4261 if (SameValue(constructor, c)) return x;
4262 }
4263 var promiseCapability = NewPromiseCapability(c);
4264 var resolveResult = promiseCapability['[[Resolve]]'].call(undefined, x);
4265 return promiseCapability['[[Promise]]'];
4266 });
4267
4268 // 25.4.4.6 Promise [ @@create ] ( )
4269 // 25.4.4.6.1 AllocatePromise ( constructor )
4270 // 25.4.5 Properties of the Promise Prototype Object
4271 // 25.4.5.1 Promise.prototype.catch ( onRejected )
4272
4273 define(Promise.prototype, 'catch', function catch_(onRejected) {
4274 var promise = this;
4275 return promise.then(undefined, onRejected);
4276 });
4277
4278 // 25.4.5.2 Promise.prototype.constructor
4279
4280 Promise.prototype.constructor = Promise;
4281
4282 // 25.4.5.3 Promise.prototype.then ( onFulfilled , onRejected )
4283
4284 define(Promise.prototype, 'then', function then(onFulfilled, onRejected) {
4285 var promise = this;
4286 if (!IsPromise(promise)) throw TypeError();
4287 if (!IsCallable(onFulfilled)) onFulfilled = 'Identity';
4288 if (!IsCallable(onRejected)) onRejected = 'Thrower';
4289 var c = promise.constructor;
4290 var promiseCapability = NewPromiseCapability(c);
4291 var fulfillReaction = { '[[Capabilities]]': promiseCapability,
4292 '[[Handler]]': onFulfilled };
4293 var rejectReaction = { '[[Capabilities]]': promiseCapability,
4294 '[[Handler]]': onRejected };
4295 if (promise['[[PromiseState]]'] === 'pending') {
4296 promise['[[PromiseFulfillReactions]]'].push(fulfillReaction);
4297 promise['[[PromiseRejectReactions]]'].push(rejectReaction);
4298 } else if (promise['[[PromiseState]]'] === 'fulfilled') {
4299 var value = promise['[[PromiseResult]]'];
4300 EnqueueJob('PromiseJobs', PromiseReactionJob, [fulfillReaction, value]);
4301 } else if (promise['[[PromiseState]]'] === 'rejected') {
4302 var reason = promise['[[PromiseResult]]'];
4303 EnqueueJob('PromiseJobs', PromiseReactionJob, [rejectReaction, reason]);
4304 }
4305 return promiseCapability['[[Promise]]'];
4306 });
4307
4308 // 25.4.6 Properties of Promise Instances
4309
4310 if (!('Promise' in global) || OVERRIDE_NATIVE_FOR_TESTING)
4311 global.Promise = Promise;
4312
4313 // Patch early Promise.cast vs. Promise.resolve implementations
4314 if ('cast' in global.Promise) global.Promise.resolve = global.Promise.cast;
4315 }());
4316
4317 // 25.4.5.1 Promise.prototype [ @@toStringTag ]
4318 define(Promise.prototype, $$toStringTag, 'Promise');
4319
4320 // ---------------------------------------
4321 // 26 Reflection
4322 // ---------------------------------------
4323
4324 (function() {
4325 // 26.1 The Reflect Object
4326 if (!('Reflect' in global) || OVERRIDE_NATIVE_FOR_TESTING)
4327 global.Reflect = {};
4328
4329 // 26.1.1 Reflect.apply ( target, thisArgument, argumentsList )
4330 define(
4331 Reflect, 'apply',
4332 function apply(target, thisArgument, argumentsList) {
4333 if (!IsCallable(target)) throw TypeError();
4334 return Function.prototype.apply.call(target, thisArgument, argumentsList);
4335 });
4336
4337 // 26.1.2 Reflect.construct ( target, argumentsList [, newTarget] )
4338 define(
4339 Reflect, 'construct',
4340 function construct(target, argumentsList) {
4341 return __cons(target, argumentsList);
4342 });
4343
4344 // 26.1.3 Reflect.defineProperty ( target, propertyKey, attributes )
4345 define(
4346 Reflect, 'defineProperty',
4347 function defineProperty(target, propertyKey, attributes) {
4348 try {
4349 Object.defineProperty(target, propertyKey, attributes);
4350 return true;
4351 } catch (_) {
4352 return false;
4353 }
4354 });
4355
4356 // 26.1.4 Reflect.deleteProperty ( target, propertyKey )
4357 define(
4358 Reflect, 'deleteProperty',
4359 function deleteProperty(target,name) {
4360 try {
4361 delete target[name];
4362 return !HasOwnProperty(target, name);
4363 } catch (_) {
4364 return false;
4365 }
4366 });
4367
4368 // 26.1.5 Reflect.enumerate ( target )
4369 define(
4370 Reflect, 'enumerate',
4371 function enumerate(target) {
4372 target = ToObject(target);
4373 var iterator = Enumerate(target);
4374 return iterator;
4375 });
4376
4377 // 26.1.6 Reflect.get ( target, propertyKey [ , receiver ])
4378 define(
4379 Reflect, 'get',
4380 function get(target, name, receiver) {
4381 target = ToObject(target);
4382 name = String(name);
4383 receiver = (receiver === undefined) ? target : ToObject(receiver);
4384 var desc = getPropertyDescriptor(target, name);
4385 if (desc && 'get' in desc)
4386 return Function.prototype.call.call(desc['get'], receiver);
4387 return target[name];
4388 });
4389
4390 // 26.1.7 Reflect.getOwnPropertyDescriptor ( target, propertyKey )
4391 define(
4392 Reflect, 'getOwnPropertyDescriptor',
4393 Object.getOwnPropertyDescriptor);
4394
4395 // 26.1.8 Reflect.getPrototypeOf ( target )
4396 define(
4397 Reflect, 'getPrototypeOf',
4398 Object.getPrototypeOf);
4399
4400 // 26.1.9 Reflect.has ( target, propertyKey )
4401 define(
4402 Reflect, 'has',
4403 function has(target,name) {
4404 return String(name) in ToObject(target);
4405 });
4406
4407 // 26.1.10 Reflect.isExtensible (target)
4408 define(
4409 Reflect, 'isExtensible',
4410 Object.isExtensible);
4411
4412 // 26.1.11 Reflect.ownKeys ( target )
4413 define(
4414 Reflect, 'ownKeys',
4415 function ownKeys(target) {
4416 var obj = ToObject(target);
4417 return Object.getOwnPropertyNames(obj);
4418 });
4419
4420 // 26.1.12 Reflect.preventExtensions ( target )
4421 define(
4422 Reflect, 'preventExtensions',
4423 function preventExtensions(target) {
4424 try { Object.preventExtensions(target); return true; } catch (_) { return false; }
4425 });
4426
4427 // 26.1.13 Reflect.set ( target, propertyKey, V [ , receiver ] )
4428 define(
4429 Reflect, 'set',
4430 function set(target, name, value, receiver) {
4431 target = ToObject(target);
4432 name = String(name);
4433 receiver = (receiver === undefined) ? target : ToObject(receiver);
4434 var desc = getPropertyDescriptor(target, name);
4435 try {
4436 if (desc && 'set' in desc)
4437 Function.prototype.call.call(desc['set'], receiver, value);
4438 else
4439 target[name] = value;
4440 return true;
4441 } catch (_) {
4442 return false;
4443 }
4444 });
4445
4446 // 26.1.14 Reflect.setPrototypeOf ( target, proto )
4447 define(
4448 Reflect, 'setPrototypeOf',
4449 function setPrototypeOf(target, proto) {
4450 try {
4451 target.__proto__ = proto;
4452 return Reflect.getPrototypeOf(target) === proto;
4453 } catch(_) {
4454 return false;
4455 }
4456 });
4457
4458 }());
4459
4460 // ---------------------------------------
4461 // 26.2 Proxy Objects
4462 // ---------------------------------------
4463
4464 // Not polyfillable.
4465
4466 }(self));
4467
4468 // This helper is defined outside the main scope so that the use of
4469 // 'eval' does not taint the scope for minifiers.
4470 function __cons(t, a) {
4471 return eval('new t(' + a.map(function(_, i) { return 'a[' + i + ']'; }).join(',') + ')');
4472 }
4473 </script>
4474 <script>(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.foo = f()}})(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);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.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(require,module,exports){
4475 'use strict'
4476
4477 exports.byteLength = byteLength
4478 exports.toByteArray = toByteArray
4479 exports.fromByteArray = fromByteArray
4480
4481 var lookup = []
4482 var revLookup = []
4483 var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
4484
4485 var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
4486 for (var i = 0, len = code.length; i < len; ++i) {
4487 lookup[i] = code[i]
4488 revLookup[code.charCodeAt(i)] = i
4489 }
4490
4491 revLookup['-'.charCodeAt(0)] = 62
4492 revLookup['_'.charCodeAt(0)] = 63
4493
4494 function placeHoldersCount (b64) {
4495 var len = b64.length
4496 if (len % 4 > 0) {
4497 throw new Error('Invalid string. Length must be a multiple of 4')
4498 }
4499
4500 // the number of equal signs (place holders)
4501 // if there are two placeholders, than the two characters before it
4502 // represent one byte
4503 // if there is only one, then the three characters before it represent 2 bytes
4504 // this is just a cheap hack to not do indexOf twice
4505 return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
4506 }
4507
4508 function byteLength (b64) {
4509 // base64 is 4/3 + up to two characters of the original data
4510 return b64.length * 3 / 4 - placeHoldersCount(b64)
4511 }
4512
4513 function toByteArray (b64) {
4514 var i, j, l, tmp, placeHolders, arr
4515 var len = b64.length
4516 placeHolders = placeHoldersCount(b64)
4517
4518 arr = new Arr(len * 3 / 4 - placeHolders)
4519
4520 // if there are placeholders, only get up to the last complete 4 chars
4521 l = placeHolders > 0 ? len - 4 : len
4522
4523 var L = 0
4524
4525 for (i = 0, j = 0; i < l; i += 4, j += 3) {
4526 tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
4527 arr[L++] = (tmp >> 16) & 0xFF
4528 arr[L++] = (tmp >> 8) & 0xFF
4529 arr[L++] = tmp & 0xFF
4530 }
4531
4532 if (placeHolders === 2) {
4533 tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
4534 arr[L++] = tmp & 0xFF
4535 } else if (placeHolders === 1) {
4536 tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
4537 arr[L++] = (tmp >> 8) & 0xFF
4538 arr[L++] = tmp & 0xFF
4539 }
4540
4541 return arr
4542 }
4543
4544 function tripletToBase64 (num) {
4545 return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
4546 }
4547
4548 function encodeChunk (uint8, start, end) {
4549 var tmp
4550 var output = []
4551 for (var i = start; i < end; i += 3) {
4552 tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
4553 output.push(tripletToBase64(tmp))
4554 }
4555 return output.join('')
4556 }
4557
4558 function fromByteArray (uint8) {
4559 var tmp
4560 var len = uint8.length
4561 var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
4562 var output = ''
4563 var parts = []
4564 var maxChunkLength = 16383 // must be multiple of 3
4565
4566 // go through the array every three bytes, we'll deal with trailing stuff later
4567 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
4568 parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
4569 }
4570
4571 // pad the end with zeros, but make sure to not forget the extra bytes
4572 if (extraBytes === 1) {
4573 tmp = uint8[len - 1]
4574 output += lookup[tmp >> 2]
4575 output += lookup[(tmp << 4) & 0x3F]
4576 output += '=='
4577 } else if (extraBytes === 2) {
4578 tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
4579 output += lookup[tmp >> 10]
4580 output += lookup[(tmp >> 4) & 0x3F]
4581 output += lookup[(tmp << 2) & 0x3F]
4582 output += '='
4583 }
4584
4585 parts.push(output)
4586
4587 return parts.join('')
4588 }
4589
4590 },{}],2:[function(require,module,exports){
4591 /*!
4592 * The buffer module from node.js, for the browser.
4593 *
4594 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
4595 * @license MIT
4596 */
4597 /* eslint-disable no-proto */
4598
4599 'use strict'
4600
4601 var base64 = require('base64-js')
4602 var ieee754 = require('ieee754')
4603
4604 exports.Buffer = Buffer
4605 exports.SlowBuffer = SlowBuffer
4606 exports.INSPECT_MAX_BYTES = 50
4607
4608 var K_MAX_LENGTH = 0x7fffffff
4609 exports.kMaxLength = K_MAX_LENGTH
4610
4611 /**
4612 * If `Buffer.TYPED_ARRAY_SUPPORT`:
4613 * === true Use Uint8Array implementation (fastest)
4614 * === false Print warning and recommend using `buffer` v4.x which has an Object
4615 * implementation (most compatible, even IE6)
4616 *
4617 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
4618 * Opera 11.6+, iOS 4.2+.
4619 *
4620 * We report that the browser does not support typed arrays if the are not subclassable
4621 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
4622 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
4623 * for __proto__ and has a buggy typed array implementation.
4624 */
4625 Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
4626
4627 if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
4628 typeof console.error === 'function') {
4629 console.error(
4630 'This browser lacks typed array (Uint8Array) support which is required by ' +
4631 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
4632 )
4633 }
4634
4635 function typedArraySupport () {
4636 // Can typed array instances can be augmented?
4637 try {
4638 var arr = new Uint8Array(1)
4639 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
4640 return arr.foo() === 42
4641 } catch (e) {
4642 return false
4643 }
4644 }
4645
4646 function createBuffer (length) {
4647 if (length > K_MAX_LENGTH) {
4648 throw new RangeError('Invalid typed array length')
4649 }
4650 // Return an augmented `Uint8Array` instance
4651 var buf = new Uint8Array(length)
4652 buf.__proto__ = Buffer.prototype
4653 return buf
4654 }
4655
4656 /**
4657 * The Buffer constructor returns instances of `Uint8Array` that have their
4658 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
4659 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
4660 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
4661 * returns a single octet.
4662 *
4663 * The `Uint8Array` prototype remains unmodified.
4664 */
4665
4666 function Buffer (arg, encodingOrOffset, length) {
4667 // Common case.
4668 if (typeof arg === 'number') {
4669 if (typeof encodingOrOffset === 'string') {
4670 throw new Error(
4671 'If encoding is specified then the first argument must be a string'
4672 )
4673 }
4674 return allocUnsafe(arg)
4675 }
4676 return from(arg, encodingOrOffset, length)
4677 }
4678
4679 // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
4680 if (typeof Symbol !== 'undefined' && Symbol.species &&
4681 Buffer[Symbol.species] === Buffer) {
4682 Object.defineProperty(Buffer, Symbol.species, {
4683 value: null,
4684 configurable: true,
4685 enumerable: false,
4686 writable: false
4687 })
4688 }
4689
4690 Buffer.poolSize = 8192 // not used by this implementation
4691
4692 function from (value, encodingOrOffset, length) {
4693 if (typeof value === 'number') {
4694 throw new TypeError('"value" argument must not be a number')
4695 }
4696
4697 if (value instanceof ArrayBuffer) {
4698 return fromArrayBuffer(value, encodingOrOffset, length)
4699 }
4700
4701 if (typeof value === 'string') {
4702 return fromString(value, encodingOrOffset)
4703 }
4704
4705 return fromObject(value)
4706 }
4707
4708 /**
4709 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
4710 * if value is a number.
4711 * Buffer.from(str[, encoding])
4712 * Buffer.from(array)
4713 * Buffer.from(buffer)
4714 * Buffer.from(arrayBuffer[, byteOffset[, length]])
4715 **/
4716 Buffer.from = function (value, encodingOrOffset, length) {
4717 return from(value, encodingOrOffset, length)
4718 }
4719
4720 // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
4721 // https://github.com/feross/buffer/pull/148
4722 Buffer.prototype.__proto__ = Uint8Array.prototype
4723 Buffer.__proto__ = Uint8Array
4724
4725 function assertSize (size) {
4726 if (typeof size !== 'number') {
4727 throw new TypeError('"size" argument must be a number')
4728 } else if (size < 0) {
4729 throw new RangeError('"size" argument must not be negative')
4730 }
4731 }
4732
4733 function alloc (size, fill, encoding) {
4734 assertSize(size)
4735 if (size <= 0) {
4736 return createBuffer(size)
4737 }
4738 if (fill !== undefined) {
4739 // Only pay attention to encoding if it's a string. This
4740 // prevents accidentally sending in a number that would
4741 // be interpretted as a start offset.
4742 return typeof encoding === 'string'
4743 ? createBuffer(size).fill(fill, encoding)
4744 : createBuffer(size).fill(fill)
4745 }
4746 return createBuffer(size)
4747 }
4748
4749 /**
4750 * Creates a new filled Buffer instance.
4751 * alloc(size[, fill[, encoding]])
4752 **/
4753 Buffer.alloc = function (size, fill, encoding) {
4754 return alloc(size, fill, encoding)
4755 }
4756
4757 function allocUnsafe (size) {
4758 assertSize(size)
4759 return createBuffer(size < 0 ? 0 : checked(size) | 0)
4760 }
4761
4762 /**
4763 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
4764 * */
4765 Buffer.allocUnsafe = function (size) {
4766 return allocUnsafe(size)
4767 }
4768 /**
4769 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
4770 */
4771 Buffer.allocUnsafeSlow = function (size) {
4772 return allocUnsafe(size)
4773 }
4774
4775 function fromString (string, encoding) {
4776 if (typeof encoding !== 'string' || encoding === '') {
4777 encoding = 'utf8'
4778 }
4779
4780 if (!Buffer.isEncoding(encoding)) {
4781 throw new TypeError('"encoding" must be a valid string encoding')
4782 }
4783
4784 var length = byteLength(string, encoding) | 0
4785 var buf = createBuffer(length)
4786
4787 var actual = buf.write(string, encoding)
4788
4789 if (actual !== length) {
4790 // Writing a hex string, for example, that contains invalid characters will
4791 // cause everything after the first invalid character to be ignored. (e.g.
4792 // 'abxxcd' will be treated as 'ab')
4793 buf = buf.slice(0, actual)
4794 }
4795
4796 return buf
4797 }
4798
4799 function fromArrayLike (array) {
4800 var length = array.length < 0 ? 0 : checked(array.length) | 0
4801 var buf = createBuffer(length)
4802 for (var i = 0; i < length; i += 1) {
4803 buf[i] = array[i] & 255
4804 }
4805 return buf
4806 }
4807
4808 function fromArrayBuffer (array, byteOffset, length) {
4809 if (byteOffset < 0 || array.byteLength < byteOffset) {
4810 throw new RangeError('\'offset\' is out of bounds')
4811 }
4812
4813 if (array.byteLength < byteOffset + (length || 0)) {
4814 throw new RangeError('\'length\' is out of bounds')
4815 }
4816
4817 var buf
4818 if (byteOffset === undefined && length === undefined) {
4819 buf = new Uint8Array(array)
4820 } else if (length === undefined) {
4821 buf = new Uint8Array(array, byteOffset)
4822 } else {
4823 buf = new Uint8Array(array, byteOffset, length)
4824 }
4825
4826 // Return an augmented `Uint8Array` instance
4827 buf.__proto__ = Buffer.prototype
4828 return buf
4829 }
4830
4831 function fromObject (obj) {
4832 if (Buffer.isBuffer(obj)) {
4833 var len = checked(obj.length) | 0
4834 var buf = createBuffer(len)
4835
4836 if (buf.length === 0) {
4837 return buf
4838 }
4839
4840 obj.copy(buf, 0, 0, len)
4841 return buf
4842 }
4843
4844 if (obj) {
4845 if (isArrayBufferView(obj) || 'length' in obj) {
4846 if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {
4847 return createBuffer(0)
4848 }
4849 return fromArrayLike(obj)
4850 }
4851
4852 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
4853 return fromArrayLike(obj.data)
4854 }
4855 }
4856
4857 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
4858 }
4859
4860 function checked (length) {
4861 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
4862 // length is NaN (which is otherwise coerced to zero.)
4863 if (length >= K_MAX_LENGTH) {
4864 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
4865 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
4866 }
4867 return length | 0
4868 }
4869
4870 function SlowBuffer (length) {
4871 if (+length != length) { // eslint-disable-line eqeqeq
4872 length = 0
4873 }
4874 return Buffer.alloc(+length)
4875 }
4876
4877 Buffer.isBuffer = function isBuffer (b) {
4878 return b != null && b._isBuffer === true
4879 }
4880
4881 Buffer.compare = function compare (a, b) {
4882 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
4883 throw new TypeError('Arguments must be Buffers')
4884 }
4885
4886 if (a === b) return 0
4887
4888 var x = a.length
4889 var y = b.length
4890
4891 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
4892 if (a[i] !== b[i]) {
4893 x = a[i]
4894 y = b[i]
4895 break
4896 }
4897 }
4898
4899 if (x < y) return -1
4900 if (y < x) return 1
4901 return 0
4902 }
4903
4904 Buffer.isEncoding = function isEncoding (encoding) {
4905 switch (String(encoding).toLowerCase()) {
4906 case 'hex':
4907 case 'utf8':
4908 case 'utf-8':
4909 case 'ascii':
4910 case 'latin1':
4911 case 'binary':
4912 case 'base64':
4913 case 'ucs2':
4914 case 'ucs-2':
4915 case 'utf16le':
4916 case 'utf-16le':
4917 return true
4918 default:
4919 return false
4920 }
4921 }
4922
4923 Buffer.concat = function concat (list, length) {
4924 if (!Array.isArray(list)) {
4925 throw new TypeError('"list" argument must be an Array of Buffers')
4926 }
4927
4928 if (list.length === 0) {
4929 return Buffer.alloc(0)
4930 }
4931
4932 var i
4933 if (length === undefined) {
4934 length = 0
4935 for (i = 0; i < list.length; ++i) {
4936 length += list[i].length
4937 }
4938 }
4939
4940 var buffer = Buffer.allocUnsafe(length)
4941 var pos = 0
4942 for (i = 0; i < list.length; ++i) {
4943 var buf = list[i]
4944 if (!Buffer.isBuffer(buf)) {
4945 throw new TypeError('"list" argument must be an Array of Buffers')
4946 }
4947 buf.copy(buffer, pos)
4948 pos += buf.length
4949 }
4950 return buffer
4951 }
4952
4953 function byteLength (string, encoding) {
4954 if (Buffer.isBuffer(string)) {
4955 return string.length
4956 }
4957 if (isArrayBufferView(string) || string instanceof ArrayBuffer) {
4958 return string.byteLength
4959 }
4960 if (typeof string !== 'string') {
4961 string = '' + string
4962 }
4963
4964 var len = string.length
4965 if (len === 0) return 0
4966
4967 // Use a for loop to avoid recursion
4968 var loweredCase = false
4969 for (;;) {
4970 switch (encoding) {
4971 case 'ascii':
4972 case 'latin1':
4973 case 'binary':
4974 return len
4975 case 'utf8':
4976 case 'utf-8':
4977 case undefined:
4978 return utf8ToBytes(string).length
4979 case 'ucs2':
4980 case 'ucs-2':
4981 case 'utf16le':
4982 case 'utf-16le':
4983 return len * 2
4984 case 'hex':
4985 return len >>> 1
4986 case 'base64':
4987 return base64ToBytes(string).length
4988 default:
4989 if (loweredCase) return utf8ToBytes(string).length // assume utf8
4990 encoding = ('' + encoding).toLowerCase()
4991 loweredCase = true
4992 }
4993 }
4994 }
4995 Buffer.byteLength = byteLength
4996
4997 function slowToString (encoding, start, end) {
4998 var loweredCase = false
4999
5000 // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
5001 // property of a typed array.
5002
5003 // This behaves neither like String nor Uint8Array in that we set start/end
5004 // to their upper/lower bounds if the value passed is out of range.
5005 // undefined is handled specially as per ECMA-262 6th Edition,
5006 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
5007 if (start === undefined || start < 0) {
5008 start = 0
5009 }
5010 // Return early if start > this.length. Done here to prevent potential uint32
5011 // coercion fail below.
5012 if (start > this.length) {
5013 return ''
5014 }
5015
5016 if (end === undefined || end > this.length) {
5017 end = this.length
5018 }
5019
5020 if (end <= 0) {
5021 return ''
5022 }
5023
5024 // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
5025 end >>>= 0
5026 start >>>= 0
5027
5028 if (end <= start) {
5029 return ''
5030 }
5031
5032 if (!encoding) encoding = 'utf8'
5033
5034 while (true) {
5035 switch (encoding) {
5036 case 'hex':
5037 return hexSlice(this, start, end)
5038
5039 case 'utf8':
5040 case 'utf-8':
5041 return utf8Slice(this, start, end)
5042
5043 case 'ascii':
5044 return asciiSlice(this, start, end)
5045
5046 case 'latin1':
5047 case 'binary':
5048 return latin1Slice(this, start, end)
5049
5050 case 'base64':
5051 return base64Slice(this, start, end)
5052
5053 case 'ucs2':
5054 case 'ucs-2':
5055 case 'utf16le':
5056 case 'utf-16le':
5057 return utf16leSlice(this, start, end)
5058
5059 default:
5060 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
5061 encoding = (encoding + '').toLowerCase()
5062 loweredCase = true
5063 }
5064 }
5065 }
5066
5067 // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
5068 // to detect a Buffer instance. It's not possible to use `instanceof Buffer`
5069 // reliably in a browserify context because there could be multiple different
5070 // copies of the 'buffer' package in use. This method works even for Buffer
5071 // instances that were created from another copy of the `buffer` package.
5072 // See: https://github.com/feross/buffer/issues/154
5073 Buffer.prototype._isBuffer = true
5074
5075 function swap (b, n, m) {
5076 var i = b[n]
5077 b[n] = b[m]
5078 b[m] = i
5079 }
5080
5081 Buffer.prototype.swap16 = function swap16 () {
5082 var len = this.length
5083 if (len % 2 !== 0) {
5084 throw new RangeError('Buffer size must be a multiple of 16-bits')
5085 }
5086 for (var i = 0; i < len; i += 2) {
5087 swap(this, i, i + 1)
5088 }
5089 return this
5090 }
5091
5092 Buffer.prototype.swap32 = function swap32 () {
5093 var len = this.length
5094 if (len % 4 !== 0) {
5095 throw new RangeError('Buffer size must be a multiple of 32-bits')
5096 }
5097 for (var i = 0; i < len; i += 4) {
5098 swap(this, i, i + 3)
5099 swap(this, i + 1, i + 2)
5100 }
5101 return this
5102 }
5103
5104 Buffer.prototype.swap64 = function swap64 () {
5105 var len = this.length
5106 if (len % 8 !== 0) {
5107 throw new RangeError('Buffer size must be a multiple of 64-bits')
5108 }
5109 for (var i = 0; i < len; i += 8) {
5110 swap(this, i, i + 7)
5111 swap(this, i + 1, i + 6)
5112 swap(this, i + 2, i + 5)
5113 swap(this, i + 3, i + 4)
5114 }
5115 return this
5116 }
5117
5118 Buffer.prototype.toString = function toString () {
5119 var length = this.length
5120 if (length === 0) return ''
5121 if (arguments.length === 0) return utf8Slice(this, 0, length)
5122 return slowToString.apply(this, arguments)
5123 }
5124
5125 Buffer.prototype.equals = function equals (b) {
5126 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
5127 if (this === b) return true
5128 return Buffer.compare(this, b) === 0
5129 }
5130
5131 Buffer.prototype.inspect = function inspect () {
5132 var str = ''
5133 var max = exports.INSPECT_MAX_BYTES
5134 if (this.length > 0) {
5135 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
5136 if (this.length > max) str += ' ... '
5137 }
5138 return '<Buffer ' + str + '>'
5139 }
5140
5141 Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
5142 if (!Buffer.isBuffer(target)) {
5143 throw new TypeError('Argument must be a Buffer')
5144 }
5145
5146 if (start === undefined) {
5147 start = 0
5148 }
5149 if (end === undefined) {
5150 end = target ? target.length : 0
5151 }
5152 if (thisStart === undefined) {
5153 thisStart = 0
5154 }
5155 if (thisEnd === undefined) {
5156 thisEnd = this.length
5157 }
5158
5159 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
5160 throw new RangeError('out of range index')
5161 }
5162
5163 if (thisStart >= thisEnd && start >= end) {
5164 return 0
5165 }
5166 if (thisStart >= thisEnd) {
5167 return -1
5168 }
5169 if (start >= end) {
5170 return 1
5171 }
5172
5173 start >>>= 0
5174 end >>>= 0
5175 thisStart >>>= 0
5176 thisEnd >>>= 0
5177
5178 if (this === target) return 0
5179
5180 var x = thisEnd - thisStart
5181 var y = end - start
5182 var len = Math.min(x, y)
5183
5184 var thisCopy = this.slice(thisStart, thisEnd)
5185 var targetCopy = target.slice(start, end)
5186
5187 for (var i = 0; i < len; ++i) {
5188 if (thisCopy[i] !== targetCopy[i]) {
5189 x = thisCopy[i]
5190 y = targetCopy[i]
5191 break
5192 }
5193 }
5194
5195 if (x < y) return -1
5196 if (y < x) return 1
5197 return 0
5198 }
5199
5200 // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
5201 // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
5202 //
5203 // Arguments:
5204 // - buffer - a Buffer to search
5205 // - val - a string, Buffer, or number
5206 // - byteOffset - an index into `buffer`; will be clamped to an int32
5207 // - encoding - an optional encoding, relevant is val is a string
5208 // - dir - true for indexOf, false for lastIndexOf
5209 function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
5210 // Empty buffer means no match
5211 if (buffer.length === 0) return -1
5212
5213 // Normalize byteOffset
5214 if (typeof byteOffset === 'string') {
5215 encoding = byteOffset
5216 byteOffset = 0
5217 } else if (byteOffset > 0x7fffffff) {
5218 byteOffset = 0x7fffffff
5219 } else if (byteOffset < -0x80000000) {
5220 byteOffset = -0x80000000
5221 }
5222 byteOffset = +byteOffset // Coerce to Number.
5223 if (numberIsNaN(byteOffset)) {
5224 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
5225 byteOffset = dir ? 0 : (buffer.length - 1)
5226 }
5227
5228 // Normalize byteOffset: negative offsets start from the end of the buffer
5229 if (byteOffset < 0) byteOffset = buffer.length + byteOffset
5230 if (byteOffset >= buffer.length) {
5231 if (dir) return -1
5232 else byteOffset = buffer.length - 1
5233 } else if (byteOffset < 0) {
5234 if (dir) byteOffset = 0
5235 else return -1
5236 }
5237
5238 // Normalize val
5239 if (typeof val === 'string') {
5240 val = Buffer.from(val, encoding)
5241 }
5242
5243 // Finally, search either indexOf (if dir is true) or lastIndexOf
5244 if (Buffer.isBuffer(val)) {
5245 // Special case: looking for empty string/buffer always fails
5246 if (val.length === 0) {
5247 return -1
5248 }
5249 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
5250 } else if (typeof val === 'number') {
5251 val = val & 0xFF // Search for a byte value [0-255]
5252 if (typeof Uint8Array.prototype.indexOf === 'function') {
5253 if (dir) {
5254 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
5255 } else {
5256 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
5257 }
5258 }
5259 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
5260 }
5261
5262 throw new TypeError('val must be string, number or Buffer')
5263 }
5264
5265 function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
5266 var indexSize = 1
5267 var arrLength = arr.length
5268 var valLength = val.length
5269
5270 if (encoding !== undefined) {
5271 encoding = String(encoding).toLowerCase()
5272 if (encoding === 'ucs2' || encoding === 'ucs-2' ||
5273 encoding === 'utf16le' || encoding === 'utf-16le') {
5274 if (arr.length < 2 || val.length < 2) {
5275 return -1
5276 }
5277 indexSize = 2
5278 arrLength /= 2
5279 valLength /= 2
5280 byteOffset /= 2
5281 }
5282 }
5283
5284 function read (buf, i) {
5285 if (indexSize === 1) {
5286 return buf[i]
5287 } else {
5288 return buf.readUInt16BE(i * indexSize)
5289 }
5290 }
5291
5292 var i
5293 if (dir) {
5294 var foundIndex = -1
5295 for (i = byteOffset; i < arrLength; i++) {
5296 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
5297 if (foundIndex === -1) foundIndex = i
5298 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
5299 } else {
5300 if (foundIndex !== -1) i -= i - foundIndex
5301 foundIndex = -1
5302 }
5303 }
5304 } else {
5305 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
5306 for (i = byteOffset; i >= 0; i--) {
5307 var found = true
5308 for (var j = 0; j < valLength; j++) {
5309 if (read(arr, i + j) !== read(val, j)) {
5310 found = false
5311 break
5312 }
5313 }
5314 if (found) return i
5315 }
5316 }
5317
5318 return -1
5319 }
5320
5321 Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
5322 return this.indexOf(val, byteOffset, encoding) !== -1
5323 }
5324
5325 Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
5326 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
5327 }
5328
5329 Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
5330 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
5331 }
5332
5333 function hexWrite (buf, string, offset, length) {
5334 offset = Number(offset) || 0
5335 var remaining = buf.length - offset
5336 if (!length) {
5337 length = remaining
5338 } else {
5339 length = Number(length)
5340 if (length > remaining) {
5341 length = remaining
5342 }
5343 }
5344
5345 // must be an even number of digits
5346 var strLen = string.length
5347 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
5348
5349 if (length > strLen / 2) {
5350 length = strLen / 2
5351 }
5352 for (var i = 0; i < length; ++i) {
5353 var parsed = parseInt(string.substr(i * 2, 2), 16)
5354 if (numberIsNaN(parsed)) return i
5355 buf[offset + i] = parsed
5356 }
5357 return i
5358 }
5359
5360 function utf8Write (buf, string, offset, length) {
5361 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
5362 }
5363
5364 function asciiWrite (buf, string, offset, length) {
5365 return blitBuffer(asciiToBytes(string), buf, offset, length)
5366 }
5367
5368 function latin1Write (buf, string, offset, length) {
5369 return asciiWrite(buf, string, offset, length)
5370 }
5371
5372 function base64Write (buf, string, offset, length) {
5373 return blitBuffer(base64ToBytes(string), buf, offset, length)
5374 }
5375
5376 function ucs2Write (buf, string, offset, length) {
5377 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
5378 }
5379
5380 Buffer.prototype.write = function write (string, offset, length, encoding) {
5381 // Buffer#write(string)
5382 if (offset === undefined) {
5383 encoding = 'utf8'
5384 length = this.length
5385 offset = 0
5386 // Buffer#write(string, encoding)
5387 } else if (length === undefined && typeof offset === 'string') {
5388 encoding = offset
5389 length = this.length
5390 offset = 0
5391 // Buffer#write(string, offset[, length][, encoding])
5392 } else if (isFinite(offset)) {
5393 offset = offset >>> 0
5394 if (isFinite(length)) {
5395 length = length >>> 0
5396 if (encoding === undefined) encoding = 'utf8'
5397 } else {
5398 encoding = length
5399 length = undefined
5400 }
5401 } else {
5402 throw new Error(
5403 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
5404 )
5405 }
5406
5407 var remaining = this.length - offset
5408 if (length === undefined || length > remaining) length = remaining
5409
5410 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
5411 throw new RangeError('Attempt to write outside buffer bounds')
5412 }
5413
5414 if (!encoding) encoding = 'utf8'
5415
5416 var loweredCase = false
5417 for (;;) {
5418 switch (encoding) {
5419 case 'hex':
5420 return hexWrite(this, string, offset, length)
5421
5422 case 'utf8':
5423 case 'utf-8':
5424 return utf8Write(this, string, offset, length)
5425
5426 case 'ascii':
5427 return asciiWrite(this, string, offset, length)
5428
5429 case 'latin1':
5430 case 'binary':
5431 return latin1Write(this, string, offset, length)
5432
5433 case 'base64':
5434 // Warning: maxLength not taken into account in base64Write
5435 return base64Write(this, string, offset, length)
5436
5437 case 'ucs2':
5438 case 'ucs-2':
5439 case 'utf16le':
5440 case 'utf-16le':
5441 return ucs2Write(this, string, offset, length)
5442
5443 default:
5444 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
5445 encoding = ('' + encoding).toLowerCase()
5446 loweredCase = true
5447 }
5448 }
5449 }
5450
5451 Buffer.prototype.toJSON = function toJSON () {
5452 return {
5453 type: 'Buffer',
5454 data: Array.prototype.slice.call(this._arr || this, 0)
5455 }
5456 }
5457
5458 function base64Slice (buf, start, end) {
5459 if (start === 0 && end === buf.length) {
5460 return base64.fromByteArray(buf)
5461 } else {
5462 return base64.fromByteArray(buf.slice(start, end))
5463 }
5464 }
5465
5466 function utf8Slice (buf, start, end) {
5467 end = Math.min(buf.length, end)
5468 var res = []
5469
5470 var i = start
5471 while (i < end) {
5472 var firstByte = buf[i]
5473 var codePoint = null
5474 var bytesPerSequence = (firstByte > 0xEF) ? 4
5475 : (firstByte > 0xDF) ? 3
5476 : (firstByte > 0xBF) ? 2
5477 : 1
5478
5479 if (i + bytesPerSequence <= end) {
5480 var secondByte, thirdByte, fourthByte, tempCodePoint
5481
5482 switch (bytesPerSequence) {
5483 case 1:
5484 if (firstByte < 0x80) {
5485 codePoint = firstByte
5486 }
5487 break
5488 case 2:
5489 secondByte = buf[i + 1]
5490 if ((secondByte & 0xC0) === 0x80) {
5491 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
5492 if (tempCodePoint > 0x7F) {
5493 codePoint = tempCodePoint
5494 }
5495 }
5496 break
5497 case 3:
5498 secondByte = buf[i + 1]
5499 thirdByte = buf[i + 2]
5500 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
5501 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
5502 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
5503 codePoint = tempCodePoint
5504 }
5505 }
5506 break
5507 case 4:
5508 secondByte = buf[i + 1]
5509 thirdByte = buf[i + 2]
5510 fourthByte = buf[i + 3]
5511 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
5512 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
5513 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
5514 codePoint = tempCodePoint
5515 }
5516 }
5517 }
5518 }
5519
5520 if (codePoint === null) {
5521 // we did not generate a valid codePoint so insert a
5522 // replacement char (U+FFFD) and advance only 1 byte
5523 codePoint = 0xFFFD
5524 bytesPerSequence = 1
5525 } else if (codePoint > 0xFFFF) {
5526 // encode to utf16 (surrogate pair dance)
5527 codePoint -= 0x10000
5528 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
5529 codePoint = 0xDC00 | codePoint & 0x3FF
5530 }
5531
5532 res.push(codePoint)
5533 i += bytesPerSequence
5534 }
5535
5536 return decodeCodePointsArray(res)
5537 }
5538
5539 // Based on http://stackoverflow.com/a/22747272/680742, the browser with
5540 // the lowest limit is Chrome, with 0x10000 args.
5541 // We go 1 magnitude less, for safety
5542 var MAX_ARGUMENTS_LENGTH = 0x1000
5543
5544 function decodeCodePointsArray (codePoints) {
5545 var len = codePoints.length
5546 if (len <= MAX_ARGUMENTS_LENGTH) {
5547 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
5548 }
5549
5550 // Decode in chunks to avoid "call stack size exceeded".
5551 var res = ''
5552 var i = 0
5553 while (i < len) {
5554 res += String.fromCharCode.apply(
5555 String,
5556 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
5557 )
5558 }
5559 return res
5560 }
5561
5562 function asciiSlice (buf, start, end) {
5563 var ret = ''
5564 end = Math.min(buf.length, end)
5565
5566 for (var i = start; i < end; ++i) {
5567 ret += String.fromCharCode(buf[i] & 0x7F)
5568 }
5569 return ret
5570 }
5571
5572 function latin1Slice (buf, start, end) {
5573 var ret = ''
5574 end = Math.min(buf.length, end)
5575
5576 for (var i = start; i < end; ++i) {
5577 ret += String.fromCharCode(buf[i])
5578 }
5579 return ret
5580 }
5581
5582 function hexSlice (buf, start, end) {
5583 var len = buf.length
5584
5585 if (!start || start < 0) start = 0
5586 if (!end || end < 0 || end > len) end = len
5587
5588 var out = ''
5589 for (var i = start; i < end; ++i) {
5590 out += toHex(buf[i])
5591 }
5592 return out
5593 }
5594
5595 function utf16leSlice (buf, start, end) {
5596 var bytes = buf.slice(start, end)
5597 var res = ''
5598 for (var i = 0; i < bytes.length; i += 2) {
5599 res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
5600 }
5601 return res
5602 }
5603
5604 Buffer.prototype.slice = function slice (start, end) {
5605 var len = this.length
5606 start = ~~start
5607 end = end === undefined ? len : ~~end
5608
5609 if (start < 0) {
5610 start += len
5611 if (start < 0) start = 0
5612 } else if (start > len) {
5613 start = len
5614 }
5615
5616 if (end < 0) {
5617 end += len
5618 if (end < 0) end = 0
5619 } else if (end > len) {
5620 end = len
5621 }
5622
5623 if (end < start) end = start
5624
5625 var newBuf = this.subarray(start, end)
5626 // Return an augmented `Uint8Array` instance
5627 newBuf.__proto__ = Buffer.prototype
5628 return newBuf
5629 }
5630
5631 /*
5632 * Need to make sure that buffer isn't trying to write out of bounds.
5633 */
5634 function checkOffset (offset, ext, length) {
5635 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
5636 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
5637 }
5638
5639 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
5640 offset = offset >>> 0
5641 byteLength = byteLength >>> 0
5642 if (!noAssert) checkOffset(offset, byteLength, this.length)
5643
5644 var val = this[offset]
5645 var mul = 1
5646 var i = 0
5647 while (++i < byteLength && (mul *= 0x100)) {
5648 val += this[offset + i] * mul
5649 }
5650
5651 return val
5652 }
5653
5654 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
5655 offset = offset >>> 0
5656 byteLength = byteLength >>> 0
5657 if (!noAssert) {
5658 checkOffset(offset, byteLength, this.length)
5659 }
5660
5661 var val = this[offset + --byteLength]
5662 var mul = 1
5663 while (byteLength > 0 && (mul *= 0x100)) {
5664 val += this[offset + --byteLength] * mul
5665 }
5666
5667 return val
5668 }
5669
5670 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
5671 offset = offset >>> 0
5672 if (!noAssert) checkOffset(offset, 1, this.length)
5673 return this[offset]
5674 }
5675
5676 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
5677 offset = offset >>> 0
5678 if (!noAssert) checkOffset(offset, 2, this.length)
5679 return this[offset] | (this[offset + 1] << 8)
5680 }
5681
5682 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
5683 offset = offset >>> 0
5684 if (!noAssert) checkOffset(offset, 2, this.length)
5685 return (this[offset] << 8) | this[offset + 1]
5686 }
5687
5688 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
5689 offset = offset >>> 0
5690 if (!noAssert) checkOffset(offset, 4, this.length)
5691
5692 return ((this[offset]) |
5693 (this[offset + 1] << 8) |
5694 (this[offset + 2] << 16)) +
5695 (this[offset + 3] * 0x1000000)
5696 }
5697
5698 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
5699 offset = offset >>> 0
5700 if (!noAssert) checkOffset(offset, 4, this.length)
5701
5702 return (this[offset] * 0x1000000) +
5703 ((this[offset + 1] << 16) |
5704 (this[offset + 2] << 8) |
5705 this[offset + 3])
5706 }
5707
5708 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
5709 offset = offset >>> 0
5710 byteLength = byteLength >>> 0
5711 if (!noAssert) checkOffset(offset, byteLength, this.length)
5712
5713 var val = this[offset]
5714 var mul = 1
5715 var i = 0
5716 while (++i < byteLength && (mul *= 0x100)) {
5717 val += this[offset + i] * mul
5718 }
5719 mul *= 0x80
5720
5721 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
5722
5723 return val
5724 }
5725
5726 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
5727 offset = offset >>> 0
5728 byteLength = byteLength >>> 0
5729 if (!noAssert) checkOffset(offset, byteLength, this.length)
5730
5731 var i = byteLength
5732 var mul = 1
5733 var val = this[offset + --i]
5734 while (i > 0 && (mul *= 0x100)) {
5735 val += this[offset + --i] * mul
5736 }
5737 mul *= 0x80
5738
5739 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
5740
5741 return val
5742 }
5743
5744 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
5745 offset = offset >>> 0
5746 if (!noAssert) checkOffset(offset, 1, this.length)
5747 if (!(this[offset] & 0x80)) return (this[offset])
5748 return ((0xff - this[offset] + 1) * -1)
5749 }
5750
5751 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
5752 offset = offset >>> 0
5753 if (!noAssert) checkOffset(offset, 2, this.length)
5754 var val = this[offset] | (this[offset + 1] << 8)
5755 return (val & 0x8000) ? val | 0xFFFF0000 : val
5756 }
5757
5758 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
5759 offset = offset >>> 0
5760 if (!noAssert) checkOffset(offset, 2, this.length)
5761 var val = this[offset + 1] | (this[offset] << 8)
5762 return (val & 0x8000) ? val | 0xFFFF0000 : val
5763 }
5764
5765 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
5766 offset = offset >>> 0
5767 if (!noAssert) checkOffset(offset, 4, this.length)
5768
5769 return (this[offset]) |
5770 (this[offset + 1] << 8) |
5771 (this[offset + 2] << 16) |
5772 (this[offset + 3] << 24)
5773 }
5774
5775 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
5776 offset = offset >>> 0
5777 if (!noAssert) checkOffset(offset, 4, this.length)
5778
5779 return (this[offset] << 24) |
5780 (this[offset + 1] << 16) |
5781 (this[offset + 2] << 8) |
5782 (this[offset + 3])
5783 }
5784
5785 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
5786 offset = offset >>> 0
5787 if (!noAssert) checkOffset(offset, 4, this.length)
5788 return ieee754.read(this, offset, true, 23, 4)
5789 }
5790
5791 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
5792 offset = offset >>> 0
5793 if (!noAssert) checkOffset(offset, 4, this.length)
5794 return ieee754.read(this, offset, false, 23, 4)
5795 }
5796
5797 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
5798 offset = offset >>> 0
5799 if (!noAssert) checkOffset(offset, 8, this.length)
5800 return ieee754.read(this, offset, true, 52, 8)
5801 }
5802
5803 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
5804 offset = offset >>> 0
5805 if (!noAssert) checkOffset(offset, 8, this.length)
5806 return ieee754.read(this, offset, false, 52, 8)
5807 }
5808
5809 function checkInt (buf, value, offset, ext, max, min) {
5810 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
5811 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
5812 if (offset + ext > buf.length) throw new RangeError('Index out of range')
5813 }
5814
5815 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
5816 value = +value
5817 offset = offset >>> 0
5818 byteLength = byteLength >>> 0
5819 if (!noAssert) {
5820 var maxBytes = Math.pow(2, 8 * byteLength) - 1
5821 checkInt(this, value, offset, byteLength, maxBytes, 0)
5822 }
5823
5824 var mul = 1
5825 var i = 0
5826 this[offset] = value & 0xFF
5827 while (++i < byteLength && (mul *= 0x100)) {
5828 this[offset + i] = (value / mul) & 0xFF
5829 }
5830
5831 return offset + byteLength
5832 }
5833
5834 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
5835 value = +value
5836 offset = offset >>> 0
5837 byteLength = byteLength >>> 0
5838 if (!noAssert) {
5839 var maxBytes = Math.pow(2, 8 * byteLength) - 1
5840 checkInt(this, value, offset, byteLength, maxBytes, 0)
5841 }
5842
5843 var i = byteLength - 1
5844 var mul = 1
5845 this[offset + i] = value & 0xFF
5846 while (--i >= 0 && (mul *= 0x100)) {
5847 this[offset + i] = (value / mul) & 0xFF
5848 }
5849
5850 return offset + byteLength
5851 }
5852
5853 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
5854 value = +value
5855 offset = offset >>> 0
5856 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
5857 this[offset] = (value & 0xff)
5858 return offset + 1
5859 }
5860
5861 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
5862 value = +value
5863 offset = offset >>> 0
5864 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
5865 this[offset] = (value & 0xff)
5866 this[offset + 1] = (value >>> 8)
5867 return offset + 2
5868 }
5869
5870 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
5871 value = +value
5872 offset = offset >>> 0
5873 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
5874 this[offset] = (value >>> 8)
5875 this[offset + 1] = (value & 0xff)
5876 return offset + 2
5877 }
5878
5879 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
5880 value = +value
5881 offset = offset >>> 0
5882 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
5883 this[offset + 3] = (value >>> 24)
5884 this[offset + 2] = (value >>> 16)
5885 this[offset + 1] = (value >>> 8)
5886 this[offset] = (value & 0xff)
5887 return offset + 4
5888 }
5889
5890 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
5891 value = +value
5892 offset = offset >>> 0
5893 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
5894 this[offset] = (value >>> 24)
5895 this[offset + 1] = (value >>> 16)
5896 this[offset + 2] = (value >>> 8)
5897 this[offset + 3] = (value & 0xff)
5898 return offset + 4
5899 }
5900
5901 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
5902 value = +value
5903 offset = offset >>> 0
5904 if (!noAssert) {
5905 var limit = Math.pow(2, (8 * byteLength) - 1)
5906
5907 checkInt(this, value, offset, byteLength, limit - 1, -limit)
5908 }
5909
5910 var i = 0
5911 var mul = 1
5912 var sub = 0
5913 this[offset] = value & 0xFF
5914 while (++i < byteLength && (mul *= 0x100)) {
5915 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
5916 sub = 1
5917 }
5918 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
5919 }
5920
5921 return offset + byteLength
5922 }
5923
5924 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
5925 value = +value
5926 offset = offset >>> 0
5927 if (!noAssert) {
5928 var limit = Math.pow(2, (8 * byteLength) - 1)
5929
5930 checkInt(this, value, offset, byteLength, limit - 1, -limit)
5931 }
5932
5933 var i = byteLength - 1
5934 var mul = 1
5935 var sub = 0
5936 this[offset + i] = value & 0xFF
5937 while (--i >= 0 && (mul *= 0x100)) {
5938 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
5939 sub = 1
5940 }
5941 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
5942 }
5943
5944 return offset + byteLength
5945 }
5946
5947 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
5948 value = +value
5949 offset = offset >>> 0
5950 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
5951 if (value < 0) value = 0xff + value + 1
5952 this[offset] = (value & 0xff)
5953 return offset + 1
5954 }
5955
5956 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
5957 value = +value
5958 offset = offset >>> 0
5959 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
5960 this[offset] = (value & 0xff)
5961 this[offset + 1] = (value >>> 8)
5962 return offset + 2
5963 }
5964
5965 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
5966 value = +value
5967 offset = offset >>> 0
5968 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
5969 this[offset] = (value >>> 8)
5970 this[offset + 1] = (value & 0xff)
5971 return offset + 2
5972 }
5973
5974 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
5975 value = +value
5976 offset = offset >>> 0
5977 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
5978 this[offset] = (value & 0xff)
5979 this[offset + 1] = (value >>> 8)
5980 this[offset + 2] = (value >>> 16)
5981 this[offset + 3] = (value >>> 24)
5982 return offset + 4
5983 }
5984
5985 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
5986 value = +value
5987 offset = offset >>> 0
5988 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
5989 if (value < 0) value = 0xffffffff + value + 1
5990 this[offset] = (value >>> 24)
5991 this[offset + 1] = (value >>> 16)
5992 this[offset + 2] = (value >>> 8)
5993 this[offset + 3] = (value & 0xff)
5994 return offset + 4
5995 }
5996
5997 function checkIEEE754 (buf, value, offset, ext, max, min) {
5998 if (offset + ext > buf.length) throw new RangeError('Index out of range')
5999 if (offset < 0) throw new RangeError('Index out of range')
6000 }
6001
6002 function writeFloat (buf, value, offset, littleEndian, noAssert) {
6003 value = +value
6004 offset = offset >>> 0
6005 if (!noAssert) {
6006 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
6007 }
6008 ieee754.write(buf, value, offset, littleEndian, 23, 4)
6009 return offset + 4
6010 }
6011
6012 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
6013 return writeFloat(this, value, offset, true, noAssert)
6014 }
6015
6016 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
6017 return writeFloat(this, value, offset, false, noAssert)
6018 }
6019
6020 function writeDouble (buf, value, offset, littleEndian, noAssert) {
6021 value = +value
6022 offset = offset >>> 0
6023 if (!noAssert) {
6024 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
6025 }
6026 ieee754.write(buf, value, offset, littleEndian, 52, 8)
6027 return offset + 8
6028 }
6029
6030 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
6031 return writeDouble(this, value, offset, true, noAssert)
6032 }
6033
6034 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
6035 return writeDouble(this, value, offset, false, noAssert)
6036 }
6037
6038 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
6039 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
6040 if (!start) start = 0
6041 if (!end && end !== 0) end = this.length
6042 if (targetStart >= target.length) targetStart = target.length
6043 if (!targetStart) targetStart = 0
6044 if (end > 0 && end < start) end = start
6045
6046 // Copy 0 bytes; we're done
6047 if (end === start) return 0
6048 if (target.length === 0 || this.length === 0) return 0
6049
6050 // Fatal error conditions
6051 if (targetStart < 0) {
6052 throw new RangeError('targetStart out of bounds')
6053 }
6054 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
6055 if (end < 0) throw new RangeError('sourceEnd out of bounds')
6056
6057 // Are we oob?
6058 if (end > this.length) end = this.length
6059 if (target.length - targetStart < end - start) {
6060 end = target.length - targetStart + start
6061 }
6062
6063 var len = end - start
6064 var i
6065
6066 if (this === target && start < targetStart && targetStart < end) {
6067 // descending copy from end
6068 for (i = len - 1; i >= 0; --i) {
6069 target[i + targetStart] = this[i + start]
6070 }
6071 } else if (len < 1000) {
6072 // ascending copy from start
6073 for (i = 0; i < len; ++i) {
6074 target[i + targetStart] = this[i + start]
6075 }
6076 } else {
6077 Uint8Array.prototype.set.call(
6078 target,
6079 this.subarray(start, start + len),
6080 targetStart
6081 )
6082 }
6083
6084 return len
6085 }
6086
6087 // Usage:
6088 // buffer.fill(number[, offset[, end]])
6089 // buffer.fill(buffer[, offset[, end]])
6090 // buffer.fill(string[, offset[, end]][, encoding])
6091 Buffer.prototype.fill = function fill (val, start, end, encoding) {
6092 // Handle string cases:
6093 if (typeof val === 'string') {
6094 if (typeof start === 'string') {
6095 encoding = start
6096 start = 0
6097 end = this.length
6098 } else if (typeof end === 'string') {
6099 encoding = end
6100 end = this.length
6101 }
6102 if (val.length === 1) {
6103 var code = val.charCodeAt(0)
6104 if (code < 256) {
6105 val = code
6106 }
6107 }
6108 if (encoding !== undefined && typeof encoding !== 'string') {
6109 throw new TypeError('encoding must be a string')
6110 }
6111 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
6112 throw new TypeError('Unknown encoding: ' + encoding)
6113 }
6114 } else if (typeof val === 'number') {
6115 val = val & 255
6116 }
6117
6118 // Invalid ranges are not set to a default, so can range check early.
6119 if (start < 0 || this.length < start || this.length < end) {
6120 throw new RangeError('Out of range index')
6121 }
6122
6123 if (end <= start) {
6124 return this
6125 }
6126
6127 start = start >>> 0
6128 end = end === undefined ? this.length : end >>> 0
6129
6130 if (!val) val = 0
6131
6132 var i
6133 if (typeof val === 'number') {
6134 for (i = start; i < end; ++i) {
6135 this[i] = val
6136 }
6137 } else {
6138 var bytes = Buffer.isBuffer(val)
6139 ? val
6140 : new Buffer(val, encoding)
6141 var len = bytes.length
6142 for (i = 0; i < end - start; ++i) {
6143 this[i + start] = bytes[i % len]
6144 }
6145 }
6146
6147 return this
6148 }
6149
6150 // HELPER FUNCTIONS
6151 // ================
6152
6153 var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
6154
6155 function base64clean (str) {
6156 // Node strips out invalid characters like \n and \t from the string, base64-js does not
6157 str = str.trim().replace(INVALID_BASE64_RE, '')
6158 // Node converts strings with length < 2 to ''
6159 if (str.length < 2) return ''
6160 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
6161 while (str.length % 4 !== 0) {
6162 str = str + '='
6163 }
6164 return str
6165 }
6166
6167 function toHex (n) {
6168 if (n < 16) return '0' + n.toString(16)
6169 return n.toString(16)
6170 }
6171
6172 function utf8ToBytes (string, units) {
6173 units = units || Infinity
6174 var codePoint
6175 var length = string.length
6176 var leadSurrogate = null
6177 var bytes = []
6178
6179 for (var i = 0; i < length; ++i) {
6180 codePoint = string.charCodeAt(i)
6181
6182 // is surrogate component
6183 if (codePoint > 0xD7FF && codePoint < 0xE000) {
6184 // last char was a lead
6185 if (!leadSurrogate) {
6186 // no lead yet
6187 if (codePoint > 0xDBFF) {
6188 // unexpected trail
6189 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6190 continue
6191 } else if (i + 1 === length) {
6192 // unpaired lead
6193 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6194 continue
6195 }
6196
6197 // valid lead
6198 leadSurrogate = codePoint
6199
6200 continue
6201 }
6202
6203 // 2 leads in a row
6204 if (codePoint < 0xDC00) {
6205 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6206 leadSurrogate = codePoint
6207 continue
6208 }
6209
6210 // valid surrogate pair
6211 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
6212 } else if (leadSurrogate) {
6213 // valid bmp char, but last char was a lead
6214 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6215 }
6216
6217 leadSurrogate = null
6218
6219 // encode utf8
6220 if (codePoint < 0x80) {
6221 if ((units -= 1) < 0) break
6222 bytes.push(codePoint)
6223 } else if (codePoint < 0x800) {
6224 if ((units -= 2) < 0) break
6225 bytes.push(
6226 codePoint >> 0x6 | 0xC0,
6227 codePoint & 0x3F | 0x80
6228 )
6229 } else if (codePoint < 0x10000) {
6230 if ((units -= 3) < 0) break
6231 bytes.push(
6232 codePoint >> 0xC | 0xE0,
6233 codePoint >> 0x6 & 0x3F | 0x80,
6234 codePoint & 0x3F | 0x80
6235 )
6236 } else if (codePoint < 0x110000) {
6237 if ((units -= 4) < 0) break
6238 bytes.push(
6239 codePoint >> 0x12 | 0xF0,
6240 codePoint >> 0xC & 0x3F | 0x80,
6241 codePoint >> 0x6 & 0x3F | 0x80,
6242 codePoint & 0x3F | 0x80
6243 )
6244 } else {
6245 throw new Error('Invalid code point')
6246 }
6247 }
6248
6249 return bytes
6250 }
6251
6252 function asciiToBytes (str) {
6253 var byteArray = []
6254 for (var i = 0; i < str.length; ++i) {
6255 // Node's code seems to be doing this and not & 0x7F..
6256 byteArray.push(str.charCodeAt(i) & 0xFF)
6257 }
6258 return byteArray
6259 }
6260
6261 function utf16leToBytes (str, units) {
6262 var c, hi, lo
6263 var byteArray = []
6264 for (var i = 0; i < str.length; ++i) {
6265 if ((units -= 2) < 0) break
6266
6267 c = str.charCodeAt(i)
6268 hi = c >> 8
6269 lo = c % 256
6270 byteArray.push(lo)
6271 byteArray.push(hi)
6272 }
6273
6274 return byteArray
6275 }
6276
6277 function base64ToBytes (str) {
6278 return base64.toByteArray(base64clean(str))
6279 }
6280
6281 function blitBuffer (src, dst, offset, length) {
6282 for (var i = 0; i < length; ++i) {
6283 if ((i + offset >= dst.length) || (i >= src.length)) break
6284 dst[i + offset] = src[i]
6285 }
6286 return i
6287 }
6288
6289 // Node 0.10 supports `ArrayBuffer` but lacks `ArrayBuffer.isView`
6290 function isArrayBufferView (obj) {
6291 return (typeof ArrayBuffer.isView === 'function') && ArrayBuffer.isView(obj)
6292 }
6293
6294 function numberIsNaN (obj) {
6295 return obj !== obj // eslint-disable-line no-self-compare
6296 }
6297
6298 },{"base64-js":1,"ieee754":3}],3:[function(require,module,exports){
6299 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
6300 var e, m
6301 var eLen = nBytes * 8 - mLen - 1
6302 var eMax = (1 << eLen) - 1
6303 var eBias = eMax >> 1
6304 var nBits = -7
6305 var i = isLE ? (nBytes - 1) : 0
6306 var d = isLE ? -1 : 1
6307 var s = buffer[offset + i]
6308
6309 i += d
6310
6311 e = s & ((1 << (-nBits)) - 1)
6312 s >>= (-nBits)
6313 nBits += eLen
6314 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
6315
6316 m = e & ((1 << (-nBits)) - 1)
6317 e >>= (-nBits)
6318 nBits += mLen
6319 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
6320
6321 if (e === 0) {
6322 e = 1 - eBias
6323 } else if (e === eMax) {
6324 return m ? NaN : ((s ? -1 : 1) * Infinity)
6325 } else {
6326 m = m + Math.pow(2, mLen)
6327 e = e - eBias
6328 }
6329 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
6330 }
6331
6332 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
6333 var e, m, c
6334 var eLen = nBytes * 8 - mLen - 1
6335 var eMax = (1 << eLen) - 1
6336 var eBias = eMax >> 1
6337 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
6338 var i = isLE ? 0 : (nBytes - 1)
6339 var d = isLE ? 1 : -1
6340 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
6341
6342 value = Math.abs(value)
6343
6344 if (isNaN(value) || value === Infinity) {
6345 m = isNaN(value) ? 1 : 0
6346 e = eMax
6347 } else {
6348 e = Math.floor(Math.log(value) / Math.LN2)
6349 if (value * (c = Math.pow(2, -e)) < 1) {
6350 e--
6351 c *= 2
6352 }
6353 if (e + eBias >= 1) {
6354 value += rt / c
6355 } else {
6356 value += rt * Math.pow(2, 1 - eBias)
6357 }
6358 if (value * c >= 2) {
6359 e++
6360 c /= 2
6361 }
6362
6363 if (e + eBias >= eMax) {
6364 m = 0
6365 e = eMax
6366 } else if (e + eBias >= 1) {
6367 m = (value * c - 1) * Math.pow(2, mLen)
6368 e = e + eBias
6369 } else {
6370 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
6371 e = 0
6372 }
6373 }
6374
6375 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
6376
6377 e = (e << mLen) | m
6378 eLen += mLen
6379 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
6380
6381 buffer[offset + i - d] |= s * 128
6382 }
6383
6384 },{}],4:[function(require,module,exports){
6385 window.basex = require('base-x')
6386 },{"base-x":5}],5:[function(require,module,exports){
6387 // base-x encoding
6388 // Forked from https://github.com/cryptocoinjs/bs58
6389 // Originally written by Mike Hearn for BitcoinJ
6390 // Copyright (c) 2011 Google Inc
6391 // Ported to JavaScript by Stefan Thomas
6392 // Merged Buffer refactorings from base58-native by Stephen Pair
6393 // Copyright (c) 2013 BitPay Inc
6394
6395 var Buffer = require('safe-buffer').Buffer
6396
6397 module.exports = function base (ALPHABET) {
6398 var ALPHABET_MAP = {}
6399 var BASE = ALPHABET.length
6400 var LEADER = ALPHABET.charAt(0)
6401
6402 // pre-compute lookup table
6403 for (var z = 0; z < ALPHABET.length; z++) {
6404 var x = ALPHABET.charAt(z)
6405
6406 if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')
6407 ALPHABET_MAP[x] = z
6408 }
6409
6410 function encode (source) {
6411 if (source.length === 0) return ''
6412
6413 var digits = [0]
6414 for (var i = 0; i < source.length; ++i) {
6415 for (var j = 0, carry = source[i]; j < digits.length; ++j) {
6416 carry += digits[j] << 8
6417 digits[j] = carry % BASE
6418 carry = (carry / BASE) | 0
6419 }
6420
6421 while (carry > 0) {
6422 digits.push(carry % BASE)
6423 carry = (carry / BASE) | 0
6424 }
6425 }
6426
6427 var string = ''
6428
6429 // deal with leading zeros
6430 for (var k = 0; source[k] === 0 && k < source.length - 1; ++k) string += ALPHABET[0]
6431 // convert digits to a string
6432 for (var q = digits.length - 1; q >= 0; --q) string += ALPHABET[digits[q]]
6433
6434 return string
6435 }
6436
6437 function decodeUnsafe (string) {
6438 if (string.length === 0) return Buffer.allocUnsafe(0)
6439
6440 var bytes = [0]
6441 for (var i = 0; i < string.length; i++) {
6442 var value = ALPHABET_MAP[string[i]]
6443 if (value === undefined) return
6444
6445 for (var j = 0, carry = value; j < bytes.length; ++j) {
6446 carry += bytes[j] * BASE
6447 bytes[j] = carry & 0xff
6448 carry >>= 8
6449 }
6450
6451 while (carry > 0) {
6452 bytes.push(carry & 0xff)
6453 carry >>= 8
6454 }
6455 }
6456
6457 // deal with leading zeros
6458 for (var k = 0; string[k] === LEADER && k < string.length - 1; ++k) {
6459 bytes.push(0)
6460 }
6461
6462 return Buffer.from(bytes.reverse())
6463 }
6464
6465 function decode (string) {
6466 var buffer = decodeUnsafe(string)
6467 if (buffer) return buffer
6468
6469 throw new Error('Non-base' + BASE + ' character')
6470 }
6471
6472 return {
6473 encode: encode,
6474 decodeUnsafe: decodeUnsafe,
6475 decode: decode
6476 }
6477 }
6478
6479 },{"safe-buffer":6}],6:[function(require,module,exports){
6480 module.exports = require('buffer')
6481
6482 },{"buffer":2}]},{},[4])(4)
6483 });</script>
6484 <script>(function (root) {
6485 "use strict";
6486
6487 /***** unorm.js *****/
6488
6489 /*
6490 * UnicodeNormalizer 1.0.0
6491 * Copyright (c) 2008 Matsuza
6492 * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
6493 * $Date: 2008-06-05 16:44:17 +0200 (Thu, 05 Jun 2008) $
6494 * $Rev: 13309 $
6495 */
6496
6497 var DEFAULT_FEATURE = [null, 0, {}];
6498 var CACHE_THRESHOLD = 10;
6499 var SBase = 0xAC00, LBase = 0x1100, VBase = 0x1161, TBase = 0x11A7, LCount = 19, VCount = 21, TCount = 28;
6500 var NCount = VCount * TCount; // 588
6501 var SCount = LCount * NCount; // 11172
6502
6503 var UChar = function(cp, feature){
6504 this.codepoint = cp;
6505 this.feature = feature;
6506 };
6507
6508 // Strategies
6509 var cache = {};
6510 var cacheCounter = [];
6511 for (var i = 0; i <= 0xFF; ++i){
6512 cacheCounter[i] = 0;
6513 }
6514
6515 function fromCache(next, cp, needFeature){
6516 var ret = cache[cp];
6517 if(!ret){
6518 ret = next(cp, needFeature);
6519 if(!!ret.feature && ++cacheCounter[(cp >> 8) & 0xFF] > CACHE_THRESHOLD){
6520 cache[cp] = ret;
6521 }
6522 }
6523 return ret;
6524 }
6525
6526 function fromData(next, cp, needFeature){
6527 var hash = cp & 0xFF00;
6528 var dunit = UChar.udata[hash] || {};
6529 var f = dunit[cp];
6530 return f ? new UChar(cp, f) : new UChar(cp, DEFAULT_FEATURE);
6531 }
6532 function fromCpOnly(next, cp, needFeature){
6533 return !!needFeature ? next(cp, needFeature) : new UChar(cp, null);
6534 }
6535 function fromRuleBasedJamo(next, cp, needFeature){
6536 var j;
6537 if(cp < LBase || (LBase + LCount <= cp && cp < SBase) || (SBase + SCount < cp)){
6538 return next(cp, needFeature);
6539 }
6540 if(LBase <= cp && cp < LBase + LCount){
6541 var c = {};
6542 var base = (cp - LBase) * VCount;
6543 for (j = 0; j < VCount; ++j){
6544 c[VBase + j] = SBase + TCount * (j + base);
6545 }
6546 return new UChar(cp, [,,c]);
6547 }
6548
6549 var SIndex = cp - SBase;
6550 var TIndex = SIndex % TCount;
6551 var feature = [];
6552 if(TIndex !== 0){
6553 feature[0] = [SBase + SIndex - TIndex, TBase + TIndex];
6554 } else {
6555 feature[0] = [LBase + Math.floor(SIndex / NCount), VBase + Math.floor((SIndex % NCount) / TCount)];
6556 feature[2] = {};
6557 for (j = 1; j < TCount; ++j){
6558 feature[2][TBase + j] = cp + j;
6559 }
6560 }
6561 return new UChar(cp, feature);
6562 }
6563 function fromCpFilter(next, cp, needFeature){
6564 return cp < 60 || 13311 < cp && cp < 42607 ? new UChar(cp, DEFAULT_FEATURE) : next(cp, needFeature);
6565 }
6566
6567 var strategies = [fromCpFilter, fromCache, fromCpOnly, fromRuleBasedJamo, fromData];
6568
6569 UChar.fromCharCode = strategies.reduceRight(function (next, strategy) {
6570 return function (cp, needFeature) {
6571 return strategy(next, cp, needFeature);
6572 };
6573 }, null);
6574
6575 UChar.isHighSurrogate = function(cp){
6576 return cp >= 0xD800 && cp <= 0xDBFF;
6577 };
6578 UChar.isLowSurrogate = function(cp){
6579 return cp >= 0xDC00 && cp <= 0xDFFF;
6580 };
6581
6582 UChar.prototype.prepFeature = function(){
6583 if(!this.feature){
6584 this.feature = UChar.fromCharCode(this.codepoint, true).feature;
6585 }
6586 };
6587
6588 UChar.prototype.toString = function(){
6589 if(this.codepoint < 0x10000){
6590 return String.fromCharCode(this.codepoint);
6591 } else {
6592 var x = this.codepoint - 0x10000;
6593 return String.fromCharCode(Math.floor(x / 0x400) + 0xD800, x % 0x400 + 0xDC00);
6594 }
6595 };
6596
6597 UChar.prototype.getDecomp = function(){
6598 this.prepFeature();
6599 return this.feature[0] || null;
6600 };
6601
6602 UChar.prototype.isCompatibility = function(){
6603 this.prepFeature();
6604 return !!this.feature[1] && (this.feature[1] & (1 << 8));
6605 };
6606 UChar.prototype.isExclude = function(){
6607 this.prepFeature();
6608 return !!this.feature[1] && (this.feature[1] & (1 << 9));
6609 };
6610 UChar.prototype.getCanonicalClass = function(){
6611 this.prepFeature();
6612 return !!this.feature[1] ? (this.feature[1] & 0xff) : 0;
6613 };
6614 UChar.prototype.getComposite = function(following){
6615 this.prepFeature();
6616 if(!this.feature[2]){
6617 return null;
6618 }
6619 var cp = this.feature[2][following.codepoint];
6620 return cp ? UChar.fromCharCode(cp) : null;
6621 };
6622
6623 var UCharIterator = function(str){
6624 this.str = str;
6625 this.cursor = 0;
6626 };
6627 UCharIterator.prototype.next = function(){
6628 if(!!this.str && this.cursor < this.str.length){
6629 var cp = this.str.charCodeAt(this.cursor++);
6630 var d;
6631 if(UChar.isHighSurrogate(cp) && this.cursor < this.str.length && UChar.isLowSurrogate((d = this.str.charCodeAt(this.cursor)))){
6632 cp = (cp - 0xD800) * 0x400 + (d -0xDC00) + 0x10000;
6633 ++this.cursor;
6634 }
6635 return UChar.fromCharCode(cp);
6636 } else {
6637 this.str = null;
6638 return null;
6639 }
6640 };
6641
6642 var RecursDecompIterator = function(it, cano){
6643 this.it = it;
6644 this.canonical = cano;
6645 this.resBuf = [];
6646 };
6647
6648 RecursDecompIterator.prototype.next = function(){
6649 function recursiveDecomp(cano, uchar){
6650 var decomp = uchar.getDecomp();
6651 if(!!decomp && !(cano && uchar.isCompatibility())){
6652 var ret = [];
6653 for(var i = 0; i < decomp.length; ++i){
6654 var a = recursiveDecomp(cano, UChar.fromCharCode(decomp[i]));
6655 ret = ret.concat(a);
6656 }
6657 return ret;
6658 } else {
6659 return [uchar];
6660 }
6661 }
6662 if(this.resBuf.length === 0){
6663 var uchar = this.it.next();
6664 if(!uchar){
6665 return null;
6666 }
6667 this.resBuf = recursiveDecomp(this.canonical, uchar);
6668 }
6669 return this.resBuf.shift();
6670 };
6671
6672 var DecompIterator = function(it){
6673 this.it = it;
6674 this.resBuf = [];
6675 };
6676
6677 DecompIterator.prototype.next = function(){
6678 var cc;
6679 if(this.resBuf.length === 0){
6680 do{
6681 var uchar = this.it.next();
6682 if(!uchar){
6683 break;
6684 }
6685 cc = uchar.getCanonicalClass();
6686 var inspt = this.resBuf.length;
6687 if(cc !== 0){
6688 for(; inspt > 0; --inspt){
6689 var uchar2 = this.resBuf[inspt - 1];
6690 var cc2 = uchar2.getCanonicalClass();
6691 if(cc2 <= cc){
6692 break;
6693 }
6694 }
6695 }
6696 this.resBuf.splice(inspt, 0, uchar);
6697 } while(cc !== 0);
6698 }
6699 return this.resBuf.shift();
6700 };
6701
6702 var CompIterator = function(it){
6703 this.it = it;
6704 this.procBuf = [];
6705 this.resBuf = [];
6706 this.lastClass = null;
6707 };
6708
6709 CompIterator.prototype.next = function(){
6710 while(this.resBuf.length === 0){
6711 var uchar = this.it.next();
6712 if(!uchar){
6713 this.resBuf = this.procBuf;
6714 this.procBuf = [];
6715 break;
6716 }
6717 if(this.procBuf.length === 0){
6718 this.lastClass = uchar.getCanonicalClass();
6719 this.procBuf.push(uchar);
6720 } else {
6721 var starter = this.procBuf[0];
6722 var composite = starter.getComposite(uchar);
6723 var cc = uchar.getCanonicalClass();
6724 if(!!composite && (this.lastClass < cc || this.lastClass === 0)){
6725 this.procBuf[0] = composite;
6726 } else {
6727 if(cc === 0){
6728 this.resBuf = this.procBuf;
6729 this.procBuf = [];
6730 }
6731 this.lastClass = cc;
6732 this.procBuf.push(uchar);
6733 }
6734 }
6735 }
6736 return this.resBuf.shift();
6737 };
6738
6739 var createIterator = function(mode, str){
6740 switch(mode){
6741 case "NFD":
6742 return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true));
6743 case "NFKD":
6744 return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false));
6745 case "NFC":
6746 return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true)));
6747 case "NFKC":
6748 return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false)));
6749 }
6750 throw mode + " is invalid";
6751 };
6752 var normalize = function(mode, str){
6753 var it = createIterator(mode, str);
6754 var ret = "";
6755 var uchar;
6756 while(!!(uchar = it.next())){
6757 ret += uchar.toString();
6758 }
6759 return ret;
6760 };
6761
6762 /* API functions */
6763 function nfd(str){
6764 return normalize("NFD", str);
6765 }
6766
6767 function nfkd(str){
6768 return normalize("NFKD", str);
6769 }
6770
6771 function nfc(str){
6772 return normalize("NFC", str);
6773 }
6774
6775 function nfkc(str){
6776 return normalize("NFKC", str);
6777 }
6778
6779 /* Unicode data */
6780 UChar.udata={
6781 0:{60:[,,{824:8814}],61:[,,{824:8800}],62:[,,{824:8815}],65:[,,{768:192,769:193,770:194,771:195,772:256,774:258,775:550,776:196,777:7842,778:197,780:461,783:512,785:514,803:7840,805:7680,808:260}],66:[,,{775:7682,803:7684,817:7686}],67:[,,{769:262,770:264,775:266,780:268,807:199}],68:[,,{775:7690,780:270,803:7692,807:7696,813:7698,817:7694}],69:[,,{768:200,769:201,770:202,771:7868,772:274,774:276,775:278,776:203,777:7866,780:282,783:516,785:518,803:7864,807:552,808:280,813:7704,816:7706}],70:[,,{775:7710}],71:[,,{769:500,770:284,772:7712,774:286,775:288,780:486,807:290}],72:[,,{770:292,775:7714,776:7718,780:542,803:7716,807:7720,814:7722}],73:[,,{768:204,769:205,770:206,771:296,772:298,774:300,775:304,776:207,777:7880,780:463,783:520,785:522,803:7882,808:302,816:7724}],74:[,,{770:308}],75:[,,{769:7728,780:488,803:7730,807:310,817:7732}],76:[,,{769:313,780:317,803:7734,807:315,813:7740,817:7738}],77:[,,{769:7742,775:7744,803:7746}],78:[,,{768:504,769:323,771:209,775:7748,780:327,803:7750,807:325,813:7754,817:7752}],79:[,,{768:210,769:211,770:212,771:213,772:332,774:334,775:558,776:214,777:7886,779:336,780:465,783:524,785:526,795:416,803:7884,808:490}],80:[,,{769:7764,775:7766}],82:[,,{769:340,775:7768,780:344,783:528,785:530,803:7770,807:342,817:7774}],83:[,,{769:346,770:348,775:7776,780:352,803:7778,806:536,807:350}],84:[,,{775:7786,780:356,803:7788,806:538,807:354,813:7792,817:7790}],85:[,,{768:217,769:218,770:219,771:360,772:362,774:364,776:220,777:7910,778:366,779:368,780:467,783:532,785:534,795:431,803:7908,804:7794,808:370,813:7798,816:7796}],86:[,,{771:7804,803:7806}],87:[,,{768:7808,769:7810,770:372,775:7814,776:7812,803:7816}],88:[,,{775:7818,776:7820}],89:[,,{768:7922,769:221,770:374,771:7928,772:562,775:7822,776:376,777:7926,803:7924}],90:[,,{769:377,770:7824,775:379,780:381,803:7826,817:7828}],97:[,,{768:224,769:225,770:226,771:227,772:257,774:259,775:551,776:228,777:7843,778:229,780:462,783:513,785:515,803:7841,805:7681,808:261}],98:[,,{775:7683,803:7685,817:7687}],99:[,,{769:263,770:265,775:267,780:269,807:231}],100:[,,{775:7691,780:271,803:7693,807:7697,813:7699,817:7695}],101:[,,{768:232,769:233,770:234,771:7869,772:275,774:277,775:279,776:235,777:7867,780:283,783:517,785:519,803:7865,807:553,808:281,813:7705,816:7707}],102:[,,{775:7711}],103:[,,{769:501,770:285,772:7713,774:287,775:289,780:487,807:291}],104:[,,{770:293,775:7715,776:7719,780:543,803:7717,807:7721,814:7723,817:7830}],105:[,,{768:236,769:237,770:238,771:297,772:299,774:301,776:239,777:7881,780:464,783:521,785:523,803:7883,808:303,816:7725}],106:[,,{770:309,780:496}],107:[,,{769:7729,780:489,803:7731,807:311,817:7733}],108:[,,{769:314,780:318,803:7735,807:316,813:7741,817:7739}],109:[,,{769:7743,775:7745,803:7747}],110:[,,{768:505,769:324,771:241,775:7749,780:328,803:7751,807:326,813:7755,817:7753}],111:[,,{768:242,769:243,770:244,771:245,772:333,774:335,775:559,776:246,777:7887,779:337,780:466,783:525,785:527,795:417,803:7885,808:491}],112:[,,{769:7765,775:7767}],114:[,,{769:341,775:7769,780:345,783:529,785:531,803:7771,807:343,817:7775}],115:[,,{769:347,770:349,775:7777,780:353,803:7779,806:537,807:351}],116:[,,{775:7787,776:7831,780:357,803:7789,806:539,807:355,813:7793,817:7791}],117:[,,{768:249,769:250,770:251,771:361,772:363,774:365,776:252,777:7911,778:367,779:369,780:468,783:533,785:535,795:432,803:7909,804:7795,808:371,813:7799,816:7797}],118:[,,{771:7805,803:7807}],119:[,,{768:7809,769:7811,770:373,775:7815,776:7813,778:7832,803:7817}],120:[,,{775:7819,776:7821}],121:[,,{768:7923,769:253,770:375,771:7929,772:563,775:7823,776:255,777:7927,778:7833,803:7925}],122:[,,{769:378,770:7825,775:380,780:382,803:7827,817:7829}],160:[[32],256],168:[[32,776],256,{768:8173,769:901,834:8129}],170:[[97],256],175:[[32,772],256],178:[[50],256],179:[[51],256],180:[[32,769],256],181:[[956],256],184:[[32,807],256],185:[[49],256],186:[[111],256],188:[[49,8260,52],256],189:[[49,8260,50],256],190:[[51,8260,52],256],192:[[65,768]],193:[[65,769]],194:[[65,770],,{768:7846,769:7844,771:7850,777:7848}],195:[[65,771]],196:[[65,776],,{772:478}],197:[[65,778],,{769:506}],198:[,,{769:508,772:482}],199:[[67,807],,{769:7688}],200:[[69,768]],201:[[69,769]],202:[[69,770],,{768:7872,769:7870,771:7876,777:7874}],203:[[69,776]],204:[[73,768]],205:[[73,769]],206:[[73,770]],207:[[73,776],,{769:7726}],209:[[78,771]],210:[[79,768]],211:[[79,769]],212:[[79,770],,{768:7890,769:7888,771:7894,777:7892}],213:[[79,771],,{769:7756,772:556,776:7758}],214:[[79,776],,{772:554}],216:[,,{769:510}],217:[[85,768]],218:[[85,769]],219:[[85,770]],220:[[85,776],,{768:475,769:471,772:469,780:473}],221:[[89,769]],224:[[97,768]],225:[[97,769]],226:[[97,770],,{768:7847,769:7845,771:7851,777:7849}],227:[[97,771]],228:[[97,776],,{772:479}],229:[[97,778],,{769:507}],230:[,,{769:509,772:483}],231:[[99,807],,{769:7689}],232:[[101,768]],233:[[101,769]],234:[[101,770],,{768:7873,769:7871,771:7877,777:7875}],235:[[101,776]],236:[[105,768]],237:[[105,769]],238:[[105,770]],239:[[105,776],,{769:7727}],241:[[110,771]],242:[[111,768]],243:[[111,769]],244:[[111,770],,{768:7891,769:7889,771:7895,777:7893}],245:[[111,771],,{769:7757,772:557,776:7759}],246:[[111,776],,{772:555}],248:[,,{769:511}],249:[[117,768]],250:[[117,769]],251:[[117,770]],252:[[117,776],,{768:476,769:472,772:470,780:474}],253:[[121,769]],255:[[121,776]]},
6782 256:{256:[[65,772]],257:[[97,772]],258:[[65,774],,{768:7856,769:7854,771:7860,777:7858}],259:[[97,774],,{768:7857,769:7855,771:7861,777:7859}],260:[[65,808]],261:[[97,808]],262:[[67,769]],263:[[99,769]],264:[[67,770]],265:[[99,770]],266:[[67,775]],267:[[99,775]],268:[[67,780]],269:[[99,780]],270:[[68,780]],271:[[100,780]],274:[[69,772],,{768:7700,769:7702}],275:[[101,772],,{768:7701,769:7703}],276:[[69,774]],277:[[101,774]],278:[[69,775]],279:[[101,775]],280:[[69,808]],281:[[101,808]],282:[[69,780]],283:[[101,780]],284:[[71,770]],285:[[103,770]],286:[[71,774]],287:[[103,774]],288:[[71,775]],289:[[103,775]],290:[[71,807]],291:[[103,807]],292:[[72,770]],293:[[104,770]],296:[[73,771]],297:[[105,771]],298:[[73,772]],299:[[105,772]],300:[[73,774]],301:[[105,774]],302:[[73,808]],303:[[105,808]],304:[[73,775]],306:[[73,74],256],307:[[105,106],256],308:[[74,770]],309:[[106,770]],310:[[75,807]],311:[[107,807]],313:[[76,769]],314:[[108,769]],315:[[76,807]],316:[[108,807]],317:[[76,780]],318:[[108,780]],319:[[76,183],256],320:[[108,183],256],323:[[78,769]],324:[[110,769]],325:[[78,807]],326:[[110,807]],327:[[78,780]],328:[[110,780]],329:[[700,110],256],332:[[79,772],,{768:7760,769:7762}],333:[[111,772],,{768:7761,769:7763}],334:[[79,774]],335:[[111,774]],336:[[79,779]],337:[[111,779]],340:[[82,769]],341:[[114,769]],342:[[82,807]],343:[[114,807]],344:[[82,780]],345:[[114,780]],346:[[83,769],,{775:7780}],347:[[115,769],,{775:7781}],348:[[83,770]],349:[[115,770]],350:[[83,807]],351:[[115,807]],352:[[83,780],,{775:7782}],353:[[115,780],,{775:7783}],354:[[84,807]],355:[[116,807]],356:[[84,780]],357:[[116,780]],360:[[85,771],,{769:7800}],361:[[117,771],,{769:7801}],362:[[85,772],,{776:7802}],363:[[117,772],,{776:7803}],364:[[85,774]],365:[[117,774]],366:[[85,778]],367:[[117,778]],368:[[85,779]],369:[[117,779]],370:[[85,808]],371:[[117,808]],372:[[87,770]],373:[[119,770]],374:[[89,770]],375:[[121,770]],376:[[89,776]],377:[[90,769]],378:[[122,769]],379:[[90,775]],380:[[122,775]],381:[[90,780]],382:[[122,780]],383:[[115],256,{775:7835}],416:[[79,795],,{768:7900,769:7898,771:7904,777:7902,803:7906}],417:[[111,795],,{768:7901,769:7899,771:7905,777:7903,803:7907}],431:[[85,795],,{768:7914,769:7912,771:7918,777:7916,803:7920}],432:[[117,795],,{768:7915,769:7913,771:7919,777:7917,803:7921}],439:[,,{780:494}],452:[[68,381],256],453:[[68,382],256],454:[[100,382],256],455:[[76,74],256],456:[[76,106],256],457:[[108,106],256],458:[[78,74],256],459:[[78,106],256],460:[[110,106],256],461:[[65,780]],462:[[97,780]],463:[[73,780]],464:[[105,780]],465:[[79,780]],466:[[111,780]],467:[[85,780]],468:[[117,780]],469:[[220,772]],470:[[252,772]],471:[[220,769]],472:[[252,769]],473:[[220,780]],474:[[252,780]],475:[[220,768]],476:[[252,768]],478:[[196,772]],479:[[228,772]],480:[[550,772]],481:[[551,772]],482:[[198,772]],483:[[230,772]],486:[[71,780]],487:[[103,780]],488:[[75,780]],489:[[107,780]],490:[[79,808],,{772:492}],491:[[111,808],,{772:493}],492:[[490,772]],493:[[491,772]],494:[[439,780]],495:[[658,780]],496:[[106,780]],497:[[68,90],256],498:[[68,122],256],499:[[100,122],256],500:[[71,769]],501:[[103,769]],504:[[78,768]],505:[[110,768]],506:[[197,769]],507:[[229,769]],508:[[198,769]],509:[[230,769]],510:[[216,769]],511:[[248,769]],66045:[,220]},
6783 512:{512:[[65,783]],513:[[97,783]],514:[[65,785]],515:[[97,785]],516:[[69,783]],517:[[101,783]],518:[[69,785]],519:[[101,785]],520:[[73,783]],521:[[105,783]],522:[[73,785]],523:[[105,785]],524:[[79,783]],525:[[111,783]],526:[[79,785]],527:[[111,785]],528:[[82,783]],529:[[114,783]],530:[[82,785]],531:[[114,785]],532:[[85,783]],533:[[117,783]],534:[[85,785]],535:[[117,785]],536:[[83,806]],537:[[115,806]],538:[[84,806]],539:[[116,806]],542:[[72,780]],543:[[104,780]],550:[[65,775],,{772:480}],551:[[97,775],,{772:481}],552:[[69,807],,{774:7708}],553:[[101,807],,{774:7709}],554:[[214,772]],555:[[246,772]],556:[[213,772]],557:[[245,772]],558:[[79,775],,{772:560}],559:[[111,775],,{772:561}],560:[[558,772]],561:[[559,772]],562:[[89,772]],563:[[121,772]],658:[,,{780:495}],688:[[104],256],689:[[614],256],690:[[106],256],691:[[114],256],692:[[633],256],693:[[635],256],694:[[641],256],695:[[119],256],696:[[121],256],728:[[32,774],256],729:[[32,775],256],730:[[32,778],256],731:[[32,808],256],732:[[32,771],256],733:[[32,779],256],736:[[611],256],737:[[108],256],738:[[115],256],739:[[120],256],740:[[661],256],66272:[,220]},
6784 768:{768:[,230],769:[,230],770:[,230],771:[,230],772:[,230],773:[,230],774:[,230],775:[,230],776:[,230,{769:836}],777:[,230],778:[,230],779:[,230],780:[,230],781:[,230],782:[,230],783:[,230],784:[,230],785:[,230],786:[,230],787:[,230],788:[,230],789:[,232],790:[,220],791:[,220],792:[,220],793:[,220],794:[,232],795:[,216],796:[,220],797:[,220],798:[,220],799:[,220],800:[,220],801:[,202],802:[,202],803:[,220],804:[,220],805:[,220],806:[,220],807:[,202],808:[,202],809:[,220],810:[,220],811:[,220],812:[,220],813:[,220],814:[,220],815:[,220],816:[,220],817:[,220],818:[,220],819:[,220],820:[,1],821:[,1],822:[,1],823:[,1],824:[,1],825:[,220],826:[,220],827:[,220],828:[,220],829:[,230],830:[,230],831:[,230],832:[[768],230],833:[[769],230],834:[,230],835:[[787],230],836:[[776,769],230],837:[,240],838:[,230],839:[,220],840:[,220],841:[,220],842:[,230],843:[,230],844:[,230],845:[,220],846:[,220],848:[,230],849:[,230],850:[,230],851:[,220],852:[,220],853:[,220],854:[,220],855:[,230],856:[,232],857:[,220],858:[,220],859:[,230],860:[,233],861:[,234],862:[,234],863:[,233],864:[,234],865:[,234],866:[,233],867:[,230],868:[,230],869:[,230],870:[,230],871:[,230],872:[,230],873:[,230],874:[,230],875:[,230],876:[,230],877:[,230],878:[,230],879:[,230],884:[[697]],890:[[32,837],256],894:[[59]],900:[[32,769],256],901:[[168,769]],902:[[913,769]],903:[[183]],904:[[917,769]],905:[[919,769]],906:[[921,769]],908:[[927,769]],910:[[933,769]],911:[[937,769]],912:[[970,769]],913:[,,{768:8122,769:902,772:8121,774:8120,787:7944,788:7945,837:8124}],917:[,,{768:8136,769:904,787:7960,788:7961}],919:[,,{768:8138,769:905,787:7976,788:7977,837:8140}],921:[,,{768:8154,769:906,772:8153,774:8152,776:938,787:7992,788:7993}],927:[,,{768:8184,769:908,787:8008,788:8009}],929:[,,{788:8172}],933:[,,{768:8170,769:910,772:8169,774:8168,776:939,788:8025}],937:[,,{768:8186,769:911,787:8040,788:8041,837:8188}],938:[[921,776]],939:[[933,776]],940:[[945,769],,{837:8116}],941:[[949,769]],942:[[951,769],,{837:8132}],943:[[953,769]],944:[[971,769]],945:[,,{768:8048,769:940,772:8113,774:8112,787:7936,788:7937,834:8118,837:8115}],949:[,,{768:8050,769:941,787:7952,788:7953}],951:[,,{768:8052,769:942,787:7968,788:7969,834:8134,837:8131}],953:[,,{768:8054,769:943,772:8145,774:8144,776:970,787:7984,788:7985,834:8150}],959:[,,{768:8056,769:972,787:8000,788:8001}],961:[,,{787:8164,788:8165}],965:[,,{768:8058,769:973,772:8161,774:8160,776:971,787:8016,788:8017,834:8166}],969:[,,{768:8060,769:974,787:8032,788:8033,834:8182,837:8179}],970:[[953,776],,{768:8146,769:912,834:8151}],971:[[965,776],,{768:8162,769:944,834:8167}],972:[[959,769]],973:[[965,769]],974:[[969,769],,{837:8180}],976:[[946],256],977:[[952],256],978:[[933],256,{769:979,776:980}],979:[[978,769]],980:[[978,776]],981:[[966],256],982:[[960],256],1008:[[954],256],1009:[[961],256],1010:[[962],256],1012:[[920],256],1013:[[949],256],1017:[[931],256],66422:[,230],66423:[,230],66424:[,230],66425:[,230],66426:[,230]},
6785 1024:{1024:[[1045,768]],1025:[[1045,776]],1027:[[1043,769]],1030:[,,{776:1031}],1031:[[1030,776]],1036:[[1050,769]],1037:[[1048,768]],1038:[[1059,774]],1040:[,,{774:1232,776:1234}],1043:[,,{769:1027}],1045:[,,{768:1024,774:1238,776:1025}],1046:[,,{774:1217,776:1244}],1047:[,,{776:1246}],1048:[,,{768:1037,772:1250,774:1049,776:1252}],1049:[[1048,774]],1050:[,,{769:1036}],1054:[,,{776:1254}],1059:[,,{772:1262,774:1038,776:1264,779:1266}],1063:[,,{776:1268}],1067:[,,{776:1272}],1069:[,,{776:1260}],1072:[,,{774:1233,776:1235}],1075:[,,{769:1107}],1077:[,,{768:1104,774:1239,776:1105}],1078:[,,{774:1218,776:1245}],1079:[,,{776:1247}],1080:[,,{768:1117,772:1251,774:1081,776:1253}],1081:[[1080,774]],1082:[,,{769:1116}],1086:[,,{776:1255}],1091:[,,{772:1263,774:1118,776:1265,779:1267}],1095:[,,{776:1269}],1099:[,,{776:1273}],1101:[,,{776:1261}],1104:[[1077,768]],1105:[[1077,776]],1107:[[1075,769]],1110:[,,{776:1111}],1111:[[1110,776]],1116:[[1082,769]],1117:[[1080,768]],1118:[[1091,774]],1140:[,,{783:1142}],1141:[,,{783:1143}],1142:[[1140,783]],1143:[[1141,783]],1155:[,230],1156:[,230],1157:[,230],1158:[,230],1159:[,230],1217:[[1046,774]],1218:[[1078,774]],1232:[[1040,774]],1233:[[1072,774]],1234:[[1040,776]],1235:[[1072,776]],1238:[[1045,774]],1239:[[1077,774]],1240:[,,{776:1242}],1241:[,,{776:1243}],1242:[[1240,776]],1243:[[1241,776]],1244:[[1046,776]],1245:[[1078,776]],1246:[[1047,776]],1247:[[1079,776]],1250:[[1048,772]],1251:[[1080,772]],1252:[[1048,776]],1253:[[1080,776]],1254:[[1054,776]],1255:[[1086,776]],1256:[,,{776:1258}],1257:[,,{776:1259}],1258:[[1256,776]],1259:[[1257,776]],1260:[[1069,776]],1261:[[1101,776]],1262:[[1059,772]],1263:[[1091,772]],1264:[[1059,776]],1265:[[1091,776]],1266:[[1059,779]],1267:[[1091,779]],1268:[[1063,776]],1269:[[1095,776]],1272:[[1067,776]],1273:[[1099,776]]},
6786 1280:{1415:[[1381,1410],256],1425:[,220],1426:[,230],1427:[,230],1428:[,230],1429:[,230],1430:[,220],1431:[,230],1432:[,230],1433:[,230],1434:[,222],1435:[,220],1436:[,230],1437:[,230],1438:[,230],1439:[,230],1440:[,230],1441:[,230],1442:[,220],1443:[,220],1444:[,220],1445:[,220],1446:[,220],1447:[,220],1448:[,230],1449:[,230],1450:[,220],1451:[,230],1452:[,230],1453:[,222],1454:[,228],1455:[,230],1456:[,10],1457:[,11],1458:[,12],1459:[,13],1460:[,14],1461:[,15],1462:[,16],1463:[,17],1464:[,18],1465:[,19],1466:[,19],1467:[,20],1468:[,21],1469:[,22],1471:[,23],1473:[,24],1474:[,25],1476:[,230],1477:[,220],1479:[,18]},
6787 1536:{1552:[,230],1553:[,230],1554:[,230],1555:[,230],1556:[,230],1557:[,230],1558:[,230],1559:[,230],1560:[,30],1561:[,31],1562:[,32],1570:[[1575,1619]],1571:[[1575,1620]],1572:[[1608,1620]],1573:[[1575,1621]],1574:[[1610,1620]],1575:[,,{1619:1570,1620:1571,1621:1573}],1608:[,,{1620:1572}],1610:[,,{1620:1574}],1611:[,27],1612:[,28],1613:[,29],1614:[,30],1615:[,31],1616:[,32],1617:[,33],1618:[,34],1619:[,230],1620:[,230],1621:[,220],1622:[,220],1623:[,230],1624:[,230],1625:[,230],1626:[,230],1627:[,230],1628:[,220],1629:[,230],1630:[,230],1631:[,220],1648:[,35],1653:[[1575,1652],256],1654:[[1608,1652],256],1655:[[1735,1652],256],1656:[[1610,1652],256],1728:[[1749,1620]],1729:[,,{1620:1730}],1730:[[1729,1620]],1746:[,,{1620:1747}],1747:[[1746,1620]],1749:[,,{1620:1728}],1750:[,230],1751:[,230],1752:[,230],1753:[,230],1754:[,230],1755:[,230],1756:[,230],1759:[,230],1760:[,230],1761:[,230],1762:[,230],1763:[,220],1764:[,230],1767:[,230],1768:[,230],1770:[,220],1771:[,230],1772:[,230],1773:[,220]},
6788 1792:{1809:[,36],1840:[,230],1841:[,220],1842:[,230],1843:[,230],1844:[,220],1845:[,230],1846:[,230],1847:[,220],1848:[,220],1849:[,220],1850:[,230],1851:[,220],1852:[,220],1853:[,230],1854:[,220],1855:[,230],1856:[,230],1857:[,230],1858:[,220],1859:[,230],1860:[,220],1861:[,230],1862:[,220],1863:[,230],1864:[,220],1865:[,230],1866:[,230],2027:[,230],2028:[,230],2029:[,230],2030:[,230],2031:[,230],2032:[,230],2033:[,230],2034:[,220],2035:[,230]},
6789 2048:{2070:[,230],2071:[,230],2072:[,230],2073:[,230],2075:[,230],2076:[,230],2077:[,230],2078:[,230],2079:[,230],2080:[,230],2081:[,230],2082:[,230],2083:[,230],2085:[,230],2086:[,230],2087:[,230],2089:[,230],2090:[,230],2091:[,230],2092:[,230],2093:[,230],2137:[,220],2138:[,220],2139:[,220],2276:[,230],2277:[,230],2278:[,220],2279:[,230],2280:[,230],2281:[,220],2282:[,230],2283:[,230],2284:[,230],2285:[,220],2286:[,220],2287:[,220],2288:[,27],2289:[,28],2290:[,29],2291:[,230],2292:[,230],2293:[,230],2294:[,220],2295:[,230],2296:[,230],2297:[,220],2298:[,220],2299:[,230],2300:[,230],2301:[,230],2302:[,230],2303:[,230]},
6790 2304:{2344:[,,{2364:2345}],2345:[[2344,2364]],2352:[,,{2364:2353}],2353:[[2352,2364]],2355:[,,{2364:2356}],2356:[[2355,2364]],2364:[,7],2381:[,9],2385:[,230],2386:[,220],2387:[,230],2388:[,230],2392:[[2325,2364],512],2393:[[2326,2364],512],2394:[[2327,2364],512],2395:[[2332,2364],512],2396:[[2337,2364],512],2397:[[2338,2364],512],2398:[[2347,2364],512],2399:[[2351,2364],512],2492:[,7],2503:[,,{2494:2507,2519:2508}],2507:[[2503,2494]],2508:[[2503,2519]],2509:[,9],2524:[[2465,2492],512],2525:[[2466,2492],512],2527:[[2479,2492],512]},
6791 2560:{2611:[[2610,2620],512],2614:[[2616,2620],512],2620:[,7],2637:[,9],2649:[[2582,2620],512],2650:[[2583,2620],512],2651:[[2588,2620],512],2654:[[2603,2620],512],2748:[,7],2765:[,9],68109:[,220],68111:[,230],68152:[,230],68153:[,1],68154:[,220],68159:[,9],68325:[,230],68326:[,220]},
6792 2816:{2876:[,7],2887:[,,{2878:2891,2902:2888,2903:2892}],2888:[[2887,2902]],2891:[[2887,2878]],2892:[[2887,2903]],2893:[,9],2908:[[2849,2876],512],2909:[[2850,2876],512],2962:[,,{3031:2964}],2964:[[2962,3031]],3014:[,,{3006:3018,3031:3020}],3015:[,,{3006:3019}],3018:[[3014,3006]],3019:[[3015,3006]],3020:[[3014,3031]],3021:[,9]},
6793 3072:{3142:[,,{3158:3144}],3144:[[3142,3158]],3149:[,9],3157:[,84],3158:[,91],3260:[,7],3263:[,,{3285:3264}],3264:[[3263,3285]],3270:[,,{3266:3274,3285:3271,3286:3272}],3271:[[3270,3285]],3272:[[3270,3286]],3274:[[3270,3266],,{3285:3275}],3275:[[3274,3285]],3277:[,9]},
6794 3328:{3398:[,,{3390:3402,3415:3404}],3399:[,,{3390:3403}],3402:[[3398,3390]],3403:[[3399,3390]],3404:[[3398,3415]],3405:[,9],3530:[,9],3545:[,,{3530:3546,3535:3548,3551:3550}],3546:[[3545,3530]],3548:[[3545,3535],,{3530:3549}],3549:[[3548,3530]],3550:[[3545,3551]]},
6795 3584:{3635:[[3661,3634],256],3640:[,103],3641:[,103],3642:[,9],3656:[,107],3657:[,107],3658:[,107],3659:[,107],3763:[[3789,3762],256],3768:[,118],3769:[,118],3784:[,122],3785:[,122],3786:[,122],3787:[,122],3804:[[3755,3737],256],3805:[[3755,3745],256]},
6796 3840:{3852:[[3851],256],3864:[,220],3865:[,220],3893:[,220],3895:[,220],3897:[,216],3907:[[3906,4023],512],3917:[[3916,4023],512],3922:[[3921,4023],512],3927:[[3926,4023],512],3932:[[3931,4023],512],3945:[[3904,4021],512],3953:[,129],3954:[,130],3955:[[3953,3954],512],3956:[,132],3957:[[3953,3956],512],3958:[[4018,3968],512],3959:[[4018,3969],256],3960:[[4019,3968],512],3961:[[4019,3969],256],3962:[,130],3963:[,130],3964:[,130],3965:[,130],3968:[,130],3969:[[3953,3968],512],3970:[,230],3971:[,230],3972:[,9],3974:[,230],3975:[,230],3987:[[3986,4023],512],3997:[[3996,4023],512],4002:[[4001,4023],512],4007:[[4006,4023],512],4012:[[4011,4023],512],4025:[[3984,4021],512],4038:[,220]},
6797 4096:{4133:[,,{4142:4134}],4134:[[4133,4142]],4151:[,7],4153:[,9],4154:[,9],4237:[,220],4348:[[4316],256],69702:[,9],69759:[,9],69785:[,,{69818:69786}],69786:[[69785,69818]],69787:[,,{69818:69788}],69788:[[69787,69818]],69797:[,,{69818:69803}],69803:[[69797,69818]],69817:[,9],69818:[,7]},
6798 4352:{69888:[,230],69889:[,230],69890:[,230],69934:[[69937,69927]],69935:[[69938,69927]],69937:[,,{69927:69934}],69938:[,,{69927:69935}],69939:[,9],69940:[,9],70003:[,7],70080:[,9]},
6799 4608:{70197:[,9],70198:[,7],70377:[,7],70378:[,9]},
6800 4864:{4957:[,230],4958:[,230],4959:[,230],70460:[,7],70471:[,,{70462:70475,70487:70476}],70475:[[70471,70462]],70476:[[70471,70487]],70477:[,9],70502:[,230],70503:[,230],70504:[,230],70505:[,230],70506:[,230],70507:[,230],70508:[,230],70512:[,230],70513:[,230],70514:[,230],70515:[,230],70516:[,230]},
6801 5120:{70841:[,,{70832:70844,70842:70843,70845:70846}],70843:[[70841,70842]],70844:[[70841,70832]],70846:[[70841,70845]],70850:[,9],70851:[,7]},
6802 5376:{71096:[,,{71087:71098}],71097:[,,{71087:71099}],71098:[[71096,71087]],71099:[[71097,71087]],71103:[,9],71104:[,7]},
6803 5632:{71231:[,9],71350:[,9],71351:[,7]},
6804 5888:{5908:[,9],5940:[,9],6098:[,9],6109:[,230]},
6805 6144:{6313:[,228]},
6806 6400:{6457:[,222],6458:[,230],6459:[,220]},
6807 6656:{6679:[,230],6680:[,220],6752:[,9],6773:[,230],6774:[,230],6775:[,230],6776:[,230],6777:[,230],6778:[,230],6779:[,230],6780:[,230],6783:[,220],6832:[,230],6833:[,230],6834:[,230],6835:[,230],6836:[,230],6837:[,220],6838:[,220],6839:[,220],6840:[,220],6841:[,220],6842:[,220],6843:[,230],6844:[,230],6845:[,220]},
6808 6912:{6917:[,,{6965:6918}],6918:[[6917,6965]],6919:[,,{6965:6920}],6920:[[6919,6965]],6921:[,,{6965:6922}],6922:[[6921,6965]],6923:[,,{6965:6924}],6924:[[6923,6965]],6925:[,,{6965:6926}],6926:[[6925,6965]],6929:[,,{6965:6930}],6930:[[6929,6965]],6964:[,7],6970:[,,{6965:6971}],6971:[[6970,6965]],6972:[,,{6965:6973}],6973:[[6972,6965]],6974:[,,{6965:6976}],6975:[,,{6965:6977}],6976:[[6974,6965]],6977:[[6975,6965]],6978:[,,{6965:6979}],6979:[[6978,6965]],6980:[,9],7019:[,230],7020:[,220],7021:[,230],7022:[,230],7023:[,230],7024:[,230],7025:[,230],7026:[,230],7027:[,230],7082:[,9],7083:[,9],7142:[,7],7154:[,9],7155:[,9]},
6809 7168:{7223:[,7],7376:[,230],7377:[,230],7378:[,230],7380:[,1],7381:[,220],7382:[,220],7383:[,220],7384:[,220],7385:[,220],7386:[,230],7387:[,230],7388:[,220],7389:[,220],7390:[,220],7391:[,220],7392:[,230],7394:[,1],7395:[,1],7396:[,1],7397:[,1],7398:[,1],7399:[,1],7400:[,1],7405:[,220],7412:[,230],7416:[,230],7417:[,230]},
6810 7424:{7468:[[65],256],7469:[[198],256],7470:[[66],256],7472:[[68],256],7473:[[69],256],7474:[[398],256],7475:[[71],256],7476:[[72],256],7477:[[73],256],7478:[[74],256],7479:[[75],256],7480:[[76],256],7481:[[77],256],7482:[[78],256],7484:[[79],256],7485:[[546],256],7486:[[80],256],7487:[[82],256],7488:[[84],256],7489:[[85],256],7490:[[87],256],7491:[[97],256],7492:[[592],256],7493:[[593],256],7494:[[7426],256],7495:[[98],256],7496:[[100],256],7497:[[101],256],7498:[[601],256],7499:[[603],256],7500:[[604],256],7501:[[103],256],7503:[[107],256],7504:[[109],256],7505:[[331],256],7506:[[111],256],7507:[[596],256],7508:[[7446],256],7509:[[7447],256],7510:[[112],256],7511:[[116],256],7512:[[117],256],7513:[[7453],256],7514:[[623],256],7515:[[118],256],7516:[[7461],256],7517:[[946],256],7518:[[947],256],7519:[[948],256],7520:[[966],256],7521:[[967],256],7522:[[105],256],7523:[[114],256],7524:[[117],256],7525:[[118],256],7526:[[946],256],7527:[[947],256],7528:[[961],256],7529:[[966],256],7530:[[967],256],7544:[[1085],256],7579:[[594],256],7580:[[99],256],7581:[[597],256],7582:[[240],256],7583:[[604],256],7584:[[102],256],7585:[[607],256],7586:[[609],256],7587:[[613],256],7588:[[616],256],7589:[[617],256],7590:[[618],256],7591:[[7547],256],7592:[[669],256],7593:[[621],256],7594:[[7557],256],7595:[[671],256],7596:[[625],256],7597:[[624],256],7598:[[626],256],7599:[[627],256],7600:[[628],256],7601:[[629],256],7602:[[632],256],7603:[[642],256],7604:[[643],256],7605:[[427],256],7606:[[649],256],7607:[[650],256],7608:[[7452],256],7609:[[651],256],7610:[[652],256],7611:[[122],256],7612:[[656],256],7613:[[657],256],7614:[[658],256],7615:[[952],256],7616:[,230],7617:[,230],7618:[,220],7619:[,230],7620:[,230],7621:[,230],7622:[,230],7623:[,230],7624:[,230],7625:[,230],7626:[,220],7627:[,230],7628:[,230],7629:[,234],7630:[,214],7631:[,220],7632:[,202],7633:[,230],7634:[,230],7635:[,230],7636:[,230],7637:[,230],7638:[,230],7639:[,230],7640:[,230],7641:[,230],7642:[,230],7643:[,230],7644:[,230],7645:[,230],7646:[,230],7647:[,230],7648:[,230],7649:[,230],7650:[,230],7651:[,230],7652:[,230],7653:[,230],7654:[,230],7655:[,230],7656:[,230],7657:[,230],7658:[,230],7659:[,230],7660:[,230],7661:[,230],7662:[,230],7663:[,230],7664:[,230],7665:[,230],7666:[,230],7667:[,230],7668:[,230],7669:[,230],7676:[,233],7677:[,220],7678:[,230],7679:[,220]},
6811 7680:{7680:[[65,805]],7681:[[97,805]],7682:[[66,775]],7683:[[98,775]],7684:[[66,803]],7685:[[98,803]],7686:[[66,817]],7687:[[98,817]],7688:[[199,769]],7689:[[231,769]],7690:[[68,775]],7691:[[100,775]],7692:[[68,803]],7693:[[100,803]],7694:[[68,817]],7695:[[100,817]],7696:[[68,807]],7697:[[100,807]],7698:[[68,813]],7699:[[100,813]],7700:[[274,768]],7701:[[275,768]],7702:[[274,769]],7703:[[275,769]],7704:[[69,813]],7705:[[101,813]],7706:[[69,816]],7707:[[101,816]],7708:[[552,774]],7709:[[553,774]],7710:[[70,775]],7711:[[102,775]],7712:[[71,772]],7713:[[103,772]],7714:[[72,775]],7715:[[104,775]],7716:[[72,803]],7717:[[104,803]],7718:[[72,776]],7719:[[104,776]],7720:[[72,807]],7721:[[104,807]],7722:[[72,814]],7723:[[104,814]],7724:[[73,816]],7725:[[105,816]],7726:[[207,769]],7727:[[239,769]],7728:[[75,769]],7729:[[107,769]],7730:[[75,803]],7731:[[107,803]],7732:[[75,817]],7733:[[107,817]],7734:[[76,803],,{772:7736}],7735:[[108,803],,{772:7737}],7736:[[7734,772]],7737:[[7735,772]],7738:[[76,817]],7739:[[108,817]],7740:[[76,813]],7741:[[108,813]],7742:[[77,769]],7743:[[109,769]],7744:[[77,775]],7745:[[109,775]],7746:[[77,803]],7747:[[109,803]],7748:[[78,775]],7749:[[110,775]],7750:[[78,803]],7751:[[110,803]],7752:[[78,817]],7753:[[110,817]],7754:[[78,813]],7755:[[110,813]],7756:[[213,769]],7757:[[245,769]],7758:[[213,776]],7759:[[245,776]],7760:[[332,768]],7761:[[333,768]],7762:[[332,769]],7763:[[333,769]],7764:[[80,769]],7765:[[112,769]],7766:[[80,775]],7767:[[112,775]],7768:[[82,775]],7769:[[114,775]],7770:[[82,803],,{772:7772}],7771:[[114,803],,{772:7773}],7772:[[7770,772]],7773:[[7771,772]],7774:[[82,817]],7775:[[114,817]],7776:[[83,775]],7777:[[115,775]],7778:[[83,803],,{775:7784}],7779:[[115,803],,{775:7785}],7780:[[346,775]],7781:[[347,775]],7782:[[352,775]],7783:[[353,775]],7784:[[7778,775]],7785:[[7779,775]],7786:[[84,775]],7787:[[116,775]],7788:[[84,803]],7789:[[116,803]],7790:[[84,817]],7791:[[116,817]],7792:[[84,813]],7793:[[116,813]],7794:[[85,804]],7795:[[117,804]],7796:[[85,816]],7797:[[117,816]],7798:[[85,813]],7799:[[117,813]],7800:[[360,769]],7801:[[361,769]],7802:[[362,776]],7803:[[363,776]],7804:[[86,771]],7805:[[118,771]],7806:[[86,803]],7807:[[118,803]],7808:[[87,768]],7809:[[119,768]],7810:[[87,769]],7811:[[119,769]],7812:[[87,776]],7813:[[119,776]],7814:[[87,775]],7815:[[119,775]],7816:[[87,803]],7817:[[119,803]],7818:[[88,775]],7819:[[120,775]],7820:[[88,776]],7821:[[120,776]],7822:[[89,775]],7823:[[121,775]],7824:[[90,770]],7825:[[122,770]],7826:[[90,803]],7827:[[122,803]],7828:[[90,817]],7829:[[122,817]],7830:[[104,817]],7831:[[116,776]],7832:[[119,778]],7833:[[121,778]],7834:[[97,702],256],7835:[[383,775]],7840:[[65,803],,{770:7852,774:7862}],7841:[[97,803],,{770:7853,774:7863}],7842:[[65,777]],7843:[[97,777]],7844:[[194,769]],7845:[[226,769]],7846:[[194,768]],7847:[[226,768]],7848:[[194,777]],7849:[[226,777]],7850:[[194,771]],7851:[[226,771]],7852:[[7840,770]],7853:[[7841,770]],7854:[[258,769]],7855:[[259,769]],7856:[[258,768]],7857:[[259,768]],7858:[[258,777]],7859:[[259,777]],7860:[[258,771]],7861:[[259,771]],7862:[[7840,774]],7863:[[7841,774]],7864:[[69,803],,{770:7878}],7865:[[101,803],,{770:7879}],7866:[[69,777]],7867:[[101,777]],7868:[[69,771]],7869:[[101,771]],7870:[[202,769]],7871:[[234,769]],7872:[[202,768]],7873:[[234,768]],7874:[[202,777]],7875:[[234,777]],7876:[[202,771]],7877:[[234,771]],7878:[[7864,770]],7879:[[7865,770]],7880:[[73,777]],7881:[[105,777]],7882:[[73,803]],7883:[[105,803]],7884:[[79,803],,{770:7896}],7885:[[111,803],,{770:7897}],7886:[[79,777]],7887:[[111,777]],7888:[[212,769]],7889:[[244,769]],7890:[[212,768]],7891:[[244,768]],7892:[[212,777]],7893:[[244,777]],7894:[[212,771]],7895:[[244,771]],7896:[[7884,770]],7897:[[7885,770]],7898:[[416,769]],7899:[[417,769]],7900:[[416,768]],7901:[[417,768]],7902:[[416,777]],7903:[[417,777]],7904:[[416,771]],7905:[[417,771]],7906:[[416,803]],7907:[[417,803]],7908:[[85,803]],7909:[[117,803]],7910:[[85,777]],7911:[[117,777]],7912:[[431,769]],7913:[[432,769]],7914:[[431,768]],7915:[[432,768]],7916:[[431,777]],7917:[[432,777]],7918:[[431,771]],7919:[[432,771]],7920:[[431,803]],7921:[[432,803]],7922:[[89,768]],7923:[[121,768]],7924:[[89,803]],7925:[[121,803]],7926:[[89,777]],7927:[[121,777]],7928:[[89,771]],7929:[[121,771]]},
6812 7936:{7936:[[945,787],,{768:7938,769:7940,834:7942,837:8064}],7937:[[945,788],,{768:7939,769:7941,834:7943,837:8065}],7938:[[7936,768],,{837:8066}],7939:[[7937,768],,{837:8067}],7940:[[7936,769],,{837:8068}],7941:[[7937,769],,{837:8069}],7942:[[7936,834],,{837:8070}],7943:[[7937,834],,{837:8071}],7944:[[913,787],,{768:7946,769:7948,834:7950,837:8072}],7945:[[913,788],,{768:7947,769:7949,834:7951,837:8073}],7946:[[7944,768],,{837:8074}],7947:[[7945,768],,{837:8075}],7948:[[7944,769],,{837:8076}],7949:[[7945,769],,{837:8077}],7950:[[7944,834],,{837:8078}],7951:[[7945,834],,{837:8079}],7952:[[949,787],,{768:7954,769:7956}],7953:[[949,788],,{768:7955,769:7957}],7954:[[7952,768]],7955:[[7953,768]],7956:[[7952,769]],7957:[[7953,769]],7960:[[917,787],,{768:7962,769:7964}],7961:[[917,788],,{768:7963,769:7965}],7962:[[7960,768]],7963:[[7961,768]],7964:[[7960,769]],7965:[[7961,769]],7968:[[951,787],,{768:7970,769:7972,834:7974,837:8080}],7969:[[951,788],,{768:7971,769:7973,834:7975,837:8081}],7970:[[7968,768],,{837:8082}],7971:[[7969,768],,{837:8083}],7972:[[7968,769],,{837:8084}],7973:[[7969,769],,{837:8085}],7974:[[7968,834],,{837:8086}],7975:[[7969,834],,{837:8087}],7976:[[919,787],,{768:7978,769:7980,834:7982,837:8088}],7977:[[919,788],,{768:7979,769:7981,834:7983,837:8089}],7978:[[7976,768],,{837:8090}],7979:[[7977,768],,{837:8091}],7980:[[7976,769],,{837:8092}],7981:[[7977,769],,{837:8093}],7982:[[7976,834],,{837:8094}],7983:[[7977,834],,{837:8095}],7984:[[953,787],,{768:7986,769:7988,834:7990}],7985:[[953,788],,{768:7987,769:7989,834:7991}],7986:[[7984,768]],7987:[[7985,768]],7988:[[7984,769]],7989:[[7985,769]],7990:[[7984,834]],7991:[[7985,834]],7992:[[921,787],,{768:7994,769:7996,834:7998}],7993:[[921,788],,{768:7995,769:7997,834:7999}],7994:[[7992,768]],7995:[[7993,768]],7996:[[7992,769]],7997:[[7993,769]],7998:[[7992,834]],7999:[[7993,834]],8000:[[959,787],,{768:8002,769:8004}],8001:[[959,788],,{768:8003,769:8005}],8002:[[8000,768]],8003:[[8001,768]],8004:[[8000,769]],8005:[[8001,769]],8008:[[927,787],,{768:8010,769:8012}],8009:[[927,788],,{768:8011,769:8013}],8010:[[8008,768]],8011:[[8009,768]],8012:[[8008,769]],8013:[[8009,769]],8016:[[965,787],,{768:8018,769:8020,834:8022}],8017:[[965,788],,{768:8019,769:8021,834:8023}],8018:[[8016,768]],8019:[[8017,768]],8020:[[8016,769]],8021:[[8017,769]],8022:[[8016,834]],8023:[[8017,834]],8025:[[933,788],,{768:8027,769:8029,834:8031}],8027:[[8025,768]],8029:[[8025,769]],8031:[[8025,834]],8032:[[969,787],,{768:8034,769:8036,834:8038,837:8096}],8033:[[969,788],,{768:8035,769:8037,834:8039,837:8097}],8034:[[8032,768],,{837:8098}],8035:[[8033,768],,{837:8099}],8036:[[8032,769],,{837:8100}],8037:[[8033,769],,{837:8101}],8038:[[8032,834],,{837:8102}],8039:[[8033,834],,{837:8103}],8040:[[937,787],,{768:8042,769:8044,834:8046,837:8104}],8041:[[937,788],,{768:8043,769:8045,834:8047,837:8105}],8042:[[8040,768],,{837:8106}],8043:[[8041,768],,{837:8107}],8044:[[8040,769],,{837:8108}],8045:[[8041,769],,{837:8109}],8046:[[8040,834],,{837:8110}],8047:[[8041,834],,{837:8111}],8048:[[945,768],,{837:8114}],8049:[[940]],8050:[[949,768]],8051:[[941]],8052:[[951,768],,{837:8130}],8053:[[942]],8054:[[953,768]],8055:[[943]],8056:[[959,768]],8057:[[972]],8058:[[965,768]],8059:[[973]],8060:[[969,768],,{837:8178}],8061:[[974]],8064:[[7936,837]],8065:[[7937,837]],8066:[[7938,837]],8067:[[7939,837]],8068:[[7940,837]],8069:[[7941,837]],8070:[[7942,837]],8071:[[7943,837]],8072:[[7944,837]],8073:[[7945,837]],8074:[[7946,837]],8075:[[7947,837]],8076:[[7948,837]],8077:[[7949,837]],8078:[[7950,837]],8079:[[7951,837]],8080:[[7968,837]],8081:[[7969,837]],8082:[[7970,837]],8083:[[7971,837]],8084:[[7972,837]],8085:[[7973,837]],8086:[[7974,837]],8087:[[7975,837]],8088:[[7976,837]],8089:[[7977,837]],8090:[[7978,837]],8091:[[7979,837]],8092:[[7980,837]],8093:[[7981,837]],8094:[[7982,837]],8095:[[7983,837]],8096:[[8032,837]],8097:[[8033,837]],8098:[[8034,837]],8099:[[8035,837]],8100:[[8036,837]],8101:[[8037,837]],8102:[[8038,837]],8103:[[8039,837]],8104:[[8040,837]],8105:[[8041,837]],8106:[[8042,837]],8107:[[8043,837]],8108:[[8044,837]],8109:[[8045,837]],8110:[[8046,837]],8111:[[8047,837]],8112:[[945,774]],8113:[[945,772]],8114:[[8048,837]],8115:[[945,837]],8116:[[940,837]],8118:[[945,834],,{837:8119}],8119:[[8118,837]],8120:[[913,774]],8121:[[913,772]],8122:[[913,768]],8123:[[902]],8124:[[913,837]],8125:[[32,787],256],8126:[[953]],8127:[[32,787],256,{768:8141,769:8142,834:8143}],8128:[[32,834],256],8129:[[168,834]],8130:[[8052,837]],8131:[[951,837]],8132:[[942,837]],8134:[[951,834],,{837:8135}],8135:[[8134,837]],8136:[[917,768]],8137:[[904]],8138:[[919,768]],8139:[[905]],8140:[[919,837]],8141:[[8127,768]],8142:[[8127,769]],8143:[[8127,834]],8144:[[953,774]],8145:[[953,772]],8146:[[970,768]],8147:[[912]],8150:[[953,834]],8151:[[970,834]],8152:[[921,774]],8153:[[921,772]],8154:[[921,768]],8155:[[906]],8157:[[8190,768]],8158:[[8190,769]],8159:[[8190,834]],8160:[[965,774]],8161:[[965,772]],8162:[[971,768]],8163:[[944]],8164:[[961,787]],8165:[[961,788]],8166:[[965,834]],8167:[[971,834]],8168:[[933,774]],8169:[[933,772]],8170:[[933,768]],8171:[[910]],8172:[[929,788]],8173:[[168,768]],8174:[[901]],8175:[[96]],8178:[[8060,837]],8179:[[969,837]],8180:[[974,837]],8182:[[969,834],,{837:8183}],8183:[[8182,837]],8184:[[927,768]],8185:[[908]],8186:[[937,768]],8187:[[911]],8188:[[937,837]],8189:[[180]],8190:[[32,788],256,{768:8157,769:8158,834:8159}]},
6813 8192:{8192:[[8194]],8193:[[8195]],8194:[[32],256],8195:[[32],256],8196:[[32],256],8197:[[32],256],8198:[[32],256],8199:[[32],256],8200:[[32],256],8201:[[32],256],8202:[[32],256],8209:[[8208],256],8215:[[32,819],256],8228:[[46],256],8229:[[46,46],256],8230:[[46,46,46],256],8239:[[32],256],8243:[[8242,8242],256],8244:[[8242,8242,8242],256],8246:[[8245,8245],256],8247:[[8245,8245,8245],256],8252:[[33,33],256],8254:[[32,773],256],8263:[[63,63],256],8264:[[63,33],256],8265:[[33,63],256],8279:[[8242,8242,8242,8242],256],8287:[[32],256],8304:[[48],256],8305:[[105],256],8308:[[52],256],8309:[[53],256],8310:[[54],256],8311:[[55],256],8312:[[56],256],8313:[[57],256],8314:[[43],256],8315:[[8722],256],8316:[[61],256],8317:[[40],256],8318:[[41],256],8319:[[110],256],8320:[[48],256],8321:[[49],256],8322:[[50],256],8323:[[51],256],8324:[[52],256],8325:[[53],256],8326:[[54],256],8327:[[55],256],8328:[[56],256],8329:[[57],256],8330:[[43],256],8331:[[8722],256],8332:[[61],256],8333:[[40],256],8334:[[41],256],8336:[[97],256],8337:[[101],256],8338:[[111],256],8339:[[120],256],8340:[[601],256],8341:[[104],256],8342:[[107],256],8343:[[108],256],8344:[[109],256],8345:[[110],256],8346:[[112],256],8347:[[115],256],8348:[[116],256],8360:[[82,115],256],8400:[,230],8401:[,230],8402:[,1],8403:[,1],8404:[,230],8405:[,230],8406:[,230],8407:[,230],8408:[,1],8409:[,1],8410:[,1],8411:[,230],8412:[,230],8417:[,230],8421:[,1],8422:[,1],8423:[,230],8424:[,220],8425:[,230],8426:[,1],8427:[,1],8428:[,220],8429:[,220],8430:[,220],8431:[,220],8432:[,230]},
6814 8448:{8448:[[97,47,99],256],8449:[[97,47,115],256],8450:[[67],256],8451:[[176,67],256],8453:[[99,47,111],256],8454:[[99,47,117],256],8455:[[400],256],8457:[[176,70],256],8458:[[103],256],8459:[[72],256],8460:[[72],256],8461:[[72],256],8462:[[104],256],8463:[[295],256],8464:[[73],256],8465:[[73],256],8466:[[76],256],8467:[[108],256],8469:[[78],256],8470:[[78,111],256],8473:[[80],256],8474:[[81],256],8475:[[82],256],8476:[[82],256],8477:[[82],256],8480:[[83,77],256],8481:[[84,69,76],256],8482:[[84,77],256],8484:[[90],256],8486:[[937]],8488:[[90],256],8490:[[75]],8491:[[197]],8492:[[66],256],8493:[[67],256],8495:[[101],256],8496:[[69],256],8497:[[70],256],8499:[[77],256],8500:[[111],256],8501:[[1488],256],8502:[[1489],256],8503:[[1490],256],8504:[[1491],256],8505:[[105],256],8507:[[70,65,88],256],8508:[[960],256],8509:[[947],256],8510:[[915],256],8511:[[928],256],8512:[[8721],256],8517:[[68],256],8518:[[100],256],8519:[[101],256],8520:[[105],256],8521:[[106],256],8528:[[49,8260,55],256],8529:[[49,8260,57],256],8530:[[49,8260,49,48],256],8531:[[49,8260,51],256],8532:[[50,8260,51],256],8533:[[49,8260,53],256],8534:[[50,8260,53],256],8535:[[51,8260,53],256],8536:[[52,8260,53],256],8537:[[49,8260,54],256],8538:[[53,8260,54],256],8539:[[49,8260,56],256],8540:[[51,8260,56],256],8541:[[53,8260,56],256],8542:[[55,8260,56],256],8543:[[49,8260],256],8544:[[73],256],8545:[[73,73],256],8546:[[73,73,73],256],8547:[[73,86],256],8548:[[86],256],8549:[[86,73],256],8550:[[86,73,73],256],8551:[[86,73,73,73],256],8552:[[73,88],256],8553:[[88],256],8554:[[88,73],256],8555:[[88,73,73],256],8556:[[76],256],8557:[[67],256],8558:[[68],256],8559:[[77],256],8560:[[105],256],8561:[[105,105],256],8562:[[105,105,105],256],8563:[[105,118],256],8564:[[118],256],8565:[[118,105],256],8566:[[118,105,105],256],8567:[[118,105,105,105],256],8568:[[105,120],256],8569:[[120],256],8570:[[120,105],256],8571:[[120,105,105],256],8572:[[108],256],8573:[[99],256],8574:[[100],256],8575:[[109],256],8585:[[48,8260,51],256],8592:[,,{824:8602}],8594:[,,{824:8603}],8596:[,,{824:8622}],8602:[[8592,824]],8603:[[8594,824]],8622:[[8596,824]],8653:[[8656,824]],8654:[[8660,824]],8655:[[8658,824]],8656:[,,{824:8653}],8658:[,,{824:8655}],8660:[,,{824:8654}]},
6815 8704:{8707:[,,{824:8708}],8708:[[8707,824]],8712:[,,{824:8713}],8713:[[8712,824]],8715:[,,{824:8716}],8716:[[8715,824]],8739:[,,{824:8740}],8740:[[8739,824]],8741:[,,{824:8742}],8742:[[8741,824]],8748:[[8747,8747],256],8749:[[8747,8747,8747],256],8751:[[8750,8750],256],8752:[[8750,8750,8750],256],8764:[,,{824:8769}],8769:[[8764,824]],8771:[,,{824:8772}],8772:[[8771,824]],8773:[,,{824:8775}],8775:[[8773,824]],8776:[,,{824:8777}],8777:[[8776,824]],8781:[,,{824:8813}],8800:[[61,824]],8801:[,,{824:8802}],8802:[[8801,824]],8804:[,,{824:8816}],8805:[,,{824:8817}],8813:[[8781,824]],8814:[[60,824]],8815:[[62,824]],8816:[[8804,824]],8817:[[8805,824]],8818:[,,{824:8820}],8819:[,,{824:8821}],8820:[[8818,824]],8821:[[8819,824]],8822:[,,{824:8824}],8823:[,,{824:8825}],8824:[[8822,824]],8825:[[8823,824]],8826:[,,{824:8832}],8827:[,,{824:8833}],8828:[,,{824:8928}],8829:[,,{824:8929}],8832:[[8826,824]],8833:[[8827,824]],8834:[,,{824:8836}],8835:[,,{824:8837}],8836:[[8834,824]],8837:[[8835,824]],8838:[,,{824:8840}],8839:[,,{824:8841}],8840:[[8838,824]],8841:[[8839,824]],8849:[,,{824:8930}],8850:[,,{824:8931}],8866:[,,{824:8876}],8872:[,,{824:8877}],8873:[,,{824:8878}],8875:[,,{824:8879}],8876:[[8866,824]],8877:[[8872,824]],8878:[[8873,824]],8879:[[8875,824]],8882:[,,{824:8938}],8883:[,,{824:8939}],8884:[,,{824:8940}],8885:[,,{824:8941}],8928:[[8828,824]],8929:[[8829,824]],8930:[[8849,824]],8931:[[8850,824]],8938:[[8882,824]],8939:[[8883,824]],8940:[[8884,824]],8941:[[8885,824]]},
6816 8960:{9001:[[12296]],9002:[[12297]]},
6817 9216:{9312:[[49],256],9313:[[50],256],9314:[[51],256],9315:[[52],256],9316:[[53],256],9317:[[54],256],9318:[[55],256],9319:[[56],256],9320:[[57],256],9321:[[49,48],256],9322:[[49,49],256],9323:[[49,50],256],9324:[[49,51],256],9325:[[49,52],256],9326:[[49,53],256],9327:[[49,54],256],9328:[[49,55],256],9329:[[49,56],256],9330:[[49,57],256],9331:[[50,48],256],9332:[[40,49,41],256],9333:[[40,50,41],256],9334:[[40,51,41],256],9335:[[40,52,41],256],9336:[[40,53,41],256],9337:[[40,54,41],256],9338:[[40,55,41],256],9339:[[40,56,41],256],9340:[[40,57,41],256],9341:[[40,49,48,41],256],9342:[[40,49,49,41],256],9343:[[40,49,50,41],256],9344:[[40,49,51,41],256],9345:[[40,49,52,41],256],9346:[[40,49,53,41],256],9347:[[40,49,54,41],256],9348:[[40,49,55,41],256],9349:[[40,49,56,41],256],9350:[[40,49,57,41],256],9351:[[40,50,48,41],256],9352:[[49,46],256],9353:[[50,46],256],9354:[[51,46],256],9355:[[52,46],256],9356:[[53,46],256],9357:[[54,46],256],9358:[[55,46],256],9359:[[56,46],256],9360:[[57,46],256],9361:[[49,48,46],256],9362:[[49,49,46],256],9363:[[49,50,46],256],9364:[[49,51,46],256],9365:[[49,52,46],256],9366:[[49,53,46],256],9367:[[49,54,46],256],9368:[[49,55,46],256],9369:[[49,56,46],256],9370:[[49,57,46],256],9371:[[50,48,46],256],9372:[[40,97,41],256],9373:[[40,98,41],256],9374:[[40,99,41],256],9375:[[40,100,41],256],9376:[[40,101,41],256],9377:[[40,102,41],256],9378:[[40,103,41],256],9379:[[40,104,41],256],9380:[[40,105,41],256],9381:[[40,106,41],256],9382:[[40,107,41],256],9383:[[40,108,41],256],9384:[[40,109,41],256],9385:[[40,110,41],256],9386:[[40,111,41],256],9387:[[40,112,41],256],9388:[[40,113,41],256],9389:[[40,114,41],256],9390:[[40,115,41],256],9391:[[40,116,41],256],9392:[[40,117,41],256],9393:[[40,118,41],256],9394:[[40,119,41],256],9395:[[40,120,41],256],9396:[[40,121,41],256],9397:[[40,122,41],256],9398:[[65],256],9399:[[66],256],9400:[[67],256],9401:[[68],256],9402:[[69],256],9403:[[70],256],9404:[[71],256],9405:[[72],256],9406:[[73],256],9407:[[74],256],9408:[[75],256],9409:[[76],256],9410:[[77],256],9411:[[78],256],9412:[[79],256],9413:[[80],256],9414:[[81],256],9415:[[82],256],9416:[[83],256],9417:[[84],256],9418:[[85],256],9419:[[86],256],9420:[[87],256],9421:[[88],256],9422:[[89],256],9423:[[90],256],9424:[[97],256],9425:[[98],256],9426:[[99],256],9427:[[100],256],9428:[[101],256],9429:[[102],256],9430:[[103],256],9431:[[104],256],9432:[[105],256],9433:[[106],256],9434:[[107],256],9435:[[108],256],9436:[[109],256],9437:[[110],256],9438:[[111],256],9439:[[112],256],9440:[[113],256],9441:[[114],256],9442:[[115],256],9443:[[116],256],9444:[[117],256],9445:[[118],256],9446:[[119],256],9447:[[120],256],9448:[[121],256],9449:[[122],256],9450:[[48],256]},
6818 10752:{10764:[[8747,8747,8747,8747],256],10868:[[58,58,61],256],10869:[[61,61],256],10870:[[61,61,61],256],10972:[[10973,824],512]},
6819 11264:{11388:[[106],256],11389:[[86],256],11503:[,230],11504:[,230],11505:[,230]},
6820 11520:{11631:[[11617],256],11647:[,9],11744:[,230],11745:[,230],11746:[,230],11747:[,230],11748:[,230],11749:[,230],11750:[,230],11751:[,230],11752:[,230],11753:[,230],11754:[,230],11755:[,230],11756:[,230],11757:[,230],11758:[,230],11759:[,230],11760:[,230],11761:[,230],11762:[,230],11763:[,230],11764:[,230],11765:[,230],11766:[,230],11767:[,230],11768:[,230],11769:[,230],11770:[,230],11771:[,230],11772:[,230],11773:[,230],11774:[,230],11775:[,230]},
6821 11776:{11935:[[27597],256],12019:[[40863],256]},
6822 12032:{12032:[[19968],256],12033:[[20008],256],12034:[[20022],256],12035:[[20031],256],12036:[[20057],256],12037:[[20101],256],12038:[[20108],256],12039:[[20128],256],12040:[[20154],256],12041:[[20799],256],12042:[[20837],256],12043:[[20843],256],12044:[[20866],256],12045:[[20886],256],12046:[[20907],256],12047:[[20960],256],12048:[[20981],256],12049:[[20992],256],12050:[[21147],256],12051:[[21241],256],12052:[[21269],256],12053:[[21274],256],12054:[[21304],256],12055:[[21313],256],12056:[[21340],256],12057:[[21353],256],12058:[[21378],256],12059:[[21430],256],12060:[[21448],256],12061:[[21475],256],12062:[[22231],256],12063:[[22303],256],12064:[[22763],256],12065:[[22786],256],12066:[[22794],256],12067:[[22805],256],12068:[[22823],256],12069:[[22899],256],12070:[[23376],256],12071:[[23424],256],12072:[[23544],256],12073:[[23567],256],12074:[[23586],256],12075:[[23608],256],12076:[[23662],256],12077:[[23665],256],12078:[[24027],256],12079:[[24037],256],12080:[[24049],256],12081:[[24062],256],12082:[[24178],256],12083:[[24186],256],12084:[[24191],256],12085:[[24308],256],12086:[[24318],256],12087:[[24331],256],12088:[[24339],256],12089:[[24400],256],12090:[[24417],256],12091:[[24435],256],12092:[[24515],256],12093:[[25096],256],12094:[[25142],256],12095:[[25163],256],12096:[[25903],256],12097:[[25908],256],12098:[[25991],256],12099:[[26007],256],12100:[[26020],256],12101:[[26041],256],12102:[[26080],256],12103:[[26085],256],12104:[[26352],256],12105:[[26376],256],12106:[[26408],256],12107:[[27424],256],12108:[[27490],256],12109:[[27513],256],12110:[[27571],256],12111:[[27595],256],12112:[[27604],256],12113:[[27611],256],12114:[[27663],256],12115:[[27668],256],12116:[[27700],256],12117:[[28779],256],12118:[[29226],256],12119:[[29238],256],12120:[[29243],256],12121:[[29247],256],12122:[[29255],256],12123:[[29273],256],12124:[[29275],256],12125:[[29356],256],12126:[[29572],256],12127:[[29577],256],12128:[[29916],256],12129:[[29926],256],12130:[[29976],256],12131:[[29983],256],12132:[[29992],256],12133:[[30000],256],12134:[[30091],256],12135:[[30098],256],12136:[[30326],256],12137:[[30333],256],12138:[[30382],256],12139:[[30399],256],12140:[[30446],256],12141:[[30683],256],12142:[[30690],256],12143:[[30707],256],12144:[[31034],256],12145:[[31160],256],12146:[[31166],256],12147:[[31348],256],12148:[[31435],256],12149:[[31481],256],12150:[[31859],256],12151:[[31992],256],12152:[[32566],256],12153:[[32593],256],12154:[[32650],256],12155:[[32701],256],12156:[[32769],256],12157:[[32780],256],12158:[[32786],256],12159:[[32819],256],12160:[[32895],256],12161:[[32905],256],12162:[[33251],256],12163:[[33258],256],12164:[[33267],256],12165:[[33276],256],12166:[[33292],256],12167:[[33307],256],12168:[[33311],256],12169:[[33390],256],12170:[[33394],256],12171:[[33400],256],12172:[[34381],256],12173:[[34411],256],12174:[[34880],256],12175:[[34892],256],12176:[[34915],256],12177:[[35198],256],12178:[[35211],256],12179:[[35282],256],12180:[[35328],256],12181:[[35895],256],12182:[[35910],256],12183:[[35925],256],12184:[[35960],256],12185:[[35997],256],12186:[[36196],256],12187:[[36208],256],12188:[[36275],256],12189:[[36523],256],12190:[[36554],256],12191:[[36763],256],12192:[[36784],256],12193:[[36789],256],12194:[[37009],256],12195:[[37193],256],12196:[[37318],256],12197:[[37324],256],12198:[[37329],256],12199:[[38263],256],12200:[[38272],256],12201:[[38428],256],12202:[[38582],256],12203:[[38585],256],12204:[[38632],256],12205:[[38737],256],12206:[[38750],256],12207:[[38754],256],12208:[[38761],256],12209:[[38859],256],12210:[[38893],256],12211:[[38899],256],12212:[[38913],256],12213:[[39080],256],12214:[[39131],256],12215:[[39135],256],12216:[[39318],256],12217:[[39321],256],12218:[[39340],256],12219:[[39592],256],12220:[[39640],256],12221:[[39647],256],12222:[[39717],256],12223:[[39727],256],12224:[[39730],256],12225:[[39740],256],12226:[[39770],256],12227:[[40165],256],12228:[[40565],256],12229:[[40575],256],12230:[[40613],256],12231:[[40635],256],12232:[[40643],256],12233:[[40653],256],12234:[[40657],256],12235:[[40697],256],12236:[[40701],256],12237:[[40718],256],12238:[[40723],256],12239:[[40736],256],12240:[[40763],256],12241:[[40778],256],12242:[[40786],256],12243:[[40845],256],12244:[[40860],256],12245:[[40864],256]},
6823 12288:{12288:[[32],256],12330:[,218],12331:[,228],12332:[,232],12333:[,222],12334:[,224],12335:[,224],12342:[[12306],256],12344:[[21313],256],12345:[[21316],256],12346:[[21317],256],12358:[,,{12441:12436}],12363:[,,{12441:12364}],12364:[[12363,12441]],12365:[,,{12441:12366}],12366:[[12365,12441]],12367:[,,{12441:12368}],12368:[[12367,12441]],12369:[,,{12441:12370}],12370:[[12369,12441]],12371:[,,{12441:12372}],12372:[[12371,12441]],12373:[,,{12441:12374}],12374:[[12373,12441]],12375:[,,{12441:12376}],12376:[[12375,12441]],12377:[,,{12441:12378}],12378:[[12377,12441]],12379:[,,{12441:12380}],12380:[[12379,12441]],12381:[,,{12441:12382}],12382:[[12381,12441]],12383:[,,{12441:12384}],12384:[[12383,12441]],12385:[,,{12441:12386}],12386:[[12385,12441]],12388:[,,{12441:12389}],12389:[[12388,12441]],12390:[,,{12441:12391}],12391:[[12390,12441]],12392:[,,{12441:12393}],12393:[[12392,12441]],12399:[,,{12441:12400,12442:12401}],12400:[[12399,12441]],12401:[[12399,12442]],12402:[,,{12441:12403,12442:12404}],12403:[[12402,12441]],12404:[[12402,12442]],12405:[,,{12441:12406,12442:12407}],12406:[[12405,12441]],12407:[[12405,12442]],12408:[,,{12441:12409,12442:12410}],12409:[[12408,12441]],12410:[[12408,12442]],12411:[,,{12441:12412,12442:12413}],12412:[[12411,12441]],12413:[[12411,12442]],12436:[[12358,12441]],12441:[,8],12442:[,8],12443:[[32,12441],256],12444:[[32,12442],256],12445:[,,{12441:12446}],12446:[[12445,12441]],12447:[[12424,12426],256],12454:[,,{12441:12532}],12459:[,,{12441:12460}],12460:[[12459,12441]],12461:[,,{12441:12462}],12462:[[12461,12441]],12463:[,,{12441:12464}],12464:[[12463,12441]],12465:[,,{12441:12466}],12466:[[12465,12441]],12467:[,,{12441:12468}],12468:[[12467,12441]],12469:[,,{12441:12470}],12470:[[12469,12441]],12471:[,,{12441:12472}],12472:[[12471,12441]],12473:[,,{12441:12474}],12474:[[12473,12441]],12475:[,,{12441:12476}],12476:[[12475,12441]],12477:[,,{12441:12478}],12478:[[12477,12441]],12479:[,,{12441:12480}],12480:[[12479,12441]],12481:[,,{12441:12482}],12482:[[12481,12441]],12484:[,,{12441:12485}],12485:[[12484,12441]],12486:[,,{12441:12487}],12487:[[12486,12441]],12488:[,,{12441:12489}],12489:[[12488,12441]],12495:[,,{12441:12496,12442:12497}],12496:[[12495,12441]],12497:[[12495,12442]],12498:[,,{12441:12499,12442:12500}],12499:[[12498,12441]],12500:[[12498,12442]],12501:[,,{12441:12502,12442:12503}],12502:[[12501,12441]],12503:[[12501,12442]],12504:[,,{12441:12505,12442:12506}],12505:[[12504,12441]],12506:[[12504,12442]],12507:[,,{12441:12508,12442:12509}],12508:[[12507,12441]],12509:[[12507,12442]],12527:[,,{12441:12535}],12528:[,,{12441:12536}],12529:[,,{12441:12537}],12530:[,,{12441:12538}],12532:[[12454,12441]],12535:[[12527,12441]],12536:[[12528,12441]],12537:[[12529,12441]],12538:[[12530,12441]],12541:[,,{12441:12542}],12542:[[12541,12441]],12543:[[12467,12488],256]},
6824 12544:{12593:[[4352],256],12594:[[4353],256],12595:[[4522],256],12596:[[4354],256],12597:[[4524],256],12598:[[4525],256],12599:[[4355],256],12600:[[4356],256],12601:[[4357],256],12602:[[4528],256],12603:[[4529],256],12604:[[4530],256],12605:[[4531],256],12606:[[4532],256],12607:[[4533],256],12608:[[4378],256],12609:[[4358],256],12610:[[4359],256],12611:[[4360],256],12612:[[4385],256],12613:[[4361],256],12614:[[4362],256],12615:[[4363],256],12616:[[4364],256],12617:[[4365],256],12618:[[4366],256],12619:[[4367],256],12620:[[4368],256],12621:[[4369],256],12622:[[4370],256],12623:[[4449],256],12624:[[4450],256],12625:[[4451],256],12626:[[4452],256],12627:[[4453],256],12628:[[4454],256],12629:[[4455],256],12630:[[4456],256],12631:[[4457],256],12632:[[4458],256],12633:[[4459],256],12634:[[4460],256],12635:[[4461],256],12636:[[4462],256],12637:[[4463],256],12638:[[4464],256],12639:[[4465],256],12640:[[4466],256],12641:[[4467],256],12642:[[4468],256],12643:[[4469],256],12644:[[4448],256],12645:[[4372],256],12646:[[4373],256],12647:[[4551],256],12648:[[4552],256],12649:[[4556],256],12650:[[4558],256],12651:[[4563],256],12652:[[4567],256],12653:[[4569],256],12654:[[4380],256],12655:[[4573],256],12656:[[4575],256],12657:[[4381],256],12658:[[4382],256],12659:[[4384],256],12660:[[4386],256],12661:[[4387],256],12662:[[4391],256],12663:[[4393],256],12664:[[4395],256],12665:[[4396],256],12666:[[4397],256],12667:[[4398],256],12668:[[4399],256],12669:[[4402],256],12670:[[4406],256],12671:[[4416],256],12672:[[4423],256],12673:[[4428],256],12674:[[4593],256],12675:[[4594],256],12676:[[4439],256],12677:[[4440],256],12678:[[4441],256],12679:[[4484],256],12680:[[4485],256],12681:[[4488],256],12682:[[4497],256],12683:[[4498],256],12684:[[4500],256],12685:[[4510],256],12686:[[4513],256],12690:[[19968],256],12691:[[20108],256],12692:[[19977],256],12693:[[22235],256],12694:[[19978],256],12695:[[20013],256],12696:[[19979],256],12697:[[30002],256],12698:[[20057],256],12699:[[19993],256],12700:[[19969],256],12701:[[22825],256],12702:[[22320],256],12703:[[20154],256]},
6825 12800:{12800:[[40,4352,41],256],12801:[[40,4354,41],256],12802:[[40,4355,41],256],12803:[[40,4357,41],256],12804:[[40,4358,41],256],12805:[[40,4359,41],256],12806:[[40,4361,41],256],12807:[[40,4363,41],256],12808:[[40,4364,41],256],12809:[[40,4366,41],256],12810:[[40,4367,41],256],12811:[[40,4368,41],256],12812:[[40,4369,41],256],12813:[[40,4370,41],256],12814:[[40,4352,4449,41],256],12815:[[40,4354,4449,41],256],12816:[[40,4355,4449,41],256],12817:[[40,4357,4449,41],256],12818:[[40,4358,4449,41],256],12819:[[40,4359,4449,41],256],12820:[[40,4361,4449,41],256],12821:[[40,4363,4449,41],256],12822:[[40,4364,4449,41],256],12823:[[40,4366,4449,41],256],12824:[[40,4367,4449,41],256],12825:[[40,4368,4449,41],256],12826:[[40,4369,4449,41],256],12827:[[40,4370,4449,41],256],12828:[[40,4364,4462,41],256],12829:[[40,4363,4457,4364,4453,4523,41],256],12830:[[40,4363,4457,4370,4462,41],256],12832:[[40,19968,41],256],12833:[[40,20108,41],256],12834:[[40,19977,41],256],12835:[[40,22235,41],256],12836:[[40,20116,41],256],12837:[[40,20845,41],256],12838:[[40,19971,41],256],12839:[[40,20843,41],256],12840:[[40,20061,41],256],12841:[[40,21313,41],256],12842:[[40,26376,41],256],12843:[[40,28779,41],256],12844:[[40,27700,41],256],12845:[[40,26408,41],256],12846:[[40,37329,41],256],12847:[[40,22303,41],256],12848:[[40,26085,41],256],12849:[[40,26666,41],256],12850:[[40,26377,41],256],12851:[[40,31038,41],256],12852:[[40,21517,41],256],12853:[[40,29305,41],256],12854:[[40,36001,41],256],12855:[[40,31069,41],256],12856:[[40,21172,41],256],12857:[[40,20195,41],256],12858:[[40,21628,41],256],12859:[[40,23398,41],256],12860:[[40,30435,41],256],12861:[[40,20225,41],256],12862:[[40,36039,41],256],12863:[[40,21332,41],256],12864:[[40,31085,41],256],12865:[[40,20241,41],256],12866:[[40,33258,41],256],12867:[[40,33267,41],256],12868:[[21839],256],12869:[[24188],256],12870:[[25991],256],12871:[[31631],256],12880:[[80,84,69],256],12881:[[50,49],256],12882:[[50,50],256],12883:[[50,51],256],12884:[[50,52],256],12885:[[50,53],256],12886:[[50,54],256],12887:[[50,55],256],12888:[[50,56],256],12889:[[50,57],256],12890:[[51,48],256],12891:[[51,49],256],12892:[[51,50],256],12893:[[51,51],256],12894:[[51,52],256],12895:[[51,53],256],12896:[[4352],256],12897:[[4354],256],12898:[[4355],256],12899:[[4357],256],12900:[[4358],256],12901:[[4359],256],12902:[[4361],256],12903:[[4363],256],12904:[[4364],256],12905:[[4366],256],12906:[[4367],256],12907:[[4368],256],12908:[[4369],256],12909:[[4370],256],12910:[[4352,4449],256],12911:[[4354,4449],256],12912:[[4355,4449],256],12913:[[4357,4449],256],12914:[[4358,4449],256],12915:[[4359,4449],256],12916:[[4361,4449],256],12917:[[4363,4449],256],12918:[[4364,4449],256],12919:[[4366,4449],256],12920:[[4367,4449],256],12921:[[4368,4449],256],12922:[[4369,4449],256],12923:[[4370,4449],256],12924:[[4366,4449,4535,4352,4457],256],12925:[[4364,4462,4363,4468],256],12926:[[4363,4462],256],12928:[[19968],256],12929:[[20108],256],12930:[[19977],256],12931:[[22235],256],12932:[[20116],256],12933:[[20845],256],12934:[[19971],256],12935:[[20843],256],12936:[[20061],256],12937:[[21313],256],12938:[[26376],256],12939:[[28779],256],12940:[[27700],256],12941:[[26408],256],12942:[[37329],256],12943:[[22303],256],12944:[[26085],256],12945:[[26666],256],12946:[[26377],256],12947:[[31038],256],12948:[[21517],256],12949:[[29305],256],12950:[[36001],256],12951:[[31069],256],12952:[[21172],256],12953:[[31192],256],12954:[[30007],256],12955:[[22899],256],12956:[[36969],256],12957:[[20778],256],12958:[[21360],256],12959:[[27880],256],12960:[[38917],256],12961:[[20241],256],12962:[[20889],256],12963:[[27491],256],12964:[[19978],256],12965:[[20013],256],12966:[[19979],256],12967:[[24038],256],12968:[[21491],256],12969:[[21307],256],12970:[[23447],256],12971:[[23398],256],12972:[[30435],256],12973:[[20225],256],12974:[[36039],256],12975:[[21332],256],12976:[[22812],256],12977:[[51,54],256],12978:[[51,55],256],12979:[[51,56],256],12980:[[51,57],256],12981:[[52,48],256],12982:[[52,49],256],12983:[[52,50],256],12984:[[52,51],256],12985:[[52,52],256],12986:[[52,53],256],12987:[[52,54],256],12988:[[52,55],256],12989:[[52,56],256],12990:[[52,57],256],12991:[[53,48],256],12992:[[49,26376],256],12993:[[50,26376],256],12994:[[51,26376],256],12995:[[52,26376],256],12996:[[53,26376],256],12997:[[54,26376],256],12998:[[55,26376],256],12999:[[56,26376],256],13000:[[57,26376],256],13001:[[49,48,26376],256],13002:[[49,49,26376],256],13003:[[49,50,26376],256],13004:[[72,103],256],13005:[[101,114,103],256],13006:[[101,86],256],13007:[[76,84,68],256],13008:[[12450],256],13009:[[12452],256],13010:[[12454],256],13011:[[12456],256],13012:[[12458],256],13013:[[12459],256],13014:[[12461],256],13015:[[12463],256],13016:[[12465],256],13017:[[12467],256],13018:[[12469],256],13019:[[12471],256],13020:[[12473],256],13021:[[12475],256],13022:[[12477],256],13023:[[12479],256],13024:[[12481],256],13025:[[12484],256],13026:[[12486],256],13027:[[12488],256],13028:[[12490],256],13029:[[12491],256],13030:[[12492],256],13031:[[12493],256],13032:[[12494],256],13033:[[12495],256],13034:[[12498],256],13035:[[12501],256],13036:[[12504],256],13037:[[12507],256],13038:[[12510],256],13039:[[12511],256],13040:[[12512],256],13041:[[12513],256],13042:[[12514],256],13043:[[12516],256],13044:[[12518],256],13045:[[12520],256],13046:[[12521],256],13047:[[12522],256],13048:[[12523],256],13049:[[12524],256],13050:[[12525],256],13051:[[12527],256],13052:[[12528],256],13053:[[12529],256],13054:[[12530],256]},
6826 13056:{13056:[[12450,12497,12540,12488],256],13057:[[12450,12523,12501,12449],256],13058:[[12450,12531,12506,12450],256],13059:[[12450,12540,12523],256],13060:[[12452,12491,12531,12464],256],13061:[[12452,12531,12481],256],13062:[[12454,12457,12531],256],13063:[[12456,12473,12463,12540,12489],256],13064:[[12456,12540,12459,12540],256],13065:[[12458,12531,12473],256],13066:[[12458,12540,12512],256],13067:[[12459,12452,12522],256],13068:[[12459,12521,12483,12488],256],13069:[[12459,12525,12522,12540],256],13070:[[12460,12525,12531],256],13071:[[12460,12531,12510],256],13072:[[12462,12460],256],13073:[[12462,12491,12540],256],13074:[[12461,12517,12522,12540],256],13075:[[12462,12523,12480,12540],256],13076:[[12461,12525],256],13077:[[12461,12525,12464,12521,12512],256],13078:[[12461,12525,12513,12540,12488,12523],256],13079:[[12461,12525,12527,12483,12488],256],13080:[[12464,12521,12512],256],13081:[[12464,12521,12512,12488,12531],256],13082:[[12463,12523,12476,12452,12525],256],13083:[[12463,12525,12540,12493],256],13084:[[12465,12540,12473],256],13085:[[12467,12523,12490],256],13086:[[12467,12540,12509],256],13087:[[12469,12452,12463,12523],256],13088:[[12469,12531,12481,12540,12512],256],13089:[[12471,12522,12531,12464],256],13090:[[12475,12531,12481],256],13091:[[12475,12531,12488],256],13092:[[12480,12540,12473],256],13093:[[12487,12471],256],13094:[[12489,12523],256],13095:[[12488,12531],256],13096:[[12490,12494],256],13097:[[12494,12483,12488],256],13098:[[12495,12452,12484],256],13099:[[12497,12540,12475,12531,12488],256],13100:[[12497,12540,12484],256],13101:[[12496,12540,12524,12523],256],13102:[[12500,12450,12473,12488,12523],256],13103:[[12500,12463,12523],256],13104:[[12500,12467],256],13105:[[12499,12523],256],13106:[[12501,12449,12521,12483,12489],256],13107:[[12501,12451,12540,12488],256],13108:[[12502,12483,12471,12455,12523],256],13109:[[12501,12521,12531],256],13110:[[12504,12463,12479,12540,12523],256],13111:[[12506,12477],256],13112:[[12506,12491,12498],256],13113:[[12504,12523,12484],256],13114:[[12506,12531,12473],256],13115:[[12506,12540,12472],256],13116:[[12505,12540,12479],256],13117:[[12509,12452,12531,12488],256],13118:[[12508,12523,12488],256],13119:[[12507,12531],256],13120:[[12509,12531,12489],256],13121:[[12507,12540,12523],256],13122:[[12507,12540,12531],256],13123:[[12510,12452,12463,12525],256],13124:[[12510,12452,12523],256],13125:[[12510,12483,12495],256],13126:[[12510,12523,12463],256],13127:[[12510,12531,12471,12519,12531],256],13128:[[12511,12463,12525,12531],256],13129:[[12511,12522],256],13130:[[12511,12522,12496,12540,12523],256],13131:[[12513,12460],256],13132:[[12513,12460,12488,12531],256],13133:[[12513,12540,12488,12523],256],13134:[[12516,12540,12489],256],13135:[[12516,12540,12523],256],13136:[[12518,12450,12531],256],13137:[[12522,12483,12488,12523],256],13138:[[12522,12521],256],13139:[[12523,12500,12540],256],13140:[[12523,12540,12502,12523],256],13141:[[12524,12512],256],13142:[[12524,12531,12488,12466,12531],256],13143:[[12527,12483,12488],256],13144:[[48,28857],256],13145:[[49,28857],256],13146:[[50,28857],256],13147:[[51,28857],256],13148:[[52,28857],256],13149:[[53,28857],256],13150:[[54,28857],256],13151:[[55,28857],256],13152:[[56,28857],256],13153:[[57,28857],256],13154:[[49,48,28857],256],13155:[[49,49,28857],256],13156:[[49,50,28857],256],13157:[[49,51,28857],256],13158:[[49,52,28857],256],13159:[[49,53,28857],256],13160:[[49,54,28857],256],13161:[[49,55,28857],256],13162:[[49,56,28857],256],13163:[[49,57,28857],256],13164:[[50,48,28857],256],13165:[[50,49,28857],256],13166:[[50,50,28857],256],13167:[[50,51,28857],256],13168:[[50,52,28857],256],13169:[[104,80,97],256],13170:[[100,97],256],13171:[[65,85],256],13172:[[98,97,114],256],13173:[[111,86],256],13174:[[112,99],256],13175:[[100,109],256],13176:[[100,109,178],256],13177:[[100,109,179],256],13178:[[73,85],256],13179:[[24179,25104],256],13180:[[26157,21644],256],13181:[[22823,27491],256],13182:[[26126,27835],256],13183:[[26666,24335,20250,31038],256],13184:[[112,65],256],13185:[[110,65],256],13186:[[956,65],256],13187:[[109,65],256],13188:[[107,65],256],13189:[[75,66],256],13190:[[77,66],256],13191:[[71,66],256],13192:[[99,97,108],256],13193:[[107,99,97,108],256],13194:[[112,70],256],13195:[[110,70],256],13196:[[956,70],256],13197:[[956,103],256],13198:[[109,103],256],13199:[[107,103],256],13200:[[72,122],256],13201:[[107,72,122],256],13202:[[77,72,122],256],13203:[[71,72,122],256],13204:[[84,72,122],256],13205:[[956,8467],256],13206:[[109,8467],256],13207:[[100,8467],256],13208:[[107,8467],256],13209:[[102,109],256],13210:[[110,109],256],13211:[[956,109],256],13212:[[109,109],256],13213:[[99,109],256],13214:[[107,109],256],13215:[[109,109,178],256],13216:[[99,109,178],256],13217:[[109,178],256],13218:[[107,109,178],256],13219:[[109,109,179],256],13220:[[99,109,179],256],13221:[[109,179],256],13222:[[107,109,179],256],13223:[[109,8725,115],256],13224:[[109,8725,115,178],256],13225:[[80,97],256],13226:[[107,80,97],256],13227:[[77,80,97],256],13228:[[71,80,97],256],13229:[[114,97,100],256],13230:[[114,97,100,8725,115],256],13231:[[114,97,100,8725,115,178],256],13232:[[112,115],256],13233:[[110,115],256],13234:[[956,115],256],13235:[[109,115],256],13236:[[112,86],256],13237:[[110,86],256],13238:[[956,86],256],13239:[[109,86],256],13240:[[107,86],256],13241:[[77,86],256],13242:[[112,87],256],13243:[[110,87],256],13244:[[956,87],256],13245:[[109,87],256],13246:[[107,87],256],13247:[[77,87],256],13248:[[107,937],256],13249:[[77,937],256],13250:[[97,46,109,46],256],13251:[[66,113],256],13252:[[99,99],256],13253:[[99,100],256],13254:[[67,8725,107,103],256],13255:[[67,111,46],256],13256:[[100,66],256],13257:[[71,121],256],13258:[[104,97],256],13259:[[72,80],256],13260:[[105,110],256],13261:[[75,75],256],13262:[[75,77],256],13263:[[107,116],256],13264:[[108,109],256],13265:[[108,110],256],13266:[[108,111,103],256],13267:[[108,120],256],13268:[[109,98],256],13269:[[109,105,108],256],13270:[[109,111,108],256],13271:[[80,72],256],13272:[[112,46,109,46],256],13273:[[80,80,77],256],13274:[[80,82],256],13275:[[115,114],256],13276:[[83,118],256],13277:[[87,98],256],13278:[[86,8725,109],256],13279:[[65,8725,109],256],13280:[[49,26085],256],13281:[[50,26085],256],13282:[[51,26085],256],13283:[[52,26085],256],13284:[[53,26085],256],13285:[[54,26085],256],13286:[[55,26085],256],13287:[[56,26085],256],13288:[[57,26085],256],13289:[[49,48,26085],256],13290:[[49,49,26085],256],13291:[[49,50,26085],256],13292:[[49,51,26085],256],13293:[[49,52,26085],256],13294:[[49,53,26085],256],13295:[[49,54,26085],256],13296:[[49,55,26085],256],13297:[[49,56,26085],256],13298:[[49,57,26085],256],13299:[[50,48,26085],256],13300:[[50,49,26085],256],13301:[[50,50,26085],256],13302:[[50,51,26085],256],13303:[[50,52,26085],256],13304:[[50,53,26085],256],13305:[[50,54,26085],256],13306:[[50,55,26085],256],13307:[[50,56,26085],256],13308:[[50,57,26085],256],13309:[[51,48,26085],256],13310:[[51,49,26085],256],13311:[[103,97,108],256]},
6827 27136:{92912:[,1],92913:[,1],92914:[,1],92915:[,1],92916:[,1]},
6828 27392:{92976:[,230],92977:[,230],92978:[,230],92979:[,230],92980:[,230],92981:[,230],92982:[,230]},
6829 42496:{42607:[,230],42612:[,230],42613:[,230],42614:[,230],42615:[,230],42616:[,230],42617:[,230],42618:[,230],42619:[,230],42620:[,230],42621:[,230],42652:[[1098],256],42653:[[1100],256],42655:[,230],42736:[,230],42737:[,230]},
6830 42752:{42864:[[42863],256],43000:[[294],256],43001:[[339],256]},
6831 43008:{43014:[,9],43204:[,9],43232:[,230],43233:[,230],43234:[,230],43235:[,230],43236:[,230],43237:[,230],43238:[,230],43239:[,230],43240:[,230],43241:[,230],43242:[,230],43243:[,230],43244:[,230],43245:[,230],43246:[,230],43247:[,230],43248:[,230],43249:[,230]},
6832 43264:{43307:[,220],43308:[,220],43309:[,220],43347:[,9],43443:[,7],43456:[,9]},
6833 43520:{43696:[,230],43698:[,230],43699:[,230],43700:[,220],43703:[,230],43704:[,230],43710:[,230],43711:[,230],43713:[,230],43766:[,9]},
6834 43776:{43868:[[42791],256],43869:[[43831],256],43870:[[619],256],43871:[[43858],256],44013:[,9]},
6835 48128:{113822:[,1]},
6836 53504:{119134:[[119127,119141],512],119135:[[119128,119141],512],119136:[[119135,119150],512],119137:[[119135,119151],512],119138:[[119135,119152],512],119139:[[119135,119153],512],119140:[[119135,119154],512],119141:[,216],119142:[,216],119143:[,1],119144:[,1],119145:[,1],119149:[,226],119150:[,216],119151:[,216],119152:[,216],119153:[,216],119154:[,216],119163:[,220],119164:[,220],119165:[,220],119166:[,220],119167:[,220],119168:[,220],119169:[,220],119170:[,220],119173:[,230],119174:[,230],119175:[,230],119176:[,230],119177:[,230],119178:[,220],119179:[,220],119210:[,230],119211:[,230],119212:[,230],119213:[,230],119227:[[119225,119141],512],119228:[[119226,119141],512],119229:[[119227,119150],512],119230:[[119228,119150],512],119231:[[119227,119151],512],119232:[[119228,119151],512]},
6837 53760:{119362:[,230],119363:[,230],119364:[,230]},
6838 54272:{119808:[[65],256],119809:[[66],256],119810:[[67],256],119811:[[68],256],119812:[[69],256],119813:[[70],256],119814:[[71],256],119815:[[72],256],119816:[[73],256],119817:[[74],256],119818:[[75],256],119819:[[76],256],119820:[[77],256],119821:[[78],256],119822:[[79],256],119823:[[80],256],119824:[[81],256],119825:[[82],256],119826:[[83],256],119827:[[84],256],119828:[[85],256],119829:[[86],256],119830:[[87],256],119831:[[88],256],119832:[[89],256],119833:[[90],256],119834:[[97],256],119835:[[98],256],119836:[[99],256],119837:[[100],256],119838:[[101],256],119839:[[102],256],119840:[[103],256],119841:[[104],256],119842:[[105],256],119843:[[106],256],119844:[[107],256],119845:[[108],256],119846:[[109],256],119847:[[110],256],119848:[[111],256],119849:[[112],256],119850:[[113],256],119851:[[114],256],119852:[[115],256],119853:[[116],256],119854:[[117],256],119855:[[118],256],119856:[[119],256],119857:[[120],256],119858:[[121],256],119859:[[122],256],119860:[[65],256],119861:[[66],256],119862:[[67],256],119863:[[68],256],119864:[[69],256],119865:[[70],256],119866:[[71],256],119867:[[72],256],119868:[[73],256],119869:[[74],256],119870:[[75],256],119871:[[76],256],119872:[[77],256],119873:[[78],256],119874:[[79],256],119875:[[80],256],119876:[[81],256],119877:[[82],256],119878:[[83],256],119879:[[84],256],119880:[[85],256],119881:[[86],256],119882:[[87],256],119883:[[88],256],119884:[[89],256],119885:[[90],256],119886:[[97],256],119887:[[98],256],119888:[[99],256],119889:[[100],256],119890:[[101],256],119891:[[102],256],119892:[[103],256],119894:[[105],256],119895:[[106],256],119896:[[107],256],119897:[[108],256],119898:[[109],256],119899:[[110],256],119900:[[111],256],119901:[[112],256],119902:[[113],256],119903:[[114],256],119904:[[115],256],119905:[[116],256],119906:[[117],256],119907:[[118],256],119908:[[119],256],119909:[[120],256],119910:[[121],256],119911:[[122],256],119912:[[65],256],119913:[[66],256],119914:[[67],256],119915:[[68],256],119916:[[69],256],119917:[[70],256],119918:[[71],256],119919:[[72],256],119920:[[73],256],119921:[[74],256],119922:[[75],256],119923:[[76],256],119924:[[77],256],119925:[[78],256],119926:[[79],256],119927:[[80],256],119928:[[81],256],119929:[[82],256],119930:[[83],256],119931:[[84],256],119932:[[85],256],119933:[[86],256],119934:[[87],256],119935:[[88],256],119936:[[89],256],119937:[[90],256],119938:[[97],256],119939:[[98],256],119940:[[99],256],119941:[[100],256],119942:[[101],256],119943:[[102],256],119944:[[103],256],119945:[[104],256],119946:[[105],256],119947:[[106],256],119948:[[107],256],119949:[[108],256],119950:[[109],256],119951:[[110],256],119952:[[111],256],119953:[[112],256],119954:[[113],256],119955:[[114],256],119956:[[115],256],119957:[[116],256],119958:[[117],256],119959:[[118],256],119960:[[119],256],119961:[[120],256],119962:[[121],256],119963:[[122],256],119964:[[65],256],119966:[[67],256],119967:[[68],256],119970:[[71],256],119973:[[74],256],119974:[[75],256],119977:[[78],256],119978:[[79],256],119979:[[80],256],119980:[[81],256],119982:[[83],256],119983:[[84],256],119984:[[85],256],119985:[[86],256],119986:[[87],256],119987:[[88],256],119988:[[89],256],119989:[[90],256],119990:[[97],256],119991:[[98],256],119992:[[99],256],119993:[[100],256],119995:[[102],256],119997:[[104],256],119998:[[105],256],119999:[[106],256],120000:[[107],256],120001:[[108],256],120002:[[109],256],120003:[[110],256],120005:[[112],256],120006:[[113],256],120007:[[114],256],120008:[[115],256],120009:[[116],256],120010:[[117],256],120011:[[118],256],120012:[[119],256],120013:[[120],256],120014:[[121],256],120015:[[122],256],120016:[[65],256],120017:[[66],256],120018:[[67],256],120019:[[68],256],120020:[[69],256],120021:[[70],256],120022:[[71],256],120023:[[72],256],120024:[[73],256],120025:[[74],256],120026:[[75],256],120027:[[76],256],120028:[[77],256],120029:[[78],256],120030:[[79],256],120031:[[80],256],120032:[[81],256],120033:[[82],256],120034:[[83],256],120035:[[84],256],120036:[[85],256],120037:[[86],256],120038:[[87],256],120039:[[88],256],120040:[[89],256],120041:[[90],256],120042:[[97],256],120043:[[98],256],120044:[[99],256],120045:[[100],256],120046:[[101],256],120047:[[102],256],120048:[[103],256],120049:[[104],256],120050:[[105],256],120051:[[106],256],120052:[[107],256],120053:[[108],256],120054:[[109],256],120055:[[110],256],120056:[[111],256],120057:[[112],256],120058:[[113],256],120059:[[114],256],120060:[[115],256],120061:[[116],256],120062:[[117],256],120063:[[118],256]},
6839 54528:{120064:[[119],256],120065:[[120],256],120066:[[121],256],120067:[[122],256],120068:[[65],256],120069:[[66],256],120071:[[68],256],120072:[[69],256],120073:[[70],256],120074:[[71],256],120077:[[74],256],120078:[[75],256],120079:[[76],256],120080:[[77],256],120081:[[78],256],120082:[[79],256],120083:[[80],256],120084:[[81],256],120086:[[83],256],120087:[[84],256],120088:[[85],256],120089:[[86],256],120090:[[87],256],120091:[[88],256],120092:[[89],256],120094:[[97],256],120095:[[98],256],120096:[[99],256],120097:[[100],256],120098:[[101],256],120099:[[102],256],120100:[[103],256],120101:[[104],256],120102:[[105],256],120103:[[106],256],120104:[[107],256],120105:[[108],256],120106:[[109],256],120107:[[110],256],120108:[[111],256],120109:[[112],256],120110:[[113],256],120111:[[114],256],120112:[[115],256],120113:[[116],256],120114:[[117],256],120115:[[118],256],120116:[[119],256],120117:[[120],256],120118:[[121],256],120119:[[122],256],120120:[[65],256],120121:[[66],256],120123:[[68],256],120124:[[69],256],120125:[[70],256],120126:[[71],256],120128:[[73],256],120129:[[74],256],120130:[[75],256],120131:[[76],256],120132:[[77],256],120134:[[79],256],120138:[[83],256],120139:[[84],256],120140:[[85],256],120141:[[86],256],120142:[[87],256],120143:[[88],256],120144:[[89],256],120146:[[97],256],120147:[[98],256],120148:[[99],256],120149:[[100],256],120150:[[101],256],120151:[[102],256],120152:[[103],256],120153:[[104],256],120154:[[105],256],120155:[[106],256],120156:[[107],256],120157:[[108],256],120158:[[109],256],120159:[[110],256],120160:[[111],256],120161:[[112],256],120162:[[113],256],120163:[[114],256],120164:[[115],256],120165:[[116],256],120166:[[117],256],120167:[[118],256],120168:[[119],256],120169:[[120],256],120170:[[121],256],120171:[[122],256],120172:[[65],256],120173:[[66],256],120174:[[67],256],120175:[[68],256],120176:[[69],256],120177:[[70],256],120178:[[71],256],120179:[[72],256],120180:[[73],256],120181:[[74],256],120182:[[75],256],120183:[[76],256],120184:[[77],256],120185:[[78],256],120186:[[79],256],120187:[[80],256],120188:[[81],256],120189:[[82],256],120190:[[83],256],120191:[[84],256],120192:[[85],256],120193:[[86],256],120194:[[87],256],120195:[[88],256],120196:[[89],256],120197:[[90],256],120198:[[97],256],120199:[[98],256],120200:[[99],256],120201:[[100],256],120202:[[101],256],120203:[[102],256],120204:[[103],256],120205:[[104],256],120206:[[105],256],120207:[[106],256],120208:[[107],256],120209:[[108],256],120210:[[109],256],120211:[[110],256],120212:[[111],256],120213:[[112],256],120214:[[113],256],120215:[[114],256],120216:[[115],256],120217:[[116],256],120218:[[117],256],120219:[[118],256],120220:[[119],256],120221:[[120],256],120222:[[121],256],120223:[[122],256],120224:[[65],256],120225:[[66],256],120226:[[67],256],120227:[[68],256],120228:[[69],256],120229:[[70],256],120230:[[71],256],120231:[[72],256],120232:[[73],256],120233:[[74],256],120234:[[75],256],120235:[[76],256],120236:[[77],256],120237:[[78],256],120238:[[79],256],120239:[[80],256],120240:[[81],256],120241:[[82],256],120242:[[83],256],120243:[[84],256],120244:[[85],256],120245:[[86],256],120246:[[87],256],120247:[[88],256],120248:[[89],256],120249:[[90],256],120250:[[97],256],120251:[[98],256],120252:[[99],256],120253:[[100],256],120254:[[101],256],120255:[[102],256],120256:[[103],256],120257:[[104],256],120258:[[105],256],120259:[[106],256],120260:[[107],256],120261:[[108],256],120262:[[109],256],120263:[[110],256],120264:[[111],256],120265:[[112],256],120266:[[113],256],120267:[[114],256],120268:[[115],256],120269:[[116],256],120270:[[117],256],120271:[[118],256],120272:[[119],256],120273:[[120],256],120274:[[121],256],120275:[[122],256],120276:[[65],256],120277:[[66],256],120278:[[67],256],120279:[[68],256],120280:[[69],256],120281:[[70],256],120282:[[71],256],120283:[[72],256],120284:[[73],256],120285:[[74],256],120286:[[75],256],120287:[[76],256],120288:[[77],256],120289:[[78],256],120290:[[79],256],120291:[[80],256],120292:[[81],256],120293:[[82],256],120294:[[83],256],120295:[[84],256],120296:[[85],256],120297:[[86],256],120298:[[87],256],120299:[[88],256],120300:[[89],256],120301:[[90],256],120302:[[97],256],120303:[[98],256],120304:[[99],256],120305:[[100],256],120306:[[101],256],120307:[[102],256],120308:[[103],256],120309:[[104],256],120310:[[105],256],120311:[[106],256],120312:[[107],256],120313:[[108],256],120314:[[109],256],120315:[[110],256],120316:[[111],256],120317:[[112],256],120318:[[113],256],120319:[[114],256]},
6840 54784:{120320:[[115],256],120321:[[116],256],120322:[[117],256],120323:[[118],256],120324:[[119],256],120325:[[120],256],120326:[[121],256],120327:[[122],256],120328:[[65],256],120329:[[66],256],120330:[[67],256],120331:[[68],256],120332:[[69],256],120333:[[70],256],120334:[[71],256],120335:[[72],256],120336:[[73],256],120337:[[74],256],120338:[[75],256],120339:[[76],256],120340:[[77],256],120341:[[78],256],120342:[[79],256],120343:[[80],256],120344:[[81],256],120345:[[82],256],120346:[[83],256],120347:[[84],256],120348:[[85],256],120349:[[86],256],120350:[[87],256],120351:[[88],256],120352:[[89],256],120353:[[90],256],120354:[[97],256],120355:[[98],256],120356:[[99],256],120357:[[100],256],120358:[[101],256],120359:[[102],256],120360:[[103],256],120361:[[104],256],120362:[[105],256],120363:[[106],256],120364:[[107],256],120365:[[108],256],120366:[[109],256],120367:[[110],256],120368:[[111],256],120369:[[112],256],120370:[[113],256],120371:[[114],256],120372:[[115],256],120373:[[116],256],120374:[[117],256],120375:[[118],256],120376:[[119],256],120377:[[120],256],120378:[[121],256],120379:[[122],256],120380:[[65],256],120381:[[66],256],120382:[[67],256],120383:[[68],256],120384:[[69],256],120385:[[70],256],120386:[[71],256],120387:[[72],256],120388:[[73],256],120389:[[74],256],120390:[[75],256],120391:[[76],256],120392:[[77],256],120393:[[78],256],120394:[[79],256],120395:[[80],256],120396:[[81],256],120397:[[82],256],120398:[[83],256],120399:[[84],256],120400:[[85],256],120401:[[86],256],120402:[[87],256],120403:[[88],256],120404:[[89],256],120405:[[90],256],120406:[[97],256],120407:[[98],256],120408:[[99],256],120409:[[100],256],120410:[[101],256],120411:[[102],256],120412:[[103],256],120413:[[104],256],120414:[[105],256],120415:[[106],256],120416:[[107],256],120417:[[108],256],120418:[[109],256],120419:[[110],256],120420:[[111],256],120421:[[112],256],120422:[[113],256],120423:[[114],256],120424:[[115],256],120425:[[116],256],120426:[[117],256],120427:[[118],256],120428:[[119],256],120429:[[120],256],120430:[[121],256],120431:[[122],256],120432:[[65],256],120433:[[66],256],120434:[[67],256],120435:[[68],256],120436:[[69],256],120437:[[70],256],120438:[[71],256],120439:[[72],256],120440:[[73],256],120441:[[74],256],120442:[[75],256],120443:[[76],256],120444:[[77],256],120445:[[78],256],120446:[[79],256],120447:[[80],256],120448:[[81],256],120449:[[82],256],120450:[[83],256],120451:[[84],256],120452:[[85],256],120453:[[86],256],120454:[[87],256],120455:[[88],256],120456:[[89],256],120457:[[90],256],120458:[[97],256],120459:[[98],256],120460:[[99],256],120461:[[100],256],120462:[[101],256],120463:[[102],256],120464:[[103],256],120465:[[104],256],120466:[[105],256],120467:[[106],256],120468:[[107],256],120469:[[108],256],120470:[[109],256],120471:[[110],256],120472:[[111],256],120473:[[112],256],120474:[[113],256],120475:[[114],256],120476:[[115],256],120477:[[116],256],120478:[[117],256],120479:[[118],256],120480:[[119],256],120481:[[120],256],120482:[[121],256],120483:[[122],256],120484:[[305],256],120485:[[567],256],120488:[[913],256],120489:[[914],256],120490:[[915],256],120491:[[916],256],120492:[[917],256],120493:[[918],256],120494:[[919],256],120495:[[920],256],120496:[[921],256],120497:[[922],256],120498:[[923],256],120499:[[924],256],120500:[[925],256],120501:[[926],256],120502:[[927],256],120503:[[928],256],120504:[[929],256],120505:[[1012],256],120506:[[931],256],120507:[[932],256],120508:[[933],256],120509:[[934],256],120510:[[935],256],120511:[[936],256],120512:[[937],256],120513:[[8711],256],120514:[[945],256],120515:[[946],256],120516:[[947],256],120517:[[948],256],120518:[[949],256],120519:[[950],256],120520:[[951],256],120521:[[952],256],120522:[[953],256],120523:[[954],256],120524:[[955],256],120525:[[956],256],120526:[[957],256],120527:[[958],256],120528:[[959],256],120529:[[960],256],120530:[[961],256],120531:[[962],256],120532:[[963],256],120533:[[964],256],120534:[[965],256],120535:[[966],256],120536:[[967],256],120537:[[968],256],120538:[[969],256],120539:[[8706],256],120540:[[1013],256],120541:[[977],256],120542:[[1008],256],120543:[[981],256],120544:[[1009],256],120545:[[982],256],120546:[[913],256],120547:[[914],256],120548:[[915],256],120549:[[916],256],120550:[[917],256],120551:[[918],256],120552:[[919],256],120553:[[920],256],120554:[[921],256],120555:[[922],256],120556:[[923],256],120557:[[924],256],120558:[[925],256],120559:[[926],256],120560:[[927],256],120561:[[928],256],120562:[[929],256],120563:[[1012],256],120564:[[931],256],120565:[[932],256],120566:[[933],256],120567:[[934],256],120568:[[935],256],120569:[[936],256],120570:[[937],256],120571:[[8711],256],120572:[[945],256],120573:[[946],256],120574:[[947],256],120575:[[948],256]},
6841 55040:{120576:[[949],256],120577:[[950],256],120578:[[951],256],120579:[[952],256],120580:[[953],256],120581:[[954],256],120582:[[955],256],120583:[[956],256],120584:[[957],256],120585:[[958],256],120586:[[959],256],120587:[[960],256],120588:[[961],256],120589:[[962],256],120590:[[963],256],120591:[[964],256],120592:[[965],256],120593:[[966],256],120594:[[967],256],120595:[[968],256],120596:[[969],256],120597:[[8706],256],120598:[[1013],256],120599:[[977],256],120600:[[1008],256],120601:[[981],256],120602:[[1009],256],120603:[[982],256],120604:[[913],256],120605:[[914],256],120606:[[915],256],120607:[[916],256],120608:[[917],256],120609:[[918],256],120610:[[919],256],120611:[[920],256],120612:[[921],256],120613:[[922],256],120614:[[923],256],120615:[[924],256],120616:[[925],256],120617:[[926],256],120618:[[927],256],120619:[[928],256],120620:[[929],256],120621:[[1012],256],120622:[[931],256],120623:[[932],256],120624:[[933],256],120625:[[934],256],120626:[[935],256],120627:[[936],256],120628:[[937],256],120629:[[8711],256],120630:[[945],256],120631:[[946],256],120632:[[947],256],120633:[[948],256],120634:[[949],256],120635:[[950],256],120636:[[951],256],120637:[[952],256],120638:[[953],256],120639:[[954],256],120640:[[955],256],120641:[[956],256],120642:[[957],256],120643:[[958],256],120644:[[959],256],120645:[[960],256],120646:[[961],256],120647:[[962],256],120648:[[963],256],120649:[[964],256],120650:[[965],256],120651:[[966],256],120652:[[967],256],120653:[[968],256],120654:[[969],256],120655:[[8706],256],120656:[[1013],256],120657:[[977],256],120658:[[1008],256],120659:[[981],256],120660:[[1009],256],120661:[[982],256],120662:[[913],256],120663:[[914],256],120664:[[915],256],120665:[[916],256],120666:[[917],256],120667:[[918],256],120668:[[919],256],120669:[[920],256],120670:[[921],256],120671:[[922],256],120672:[[923],256],120673:[[924],256],120674:[[925],256],120675:[[926],256],120676:[[927],256],120677:[[928],256],120678:[[929],256],120679:[[1012],256],120680:[[931],256],120681:[[932],256],120682:[[933],256],120683:[[934],256],120684:[[935],256],120685:[[936],256],120686:[[937],256],120687:[[8711],256],120688:[[945],256],120689:[[946],256],120690:[[947],256],120691:[[948],256],120692:[[949],256],120693:[[950],256],120694:[[951],256],120695:[[952],256],120696:[[953],256],120697:[[954],256],120698:[[955],256],120699:[[956],256],120700:[[957],256],120701:[[958],256],120702:[[959],256],120703:[[960],256],120704:[[961],256],120705:[[962],256],120706:[[963],256],120707:[[964],256],120708:[[965],256],120709:[[966],256],120710:[[967],256],120711:[[968],256],120712:[[969],256],120713:[[8706],256],120714:[[1013],256],120715:[[977],256],120716:[[1008],256],120717:[[981],256],120718:[[1009],256],120719:[[982],256],120720:[[913],256],120721:[[914],256],120722:[[915],256],120723:[[916],256],120724:[[917],256],120725:[[918],256],120726:[[919],256],120727:[[920],256],120728:[[921],256],120729:[[922],256],120730:[[923],256],120731:[[924],256],120732:[[925],256],120733:[[926],256],120734:[[927],256],120735:[[928],256],120736:[[929],256],120737:[[1012],256],120738:[[931],256],120739:[[932],256],120740:[[933],256],120741:[[934],256],120742:[[935],256],120743:[[936],256],120744:[[937],256],120745:[[8711],256],120746:[[945],256],120747:[[946],256],120748:[[947],256],120749:[[948],256],120750:[[949],256],120751:[[950],256],120752:[[951],256],120753:[[952],256],120754:[[953],256],120755:[[954],256],120756:[[955],256],120757:[[956],256],120758:[[957],256],120759:[[958],256],120760:[[959],256],120761:[[960],256],120762:[[961],256],120763:[[962],256],120764:[[963],256],120765:[[964],256],120766:[[965],256],120767:[[966],256],120768:[[967],256],120769:[[968],256],120770:[[969],256],120771:[[8706],256],120772:[[1013],256],120773:[[977],256],120774:[[1008],256],120775:[[981],256],120776:[[1009],256],120777:[[982],256],120778:[[988],256],120779:[[989],256],120782:[[48],256],120783:[[49],256],120784:[[50],256],120785:[[51],256],120786:[[52],256],120787:[[53],256],120788:[[54],256],120789:[[55],256],120790:[[56],256],120791:[[57],256],120792:[[48],256],120793:[[49],256],120794:[[50],256],120795:[[51],256],120796:[[52],256],120797:[[53],256],120798:[[54],256],120799:[[55],256],120800:[[56],256],120801:[[57],256],120802:[[48],256],120803:[[49],256],120804:[[50],256],120805:[[51],256],120806:[[52],256],120807:[[53],256],120808:[[54],256],120809:[[55],256],120810:[[56],256],120811:[[57],256],120812:[[48],256],120813:[[49],256],120814:[[50],256],120815:[[51],256],120816:[[52],256],120817:[[53],256],120818:[[54],256],120819:[[55],256],120820:[[56],256],120821:[[57],256],120822:[[48],256],120823:[[49],256],120824:[[50],256],120825:[[51],256],120826:[[52],256],120827:[[53],256],120828:[[54],256],120829:[[55],256],120830:[[56],256],120831:[[57],256]},
6842 59392:{125136:[,220],125137:[,220],125138:[,220],125139:[,220],125140:[,220],125141:[,220],125142:[,220]},
6843 60928:{126464:[[1575],256],126465:[[1576],256],126466:[[1580],256],126467:[[1583],256],126469:[[1608],256],126470:[[1586],256],126471:[[1581],256],126472:[[1591],256],126473:[[1610],256],126474:[[1603],256],126475:[[1604],256],126476:[[1605],256],126477:[[1606],256],126478:[[1587],256],126479:[[1593],256],126480:[[1601],256],126481:[[1589],256],126482:[[1602],256],126483:[[1585],256],126484:[[1588],256],126485:[[1578],256],126486:[[1579],256],126487:[[1582],256],126488:[[1584],256],126489:[[1590],256],126490:[[1592],256],126491:[[1594],256],126492:[[1646],256],126493:[[1722],256],126494:[[1697],256],126495:[[1647],256],126497:[[1576],256],126498:[[1580],256],126500:[[1607],256],126503:[[1581],256],126505:[[1610],256],126506:[[1603],256],126507:[[1604],256],126508:[[1605],256],126509:[[1606],256],126510:[[1587],256],126511:[[1593],256],126512:[[1601],256],126513:[[1589],256],126514:[[1602],256],126516:[[1588],256],126517:[[1578],256],126518:[[1579],256],126519:[[1582],256],126521:[[1590],256],126523:[[1594],256],126530:[[1580],256],126535:[[1581],256],126537:[[1610],256],126539:[[1604],256],126541:[[1606],256],126542:[[1587],256],126543:[[1593],256],126545:[[1589],256],126546:[[1602],256],126548:[[1588],256],126551:[[1582],256],126553:[[1590],256],126555:[[1594],256],126557:[[1722],256],126559:[[1647],256],126561:[[1576],256],126562:[[1580],256],126564:[[1607],256],126567:[[1581],256],126568:[[1591],256],126569:[[1610],256],126570:[[1603],256],126572:[[1605],256],126573:[[1606],256],126574:[[1587],256],126575:[[1593],256],126576:[[1601],256],126577:[[1589],256],126578:[[1602],256],126580:[[1588],256],126581:[[1578],256],126582:[[1579],256],126583:[[1582],256],126585:[[1590],256],126586:[[1592],256],126587:[[1594],256],126588:[[1646],256],126590:[[1697],256],126592:[[1575],256],126593:[[1576],256],126594:[[1580],256],126595:[[1583],256],126596:[[1607],256],126597:[[1608],256],126598:[[1586],256],126599:[[1581],256],126600:[[1591],256],126601:[[1610],256],126603:[[1604],256],126604:[[1605],256],126605:[[1606],256],126606:[[1587],256],126607:[[1593],256],126608:[[1601],256],126609:[[1589],256],126610:[[1602],256],126611:[[1585],256],126612:[[1588],256],126613:[[1578],256],126614:[[1579],256],126615:[[1582],256],126616:[[1584],256],126617:[[1590],256],126618:[[1592],256],126619:[[1594],256],126625:[[1576],256],126626:[[1580],256],126627:[[1583],256],126629:[[1608],256],126630:[[1586],256],126631:[[1581],256],126632:[[1591],256],126633:[[1610],256],126635:[[1604],256],126636:[[1605],256],126637:[[1606],256],126638:[[1587],256],126639:[[1593],256],126640:[[1601],256],126641:[[1589],256],126642:[[1602],256],126643:[[1585],256],126644:[[1588],256],126645:[[1578],256],126646:[[1579],256],126647:[[1582],256],126648:[[1584],256],126649:[[1590],256],126650:[[1592],256],126651:[[1594],256]},
6844 61696:{127232:[[48,46],256],127233:[[48,44],256],127234:[[49,44],256],127235:[[50,44],256],127236:[[51,44],256],127237:[[52,44],256],127238:[[53,44],256],127239:[[54,44],256],127240:[[55,44],256],127241:[[56,44],256],127242:[[57,44],256],127248:[[40,65,41],256],127249:[[40,66,41],256],127250:[[40,67,41],256],127251:[[40,68,41],256],127252:[[40,69,41],256],127253:[[40,70,41],256],127254:[[40,71,41],256],127255:[[40,72,41],256],127256:[[40,73,41],256],127257:[[40,74,41],256],127258:[[40,75,41],256],127259:[[40,76,41],256],127260:[[40,77,41],256],127261:[[40,78,41],256],127262:[[40,79,41],256],127263:[[40,80,41],256],127264:[[40,81,41],256],127265:[[40,82,41],256],127266:[[40,83,41],256],127267:[[40,84,41],256],127268:[[40,85,41],256],127269:[[40,86,41],256],127270:[[40,87,41],256],127271:[[40,88,41],256],127272:[[40,89,41],256],127273:[[40,90,41],256],127274:[[12308,83,12309],256],127275:[[67],256],127276:[[82],256],127277:[[67,68],256],127278:[[87,90],256],127280:[[65],256],127281:[[66],256],127282:[[67],256],127283:[[68],256],127284:[[69],256],127285:[[70],256],127286:[[71],256],127287:[[72],256],127288:[[73],256],127289:[[74],256],127290:[[75],256],127291:[[76],256],127292:[[77],256],127293:[[78],256],127294:[[79],256],127295:[[80],256],127296:[[81],256],127297:[[82],256],127298:[[83],256],127299:[[84],256],127300:[[85],256],127301:[[86],256],127302:[[87],256],127303:[[88],256],127304:[[89],256],127305:[[90],256],127306:[[72,86],256],127307:[[77,86],256],127308:[[83,68],256],127309:[[83,83],256],127310:[[80,80,86],256],127311:[[87,67],256],127338:[[77,67],256],127339:[[77,68],256],127376:[[68,74],256]},
6845 61952:{127488:[[12411,12363],256],127489:[[12467,12467],256],127490:[[12469],256],127504:[[25163],256],127505:[[23383],256],127506:[[21452],256],127507:[[12487],256],127508:[[20108],256],127509:[[22810],256],127510:[[35299],256],127511:[[22825],256],127512:[[20132],256],127513:[[26144],256],127514:[[28961],256],127515:[[26009],256],127516:[[21069],256],127517:[[24460],256],127518:[[20877],256],127519:[[26032],256],127520:[[21021],256],127521:[[32066],256],127522:[[29983],256],127523:[[36009],256],127524:[[22768],256],127525:[[21561],256],127526:[[28436],256],127527:[[25237],256],127528:[[25429],256],127529:[[19968],256],127530:[[19977],256],127531:[[36938],256],127532:[[24038],256],127533:[[20013],256],127534:[[21491],256],127535:[[25351],256],127536:[[36208],256],127537:[[25171],256],127538:[[31105],256],127539:[[31354],256],127540:[[21512],256],127541:[[28288],256],127542:[[26377],256],127543:[[26376],256],127544:[[30003],256],127545:[[21106],256],127546:[[21942],256],127552:[[12308,26412,12309],256],127553:[[12308,19977,12309],256],127554:[[12308,20108,12309],256],127555:[[12308,23433,12309],256],127556:[[12308,28857,12309],256],127557:[[12308,25171,12309],256],127558:[[12308,30423,12309],256],127559:[[12308,21213,12309],256],127560:[[12308,25943,12309],256],127568:[[24471],256],127569:[[21487],256]},
6846 63488:{194560:[[20029]],194561:[[20024]],194562:[[20033]],194563:[[131362]],194564:[[20320]],194565:[[20398]],194566:[[20411]],194567:[[20482]],194568:[[20602]],194569:[[20633]],194570:[[20711]],194571:[[20687]],194572:[[13470]],194573:[[132666]],194574:[[20813]],194575:[[20820]],194576:[[20836]],194577:[[20855]],194578:[[132380]],194579:[[13497]],194580:[[20839]],194581:[[20877]],194582:[[132427]],194583:[[20887]],194584:[[20900]],194585:[[20172]],194586:[[20908]],194587:[[20917]],194588:[[168415]],194589:[[20981]],194590:[[20995]],194591:[[13535]],194592:[[21051]],194593:[[21062]],194594:[[21106]],194595:[[21111]],194596:[[13589]],194597:[[21191]],194598:[[21193]],194599:[[21220]],194600:[[21242]],194601:[[21253]],194602:[[21254]],194603:[[21271]],194604:[[21321]],194605:[[21329]],194606:[[21338]],194607:[[21363]],194608:[[21373]],194609:[[21375]],194610:[[21375]],194611:[[21375]],194612:[[133676]],194613:[[28784]],194614:[[21450]],194615:[[21471]],194616:[[133987]],194617:[[21483]],194618:[[21489]],194619:[[21510]],194620:[[21662]],194621:[[21560]],194622:[[21576]],194623:[[21608]],194624:[[21666]],194625:[[21750]],194626:[[21776]],194627:[[21843]],194628:[[21859]],194629:[[21892]],194630:[[21892]],194631:[[21913]],194632:[[21931]],194633:[[21939]],194634:[[21954]],194635:[[22294]],194636:[[22022]],194637:[[22295]],194638:[[22097]],194639:[[22132]],194640:[[20999]],194641:[[22766]],194642:[[22478]],194643:[[22516]],194644:[[22541]],194645:[[22411]],194646:[[22578]],194647:[[22577]],194648:[[22700]],194649:[[136420]],194650:[[22770]],194651:[[22775]],194652:[[22790]],194653:[[22810]],194654:[[22818]],194655:[[22882]],194656:[[136872]],194657:[[136938]],194658:[[23020]],194659:[[23067]],194660:[[23079]],194661:[[23000]],194662:[[23142]],194663:[[14062]],194664:[[14076]],194665:[[23304]],194666:[[23358]],194667:[[23358]],194668:[[137672]],194669:[[23491]],194670:[[23512]],194671:[[23527]],194672:[[23539]],194673:[[138008]],194674:[[23551]],194675:[[23558]],194676:[[24403]],194677:[[23586]],194678:[[14209]],194679:[[23648]],194680:[[23662]],194681:[[23744]],194682:[[23693]],194683:[[138724]],194684:[[23875]],194685:[[138726]],194686:[[23918]],194687:[[23915]],194688:[[23932]],194689:[[24033]],194690:[[24034]],194691:[[14383]],194692:[[24061]],194693:[[24104]],194694:[[24125]],194695:[[24169]],194696:[[14434]],194697:[[139651]],194698:[[14460]],194699:[[24240]],194700:[[24243]],194701:[[24246]],194702:[[24266]],194703:[[172946]],194704:[[24318]],194705:[[140081]],194706:[[140081]],194707:[[33281]],194708:[[24354]],194709:[[24354]],194710:[[14535]],194711:[[144056]],194712:[[156122]],194713:[[24418]],194714:[[24427]],194715:[[14563]],194716:[[24474]],194717:[[24525]],194718:[[24535]],194719:[[24569]],194720:[[24705]],194721:[[14650]],194722:[[14620]],194723:[[24724]],194724:[[141012]],194725:[[24775]],194726:[[24904]],194727:[[24908]],194728:[[24910]],194729:[[24908]],194730:[[24954]],194731:[[24974]],194732:[[25010]],194733:[[24996]],194734:[[25007]],194735:[[25054]],194736:[[25074]],194737:[[25078]],194738:[[25104]],194739:[[25115]],194740:[[25181]],194741:[[25265]],194742:[[25300]],194743:[[25424]],194744:[[142092]],194745:[[25405]],194746:[[25340]],194747:[[25448]],194748:[[25475]],194749:[[25572]],194750:[[142321]],194751:[[25634]],194752:[[25541]],194753:[[25513]],194754:[[14894]],194755:[[25705]],194756:[[25726]],194757:[[25757]],194758:[[25719]],194759:[[14956]],194760:[[25935]],194761:[[25964]],194762:[[143370]],194763:[[26083]],194764:[[26360]],194765:[[26185]],194766:[[15129]],194767:[[26257]],194768:[[15112]],194769:[[15076]],194770:[[20882]],194771:[[20885]],194772:[[26368]],194773:[[26268]],194774:[[32941]],194775:[[17369]],194776:[[26391]],194777:[[26395]],194778:[[26401]],194779:[[26462]],194780:[[26451]],194781:[[144323]],194782:[[15177]],194783:[[26618]],194784:[[26501]],194785:[[26706]],194786:[[26757]],194787:[[144493]],194788:[[26766]],194789:[[26655]],194790:[[26900]],194791:[[15261]],194792:[[26946]],194793:[[27043]],194794:[[27114]],194795:[[27304]],194796:[[145059]],194797:[[27355]],194798:[[15384]],194799:[[27425]],194800:[[145575]],194801:[[27476]],194802:[[15438]],194803:[[27506]],194804:[[27551]],194805:[[27578]],194806:[[27579]],194807:[[146061]],194808:[[138507]],194809:[[146170]],194810:[[27726]],194811:[[146620]],194812:[[27839]],194813:[[27853]],194814:[[27751]],194815:[[27926]]},
6847 63744:{63744:[[35912]],63745:[[26356]],63746:[[36554]],63747:[[36040]],63748:[[28369]],63749:[[20018]],63750:[[21477]],63751:[[40860]],63752:[[40860]],63753:[[22865]],63754:[[37329]],63755:[[21895]],63756:[[22856]],63757:[[25078]],63758:[[30313]],63759:[[32645]],63760:[[34367]],63761:[[34746]],63762:[[35064]],63763:[[37007]],63764:[[27138]],63765:[[27931]],63766:[[28889]],63767:[[29662]],63768:[[33853]],63769:[[37226]],63770:[[39409]],63771:[[20098]],63772:[[21365]],63773:[[27396]],63774:[[29211]],63775:[[34349]],63776:[[40478]],63777:[[23888]],63778:[[28651]],63779:[[34253]],63780:[[35172]],63781:[[25289]],63782:[[33240]],63783:[[34847]],63784:[[24266]],63785:[[26391]],63786:[[28010]],63787:[[29436]],63788:[[37070]],63789:[[20358]],63790:[[20919]],63791:[[21214]],63792:[[25796]],63793:[[27347]],63794:[[29200]],63795:[[30439]],63796:[[32769]],63797:[[34310]],63798:[[34396]],63799:[[36335]],63800:[[38706]],63801:[[39791]],63802:[[40442]],63803:[[30860]],63804:[[31103]],63805:[[32160]],63806:[[33737]],63807:[[37636]],63808:[[40575]],63809:[[35542]],63810:[[22751]],63811:[[24324]],63812:[[31840]],63813:[[32894]],63814:[[29282]],63815:[[30922]],63816:[[36034]],63817:[[38647]],63818:[[22744]],63819:[[23650]],63820:[[27155]],63821:[[28122]],63822:[[28431]],63823:[[32047]],63824:[[32311]],63825:[[38475]],63826:[[21202]],63827:[[32907]],63828:[[20956]],63829:[[20940]],63830:[[31260]],63831:[[32190]],63832:[[33777]],63833:[[38517]],63834:[[35712]],63835:[[25295]],63836:[[27138]],63837:[[35582]],63838:[[20025]],63839:[[23527]],63840:[[24594]],63841:[[29575]],63842:[[30064]],63843:[[21271]],63844:[[30971]],63845:[[20415]],63846:[[24489]],63847:[[19981]],63848:[[27852]],63849:[[25976]],63850:[[32034]],63851:[[21443]],63852:[[22622]],63853:[[30465]],63854:[[33865]],63855:[[35498]],63856:[[27578]],63857:[[36784]],63858:[[27784]],63859:[[25342]],63860:[[33509]],63861:[[25504]],63862:[[30053]],63863:[[20142]],63864:[[20841]],63865:[[20937]],63866:[[26753]],63867:[[31975]],63868:[[33391]],63869:[[35538]],63870:[[37327]],63871:[[21237]],63872:[[21570]],63873:[[22899]],63874:[[24300]],63875:[[26053]],63876:[[28670]],63877:[[31018]],63878:[[38317]],63879:[[39530]],63880:[[40599]],63881:[[40654]],63882:[[21147]],63883:[[26310]],63884:[[27511]],63885:[[36706]],63886:[[24180]],63887:[[24976]],63888:[[25088]],63889:[[25754]],63890:[[28451]],63891:[[29001]],63892:[[29833]],63893:[[31178]],63894:[[32244]],63895:[[32879]],63896:[[36646]],63897:[[34030]],63898:[[36899]],63899:[[37706]],63900:[[21015]],63901:[[21155]],63902:[[21693]],63903:[[28872]],63904:[[35010]],63905:[[35498]],63906:[[24265]],63907:[[24565]],63908:[[25467]],63909:[[27566]],63910:[[31806]],63911:[[29557]],63912:[[20196]],63913:[[22265]],63914:[[23527]],63915:[[23994]],63916:[[24604]],63917:[[29618]],63918:[[29801]],63919:[[32666]],63920:[[32838]],63921:[[37428]],63922:[[38646]],63923:[[38728]],63924:[[38936]],63925:[[20363]],63926:[[31150]],63927:[[37300]],63928:[[38584]],63929:[[24801]],63930:[[20102]],63931:[[20698]],63932:[[23534]],63933:[[23615]],63934:[[26009]],63935:[[27138]],63936:[[29134]],63937:[[30274]],63938:[[34044]],63939:[[36988]],63940:[[40845]],63941:[[26248]],63942:[[38446]],63943:[[21129]],63944:[[26491]],63945:[[26611]],63946:[[27969]],63947:[[28316]],63948:[[29705]],63949:[[30041]],63950:[[30827]],63951:[[32016]],63952:[[39006]],63953:[[20845]],63954:[[25134]],63955:[[38520]],63956:[[20523]],63957:[[23833]],63958:[[28138]],63959:[[36650]],63960:[[24459]],63961:[[24900]],63962:[[26647]],63963:[[29575]],63964:[[38534]],63965:[[21033]],63966:[[21519]],63967:[[23653]],63968:[[26131]],63969:[[26446]],63970:[[26792]],63971:[[27877]],63972:[[29702]],63973:[[30178]],63974:[[32633]],63975:[[35023]],63976:[[35041]],63977:[[37324]],63978:[[38626]],63979:[[21311]],63980:[[28346]],63981:[[21533]],63982:[[29136]],63983:[[29848]],63984:[[34298]],63985:[[38563]],63986:[[40023]],63987:[[40607]],63988:[[26519]],63989:[[28107]],63990:[[33256]],63991:[[31435]],63992:[[31520]],63993:[[31890]],63994:[[29376]],63995:[[28825]],63996:[[35672]],63997:[[20160]],63998:[[33590]],63999:[[21050]],194816:[[27966]],194817:[[28023]],194818:[[27969]],194819:[[28009]],194820:[[28024]],194821:[[28037]],194822:[[146718]],194823:[[27956]],194824:[[28207]],194825:[[28270]],194826:[[15667]],194827:[[28363]],194828:[[28359]],194829:[[147153]],194830:[[28153]],194831:[[28526]],194832:[[147294]],194833:[[147342]],194834:[[28614]],194835:[[28729]],194836:[[28702]],194837:[[28699]],194838:[[15766]],194839:[[28746]],194840:[[28797]],194841:[[28791]],194842:[[28845]],194843:[[132389]],194844:[[28997]],194845:[[148067]],194846:[[29084]],194847:[[148395]],194848:[[29224]],194849:[[29237]],194850:[[29264]],194851:[[149000]],194852:[[29312]],194853:[[29333]],194854:[[149301]],194855:[[149524]],194856:[[29562]],194857:[[29579]],194858:[[16044]],194859:[[29605]],194860:[[16056]],194861:[[16056]],194862:[[29767]],194863:[[29788]],194864:[[29809]],194865:[[29829]],194866:[[29898]],194867:[[16155]],194868:[[29988]],194869:[[150582]],194870:[[30014]],194871:[[150674]],194872:[[30064]],194873:[[139679]],194874:[[30224]],194875:[[151457]],194876:[[151480]],194877:[[151620]],194878:[[16380]],194879:[[16392]],194880:[[30452]],194881:[[151795]],194882:[[151794]],194883:[[151833]],194884:[[151859]],194885:[[30494]],194886:[[30495]],194887:[[30495]],194888:[[30538]],194889:[[16441]],194890:[[30603]],194891:[[16454]],194892:[[16534]],194893:[[152605]],194894:[[30798]],194895:[[30860]],194896:[[30924]],194897:[[16611]],194898:[[153126]],194899:[[31062]],194900:[[153242]],194901:[[153285]],194902:[[31119]],194903:[[31211]],194904:[[16687]],194905:[[31296]],194906:[[31306]],194907:[[31311]],194908:[[153980]],194909:[[154279]],194910:[[154279]],194911:[[31470]],194912:[[16898]],194913:[[154539]],194914:[[31686]],194915:[[31689]],194916:[[16935]],194917:[[154752]],194918:[[31954]],194919:[[17056]],194920:[[31976]],194921:[[31971]],194922:[[32000]],194923:[[155526]],194924:[[32099]],194925:[[17153]],194926:[[32199]],194927:[[32258]],194928:[[32325]],194929:[[17204]],194930:[[156200]],194931:[[156231]],194932:[[17241]],194933:[[156377]],194934:[[32634]],194935:[[156478]],194936:[[32661]],194937:[[32762]],194938:[[32773]],194939:[[156890]],194940:[[156963]],194941:[[32864]],194942:[[157096]],194943:[[32880]],194944:[[144223]],194945:[[17365]],194946:[[32946]],194947:[[33027]],194948:[[17419]],194949:[[33086]],194950:[[23221]],194951:[[157607]],194952:[[157621]],194953:[[144275]],194954:[[144284]],194955:[[33281]],194956:[[33284]],194957:[[36766]],194958:[[17515]],194959:[[33425]],194960:[[33419]],194961:[[33437]],194962:[[21171]],194963:[[33457]],194964:[[33459]],194965:[[33469]],194966:[[33510]],194967:[[158524]],194968:[[33509]],194969:[[33565]],194970:[[33635]],194971:[[33709]],194972:[[33571]],194973:[[33725]],194974:[[33767]],194975:[[33879]],194976:[[33619]],194977:[[33738]],194978:[[33740]],194979:[[33756]],194980:[[158774]],194981:[[159083]],194982:[[158933]],194983:[[17707]],194984:[[34033]],194985:[[34035]],194986:[[34070]],194987:[[160714]],194988:[[34148]],194989:[[159532]],194990:[[17757]],194991:[[17761]],194992:[[159665]],194993:[[159954]],194994:[[17771]],194995:[[34384]],194996:[[34396]],194997:[[34407]],194998:[[34409]],194999:[[34473]],195000:[[34440]],195001:[[34574]],195002:[[34530]],195003:[[34681]],195004:[[34600]],195005:[[34667]],195006:[[34694]],195007:[[17879]],195008:[[34785]],195009:[[34817]],195010:[[17913]],195011:[[34912]],195012:[[34915]],195013:[[161383]],195014:[[35031]],195015:[[35038]],195016:[[17973]],195017:[[35066]],195018:[[13499]],195019:[[161966]],195020:[[162150]],195021:[[18110]],195022:[[18119]],195023:[[35488]],195024:[[35565]],195025:[[35722]],195026:[[35925]],195027:[[162984]],195028:[[36011]],195029:[[36033]],195030:[[36123]],195031:[[36215]],195032:[[163631]],195033:[[133124]],195034:[[36299]],195035:[[36284]],195036:[[36336]],195037:[[133342]],195038:[[36564]],195039:[[36664]],195040:[[165330]],195041:[[165357]],195042:[[37012]],195043:[[37105]],195044:[[37137]],195045:[[165678]],195046:[[37147]],195047:[[37432]],195048:[[37591]],195049:[[37592]],195050:[[37500]],195051:[[37881]],195052:[[37909]],195053:[[166906]],195054:[[38283]],195055:[[18837]],195056:[[38327]],195057:[[167287]],195058:[[18918]],195059:[[38595]],195060:[[23986]],195061:[[38691]],195062:[[168261]],195063:[[168474]],195064:[[19054]],195065:[[19062]],195066:[[38880]],195067:[[168970]],195068:[[19122]],195069:[[169110]],195070:[[38923]],195071:[[38923]]},
6848 64000:{64000:[[20999]],64001:[[24230]],64002:[[25299]],64003:[[31958]],64004:[[23429]],64005:[[27934]],64006:[[26292]],64007:[[36667]],64008:[[34892]],64009:[[38477]],64010:[[35211]],64011:[[24275]],64012:[[20800]],64013:[[21952]],64016:[[22618]],64018:[[26228]],64021:[[20958]],64022:[[29482]],64023:[[30410]],64024:[[31036]],64025:[[31070]],64026:[[31077]],64027:[[31119]],64028:[[38742]],64029:[[31934]],64030:[[32701]],64032:[[34322]],64034:[[35576]],64037:[[36920]],64038:[[37117]],64042:[[39151]],64043:[[39164]],64044:[[39208]],64045:[[40372]],64046:[[37086]],64047:[[38583]],64048:[[20398]],64049:[[20711]],64050:[[20813]],64051:[[21193]],64052:[[21220]],64053:[[21329]],64054:[[21917]],64055:[[22022]],64056:[[22120]],64057:[[22592]],64058:[[22696]],64059:[[23652]],64060:[[23662]],64061:[[24724]],64062:[[24936]],64063:[[24974]],64064:[[25074]],64065:[[25935]],64066:[[26082]],64067:[[26257]],64068:[[26757]],64069:[[28023]],64070:[[28186]],64071:[[28450]],64072:[[29038]],64073:[[29227]],64074:[[29730]],64075:[[30865]],64076:[[31038]],64077:[[31049]],64078:[[31048]],64079:[[31056]],64080:[[31062]],64081:[[31069]],64082:[[31117]],64083:[[31118]],64084:[[31296]],64085:[[31361]],64086:[[31680]],64087:[[32244]],64088:[[32265]],64089:[[32321]],64090:[[32626]],64091:[[32773]],64092:[[33261]],64093:[[33401]],64094:[[33401]],64095:[[33879]],64096:[[35088]],64097:[[35222]],64098:[[35585]],64099:[[35641]],64100:[[36051]],64101:[[36104]],64102:[[36790]],64103:[[36920]],64104:[[38627]],64105:[[38911]],64106:[[38971]],64107:[[24693]],64108:[[148206]],64109:[[33304]],64112:[[20006]],64113:[[20917]],64114:[[20840]],64115:[[20352]],64116:[[20805]],64117:[[20864]],64118:[[21191]],64119:[[21242]],64120:[[21917]],64121:[[21845]],64122:[[21913]],64123:[[21986]],64124:[[22618]],64125:[[22707]],64126:[[22852]],64127:[[22868]],64128:[[23138]],64129:[[23336]],64130:[[24274]],64131:[[24281]],64132:[[24425]],64133:[[24493]],64134:[[24792]],64135:[[24910]],64136:[[24840]],64137:[[24974]],64138:[[24928]],64139:[[25074]],64140:[[25140]],64141:[[25540]],64142:[[25628]],64143:[[25682]],64144:[[25942]],64145:[[26228]],64146:[[26391]],64147:[[26395]],64148:[[26454]],64149:[[27513]],64150:[[27578]],64151:[[27969]],64152:[[28379]],64153:[[28363]],64154:[[28450]],64155:[[28702]],64156:[[29038]],64157:[[30631]],64158:[[29237]],64159:[[29359]],64160:[[29482]],64161:[[29809]],64162:[[29958]],64163:[[30011]],64164:[[30237]],64165:[[30239]],64166:[[30410]],64167:[[30427]],64168:[[30452]],64169:[[30538]],64170:[[30528]],64171:[[30924]],64172:[[31409]],64173:[[31680]],64174:[[31867]],64175:[[32091]],64176:[[32244]],64177:[[32574]],64178:[[32773]],64179:[[33618]],64180:[[33775]],64181:[[34681]],64182:[[35137]],64183:[[35206]],64184:[[35222]],64185:[[35519]],64186:[[35576]],64187:[[35531]],64188:[[35585]],64189:[[35582]],64190:[[35565]],64191:[[35641]],64192:[[35722]],64193:[[36104]],64194:[[36664]],64195:[[36978]],64196:[[37273]],64197:[[37494]],64198:[[38524]],64199:[[38627]],64200:[[38742]],64201:[[38875]],64202:[[38911]],64203:[[38923]],64204:[[38971]],64205:[[39698]],64206:[[40860]],64207:[[141386]],64208:[[141380]],64209:[[144341]],64210:[[15261]],64211:[[16408]],64212:[[16441]],64213:[[152137]],64214:[[154832]],64215:[[163539]],64216:[[40771]],64217:[[40846]],195072:[[38953]],195073:[[169398]],195074:[[39138]],195075:[[19251]],195076:[[39209]],195077:[[39335]],195078:[[39362]],195079:[[39422]],195080:[[19406]],195081:[[170800]],195082:[[39698]],195083:[[40000]],195084:[[40189]],195085:[[19662]],195086:[[19693]],195087:[[40295]],195088:[[172238]],195089:[[19704]],195090:[[172293]],195091:[[172558]],195092:[[172689]],195093:[[40635]],195094:[[19798]],195095:[[40697]],195096:[[40702]],195097:[[40709]],195098:[[40719]],195099:[[40726]],195100:[[40763]],195101:[[173568]]},
6849 64256:{64256:[[102,102],256],64257:[[102,105],256],64258:[[102,108],256],64259:[[102,102,105],256],64260:[[102,102,108],256],64261:[[383,116],256],64262:[[115,116],256],64275:[[1396,1398],256],64276:[[1396,1381],256],64277:[[1396,1387],256],64278:[[1406,1398],256],64279:[[1396,1389],256],64285:[[1497,1460],512],64286:[,26],64287:[[1522,1463],512],64288:[[1506],256],64289:[[1488],256],64290:[[1491],256],64291:[[1492],256],64292:[[1499],256],64293:[[1500],256],64294:[[1501],256],64295:[[1512],256],64296:[[1514],256],64297:[[43],256],64298:[[1513,1473],512],64299:[[1513,1474],512],64300:[[64329,1473],512],64301:[[64329,1474],512],64302:[[1488,1463],512],64303:[[1488,1464],512],64304:[[1488,1468],512],64305:[[1489,1468],512],64306:[[1490,1468],512],64307:[[1491,1468],512],64308:[[1492,1468],512],64309:[[1493,1468],512],64310:[[1494,1468],512],64312:[[1496,1468],512],64313:[[1497,1468],512],64314:[[1498,1468],512],64315:[[1499,1468],512],64316:[[1500,1468],512],64318:[[1502,1468],512],64320:[[1504,1468],512],64321:[[1505,1468],512],64323:[[1507,1468],512],64324:[[1508,1468],512],64326:[[1510,1468],512],64327:[[1511,1468],512],64328:[[1512,1468],512],64329:[[1513,1468],512],64330:[[1514,1468],512],64331:[[1493,1465],512],64332:[[1489,1471],512],64333:[[1499,1471],512],64334:[[1508,1471],512],64335:[[1488,1500],256],64336:[[1649],256],64337:[[1649],256],64338:[[1659],256],64339:[[1659],256],64340:[[1659],256],64341:[[1659],256],64342:[[1662],256],64343:[[1662],256],64344:[[1662],256],64345:[[1662],256],64346:[[1664],256],64347:[[1664],256],64348:[[1664],256],64349:[[1664],256],64350:[[1658],256],64351:[[1658],256],64352:[[1658],256],64353:[[1658],256],64354:[[1663],256],64355:[[1663],256],64356:[[1663],256],64357:[[1663],256],64358:[[1657],256],64359:[[1657],256],64360:[[1657],256],64361:[[1657],256],64362:[[1700],256],64363:[[1700],256],64364:[[1700],256],64365:[[1700],256],64366:[[1702],256],64367:[[1702],256],64368:[[1702],256],64369:[[1702],256],64370:[[1668],256],64371:[[1668],256],64372:[[1668],256],64373:[[1668],256],64374:[[1667],256],64375:[[1667],256],64376:[[1667],256],64377:[[1667],256],64378:[[1670],256],64379:[[1670],256],64380:[[1670],256],64381:[[1670],256],64382:[[1671],256],64383:[[1671],256],64384:[[1671],256],64385:[[1671],256],64386:[[1677],256],64387:[[1677],256],64388:[[1676],256],64389:[[1676],256],64390:[[1678],256],64391:[[1678],256],64392:[[1672],256],64393:[[1672],256],64394:[[1688],256],64395:[[1688],256],64396:[[1681],256],64397:[[1681],256],64398:[[1705],256],64399:[[1705],256],64400:[[1705],256],64401:[[1705],256],64402:[[1711],256],64403:[[1711],256],64404:[[1711],256],64405:[[1711],256],64406:[[1715],256],64407:[[1715],256],64408:[[1715],256],64409:[[1715],256],64410:[[1713],256],64411:[[1713],256],64412:[[1713],256],64413:[[1713],256],64414:[[1722],256],64415:[[1722],256],64416:[[1723],256],64417:[[1723],256],64418:[[1723],256],64419:[[1723],256],64420:[[1728],256],64421:[[1728],256],64422:[[1729],256],64423:[[1729],256],64424:[[1729],256],64425:[[1729],256],64426:[[1726],256],64427:[[1726],256],64428:[[1726],256],64429:[[1726],256],64430:[[1746],256],64431:[[1746],256],64432:[[1747],256],64433:[[1747],256],64467:[[1709],256],64468:[[1709],256],64469:[[1709],256],64470:[[1709],256],64471:[[1735],256],64472:[[1735],256],64473:[[1734],256],64474:[[1734],256],64475:[[1736],256],64476:[[1736],256],64477:[[1655],256],64478:[[1739],256],64479:[[1739],256],64480:[[1733],256],64481:[[1733],256],64482:[[1737],256],64483:[[1737],256],64484:[[1744],256],64485:[[1744],256],64486:[[1744],256],64487:[[1744],256],64488:[[1609],256],64489:[[1609],256],64490:[[1574,1575],256],64491:[[1574,1575],256],64492:[[1574,1749],256],64493:[[1574,1749],256],64494:[[1574,1608],256],64495:[[1574,1608],256],64496:[[1574,1735],256],64497:[[1574,1735],256],64498:[[1574,1734],256],64499:[[1574,1734],256],64500:[[1574,1736],256],64501:[[1574,1736],256],64502:[[1574,1744],256],64503:[[1574,1744],256],64504:[[1574,1744],256],64505:[[1574,1609],256],64506:[[1574,1609],256],64507:[[1574,1609],256],64508:[[1740],256],64509:[[1740],256],64510:[[1740],256],64511:[[1740],256]},
6850 64512:{64512:[[1574,1580],256],64513:[[1574,1581],256],64514:[[1574,1605],256],64515:[[1574,1609],256],64516:[[1574,1610],256],64517:[[1576,1580],256],64518:[[1576,1581],256],64519:[[1576,1582],256],64520:[[1576,1605],256],64521:[[1576,1609],256],64522:[[1576,1610],256],64523:[[1578,1580],256],64524:[[1578,1581],256],64525:[[1578,1582],256],64526:[[1578,1605],256],64527:[[1578,1609],256],64528:[[1578,1610],256],64529:[[1579,1580],256],64530:[[1579,1605],256],64531:[[1579,1609],256],64532:[[1579,1610],256],64533:[[1580,1581],256],64534:[[1580,1605],256],64535:[[1581,1580],256],64536:[[1581,1605],256],64537:[[1582,1580],256],64538:[[1582,1581],256],64539:[[1582,1605],256],64540:[[1587,1580],256],64541:[[1587,1581],256],64542:[[1587,1582],256],64543:[[1587,1605],256],64544:[[1589,1581],256],64545:[[1589,1605],256],64546:[[1590,1580],256],64547:[[1590,1581],256],64548:[[1590,1582],256],64549:[[1590,1605],256],64550:[[1591,1581],256],64551:[[1591,1605],256],64552:[[1592,1605],256],64553:[[1593,1580],256],64554:[[1593,1605],256],64555:[[1594,1580],256],64556:[[1594,1605],256],64557:[[1601,1580],256],64558:[[1601,1581],256],64559:[[1601,1582],256],64560:[[1601,1605],256],64561:[[1601,1609],256],64562:[[1601,1610],256],64563:[[1602,1581],256],64564:[[1602,1605],256],64565:[[1602,1609],256],64566:[[1602,1610],256],64567:[[1603,1575],256],64568:[[1603,1580],256],64569:[[1603,1581],256],64570:[[1603,1582],256],64571:[[1603,1604],256],64572:[[1603,1605],256],64573:[[1603,1609],256],64574:[[1603,1610],256],64575:[[1604,1580],256],64576:[[1604,1581],256],64577:[[1604,1582],256],64578:[[1604,1605],256],64579:[[1604,1609],256],64580:[[1604,1610],256],64581:[[1605,1580],256],64582:[[1605,1581],256],64583:[[1605,1582],256],64584:[[1605,1605],256],64585:[[1605,1609],256],64586:[[1605,1610],256],64587:[[1606,1580],256],64588:[[1606,1581],256],64589:[[1606,1582],256],64590:[[1606,1605],256],64591:[[1606,1609],256],64592:[[1606,1610],256],64593:[[1607,1580],256],64594:[[1607,1605],256],64595:[[1607,1609],256],64596:[[1607,1610],256],64597:[[1610,1580],256],64598:[[1610,1581],256],64599:[[1610,1582],256],64600:[[1610,1605],256],64601:[[1610,1609],256],64602:[[1610,1610],256],64603:[[1584,1648],256],64604:[[1585,1648],256],64605:[[1609,1648],256],64606:[[32,1612,1617],256],64607:[[32,1613,1617],256],64608:[[32,1614,1617],256],64609:[[32,1615,1617],256],64610:[[32,1616,1617],256],64611:[[32,1617,1648],256],64612:[[1574,1585],256],64613:[[1574,1586],256],64614:[[1574,1605],256],64615:[[1574,1606],256],64616:[[1574,1609],256],64617:[[1574,1610],256],64618:[[1576,1585],256],64619:[[1576,1586],256],64620:[[1576,1605],256],64621:[[1576,1606],256],64622:[[1576,1609],256],64623:[[1576,1610],256],64624:[[1578,1585],256],64625:[[1578,1586],256],64626:[[1578,1605],256],64627:[[1578,1606],256],64628:[[1578,1609],256],64629:[[1578,1610],256],64630:[[1579,1585],256],64631:[[1579,1586],256],64632:[[1579,1605],256],64633:[[1579,1606],256],64634:[[1579,1609],256],64635:[[1579,1610],256],64636:[[1601,1609],256],64637:[[1601,1610],256],64638:[[1602,1609],256],64639:[[1602,1610],256],64640:[[1603,1575],256],64641:[[1603,1604],256],64642:[[1603,1605],256],64643:[[1603,1609],256],64644:[[1603,1610],256],64645:[[1604,1605],256],64646:[[1604,1609],256],64647:[[1604,1610],256],64648:[[1605,1575],256],64649:[[1605,1605],256],64650:[[1606,1585],256],64651:[[1606,1586],256],64652:[[1606,1605],256],64653:[[1606,1606],256],64654:[[1606,1609],256],64655:[[1606,1610],256],64656:[[1609,1648],256],64657:[[1610,1585],256],64658:[[1610,1586],256],64659:[[1610,1605],256],64660:[[1610,1606],256],64661:[[1610,1609],256],64662:[[1610,1610],256],64663:[[1574,1580],256],64664:[[1574,1581],256],64665:[[1574,1582],256],64666:[[1574,1605],256],64667:[[1574,1607],256],64668:[[1576,1580],256],64669:[[1576,1581],256],64670:[[1576,1582],256],64671:[[1576,1605],256],64672:[[1576,1607],256],64673:[[1578,1580],256],64674:[[1578,1581],256],64675:[[1578,1582],256],64676:[[1578,1605],256],64677:[[1578,1607],256],64678:[[1579,1605],256],64679:[[1580,1581],256],64680:[[1580,1605],256],64681:[[1581,1580],256],64682:[[1581,1605],256],64683:[[1582,1580],256],64684:[[1582,1605],256],64685:[[1587,1580],256],64686:[[1587,1581],256],64687:[[1587,1582],256],64688:[[1587,1605],256],64689:[[1589,1581],256],64690:[[1589,1582],256],64691:[[1589,1605],256],64692:[[1590,1580],256],64693:[[1590,1581],256],64694:[[1590,1582],256],64695:[[1590,1605],256],64696:[[1591,1581],256],64697:[[1592,1605],256],64698:[[1593,1580],256],64699:[[1593,1605],256],64700:[[1594,1580],256],64701:[[1594,1605],256],64702:[[1601,1580],256],64703:[[1601,1581],256],64704:[[1601,1582],256],64705:[[1601,1605],256],64706:[[1602,1581],256],64707:[[1602,1605],256],64708:[[1603,1580],256],64709:[[1603,1581],256],64710:[[1603,1582],256],64711:[[1603,1604],256],64712:[[1603,1605],256],64713:[[1604,1580],256],64714:[[1604,1581],256],64715:[[1604,1582],256],64716:[[1604,1605],256],64717:[[1604,1607],256],64718:[[1605,1580],256],64719:[[1605,1581],256],64720:[[1605,1582],256],64721:[[1605,1605],256],64722:[[1606,1580],256],64723:[[1606,1581],256],64724:[[1606,1582],256],64725:[[1606,1605],256],64726:[[1606,1607],256],64727:[[1607,1580],256],64728:[[1607,1605],256],64729:[[1607,1648],256],64730:[[1610,1580],256],64731:[[1610,1581],256],64732:[[1610,1582],256],64733:[[1610,1605],256],64734:[[1610,1607],256],64735:[[1574,1605],256],64736:[[1574,1607],256],64737:[[1576,1605],256],64738:[[1576,1607],256],64739:[[1578,1605],256],64740:[[1578,1607],256],64741:[[1579,1605],256],64742:[[1579,1607],256],64743:[[1587,1605],256],64744:[[1587,1607],256],64745:[[1588,1605],256],64746:[[1588,1607],256],64747:[[1603,1604],256],64748:[[1603,1605],256],64749:[[1604,1605],256],64750:[[1606,1605],256],64751:[[1606,1607],256],64752:[[1610,1605],256],64753:[[1610,1607],256],64754:[[1600,1614,1617],256],64755:[[1600,1615,1617],256],64756:[[1600,1616,1617],256],64757:[[1591,1609],256],64758:[[1591,1610],256],64759:[[1593,1609],256],64760:[[1593,1610],256],64761:[[1594,1609],256],64762:[[1594,1610],256],64763:[[1587,1609],256],64764:[[1587,1610],256],64765:[[1588,1609],256],64766:[[1588,1610],256],64767:[[1581,1609],256]},
6851 64768:{64768:[[1581,1610],256],64769:[[1580,1609],256],64770:[[1580,1610],256],64771:[[1582,1609],256],64772:[[1582,1610],256],64773:[[1589,1609],256],64774:[[1589,1610],256],64775:[[1590,1609],256],64776:[[1590,1610],256],64777:[[1588,1580],256],64778:[[1588,1581],256],64779:[[1588,1582],256],64780:[[1588,1605],256],64781:[[1588,1585],256],64782:[[1587,1585],256],64783:[[1589,1585],256],64784:[[1590,1585],256],64785:[[1591,1609],256],64786:[[1591,1610],256],64787:[[1593,1609],256],64788:[[1593,1610],256],64789:[[1594,1609],256],64790:[[1594,1610],256],64791:[[1587,1609],256],64792:[[1587,1610],256],64793:[[1588,1609],256],64794:[[1588,1610],256],64795:[[1581,1609],256],64796:[[1581,1610],256],64797:[[1580,1609],256],64798:[[1580,1610],256],64799:[[1582,1609],256],64800:[[1582,1610],256],64801:[[1589,1609],256],64802:[[1589,1610],256],64803:[[1590,1609],256],64804:[[1590,1610],256],64805:[[1588,1580],256],64806:[[1588,1581],256],64807:[[1588,1582],256],64808:[[1588,1605],256],64809:[[1588,1585],256],64810:[[1587,1585],256],64811:[[1589,1585],256],64812:[[1590,1585],256],64813:[[1588,1580],256],64814:[[1588,1581],256],64815:[[1588,1582],256],64816:[[1588,1605],256],64817:[[1587,1607],256],64818:[[1588,1607],256],64819:[[1591,1605],256],64820:[[1587,1580],256],64821:[[1587,1581],256],64822:[[1587,1582],256],64823:[[1588,1580],256],64824:[[1588,1581],256],64825:[[1588,1582],256],64826:[[1591,1605],256],64827:[[1592,1605],256],64828:[[1575,1611],256],64829:[[1575,1611],256],64848:[[1578,1580,1605],256],64849:[[1578,1581,1580],256],64850:[[1578,1581,1580],256],64851:[[1578,1581,1605],256],64852:[[1578,1582,1605],256],64853:[[1578,1605,1580],256],64854:[[1578,1605,1581],256],64855:[[1578,1605,1582],256],64856:[[1580,1605,1581],256],64857:[[1580,1605,1581],256],64858:[[1581,1605,1610],256],64859:[[1581,1605,1609],256],64860:[[1587,1581,1580],256],64861:[[1587,1580,1581],256],64862:[[1587,1580,1609],256],64863:[[1587,1605,1581],256],64864:[[1587,1605,1581],256],64865:[[1587,1605,1580],256],64866:[[1587,1605,1605],256],64867:[[1587,1605,1605],256],64868:[[1589,1581,1581],256],64869:[[1589,1581,1581],256],64870:[[1589,1605,1605],256],64871:[[1588,1581,1605],256],64872:[[1588,1581,1605],256],64873:[[1588,1580,1610],256],64874:[[1588,1605,1582],256],64875:[[1588,1605,1582],256],64876:[[1588,1605,1605],256],64877:[[1588,1605,1605],256],64878:[[1590,1581,1609],256],64879:[[1590,1582,1605],256],64880:[[1590,1582,1605],256],64881:[[1591,1605,1581],256],64882:[[1591,1605,1581],256],64883:[[1591,1605,1605],256],64884:[[1591,1605,1610],256],64885:[[1593,1580,1605],256],64886:[[1593,1605,1605],256],64887:[[1593,1605,1605],256],64888:[[1593,1605,1609],256],64889:[[1594,1605,1605],256],64890:[[1594,1605,1610],256],64891:[[1594,1605,1609],256],64892:[[1601,1582,1605],256],64893:[[1601,1582,1605],256],64894:[[1602,1605,1581],256],64895:[[1602,1605,1605],256],64896:[[1604,1581,1605],256],64897:[[1604,1581,1610],256],64898:[[1604,1581,1609],256],64899:[[1604,1580,1580],256],64900:[[1604,1580,1580],256],64901:[[1604,1582,1605],256],64902:[[1604,1582,1605],256],64903:[[1604,1605,1581],256],64904:[[1604,1605,1581],256],64905:[[1605,1581,1580],256],64906:[[1605,1581,1605],256],64907:[[1605,1581,1610],256],64908:[[1605,1580,1581],256],64909:[[1605,1580,1605],256],64910:[[1605,1582,1580],256],64911:[[1605,1582,1605],256],64914:[[1605,1580,1582],256],64915:[[1607,1605,1580],256],64916:[[1607,1605,1605],256],64917:[[1606,1581,1605],256],64918:[[1606,1581,1609],256],64919:[[1606,1580,1605],256],64920:[[1606,1580,1605],256],64921:[[1606,1580,1609],256],64922:[[1606,1605,1610],256],64923:[[1606,1605,1609],256],64924:[[1610,1605,1605],256],64925:[[1610,1605,1605],256],64926:[[1576,1582,1610],256],64927:[[1578,1580,1610],256],64928:[[1578,1580,1609],256],64929:[[1578,1582,1610],256],64930:[[1578,1582,1609],256],64931:[[1578,1605,1610],256],64932:[[1578,1605,1609],256],64933:[[1580,1605,1610],256],64934:[[1580,1581,1609],256],64935:[[1580,1605,1609],256],64936:[[1587,1582,1609],256],64937:[[1589,1581,1610],256],64938:[[1588,1581,1610],256],64939:[[1590,1581,1610],256],64940:[[1604,1580,1610],256],64941:[[1604,1605,1610],256],64942:[[1610,1581,1610],256],64943:[[1610,1580,1610],256],64944:[[1610,1605,1610],256],64945:[[1605,1605,1610],256],64946:[[1602,1605,1610],256],64947:[[1606,1581,1610],256],64948:[[1602,1605,1581],256],64949:[[1604,1581,1605],256],64950:[[1593,1605,1610],256],64951:[[1603,1605,1610],256],64952:[[1606,1580,1581],256],64953:[[1605,1582,1610],256],64954:[[1604,1580,1605],256],64955:[[1603,1605,1605],256],64956:[[1604,1580,1605],256],64957:[[1606,1580,1581],256],64958:[[1580,1581,1610],256],64959:[[1581,1580,1610],256],64960:[[1605,1580,1610],256],64961:[[1601,1605,1610],256],64962:[[1576,1581,1610],256],64963:[[1603,1605,1605],256],64964:[[1593,1580,1605],256],64965:[[1589,1605,1605],256],64966:[[1587,1582,1610],256],64967:[[1606,1580,1610],256],65008:[[1589,1604,1746],256],65009:[[1602,1604,1746],256],65010:[[1575,1604,1604,1607],256],65011:[[1575,1603,1576,1585],256],65012:[[1605,1581,1605,1583],256],65013:[[1589,1604,1593,1605],256],65014:[[1585,1587,1608,1604],256],65015:[[1593,1604,1610,1607],256],65016:[[1608,1587,1604,1605],256],65017:[[1589,1604,1609],256],65018:[[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605],256],65019:[[1580,1604,32,1580,1604,1575,1604,1607],256],65020:[[1585,1740,1575,1604],256]},
6852 65024:{65040:[[44],256],65041:[[12289],256],65042:[[12290],256],65043:[[58],256],65044:[[59],256],65045:[[33],256],65046:[[63],256],65047:[[12310],256],65048:[[12311],256],65049:[[8230],256],65056:[,230],65057:[,230],65058:[,230],65059:[,230],65060:[,230],65061:[,230],65062:[,230],65063:[,220],65064:[,220],65065:[,220],65066:[,220],65067:[,220],65068:[,220],65069:[,220],65072:[[8229],256],65073:[[8212],256],65074:[[8211],256],65075:[[95],256],65076:[[95],256],65077:[[40],256],65078:[[41],256],65079:[[123],256],65080:[[125],256],65081:[[12308],256],65082:[[12309],256],65083:[[12304],256],65084:[[12305],256],65085:[[12298],256],65086:[[12299],256],65087:[[12296],256],65088:[[12297],256],65089:[[12300],256],65090:[[12301],256],65091:[[12302],256],65092:[[12303],256],65095:[[91],256],65096:[[93],256],65097:[[8254],256],65098:[[8254],256],65099:[[8254],256],65100:[[8254],256],65101:[[95],256],65102:[[95],256],65103:[[95],256],65104:[[44],256],65105:[[12289],256],65106:[[46],256],65108:[[59],256],65109:[[58],256],65110:[[63],256],65111:[[33],256],65112:[[8212],256],65113:[[40],256],65114:[[41],256],65115:[[123],256],65116:[[125],256],65117:[[12308],256],65118:[[12309],256],65119:[[35],256],65120:[[38],256],65121:[[42],256],65122:[[43],256],65123:[[45],256],65124:[[60],256],65125:[[62],256],65126:[[61],256],65128:[[92],256],65129:[[36],256],65130:[[37],256],65131:[[64],256],65136:[[32,1611],256],65137:[[1600,1611],256],65138:[[32,1612],256],65140:[[32,1613],256],65142:[[32,1614],256],65143:[[1600,1614],256],65144:[[32,1615],256],65145:[[1600,1615],256],65146:[[32,1616],256],65147:[[1600,1616],256],65148:[[32,1617],256],65149:[[1600,1617],256],65150:[[32,1618],256],65151:[[1600,1618],256],65152:[[1569],256],65153:[[1570],256],65154:[[1570],256],65155:[[1571],256],65156:[[1571],256],65157:[[1572],256],65158:[[1572],256],65159:[[1573],256],65160:[[1573],256],65161:[[1574],256],65162:[[1574],256],65163:[[1574],256],65164:[[1574],256],65165:[[1575],256],65166:[[1575],256],65167:[[1576],256],65168:[[1576],256],65169:[[1576],256],65170:[[1576],256],65171:[[1577],256],65172:[[1577],256],65173:[[1578],256],65174:[[1578],256],65175:[[1578],256],65176:[[1578],256],65177:[[1579],256],65178:[[1579],256],65179:[[1579],256],65180:[[1579],256],65181:[[1580],256],65182:[[1580],256],65183:[[1580],256],65184:[[1580],256],65185:[[1581],256],65186:[[1581],256],65187:[[1581],256],65188:[[1581],256],65189:[[1582],256],65190:[[1582],256],65191:[[1582],256],65192:[[1582],256],65193:[[1583],256],65194:[[1583],256],65195:[[1584],256],65196:[[1584],256],65197:[[1585],256],65198:[[1585],256],65199:[[1586],256],65200:[[1586],256],65201:[[1587],256],65202:[[1587],256],65203:[[1587],256],65204:[[1587],256],65205:[[1588],256],65206:[[1588],256],65207:[[1588],256],65208:[[1588],256],65209:[[1589],256],65210:[[1589],256],65211:[[1589],256],65212:[[1589],256],65213:[[1590],256],65214:[[1590],256],65215:[[1590],256],65216:[[1590],256],65217:[[1591],256],65218:[[1591],256],65219:[[1591],256],65220:[[1591],256],65221:[[1592],256],65222:[[1592],256],65223:[[1592],256],65224:[[1592],256],65225:[[1593],256],65226:[[1593],256],65227:[[1593],256],65228:[[1593],256],65229:[[1594],256],65230:[[1594],256],65231:[[1594],256],65232:[[1594],256],65233:[[1601],256],65234:[[1601],256],65235:[[1601],256],65236:[[1601],256],65237:[[1602],256],65238:[[1602],256],65239:[[1602],256],65240:[[1602],256],65241:[[1603],256],65242:[[1603],256],65243:[[1603],256],65244:[[1603],256],65245:[[1604],256],65246:[[1604],256],65247:[[1604],256],65248:[[1604],256],65249:[[1605],256],65250:[[1605],256],65251:[[1605],256],65252:[[1605],256],65253:[[1606],256],65254:[[1606],256],65255:[[1606],256],65256:[[1606],256],65257:[[1607],256],65258:[[1607],256],65259:[[1607],256],65260:[[1607],256],65261:[[1608],256],65262:[[1608],256],65263:[[1609],256],65264:[[1609],256],65265:[[1610],256],65266:[[1610],256],65267:[[1610],256],65268:[[1610],256],65269:[[1604,1570],256],65270:[[1604,1570],256],65271:[[1604,1571],256],65272:[[1604,1571],256],65273:[[1604,1573],256],65274:[[1604,1573],256],65275:[[1604,1575],256],65276:[[1604,1575],256]},
6853 65280:{65281:[[33],256],65282:[[34],256],65283:[[35],256],65284:[[36],256],65285:[[37],256],65286:[[38],256],65287:[[39],256],65288:[[40],256],65289:[[41],256],65290:[[42],256],65291:[[43],256],65292:[[44],256],65293:[[45],256],65294:[[46],256],65295:[[47],256],65296:[[48],256],65297:[[49],256],65298:[[50],256],65299:[[51],256],65300:[[52],256],65301:[[53],256],65302:[[54],256],65303:[[55],256],65304:[[56],256],65305:[[57],256],65306:[[58],256],65307:[[59],256],65308:[[60],256],65309:[[61],256],65310:[[62],256],65311:[[63],256],65312:[[64],256],65313:[[65],256],65314:[[66],256],65315:[[67],256],65316:[[68],256],65317:[[69],256],65318:[[70],256],65319:[[71],256],65320:[[72],256],65321:[[73],256],65322:[[74],256],65323:[[75],256],65324:[[76],256],65325:[[77],256],65326:[[78],256],65327:[[79],256],65328:[[80],256],65329:[[81],256],65330:[[82],256],65331:[[83],256],65332:[[84],256],65333:[[85],256],65334:[[86],256],65335:[[87],256],65336:[[88],256],65337:[[89],256],65338:[[90],256],65339:[[91],256],65340:[[92],256],65341:[[93],256],65342:[[94],256],65343:[[95],256],65344:[[96],256],65345:[[97],256],65346:[[98],256],65347:[[99],256],65348:[[100],256],65349:[[101],256],65350:[[102],256],65351:[[103],256],65352:[[104],256],65353:[[105],256],65354:[[106],256],65355:[[107],256],65356:[[108],256],65357:[[109],256],65358:[[110],256],65359:[[111],256],65360:[[112],256],65361:[[113],256],65362:[[114],256],65363:[[115],256],65364:[[116],256],65365:[[117],256],65366:[[118],256],65367:[[119],256],65368:[[120],256],65369:[[121],256],65370:[[122],256],65371:[[123],256],65372:[[124],256],65373:[[125],256],65374:[[126],256],65375:[[10629],256],65376:[[10630],256],65377:[[12290],256],65378:[[12300],256],65379:[[12301],256],65380:[[12289],256],65381:[[12539],256],65382:[[12530],256],65383:[[12449],256],65384:[[12451],256],65385:[[12453],256],65386:[[12455],256],65387:[[12457],256],65388:[[12515],256],65389:[[12517],256],65390:[[12519],256],65391:[[12483],256],65392:[[12540],256],65393:[[12450],256],65394:[[12452],256],65395:[[12454],256],65396:[[12456],256],65397:[[12458],256],65398:[[12459],256],65399:[[12461],256],65400:[[12463],256],65401:[[12465],256],65402:[[12467],256],65403:[[12469],256],65404:[[12471],256],65405:[[12473],256],65406:[[12475],256],65407:[[12477],256],65408:[[12479],256],65409:[[12481],256],65410:[[12484],256],65411:[[12486],256],65412:[[12488],256],65413:[[12490],256],65414:[[12491],256],65415:[[12492],256],65416:[[12493],256],65417:[[12494],256],65418:[[12495],256],65419:[[12498],256],65420:[[12501],256],65421:[[12504],256],65422:[[12507],256],65423:[[12510],256],65424:[[12511],256],65425:[[12512],256],65426:[[12513],256],65427:[[12514],256],65428:[[12516],256],65429:[[12518],256],65430:[[12520],256],65431:[[12521],256],65432:[[12522],256],65433:[[12523],256],65434:[[12524],256],65435:[[12525],256],65436:[[12527],256],65437:[[12531],256],65438:[[12441],256],65439:[[12442],256],65440:[[12644],256],65441:[[12593],256],65442:[[12594],256],65443:[[12595],256],65444:[[12596],256],65445:[[12597],256],65446:[[12598],256],65447:[[12599],256],65448:[[12600],256],65449:[[12601],256],65450:[[12602],256],65451:[[12603],256],65452:[[12604],256],65453:[[12605],256],65454:[[12606],256],65455:[[12607],256],65456:[[12608],256],65457:[[12609],256],65458:[[12610],256],65459:[[12611],256],65460:[[12612],256],65461:[[12613],256],65462:[[12614],256],65463:[[12615],256],65464:[[12616],256],65465:[[12617],256],65466:[[12618],256],65467:[[12619],256],65468:[[12620],256],65469:[[12621],256],65470:[[12622],256],65474:[[12623],256],65475:[[12624],256],65476:[[12625],256],65477:[[12626],256],65478:[[12627],256],65479:[[12628],256],65482:[[12629],256],65483:[[12630],256],65484:[[12631],256],65485:[[12632],256],65486:[[12633],256],65487:[[12634],256],65490:[[12635],256],65491:[[12636],256],65492:[[12637],256],65493:[[12638],256],65494:[[12639],256],65495:[[12640],256],65498:[[12641],256],65499:[[12642],256],65500:[[12643],256],65504:[[162],256],65505:[[163],256],65506:[[172],256],65507:[[175],256],65508:[[166],256],65509:[[165],256],65510:[[8361],256],65512:[[9474],256],65513:[[8592],256],65514:[[8593],256],65515:[[8594],256],65516:[[8595],256],65517:[[9632],256],65518:[[9675],256]}
6854
6855 };
6856
6857 /***** Module to export */
6858 var unorm = {
6859 nfc: nfc,
6860 nfd: nfd,
6861 nfkc: nfkc,
6862 nfkd: nfkd
6863 };
6864
6865 /*globals module:true,define:true*/
6866
6867 // CommonJS
6868 if (typeof module === "object") {
6869 module.exports = unorm;
6870
6871 // AMD
6872 } else if (typeof define === "function" && define.amd) {
6873 define("unorm", function () {
6874 return unorm;
6875 });
6876
6877 // Global
6878 } else {
6879 root.unorm = unorm;
6880 }
6881
6882 /***** Export as shim for String::normalize method *****/
6883 /*
6884 http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts#november_8_2013_draft_rev_21
6885
6886 21.1.3.12 String.prototype.normalize(form="NFC")
6887 When the normalize method is called with one argument form, the following steps are taken:
6888
6889 1. Let O be CheckObjectCoercible(this value).
6890 2. Let S be ToString(O).
6891 3. ReturnIfAbrupt(S).
6892 4. If form is not provided or undefined let form be "NFC".
6893 5. Let f be ToString(form).
6894 6. ReturnIfAbrupt(f).
6895 7. If f is not one of "NFC", "NFD", "NFKC", or "NFKD", then throw a RangeError Exception.
6896 8. Let ns be the String value is the result of normalizing S into the normalization form named by f as specified in Unicode Standard Annex #15, UnicodeNormalizatoin Forms.
6897 9. Return ns.
6898
6899 The length property of the normalize method is 0.
6900
6901 *NOTE* The normalize function is intentionally generic; it does not require that its this value be a String object. Therefore it can be transferred to other kinds of objects for use as a method.
6902 */
6903 unorm.shimApplied = false;
6904
6905 if (!String.prototype.normalize) {
6906 String.prototype.normalize = function(form) {
6907 var str = "" + this;
6908 form = form === undefined ? "NFC" : form;
6909
6910 if (form === "NFC") {
6911 return unorm.nfc(str);
6912 } else if (form === "NFD") {
6913 return unorm.nfd(str);
6914 } else if (form === "NFKC") {
6915 return unorm.nfkc(str);
6916 } else if (form === "NFKD") {
6917 return unorm.nfkd(str);
6918 } else {
6919 throw new RangeError("Invalid normalization form: " + form);
6920 }
6921 };
6922
6923 unorm.shimApplied = true;
6924 }
6925 }(this));
6926 </script>
6927 <script>/*! jQuery v2.1.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
6928 !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)
6929 },_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))
6930 },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});
6931 </script>
6932 <script>/*!
6933 * Bootstrap v3.2.0 (http://getbootstrap.com)
6934 * Copyright 2011-2014 Twitter, Inc.
6935 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
6936 */
6937 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);</script>
6938 <script>(function() {
6939 'use strict';
6940
6941 /**
6942 * Extend an Object with another Object's properties.
6943 *
6944 * The source objects are specified as additional arguments.
6945 *
6946 * @param dst Object the object to extend.
6947 *
6948 * @return Object the final object.
6949 */
6950 var _extend = function(dst) {
6951 var sources = Array.prototype.slice.call(arguments, 1);
6952 for (var i=0; i<sources.length; ++i) {
6953 var src = sources[i];
6954 for (var p in src) {
6955 if (src.hasOwnProperty(p)) dst[p] = src[p];
6956 }
6957 }
6958 return dst;
6959 };
6960
6961
6962 /**
6963 * Defer execution of given function.
6964 * @param {Function} func
6965 */
6966 var _defer = function(func) {
6967 if (typeof setImmediate === 'function') {
6968 return setImmediate(func);
6969 } else {
6970 return setTimeout(func, 0);
6971 }
6972 };
6973
6974 /**
6975 * Based on the algorithm at http://en.wikipedia.org/wiki/Levenshtein_distance.
6976 */
6977 var Levenshtein = {
6978 /**
6979 * Calculate levenshtein distance of the two strings.
6980 *
6981 * @param str1 String the first string.
6982 * @param str2 String the second string.
6983 * @return Integer the levenshtein distance (0 and above).
6984 */
6985 get: function(str1, str2) {
6986 // base cases
6987 if (str1 === str2) return 0;
6988 if (str1.length === 0) return str2.length;
6989 if (str2.length === 0) return str1.length;
6990
6991 // two rows
6992 var prevRow = new Array(str2.length + 1),
6993 curCol, nextCol, i, j, tmp;
6994
6995 // initialise previous row
6996 for (i=0; i<prevRow.length; ++i) {
6997 prevRow[i] = i;
6998 }
6999
7000 // calculate current row distance from previous row
7001 for (i=0; i<str1.length; ++i) {
7002 nextCol = i + 1;
7003
7004 for (j=0; j<str2.length; ++j) {
7005 curCol = nextCol;
7006
7007 // substution
7008 nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ? 0 : 1 );
7009 // insertion
7010 tmp = curCol + 1;
7011 if (nextCol > tmp) {
7012 nextCol = tmp;
7013 }
7014 // deletion
7015 tmp = prevRow[j + 1] + 1;
7016 if (nextCol > tmp) {
7017 nextCol = tmp;
7018 }
7019
7020 // copy current col value into previous (in preparation for next iteration)
7021 prevRow[j] = curCol;
7022 }
7023
7024 // copy last col value into previous (in preparation for next iteration)
7025 prevRow[j] = nextCol;
7026 }
7027
7028 return nextCol;
7029 },
7030
7031 /**
7032 * Asynchronously calculate levenshtein distance of the two strings.
7033 *
7034 * @param str1 String the first string.
7035 * @param str2 String the second string.
7036 * @param cb Function callback function with signature: function(Error err, int distance)
7037 * @param [options] Object additional options.
7038 * @param [options.progress] Function progress callback with signature: function(percentComplete)
7039 */
7040 getAsync: function(str1, str2, cb, options) {
7041 options = _extend({}, {
7042 progress: null
7043 }, options);
7044
7045 // base cases
7046 if (str1 === str2) return cb(null, 0);
7047 if (str1.length === 0) return cb(null, str2.length);
7048 if (str2.length === 0) return cb(null, str1.length);
7049
7050 // two rows
7051 var prevRow = new Array(str2.length + 1),
7052 curCol, nextCol,
7053 i, j, tmp,
7054 startTime, currentTime;
7055
7056 // initialise previous row
7057 for (i=0; i<prevRow.length; ++i) {
7058 prevRow[i] = i;
7059 }
7060
7061 nextCol = 1;
7062 i = 0;
7063 j = -1;
7064
7065 var __calculate = function() {
7066 // reset timer
7067 startTime = new Date().valueOf();
7068 currentTime = startTime;
7069
7070 // keep going until one second has elapsed
7071 while (currentTime - startTime < 1000) {
7072 // reached end of current row?
7073 if (str2.length <= (++j)) {
7074 // copy current into previous (in preparation for next iteration)
7075 prevRow[j] = nextCol;
7076
7077 // if already done all chars
7078 if (str1.length <= (++i)) {
7079 return cb(null, nextCol);
7080 }
7081 // else if we have more left to do
7082 else {
7083 nextCol = i + 1;
7084 j = 0;
7085 }
7086 }
7087
7088 // calculation
7089 curCol = nextCol;
7090
7091 // substution
7092 nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ? 0 : 1 );
7093 // insertion
7094 tmp = curCol + 1;
7095 if (nextCol > tmp) {
7096 nextCol = tmp;
7097 }
7098 // deletion
7099 tmp = prevRow[j + 1] + 1;
7100 if (nextCol > tmp) {
7101 nextCol = tmp;
7102 }
7103
7104 // copy current into previous (in preparation for next iteration)
7105 prevRow[j] = curCol;
7106
7107 // get current time
7108 currentTime = new Date().valueOf();
7109 }
7110
7111 // send a progress update?
7112 if (null !== options.progress) {
7113 try {
7114 options.progress.call(null, (i * 100.0/ str1.length));
7115 } catch (err) {
7116 return cb('Progress callback: ' + err.toString());
7117 }
7118 }
7119
7120 // next iteration
7121 _defer(__calculate);
7122 };
7123
7124 __calculate();
7125 }
7126
7127 };
7128
7129 // amd
7130 if (typeof define !== "undefined" && define !== null && define.amd) {
7131 define(function() {
7132 return Levenshtein;
7133 });
7134 }
7135 // commonjs
7136 else if (typeof module !== "undefined" && module !== null && typeof exports !== "undefined" && module.exports === exports) {
7137 module.exports = Levenshtein;
7138 }
7139 // web worker
7140 else if (typeof self !== "undefined" && typeof self.postMessage === 'function' && typeof self.importScripts === 'function') {
7141 self.Levenshtein = Levenshtein;
7142 }
7143 // browser main thread
7144 else if (typeof window !== "undefined" && window !== null) {
7145 window.Levenshtein = Levenshtein;
7146 }
7147 }());
7148
7149 </script>
7150 <script>(function(r){r.fn.qrcode=function(h){var s;function u(a){this.mode=s;this.data=a}function o(a,c){this.typeNumber=a;this.errorCorrectLevel=c;this.modules=null;this.moduleCount=0;this.dataCache=null;this.dataList=[]}function q(a,c){if(void 0==a.length)throw Error(a.length+"/"+c);for(var d=0;d<a.length&&0==a[d];)d++;this.num=Array(a.length-d+c);for(var b=0;b<a.length-d;b++)this.num[b]=a[b+d]}function p(a,c){this.totalCount=a;this.dataCount=c}function t(){this.buffer=[];this.length=0}u.prototype={getLength:function(){return this.data.length},
7151 write:function(a){for(var c=0;c<this.data.length;c++)a.put(this.data.charCodeAt(c),8)}};o.prototype={addData:function(a){this.dataList.push(new u(a));this.dataCache=null},isDark:function(a,c){if(0>a||this.moduleCount<=a||0>c||this.moduleCount<=c)throw Error(a+","+c);return this.modules[a][c]},getModuleCount:function(){return this.moduleCount},make:function(){if(1>this.typeNumber){for(var a=1,a=1;40>a;a++){for(var c=p.getRSBlocks(a,this.errorCorrectLevel),d=new t,b=0,e=0;e<c.length;e++)b+=c[e].dataCount;
7152 for(e=0;e<this.dataList.length;e++)c=this.dataList[e],d.put(c.mode,4),d.put(c.getLength(),j.getLengthInBits(c.mode,a)),c.write(d);if(d.getLengthInBits()<=8*b)break}this.typeNumber=a}this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(a,c){this.moduleCount=4*this.typeNumber+17;this.modules=Array(this.moduleCount);for(var d=0;d<this.moduleCount;d++){this.modules[d]=Array(this.moduleCount);for(var b=0;b<this.moduleCount;b++)this.modules[d][b]=null}this.setupPositionProbePattern(0,0);this.setupPositionProbePattern(this.moduleCount-
7153 7,0);this.setupPositionProbePattern(0,this.moduleCount-7);this.setupPositionAdjustPattern();this.setupTimingPattern();this.setupTypeInfo(a,c);7<=this.typeNumber&&this.setupTypeNumber(a);null==this.dataCache&&(this.dataCache=o.createData(this.typeNumber,this.errorCorrectLevel,this.dataList));this.mapData(this.dataCache,c)},setupPositionProbePattern:function(a,c){for(var d=-1;7>=d;d++)if(!(-1>=a+d||this.moduleCount<=a+d))for(var b=-1;7>=b;b++)-1>=c+b||this.moduleCount<=c+b||(this.modules[a+d][c+b]=
7154 0<=d&&6>=d&&(0==b||6==b)||0<=b&&6>=b&&(0==d||6==d)||2<=d&&4>=d&&2<=b&&4>=b?!0:!1)},getBestMaskPattern:function(){for(var a=0,c=0,d=0;8>d;d++){this.makeImpl(!0,d);var b=j.getLostPoint(this);if(0==d||a>b)a=b,c=d}return c},createMovieClip:function(a,c,d){a=a.createEmptyMovieClip(c,d);this.make();for(c=0;c<this.modules.length;c++)for(var d=1*c,b=0;b<this.modules[c].length;b++){var e=1*b;this.modules[c][b]&&(a.beginFill(0,100),a.moveTo(e,d),a.lineTo(e+1,d),a.lineTo(e+1,d+1),a.lineTo(e,d+1),a.endFill())}return a},
7155 setupTimingPattern:function(){for(var a=8;a<this.moduleCount-8;a++)null==this.modules[a][6]&&(this.modules[a][6]=0==a%2);for(a=8;a<this.moduleCount-8;a++)null==this.modules[6][a]&&(this.modules[6][a]=0==a%2)},setupPositionAdjustPattern:function(){for(var a=j.getPatternPosition(this.typeNumber),c=0;c<a.length;c++)for(var d=0;d<a.length;d++){var b=a[c],e=a[d];if(null==this.modules[b][e])for(var f=-2;2>=f;f++)for(var i=-2;2>=i;i++)this.modules[b+f][e+i]=-2==f||2==f||-2==i||2==i||0==f&&0==i?!0:!1}},setupTypeNumber:function(a){for(var c=
7156 j.getBCHTypeNumber(this.typeNumber),d=0;18>d;d++){var b=!a&&1==(c>>d&1);this.modules[Math.floor(d/3)][d%3+this.moduleCount-8-3]=b}for(d=0;18>d;d++)b=!a&&1==(c>>d&1),this.modules[d%3+this.moduleCount-8-3][Math.floor(d/3)]=b},setupTypeInfo:function(a,c){for(var d=j.getBCHTypeInfo(this.errorCorrectLevel<<3|c),b=0;15>b;b++){var e=!a&&1==(d>>b&1);6>b?this.modules[b][8]=e:8>b?this.modules[b+1][8]=e:this.modules[this.moduleCount-15+b][8]=e}for(b=0;15>b;b++)e=!a&&1==(d>>b&1),8>b?this.modules[8][this.moduleCount-
7157 b-1]=e:9>b?this.modules[8][15-b-1+1]=e:this.modules[8][15-b-1]=e;this.modules[this.moduleCount-8][8]=!a},mapData:function(a,c){for(var d=-1,b=this.moduleCount-1,e=7,f=0,i=this.moduleCount-1;0<i;i-=2)for(6==i&&i--;;){for(var g=0;2>g;g++)if(null==this.modules[b][i-g]){var n=!1;f<a.length&&(n=1==(a[f]>>>e&1));j.getMask(c,b,i-g)&&(n=!n);this.modules[b][i-g]=n;e--; -1==e&&(f++,e=7)}b+=d;if(0>b||this.moduleCount<=b){b-=d;d=-d;break}}}};o.PAD0=236;o.PAD1=17;o.createData=function(a,c,d){for(var c=p.getRSBlocks(a,
7158 c),b=new t,e=0;e<d.length;e++){var f=d[e];b.put(f.mode,4);b.put(f.getLength(),j.getLengthInBits(f.mode,a));f.write(b)}for(e=a=0;e<c.length;e++)a+=c[e].dataCount;if(b.getLengthInBits()>8*a)throw Error("code length overflow. ("+b.getLengthInBits()+">"+8*a+")");for(b.getLengthInBits()+4<=8*a&&b.put(0,4);0!=b.getLengthInBits()%8;)b.putBit(!1);for(;!(b.getLengthInBits()>=8*a);){b.put(o.PAD0,8);if(b.getLengthInBits()>=8*a)break;b.put(o.PAD1,8)}return o.createBytes(b,c)};o.createBytes=function(a,c){for(var d=
7159 0,b=0,e=0,f=Array(c.length),i=Array(c.length),g=0;g<c.length;g++){var n=c[g].dataCount,h=c[g].totalCount-n,b=Math.max(b,n),e=Math.max(e,h);f[g]=Array(n);for(var k=0;k<f[g].length;k++)f[g][k]=255&a.buffer[k+d];d+=n;k=j.getErrorCorrectPolynomial(h);n=(new q(f[g],k.getLength()-1)).mod(k);i[g]=Array(k.getLength()-1);for(k=0;k<i[g].length;k++)h=k+n.getLength()-i[g].length,i[g][k]=0<=h?n.get(h):0}for(k=g=0;k<c.length;k++)g+=c[k].totalCount;d=Array(g);for(k=n=0;k<b;k++)for(g=0;g<c.length;g++)k<f[g].length&&
7160 (d[n++]=f[g][k]);for(k=0;k<e;k++)for(g=0;g<c.length;g++)k<i[g].length&&(d[n++]=i[g][k]);return d};s=4;for(var j={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,
7161 78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:1335,G18:7973,G15_MASK:21522,getBCHTypeInfo:function(a){for(var c=a<<10;0<=j.getBCHDigit(c)-j.getBCHDigit(j.G15);)c^=j.G15<<j.getBCHDigit(c)-j.getBCHDigit(j.G15);return(a<<10|c)^j.G15_MASK},getBCHTypeNumber:function(a){for(var c=a<<12;0<=j.getBCHDigit(c)-
7162 j.getBCHDigit(j.G18);)c^=j.G18<<j.getBCHDigit(c)-j.getBCHDigit(j.G18);return a<<12|c},getBCHDigit:function(a){for(var c=0;0!=a;)c++,a>>>=1;return c},getPatternPosition:function(a){return j.PATTERN_POSITION_TABLE[a-1]},getMask:function(a,c,d){switch(a){case 0:return 0==(c+d)%2;case 1:return 0==c%2;case 2:return 0==d%3;case 3:return 0==(c+d)%3;case 4:return 0==(Math.floor(c/2)+Math.floor(d/3))%2;case 5:return 0==c*d%2+c*d%3;case 6:return 0==(c*d%2+c*d%3)%2;case 7:return 0==(c*d%3+(c+d)%2)%2;default:throw Error("bad maskPattern:"+
7163 a);}},getErrorCorrectPolynomial:function(a){for(var c=new q([1],0),d=0;d<a;d++)c=c.multiply(new q([1,l.gexp(d)],0));return c},getLengthInBits:function(a,c){if(1<=c&&10>c)switch(a){case 1:return 10;case 2:return 9;case s:return 8;case 8:return 8;default:throw Error("mode:"+a);}else if(27>c)switch(a){case 1:return 12;case 2:return 11;case s:return 16;case 8:return 10;default:throw Error("mode:"+a);}else if(41>c)switch(a){case 1:return 14;case 2:return 13;case s:return 16;case 8:return 12;default:throw Error("mode:"+
7164 a);}else throw Error("type:"+c);},getLostPoint:function(a){for(var c=a.getModuleCount(),d=0,b=0;b<c;b++)for(var e=0;e<c;e++){for(var f=0,i=a.isDark(b,e),g=-1;1>=g;g++)if(!(0>b+g||c<=b+g))for(var h=-1;1>=h;h++)0>e+h||c<=e+h||0==g&&0==h||i==a.isDark(b+g,e+h)&&f++;5<f&&(d+=3+f-5)}for(b=0;b<c-1;b++)for(e=0;e<c-1;e++)if(f=0,a.isDark(b,e)&&f++,a.isDark(b+1,e)&&f++,a.isDark(b,e+1)&&f++,a.isDark(b+1,e+1)&&f++,0==f||4==f)d+=3;for(b=0;b<c;b++)for(e=0;e<c-6;e++)a.isDark(b,e)&&!a.isDark(b,e+1)&&a.isDark(b,e+
7165 2)&&a.isDark(b,e+3)&&a.isDark(b,e+4)&&!a.isDark(b,e+5)&&a.isDark(b,e+6)&&(d+=40);for(e=0;e<c;e++)for(b=0;b<c-6;b++)a.isDark(b,e)&&!a.isDark(b+1,e)&&a.isDark(b+2,e)&&a.isDark(b+3,e)&&a.isDark(b+4,e)&&!a.isDark(b+5,e)&&a.isDark(b+6,e)&&(d+=40);for(e=f=0;e<c;e++)for(b=0;b<c;b++)a.isDark(b,e)&&f++;a=Math.abs(100*f/c/c-50)/5;return d+10*a}},l={glog:function(a){if(1>a)throw Error("glog("+a+")");return l.LOG_TABLE[a]},gexp:function(a){for(;0>a;)a+=255;for(;256<=a;)a-=255;return l.EXP_TABLE[a]},EXP_TABLE:Array(256),
7166 LOG_TABLE:Array(256)},m=0;8>m;m++)l.EXP_TABLE[m]=1<<m;for(m=8;256>m;m++)l.EXP_TABLE[m]=l.EXP_TABLE[m-4]^l.EXP_TABLE[m-5]^l.EXP_TABLE[m-6]^l.EXP_TABLE[m-8];for(m=0;255>m;m++)l.LOG_TABLE[l.EXP_TABLE[m]]=m;q.prototype={get:function(a){return this.num[a]},getLength:function(){return this.num.length},multiply:function(a){for(var c=Array(this.getLength()+a.getLength()-1),d=0;d<this.getLength();d++)for(var b=0;b<a.getLength();b++)c[d+b]^=l.gexp(l.glog(this.get(d))+l.glog(a.get(b)));return new q(c,0)},mod:function(a){if(0>
7167 this.getLength()-a.getLength())return this;for(var c=l.glog(this.get(0))-l.glog(a.get(0)),d=Array(this.getLength()),b=0;b<this.getLength();b++)d[b]=this.get(b);for(b=0;b<a.getLength();b++)d[b]^=l.gexp(l.glog(a.get(b))+c);return(new q(d,0)).mod(a)}};p.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],
7168 [4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,
7169 116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,
7170 43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,
7171 3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,
7172 55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,
7173 45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];p.getRSBlocks=function(a,c){var d=p.getRsBlockTable(a,c);if(void 0==d)throw Error("bad rs block @ typeNumber:"+a+"/errorCorrectLevel:"+c);for(var b=d.length/3,e=[],f=0;f<b;f++)for(var h=d[3*f+0],g=d[3*f+1],j=d[3*f+2],l=0;l<h;l++)e.push(new p(g,j));return e};p.getRsBlockTable=function(a,c){switch(c){case 1:return p.RS_BLOCK_TABLE[4*(a-1)+0];case 0:return p.RS_BLOCK_TABLE[4*(a-1)+1];case 3:return p.RS_BLOCK_TABLE[4*
7174 (a-1)+2];case 2:return p.RS_BLOCK_TABLE[4*(a-1)+3]}};t.prototype={get:function(a){return 1==(this.buffer[Math.floor(a/8)]>>>7-a%8&1)},put:function(a,c){for(var d=0;d<c;d++)this.putBit(1==(a>>>c-d-1&1))},getLengthInBits:function(){return this.length},putBit:function(a){var c=Math.floor(this.length/8);this.buffer.length<=c&&this.buffer.push(0);a&&(this.buffer[c]|=128>>>this.length%8);this.length++}};"string"===typeof h&&(h={text:h});h=r.extend({},{render:"canvas",width:256,height:256,typeNumber:-1,
7175 correctLevel:2,background:"#ffffff",foreground:"#000000"},h);return this.each(function(){var a;if("canvas"==h.render){a=new o(h.typeNumber,h.correctLevel);a.addData(h.text);a.make();var c=document.createElement("canvas");c.width=h.width;c.height=h.height;for(var d=c.getContext("2d"),b=h.width/a.getModuleCount(),e=h.height/a.getModuleCount(),f=0;f<a.getModuleCount();f++)for(var i=0;i<a.getModuleCount();i++){d.fillStyle=a.isDark(f,i)?h.foreground:h.background;var g=Math.ceil((i+1)*b)-Math.floor(i*b),
7176 j=Math.ceil((f+1)*b)-Math.floor(f*b);d.fillRect(Math.round(i*b),Math.round(f*e),g,j)}}else{a=new o(h.typeNumber,h.correctLevel);a.addData(h.text);a.make();c=r("<table></table>").css("width",h.width+"px").css("height",h.height+"px").css("border","0px").css("border-collapse","collapse").css("background-color",h.background);d=h.width/a.getModuleCount();b=h.height/a.getModuleCount();for(e=0;e<a.getModuleCount();e++){f=r("<tr></tr>").css("height",b+"px").appendTo(c);for(i=0;i<a.getModuleCount();i++)r("<td></td>").css("width",
7177 d+"px").css("background-color",a.isDark(e,i)?h.foreground:h.background).appendTo(f)}}a=c;$(a).appendTo(this)})}})($);
7178 </script>
7179 <script>(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.bitcoin = f()}})(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);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.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(require,module,exports){
7180 // (public) Constructor
7181 function BigInteger(a, b, c) {
7182 if (!(this instanceof BigInteger))
7183 return new BigInteger(a, b, c)
7184
7185 if (a != null) {
7186 if ("number" == typeof a) this.fromNumber(a, b, c)
7187 else if (b == null && "string" != typeof a) this.fromString(a, 256)
7188 else this.fromString(a, b)
7189 }
7190 }
7191
7192 var proto = BigInteger.prototype
7193
7194 // duck-typed isBigInteger
7195 proto.__bigi = require('../package.json').version
7196 BigInteger.isBigInteger = function (obj, check_ver) {
7197 return obj && obj.__bigi && (!check_ver || obj.__bigi === proto.__bigi)
7198 }
7199
7200 // Bits per digit
7201 var dbits
7202
7203 // am: Compute w_j += (x*this_i), propagate carries,
7204 // c is initial carry, returns final carry.
7205 // c < 3*dvalue, x < 2*dvalue, this_i < dvalue
7206 // We need to select the fastest one that works in this environment.
7207
7208 // am1: use a single mult and divide to get the high bits,
7209 // max digit bits should be 26 because
7210 // max internal value = 2*dvalue^2-2*dvalue (< 2^53)
7211 function am1(i, x, w, j, c, n) {
7212 while (--n >= 0) {
7213 var v = x * this[i++] + w[j] + c
7214 c = Math.floor(v / 0x4000000)
7215 w[j++] = v & 0x3ffffff
7216 }
7217 return c
7218 }
7219 // am2 avoids a big mult-and-extract completely.
7220 // Max digit bits should be <= 30 because we do bitwise ops
7221 // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)
7222 function am2(i, x, w, j, c, n) {
7223 var xl = x & 0x7fff,
7224 xh = x >> 15
7225 while (--n >= 0) {
7226 var l = this[i] & 0x7fff
7227 var h = this[i++] >> 15
7228 var m = xh * l + h * xl
7229 l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff)
7230 c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30)
7231 w[j++] = l & 0x3fffffff
7232 }
7233 return c
7234 }
7235 // Alternately, set max digit bits to 28 since some
7236 // browsers slow down when dealing with 32-bit numbers.
7237 function am3(i, x, w, j, c, n) {
7238 var xl = x & 0x3fff,
7239 xh = x >> 14
7240 while (--n >= 0) {
7241 var l = this[i] & 0x3fff
7242 var h = this[i++] >> 14
7243 var m = xh * l + h * xl
7244 l = xl * l + ((m & 0x3fff) << 14) + w[j] + c
7245 c = (l >> 28) + (m >> 14) + xh * h
7246 w[j++] = l & 0xfffffff
7247 }
7248 return c
7249 }
7250
7251 // wtf?
7252 BigInteger.prototype.am = am1
7253 dbits = 26
7254
7255 BigInteger.prototype.DB = dbits
7256 BigInteger.prototype.DM = ((1 << dbits) - 1)
7257 var DV = BigInteger.prototype.DV = (1 << dbits)
7258
7259 var BI_FP = 52
7260 BigInteger.prototype.FV = Math.pow(2, BI_FP)
7261 BigInteger.prototype.F1 = BI_FP - dbits
7262 BigInteger.prototype.F2 = 2 * dbits - BI_FP
7263
7264 // Digit conversions
7265 var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz"
7266 var BI_RC = new Array()
7267 var rr, vv
7268 rr = "0".charCodeAt(0)
7269 for (vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv
7270 rr = "a".charCodeAt(0)
7271 for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv
7272 rr = "A".charCodeAt(0)
7273 for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv
7274
7275 function int2char(n) {
7276 return BI_RM.charAt(n)
7277 }
7278
7279 function intAt(s, i) {
7280 var c = BI_RC[s.charCodeAt(i)]
7281 return (c == null) ? -1 : c
7282 }
7283
7284 // (protected) copy this to r
7285 function bnpCopyTo(r) {
7286 for (var i = this.t - 1; i >= 0; --i) r[i] = this[i]
7287 r.t = this.t
7288 r.s = this.s
7289 }
7290
7291 // (protected) set from integer value x, -DV <= x < DV
7292 function bnpFromInt(x) {
7293 this.t = 1
7294 this.s = (x < 0) ? -1 : 0
7295 if (x > 0) this[0] = x
7296 else if (x < -1) this[0] = x + DV
7297 else this.t = 0
7298 }
7299
7300 // return bigint initialized to value
7301 function nbv(i) {
7302 var r = new BigInteger()
7303 r.fromInt(i)
7304 return r
7305 }
7306
7307 // (protected) set from string and radix
7308 function bnpFromString(s, b) {
7309 var self = this
7310
7311 var k
7312 if (b == 16) k = 4
7313 else if (b == 8) k = 3
7314 else if (b == 256) k = 8; // byte array
7315 else if (b == 2) k = 1
7316 else if (b == 32) k = 5
7317 else if (b == 4) k = 2
7318 else {
7319 self.fromRadix(s, b)
7320 return
7321 }
7322 self.t = 0
7323 self.s = 0
7324 var i = s.length,
7325 mi = false,
7326 sh = 0
7327 while (--i >= 0) {
7328 var x = (k == 8) ? s[i] & 0xff : intAt(s, i)
7329 if (x < 0) {
7330 if (s.charAt(i) == "-") mi = true
7331 continue
7332 }
7333 mi = false
7334 if (sh == 0)
7335 self[self.t++] = x
7336 else if (sh + k > self.DB) {
7337 self[self.t - 1] |= (x & ((1 << (self.DB - sh)) - 1)) << sh
7338 self[self.t++] = (x >> (self.DB - sh))
7339 } else
7340 self[self.t - 1] |= x << sh
7341 sh += k
7342 if (sh >= self.DB) sh -= self.DB
7343 }
7344 if (k == 8 && (s[0] & 0x80) != 0) {
7345 self.s = -1
7346 if (sh > 0) self[self.t - 1] |= ((1 << (self.DB - sh)) - 1) << sh
7347 }
7348 self.clamp()
7349 if (mi) BigInteger.ZERO.subTo(self, self)
7350 }
7351
7352 // (protected) clamp off excess high words
7353 function bnpClamp() {
7354 var c = this.s & this.DM
7355 while (this.t > 0 && this[this.t - 1] == c)--this.t
7356 }
7357
7358 // (public) return string representation in given radix
7359 function bnToString(b) {
7360 var self = this
7361 if (self.s < 0) return "-" + self.negate()
7362 .toString(b)
7363 var k
7364 if (b == 16) k = 4
7365 else if (b == 8) k = 3
7366 else if (b == 2) k = 1
7367 else if (b == 32) k = 5
7368 else if (b == 4) k = 2
7369 else return self.toRadix(b)
7370 var km = (1 << k) - 1,
7371 d, m = false,
7372 r = "",
7373 i = self.t
7374 var p = self.DB - (i * self.DB) % k
7375 if (i-- > 0) {
7376 if (p < self.DB && (d = self[i] >> p) > 0) {
7377 m = true
7378 r = int2char(d)
7379 }
7380 while (i >= 0) {
7381 if (p < k) {
7382 d = (self[i] & ((1 << p) - 1)) << (k - p)
7383 d |= self[--i] >> (p += self.DB - k)
7384 } else {
7385 d = (self[i] >> (p -= k)) & km
7386 if (p <= 0) {
7387 p += self.DB
7388 --i
7389 }
7390 }
7391 if (d > 0) m = true
7392 if (m) r += int2char(d)
7393 }
7394 }
7395 return m ? r : "0"
7396 }
7397
7398 // (public) -this
7399 function bnNegate() {
7400 var r = new BigInteger()
7401 BigInteger.ZERO.subTo(this, r)
7402 return r
7403 }
7404
7405 // (public) |this|
7406 function bnAbs() {
7407 return (this.s < 0) ? this.negate() : this
7408 }
7409
7410 // (public) return + if this > a, - if this < a, 0 if equal
7411 function bnCompareTo(a) {
7412 var r = this.s - a.s
7413 if (r != 0) return r
7414 var i = this.t
7415 r = i - a.t
7416 if (r != 0) return (this.s < 0) ? -r : r
7417 while (--i >= 0)
7418 if ((r = this[i] - a[i]) != 0) return r
7419 return 0
7420 }
7421
7422 // returns bit length of the integer x
7423 function nbits(x) {
7424 var r = 1,
7425 t
7426 if ((t = x >>> 16) != 0) {
7427 x = t
7428 r += 16
7429 }
7430 if ((t = x >> 8) != 0) {
7431 x = t
7432 r += 8
7433 }
7434 if ((t = x >> 4) != 0) {
7435 x = t
7436 r += 4
7437 }
7438 if ((t = x >> 2) != 0) {
7439 x = t
7440 r += 2
7441 }
7442 if ((t = x >> 1) != 0) {
7443 x = t
7444 r += 1
7445 }
7446 return r
7447 }
7448
7449 // (public) return the number of bits in "this"
7450 function bnBitLength() {
7451 if (this.t <= 0) return 0
7452 return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ (this.s & this.DM))
7453 }
7454
7455 // (public) return the number of bytes in "this"
7456 function bnByteLength() {
7457 return this.bitLength() >> 3
7458 }
7459
7460 // (protected) r = this << n*DB
7461 function bnpDLShiftTo(n, r) {
7462 var i
7463 for (i = this.t - 1; i >= 0; --i) r[i + n] = this[i]
7464 for (i = n - 1; i >= 0; --i) r[i] = 0
7465 r.t = this.t + n
7466 r.s = this.s
7467 }
7468
7469 // (protected) r = this >> n*DB
7470 function bnpDRShiftTo(n, r) {
7471 for (var i = n; i < this.t; ++i) r[i - n] = this[i]
7472 r.t = Math.max(this.t - n, 0)
7473 r.s = this.s
7474 }
7475
7476 // (protected) r = this << n
7477 function bnpLShiftTo(n, r) {
7478 var self = this
7479 var bs = n % self.DB
7480 var cbs = self.DB - bs
7481 var bm = (1 << cbs) - 1
7482 var ds = Math.floor(n / self.DB),
7483 c = (self.s << bs) & self.DM,
7484 i
7485 for (i = self.t - 1; i >= 0; --i) {
7486 r[i + ds + 1] = (self[i] >> cbs) | c
7487 c = (self[i] & bm) << bs
7488 }
7489 for (i = ds - 1; i >= 0; --i) r[i] = 0
7490 r[ds] = c
7491 r.t = self.t + ds + 1
7492 r.s = self.s
7493 r.clamp()
7494 }
7495
7496 // (protected) r = this >> n
7497 function bnpRShiftTo(n, r) {
7498 var self = this
7499 r.s = self.s
7500 var ds = Math.floor(n / self.DB)
7501 if (ds >= self.t) {
7502 r.t = 0
7503 return
7504 }
7505 var bs = n % self.DB
7506 var cbs = self.DB - bs
7507 var bm = (1 << bs) - 1
7508 r[0] = self[ds] >> bs
7509 for (var i = ds + 1; i < self.t; ++i) {
7510 r[i - ds - 1] |= (self[i] & bm) << cbs
7511 r[i - ds] = self[i] >> bs
7512 }
7513 if (bs > 0) r[self.t - ds - 1] |= (self.s & bm) << cbs
7514 r.t = self.t - ds
7515 r.clamp()
7516 }
7517
7518 // (protected) r = this - a
7519 function bnpSubTo(a, r) {
7520 var self = this
7521 var i = 0,
7522 c = 0,
7523 m = Math.min(a.t, self.t)
7524 while (i < m) {
7525 c += self[i] - a[i]
7526 r[i++] = c & self.DM
7527 c >>= self.DB
7528 }
7529 if (a.t < self.t) {
7530 c -= a.s
7531 while (i < self.t) {
7532 c += self[i]
7533 r[i++] = c & self.DM
7534 c >>= self.DB
7535 }
7536 c += self.s
7537 } else {
7538 c += self.s
7539 while (i < a.t) {
7540 c -= a[i]
7541 r[i++] = c & self.DM
7542 c >>= self.DB
7543 }
7544 c -= a.s
7545 }
7546 r.s = (c < 0) ? -1 : 0
7547 if (c < -1) r[i++] = self.DV + c
7548 else if (c > 0) r[i++] = c
7549 r.t = i
7550 r.clamp()
7551 }
7552
7553 // (protected) r = this * a, r != this,a (HAC 14.12)
7554 // "this" should be the larger one if appropriate.
7555 function bnpMultiplyTo(a, r) {
7556 var x = this.abs(),
7557 y = a.abs()
7558 var i = x.t
7559 r.t = i + y.t
7560 while (--i >= 0) r[i] = 0
7561 for (i = 0; i < y.t; ++i) r[i + x.t] = x.am(0, y[i], r, i, 0, x.t)
7562 r.s = 0
7563 r.clamp()
7564 if (this.s != a.s) BigInteger.ZERO.subTo(r, r)
7565 }
7566
7567 // (protected) r = this^2, r != this (HAC 14.16)
7568 function bnpSquareTo(r) {
7569 var x = this.abs()
7570 var i = r.t = 2 * x.t
7571 while (--i >= 0) r[i] = 0
7572 for (i = 0; i < x.t - 1; ++i) {
7573 var c = x.am(i, x[i], r, 2 * i, 0, 1)
7574 if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.DV) {
7575 r[i + x.t] -= x.DV
7576 r[i + x.t + 1] = 1
7577 }
7578 }
7579 if (r.t > 0) r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1)
7580 r.s = 0
7581 r.clamp()
7582 }
7583
7584 // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)
7585 // r != q, this != m. q or r may be null.
7586 function bnpDivRemTo(m, q, r) {
7587 var self = this
7588 var pm = m.abs()
7589 if (pm.t <= 0) return
7590 var pt = self.abs()
7591 if (pt.t < pm.t) {
7592 if (q != null) q.fromInt(0)
7593 if (r != null) self.copyTo(r)
7594 return
7595 }
7596 if (r == null) r = new BigInteger()
7597 var y = new BigInteger(),
7598 ts = self.s,
7599 ms = m.s
7600 var nsh = self.DB - nbits(pm[pm.t - 1]); // normalize modulus
7601 if (nsh > 0) {
7602 pm.lShiftTo(nsh, y)
7603 pt.lShiftTo(nsh, r)
7604 } else {
7605 pm.copyTo(y)
7606 pt.copyTo(r)
7607 }
7608 var ys = y.t
7609 var y0 = y[ys - 1]
7610 if (y0 == 0) return
7611 var yt = y0 * (1 << self.F1) + ((ys > 1) ? y[ys - 2] >> self.F2 : 0)
7612 var d1 = self.FV / yt,
7613 d2 = (1 << self.F1) / yt,
7614 e = 1 << self.F2
7615 var i = r.t,
7616 j = i - ys,
7617 t = (q == null) ? new BigInteger() : q
7618 y.dlShiftTo(j, t)
7619 if (r.compareTo(t) >= 0) {
7620 r[r.t++] = 1
7621 r.subTo(t, r)
7622 }
7623 BigInteger.ONE.dlShiftTo(ys, t)
7624 t.subTo(y, y); // "negative" y so we can replace sub with am later
7625 while (y.t < ys) y[y.t++] = 0
7626 while (--j >= 0) {
7627 // Estimate quotient digit
7628 var qd = (r[--i] == y0) ? self.DM : Math.floor(r[i] * d1 + (r[i - 1] + e) * d2)
7629 if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) { // Try it out
7630 y.dlShiftTo(j, t)
7631 r.subTo(t, r)
7632 while (r[i] < --qd) r.subTo(t, r)
7633 }
7634 }
7635 if (q != null) {
7636 r.drShiftTo(ys, q)
7637 if (ts != ms) BigInteger.ZERO.subTo(q, q)
7638 }
7639 r.t = ys
7640 r.clamp()
7641 if (nsh > 0) r.rShiftTo(nsh, r); // Denormalize remainder
7642 if (ts < 0) BigInteger.ZERO.subTo(r, r)
7643 }
7644
7645 // (public) this mod a
7646 function bnMod(a) {
7647 var r = new BigInteger()
7648 this.abs()
7649 .divRemTo(a, null, r)
7650 if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r, r)
7651 return r
7652 }
7653
7654 // Modular reduction using "classic" algorithm
7655 function Classic(m) {
7656 this.m = m
7657 }
7658
7659 function cConvert(x) {
7660 if (x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m)
7661 else return x
7662 }
7663
7664 function cRevert(x) {
7665 return x
7666 }
7667
7668 function cReduce(x) {
7669 x.divRemTo(this.m, null, x)
7670 }
7671
7672 function cMulTo(x, y, r) {
7673 x.multiplyTo(y, r)
7674 this.reduce(r)
7675 }
7676
7677 function cSqrTo(x, r) {
7678 x.squareTo(r)
7679 this.reduce(r)
7680 }
7681
7682 Classic.prototype.convert = cConvert
7683 Classic.prototype.revert = cRevert
7684 Classic.prototype.reduce = cReduce
7685 Classic.prototype.mulTo = cMulTo
7686 Classic.prototype.sqrTo = cSqrTo
7687
7688 // (protected) return "-1/this % 2^DB"; useful for Mont. reduction
7689 // justification:
7690 // xy == 1 (mod m)
7691 // xy = 1+km
7692 // xy(2-xy) = (1+km)(1-km)
7693 // x[y(2-xy)] = 1-k^2m^2
7694 // x[y(2-xy)] == 1 (mod m^2)
7695 // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2
7696 // should reduce x and y(2-xy) by m^2 at each step to keep size bounded.
7697 // JS multiply "overflows" differently from C/C++, so care is needed here.
7698 function bnpInvDigit() {
7699 if (this.t < 1) return 0
7700 var x = this[0]
7701 if ((x & 1) == 0) return 0
7702 var y = x & 3; // y == 1/x mod 2^2
7703 y = (y * (2 - (x & 0xf) * y)) & 0xf; // y == 1/x mod 2^4
7704 y = (y * (2 - (x & 0xff) * y)) & 0xff; // y == 1/x mod 2^8
7705 y = (y * (2 - (((x & 0xffff) * y) & 0xffff))) & 0xffff; // y == 1/x mod 2^16
7706 // last step - calculate inverse mod DV directly
7707 // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints
7708 y = (y * (2 - x * y % this.DV)) % this.DV; // y == 1/x mod 2^dbits
7709 // we really want the negative inverse, and -DV < y < DV
7710 return (y > 0) ? this.DV - y : -y
7711 }
7712
7713 // Montgomery reduction
7714 function Montgomery(m) {
7715 this.m = m
7716 this.mp = m.invDigit()
7717 this.mpl = this.mp & 0x7fff
7718 this.mph = this.mp >> 15
7719 this.um = (1 << (m.DB - 15)) - 1
7720 this.mt2 = 2 * m.t
7721 }
7722
7723 // xR mod m
7724 function montConvert(x) {
7725 var r = new BigInteger()
7726 x.abs()
7727 .dlShiftTo(this.m.t, r)
7728 r.divRemTo(this.m, null, r)
7729 if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r, r)
7730 return r
7731 }
7732
7733 // x/R mod m
7734 function montRevert(x) {
7735 var r = new BigInteger()
7736 x.copyTo(r)
7737 this.reduce(r)
7738 return r
7739 }
7740
7741 // x = x/R mod m (HAC 14.32)
7742 function montReduce(x) {
7743 while (x.t <= this.mt2) // pad x so am has enough room later
7744 x[x.t++] = 0
7745 for (var i = 0; i < this.m.t; ++i) {
7746 // faster way of calculating u0 = x[i]*mp mod DV
7747 var j = x[i] & 0x7fff
7748 var u0 = (j * this.mpl + (((j * this.mph + (x[i] >> 15) * this.mpl) & this.um) << 15)) & x.DM
7749 // use am to combine the multiply-shift-add into one call
7750 j = i + this.m.t
7751 x[j] += this.m.am(0, u0, x, i, 0, this.m.t)
7752 // propagate carry
7753 while (x[j] >= x.DV) {
7754 x[j] -= x.DV
7755 x[++j]++
7756 }
7757 }
7758 x.clamp()
7759 x.drShiftTo(this.m.t, x)
7760 if (x.compareTo(this.m) >= 0) x.subTo(this.m, x)
7761 }
7762
7763 // r = "x^2/R mod m"; x != r
7764 function montSqrTo(x, r) {
7765 x.squareTo(r)
7766 this.reduce(r)
7767 }
7768
7769 // r = "xy/R mod m"; x,y != r
7770 function montMulTo(x, y, r) {
7771 x.multiplyTo(y, r)
7772 this.reduce(r)
7773 }
7774
7775 Montgomery.prototype.convert = montConvert
7776 Montgomery.prototype.revert = montRevert
7777 Montgomery.prototype.reduce = montReduce
7778 Montgomery.prototype.mulTo = montMulTo
7779 Montgomery.prototype.sqrTo = montSqrTo
7780
7781 // (protected) true iff this is even
7782 function bnpIsEven() {
7783 return ((this.t > 0) ? (this[0] & 1) : this.s) == 0
7784 }
7785
7786 // (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79)
7787 function bnpExp(e, z) {
7788 if (e > 0xffffffff || e < 1) return BigInteger.ONE
7789 var r = new BigInteger(),
7790 r2 = new BigInteger(),
7791 g = z.convert(this),
7792 i = nbits(e) - 1
7793 g.copyTo(r)
7794 while (--i >= 0) {
7795 z.sqrTo(r, r2)
7796 if ((e & (1 << i)) > 0) z.mulTo(r2, g, r)
7797 else {
7798 var t = r
7799 r = r2
7800 r2 = t
7801 }
7802 }
7803 return z.revert(r)
7804 }
7805
7806 // (public) this^e % m, 0 <= e < 2^32
7807 function bnModPowInt(e, m) {
7808 var z
7809 if (e < 256 || m.isEven()) z = new Classic(m)
7810 else z = new Montgomery(m)
7811 return this.exp(e, z)
7812 }
7813
7814 // protected
7815 proto.copyTo = bnpCopyTo
7816 proto.fromInt = bnpFromInt
7817 proto.fromString = bnpFromString
7818 proto.clamp = bnpClamp
7819 proto.dlShiftTo = bnpDLShiftTo
7820 proto.drShiftTo = bnpDRShiftTo
7821 proto.lShiftTo = bnpLShiftTo
7822 proto.rShiftTo = bnpRShiftTo
7823 proto.subTo = bnpSubTo
7824 proto.multiplyTo = bnpMultiplyTo
7825 proto.squareTo = bnpSquareTo
7826 proto.divRemTo = bnpDivRemTo
7827 proto.invDigit = bnpInvDigit
7828 proto.isEven = bnpIsEven
7829 proto.exp = bnpExp
7830
7831 // public
7832 proto.toString = bnToString
7833 proto.negate = bnNegate
7834 proto.abs = bnAbs
7835 proto.compareTo = bnCompareTo
7836 proto.bitLength = bnBitLength
7837 proto.byteLength = bnByteLength
7838 proto.mod = bnMod
7839 proto.modPowInt = bnModPowInt
7840
7841 // (public)
7842 function bnClone() {
7843 var r = new BigInteger()
7844 this.copyTo(r)
7845 return r
7846 }
7847
7848 // (public) return value as integer
7849 function bnIntValue() {
7850 if (this.s < 0) {
7851 if (this.t == 1) return this[0] - this.DV
7852 else if (this.t == 0) return -1
7853 } else if (this.t == 1) return this[0]
7854 else if (this.t == 0) return 0
7855 // assumes 16 < DB < 32
7856 return ((this[1] & ((1 << (32 - this.DB)) - 1)) << this.DB) | this[0]
7857 }
7858
7859 // (public) return value as byte
7860 function bnByteValue() {
7861 return (this.t == 0) ? this.s : (this[0] << 24) >> 24
7862 }
7863
7864 // (public) return value as short (assumes DB>=16)
7865 function bnShortValue() {
7866 return (this.t == 0) ? this.s : (this[0] << 16) >> 16
7867 }
7868
7869 // (protected) return x s.t. r^x < DV
7870 function bnpChunkSize(r) {
7871 return Math.floor(Math.LN2 * this.DB / Math.log(r))
7872 }
7873
7874 // (public) 0 if this == 0, 1 if this > 0
7875 function bnSigNum() {
7876 if (this.s < 0) return -1
7877 else if (this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0
7878 else return 1
7879 }
7880
7881 // (protected) convert to radix string
7882 function bnpToRadix(b) {
7883 if (b == null) b = 10
7884 if (this.signum() == 0 || b < 2 || b > 36) return "0"
7885 var cs = this.chunkSize(b)
7886 var a = Math.pow(b, cs)
7887 var d = nbv(a),
7888 y = new BigInteger(),
7889 z = new BigInteger(),
7890 r = ""
7891 this.divRemTo(d, y, z)
7892 while (y.signum() > 0) {
7893 r = (a + z.intValue())
7894 .toString(b)
7895 .substr(1) + r
7896 y.divRemTo(d, y, z)
7897 }
7898 return z.intValue()
7899 .toString(b) + r
7900 }
7901
7902 // (protected) convert from radix string
7903 function bnpFromRadix(s, b) {
7904 var self = this
7905 self.fromInt(0)
7906 if (b == null) b = 10
7907 var cs = self.chunkSize(b)
7908 var d = Math.pow(b, cs),
7909 mi = false,
7910 j = 0,
7911 w = 0
7912 for (var i = 0; i < s.length; ++i) {
7913 var x = intAt(s, i)
7914 if (x < 0) {
7915 if (s.charAt(i) == "-" && self.signum() == 0) mi = true
7916 continue
7917 }
7918 w = b * w + x
7919 if (++j >= cs) {
7920 self.dMultiply(d)
7921 self.dAddOffset(w, 0)
7922 j = 0
7923 w = 0
7924 }
7925 }
7926 if (j > 0) {
7927 self.dMultiply(Math.pow(b, j))
7928 self.dAddOffset(w, 0)
7929 }
7930 if (mi) BigInteger.ZERO.subTo(self, self)
7931 }
7932
7933 // (protected) alternate constructor
7934 function bnpFromNumber(a, b, c) {
7935 var self = this
7936 if ("number" == typeof b) {
7937 // new BigInteger(int,int,RNG)
7938 if (a < 2) self.fromInt(1)
7939 else {
7940 self.fromNumber(a, c)
7941 if (!self.testBit(a - 1)) // force MSB set
7942 self.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), op_or, self)
7943 if (self.isEven()) self.dAddOffset(1, 0); // force odd
7944 while (!self.isProbablePrime(b)) {
7945 self.dAddOffset(2, 0)
7946 if (self.bitLength() > a) self.subTo(BigInteger.ONE.shiftLeft(a - 1), self)
7947 }
7948 }
7949 } else {
7950 // new BigInteger(int,RNG)
7951 var x = new Array(),
7952 t = a & 7
7953 x.length = (a >> 3) + 1
7954 b.nextBytes(x)
7955 if (t > 0) x[0] &= ((1 << t) - 1)
7956 else x[0] = 0
7957 self.fromString(x, 256)
7958 }
7959 }
7960
7961 // (public) convert to bigendian byte array
7962 function bnToByteArray() {
7963 var self = this
7964 var i = self.t,
7965 r = new Array()
7966 r[0] = self.s
7967 var p = self.DB - (i * self.DB) % 8,
7968 d, k = 0
7969 if (i-- > 0) {
7970 if (p < self.DB && (d = self[i] >> p) != (self.s & self.DM) >> p)
7971 r[k++] = d | (self.s << (self.DB - p))
7972 while (i >= 0) {
7973 if (p < 8) {
7974 d = (self[i] & ((1 << p) - 1)) << (8 - p)
7975 d |= self[--i] >> (p += self.DB - 8)
7976 } else {
7977 d = (self[i] >> (p -= 8)) & 0xff
7978 if (p <= 0) {
7979 p += self.DB
7980 --i
7981 }
7982 }
7983 if ((d & 0x80) != 0) d |= -256
7984 if (k === 0 && (self.s & 0x80) != (d & 0x80))++k
7985 if (k > 0 || d != self.s) r[k++] = d
7986 }
7987 }
7988 return r
7989 }
7990
7991 function bnEquals(a) {
7992 return (this.compareTo(a) == 0)
7993 }
7994
7995 function bnMin(a) {
7996 return (this.compareTo(a) < 0) ? this : a
7997 }
7998
7999 function bnMax(a) {
8000 return (this.compareTo(a) > 0) ? this : a
8001 }
8002
8003 // (protected) r = this op a (bitwise)
8004 function bnpBitwiseTo(a, op, r) {
8005 var self = this
8006 var i, f, m = Math.min(a.t, self.t)
8007 for (i = 0; i < m; ++i) r[i] = op(self[i], a[i])
8008 if (a.t < self.t) {
8009 f = a.s & self.DM
8010 for (i = m; i < self.t; ++i) r[i] = op(self[i], f)
8011 r.t = self.t
8012 } else {
8013 f = self.s & self.DM
8014 for (i = m; i < a.t; ++i) r[i] = op(f, a[i])
8015 r.t = a.t
8016 }
8017 r.s = op(self.s, a.s)
8018 r.clamp()
8019 }
8020
8021 // (public) this & a
8022 function op_and(x, y) {
8023 return x & y
8024 }
8025
8026 function bnAnd(a) {
8027 var r = new BigInteger()
8028 this.bitwiseTo(a, op_and, r)
8029 return r
8030 }
8031
8032 // (public) this | a
8033 function op_or(x, y) {
8034 return x | y
8035 }
8036
8037 function bnOr(a) {
8038 var r = new BigInteger()
8039 this.bitwiseTo(a, op_or, r)
8040 return r
8041 }
8042
8043 // (public) this ^ a
8044 function op_xor(x, y) {
8045 return x ^ y
8046 }
8047
8048 function bnXor(a) {
8049 var r = new BigInteger()
8050 this.bitwiseTo(a, op_xor, r)
8051 return r
8052 }
8053
8054 // (public) this & ~a
8055 function op_andnot(x, y) {
8056 return x & ~y
8057 }
8058
8059 function bnAndNot(a) {
8060 var r = new BigInteger()
8061 this.bitwiseTo(a, op_andnot, r)
8062 return r
8063 }
8064
8065 // (public) ~this
8066 function bnNot() {
8067 var r = new BigInteger()
8068 for (var i = 0; i < this.t; ++i) r[i] = this.DM & ~this[i]
8069 r.t = this.t
8070 r.s = ~this.s
8071 return r
8072 }
8073
8074 // (public) this << n
8075 function bnShiftLeft(n) {
8076 var r = new BigInteger()
8077 if (n < 0) this.rShiftTo(-n, r)
8078 else this.lShiftTo(n, r)
8079 return r
8080 }
8081
8082 // (public) this >> n
8083 function bnShiftRight(n) {
8084 var r = new BigInteger()
8085 if (n < 0) this.lShiftTo(-n, r)
8086 else this.rShiftTo(n, r)
8087 return r
8088 }
8089
8090 // return index of lowest 1-bit in x, x < 2^31
8091 function lbit(x) {
8092 if (x == 0) return -1
8093 var r = 0
8094 if ((x & 0xffff) == 0) {
8095 x >>= 16
8096 r += 16
8097 }
8098 if ((x & 0xff) == 0) {
8099 x >>= 8
8100 r += 8
8101 }
8102 if ((x & 0xf) == 0) {
8103 x >>= 4
8104 r += 4
8105 }
8106 if ((x & 3) == 0) {
8107 x >>= 2
8108 r += 2
8109 }
8110 if ((x & 1) == 0)++r
8111 return r
8112 }
8113
8114 // (public) returns index of lowest 1-bit (or -1 if none)
8115 function bnGetLowestSetBit() {
8116 for (var i = 0; i < this.t; ++i)
8117 if (this[i] != 0) return i * this.DB + lbit(this[i])
8118 if (this.s < 0) return this.t * this.DB
8119 return -1
8120 }
8121
8122 // return number of 1 bits in x
8123 function cbit(x) {
8124 var r = 0
8125 while (x != 0) {
8126 x &= x - 1
8127 ++r
8128 }
8129 return r
8130 }
8131
8132 // (public) return number of set bits
8133 function bnBitCount() {
8134 var r = 0,
8135 x = this.s & this.DM
8136 for (var i = 0; i < this.t; ++i) r += cbit(this[i] ^ x)
8137 return r
8138 }
8139
8140 // (public) true iff nth bit is set
8141 function bnTestBit(n) {
8142 var j = Math.floor(n / this.DB)
8143 if (j >= this.t) return (this.s != 0)
8144 return ((this[j] & (1 << (n % this.DB))) != 0)
8145 }
8146
8147 // (protected) this op (1<<n)
8148 function bnpChangeBit(n, op) {
8149 var r = BigInteger.ONE.shiftLeft(n)
8150 this.bitwiseTo(r, op, r)
8151 return r
8152 }
8153
8154 // (public) this | (1<<n)
8155 function bnSetBit(n) {
8156 return this.changeBit(n, op_or)
8157 }
8158
8159 // (public) this & ~(1<<n)
8160 function bnClearBit(n) {
8161 return this.changeBit(n, op_andnot)
8162 }
8163
8164 // (public) this ^ (1<<n)
8165 function bnFlipBit(n) {
8166 return this.changeBit(n, op_xor)
8167 }
8168
8169 // (protected) r = this + a
8170 function bnpAddTo(a, r) {
8171 var self = this
8172
8173 var i = 0,
8174 c = 0,
8175 m = Math.min(a.t, self.t)
8176 while (i < m) {
8177 c += self[i] + a[i]
8178 r[i++] = c & self.DM
8179 c >>= self.DB
8180 }
8181 if (a.t < self.t) {
8182 c += a.s
8183 while (i < self.t) {
8184 c += self[i]
8185 r[i++] = c & self.DM
8186 c >>= self.DB
8187 }
8188 c += self.s
8189 } else {
8190 c += self.s
8191 while (i < a.t) {
8192 c += a[i]
8193 r[i++] = c & self.DM
8194 c >>= self.DB
8195 }
8196 c += a.s
8197 }
8198 r.s = (c < 0) ? -1 : 0
8199 if (c > 0) r[i++] = c
8200 else if (c < -1) r[i++] = self.DV + c
8201 r.t = i
8202 r.clamp()
8203 }
8204
8205 // (public) this + a
8206 function bnAdd(a) {
8207 var r = new BigInteger()
8208 this.addTo(a, r)
8209 return r
8210 }
8211
8212 // (public) this - a
8213 function bnSubtract(a) {
8214 var r = new BigInteger()
8215 this.subTo(a, r)
8216 return r
8217 }
8218
8219 // (public) this * a
8220 function bnMultiply(a) {
8221 var r = new BigInteger()
8222 this.multiplyTo(a, r)
8223 return r
8224 }
8225
8226 // (public) this^2
8227 function bnSquare() {
8228 var r = new BigInteger()
8229 this.squareTo(r)
8230 return r
8231 }
8232
8233 // (public) this / a
8234 function bnDivide(a) {
8235 var r = new BigInteger()
8236 this.divRemTo(a, r, null)
8237 return r
8238 }
8239
8240 // (public) this % a
8241 function bnRemainder(a) {
8242 var r = new BigInteger()
8243 this.divRemTo(a, null, r)
8244 return r
8245 }
8246
8247 // (public) [this/a,this%a]
8248 function bnDivideAndRemainder(a) {
8249 var q = new BigInteger(),
8250 r = new BigInteger()
8251 this.divRemTo(a, q, r)
8252 return new Array(q, r)
8253 }
8254
8255 // (protected) this *= n, this >= 0, 1 < n < DV
8256 function bnpDMultiply(n) {
8257 this[this.t] = this.am(0, n - 1, this, 0, 0, this.t)
8258 ++this.t
8259 this.clamp()
8260 }
8261
8262 // (protected) this += n << w words, this >= 0
8263 function bnpDAddOffset(n, w) {
8264 if (n == 0) return
8265 while (this.t <= w) this[this.t++] = 0
8266 this[w] += n
8267 while (this[w] >= this.DV) {
8268 this[w] -= this.DV
8269 if (++w >= this.t) this[this.t++] = 0
8270 ++this[w]
8271 }
8272 }
8273
8274 // A "null" reducer
8275 function NullExp() {}
8276
8277 function nNop(x) {
8278 return x
8279 }
8280
8281 function nMulTo(x, y, r) {
8282 x.multiplyTo(y, r)
8283 }
8284
8285 function nSqrTo(x, r) {
8286 x.squareTo(r)
8287 }
8288
8289 NullExp.prototype.convert = nNop
8290 NullExp.prototype.revert = nNop
8291 NullExp.prototype.mulTo = nMulTo
8292 NullExp.prototype.sqrTo = nSqrTo
8293
8294 // (public) this^e
8295 function bnPow(e) {
8296 return this.exp(e, new NullExp())
8297 }
8298
8299 // (protected) r = lower n words of "this * a", a.t <= n
8300 // "this" should be the larger one if appropriate.
8301 function bnpMultiplyLowerTo(a, n, r) {
8302 var i = Math.min(this.t + a.t, n)
8303 r.s = 0; // assumes a,this >= 0
8304 r.t = i
8305 while (i > 0) r[--i] = 0
8306 var j
8307 for (j = r.t - this.t; i < j; ++i) r[i + this.t] = this.am(0, a[i], r, i, 0, this.t)
8308 for (j = Math.min(a.t, n); i < j; ++i) this.am(0, a[i], r, i, 0, n - i)
8309 r.clamp()
8310 }
8311
8312 // (protected) r = "this * a" without lower n words, n > 0
8313 // "this" should be the larger one if appropriate.
8314 function bnpMultiplyUpperTo(a, n, r) {
8315 --n
8316 var i = r.t = this.t + a.t - n
8317 r.s = 0; // assumes a,this >= 0
8318 while (--i >= 0) r[i] = 0
8319 for (i = Math.max(n - this.t, 0); i < a.t; ++i)
8320 r[this.t + i - n] = this.am(n - i, a[i], r, 0, 0, this.t + i - n)
8321 r.clamp()
8322 r.drShiftTo(1, r)
8323 }
8324
8325 // Barrett modular reduction
8326 function Barrett(m) {
8327 // setup Barrett
8328 this.r2 = new BigInteger()
8329 this.q3 = new BigInteger()
8330 BigInteger.ONE.dlShiftTo(2 * m.t, this.r2)
8331 this.mu = this.r2.divide(m)
8332 this.m = m
8333 }
8334
8335 function barrettConvert(x) {
8336 if (x.s < 0 || x.t > 2 * this.m.t) return x.mod(this.m)
8337 else if (x.compareTo(this.m) < 0) return x
8338 else {
8339 var r = new BigInteger()
8340 x.copyTo(r)
8341 this.reduce(r)
8342 return r
8343 }
8344 }
8345
8346 function barrettRevert(x) {
8347 return x
8348 }
8349
8350 // x = x mod m (HAC 14.42)
8351 function barrettReduce(x) {
8352 var self = this
8353 x.drShiftTo(self.m.t - 1, self.r2)
8354 if (x.t > self.m.t + 1) {
8355 x.t = self.m.t + 1
8356 x.clamp()
8357 }
8358 self.mu.multiplyUpperTo(self.r2, self.m.t + 1, self.q3)
8359 self.m.multiplyLowerTo(self.q3, self.m.t + 1, self.r2)
8360 while (x.compareTo(self.r2) < 0) x.dAddOffset(1, self.m.t + 1)
8361 x.subTo(self.r2, x)
8362 while (x.compareTo(self.m) >= 0) x.subTo(self.m, x)
8363 }
8364
8365 // r = x^2 mod m; x != r
8366 function barrettSqrTo(x, r) {
8367 x.squareTo(r)
8368 this.reduce(r)
8369 }
8370
8371 // r = x*y mod m; x,y != r
8372 function barrettMulTo(x, y, r) {
8373 x.multiplyTo(y, r)
8374 this.reduce(r)
8375 }
8376
8377 Barrett.prototype.convert = barrettConvert
8378 Barrett.prototype.revert = barrettRevert
8379 Barrett.prototype.reduce = barrettReduce
8380 Barrett.prototype.mulTo = barrettMulTo
8381 Barrett.prototype.sqrTo = barrettSqrTo
8382
8383 // (public) this^e % m (HAC 14.85)
8384 function bnModPow(e, m) {
8385 var i = e.bitLength(),
8386 k, r = nbv(1),
8387 z
8388 if (i <= 0) return r
8389 else if (i < 18) k = 1
8390 else if (i < 48) k = 3
8391 else if (i < 144) k = 4
8392 else if (i < 768) k = 5
8393 else k = 6
8394 if (i < 8)
8395 z = new Classic(m)
8396 else if (m.isEven())
8397 z = new Barrett(m)
8398 else
8399 z = new Montgomery(m)
8400
8401 // precomputation
8402 var g = new Array(),
8403 n = 3,
8404 k1 = k - 1,
8405 km = (1 << k) - 1
8406 g[1] = z.convert(this)
8407 if (k > 1) {
8408 var g2 = new BigInteger()
8409 z.sqrTo(g[1], g2)
8410 while (n <= km) {
8411 g[n] = new BigInteger()
8412 z.mulTo(g2, g[n - 2], g[n])
8413 n += 2
8414 }
8415 }
8416
8417 var j = e.t - 1,
8418 w, is1 = true,
8419 r2 = new BigInteger(),
8420 t
8421 i = nbits(e[j]) - 1
8422 while (j >= 0) {
8423 if (i >= k1) w = (e[j] >> (i - k1)) & km
8424 else {
8425 w = (e[j] & ((1 << (i + 1)) - 1)) << (k1 - i)
8426 if (j > 0) w |= e[j - 1] >> (this.DB + i - k1)
8427 }
8428
8429 n = k
8430 while ((w & 1) == 0) {
8431 w >>= 1
8432 --n
8433 }
8434 if ((i -= n) < 0) {
8435 i += this.DB
8436 --j
8437 }
8438 if (is1) { // ret == 1, don't bother squaring or multiplying it
8439 g[w].copyTo(r)
8440 is1 = false
8441 } else {
8442 while (n > 1) {
8443 z.sqrTo(r, r2)
8444 z.sqrTo(r2, r)
8445 n -= 2
8446 }
8447 if (n > 0) z.sqrTo(r, r2)
8448 else {
8449 t = r
8450 r = r2
8451 r2 = t
8452 }
8453 z.mulTo(r2, g[w], r)
8454 }
8455
8456 while (j >= 0 && (e[j] & (1 << i)) == 0) {
8457 z.sqrTo(r, r2)
8458 t = r
8459 r = r2
8460 r2 = t
8461 if (--i < 0) {
8462 i = this.DB - 1
8463 --j
8464 }
8465 }
8466 }
8467 return z.revert(r)
8468 }
8469
8470 // (public) gcd(this,a) (HAC 14.54)
8471 function bnGCD(a) {
8472 var x = (this.s < 0) ? this.negate() : this.clone()
8473 var y = (a.s < 0) ? a.negate() : a.clone()
8474 if (x.compareTo(y) < 0) {
8475 var t = x
8476 x = y
8477 y = t
8478 }
8479 var i = x.getLowestSetBit(),
8480 g = y.getLowestSetBit()
8481 if (g < 0) return x
8482 if (i < g) g = i
8483 if (g > 0) {
8484 x.rShiftTo(g, x)
8485 y.rShiftTo(g, y)
8486 }
8487 while (x.signum() > 0) {
8488 if ((i = x.getLowestSetBit()) > 0) x.rShiftTo(i, x)
8489 if ((i = y.getLowestSetBit()) > 0) y.rShiftTo(i, y)
8490 if (x.compareTo(y) >= 0) {
8491 x.subTo(y, x)
8492 x.rShiftTo(1, x)
8493 } else {
8494 y.subTo(x, y)
8495 y.rShiftTo(1, y)
8496 }
8497 }
8498 if (g > 0) y.lShiftTo(g, y)
8499 return y
8500 }
8501
8502 // (protected) this % n, n < 2^26
8503 function bnpModInt(n) {
8504 if (n <= 0) return 0
8505 var d = this.DV % n,
8506 r = (this.s < 0) ? n - 1 : 0
8507 if (this.t > 0)
8508 if (d == 0) r = this[0] % n
8509 else
8510 for (var i = this.t - 1; i >= 0; --i) r = (d * r + this[i]) % n
8511 return r
8512 }
8513
8514 // (public) 1/this % m (HAC 14.61)
8515 function bnModInverse(m) {
8516 var ac = m.isEven()
8517 if ((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO
8518 var u = m.clone(),
8519 v = this.clone()
8520 var a = nbv(1),
8521 b = nbv(0),
8522 c = nbv(0),
8523 d = nbv(1)
8524 while (u.signum() != 0) {
8525 while (u.isEven()) {
8526 u.rShiftTo(1, u)
8527 if (ac) {
8528 if (!a.isEven() || !b.isEven()) {
8529 a.addTo(this, a)
8530 b.subTo(m, b)
8531 }
8532 a.rShiftTo(1, a)
8533 } else if (!b.isEven()) b.subTo(m, b)
8534 b.rShiftTo(1, b)
8535 }
8536 while (v.isEven()) {
8537 v.rShiftTo(1, v)
8538 if (ac) {
8539 if (!c.isEven() || !d.isEven()) {
8540 c.addTo(this, c)
8541 d.subTo(m, d)
8542 }
8543 c.rShiftTo(1, c)
8544 } else if (!d.isEven()) d.subTo(m, d)
8545 d.rShiftTo(1, d)
8546 }
8547 if (u.compareTo(v) >= 0) {
8548 u.subTo(v, u)
8549 if (ac) a.subTo(c, a)
8550 b.subTo(d, b)
8551 } else {
8552 v.subTo(u, v)
8553 if (ac) c.subTo(a, c)
8554 d.subTo(b, d)
8555 }
8556 }
8557 if (v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO
8558 if (d.compareTo(m) >= 0) return d.subtract(m)
8559 if (d.signum() < 0) d.addTo(m, d)
8560 else return d
8561 if (d.signum() < 0) return d.add(m)
8562 else return d
8563 }
8564
8565 var lowprimes = [
8566 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71,
8567 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151,
8568 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233,
8569 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317,
8570 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419,
8571 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503,
8572 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607,
8573 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701,
8574 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811,
8575 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911,
8576 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997
8577 ]
8578
8579 var lplim = (1 << 26) / lowprimes[lowprimes.length - 1]
8580
8581 // (public) test primality with certainty >= 1-.5^t
8582 function bnIsProbablePrime(t) {
8583 var i, x = this.abs()
8584 if (x.t == 1 && x[0] <= lowprimes[lowprimes.length - 1]) {
8585 for (i = 0; i < lowprimes.length; ++i)
8586 if (x[0] == lowprimes[i]) return true
8587 return false
8588 }
8589 if (x.isEven()) return false
8590 i = 1
8591 while (i < lowprimes.length) {
8592 var m = lowprimes[i],
8593 j = i + 1
8594 while (j < lowprimes.length && m < lplim) m *= lowprimes[j++]
8595 m = x.modInt(m)
8596 while (i < j) if (m % lowprimes[i++] == 0) return false
8597 }
8598 return x.millerRabin(t)
8599 }
8600
8601 // (protected) true if probably prime (HAC 4.24, Miller-Rabin)
8602 function bnpMillerRabin(t) {
8603 var n1 = this.subtract(BigInteger.ONE)
8604 var k = n1.getLowestSetBit()
8605 if (k <= 0) return false
8606 var r = n1.shiftRight(k)
8607 t = (t + 1) >> 1
8608 if (t > lowprimes.length) t = lowprimes.length
8609 var a = new BigInteger(null)
8610 var j, bases = []
8611 for (var i = 0; i < t; ++i) {
8612 for (;;) {
8613 j = lowprimes[Math.floor(Math.random() * lowprimes.length)]
8614 if (bases.indexOf(j) == -1) break
8615 }
8616 bases.push(j)
8617 a.fromInt(j)
8618 var y = a.modPow(r, this)
8619 if (y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {
8620 var j = 1
8621 while (j++ < k && y.compareTo(n1) != 0) {
8622 y = y.modPowInt(2, this)
8623 if (y.compareTo(BigInteger.ONE) == 0) return false
8624 }
8625 if (y.compareTo(n1) != 0) return false
8626 }
8627 }
8628 return true
8629 }
8630
8631 // protected
8632 proto.chunkSize = bnpChunkSize
8633 proto.toRadix = bnpToRadix
8634 proto.fromRadix = bnpFromRadix
8635 proto.fromNumber = bnpFromNumber
8636 proto.bitwiseTo = bnpBitwiseTo
8637 proto.changeBit = bnpChangeBit
8638 proto.addTo = bnpAddTo
8639 proto.dMultiply = bnpDMultiply
8640 proto.dAddOffset = bnpDAddOffset
8641 proto.multiplyLowerTo = bnpMultiplyLowerTo
8642 proto.multiplyUpperTo = bnpMultiplyUpperTo
8643 proto.modInt = bnpModInt
8644 proto.millerRabin = bnpMillerRabin
8645
8646 // public
8647 proto.clone = bnClone
8648 proto.intValue = bnIntValue
8649 proto.byteValue = bnByteValue
8650 proto.shortValue = bnShortValue
8651 proto.signum = bnSigNum
8652 proto.toByteArray = bnToByteArray
8653 proto.equals = bnEquals
8654 proto.min = bnMin
8655 proto.max = bnMax
8656 proto.and = bnAnd
8657 proto.or = bnOr
8658 proto.xor = bnXor
8659 proto.andNot = bnAndNot
8660 proto.not = bnNot
8661 proto.shiftLeft = bnShiftLeft
8662 proto.shiftRight = bnShiftRight
8663 proto.getLowestSetBit = bnGetLowestSetBit
8664 proto.bitCount = bnBitCount
8665 proto.testBit = bnTestBit
8666 proto.setBit = bnSetBit
8667 proto.clearBit = bnClearBit
8668 proto.flipBit = bnFlipBit
8669 proto.add = bnAdd
8670 proto.subtract = bnSubtract
8671 proto.multiply = bnMultiply
8672 proto.divide = bnDivide
8673 proto.remainder = bnRemainder
8674 proto.divideAndRemainder = bnDivideAndRemainder
8675 proto.modPow = bnModPow
8676 proto.modInverse = bnModInverse
8677 proto.pow = bnPow
8678 proto.gcd = bnGCD
8679 proto.isProbablePrime = bnIsProbablePrime
8680
8681 // JSBN-specific extension
8682 proto.square = bnSquare
8683
8684 // constants
8685 BigInteger.ZERO = nbv(0)
8686 BigInteger.ONE = nbv(1)
8687 BigInteger.valueOf = nbv
8688
8689 module.exports = BigInteger
8690
8691 },{"../package.json":4}],2:[function(require,module,exports){
8692 (function (Buffer){
8693 // FIXME: Kind of a weird way to throw exceptions, consider removing
8694 var assert = require('assert')
8695 var BigInteger = require('./bigi')
8696
8697 /**
8698 * Turns a byte array into a big integer.
8699 *
8700 * This function will interpret a byte array as a big integer in big
8701 * endian notation.
8702 */
8703 BigInteger.fromByteArrayUnsigned = function(byteArray) {
8704 // BigInteger expects a DER integer conformant byte array
8705 if (byteArray[0] & 0x80) {
8706 return new BigInteger([0].concat(byteArray))
8707 }
8708
8709 return new BigInteger(byteArray)
8710 }
8711
8712 /**
8713 * Returns a byte array representation of the big integer.
8714 *
8715 * This returns the absolute of the contained value in big endian
8716 * form. A value of zero results in an empty array.
8717 */
8718 BigInteger.prototype.toByteArrayUnsigned = function() {
8719 var byteArray = this.toByteArray()
8720 return byteArray[0] === 0 ? byteArray.slice(1) : byteArray
8721 }
8722
8723 BigInteger.fromDERInteger = function(byteArray) {
8724 return new BigInteger(byteArray)
8725 }
8726
8727 /*
8728 * Converts BigInteger to a DER integer representation.
8729 *
8730 * The format for this value uses the most significant bit as a sign
8731 * bit. If the most significant bit is already set and the integer is
8732 * positive, a 0x00 is prepended.
8733 *
8734 * Examples:
8735 *
8736 * 0 => 0x00
8737 * 1 => 0x01
8738 * -1 => 0xff
8739 * 127 => 0x7f
8740 * -127 => 0x81
8741 * 128 => 0x0080
8742 * -128 => 0x80
8743 * 255 => 0x00ff
8744 * -255 => 0xff01
8745 * 16300 => 0x3fac
8746 * -16300 => 0xc054
8747 * 62300 => 0x00f35c
8748 * -62300 => 0xff0ca4
8749 */
8750 BigInteger.prototype.toDERInteger = BigInteger.prototype.toByteArray
8751
8752 BigInteger.fromBuffer = function(buffer) {
8753 // BigInteger expects a DER integer conformant byte array
8754 if (buffer[0] & 0x80) {
8755 var byteArray = Array.prototype.slice.call(buffer)
8756
8757 return new BigInteger([0].concat(byteArray))
8758 }
8759
8760 return new BigInteger(buffer)
8761 }
8762
8763 BigInteger.fromHex = function(hex) {
8764 if (hex === '') return BigInteger.ZERO
8765
8766 assert.equal(hex, hex.match(/^[A-Fa-f0-9]+/), 'Invalid hex string')
8767 assert.equal(hex.length % 2, 0, 'Incomplete hex')
8768 return new BigInteger(hex, 16)
8769 }
8770
8771 BigInteger.prototype.toBuffer = function(size) {
8772 var byteArray = this.toByteArrayUnsigned()
8773 var zeros = []
8774
8775 var padding = size - byteArray.length
8776 while (zeros.length < padding) zeros.push(0)
8777
8778 return new Buffer(zeros.concat(byteArray))
8779 }
8780
8781 BigInteger.prototype.toHex = function(size) {
8782 return this.toBuffer(size).toString('hex')
8783 }
8784
8785 }).call(this,require("buffer").Buffer)
8786 },{"./bigi":1,"assert":5,"buffer":7}],3:[function(require,module,exports){
8787 var BigInteger = require('./bigi')
8788
8789 //addons
8790 require('./convert')
8791
8792 module.exports = BigInteger
8793 },{"./bigi":1,"./convert":2}],4:[function(require,module,exports){
8794 module.exports={
8795 "name": "bigi",
8796 "version": "1.4.0",
8797 "description": "Big integers.",
8798 "keywords": [
8799 "cryptography",
8800 "math",
8801 "bitcoin",
8802 "arbitrary",
8803 "precision",
8804 "arithmetic",
8805 "big",
8806 "integer",
8807 "int",
8808 "number",
8809 "biginteger",
8810 "bigint",
8811 "bignumber",
8812 "decimal",
8813 "float"
8814 ],
8815 "devDependencies": {
8816 "mocha": "^1.20.1",
8817 "jshint": "^2.5.1",
8818 "coveralls": "^2.10.0",
8819 "istanbul": "^0.2.11"
8820 },
8821 "repository": {
8822 "url": "https://github.com/cryptocoinjs/bigi",
8823 "type": "git"
8824 },
8825 "main": "./lib/index.js",
8826 "scripts": {
8827 "test": "_mocha -- test/*.js",
8828 "jshint": "jshint --config jshint.json lib/*.js ; true",
8829 "unit": "mocha",
8830 "coverage": "istanbul cover ./node_modules/.bin/_mocha -- --reporter list test/*.js",
8831 "coveralls": "npm run-script coverage && node ./node_modules/.bin/coveralls < coverage/lcov.info"
8832 },
8833 "dependencies": {},
8834 "testling": {
8835 "files": "test/*.js",
8836 "harness": "mocha",
8837 "browsers": [
8838 "ie/9..latest",
8839 "firefox/latest",
8840 "chrome/latest",
8841 "safari/6.0..latest",
8842 "iphone/6.0..latest",
8843 "android-browser/4.2..latest"
8844 ]
8845 },
8846 "bugs": {
8847 "url": "https://github.com/cryptocoinjs/bigi/issues"
8848 },
8849 "homepage": "https://github.com/cryptocoinjs/bigi",
8850 "_id": "bigi@1.4.0",
8851 "dist": {
8852 "shasum": "90ac1aeac0a531216463bdb58f42c1e05c8407ac",
8853 "tarball": "http://registry.npmjs.org/bigi/-/bigi-1.4.0.tgz"
8854 },
8855 "_from": "bigi@^1.4.0",
8856 "_npmVersion": "1.4.3",
8857 "_npmUser": {
8858 "name": "jp",
8859 "email": "jprichardson@gmail.com"
8860 },
8861 "maintainers": [
8862 {
8863 "name": "jp",
8864 "email": "jprichardson@gmail.com"
8865 },
8866 {
8867 "name": "midnightlightning",
8868 "email": "boydb@midnightdesign.ws"
8869 },
8870 {
8871 "name": "sidazhang",
8872 "email": "sidazhang89@gmail.com"
8873 },
8874 {
8875 "name": "nadav",
8876 "email": "npm@shesek.info"
8877 }
8878 ],
8879 "directories": {},
8880 "_shasum": "90ac1aeac0a531216463bdb58f42c1e05c8407ac",
8881 "_resolved": "https://registry.npmjs.org/bigi/-/bigi-1.4.0.tgz"
8882 }
8883
8884 },{}],5:[function(require,module,exports){
8885 // http://wiki.commonjs.org/wiki/Unit_Testing/1.0
8886 //
8887 // THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
8888 //
8889 // Originally from narwhal.js (http://narwhaljs.org)
8890 // Copyright (c) 2009 Thomas Robinson <280north.com>
8891 //
8892 // Permission is hereby granted, free of charge, to any person obtaining a copy
8893 // of this software and associated documentation files (the 'Software'), to
8894 // deal in the Software without restriction, including without limitation the
8895 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
8896 // sell copies of the Software, and to permit persons to whom the Software is
8897 // furnished to do so, subject to the following conditions:
8898 //
8899 // The above copyright notice and this permission notice shall be included in
8900 // all copies or substantial portions of the Software.
8901 //
8902 // THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
8903 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
8904 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
8905 // AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
8906 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
8907 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8908
8909 // when used in node, this will actually load the util module we depend on
8910 // versus loading the builtin util module as happens otherwise
8911 // this is a bug in node module loading as far as I am concerned
8912 var util = require('util/');
8913
8914 var pSlice = Array.prototype.slice;
8915 var hasOwn = Object.prototype.hasOwnProperty;
8916
8917 // 1. The assert module provides functions that throw
8918 // AssertionError's when particular conditions are not met. The
8919 // assert module must conform to the following interface.
8920
8921 var assert = module.exports = ok;
8922
8923 // 2. The AssertionError is defined in assert.
8924 // new assert.AssertionError({ message: message,
8925 // actual: actual,
8926 // expected: expected })
8927
8928 assert.AssertionError = function AssertionError(options) {
8929 this.name = 'AssertionError';
8930 this.actual = options.actual;
8931 this.expected = options.expected;
8932 this.operator = options.operator;
8933 if (options.message) {
8934 this.message = options.message;
8935 this.generatedMessage = false;
8936 } else {
8937 this.message = getMessage(this);
8938 this.generatedMessage = true;
8939 }
8940 var stackStartFunction = options.stackStartFunction || fail;
8941
8942 if (Error.captureStackTrace) {
8943 Error.captureStackTrace(this, stackStartFunction);
8944 }
8945 else {
8946 // non v8 browsers so we can have a stacktrace
8947 var err = new Error();
8948 if (err.stack) {
8949 var out = err.stack;
8950
8951 // try to strip useless frames
8952 var fn_name = stackStartFunction.name;
8953 var idx = out.indexOf('\n' + fn_name);
8954 if (idx >= 0) {
8955 // once we have located the function frame
8956 // we need to strip out everything before it (and its line)
8957 var next_line = out.indexOf('\n', idx + 1);
8958 out = out.substring(next_line + 1);
8959 }
8960
8961 this.stack = out;
8962 }
8963 }
8964 };
8965
8966 // assert.AssertionError instanceof Error
8967 util.inherits(assert.AssertionError, Error);
8968
8969 function replacer(key, value) {
8970 if (util.isUndefined(value)) {
8971 return '' + value;
8972 }
8973 if (util.isNumber(value) && !isFinite(value)) {
8974 return value.toString();
8975 }
8976 if (util.isFunction(value) || util.isRegExp(value)) {
8977 return value.toString();
8978 }
8979 return value;
8980 }
8981
8982 function truncate(s, n) {
8983 if (util.isString(s)) {
8984 return s.length < n ? s : s.slice(0, n);
8985 } else {
8986 return s;
8987 }
8988 }
8989
8990 function getMessage(self) {
8991 return truncate(JSON.stringify(self.actual, replacer), 128) + ' ' +
8992 self.operator + ' ' +
8993 truncate(JSON.stringify(self.expected, replacer), 128);
8994 }
8995
8996 // At present only the three keys mentioned above are used and
8997 // understood by the spec. Implementations or sub modules can pass
8998 // other keys to the AssertionError's constructor - they will be
8999 // ignored.
9000
9001 // 3. All of the following functions must throw an AssertionError
9002 // when a corresponding condition is not met, with a message that
9003 // may be undefined if not provided. All assertion methods provide
9004 // both the actual and expected values to the assertion error for
9005 // display purposes.
9006
9007 function fail(actual, expected, message, operator, stackStartFunction) {
9008 throw new assert.AssertionError({
9009 message: message,
9010 actual: actual,
9011 expected: expected,
9012 operator: operator,
9013 stackStartFunction: stackStartFunction
9014 });
9015 }
9016
9017 // EXTENSION! allows for well behaved errors defined elsewhere.
9018 assert.fail = fail;
9019
9020 // 4. Pure assertion tests whether a value is truthy, as determined
9021 // by !!guard.
9022 // assert.ok(guard, message_opt);
9023 // This statement is equivalent to assert.equal(true, !!guard,
9024 // message_opt);. To test strictly for the value true, use
9025 // assert.strictEqual(true, guard, message_opt);.
9026
9027 function ok(value, message) {
9028 if (!value) fail(value, true, message, '==', assert.ok);
9029 }
9030 assert.ok = ok;
9031
9032 // 5. The equality assertion tests shallow, coercive equality with
9033 // ==.
9034 // assert.equal(actual, expected, message_opt);
9035
9036 assert.equal = function equal(actual, expected, message) {
9037 if (actual != expected) fail(actual, expected, message, '==', assert.equal);
9038 };
9039
9040 // 6. The non-equality assertion tests for whether two objects are not equal
9041 // with != assert.notEqual(actual, expected, message_opt);
9042
9043 assert.notEqual = function notEqual(actual, expected, message) {
9044 if (actual == expected) {
9045 fail(actual, expected, message, '!=', assert.notEqual);
9046 }
9047 };
9048
9049 // 7. The equivalence assertion tests a deep equality relation.
9050 // assert.deepEqual(actual, expected, message_opt);
9051
9052 assert.deepEqual = function deepEqual(actual, expected, message) {
9053 if (!_deepEqual(actual, expected)) {
9054 fail(actual, expected, message, 'deepEqual', assert.deepEqual);
9055 }
9056 };
9057
9058 function _deepEqual(actual, expected) {
9059 // 7.1. All identical values are equivalent, as determined by ===.
9060 if (actual === expected) {
9061 return true;
9062
9063 } else if (util.isBuffer(actual) && util.isBuffer(expected)) {
9064 if (actual.length != expected.length) return false;
9065
9066 for (var i = 0; i < actual.length; i++) {
9067 if (actual[i] !== expected[i]) return false;
9068 }
9069
9070 return true;
9071
9072 // 7.2. If the expected value is a Date object, the actual value is
9073 // equivalent if it is also a Date object that refers to the same time.
9074 } else if (util.isDate(actual) && util.isDate(expected)) {
9075 return actual.getTime() === expected.getTime();
9076
9077 // 7.3 If the expected value is a RegExp object, the actual value is
9078 // equivalent if it is also a RegExp object with the same source and
9079 // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
9080 } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
9081 return actual.source === expected.source &&
9082 actual.global === expected.global &&
9083 actual.multiline === expected.multiline &&
9084 actual.lastIndex === expected.lastIndex &&
9085 actual.ignoreCase === expected.ignoreCase;
9086
9087 // 7.4. Other pairs that do not both pass typeof value == 'object',
9088 // equivalence is determined by ==.
9089 } else if (!util.isObject(actual) && !util.isObject(expected)) {
9090 return actual == expected;
9091
9092 // 7.5 For all other Object pairs, including Array objects, equivalence is
9093 // determined by having the same number of owned properties (as verified
9094 // with Object.prototype.hasOwnProperty.call), the same set of keys
9095 // (although not necessarily the same order), equivalent values for every
9096 // corresponding key, and an identical 'prototype' property. Note: this
9097 // accounts for both named and indexed properties on Arrays.
9098 } else {
9099 return objEquiv(actual, expected);
9100 }
9101 }
9102
9103 function isArguments(object) {
9104 return Object.prototype.toString.call(object) == '[object Arguments]';
9105 }
9106
9107 function objEquiv(a, b) {
9108 if (util.isNullOrUndefined(a) || util.isNullOrUndefined(b))
9109 return false;
9110 // an identical 'prototype' property.
9111 if (a.prototype !== b.prototype) return false;
9112 // if one is a primitive, the other must be same
9113 if (util.isPrimitive(a) || util.isPrimitive(b)) {
9114 return a === b;
9115 }
9116 var aIsArgs = isArguments(a),
9117 bIsArgs = isArguments(b);
9118 if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
9119 return false;
9120 if (aIsArgs) {
9121 a = pSlice.call(a);
9122 b = pSlice.call(b);
9123 return _deepEqual(a, b);
9124 }
9125 var ka = objectKeys(a),
9126 kb = objectKeys(b),
9127 key, i;
9128 // having the same number of owned properties (keys incorporates
9129 // hasOwnProperty)
9130 if (ka.length != kb.length)
9131 return false;
9132 //the same set of keys (although not necessarily the same order),
9133 ka.sort();
9134 kb.sort();
9135 //~~~cheap key test
9136 for (i = ka.length - 1; i >= 0; i--) {
9137 if (ka[i] != kb[i])
9138 return false;
9139 }
9140 //equivalent values for every corresponding key, and
9141 //~~~possibly expensive deep test
9142 for (i = ka.length - 1; i >= 0; i--) {
9143 key = ka[i];
9144 if (!_deepEqual(a[key], b[key])) return false;
9145 }
9146 return true;
9147 }
9148
9149 // 8. The non-equivalence assertion tests for any deep inequality.
9150 // assert.notDeepEqual(actual, expected, message_opt);
9151
9152 assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
9153 if (_deepEqual(actual, expected)) {
9154 fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
9155 }
9156 };
9157
9158 // 9. The strict equality assertion tests strict equality, as determined by ===.
9159 // assert.strictEqual(actual, expected, message_opt);
9160
9161 assert.strictEqual = function strictEqual(actual, expected, message) {
9162 if (actual !== expected) {
9163 fail(actual, expected, message, '===', assert.strictEqual);
9164 }
9165 };
9166
9167 // 10. The strict non-equality assertion tests for strict inequality, as
9168 // determined by !==. assert.notStrictEqual(actual, expected, message_opt);
9169
9170 assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
9171 if (actual === expected) {
9172 fail(actual, expected, message, '!==', assert.notStrictEqual);
9173 }
9174 };
9175
9176 function expectedException(actual, expected) {
9177 if (!actual || !expected) {
9178 return false;
9179 }
9180
9181 if (Object.prototype.toString.call(expected) == '[object RegExp]') {
9182 return expected.test(actual);
9183 } else if (actual instanceof expected) {
9184 return true;
9185 } else if (expected.call({}, actual) === true) {
9186 return true;
9187 }
9188
9189 return false;
9190 }
9191
9192 function _throws(shouldThrow, block, expected, message) {
9193 var actual;
9194
9195 if (util.isString(expected)) {
9196 message = expected;
9197 expected = null;
9198 }
9199
9200 try {
9201 block();
9202 } catch (e) {
9203 actual = e;
9204 }
9205
9206 message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
9207 (message ? ' ' + message : '.');
9208
9209 if (shouldThrow && !actual) {
9210 fail(actual, expected, 'Missing expected exception' + message);
9211 }
9212
9213 if (!shouldThrow && expectedException(actual, expected)) {
9214 fail(actual, expected, 'Got unwanted exception' + message);
9215 }
9216
9217 if ((shouldThrow && actual && expected &&
9218 !expectedException(actual, expected)) || (!shouldThrow && actual)) {
9219 throw actual;
9220 }
9221 }
9222
9223 // 11. Expected to throw an error:
9224 // assert.throws(block, Error_opt, message_opt);
9225
9226 assert.throws = function(block, /*optional*/error, /*optional*/message) {
9227 _throws.apply(this, [true].concat(pSlice.call(arguments)));
9228 };
9229
9230 // EXTENSION! This is annoying to write outside this module.
9231 assert.doesNotThrow = function(block, /*optional*/message) {
9232 _throws.apply(this, [false].concat(pSlice.call(arguments)));
9233 };
9234
9235 assert.ifError = function(err) { if (err) {throw err;}};
9236
9237 var objectKeys = Object.keys || function (obj) {
9238 var keys = [];
9239 for (var key in obj) {
9240 if (hasOwn.call(obj, key)) keys.push(key);
9241 }
9242 return keys;
9243 };
9244
9245 },{"util/":29}],6:[function(require,module,exports){
9246
9247 },{}],7:[function(require,module,exports){
9248 /*!
9249 * The buffer module from node.js, for the browser.
9250 *
9251 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
9252 * @license MIT
9253 */
9254
9255 var base64 = require('base64-js')
9256 var ieee754 = require('ieee754')
9257 var isArray = require('is-array')
9258
9259 exports.Buffer = Buffer
9260 exports.SlowBuffer = SlowBuffer
9261 exports.INSPECT_MAX_BYTES = 50
9262 Buffer.poolSize = 8192 // not used by this implementation
9263
9264 var rootParent = {}
9265
9266 /**
9267 * If `Buffer.TYPED_ARRAY_SUPPORT`:
9268 * === true Use Uint8Array implementation (fastest)
9269 * === false Use Object implementation (most compatible, even IE6)
9270 *
9271 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
9272 * Opera 11.6+, iOS 4.2+.
9273 *
9274 * Due to various browser bugs, sometimes the Object implementation will be used even
9275 * when the browser supports typed arrays.
9276 *
9277 * Note:
9278 *
9279 * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,
9280 * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.
9281 *
9282 * - Safari 5-7 lacks support for changing the `Object.prototype.constructor` property
9283 * on objects.
9284 *
9285 * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.
9286 *
9287 * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
9288 * incorrect length in some situations.
9289
9290 * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they
9291 * get the Object implementation, which is slower but behaves correctly.
9292 */
9293 Buffer.TYPED_ARRAY_SUPPORT = (function () {
9294 function Bar () {}
9295 try {
9296 var arr = new Uint8Array(1)
9297 arr.foo = function () { return 42 }
9298 arr.constructor = Bar
9299 return arr.foo() === 42 && // typed array instances can be augmented
9300 arr.constructor === Bar && // constructor can be set
9301 typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`
9302 arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`
9303 } catch (e) {
9304 return false
9305 }
9306 })()
9307
9308 function kMaxLength () {
9309 return Buffer.TYPED_ARRAY_SUPPORT
9310 ? 0x7fffffff
9311 : 0x3fffffff
9312 }
9313
9314 /**
9315 * Class: Buffer
9316 * =============
9317 *
9318 * The Buffer constructor returns instances of `Uint8Array` that are augmented
9319 * with function properties for all the node `Buffer` API functions. We use
9320 * `Uint8Array` so that square bracket notation works as expected -- it returns
9321 * a single octet.
9322 *
9323 * By augmenting the instances, we can avoid modifying the `Uint8Array`
9324 * prototype.
9325 */
9326 function Buffer (arg) {
9327 if (!(this instanceof Buffer)) {
9328 // Avoid going through an ArgumentsAdaptorTrampoline in the common case.
9329 if (arguments.length > 1) return new Buffer(arg, arguments[1])
9330 return new Buffer(arg)
9331 }
9332
9333 this.length = 0
9334 this.parent = undefined
9335
9336 // Common case.
9337 if (typeof arg === 'number') {
9338 return fromNumber(this, arg)
9339 }
9340
9341 // Slightly less common case.
9342 if (typeof arg === 'string') {
9343 return fromString(this, arg, arguments.length > 1 ? arguments[1] : 'utf8')
9344 }
9345
9346 // Unusual.
9347 return fromObject(this, arg)
9348 }
9349
9350 function fromNumber (that, length) {
9351 that = allocate(that, length < 0 ? 0 : checked(length) | 0)
9352 if (!Buffer.TYPED_ARRAY_SUPPORT) {
9353 for (var i = 0; i < length; i++) {
9354 that[i] = 0
9355 }
9356 }
9357 return that
9358 }
9359
9360 function fromString (that, string, encoding) {
9361 if (typeof encoding !== 'string' || encoding === '') encoding = 'utf8'
9362
9363 // Assumption: byteLength() return value is always < kMaxLength.
9364 var length = byteLength(string, encoding) | 0
9365 that = allocate(that, length)
9366
9367 that.write(string, encoding)
9368 return that
9369 }
9370
9371 function fromObject (that, object) {
9372 if (Buffer.isBuffer(object)) return fromBuffer(that, object)
9373
9374 if (isArray(object)) return fromArray(that, object)
9375
9376 if (object == null) {
9377 throw new TypeError('must start with number, buffer, array or string')
9378 }
9379
9380 if (typeof ArrayBuffer !== 'undefined') {
9381 if (object.buffer instanceof ArrayBuffer) {
9382 return fromTypedArray(that, object)
9383 }
9384 if (object instanceof ArrayBuffer) {
9385 return fromArrayBuffer(that, object)
9386 }
9387 }
9388
9389 if (object.length) return fromArrayLike(that, object)
9390
9391 return fromJsonObject(that, object)
9392 }
9393
9394 function fromBuffer (that, buffer) {
9395 var length = checked(buffer.length) | 0
9396 that = allocate(that, length)
9397 buffer.copy(that, 0, 0, length)
9398 return that
9399 }
9400
9401 function fromArray (that, array) {
9402 var length = checked(array.length) | 0
9403 that = allocate(that, length)
9404 for (var i = 0; i < length; i += 1) {
9405 that[i] = array[i] & 255
9406 }
9407 return that
9408 }
9409
9410 // Duplicate of fromArray() to keep fromArray() monomorphic.
9411 function fromTypedArray (that, array) {
9412 var length = checked(array.length) | 0
9413 that = allocate(that, length)
9414 // Truncating the elements is probably not what people expect from typed
9415 // arrays with BYTES_PER_ELEMENT > 1 but it's compatible with the behavior
9416 // of the old Buffer constructor.
9417 for (var i = 0; i < length; i += 1) {
9418 that[i] = array[i] & 255
9419 }
9420 return that
9421 }
9422
9423 function fromArrayBuffer (that, array) {
9424 if (Buffer.TYPED_ARRAY_SUPPORT) {
9425 // Return an augmented `Uint8Array` instance, for best performance
9426 array.byteLength
9427 that = Buffer._augment(new Uint8Array(array))
9428 } else {
9429 // Fallback: Return an object instance of the Buffer class
9430 that = fromTypedArray(that, new Uint8Array(array))
9431 }
9432 return that
9433 }
9434
9435 function fromArrayLike (that, array) {
9436 var length = checked(array.length) | 0
9437 that = allocate(that, length)
9438 for (var i = 0; i < length; i += 1) {
9439 that[i] = array[i] & 255
9440 }
9441 return that
9442 }
9443
9444 // Deserialize { type: 'Buffer', data: [1,2,3,...] } into a Buffer object.
9445 // Returns a zero-length buffer for inputs that don't conform to the spec.
9446 function fromJsonObject (that, object) {
9447 var array
9448 var length = 0
9449
9450 if (object.type === 'Buffer' && isArray(object.data)) {
9451 array = object.data
9452 length = checked(array.length) | 0
9453 }
9454 that = allocate(that, length)
9455
9456 for (var i = 0; i < length; i += 1) {
9457 that[i] = array[i] & 255
9458 }
9459 return that
9460 }
9461
9462 function allocate (that, length) {
9463 if (Buffer.TYPED_ARRAY_SUPPORT) {
9464 // Return an augmented `Uint8Array` instance, for best performance
9465 that = Buffer._augment(new Uint8Array(length))
9466 } else {
9467 // Fallback: Return an object instance of the Buffer class
9468 that.length = length
9469 that._isBuffer = true
9470 }
9471
9472 var fromPool = length !== 0 && length <= Buffer.poolSize >>> 1
9473 if (fromPool) that.parent = rootParent
9474
9475 return that
9476 }
9477
9478 function checked (length) {
9479 // Note: cannot use `length < kMaxLength` here because that fails when
9480 // length is NaN (which is otherwise coerced to zero.)
9481 if (length >= kMaxLength()) {
9482 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
9483 'size: 0x' + kMaxLength().toString(16) + ' bytes')
9484 }
9485 return length | 0
9486 }
9487
9488 function SlowBuffer (subject, encoding) {
9489 if (!(this instanceof SlowBuffer)) return new SlowBuffer(subject, encoding)
9490
9491 var buf = new Buffer(subject, encoding)
9492 delete buf.parent
9493 return buf
9494 }
9495
9496 Buffer.isBuffer = function isBuffer (b) {
9497 return !!(b != null && b._isBuffer)
9498 }
9499
9500 Buffer.compare = function compare (a, b) {
9501 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
9502 throw new TypeError('Arguments must be Buffers')
9503 }
9504
9505 if (a === b) return 0
9506
9507 var x = a.length
9508 var y = b.length
9509
9510 var i = 0
9511 var len = Math.min(x, y)
9512 while (i < len) {
9513 if (a[i] !== b[i]) break
9514
9515 ++i
9516 }
9517
9518 if (i !== len) {
9519 x = a[i]
9520 y = b[i]
9521 }
9522
9523 if (x < y) return -1
9524 if (y < x) return 1
9525 return 0
9526 }
9527
9528 Buffer.isEncoding = function isEncoding (encoding) {
9529 switch (String(encoding).toLowerCase()) {
9530 case 'hex':
9531 case 'utf8':
9532 case 'utf-8':
9533 case 'ascii':
9534 case 'binary':
9535 case 'base64':
9536 case 'raw':
9537 case 'ucs2':
9538 case 'ucs-2':
9539 case 'utf16le':
9540 case 'utf-16le':
9541 return true
9542 default:
9543 return false
9544 }
9545 }
9546
9547 Buffer.concat = function concat (list, length) {
9548 if (!isArray(list)) throw new TypeError('list argument must be an Array of Buffers.')
9549
9550 if (list.length === 0) {
9551 return new Buffer(0)
9552 }
9553
9554 var i
9555 if (length === undefined) {
9556 length = 0
9557 for (i = 0; i < list.length; i++) {
9558 length += list[i].length
9559 }
9560 }
9561
9562 var buf = new Buffer(length)
9563 var pos = 0
9564 for (i = 0; i < list.length; i++) {
9565 var item = list[i]
9566 item.copy(buf, pos)
9567 pos += item.length
9568 }
9569 return buf
9570 }
9571
9572 function byteLength (string, encoding) {
9573 if (typeof string !== 'string') string = '' + string
9574
9575 var len = string.length
9576 if (len === 0) return 0
9577
9578 // Use a for loop to avoid recursion
9579 var loweredCase = false
9580 for (;;) {
9581 switch (encoding) {
9582 case 'ascii':
9583 case 'binary':
9584 // Deprecated
9585 case 'raw':
9586 case 'raws':
9587 return len
9588 case 'utf8':
9589 case 'utf-8':
9590 return utf8ToBytes(string).length
9591 case 'ucs2':
9592 case 'ucs-2':
9593 case 'utf16le':
9594 case 'utf-16le':
9595 return len * 2
9596 case 'hex':
9597 return len >>> 1
9598 case 'base64':
9599 return base64ToBytes(string).length
9600 default:
9601 if (loweredCase) return utf8ToBytes(string).length // assume utf8
9602 encoding = ('' + encoding).toLowerCase()
9603 loweredCase = true
9604 }
9605 }
9606 }
9607 Buffer.byteLength = byteLength
9608
9609 // pre-set for values that may exist in the future
9610 Buffer.prototype.length = undefined
9611 Buffer.prototype.parent = undefined
9612
9613 function slowToString (encoding, start, end) {
9614 var loweredCase = false
9615
9616 start = start | 0
9617 end = end === undefined || end === Infinity ? this.length : end | 0
9618
9619 if (!encoding) encoding = 'utf8'
9620 if (start < 0) start = 0
9621 if (end > this.length) end = this.length
9622 if (end <= start) return ''
9623
9624 while (true) {
9625 switch (encoding) {
9626 case 'hex':
9627 return hexSlice(this, start, end)
9628
9629 case 'utf8':
9630 case 'utf-8':
9631 return utf8Slice(this, start, end)
9632
9633 case 'ascii':
9634 return asciiSlice(this, start, end)
9635
9636 case 'binary':
9637 return binarySlice(this, start, end)
9638
9639 case 'base64':
9640 return base64Slice(this, start, end)
9641
9642 case 'ucs2':
9643 case 'ucs-2':
9644 case 'utf16le':
9645 case 'utf-16le':
9646 return utf16leSlice(this, start, end)
9647
9648 default:
9649 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
9650 encoding = (encoding + '').toLowerCase()
9651 loweredCase = true
9652 }
9653 }
9654 }
9655
9656 Buffer.prototype.toString = function toString () {
9657 var length = this.length | 0
9658 if (length === 0) return ''
9659 if (arguments.length === 0) return utf8Slice(this, 0, length)
9660 return slowToString.apply(this, arguments)
9661 }
9662
9663 Buffer.prototype.equals = function equals (b) {
9664 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
9665 if (this === b) return true
9666 return Buffer.compare(this, b) === 0
9667 }
9668
9669 Buffer.prototype.inspect = function inspect () {
9670 var str = ''
9671 var max = exports.INSPECT_MAX_BYTES
9672 if (this.length > 0) {
9673 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
9674 if (this.length > max) str += ' ... '
9675 }
9676 return '<Buffer ' + str + '>'
9677 }
9678
9679 Buffer.prototype.compare = function compare (b) {
9680 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
9681 if (this === b) return 0
9682 return Buffer.compare(this, b)
9683 }
9684
9685 Buffer.prototype.indexOf = function indexOf (val, byteOffset) {
9686 if (byteOffset > 0x7fffffff) byteOffset = 0x7fffffff
9687 else if (byteOffset < -0x80000000) byteOffset = -0x80000000
9688 byteOffset >>= 0
9689
9690 if (this.length === 0) return -1
9691 if (byteOffset >= this.length) return -1
9692
9693 // Negative offsets start from the end of the buffer
9694 if (byteOffset < 0) byteOffset = Math.max(this.length + byteOffset, 0)
9695
9696 if (typeof val === 'string') {
9697 if (val.length === 0) return -1 // special case: looking for empty string always fails
9698 return String.prototype.indexOf.call(this, val, byteOffset)
9699 }
9700 if (Buffer.isBuffer(val)) {
9701 return arrayIndexOf(this, val, byteOffset)
9702 }
9703 if (typeof val === 'number') {
9704 if (Buffer.TYPED_ARRAY_SUPPORT && Uint8Array.prototype.indexOf === 'function') {
9705 return Uint8Array.prototype.indexOf.call(this, val, byteOffset)
9706 }
9707 return arrayIndexOf(this, [ val ], byteOffset)
9708 }
9709
9710 function arrayIndexOf (arr, val, byteOffset) {
9711 var foundIndex = -1
9712 for (var i = 0; byteOffset + i < arr.length; i++) {
9713 if (arr[byteOffset + i] === val[foundIndex === -1 ? 0 : i - foundIndex]) {
9714 if (foundIndex === -1) foundIndex = i
9715 if (i - foundIndex + 1 === val.length) return byteOffset + foundIndex
9716 } else {
9717 foundIndex = -1
9718 }
9719 }
9720 return -1
9721 }
9722
9723 throw new TypeError('val must be string, number or Buffer')
9724 }
9725
9726 // `get` is deprecated
9727 Buffer.prototype.get = function get (offset) {
9728 console.log('.get() is deprecated. Access using array indexes instead.')
9729 return this.readUInt8(offset)
9730 }
9731
9732 // `set` is deprecated
9733 Buffer.prototype.set = function set (v, offset) {
9734 console.log('.set() is deprecated. Access using array indexes instead.')
9735 return this.writeUInt8(v, offset)
9736 }
9737
9738 function hexWrite (buf, string, offset, length) {
9739 offset = Number(offset) || 0
9740 var remaining = buf.length - offset
9741 if (!length) {
9742 length = remaining
9743 } else {
9744 length = Number(length)
9745 if (length > remaining) {
9746 length = remaining
9747 }
9748 }
9749
9750 // must be an even number of digits
9751 var strLen = string.length
9752 if (strLen % 2 !== 0) throw new Error('Invalid hex string')
9753
9754 if (length > strLen / 2) {
9755 length = strLen / 2
9756 }
9757 for (var i = 0; i < length; i++) {
9758 var parsed = parseInt(string.substr(i * 2, 2), 16)
9759 if (isNaN(parsed)) throw new Error('Invalid hex string')
9760 buf[offset + i] = parsed
9761 }
9762 return i
9763 }
9764
9765 function utf8Write (buf, string, offset, length) {
9766 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
9767 }
9768
9769 function asciiWrite (buf, string, offset, length) {
9770 return blitBuffer(asciiToBytes(string), buf, offset, length)
9771 }
9772
9773 function binaryWrite (buf, string, offset, length) {
9774 return asciiWrite(buf, string, offset, length)
9775 }
9776
9777 function base64Write (buf, string, offset, length) {
9778 return blitBuffer(base64ToBytes(string), buf, offset, length)
9779 }
9780
9781 function ucs2Write (buf, string, offset, length) {
9782 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
9783 }
9784
9785 Buffer.prototype.write = function write (string, offset, length, encoding) {
9786 // Buffer#write(string)
9787 if (offset === undefined) {
9788 encoding = 'utf8'
9789 length = this.length
9790 offset = 0
9791 // Buffer#write(string, encoding)
9792 } else if (length === undefined && typeof offset === 'string') {
9793 encoding = offset
9794 length = this.length
9795 offset = 0
9796 // Buffer#write(string, offset[, length][, encoding])
9797 } else if (isFinite(offset)) {
9798 offset = offset | 0
9799 if (isFinite(length)) {
9800 length = length | 0
9801 if (encoding === undefined) encoding = 'utf8'
9802 } else {
9803 encoding = length
9804 length = undefined
9805 }
9806 // legacy write(string, encoding, offset, length) - remove in v0.13
9807 } else {
9808 var swap = encoding
9809 encoding = offset
9810 offset = length | 0
9811 length = swap
9812 }
9813
9814 var remaining = this.length - offset
9815 if (length === undefined || length > remaining) length = remaining
9816
9817 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
9818 throw new RangeError('attempt to write outside buffer bounds')
9819 }
9820
9821 if (!encoding) encoding = 'utf8'
9822
9823 var loweredCase = false
9824 for (;;) {
9825 switch (encoding) {
9826 case 'hex':
9827 return hexWrite(this, string, offset, length)
9828
9829 case 'utf8':
9830 case 'utf-8':
9831 return utf8Write(this, string, offset, length)
9832
9833 case 'ascii':
9834 return asciiWrite(this, string, offset, length)
9835
9836 case 'binary':
9837 return binaryWrite(this, string, offset, length)
9838
9839 case 'base64':
9840 // Warning: maxLength not taken into account in base64Write
9841 return base64Write(this, string, offset, length)
9842
9843 case 'ucs2':
9844 case 'ucs-2':
9845 case 'utf16le':
9846 case 'utf-16le':
9847 return ucs2Write(this, string, offset, length)
9848
9849 default:
9850 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
9851 encoding = ('' + encoding).toLowerCase()
9852 loweredCase = true
9853 }
9854 }
9855 }
9856
9857 Buffer.prototype.toJSON = function toJSON () {
9858 return {
9859 type: 'Buffer',
9860 data: Array.prototype.slice.call(this._arr || this, 0)
9861 }
9862 }
9863
9864 function base64Slice (buf, start, end) {
9865 if (start === 0 && end === buf.length) {
9866 return base64.fromByteArray(buf)
9867 } else {
9868 return base64.fromByteArray(buf.slice(start, end))
9869 }
9870 }
9871
9872 function utf8Slice (buf, start, end) {
9873 end = Math.min(buf.length, end)
9874 var firstByte
9875 var secondByte
9876 var thirdByte
9877 var fourthByte
9878 var bytesPerSequence
9879 var tempCodePoint
9880 var codePoint
9881 var res = []
9882 var i = start
9883
9884 for (; i < end; i += bytesPerSequence) {
9885 firstByte = buf[i]
9886 codePoint = 0xFFFD
9887
9888 if (firstByte > 0xEF) {
9889 bytesPerSequence = 4
9890 } else if (firstByte > 0xDF) {
9891 bytesPerSequence = 3
9892 } else if (firstByte > 0xBF) {
9893 bytesPerSequence = 2
9894 } else {
9895 bytesPerSequence = 1
9896 }
9897
9898 if (i + bytesPerSequence <= end) {
9899 switch (bytesPerSequence) {
9900 case 1:
9901 if (firstByte < 0x80) {
9902 codePoint = firstByte
9903 }
9904 break
9905 case 2:
9906 secondByte = buf[i + 1]
9907 if ((secondByte & 0xC0) === 0x80) {
9908 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
9909 if (tempCodePoint > 0x7F) {
9910 codePoint = tempCodePoint
9911 }
9912 }
9913 break
9914 case 3:
9915 secondByte = buf[i + 1]
9916 thirdByte = buf[i + 2]
9917 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
9918 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
9919 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
9920 codePoint = tempCodePoint
9921 }
9922 }
9923 break
9924 case 4:
9925 secondByte = buf[i + 1]
9926 thirdByte = buf[i + 2]
9927 fourthByte = buf[i + 3]
9928 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
9929 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
9930 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
9931 codePoint = tempCodePoint
9932 }
9933 }
9934 }
9935 }
9936
9937 if (codePoint === 0xFFFD) {
9938 // we generated an invalid codePoint so make sure to only advance by 1 byte
9939 bytesPerSequence = 1
9940 } else if (codePoint > 0xFFFF) {
9941 // encode to utf16 (surrogate pair dance)
9942 codePoint -= 0x10000
9943 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
9944 codePoint = 0xDC00 | codePoint & 0x3FF
9945 }
9946
9947 res.push(codePoint)
9948 }
9949
9950 return String.fromCharCode.apply(String, res)
9951 }
9952
9953 function asciiSlice (buf, start, end) {
9954 var ret = ''
9955 end = Math.min(buf.length, end)
9956
9957 for (var i = start; i < end; i++) {
9958 ret += String.fromCharCode(buf[i] & 0x7F)
9959 }
9960 return ret
9961 }
9962
9963 function binarySlice (buf, start, end) {
9964 var ret = ''
9965 end = Math.min(buf.length, end)
9966
9967 for (var i = start; i < end; i++) {
9968 ret += String.fromCharCode(buf[i])
9969 }
9970 return ret
9971 }
9972
9973 function hexSlice (buf, start, end) {
9974 var len = buf.length
9975
9976 if (!start || start < 0) start = 0
9977 if (!end || end < 0 || end > len) end = len
9978
9979 var out = ''
9980 for (var i = start; i < end; i++) {
9981 out += toHex(buf[i])
9982 }
9983 return out
9984 }
9985
9986 function utf16leSlice (buf, start, end) {
9987 var bytes = buf.slice(start, end)
9988 var res = ''
9989 for (var i = 0; i < bytes.length; i += 2) {
9990 res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)
9991 }
9992 return res
9993 }
9994
9995 Buffer.prototype.slice = function slice (start, end) {
9996 var len = this.length
9997 start = ~~start
9998 end = end === undefined ? len : ~~end
9999
10000 if (start < 0) {
10001 start += len
10002 if (start < 0) start = 0
10003 } else if (start > len) {
10004 start = len
10005 }
10006
10007 if (end < 0) {
10008 end += len
10009 if (end < 0) end = 0
10010 } else if (end > len) {
10011 end = len
10012 }
10013
10014 if (end < start) end = start
10015
10016 var newBuf
10017 if (Buffer.TYPED_ARRAY_SUPPORT) {
10018 newBuf = Buffer._augment(this.subarray(start, end))
10019 } else {
10020 var sliceLen = end - start
10021 newBuf = new Buffer(sliceLen, undefined)
10022 for (var i = 0; i < sliceLen; i++) {
10023 newBuf[i] = this[i + start]
10024 }
10025 }
10026
10027 if (newBuf.length) newBuf.parent = this.parent || this
10028
10029 return newBuf
10030 }
10031
10032 /*
10033 * Need to make sure that buffer isn't trying to write out of bounds.
10034 */
10035 function checkOffset (offset, ext, length) {
10036 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
10037 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
10038 }
10039
10040 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
10041 offset = offset | 0
10042 byteLength = byteLength | 0
10043 if (!noAssert) checkOffset(offset, byteLength, this.length)
10044
10045 var val = this[offset]
10046 var mul = 1
10047 var i = 0
10048 while (++i < byteLength && (mul *= 0x100)) {
10049 val += this[offset + i] * mul
10050 }
10051
10052 return val
10053 }
10054
10055 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
10056 offset = offset | 0
10057 byteLength = byteLength | 0
10058 if (!noAssert) {
10059 checkOffset(offset, byteLength, this.length)
10060 }
10061
10062 var val = this[offset + --byteLength]
10063 var mul = 1
10064 while (byteLength > 0 && (mul *= 0x100)) {
10065 val += this[offset + --byteLength] * mul
10066 }
10067
10068 return val
10069 }
10070
10071 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
10072 if (!noAssert) checkOffset(offset, 1, this.length)
10073 return this[offset]
10074 }
10075
10076 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
10077 if (!noAssert) checkOffset(offset, 2, this.length)
10078 return this[offset] | (this[offset + 1] << 8)
10079 }
10080
10081 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
10082 if (!noAssert) checkOffset(offset, 2, this.length)
10083 return (this[offset] << 8) | this[offset + 1]
10084 }
10085
10086 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
10087 if (!noAssert) checkOffset(offset, 4, this.length)
10088
10089 return ((this[offset]) |
10090 (this[offset + 1] << 8) |
10091 (this[offset + 2] << 16)) +
10092 (this[offset + 3] * 0x1000000)
10093 }
10094
10095 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
10096 if (!noAssert) checkOffset(offset, 4, this.length)
10097
10098 return (this[offset] * 0x1000000) +
10099 ((this[offset + 1] << 16) |
10100 (this[offset + 2] << 8) |
10101 this[offset + 3])
10102 }
10103
10104 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
10105 offset = offset | 0
10106 byteLength = byteLength | 0
10107 if (!noAssert) checkOffset(offset, byteLength, this.length)
10108
10109 var val = this[offset]
10110 var mul = 1
10111 var i = 0
10112 while (++i < byteLength && (mul *= 0x100)) {
10113 val += this[offset + i] * mul
10114 }
10115 mul *= 0x80
10116
10117 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
10118
10119 return val
10120 }
10121
10122 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
10123 offset = offset | 0
10124 byteLength = byteLength | 0
10125 if (!noAssert) checkOffset(offset, byteLength, this.length)
10126
10127 var i = byteLength
10128 var mul = 1
10129 var val = this[offset + --i]
10130 while (i > 0 && (mul *= 0x100)) {
10131 val += this[offset + --i] * mul
10132 }
10133 mul *= 0x80
10134
10135 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
10136
10137 return val
10138 }
10139
10140 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
10141 if (!noAssert) checkOffset(offset, 1, this.length)
10142 if (!(this[offset] & 0x80)) return (this[offset])
10143 return ((0xff - this[offset] + 1) * -1)
10144 }
10145
10146 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
10147 if (!noAssert) checkOffset(offset, 2, this.length)
10148 var val = this[offset] | (this[offset + 1] << 8)
10149 return (val & 0x8000) ? val | 0xFFFF0000 : val
10150 }
10151
10152 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
10153 if (!noAssert) checkOffset(offset, 2, this.length)
10154 var val = this[offset + 1] | (this[offset] << 8)
10155 return (val & 0x8000) ? val | 0xFFFF0000 : val
10156 }
10157
10158 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
10159 if (!noAssert) checkOffset(offset, 4, this.length)
10160
10161 return (this[offset]) |
10162 (this[offset + 1] << 8) |
10163 (this[offset + 2] << 16) |
10164 (this[offset + 3] << 24)
10165 }
10166
10167 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
10168 if (!noAssert) checkOffset(offset, 4, this.length)
10169
10170 return (this[offset] << 24) |
10171 (this[offset + 1] << 16) |
10172 (this[offset + 2] << 8) |
10173 (this[offset + 3])
10174 }
10175
10176 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
10177 if (!noAssert) checkOffset(offset, 4, this.length)
10178 return ieee754.read(this, offset, true, 23, 4)
10179 }
10180
10181 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
10182 if (!noAssert) checkOffset(offset, 4, this.length)
10183 return ieee754.read(this, offset, false, 23, 4)
10184 }
10185
10186 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
10187 if (!noAssert) checkOffset(offset, 8, this.length)
10188 return ieee754.read(this, offset, true, 52, 8)
10189 }
10190
10191 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
10192 if (!noAssert) checkOffset(offset, 8, this.length)
10193 return ieee754.read(this, offset, false, 52, 8)
10194 }
10195
10196 function checkInt (buf, value, offset, ext, max, min) {
10197 if (!Buffer.isBuffer(buf)) throw new TypeError('buffer must be a Buffer instance')
10198 if (value > max || value < min) throw new RangeError('value is out of bounds')
10199 if (offset + ext > buf.length) throw new RangeError('index out of range')
10200 }
10201
10202 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
10203 value = +value
10204 offset = offset | 0
10205 byteLength = byteLength | 0
10206 if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)
10207
10208 var mul = 1
10209 var i = 0
10210 this[offset] = value & 0xFF
10211 while (++i < byteLength && (mul *= 0x100)) {
10212 this[offset + i] = (value / mul) & 0xFF
10213 }
10214
10215 return offset + byteLength
10216 }
10217
10218 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
10219 value = +value
10220 offset = offset | 0
10221 byteLength = byteLength | 0
10222 if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)
10223
10224 var i = byteLength - 1
10225 var mul = 1
10226 this[offset + i] = value & 0xFF
10227 while (--i >= 0 && (mul *= 0x100)) {
10228 this[offset + i] = (value / mul) & 0xFF
10229 }
10230
10231 return offset + byteLength
10232 }
10233
10234 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
10235 value = +value
10236 offset = offset | 0
10237 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
10238 if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
10239 this[offset] = value
10240 return offset + 1
10241 }
10242
10243 function objectWriteUInt16 (buf, value, offset, littleEndian) {
10244 if (value < 0) value = 0xffff + value + 1
10245 for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; i++) {
10246 buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>
10247 (littleEndian ? i : 1 - i) * 8
10248 }
10249 }
10250
10251 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
10252 value = +value
10253 offset = offset | 0
10254 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
10255 if (Buffer.TYPED_ARRAY_SUPPORT) {
10256 this[offset] = value
10257 this[offset + 1] = (value >>> 8)
10258 } else {
10259 objectWriteUInt16(this, value, offset, true)
10260 }
10261 return offset + 2
10262 }
10263
10264 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
10265 value = +value
10266 offset = offset | 0
10267 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
10268 if (Buffer.TYPED_ARRAY_SUPPORT) {
10269 this[offset] = (value >>> 8)
10270 this[offset + 1] = value
10271 } else {
10272 objectWriteUInt16(this, value, offset, false)
10273 }
10274 return offset + 2
10275 }
10276
10277 function objectWriteUInt32 (buf, value, offset, littleEndian) {
10278 if (value < 0) value = 0xffffffff + value + 1
10279 for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; i++) {
10280 buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff
10281 }
10282 }
10283
10284 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
10285 value = +value
10286 offset = offset | 0
10287 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
10288 if (Buffer.TYPED_ARRAY_SUPPORT) {
10289 this[offset + 3] = (value >>> 24)
10290 this[offset + 2] = (value >>> 16)
10291 this[offset + 1] = (value >>> 8)
10292 this[offset] = value
10293 } else {
10294 objectWriteUInt32(this, value, offset, true)
10295 }
10296 return offset + 4
10297 }
10298
10299 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
10300 value = +value
10301 offset = offset | 0
10302 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
10303 if (Buffer.TYPED_ARRAY_SUPPORT) {
10304 this[offset] = (value >>> 24)
10305 this[offset + 1] = (value >>> 16)
10306 this[offset + 2] = (value >>> 8)
10307 this[offset + 3] = value
10308 } else {
10309 objectWriteUInt32(this, value, offset, false)
10310 }
10311 return offset + 4
10312 }
10313
10314 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
10315 value = +value
10316 offset = offset | 0
10317 if (!noAssert) {
10318 var limit = Math.pow(2, 8 * byteLength - 1)
10319
10320 checkInt(this, value, offset, byteLength, limit - 1, -limit)
10321 }
10322
10323 var i = 0
10324 var mul = 1
10325 var sub = value < 0 ? 1 : 0
10326 this[offset] = value & 0xFF
10327 while (++i < byteLength && (mul *= 0x100)) {
10328 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
10329 }
10330
10331 return offset + byteLength
10332 }
10333
10334 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
10335 value = +value
10336 offset = offset | 0
10337 if (!noAssert) {
10338 var limit = Math.pow(2, 8 * byteLength - 1)
10339
10340 checkInt(this, value, offset, byteLength, limit - 1, -limit)
10341 }
10342
10343 var i = byteLength - 1
10344 var mul = 1
10345 var sub = value < 0 ? 1 : 0
10346 this[offset + i] = value & 0xFF
10347 while (--i >= 0 && (mul *= 0x100)) {
10348 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
10349 }
10350
10351 return offset + byteLength
10352 }
10353
10354 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
10355 value = +value
10356 offset = offset | 0
10357 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
10358 if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
10359 if (value < 0) value = 0xff + value + 1
10360 this[offset] = value
10361 return offset + 1
10362 }
10363
10364 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
10365 value = +value
10366 offset = offset | 0
10367 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
10368 if (Buffer.TYPED_ARRAY_SUPPORT) {
10369 this[offset] = value
10370 this[offset + 1] = (value >>> 8)
10371 } else {
10372 objectWriteUInt16(this, value, offset, true)
10373 }
10374 return offset + 2
10375 }
10376
10377 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
10378 value = +value
10379 offset = offset | 0
10380 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
10381 if (Buffer.TYPED_ARRAY_SUPPORT) {
10382 this[offset] = (value >>> 8)
10383 this[offset + 1] = value
10384 } else {
10385 objectWriteUInt16(this, value, offset, false)
10386 }
10387 return offset + 2
10388 }
10389
10390 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
10391 value = +value
10392 offset = offset | 0
10393 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
10394 if (Buffer.TYPED_ARRAY_SUPPORT) {
10395 this[offset] = value
10396 this[offset + 1] = (value >>> 8)
10397 this[offset + 2] = (value >>> 16)
10398 this[offset + 3] = (value >>> 24)
10399 } else {
10400 objectWriteUInt32(this, value, offset, true)
10401 }
10402 return offset + 4
10403 }
10404
10405 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
10406 value = +value
10407 offset = offset | 0
10408 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
10409 if (value < 0) value = 0xffffffff + value + 1
10410 if (Buffer.TYPED_ARRAY_SUPPORT) {
10411 this[offset] = (value >>> 24)
10412 this[offset + 1] = (value >>> 16)
10413 this[offset + 2] = (value >>> 8)
10414 this[offset + 3] = value
10415 } else {
10416 objectWriteUInt32(this, value, offset, false)
10417 }
10418 return offset + 4
10419 }
10420
10421 function checkIEEE754 (buf, value, offset, ext, max, min) {
10422 if (value > max || value < min) throw new RangeError('value is out of bounds')
10423 if (offset + ext > buf.length) throw new RangeError('index out of range')
10424 if (offset < 0) throw new RangeError('index out of range')
10425 }
10426
10427 function writeFloat (buf, value, offset, littleEndian, noAssert) {
10428 if (!noAssert) {
10429 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
10430 }
10431 ieee754.write(buf, value, offset, littleEndian, 23, 4)
10432 return offset + 4
10433 }
10434
10435 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
10436 return writeFloat(this, value, offset, true, noAssert)
10437 }
10438
10439 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
10440 return writeFloat(this, value, offset, false, noAssert)
10441 }
10442
10443 function writeDouble (buf, value, offset, littleEndian, noAssert) {
10444 if (!noAssert) {
10445 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
10446 }
10447 ieee754.write(buf, value, offset, littleEndian, 52, 8)
10448 return offset + 8
10449 }
10450
10451 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
10452 return writeDouble(this, value, offset, true, noAssert)
10453 }
10454
10455 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
10456 return writeDouble(this, value, offset, false, noAssert)
10457 }
10458
10459 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
10460 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
10461 if (!start) start = 0
10462 if (!end && end !== 0) end = this.length
10463 if (targetStart >= target.length) targetStart = target.length
10464 if (!targetStart) targetStart = 0
10465 if (end > 0 && end < start) end = start
10466
10467 // Copy 0 bytes; we're done
10468 if (end === start) return 0
10469 if (target.length === 0 || this.length === 0) return 0
10470
10471 // Fatal error conditions
10472 if (targetStart < 0) {
10473 throw new RangeError('targetStart out of bounds')
10474 }
10475 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
10476 if (end < 0) throw new RangeError('sourceEnd out of bounds')
10477
10478 // Are we oob?
10479 if (end > this.length) end = this.length
10480 if (target.length - targetStart < end - start) {
10481 end = target.length - targetStart + start
10482 }
10483
10484 var len = end - start
10485 var i
10486
10487 if (this === target && start < targetStart && targetStart < end) {
10488 // descending copy from end
10489 for (i = len - 1; i >= 0; i--) {
10490 target[i + targetStart] = this[i + start]
10491 }
10492 } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {
10493 // ascending copy from start
10494 for (i = 0; i < len; i++) {
10495 target[i + targetStart] = this[i + start]
10496 }
10497 } else {
10498 target._set(this.subarray(start, start + len), targetStart)
10499 }
10500
10501 return len
10502 }
10503
10504 // fill(value, start=0, end=buffer.length)
10505 Buffer.prototype.fill = function fill (value, start, end) {
10506 if (!value) value = 0
10507 if (!start) start = 0
10508 if (!end) end = this.length
10509
10510 if (end < start) throw new RangeError('end < start')
10511
10512 // Fill 0 bytes; we're done
10513 if (end === start) return
10514 if (this.length === 0) return
10515
10516 if (start < 0 || start >= this.length) throw new RangeError('start out of bounds')
10517 if (end < 0 || end > this.length) throw new RangeError('end out of bounds')
10518
10519 var i
10520 if (typeof value === 'number') {
10521 for (i = start; i < end; i++) {
10522 this[i] = value
10523 }
10524 } else {
10525 var bytes = utf8ToBytes(value.toString())
10526 var len = bytes.length
10527 for (i = start; i < end; i++) {
10528 this[i] = bytes[i % len]
10529 }
10530 }
10531
10532 return this
10533 }
10534
10535 /**
10536 * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance.
10537 * Added in Node 0.12. Only available in browsers that support ArrayBuffer.
10538 */
10539 Buffer.prototype.toArrayBuffer = function toArrayBuffer () {
10540 if (typeof Uint8Array !== 'undefined') {
10541 if (Buffer.TYPED_ARRAY_SUPPORT) {
10542 return (new Buffer(this)).buffer
10543 } else {
10544 var buf = new Uint8Array(this.length)
10545 for (var i = 0, len = buf.length; i < len; i += 1) {
10546 buf[i] = this[i]
10547 }
10548 return buf.buffer
10549 }
10550 } else {
10551 throw new TypeError('Buffer.toArrayBuffer not supported in this browser')
10552 }
10553 }
10554
10555 // HELPER FUNCTIONS
10556 // ================
10557
10558 var BP = Buffer.prototype
10559
10560 /**
10561 * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods
10562 */
10563 Buffer._augment = function _augment (arr) {
10564 arr.constructor = Buffer
10565 arr._isBuffer = true
10566
10567 // save reference to original Uint8Array set method before overwriting
10568 arr._set = arr.set
10569
10570 // deprecated
10571 arr.get = BP.get
10572 arr.set = BP.set
10573
10574 arr.write = BP.write
10575 arr.toString = BP.toString
10576 arr.toLocaleString = BP.toString
10577 arr.toJSON = BP.toJSON
10578 arr.equals = BP.equals
10579 arr.compare = BP.compare
10580 arr.indexOf = BP.indexOf
10581 arr.copy = BP.copy
10582 arr.slice = BP.slice
10583 arr.readUIntLE = BP.readUIntLE
10584 arr.readUIntBE = BP.readUIntBE
10585 arr.readUInt8 = BP.readUInt8
10586 arr.readUInt16LE = BP.readUInt16LE
10587 arr.readUInt16BE = BP.readUInt16BE
10588 arr.readUInt32LE = BP.readUInt32LE
10589 arr.readUInt32BE = BP.readUInt32BE
10590 arr.readIntLE = BP.readIntLE
10591 arr.readIntBE = BP.readIntBE
10592 arr.readInt8 = BP.readInt8
10593 arr.readInt16LE = BP.readInt16LE
10594 arr.readInt16BE = BP.readInt16BE
10595 arr.readInt32LE = BP.readInt32LE
10596 arr.readInt32BE = BP.readInt32BE
10597 arr.readFloatLE = BP.readFloatLE
10598 arr.readFloatBE = BP.readFloatBE
10599 arr.readDoubleLE = BP.readDoubleLE
10600 arr.readDoubleBE = BP.readDoubleBE
10601 arr.writeUInt8 = BP.writeUInt8
10602 arr.writeUIntLE = BP.writeUIntLE
10603 arr.writeUIntBE = BP.writeUIntBE
10604 arr.writeUInt16LE = BP.writeUInt16LE
10605 arr.writeUInt16BE = BP.writeUInt16BE
10606 arr.writeUInt32LE = BP.writeUInt32LE
10607 arr.writeUInt32BE = BP.writeUInt32BE
10608 arr.writeIntLE = BP.writeIntLE
10609 arr.writeIntBE = BP.writeIntBE
10610 arr.writeInt8 = BP.writeInt8
10611 arr.writeInt16LE = BP.writeInt16LE
10612 arr.writeInt16BE = BP.writeInt16BE
10613 arr.writeInt32LE = BP.writeInt32LE
10614 arr.writeInt32BE = BP.writeInt32BE
10615 arr.writeFloatLE = BP.writeFloatLE
10616 arr.writeFloatBE = BP.writeFloatBE
10617 arr.writeDoubleLE = BP.writeDoubleLE
10618 arr.writeDoubleBE = BP.writeDoubleBE
10619 arr.fill = BP.fill
10620 arr.inspect = BP.inspect
10621 arr.toArrayBuffer = BP.toArrayBuffer
10622
10623 return arr
10624 }
10625
10626 var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g
10627
10628 function base64clean (str) {
10629 // Node strips out invalid characters like \n and \t from the string, base64-js does not
10630 str = stringtrim(str).replace(INVALID_BASE64_RE, '')
10631 // Node converts strings with length < 2 to ''
10632 if (str.length < 2) return ''
10633 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
10634 while (str.length % 4 !== 0) {
10635 str = str + '='
10636 }
10637 return str
10638 }
10639
10640 function stringtrim (str) {
10641 if (str.trim) return str.trim()
10642 return str.replace(/^\s+|\s+$/g, '')
10643 }
10644
10645 function toHex (n) {
10646 if (n < 16) return '0' + n.toString(16)
10647 return n.toString(16)
10648 }
10649
10650 function utf8ToBytes (string, units) {
10651 units = units || Infinity
10652 var codePoint
10653 var length = string.length
10654 var leadSurrogate = null
10655 var bytes = []
10656
10657 for (var i = 0; i < length; i++) {
10658 codePoint = string.charCodeAt(i)
10659
10660 // is surrogate component
10661 if (codePoint > 0xD7FF && codePoint < 0xE000) {
10662 // last char was a lead
10663 if (!leadSurrogate) {
10664 // no lead yet
10665 if (codePoint > 0xDBFF) {
10666 // unexpected trail
10667 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
10668 continue
10669
10670 } else if (i + 1 === length) {
10671 // unpaired lead
10672 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
10673 continue
10674 }
10675
10676 // valid lead
10677 leadSurrogate = codePoint
10678
10679 continue
10680 }
10681
10682 // 2 leads in a row
10683 if (codePoint < 0xDC00) {
10684 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
10685 leadSurrogate = codePoint
10686 continue
10687 }
10688
10689 // valid surrogate pair
10690 codePoint = leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00 | 0x10000
10691
10692 } else if (leadSurrogate) {
10693 // valid bmp char, but last char was a lead
10694 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
10695 }
10696
10697 leadSurrogate = null
10698
10699 // encode utf8
10700 if (codePoint < 0x80) {
10701 if ((units -= 1) < 0) break
10702 bytes.push(codePoint)
10703 } else if (codePoint < 0x800) {
10704 if ((units -= 2) < 0) break
10705 bytes.push(
10706 codePoint >> 0x6 | 0xC0,
10707 codePoint & 0x3F | 0x80
10708 )
10709 } else if (codePoint < 0x10000) {
10710 if ((units -= 3) < 0) break
10711 bytes.push(
10712 codePoint >> 0xC | 0xE0,
10713 codePoint >> 0x6 & 0x3F | 0x80,
10714 codePoint & 0x3F | 0x80
10715 )
10716 } else if (codePoint < 0x110000) {
10717 if ((units -= 4) < 0) break
10718 bytes.push(
10719 codePoint >> 0x12 | 0xF0,
10720 codePoint >> 0xC & 0x3F | 0x80,
10721 codePoint >> 0x6 & 0x3F | 0x80,
10722 codePoint & 0x3F | 0x80
10723 )
10724 } else {
10725 throw new Error('Invalid code point')
10726 }
10727 }
10728
10729 return bytes
10730 }
10731
10732 function asciiToBytes (str) {
10733 var byteArray = []
10734 for (var i = 0; i < str.length; i++) {
10735 // Node's code seems to be doing this and not & 0x7F..
10736 byteArray.push(str.charCodeAt(i) & 0xFF)
10737 }
10738 return byteArray
10739 }
10740
10741 function utf16leToBytes (str, units) {
10742 var c, hi, lo
10743 var byteArray = []
10744 for (var i = 0; i < str.length; i++) {
10745 if ((units -= 2) < 0) break
10746
10747 c = str.charCodeAt(i)
10748 hi = c >> 8
10749 lo = c % 256
10750 byteArray.push(lo)
10751 byteArray.push(hi)
10752 }
10753
10754 return byteArray
10755 }
10756
10757 function base64ToBytes (str) {
10758 return base64.toByteArray(base64clean(str))
10759 }
10760
10761 function blitBuffer (src, dst, offset, length) {
10762 for (var i = 0; i < length; i++) {
10763 if ((i + offset >= dst.length) || (i >= src.length)) break
10764 dst[i + offset] = src[i]
10765 }
10766 return i
10767 }
10768
10769 },{"base64-js":8,"ieee754":9,"is-array":10}],8:[function(require,module,exports){
10770 var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
10771
10772 ;(function (exports) {
10773 'use strict';
10774
10775 var Arr = (typeof Uint8Array !== 'undefined')
10776 ? Uint8Array
10777 : Array
10778
10779 var PLUS = '+'.charCodeAt(0)
10780 var SLASH = '/'.charCodeAt(0)
10781 var NUMBER = '0'.charCodeAt(0)
10782 var LOWER = 'a'.charCodeAt(0)
10783 var UPPER = 'A'.charCodeAt(0)
10784 var PLUS_URL_SAFE = '-'.charCodeAt(0)
10785 var SLASH_URL_SAFE = '_'.charCodeAt(0)
10786
10787 function decode (elt) {
10788 var code = elt.charCodeAt(0)
10789 if (code === PLUS ||
10790 code === PLUS_URL_SAFE)
10791 return 62 // '+'
10792 if (code === SLASH ||
10793 code === SLASH_URL_SAFE)
10794 return 63 // '/'
10795 if (code < NUMBER)
10796 return -1 //no match
10797 if (code < NUMBER + 10)
10798 return code - NUMBER + 26 + 26
10799 if (code < UPPER + 26)
10800 return code - UPPER
10801 if (code < LOWER + 26)
10802 return code - LOWER + 26
10803 }
10804
10805 function b64ToByteArray (b64) {
10806 var i, j, l, tmp, placeHolders, arr
10807
10808 if (b64.length % 4 > 0) {
10809 throw new Error('Invalid string. Length must be a multiple of 4')
10810 }
10811
10812 // the number of equal signs (place holders)
10813 // if there are two placeholders, than the two characters before it
10814 // represent one byte
10815 // if there is only one, then the three characters before it represent 2 bytes
10816 // this is just a cheap hack to not do indexOf twice
10817 var len = b64.length
10818 placeHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0
10819
10820 // base64 is 4/3 + up to two characters of the original data
10821 arr = new Arr(b64.length * 3 / 4 - placeHolders)
10822
10823 // if there are placeholders, only get up to the last complete 4 chars
10824 l = placeHolders > 0 ? b64.length - 4 : b64.length
10825
10826 var L = 0
10827
10828 function push (v) {
10829 arr[L++] = v
10830 }
10831
10832 for (i = 0, j = 0; i < l; i += 4, j += 3) {
10833 tmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3))
10834 push((tmp & 0xFF0000) >> 16)
10835 push((tmp & 0xFF00) >> 8)
10836 push(tmp & 0xFF)
10837 }
10838
10839 if (placeHolders === 2) {
10840 tmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4)
10841 push(tmp & 0xFF)
10842 } else if (placeHolders === 1) {
10843 tmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2)
10844 push((tmp >> 8) & 0xFF)
10845 push(tmp & 0xFF)
10846 }
10847
10848 return arr
10849 }
10850
10851 function uint8ToBase64 (uint8) {
10852 var i,
10853 extraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes
10854 output = "",
10855 temp, length
10856
10857 function encode (num) {
10858 return lookup.charAt(num)
10859 }
10860
10861 function tripletToBase64 (num) {
10862 return encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F)
10863 }
10864
10865 // go through the array every three bytes, we'll deal with trailing stuff later
10866 for (i = 0, length = uint8.length - extraBytes; i < length; i += 3) {
10867 temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
10868 output += tripletToBase64(temp)
10869 }
10870
10871 // pad the end with zeros, but make sure to not forget the extra bytes
10872 switch (extraBytes) {
10873 case 1:
10874 temp = uint8[uint8.length - 1]
10875 output += encode(temp >> 2)
10876 output += encode((temp << 4) & 0x3F)
10877 output += '=='
10878 break
10879 case 2:
10880 temp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1])
10881 output += encode(temp >> 10)
10882 output += encode((temp >> 4) & 0x3F)
10883 output += encode((temp << 2) & 0x3F)
10884 output += '='
10885 break
10886 }
10887
10888 return output
10889 }
10890
10891 exports.toByteArray = b64ToByteArray
10892 exports.fromByteArray = uint8ToBase64
10893 }(typeof exports === 'undefined' ? (this.base64js = {}) : exports))
10894
10895 },{}],9:[function(require,module,exports){
10896 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
10897 var e, m
10898 var eLen = nBytes * 8 - mLen - 1
10899 var eMax = (1 << eLen) - 1
10900 var eBias = eMax >> 1
10901 var nBits = -7
10902 var i = isLE ? (nBytes - 1) : 0
10903 var d = isLE ? -1 : 1
10904 var s = buffer[offset + i]
10905
10906 i += d
10907
10908 e = s & ((1 << (-nBits)) - 1)
10909 s >>= (-nBits)
10910 nBits += eLen
10911 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
10912
10913 m = e & ((1 << (-nBits)) - 1)
10914 e >>= (-nBits)
10915 nBits += mLen
10916 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
10917
10918 if (e === 0) {
10919 e = 1 - eBias
10920 } else if (e === eMax) {
10921 return m ? NaN : ((s ? -1 : 1) * Infinity)
10922 } else {
10923 m = m + Math.pow(2, mLen)
10924 e = e - eBias
10925 }
10926 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
10927 }
10928
10929 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
10930 var e, m, c
10931 var eLen = nBytes * 8 - mLen - 1
10932 var eMax = (1 << eLen) - 1
10933 var eBias = eMax >> 1
10934 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
10935 var i = isLE ? 0 : (nBytes - 1)
10936 var d = isLE ? 1 : -1
10937 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
10938
10939 value = Math.abs(value)
10940
10941 if (isNaN(value) || value === Infinity) {
10942 m = isNaN(value) ? 1 : 0
10943 e = eMax
10944 } else {
10945 e = Math.floor(Math.log(value) / Math.LN2)
10946 if (value * (c = Math.pow(2, -e)) < 1) {
10947 e--
10948 c *= 2
10949 }
10950 if (e + eBias >= 1) {
10951 value += rt / c
10952 } else {
10953 value += rt * Math.pow(2, 1 - eBias)
10954 }
10955 if (value * c >= 2) {
10956 e++
10957 c /= 2
10958 }
10959
10960 if (e + eBias >= eMax) {
10961 m = 0
10962 e = eMax
10963 } else if (e + eBias >= 1) {
10964 m = (value * c - 1) * Math.pow(2, mLen)
10965 e = e + eBias
10966 } else {
10967 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
10968 e = 0
10969 }
10970 }
10971
10972 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
10973
10974 e = (e << mLen) | m
10975 eLen += mLen
10976 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
10977
10978 buffer[offset + i - d] |= s * 128
10979 }
10980
10981 },{}],10:[function(require,module,exports){
10982
10983 /**
10984 * isArray
10985 */
10986
10987 var isArray = Array.isArray;
10988
10989 /**
10990 * toString
10991 */
10992
10993 var str = Object.prototype.toString;
10994
10995 /**
10996 * Whether or not the given `val`
10997 * is an array.
10998 *
10999 * example:
11000 *
11001 * isArray([]);
11002 * // > true
11003 * isArray(arguments);
11004 * // > false
11005 * isArray('');
11006 * // > false
11007 *
11008 * @param {mixed} val
11009 * @return {bool}
11010 */
11011
11012 module.exports = isArray || function (val) {
11013 return !! val && '[object Array]' == str.call(val);
11014 };
11015
11016 },{}],11:[function(require,module,exports){
11017 // Copyright Joyent, Inc. and other Node contributors.
11018 //
11019 // Permission is hereby granted, free of charge, to any person obtaining a
11020 // copy of this software and associated documentation files (the
11021 // "Software"), to deal in the Software without restriction, including
11022 // without limitation the rights to use, copy, modify, merge, publish,
11023 // distribute, sublicense, and/or sell copies of the Software, and to permit
11024 // persons to whom the Software is furnished to do so, subject to the
11025 // following conditions:
11026 //
11027 // The above copyright notice and this permission notice shall be included
11028 // in all copies or substantial portions of the Software.
11029 //
11030 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11031 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11032 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11033 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11034 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11035 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11036 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11037
11038 function EventEmitter() {
11039 this._events = this._events || {};
11040 this._maxListeners = this._maxListeners || undefined;
11041 }
11042 module.exports = EventEmitter;
11043
11044 // Backwards-compat with node 0.10.x
11045 EventEmitter.EventEmitter = EventEmitter;
11046
11047 EventEmitter.prototype._events = undefined;
11048 EventEmitter.prototype._maxListeners = undefined;
11049
11050 // By default EventEmitters will print a warning if more than 10 listeners are
11051 // added to it. This is a useful default which helps finding memory leaks.
11052 EventEmitter.defaultMaxListeners = 10;
11053
11054 // Obviously not all Emitters should be limited to 10. This function allows
11055 // that to be increased. Set to zero for unlimited.
11056 EventEmitter.prototype.setMaxListeners = function(n) {
11057 if (!isNumber(n) || n < 0 || isNaN(n))
11058 throw TypeError('n must be a positive number');
11059 this._maxListeners = n;
11060 return this;
11061 };
11062
11063 EventEmitter.prototype.emit = function(type) {
11064 var er, handler, len, args, i, listeners;
11065
11066 if (!this._events)
11067 this._events = {};
11068
11069 // If there is no 'error' event listener then throw.
11070 if (type === 'error') {
11071 if (!this._events.error ||
11072 (isObject(this._events.error) && !this._events.error.length)) {
11073 er = arguments[1];
11074 if (er instanceof Error) {
11075 throw er; // Unhandled 'error' event
11076 }
11077 throw TypeError('Uncaught, unspecified "error" event.');
11078 }
11079 }
11080
11081 handler = this._events[type];
11082
11083 if (isUndefined(handler))
11084 return false;
11085
11086 if (isFunction(handler)) {
11087 switch (arguments.length) {
11088 // fast cases
11089 case 1:
11090 handler.call(this);
11091 break;
11092 case 2:
11093 handler.call(this, arguments[1]);
11094 break;
11095 case 3:
11096 handler.call(this, arguments[1], arguments[2]);
11097 break;
11098 // slower
11099 default:
11100 len = arguments.length;
11101 args = new Array(len - 1);
11102 for (i = 1; i < len; i++)
11103 args[i - 1] = arguments[i];
11104 handler.apply(this, args);
11105 }
11106 } else if (isObject(handler)) {
11107 len = arguments.length;
11108 args = new Array(len - 1);
11109 for (i = 1; i < len; i++)
11110 args[i - 1] = arguments[i];
11111
11112 listeners = handler.slice();
11113 len = listeners.length;
11114 for (i = 0; i < len; i++)
11115 listeners[i].apply(this, args);
11116 }
11117
11118 return true;
11119 };
11120
11121 EventEmitter.prototype.addListener = function(type, listener) {
11122 var m;
11123
11124 if (!isFunction(listener))
11125 throw TypeError('listener must be a function');
11126
11127 if (!this._events)
11128 this._events = {};
11129
11130 // To avoid recursion in the case that type === "newListener"! Before
11131 // adding it to the listeners, first emit "newListener".
11132 if (this._events.newListener)
11133 this.emit('newListener', type,
11134 isFunction(listener.listener) ?
11135 listener.listener : listener);
11136
11137 if (!this._events[type])
11138 // Optimize the case of one listener. Don't need the extra array object.
11139 this._events[type] = listener;
11140 else if (isObject(this._events[type]))
11141 // If we've already got an array, just append.
11142 this._events[type].push(listener);
11143 else
11144 // Adding the second element, need to change to array.
11145 this._events[type] = [this._events[type], listener];
11146
11147 // Check for listener leak
11148 if (isObject(this._events[type]) && !this._events[type].warned) {
11149 var m;
11150 if (!isUndefined(this._maxListeners)) {
11151 m = this._maxListeners;
11152 } else {
11153 m = EventEmitter.defaultMaxListeners;
11154 }
11155
11156 if (m && m > 0 && this._events[type].length > m) {
11157 this._events[type].warned = true;
11158 console.error('(node) warning: possible EventEmitter memory ' +
11159 'leak detected. %d listeners added. ' +
11160 'Use emitter.setMaxListeners() to increase limit.',
11161 this._events[type].length);
11162 if (typeof console.trace === 'function') {
11163 // not supported in IE 10
11164 console.trace();
11165 }
11166 }
11167 }
11168
11169 return this;
11170 };
11171
11172 EventEmitter.prototype.on = EventEmitter.prototype.addListener;
11173
11174 EventEmitter.prototype.once = function(type, listener) {
11175 if (!isFunction(listener))
11176 throw TypeError('listener must be a function');
11177
11178 var fired = false;
11179
11180 function g() {
11181 this.removeListener(type, g);
11182
11183 if (!fired) {
11184 fired = true;
11185 listener.apply(this, arguments);
11186 }
11187 }
11188
11189 g.listener = listener;
11190 this.on(type, g);
11191
11192 return this;
11193 };
11194
11195 // emits a 'removeListener' event iff the listener was removed
11196 EventEmitter.prototype.removeListener = function(type, listener) {
11197 var list, position, length, i;
11198
11199 if (!isFunction(listener))
11200 throw TypeError('listener must be a function');
11201
11202 if (!this._events || !this._events[type])
11203 return this;
11204
11205 list = this._events[type];
11206 length = list.length;
11207 position = -1;
11208
11209 if (list === listener ||
11210 (isFunction(list.listener) && list.listener === listener)) {
11211 delete this._events[type];
11212 if (this._events.removeListener)
11213 this.emit('removeListener', type, listener);
11214
11215 } else if (isObject(list)) {
11216 for (i = length; i-- > 0;) {
11217 if (list[i] === listener ||
11218 (list[i].listener && list[i].listener === listener)) {
11219 position = i;
11220 break;
11221 }
11222 }
11223
11224 if (position < 0)
11225 return this;
11226
11227 if (list.length === 1) {
11228 list.length = 0;
11229 delete this._events[type];
11230 } else {
11231 list.splice(position, 1);
11232 }
11233
11234 if (this._events.removeListener)
11235 this.emit('removeListener', type, listener);
11236 }
11237
11238 return this;
11239 };
11240
11241 EventEmitter.prototype.removeAllListeners = function(type) {
11242 var key, listeners;
11243
11244 if (!this._events)
11245 return this;
11246
11247 // not listening for removeListener, no need to emit
11248 if (!this._events.removeListener) {
11249 if (arguments.length === 0)
11250 this._events = {};
11251 else if (this._events[type])
11252 delete this._events[type];
11253 return this;
11254 }
11255
11256 // emit removeListener for all listeners on all events
11257 if (arguments.length === 0) {
11258 for (key in this._events) {
11259 if (key === 'removeListener') continue;
11260 this.removeAllListeners(key);
11261 }
11262 this.removeAllListeners('removeListener');
11263 this._events = {};
11264 return this;
11265 }
11266
11267 listeners = this._events[type];
11268
11269 if (isFunction(listeners)) {
11270 this.removeListener(type, listeners);
11271 } else {
11272 // LIFO order
11273 while (listeners.length)
11274 this.removeListener(type, listeners[listeners.length - 1]);
11275 }
11276 delete this._events[type];
11277
11278 return this;
11279 };
11280
11281 EventEmitter.prototype.listeners = function(type) {
11282 var ret;
11283 if (!this._events || !this._events[type])
11284 ret = [];
11285 else if (isFunction(this._events[type]))
11286 ret = [this._events[type]];
11287 else
11288 ret = this._events[type].slice();
11289 return ret;
11290 };
11291
11292 EventEmitter.listenerCount = function(emitter, type) {
11293 var ret;
11294 if (!emitter._events || !emitter._events[type])
11295 ret = 0;
11296 else if (isFunction(emitter._events[type]))
11297 ret = 1;
11298 else
11299 ret = emitter._events[type].length;
11300 return ret;
11301 };
11302
11303 function isFunction(arg) {
11304 return typeof arg === 'function';
11305 }
11306
11307 function isNumber(arg) {
11308 return typeof arg === 'number';
11309 }
11310
11311 function isObject(arg) {
11312 return typeof arg === 'object' && arg !== null;
11313 }
11314
11315 function isUndefined(arg) {
11316 return arg === void 0;
11317 }
11318
11319 },{}],12:[function(require,module,exports){
11320 if (typeof Object.create === 'function') {
11321 // implementation from standard node.js 'util' module
11322 module.exports = function inherits(ctor, superCtor) {
11323 ctor.super_ = superCtor
11324 ctor.prototype = Object.create(superCtor.prototype, {
11325 constructor: {
11326 value: ctor,
11327 enumerable: false,
11328 writable: true,
11329 configurable: true
11330 }
11331 });
11332 };
11333 } else {
11334 // old school shim for old browsers
11335 module.exports = function inherits(ctor, superCtor) {
11336 ctor.super_ = superCtor
11337 var TempCtor = function () {}
11338 TempCtor.prototype = superCtor.prototype
11339 ctor.prototype = new TempCtor()
11340 ctor.prototype.constructor = ctor
11341 }
11342 }
11343
11344 },{}],13:[function(require,module,exports){
11345 module.exports = Array.isArray || function (arr) {
11346 return Object.prototype.toString.call(arr) == '[object Array]';
11347 };
11348
11349 },{}],14:[function(require,module,exports){
11350 // shim for using process in browser
11351
11352 var process = module.exports = {};
11353 var queue = [];
11354 var draining = false;
11355 var currentQueue;
11356 var queueIndex = -1;
11357
11358 function cleanUpNextTick() {
11359 draining = false;
11360 if (currentQueue.length) {
11361 queue = currentQueue.concat(queue);
11362 } else {
11363 queueIndex = -1;
11364 }
11365 if (queue.length) {
11366 drainQueue();
11367 }
11368 }
11369
11370 function drainQueue() {
11371 if (draining) {
11372 return;
11373 }
11374 var timeout = setTimeout(cleanUpNextTick);
11375 draining = true;
11376
11377 var len = queue.length;
11378 while(len) {
11379 currentQueue = queue;
11380 queue = [];
11381 while (++queueIndex < len) {
11382 currentQueue[queueIndex].run();
11383 }
11384 queueIndex = -1;
11385 len = queue.length;
11386 }
11387 currentQueue = null;
11388 draining = false;
11389 clearTimeout(timeout);
11390 }
11391
11392 process.nextTick = function (fun) {
11393 var args = new Array(arguments.length - 1);
11394 if (arguments.length > 1) {
11395 for (var i = 1; i < arguments.length; i++) {
11396 args[i - 1] = arguments[i];
11397 }
11398 }
11399 queue.push(new Item(fun, args));
11400 if (queue.length === 1 && !draining) {
11401 setTimeout(drainQueue, 0);
11402 }
11403 };
11404
11405 // v8 likes predictible objects
11406 function Item(fun, array) {
11407 this.fun = fun;
11408 this.array = array;
11409 }
11410 Item.prototype.run = function () {
11411 this.fun.apply(null, this.array);
11412 };
11413 process.title = 'browser';
11414 process.browser = true;
11415 process.env = {};
11416 process.argv = [];
11417 process.version = ''; // empty string to avoid regexp issues
11418 process.versions = {};
11419
11420 function noop() {}
11421
11422 process.on = noop;
11423 process.addListener = noop;
11424 process.once = noop;
11425 process.off = noop;
11426 process.removeListener = noop;
11427 process.removeAllListeners = noop;
11428 process.emit = noop;
11429
11430 process.binding = function (name) {
11431 throw new Error('process.binding is not supported');
11432 };
11433
11434 // TODO(shtylman)
11435 process.cwd = function () { return '/' };
11436 process.chdir = function (dir) {
11437 throw new Error('process.chdir is not supported');
11438 };
11439 process.umask = function() { return 0; };
11440
11441 },{}],15:[function(require,module,exports){
11442 module.exports = require("./lib/_stream_duplex.js")
11443
11444 },{"./lib/_stream_duplex.js":16}],16:[function(require,module,exports){
11445 (function (process){
11446 // Copyright Joyent, Inc. and other Node contributors.
11447 //
11448 // Permission is hereby granted, free of charge, to any person obtaining a
11449 // copy of this software and associated documentation files (the
11450 // "Software"), to deal in the Software without restriction, including
11451 // without limitation the rights to use, copy, modify, merge, publish,
11452 // distribute, sublicense, and/or sell copies of the Software, and to permit
11453 // persons to whom the Software is furnished to do so, subject to the
11454 // following conditions:
11455 //
11456 // The above copyright notice and this permission notice shall be included
11457 // in all copies or substantial portions of the Software.
11458 //
11459 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11460 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11461 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11462 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11463 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11464 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11465 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11466
11467 // a duplex stream is just a stream that is both readable and writable.
11468 // Since JS doesn't have multiple prototypal inheritance, this class
11469 // prototypally inherits from Readable, and then parasitically from
11470 // Writable.
11471
11472 module.exports = Duplex;
11473
11474 /*<replacement>*/
11475 var objectKeys = Object.keys || function (obj) {
11476 var keys = [];
11477 for (var key in obj) keys.push(key);
11478 return keys;
11479 }
11480 /*</replacement>*/
11481
11482
11483 /*<replacement>*/
11484 var util = require('core-util-is');
11485 util.inherits = require('inherits');
11486 /*</replacement>*/
11487
11488 var Readable = require('./_stream_readable');
11489 var Writable = require('./_stream_writable');
11490
11491 util.inherits(Duplex, Readable);
11492
11493 forEach(objectKeys(Writable.prototype), function(method) {
11494 if (!Duplex.prototype[method])
11495 Duplex.prototype[method] = Writable.prototype[method];
11496 });
11497
11498 function Duplex(options) {
11499 if (!(this instanceof Duplex))
11500 return new Duplex(options);
11501
11502 Readable.call(this, options);
11503 Writable.call(this, options);
11504
11505 if (options && options.readable === false)
11506 this.readable = false;
11507
11508 if (options && options.writable === false)
11509 this.writable = false;
11510
11511 this.allowHalfOpen = true;
11512 if (options && options.allowHalfOpen === false)
11513 this.allowHalfOpen = false;
11514
11515 this.once('end', onend);
11516 }
11517
11518 // the no-half-open enforcer
11519 function onend() {
11520 // if we allow half-open state, or if the writable side ended,
11521 // then we're ok.
11522 if (this.allowHalfOpen || this._writableState.ended)
11523 return;
11524
11525 // no more data can be written.
11526 // But allow more writes to happen in this tick.
11527 process.nextTick(this.end.bind(this));
11528 }
11529
11530 function forEach (xs, f) {
11531 for (var i = 0, l = xs.length; i < l; i++) {
11532 f(xs[i], i);
11533 }
11534 }
11535
11536 }).call(this,require('_process'))
11537 },{"./_stream_readable":18,"./_stream_writable":20,"_process":14,"core-util-is":21,"inherits":12}],17:[function(require,module,exports){
11538 // Copyright Joyent, Inc. and other Node contributors.
11539 //
11540 // Permission is hereby granted, free of charge, to any person obtaining a
11541 // copy of this software and associated documentation files (the
11542 // "Software"), to deal in the Software without restriction, including
11543 // without limitation the rights to use, copy, modify, merge, publish,
11544 // distribute, sublicense, and/or sell copies of the Software, and to permit
11545 // persons to whom the Software is furnished to do so, subject to the
11546 // following conditions:
11547 //
11548 // The above copyright notice and this permission notice shall be included
11549 // in all copies or substantial portions of the Software.
11550 //
11551 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11552 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11553 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11554 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11555 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11556 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11557 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11558
11559 // a passthrough stream.
11560 // basically just the most minimal sort of Transform stream.
11561 // Every written chunk gets output as-is.
11562
11563 module.exports = PassThrough;
11564
11565 var Transform = require('./_stream_transform');
11566
11567 /*<replacement>*/
11568 var util = require('core-util-is');
11569 util.inherits = require('inherits');
11570 /*</replacement>*/
11571
11572 util.inherits(PassThrough, Transform);
11573
11574 function PassThrough(options) {
11575 if (!(this instanceof PassThrough))
11576 return new PassThrough(options);
11577
11578 Transform.call(this, options);
11579 }
11580
11581 PassThrough.prototype._transform = function(chunk, encoding, cb) {
11582 cb(null, chunk);
11583 };
11584
11585 },{"./_stream_transform":19,"core-util-is":21,"inherits":12}],18:[function(require,module,exports){
11586 (function (process){
11587 // Copyright Joyent, Inc. and other Node contributors.
11588 //
11589 // Permission is hereby granted, free of charge, to any person obtaining a
11590 // copy of this software and associated documentation files (the
11591 // "Software"), to deal in the Software without restriction, including
11592 // without limitation the rights to use, copy, modify, merge, publish,
11593 // distribute, sublicense, and/or sell copies of the Software, and to permit
11594 // persons to whom the Software is furnished to do so, subject to the
11595 // following conditions:
11596 //
11597 // The above copyright notice and this permission notice shall be included
11598 // in all copies or substantial portions of the Software.
11599 //
11600 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
11601 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11602 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
11603 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
11604 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11605 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
11606 // USE OR OTHER DEALINGS IN THE SOFTWARE.
11607
11608 module.exports = Readable;
11609
11610 /*<replacement>*/
11611 var isArray = require('isarray');
11612 /*</replacement>*/
11613
11614
11615 /*<replacement>*/
11616 var Buffer = require('buffer').Buffer;
11617 /*</replacement>*/
11618
11619 Readable.ReadableState = ReadableState;
11620
11621 var EE = require('events').EventEmitter;
11622
11623 /*<replacement>*/
11624 if (!EE.listenerCount) EE.listenerCount = function(emitter, type) {
11625 return emitter.listeners(type).length;
11626 };
11627 /*</replacement>*/
11628
11629 var Stream = require('stream');
11630
11631 /*<replacement>*/
11632 var util = require('core-util-is');
11633 util.inherits = require('inherits');
11634 /*</replacement>*/
11635
11636 var StringDecoder;
11637
11638
11639 /*<replacement>*/
11640 var debug = require('util');
11641 if (debug && debug.debuglog) {
11642 debug = debug.debuglog('stream');
11643 } else {
11644 debug = function () {};
11645 }
11646 /*</replacement>*/
11647
11648
11649 util.inherits(Readable, Stream);
11650
11651 function ReadableState(options, stream) {
11652 var Duplex = require('./_stream_duplex');
11653
11654 options = options || {};
11655
11656 // the point at which it stops calling _read() to fill the buffer
11657 // Note: 0 is a valid value, means "don't call _read preemptively ever"
11658 var hwm = options.highWaterMark;
11659 var defaultHwm = options.objectMode ? 16 : 16 * 1024;
11660 this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm;
11661
11662 // cast to ints.
11663 this.highWaterMark = ~~this.highWaterMark;
11664
11665 this.buffer = [];
11666 this.length = 0;
11667 this.pipes = null;
11668 this.pipesCount = 0;
11669 this.flowing = null;
11670 this.ended = false;
11671 this.endEmitted = false;
11672 this.reading = false;
11673
11674 // a flag to be able to tell if the onwrite cb is called immediately,
11675 // or on a later tick. We set this to true at first, because any
11676 // actions that shouldn't happen until "later" should generally also
11677 // not happen before the first write call.
11678 this.sync = true;
11679
11680 // whenever we return null, then we set a flag to say
11681 // that we're awaiting a 'readable' event emission.
11682 this.needReadable = false;
11683 this.emittedReadable = false;
11684 this.readableListening = false;
11685
11686
11687 // object stream flag. Used to make read(n) ignore n and to
11688 // make all the buffer merging and length checks go away
11689 this.objectMode = !!options.objectMode;
11690
11691 if (stream instanceof Duplex)
11692 this.objectMode = this.objectMode || !!options.readableObjectMode;
11693
11694 // Crypto is kind of old and crusty. Historically, its default string
11695 // encoding is 'binary' so we have to make this configurable.
11696 // Everything else in the universe uses 'utf8', though.
11697 this.defaultEncoding = options.defaultEncoding || 'utf8';
11698
11699 // when piping, we only care about 'readable' events that happen
11700 // after read()ing all the bytes and not getting any pushback.
11701 this.ranOut = false;
11702
11703 // the number of writers that are awaiting a drain event in .pipe()s
11704 this.awaitDrain = 0;
11705
11706 // if true, a maybeReadMore has been scheduled
11707 this.readingMore = false;
11708
11709 this.decoder = null;
11710 this.encoding = null;
11711 if (options.encoding) {
11712 if (!StringDecoder)
11713 StringDecoder = require('string_decoder/').StringDecoder;
11714 this.decoder = new StringDecoder(options.encoding);
11715 this.encoding = options.encoding;
11716 }
11717 }
11718
11719 function Readable(options) {
11720 var Duplex = require('./_stream_duplex');
11721
11722 if (!(this instanceof Readable))
11723 return new Readable(options);
11724
11725 this._readableState = new ReadableState(options, this);
11726
11727 // legacy
11728 this.readable = true;
11729
11730 Stream.call(this);
11731 }
11732
11733 // Manually shove something into the read() buffer.
11734 // This returns true if the highWaterMark has not been hit yet,
11735 // similar to how Writable.write() returns true if you should
11736 // write() some more.
11737 Readable.prototype.push = function(chunk, encoding) {
11738 var state = this._readableState;
11739
11740 if (util.isString(chunk) && !state.objectMode) {
11741 encoding = encoding || state.defaultEncoding;
11742 if (encoding !== state.encoding) {
11743 chunk = new Buffer(chunk, encoding);
11744 encoding = '';
11745 }
11746 }
11747
11748 return readableAddChunk(this, state, chunk, encoding, false);
11749 };
11750
11751 // Unshift should *always* be something directly out of read()
11752 Readable.prototype.unshift = function(chunk) {
11753 var state = this._readableState;
11754 return readableAddChunk(this, state, chunk, '', true);
11755 };
11756
11757 function readableAddChunk(stream, state, chunk, encoding, addToFront) {
11758 var er = chunkInvalid(state, chunk);
11759 if (er) {
11760 stream.emit('error', er);
11761 } else if (util.isNullOrUndefined(chunk)) {
11762 state.reading = false;
11763 if (!state.ended)
11764 onEofChunk(stream, state);
11765 } else if (state.objectMode || chunk && chunk.length > 0) {
11766 if (state.ended && !addToFront) {
11767 var e = new Error('stream.push() after EOF');
11768 stream.emit('error', e);
11769 } else if (state.endEmitted && addToFront) {
11770 var e = new Error('stream.unshift() after end event');
11771 stream.emit('error', e);
11772 } else {
11773 if (state.decoder && !addToFront && !encoding)
11774 chunk = state.decoder.write(chunk);
11775
11776 if (!addToFront)
11777 state.reading = false;
11778
11779 // if we want the data now, just emit it.
11780 if (state.flowing && state.length === 0 && !state.sync) {
11781 stream.emit('data', chunk);
11782 stream.read(0);
11783 } else {
11784 // update the buffer info.
11785 state.length += state.objectMode ? 1 : chunk.length;
11786 if (addToFront)
11787 state.buffer.unshift(chunk);
11788 else
11789 state.buffer.push(chunk);
11790
11791 if (state.needReadable)
11792 emitReadable(stream);
11793 }
11794
11795 maybeReadMore(stream, state);
11796 }
11797 } else if (!addToFront) {
11798 state.reading = false;
11799 }
11800
11801 return needMoreData(state);
11802 }
11803
11804
11805
11806 // if it's past the high water mark, we can push in some more.
11807 // Also, if we have no data yet, we can stand some
11808 // more bytes. This is to work around cases where hwm=0,
11809 // such as the repl. Also, if the push() triggered a
11810 // readable event, and the user called read(largeNumber) such that
11811 // needReadable was set, then we ought to push more, so that another
11812 // 'readable' event will be triggered.
11813 function needMoreData(state) {
11814 return !state.ended &&
11815 (state.needReadable ||
11816 state.length < state.highWaterMark ||
11817 state.length === 0);
11818 }
11819
11820 // backwards compatibility.
11821 Readable.prototype.setEncoding = function(enc) {
11822 if (!StringDecoder)
11823 StringDecoder = require('string_decoder/').StringDecoder;
11824 this._readableState.decoder = new StringDecoder(enc);
11825 this._readableState.encoding = enc;
11826 return this;
11827 };
11828
11829 // Don't raise the hwm > 128MB
11830 var MAX_HWM = 0x800000;
11831 function roundUpToNextPowerOf2(n) {
11832 if (n >= MAX_HWM) {
11833 n = MAX_HWM;
11834 } else {
11835 // Get the next highest power of 2
11836 n--;
11837 for (var p = 1; p < 32; p <<= 1) n |= n >> p;
11838 n++;
11839 }
11840 return n;
11841 }
11842
11843 function howMuchToRead(n, state) {
11844 if (state.length === 0 && state.ended)
11845 return 0;
11846
11847 if (state.objectMode)
11848 return n === 0 ? 0 : 1;
11849
11850 if (isNaN(n) || util.isNull(n)) {
11851 // only flow one buffer at a time
11852 if (state.flowing && state.buffer.length)
11853 return state.buffer[0].length;
11854 else
11855 return state.length;
11856 }
11857
11858 if (n <= 0)
11859 return 0;
11860
11861 // If we're asking for more than the target buffer level,
11862 // then raise the water mark. Bump up to the next highest
11863 // power of 2, to prevent increasing it excessively in tiny
11864 // amounts.
11865 if (n > state.highWaterMark)
11866 state.highWaterMark = roundUpToNextPowerOf2(n);
11867
11868 // don't have that much. return null, unless we've ended.
11869 if (n > state.length) {
11870 if (!state.ended) {
11871 state.needReadable = true;
11872 return 0;
11873 } else
11874 return state.length;
11875 }
11876
11877 return n;
11878 }
11879
11880 // you can override either this method, or the async _read(n) below.
11881 Readable.prototype.read = function(n) {
11882 debug('read', n);
11883 var state = this._readableState;
11884 var nOrig = n;
11885
11886 if (!util.isNumber(n) || n > 0)
11887 state.emittedReadable = false;
11888
11889 // if we're doing read(0) to trigger a readable event, but we
11890 // already have a bunch of data in the buffer, then just trigger
11891 // the 'readable' event and move on.
11892 if (n === 0 &&
11893 state.needReadable &&
11894 (state.length >= state.highWaterMark || state.ended)) {
11895 debug('read: emitReadable', state.length, state.ended);
11896 if (state.length === 0 && state.ended)
11897 endReadable(this);
11898 else
11899 emitReadable(this);
11900 return null;
11901 }
11902
11903 n = howMuchToRead(n, state);
11904
11905 // if we've ended, and we're now clear, then finish it up.
11906 if (n === 0 && state.ended) {
11907 if (state.length === 0)
11908 endReadable(this);
11909 return null;
11910 }
11911
11912 // All the actual chunk generation logic needs to be
11913 // *below* the call to _read. The reason is that in certain
11914 // synthetic stream cases, such as passthrough streams, _read
11915 // may be a completely synchronous operation which may change
11916 // the state of the read buffer, providing enough data when
11917 // before there was *not* enough.
11918 //
11919 // So, the steps are:
11920 // 1. Figure out what the state of things will be after we do
11921 // a read from the buffer.
11922 //
11923 // 2. If that resulting state will trigger a _read, then call _read.
11924 // Note that this may be asynchronous, or synchronous. Yes, it is
11925 // deeply ugly to write APIs this way, but that still doesn't mean
11926 // that the Readable class should behave improperly, as streams are
11927 // designed to be sync/async agnostic.
11928 // Take note if the _read call is sync or async (ie, if the read call
11929 // has returned yet), so that we know whether or not it's safe to emit
11930 // 'readable' etc.
11931 //
11932 // 3. Actually pull the requested chunks out of the buffer and return.
11933
11934 // if we need a readable event, then we need to do some reading.
11935 var doRead = state.needReadable;
11936 debug('need readable', doRead);
11937
11938 // if we currently have less than the highWaterMark, then also read some
11939 if (state.length === 0 || state.length - n < state.highWaterMark) {
11940 doRead = true;
11941 debug('length less than watermark', doRead);
11942 }
11943
11944 // however, if we've ended, then there's no point, and if we're already
11945 // reading, then it's unnecessary.
11946 if (state.ended || state.reading) {
11947 doRead = false;
11948 debug('reading or ended', doRead);
11949 }
11950
11951 if (doRead) {
11952 debug('do read');
11953 state.reading = true;
11954 state.sync = true;
11955 // if the length is currently zero, then we *need* a readable event.
11956 if (state.length === 0)
11957 state.needReadable = true;
11958 // call internal read method
11959 this._read(state.highWaterMark);
11960 state.sync = false;
11961 }
11962
11963 // If _read pushed data synchronously, then `reading` will be false,
11964 // and we need to re-evaluate how much data we can return to the user.
11965 if (doRead && !state.reading)
11966 n = howMuchToRead(nOrig, state);
11967
11968 var ret;
11969 if (n > 0)
11970 ret = fromList(n, state);
11971 else
11972 ret = null;
11973
11974 if (util.isNull(ret)) {
11975 state.needReadable = true;
11976 n = 0;
11977 }
11978
11979 state.length -= n;
11980
11981 // If we have nothing in the buffer, then we want to know
11982 // as soon as we *do* get something into the buffer.
11983 if (state.length === 0 && !state.ended)
11984 state.needReadable = true;
11985
11986 // If we tried to read() past the EOF, then emit end on the next tick.
11987 if (nOrig !== n && state.ended && state.length === 0)
11988 endReadable(this);
11989
11990 if (!util.isNull(ret))
11991 this.emit('data', ret);
11992
11993 return ret;
11994 };
11995
11996 function chunkInvalid(state, chunk) {
11997 var er = null;
11998 if (!util.isBuffer(chunk) &&
11999 !util.isString(chunk) &&
12000 !util.isNullOrUndefined(chunk) &&
12001 !state.objectMode) {
12002 er = new TypeError('Invalid non-string/buffer chunk');
12003 }
12004 return er;
12005 }
12006
12007
12008 function onEofChunk(stream, state) {
12009 if (state.decoder && !state.ended) {
12010 var chunk = state.decoder.end();
12011 if (chunk && chunk.length) {
12012 state.buffer.push(chunk);
12013 state.length += state.objectMode ? 1 : chunk.length;
12014 }
12015 }
12016 state.ended = true;
12017
12018 // emit 'readable' now to make sure it gets picked up.
12019 emitReadable(stream);
12020 }
12021
12022 // Don't emit readable right away in sync mode, because this can trigger
12023 // another read() call => stack overflow. This way, it might trigger
12024 // a nextTick recursion warning, but that's not so bad.
12025 function emitReadable(stream) {
12026 var state = stream._readableState;
12027 state.needReadable = false;
12028 if (!state.emittedReadable) {
12029 debug('emitReadable', state.flowing);
12030 state.emittedReadable = true;
12031 if (state.sync)
12032 process.nextTick(function() {
12033 emitReadable_(stream);
12034 });
12035 else
12036 emitReadable_(stream);
12037 }
12038 }
12039
12040 function emitReadable_(stream) {
12041 debug('emit readable');
12042 stream.emit('readable');
12043 flow(stream);
12044 }
12045
12046
12047 // at this point, the user has presumably seen the 'readable' event,
12048 // and called read() to consume some data. that may have triggered
12049 // in turn another _read(n) call, in which case reading = true if
12050 // it's in progress.
12051 // However, if we're not ended, or reading, and the length < hwm,
12052 // then go ahead and try to read some more preemptively.
12053 function maybeReadMore(stream, state) {
12054 if (!state.readingMore) {
12055 state.readingMore = true;
12056 process.nextTick(function() {
12057 maybeReadMore_(stream, state);
12058 });
12059 }
12060 }
12061
12062 function maybeReadMore_(stream, state) {
12063 var len = state.length;
12064 while (!state.reading && !state.flowing && !state.ended &&
12065 state.length < state.highWaterMark) {
12066 debug('maybeReadMore read 0');
12067 stream.read(0);
12068 if (len === state.length)
12069 // didn't get any data, stop spinning.
12070 break;
12071 else
12072 len = state.length;
12073 }
12074 state.readingMore = false;
12075 }
12076
12077 // abstract method. to be overridden in specific implementation classes.
12078 // call cb(er, data) where data is <= n in length.
12079 // for virtual (non-string, non-buffer) streams, "length" is somewhat
12080 // arbitrary, and perhaps not very meaningful.
12081 Readable.prototype._read = function(n) {
12082 this.emit('error', new Error('not implemented'));
12083 };
12084
12085 Readable.prototype.pipe = function(dest, pipeOpts) {
12086 var src = this;
12087 var state = this._readableState;
12088
12089 switch (state.pipesCount) {
12090 case 0:
12091 state.pipes = dest;
12092 break;
12093 case 1:
12094 state.pipes = [state.pipes, dest];
12095 break;
12096 default:
12097 state.pipes.push(dest);
12098 break;
12099 }
12100 state.pipesCount += 1;
12101 debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
12102
12103 var doEnd = (!pipeOpts || pipeOpts.end !== false) &&
12104 dest !== process.stdout &&
12105 dest !== process.stderr;
12106
12107 var endFn = doEnd ? onend : cleanup;
12108 if (state.endEmitted)
12109 process.nextTick(endFn);
12110 else
12111 src.once('end', endFn);
12112
12113 dest.on('unpipe', onunpipe);
12114 function onunpipe(readable) {
12115 debug('onunpipe');
12116 if (readable === src) {
12117 cleanup();
12118 }
12119 }
12120
12121 function onend() {
12122 debug('onend');
12123 dest.end();
12124 }
12125
12126 // when the dest drains, it reduces the awaitDrain counter
12127 // on the source. This would be more elegant with a .once()
12128 // handler in flow(), but adding and removing repeatedly is
12129 // too slow.
12130 var ondrain = pipeOnDrain(src);
12131 dest.on('drain', ondrain);
12132
12133 function cleanup() {
12134 debug('cleanup');
12135 // cleanup event handlers once the pipe is broken
12136 dest.removeListener('close', onclose);
12137 dest.removeListener('finish', onfinish);
12138 dest.removeListener('drain', ondrain);
12139 dest.removeListener('error', onerror);
12140 dest.removeListener('unpipe', onunpipe);
12141 src.removeListener('end', onend);
12142 src.removeListener('end', cleanup);
12143 src.removeListener('data', ondata);
12144
12145 // if the reader is waiting for a drain event from this
12146 // specific writer, then it would cause it to never start
12147 // flowing again.
12148 // So, if this is awaiting a drain, then we just call it now.
12149 // If we don't know, then assume that we are waiting for one.
12150 if (state.awaitDrain &&
12151 (!dest._writableState || dest._writableState.needDrain))
12152 ondrain();
12153 }
12154
12155 src.on('data', ondata);
12156 function ondata(chunk) {
12157 debug('ondata');
12158 var ret = dest.write(chunk);
12159 if (false === ret) {
12160 debug('false write response, pause',
12161 src._readableState.awaitDrain);
12162 src._readableState.awaitDrain++;
12163 src.pause();
12164 }
12165 }
12166
12167 // if the dest has an error, then stop piping into it.
12168 // however, don't suppress the throwing behavior for this.
12169 function onerror(er) {
12170 debug('onerror', er);
12171 unpipe();
12172 dest.removeListener('error', onerror);
12173 if (EE.listenerCount(dest, 'error') === 0)
12174 dest.emit('error', er);
12175 }
12176 // This is a brutally ugly hack to make sure that our error handler
12177 // is attached before any userland ones. NEVER DO THIS.
12178 if (!dest._events || !dest._events.error)
12179 dest.on('error', onerror);
12180 else if (isArray(dest._events.error))
12181 dest._events.error.unshift(onerror);
12182 else
12183 dest._events.error = [onerror, dest._events.error];
12184
12185
12186
12187 // Both close and finish should trigger unpipe, but only once.
12188 function onclose() {
12189 dest.removeListener('finish', onfinish);
12190 unpipe();
12191 }
12192 dest.once('close', onclose);
12193 function onfinish() {
12194 debug('onfinish');
12195 dest.removeListener('close', onclose);
12196 unpipe();
12197 }
12198 dest.once('finish', onfinish);
12199
12200 function unpipe() {
12201 debug('unpipe');
12202 src.unpipe(dest);
12203 }
12204
12205 // tell the dest that it's being piped to
12206 dest.emit('pipe', src);
12207
12208 // start the flow if it hasn't been started already.
12209 if (!state.flowing) {
12210 debug('pipe resume');
12211 src.resume();
12212 }
12213
12214 return dest;
12215 };
12216
12217 function pipeOnDrain(src) {
12218 return function() {
12219 var state = src._readableState;
12220 debug('pipeOnDrain', state.awaitDrain);
12221 if (state.awaitDrain)
12222 state.awaitDrain--;
12223 if (state.awaitDrain === 0 && EE.listenerCount(src, 'data')) {
12224 state.flowing = true;
12225 flow(src);
12226 }
12227 };
12228 }
12229
12230
12231 Readable.prototype.unpipe = function(dest) {
12232 var state = this._readableState;
12233
12234 // if we're not piping anywhere, then do nothing.
12235 if (state.pipesCount === 0)
12236 return this;
12237
12238 // just one destination. most common case.
12239 if (state.pipesCount === 1) {
12240 // passed in one, but it's not the right one.
12241 if (dest && dest !== state.pipes)
12242 return this;
12243
12244 if (!dest)
12245 dest = state.pipes;
12246
12247 // got a match.
12248 state.pipes = null;
12249 state.pipesCount = 0;
12250 state.flowing = false;
12251 if (dest)
12252 dest.emit('unpipe', this);
12253 return this;
12254 }
12255
12256 // slow case. multiple pipe destinations.
12257
12258 if (!dest) {
12259 // remove all.
12260 var dests = state.pipes;
12261 var len = state.pipesCount;
12262 state.pipes = null;
12263 state.pipesCount = 0;
12264 state.flowing = false;
12265
12266 for (var i = 0; i < len; i++)
12267 dests[i].emit('unpipe', this);
12268 return this;
12269 }
12270
12271 // try to find the right one.
12272 var i = indexOf(state.pipes, dest);
12273 if (i === -1)
12274 return this;
12275
12276 state.pipes.splice(i, 1);
12277 state.pipesCount -= 1;
12278 if (state.pipesCount === 1)
12279 state.pipes = state.pipes[0];
12280
12281 dest.emit('unpipe', this);
12282
12283 return this;
12284 };
12285
12286 // set up data events if they are asked for
12287 // Ensure readable listeners eventually get something
12288 Readable.prototype.on = function(ev, fn) {
12289 var res = Stream.prototype.on.call(this, ev, fn);
12290
12291 // If listening to data, and it has not explicitly been paused,
12292 // then call resume to start the flow of data on the next tick.
12293 if (ev === 'data' && false !== this._readableState.flowing) {
12294 this.resume();
12295 }
12296
12297 if (ev === 'readable' && this.readable) {
12298 var state = this._readableState;
12299 if (!state.readableListening) {
12300 state.readableListening = true;
12301 state.emittedReadable = false;
12302 state.needReadable = true;
12303 if (!state.reading) {
12304 var self = this;
12305 process.nextTick(function() {
12306 debug('readable nexttick read 0');
12307 self.read(0);
12308 });
12309 } else if (state.length) {
12310 emitReadable(this, state);
12311 }
12312 }
12313 }
12314
12315 return res;
12316 };
12317 Readable.prototype.addListener = Readable.prototype.on;
12318
12319 // pause() and resume() are remnants of the legacy readable stream API
12320 // If the user uses them, then switch into old mode.
12321 Readable.prototype.resume = function() {
12322 var state = this._readableState;
12323 if (!state.flowing) {
12324 debug('resume');
12325 state.flowing = true;
12326 if (!state.reading) {
12327 debug('resume read 0');
12328 this.read(0);
12329 }
12330 resume(this, state);
12331 }
12332 return this;
12333 };
12334
12335 function resume(stream, state) {
12336 if (!state.resumeScheduled) {
12337 state.resumeScheduled = true;
12338 process.nextTick(function() {
12339 resume_(stream, state);
12340 });
12341 }
12342 }
12343
12344 function resume_(stream, state) {
12345 state.resumeScheduled = false;
12346 stream.emit('resume');
12347 flow(stream);
12348 if (state.flowing && !state.reading)
12349 stream.read(0);
12350 }
12351
12352 Readable.prototype.pause = function() {
12353 debug('call pause flowing=%j', this._readableState.flowing);
12354 if (false !== this._readableState.flowing) {
12355 debug('pause');
12356 this._readableState.flowing = false;
12357 this.emit('pause');
12358 }
12359 return this;
12360 };
12361
12362 function flow(stream) {
12363 var state = stream._readableState;
12364 debug('flow', state.flowing);
12365 if (state.flowing) {
12366 do {
12367 var chunk = stream.read();
12368 } while (null !== chunk && state.flowing);
12369 }
12370 }
12371
12372 // wrap an old-style stream as the async data source.
12373 // This is *not* part of the readable stream interface.
12374 // It is an ugly unfortunate mess of history.
12375 Readable.prototype.wrap = function(stream) {
12376 var state = this._readableState;
12377 var paused = false;
12378
12379 var self = this;
12380 stream.on('end', function() {
12381 debug('wrapped end');
12382 if (state.decoder && !state.ended) {
12383 var chunk = state.decoder.end();
12384 if (chunk && chunk.length)
12385 self.push(chunk);
12386 }
12387
12388 self.push(null);
12389 });
12390
12391 stream.on('data', function(chunk) {
12392 debug('wrapped data');
12393 if (state.decoder)
12394 chunk = state.decoder.write(chunk);
12395 if (!chunk || !state.objectMode && !chunk.length)
12396 return;
12397
12398 var ret = self.push(chunk);
12399 if (!ret) {
12400 paused = true;
12401 stream.pause();
12402 }
12403 });
12404
12405 // proxy all the other methods.
12406 // important when wrapping filters and duplexes.
12407 for (var i in stream) {
12408 if (util.isFunction(stream[i]) && util.isUndefined(this[i])) {
12409 this[i] = function(method) { return function() {
12410 return stream[method].apply(stream, arguments);
12411 }}(i);
12412 }
12413 }
12414
12415 // proxy certain important events.
12416 var events = ['error', 'close', 'destroy', 'pause', 'resume'];
12417 forEach(events, function(ev) {
12418 stream.on(ev, self.emit.bind(self, ev));
12419 });
12420
12421 // when we try to consume some more bytes, simply unpause the
12422 // underlying stream.
12423 self._read = function(n) {
12424 debug('wrapped _read', n);
12425 if (paused) {
12426 paused = false;
12427 stream.resume();
12428 }
12429 };
12430
12431 return self;
12432 };
12433
12434
12435
12436 // exposed for testing purposes only.
12437 Readable._fromList = fromList;
12438
12439 // Pluck off n bytes from an array of buffers.
12440 // Length is the combined lengths of all the buffers in the list.
12441 function fromList(n, state) {
12442 var list = state.buffer;
12443 var length = state.length;
12444 var stringMode = !!state.decoder;
12445 var objectMode = !!state.objectMode;
12446 var ret;
12447
12448 // nothing in the list, definitely empty.
12449 if (list.length === 0)
12450 return null;
12451
12452 if (length === 0)
12453 ret = null;
12454 else if (objectMode)
12455 ret = list.shift();
12456 else if (!n || n >= length) {
12457 // read it all, truncate the array.
12458 if (stringMode)
12459 ret = list.join('');
12460 else
12461 ret = Buffer.concat(list, length);
12462 list.length = 0;
12463 } else {
12464 // read just some of it.
12465 if (n < list[0].length) {
12466 // just take a part of the first list item.
12467 // slice is the same for buffers and strings.
12468 var buf = list[0];
12469 ret = buf.slice(0, n);
12470 list[0] = buf.slice(n);
12471 } else if (n === list[0].length) {
12472 // first list is a perfect match
12473 ret = list.shift();
12474 } else {
12475 // complex case.
12476 // we have enough to cover it, but it spans past the first buffer.
12477 if (stringMode)
12478 ret = '';
12479 else
12480 ret = new Buffer(n);
12481
12482 var c = 0;
12483 for (var i = 0, l = list.length; i < l && c < n; i++) {
12484 var buf = list[0];
12485 var cpy = Math.min(n - c, buf.length);
12486
12487 if (stringMode)
12488 ret += buf.slice(0, cpy);
12489 else
12490 buf.copy(ret, c, 0, cpy);
12491
12492 if (cpy < buf.length)
12493 list[0] = buf.slice(cpy);
12494 else
12495 list.shift();
12496
12497 c += cpy;
12498 }
12499 }
12500 }
12501
12502 return ret;
12503 }
12504
12505 function endReadable(stream) {
12506 var state = stream._readableState;
12507
12508 // If we get here before consuming all the bytes, then that is a
12509 // bug in node. Should never happen.
12510 if (state.length > 0)
12511 throw new Error('endReadable called on non-empty stream');
12512
12513 if (!state.endEmitted) {
12514 state.ended = true;
12515 process.nextTick(function() {
12516 // Check that we didn't get one last unshift.
12517 if (!state.endEmitted && state.length === 0) {
12518 state.endEmitted = true;
12519 stream.readable = false;
12520 stream.emit('end');
12521 }
12522 });
12523 }
12524 }
12525
12526 function forEach (xs, f) {
12527 for (var i = 0, l = xs.length; i < l; i++) {
12528 f(xs[i], i);
12529 }
12530 }
12531
12532 function indexOf (xs, x) {
12533 for (var i = 0, l = xs.length; i < l; i++) {
12534 if (xs[i] === x) return i;
12535 }
12536 return -1;
12537 }
12538
12539 }).call(this,require('_process'))
12540 },{"./_stream_duplex":16,"_process":14,"buffer":7,"core-util-is":21,"events":11,"inherits":12,"isarray":13,"stream":26,"string_decoder/":27,"util":6}],19:[function(require,module,exports){
12541 // Copyright Joyent, Inc. and other Node contributors.
12542 //
12543 // Permission is hereby granted, free of charge, to any person obtaining a
12544 // copy of this software and associated documentation files (the
12545 // "Software"), to deal in the Software without restriction, including
12546 // without limitation the rights to use, copy, modify, merge, publish,
12547 // distribute, sublicense, and/or sell copies of the Software, and to permit
12548 // persons to whom the Software is furnished to do so, subject to the
12549 // following conditions:
12550 //
12551 // The above copyright notice and this permission notice shall be included
12552 // in all copies or substantial portions of the Software.
12553 //
12554 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
12555 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
12556 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
12557 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
12558 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
12559 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
12560 // USE OR OTHER DEALINGS IN THE SOFTWARE.
12561
12562
12563 // a transform stream is a readable/writable stream where you do
12564 // something with the data. Sometimes it's called a "filter",
12565 // but that's not a great name for it, since that implies a thing where
12566 // some bits pass through, and others are simply ignored. (That would
12567 // be a valid example of a transform, of course.)
12568 //
12569 // While the output is causally related to the input, it's not a
12570 // necessarily symmetric or synchronous transformation. For example,
12571 // a zlib stream might take multiple plain-text writes(), and then
12572 // emit a single compressed chunk some time in the future.
12573 //
12574 // Here's how this works:
12575 //
12576 // The Transform stream has all the aspects of the readable and writable
12577 // stream classes. When you write(chunk), that calls _write(chunk,cb)
12578 // internally, and returns false if there's a lot of pending writes
12579 // buffered up. When you call read(), that calls _read(n) until
12580 // there's enough pending readable data buffered up.
12581 //
12582 // In a transform stream, the written data is placed in a buffer. When
12583 // _read(n) is called, it transforms the queued up data, calling the
12584 // buffered _write cb's as it consumes chunks. If consuming a single
12585 // written chunk would result in multiple output chunks, then the first
12586 // outputted bit calls the readcb, and subsequent chunks just go into
12587 // the read buffer, and will cause it to emit 'readable' if necessary.
12588 //
12589 // This way, back-pressure is actually determined by the reading side,
12590 // since _read has to be called to start processing a new chunk. However,
12591 // a pathological inflate type of transform can cause excessive buffering
12592 // here. For example, imagine a stream where every byte of input is
12593 // interpreted as an integer from 0-255, and then results in that many
12594 // bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
12595 // 1kb of data being output. In this case, you could write a very small
12596 // amount of input, and end up with a very large amount of output. In
12597 // such a pathological inflating mechanism, there'd be no way to tell
12598 // the system to stop doing the transform. A single 4MB write could
12599 // cause the system to run out of memory.
12600 //
12601 // However, even in such a pathological case, only a single written chunk
12602 // would be consumed, and then the rest would wait (un-transformed) until
12603 // the results of the previous transformed chunk were consumed.
12604
12605 module.exports = Transform;
12606
12607 var Duplex = require('./_stream_duplex');
12608
12609 /*<replacement>*/
12610 var util = require('core-util-is');
12611 util.inherits = require('inherits');
12612 /*</replacement>*/
12613
12614 util.inherits(Transform, Duplex);
12615
12616
12617 function TransformState(options, stream) {
12618 this.afterTransform = function(er, data) {
12619 return afterTransform(stream, er, data);
12620 };
12621
12622 this.needTransform = false;
12623 this.transforming = false;
12624 this.writecb = null;
12625 this.writechunk = null;
12626 }
12627
12628 function afterTransform(stream, er, data) {
12629 var ts = stream._transformState;
12630 ts.transforming = false;
12631
12632 var cb = ts.writecb;
12633
12634 if (!cb)
12635 return stream.emit('error', new Error('no writecb in Transform class'));
12636
12637 ts.writechunk = null;
12638 ts.writecb = null;
12639
12640 if (!util.isNullOrUndefined(data))
12641 stream.push(data);
12642
12643 if (cb)
12644 cb(er);
12645
12646 var rs = stream._readableState;
12647 rs.reading = false;
12648 if (rs.needReadable || rs.length < rs.highWaterMark) {
12649 stream._read(rs.highWaterMark);
12650 }
12651 }
12652
12653
12654 function Transform(options) {
12655 if (!(this instanceof Transform))
12656 return new Transform(options);
12657
12658 Duplex.call(this, options);
12659
12660 this._transformState = new TransformState(options, this);
12661
12662 // when the writable side finishes, then flush out anything remaining.
12663 var stream = this;
12664
12665 // start out asking for a readable event once data is transformed.
12666 this._readableState.needReadable = true;
12667
12668 // we have implemented the _read method, and done the other things
12669 // that Readable wants before the first _read call, so unset the
12670 // sync guard flag.
12671 this._readableState.sync = false;
12672
12673 this.once('prefinish', function() {
12674 if (util.isFunction(this._flush))
12675 this._flush(function(er) {
12676 done(stream, er);
12677 });
12678 else
12679 done(stream);
12680 });
12681 }
12682
12683 Transform.prototype.push = function(chunk, encoding) {
12684 this._transformState.needTransform = false;
12685 return Duplex.prototype.push.call(this, chunk, encoding);
12686 };
12687
12688 // This is the part where you do stuff!
12689 // override this function in implementation classes.
12690 // 'chunk' is an input chunk.
12691 //
12692 // Call `push(newChunk)` to pass along transformed output
12693 // to the readable side. You may call 'push' zero or more times.
12694 //
12695 // Call `cb(err)` when you are done with this chunk. If you pass
12696 // an error, then that'll put the hurt on the whole operation. If you
12697 // never call cb(), then you'll never get another chunk.
12698 Transform.prototype._transform = function(chunk, encoding, cb) {
12699 throw new Error('not implemented');
12700 };
12701
12702 Transform.prototype._write = function(chunk, encoding, cb) {
12703 var ts = this._transformState;
12704 ts.writecb = cb;
12705 ts.writechunk = chunk;
12706 ts.writeencoding = encoding;
12707 if (!ts.transforming) {
12708 var rs = this._readableState;
12709 if (ts.needTransform ||
12710 rs.needReadable ||
12711 rs.length < rs.highWaterMark)
12712 this._read(rs.highWaterMark);
12713 }
12714 };
12715
12716 // Doesn't matter what the args are here.
12717 // _transform does all the work.
12718 // That we got here means that the readable side wants more data.
12719 Transform.prototype._read = function(n) {
12720 var ts = this._transformState;
12721
12722 if (!util.isNull(ts.writechunk) && ts.writecb && !ts.transforming) {
12723 ts.transforming = true;
12724 this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
12725 } else {
12726 // mark that we need a transform, so that any data that comes in
12727 // will get processed, now that we've asked for it.
12728 ts.needTransform = true;
12729 }
12730 };
12731
12732
12733 function done(stream, er) {
12734 if (er)
12735 return stream.emit('error', er);
12736
12737 // if there's nothing in the write buffer, then that means
12738 // that nothing more will ever be provided
12739 var ws = stream._writableState;
12740 var ts = stream._transformState;
12741
12742 if (ws.length)
12743 throw new Error('calling transform done when ws.length != 0');
12744
12745 if (ts.transforming)
12746 throw new Error('calling transform done when still transforming');
12747
12748 return stream.push(null);
12749 }
12750
12751 },{"./_stream_duplex":16,"core-util-is":21,"inherits":12}],20:[function(require,module,exports){
12752 (function (process){
12753 // Copyright Joyent, Inc. and other Node contributors.
12754 //
12755 // Permission is hereby granted, free of charge, to any person obtaining a
12756 // copy of this software and associated documentation files (the
12757 // "Software"), to deal in the Software without restriction, including
12758 // without limitation the rights to use, copy, modify, merge, publish,
12759 // distribute, sublicense, and/or sell copies of the Software, and to permit
12760 // persons to whom the Software is furnished to do so, subject to the
12761 // following conditions:
12762 //
12763 // The above copyright notice and this permission notice shall be included
12764 // in all copies or substantial portions of the Software.
12765 //
12766 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
12767 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
12768 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
12769 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
12770 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
12771 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
12772 // USE OR OTHER DEALINGS IN THE SOFTWARE.
12773
12774 // A bit simpler than readable streams.
12775 // Implement an async ._write(chunk, cb), and it'll handle all
12776 // the drain event emission and buffering.
12777
12778 module.exports = Writable;
12779
12780 /*<replacement>*/
12781 var Buffer = require('buffer').Buffer;
12782 /*</replacement>*/
12783
12784 Writable.WritableState = WritableState;
12785
12786
12787 /*<replacement>*/
12788 var util = require('core-util-is');
12789 util.inherits = require('inherits');
12790 /*</replacement>*/
12791
12792 var Stream = require('stream');
12793
12794 util.inherits(Writable, Stream);
12795
12796 function WriteReq(chunk, encoding, cb) {
12797 this.chunk = chunk;
12798 this.encoding = encoding;
12799 this.callback = cb;
12800 }
12801
12802 function WritableState(options, stream) {
12803 var Duplex = require('./_stream_duplex');
12804
12805 options = options || {};
12806
12807 // the point at which write() starts returning false
12808 // Note: 0 is a valid value, means that we always return false if
12809 // the entire buffer is not flushed immediately on write()
12810 var hwm = options.highWaterMark;
12811 var defaultHwm = options.objectMode ? 16 : 16 * 1024;
12812 this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm;
12813
12814 // object stream flag to indicate whether or not this stream
12815 // contains buffers or objects.
12816 this.objectMode = !!options.objectMode;
12817
12818 if (stream instanceof Duplex)
12819 this.objectMode = this.objectMode || !!options.writableObjectMode;
12820
12821 // cast to ints.
12822 this.highWaterMark = ~~this.highWaterMark;
12823
12824 this.needDrain = false;
12825 // at the start of calling end()
12826 this.ending = false;
12827 // when end() has been called, and returned
12828 this.ended = false;
12829 // when 'finish' is emitted
12830 this.finished = false;
12831
12832 // should we decode strings into buffers before passing to _write?
12833 // this is here so that some node-core streams can optimize string
12834 // handling at a lower level.
12835 var noDecode = options.decodeStrings === false;
12836 this.decodeStrings = !noDecode;
12837
12838 // Crypto is kind of old and crusty. Historically, its default string
12839 // encoding is 'binary' so we have to make this configurable.
12840 // Everything else in the universe uses 'utf8', though.
12841 this.defaultEncoding = options.defaultEncoding || 'utf8';
12842
12843 // not an actual buffer we keep track of, but a measurement
12844 // of how much we're waiting to get pushed to some underlying
12845 // socket or file.
12846 this.length = 0;
12847
12848 // a flag to see when we're in the middle of a write.
12849 this.writing = false;
12850
12851 // when true all writes will be buffered until .uncork() call
12852 this.corked = 0;
12853
12854 // a flag to be able to tell if the onwrite cb is called immediately,
12855 // or on a later tick. We set this to true at first, because any
12856 // actions that shouldn't happen until "later" should generally also
12857 // not happen before the first write call.
12858 this.sync = true;
12859
12860 // a flag to know if we're processing previously buffered items, which
12861 // may call the _write() callback in the same tick, so that we don't
12862 // end up in an overlapped onwrite situation.
12863 this.bufferProcessing = false;
12864
12865 // the callback that's passed to _write(chunk,cb)
12866 this.onwrite = function(er) {
12867 onwrite(stream, er);
12868 };
12869
12870 // the callback that the user supplies to write(chunk,encoding,cb)
12871 this.writecb = null;
12872
12873 // the amount that is being written when _write is called.
12874 this.writelen = 0;
12875
12876 this.buffer = [];
12877
12878 // number of pending user-supplied write callbacks
12879 // this must be 0 before 'finish' can be emitted
12880 this.pendingcb = 0;
12881
12882 // emit prefinish if the only thing we're waiting for is _write cbs
12883 // This is relevant for synchronous Transform streams
12884 this.prefinished = false;
12885
12886 // True if the error was already emitted and should not be thrown again
12887 this.errorEmitted = false;
12888 }
12889
12890 function Writable(options) {
12891 var Duplex = require('./_stream_duplex');
12892
12893 // Writable ctor is applied to Duplexes, though they're not
12894 // instanceof Writable, they're instanceof Readable.
12895 if (!(this instanceof Writable) && !(this instanceof Duplex))
12896 return new Writable(options);
12897
12898 this._writableState = new WritableState(options, this);
12899
12900 // legacy.
12901 this.writable = true;
12902
12903 Stream.call(this);
12904 }
12905
12906 // Otherwise people can pipe Writable streams, which is just wrong.
12907 Writable.prototype.pipe = function() {
12908 this.emit('error', new Error('Cannot pipe. Not readable.'));
12909 };
12910
12911
12912 function writeAfterEnd(stream, state, cb) {
12913 var er = new Error('write after end');
12914 // TODO: defer error events consistently everywhere, not just the cb
12915 stream.emit('error', er);
12916 process.nextTick(function() {
12917 cb(er);
12918 });
12919 }
12920
12921 // If we get something that is not a buffer, string, null, or undefined,
12922 // and we're not in objectMode, then that's an error.
12923 // Otherwise stream chunks are all considered to be of length=1, and the
12924 // watermarks determine how many objects to keep in the buffer, rather than
12925 // how many bytes or characters.
12926 function validChunk(stream, state, chunk, cb) {
12927 var valid = true;
12928 if (!util.isBuffer(chunk) &&
12929 !util.isString(chunk) &&
12930 !util.isNullOrUndefined(chunk) &&
12931 !state.objectMode) {
12932 var er = new TypeError('Invalid non-string/buffer chunk');
12933 stream.emit('error', er);
12934 process.nextTick(function() {
12935 cb(er);
12936 });
12937 valid = false;
12938 }
12939 return valid;
12940 }
12941
12942 Writable.prototype.write = function(chunk, encoding, cb) {
12943 var state = this._writableState;
12944 var ret = false;
12945
12946 if (util.isFunction(encoding)) {
12947 cb = encoding;
12948 encoding = null;
12949 }
12950
12951 if (util.isBuffer(chunk))
12952 encoding = 'buffer';
12953 else if (!encoding)
12954 encoding = state.defaultEncoding;
12955
12956 if (!util.isFunction(cb))
12957 cb = function() {};
12958
12959 if (state.ended)
12960 writeAfterEnd(this, state, cb);
12961 else if (validChunk(this, state, chunk, cb)) {
12962 state.pendingcb++;
12963 ret = writeOrBuffer(this, state, chunk, encoding, cb);
12964 }
12965
12966 return ret;
12967 };
12968
12969 Writable.prototype.cork = function() {
12970 var state = this._writableState;
12971
12972 state.corked++;
12973 };
12974
12975 Writable.prototype.uncork = function() {
12976 var state = this._writableState;
12977
12978 if (state.corked) {
12979 state.corked--;
12980
12981 if (!state.writing &&
12982 !state.corked &&
12983 !state.finished &&
12984 !state.bufferProcessing &&
12985 state.buffer.length)
12986 clearBuffer(this, state);
12987 }
12988 };
12989
12990 function decodeChunk(state, chunk, encoding) {
12991 if (!state.objectMode &&
12992 state.decodeStrings !== false &&
12993 util.isString(chunk)) {
12994 chunk = new Buffer(chunk, encoding);
12995 }
12996 return chunk;
12997 }
12998
12999 // if we're already writing something, then just put this
13000 // in the queue, and wait our turn. Otherwise, call _write
13001 // If we return false, then we need a drain event, so set that flag.
13002 function writeOrBuffer(stream, state, chunk, encoding, cb) {
13003 chunk = decodeChunk(state, chunk, encoding);
13004 if (util.isBuffer(chunk))
13005 encoding = 'buffer';
13006 var len = state.objectMode ? 1 : chunk.length;
13007
13008 state.length += len;
13009
13010 var ret = state.length < state.highWaterMark;
13011 // we must ensure that previous needDrain will not be reset to false.
13012 if (!ret)
13013 state.needDrain = true;
13014
13015 if (state.writing || state.corked)
13016 state.buffer.push(new WriteReq(chunk, encoding, cb));
13017 else
13018 doWrite(stream, state, false, len, chunk, encoding, cb);
13019
13020 return ret;
13021 }
13022
13023 function doWrite(stream, state, writev, len, chunk, encoding, cb) {
13024 state.writelen = len;
13025 state.writecb = cb;
13026 state.writing = true;
13027 state.sync = true;
13028 if (writev)
13029 stream._writev(chunk, state.onwrite);
13030 else
13031 stream._write(chunk, encoding, state.onwrite);
13032 state.sync = false;
13033 }
13034
13035 function onwriteError(stream, state, sync, er, cb) {
13036 if (sync)
13037 process.nextTick(function() {
13038 state.pendingcb--;
13039 cb(er);
13040 });
13041 else {
13042 state.pendingcb--;
13043 cb(er);
13044 }
13045
13046 stream._writableState.errorEmitted = true;
13047 stream.emit('error', er);
13048 }
13049
13050 function onwriteStateUpdate(state) {
13051 state.writing = false;
13052 state.writecb = null;
13053 state.length -= state.writelen;
13054 state.writelen = 0;
13055 }
13056
13057 function onwrite(stream, er) {
13058 var state = stream._writableState;
13059 var sync = state.sync;
13060 var cb = state.writecb;
13061
13062 onwriteStateUpdate(state);
13063
13064 if (er)
13065 onwriteError(stream, state, sync, er, cb);
13066 else {
13067 // Check if we're actually ready to finish, but don't emit yet
13068 var finished = needFinish(stream, state);
13069
13070 if (!finished &&
13071 !state.corked &&
13072 !state.bufferProcessing &&
13073 state.buffer.length) {
13074 clearBuffer(stream, state);
13075 }
13076
13077 if (sync) {
13078 process.nextTick(function() {
13079 afterWrite(stream, state, finished, cb);
13080 });
13081 } else {
13082 afterWrite(stream, state, finished, cb);
13083 }
13084 }
13085 }
13086
13087 function afterWrite(stream, state, finished, cb) {
13088 if (!finished)
13089 onwriteDrain(stream, state);
13090 state.pendingcb--;
13091 cb();
13092 finishMaybe(stream, state);
13093 }
13094
13095 // Must force callback to be called on nextTick, so that we don't
13096 // emit 'drain' before the write() consumer gets the 'false' return
13097 // value, and has a chance to attach a 'drain' listener.
13098 function onwriteDrain(stream, state) {
13099 if (state.length === 0 && state.needDrain) {
13100 state.needDrain = false;
13101 stream.emit('drain');
13102 }
13103 }
13104
13105
13106 // if there's something in the buffer waiting, then process it
13107 function clearBuffer(stream, state) {
13108 state.bufferProcessing = true;
13109
13110 if (stream._writev && state.buffer.length > 1) {
13111 // Fast case, write everything using _writev()
13112 var cbs = [];
13113 for (var c = 0; c < state.buffer.length; c++)
13114 cbs.push(state.buffer[c].callback);
13115
13116 // count the one we are adding, as well.
13117 // TODO(isaacs) clean this up
13118 state.pendingcb++;
13119 doWrite(stream, state, true, state.length, state.buffer, '', function(err) {
13120 for (var i = 0; i < cbs.length; i++) {
13121 state.pendingcb--;
13122 cbs[i](err);
13123 }
13124 });
13125
13126 // Clear buffer
13127 state.buffer = [];
13128 } else {
13129 // Slow case, write chunks one-by-one
13130 for (var c = 0; c < state.buffer.length; c++) {
13131 var entry = state.buffer[c];
13132 var chunk = entry.chunk;
13133 var encoding = entry.encoding;
13134 var cb = entry.callback;
13135 var len = state.objectMode ? 1 : chunk.length;
13136
13137 doWrite(stream, state, false, len, chunk, encoding, cb);
13138
13139 // if we didn't call the onwrite immediately, then
13140 // it means that we need to wait until it does.
13141 // also, that means that the chunk and cb are currently
13142 // being processed, so move the buffer counter past them.
13143 if (state.writing) {
13144 c++;
13145 break;
13146 }
13147 }
13148
13149 if (c < state.buffer.length)
13150 state.buffer = state.buffer.slice(c);
13151 else
13152 state.buffer.length = 0;
13153 }
13154
13155 state.bufferProcessing = false;
13156 }
13157
13158 Writable.prototype._write = function(chunk, encoding, cb) {
13159 cb(new Error('not implemented'));
13160
13161 };
13162
13163 Writable.prototype._writev = null;
13164
13165 Writable.prototype.end = function(chunk, encoding, cb) {
13166 var state = this._writableState;
13167
13168 if (util.isFunction(chunk)) {
13169 cb = chunk;
13170 chunk = null;
13171 encoding = null;
13172 } else if (util.isFunction(encoding)) {
13173 cb = encoding;
13174 encoding = null;
13175 }
13176
13177 if (!util.isNullOrUndefined(chunk))
13178 this.write(chunk, encoding);
13179
13180 // .end() fully uncorks
13181 if (state.corked) {
13182 state.corked = 1;
13183 this.uncork();
13184 }
13185
13186 // ignore unnecessary end() calls.
13187 if (!state.ending && !state.finished)
13188 endWritable(this, state, cb);
13189 };
13190
13191
13192 function needFinish(stream, state) {
13193 return (state.ending &&
13194 state.length === 0 &&
13195 !state.finished &&
13196 !state.writing);
13197 }
13198
13199 function prefinish(stream, state) {
13200 if (!state.prefinished) {
13201 state.prefinished = true;
13202 stream.emit('prefinish');
13203 }
13204 }
13205
13206 function finishMaybe(stream, state) {
13207 var need = needFinish(stream, state);
13208 if (need) {
13209 if (state.pendingcb === 0) {
13210 prefinish(stream, state);
13211 state.finished = true;
13212 stream.emit('finish');
13213 } else
13214 prefinish(stream, state);
13215 }
13216 return need;
13217 }
13218
13219 function endWritable(stream, state, cb) {
13220 state.ending = true;
13221 finishMaybe(stream, state);
13222 if (cb) {
13223 if (state.finished)
13224 process.nextTick(cb);
13225 else
13226 stream.once('finish', cb);
13227 }
13228 state.ended = true;
13229 }
13230
13231 }).call(this,require('_process'))
13232 },{"./_stream_duplex":16,"_process":14,"buffer":7,"core-util-is":21,"inherits":12,"stream":26}],21:[function(require,module,exports){
13233 (function (Buffer){
13234 // Copyright Joyent, Inc. and other Node contributors.
13235 //
13236 // Permission is hereby granted, free of charge, to any person obtaining a
13237 // copy of this software and associated documentation files (the
13238 // "Software"), to deal in the Software without restriction, including
13239 // without limitation the rights to use, copy, modify, merge, publish,
13240 // distribute, sublicense, and/or sell copies of the Software, and to permit
13241 // persons to whom the Software is furnished to do so, subject to the
13242 // following conditions:
13243 //
13244 // The above copyright notice and this permission notice shall be included
13245 // in all copies or substantial portions of the Software.
13246 //
13247 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
13248 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
13249 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
13250 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
13251 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
13252 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
13253 // USE OR OTHER DEALINGS IN THE SOFTWARE.
13254
13255 // NOTE: These type checking functions intentionally don't use `instanceof`
13256 // because it is fragile and can be easily faked with `Object.create()`.
13257 function isArray(ar) {
13258 return Array.isArray(ar);
13259 }
13260 exports.isArray = isArray;
13261
13262 function isBoolean(arg) {
13263 return typeof arg === 'boolean';
13264 }
13265 exports.isBoolean = isBoolean;
13266
13267 function isNull(arg) {
13268 return arg === null;
13269 }
13270 exports.isNull = isNull;
13271
13272 function isNullOrUndefined(arg) {
13273 return arg == null;
13274 }
13275 exports.isNullOrUndefined = isNullOrUndefined;
13276
13277 function isNumber(arg) {
13278 return typeof arg === 'number';
13279 }
13280 exports.isNumber = isNumber;
13281
13282 function isString(arg) {
13283 return typeof arg === 'string';
13284 }
13285 exports.isString = isString;
13286
13287 function isSymbol(arg) {
13288 return typeof arg === 'symbol';
13289 }
13290 exports.isSymbol = isSymbol;
13291
13292 function isUndefined(arg) {
13293 return arg === void 0;
13294 }
13295 exports.isUndefined = isUndefined;
13296
13297 function isRegExp(re) {
13298 return isObject(re) && objectToString(re) === '[object RegExp]';
13299 }
13300 exports.isRegExp = isRegExp;
13301
13302 function isObject(arg) {
13303 return typeof arg === 'object' && arg !== null;
13304 }
13305 exports.isObject = isObject;
13306
13307 function isDate(d) {
13308 return isObject(d) && objectToString(d) === '[object Date]';
13309 }
13310 exports.isDate = isDate;
13311
13312 function isError(e) {
13313 return isObject(e) &&
13314 (objectToString(e) === '[object Error]' || e instanceof Error);
13315 }
13316 exports.isError = isError;
13317
13318 function isFunction(arg) {
13319 return typeof arg === 'function';
13320 }
13321 exports.isFunction = isFunction;
13322
13323 function isPrimitive(arg) {
13324 return arg === null ||
13325 typeof arg === 'boolean' ||
13326 typeof arg === 'number' ||
13327 typeof arg === 'string' ||
13328 typeof arg === 'symbol' || // ES6 symbol
13329 typeof arg === 'undefined';
13330 }
13331 exports.isPrimitive = isPrimitive;
13332
13333 function isBuffer(arg) {
13334 return Buffer.isBuffer(arg);
13335 }
13336 exports.isBuffer = isBuffer;
13337
13338 function objectToString(o) {
13339 return Object.prototype.toString.call(o);
13340 }
13341 }).call(this,require("buffer").Buffer)
13342 },{"buffer":7}],22:[function(require,module,exports){
13343 module.exports = require("./lib/_stream_passthrough.js")
13344
13345 },{"./lib/_stream_passthrough.js":17}],23:[function(require,module,exports){
13346 exports = module.exports = require('./lib/_stream_readable.js');
13347 exports.Stream = require('stream');
13348 exports.Readable = exports;
13349 exports.Writable = require('./lib/_stream_writable.js');
13350 exports.Duplex = require('./lib/_stream_duplex.js');
13351 exports.Transform = require('./lib/_stream_transform.js');
13352 exports.PassThrough = require('./lib/_stream_passthrough.js');
13353
13354 },{"./lib/_stream_duplex.js":16,"./lib/_stream_passthrough.js":17,"./lib/_stream_readable.js":18,"./lib/_stream_transform.js":19,"./lib/_stream_writable.js":20,"stream":26}],24:[function(require,module,exports){
13355 module.exports = require("./lib/_stream_transform.js")
13356
13357 },{"./lib/_stream_transform.js":19}],25:[function(require,module,exports){
13358 module.exports = require("./lib/_stream_writable.js")
13359
13360 },{"./lib/_stream_writable.js":20}],26:[function(require,module,exports){
13361 // Copyright Joyent, Inc. and other Node contributors.
13362 //
13363 // Permission is hereby granted, free of charge, to any person obtaining a
13364 // copy of this software and associated documentation files (the
13365 // "Software"), to deal in the Software without restriction, including
13366 // without limitation the rights to use, copy, modify, merge, publish,
13367 // distribute, sublicense, and/or sell copies of the Software, and to permit
13368 // persons to whom the Software is furnished to do so, subject to the
13369 // following conditions:
13370 //
13371 // The above copyright notice and this permission notice shall be included
13372 // in all copies or substantial portions of the Software.
13373 //
13374 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
13375 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
13376 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
13377 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
13378 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
13379 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
13380 // USE OR OTHER DEALINGS IN THE SOFTWARE.
13381
13382 module.exports = Stream;
13383
13384 var EE = require('events').EventEmitter;
13385 var inherits = require('inherits');
13386
13387 inherits(Stream, EE);
13388 Stream.Readable = require('readable-stream/readable.js');
13389 Stream.Writable = require('readable-stream/writable.js');
13390 Stream.Duplex = require('readable-stream/duplex.js');
13391 Stream.Transform = require('readable-stream/transform.js');
13392 Stream.PassThrough = require('readable-stream/passthrough.js');
13393
13394 // Backwards-compat with node 0.4.x
13395 Stream.Stream = Stream;
13396
13397
13398
13399 // old-style streams. Note that the pipe method (the only relevant
13400 // part of this class) is overridden in the Readable class.
13401
13402 function Stream() {
13403 EE.call(this);
13404 }
13405
13406 Stream.prototype.pipe = function(dest, options) {
13407 var source = this;
13408
13409 function ondata(chunk) {
13410 if (dest.writable) {
13411 if (false === dest.write(chunk) && source.pause) {
13412 source.pause();
13413 }
13414 }
13415 }
13416
13417 source.on('data', ondata);
13418
13419 function ondrain() {
13420 if (source.readable && source.resume) {
13421 source.resume();
13422 }
13423 }
13424
13425 dest.on('drain', ondrain);
13426
13427 // If the 'end' option is not supplied, dest.end() will be called when
13428 // source gets the 'end' or 'close' events. Only dest.end() once.
13429 if (!dest._isStdio && (!options || options.end !== false)) {
13430 source.on('end', onend);
13431 source.on('close', onclose);
13432 }
13433
13434 var didOnEnd = false;
13435 function onend() {
13436 if (didOnEnd) return;
13437 didOnEnd = true;
13438
13439 dest.end();
13440 }
13441
13442
13443 function onclose() {
13444 if (didOnEnd) return;
13445 didOnEnd = true;
13446
13447 if (typeof dest.destroy === 'function') dest.destroy();
13448 }
13449
13450 // don't leave dangling pipes when there are errors.
13451 function onerror(er) {
13452 cleanup();
13453 if (EE.listenerCount(this, 'error') === 0) {
13454 throw er; // Unhandled stream error in pipe.
13455 }
13456 }
13457
13458 source.on('error', onerror);
13459 dest.on('error', onerror);
13460
13461 // remove all the event listeners that were added.
13462 function cleanup() {
13463 source.removeListener('data', ondata);
13464 dest.removeListener('drain', ondrain);
13465
13466 source.removeListener('end', onend);
13467 source.removeListener('close', onclose);
13468
13469 source.removeListener('error', onerror);
13470 dest.removeListener('error', onerror);
13471
13472 source.removeListener('end', cleanup);
13473 source.removeListener('close', cleanup);
13474
13475 dest.removeListener('close', cleanup);
13476 }
13477
13478 source.on('end', cleanup);
13479 source.on('close', cleanup);
13480
13481 dest.on('close', cleanup);
13482
13483 dest.emit('pipe', source);
13484
13485 // Allow for unix-like usage: A.pipe(B).pipe(C)
13486 return dest;
13487 };
13488
13489 },{"events":11,"inherits":12,"readable-stream/duplex.js":15,"readable-stream/passthrough.js":22,"readable-stream/readable.js":23,"readable-stream/transform.js":24,"readable-stream/writable.js":25}],27:[function(require,module,exports){
13490 // Copyright Joyent, Inc. and other Node contributors.
13491 //
13492 // Permission is hereby granted, free of charge, to any person obtaining a
13493 // copy of this software and associated documentation files (the
13494 // "Software"), to deal in the Software without restriction, including
13495 // without limitation the rights to use, copy, modify, merge, publish,
13496 // distribute, sublicense, and/or sell copies of the Software, and to permit
13497 // persons to whom the Software is furnished to do so, subject to the
13498 // following conditions:
13499 //
13500 // The above copyright notice and this permission notice shall be included
13501 // in all copies or substantial portions of the Software.
13502 //
13503 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
13504 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
13505 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
13506 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
13507 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
13508 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
13509 // USE OR OTHER DEALINGS IN THE SOFTWARE.
13510
13511 var Buffer = require('buffer').Buffer;
13512
13513 var isBufferEncoding = Buffer.isEncoding
13514 || function(encoding) {
13515 switch (encoding && encoding.toLowerCase()) {
13516 case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true;
13517 default: return false;
13518 }
13519 }
13520
13521
13522 function assertEncoding(encoding) {
13523 if (encoding && !isBufferEncoding(encoding)) {
13524 throw new Error('Unknown encoding: ' + encoding);
13525 }
13526 }
13527
13528 // StringDecoder provides an interface for efficiently splitting a series of
13529 // buffers into a series of JS strings without breaking apart multi-byte
13530 // characters. CESU-8 is handled as part of the UTF-8 encoding.
13531 //
13532 // @TODO Handling all encodings inside a single object makes it very difficult
13533 // to reason about this code, so it should be split up in the future.
13534 // @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code
13535 // points as used by CESU-8.
13536 var StringDecoder = exports.StringDecoder = function(encoding) {
13537 this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');
13538 assertEncoding(encoding);
13539 switch (this.encoding) {
13540 case 'utf8':
13541 // CESU-8 represents each of Surrogate Pair by 3-bytes
13542 this.surrogateSize = 3;
13543 break;
13544 case 'ucs2':
13545 case 'utf16le':
13546 // UTF-16 represents each of Surrogate Pair by 2-bytes
13547 this.surrogateSize = 2;
13548 this.detectIncompleteChar = utf16DetectIncompleteChar;
13549 break;
13550 case 'base64':
13551 // Base-64 stores 3 bytes in 4 chars, and pads the remainder.
13552 this.surrogateSize = 3;
13553 this.detectIncompleteChar = base64DetectIncompleteChar;
13554 break;
13555 default:
13556 this.write = passThroughWrite;
13557 return;
13558 }
13559
13560 // Enough space to store all bytes of a single character. UTF-8 needs 4
13561 // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).
13562 this.charBuffer = new Buffer(6);
13563 // Number of bytes received for the current incomplete multi-byte character.
13564 this.charReceived = 0;
13565 // Number of bytes expected for the current incomplete multi-byte character.
13566 this.charLength = 0;
13567 };
13568
13569
13570 // write decodes the given buffer and returns it as JS string that is
13571 // guaranteed to not contain any partial multi-byte characters. Any partial
13572 // character found at the end of the buffer is buffered up, and will be
13573 // returned when calling write again with the remaining bytes.
13574 //
13575 // Note: Converting a Buffer containing an orphan surrogate to a String
13576 // currently works, but converting a String to a Buffer (via `new Buffer`, or
13577 // Buffer#write) will replace incomplete surrogates with the unicode
13578 // replacement character. See https://codereview.chromium.org/121173009/ .
13579 StringDecoder.prototype.write = function(buffer) {
13580 var charStr = '';
13581 // if our last write ended with an incomplete multibyte character
13582 while (this.charLength) {
13583 // determine how many remaining bytes this buffer has to offer for this char
13584 var available = (buffer.length >= this.charLength - this.charReceived) ?
13585 this.charLength - this.charReceived :
13586 buffer.length;
13587
13588 // add the new bytes to the char buffer
13589 buffer.copy(this.charBuffer, this.charReceived, 0, available);
13590 this.charReceived += available;
13591
13592 if (this.charReceived < this.charLength) {
13593 // still not enough chars in this buffer? wait for more ...
13594 return '';
13595 }
13596
13597 // remove bytes belonging to the current character from the buffer
13598 buffer = buffer.slice(available, buffer.length);
13599
13600 // get the character that was split
13601 charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);
13602
13603 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
13604 var charCode = charStr.charCodeAt(charStr.length - 1);
13605 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
13606 this.charLength += this.surrogateSize;
13607 charStr = '';
13608 continue;
13609 }
13610 this.charReceived = this.charLength = 0;
13611
13612 // if there are no more bytes in this buffer, just emit our char
13613 if (buffer.length === 0) {
13614 return charStr;
13615 }
13616 break;
13617 }
13618
13619 // determine and set charLength / charReceived
13620 this.detectIncompleteChar(buffer);
13621
13622 var end = buffer.length;
13623 if (this.charLength) {
13624 // buffer the incomplete character bytes we got
13625 buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);
13626 end -= this.charReceived;
13627 }
13628
13629 charStr += buffer.toString(this.encoding, 0, end);
13630
13631 var end = charStr.length - 1;
13632 var charCode = charStr.charCodeAt(end);
13633 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
13634 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
13635 var size = this.surrogateSize;
13636 this.charLength += size;
13637 this.charReceived += size;
13638 this.charBuffer.copy(this.charBuffer, size, 0, size);
13639 buffer.copy(this.charBuffer, 0, 0, size);
13640 return charStr.substring(0, end);
13641 }
13642
13643 // or just emit the charStr
13644 return charStr;
13645 };
13646
13647 // detectIncompleteChar determines if there is an incomplete UTF-8 character at
13648 // the end of the given buffer. If so, it sets this.charLength to the byte
13649 // length that character, and sets this.charReceived to the number of bytes
13650 // that are available for this character.
13651 StringDecoder.prototype.detectIncompleteChar = function(buffer) {
13652 // determine how many bytes we have to check at the end of this buffer
13653 var i = (buffer.length >= 3) ? 3 : buffer.length;
13654
13655 // Figure out if one of the last i bytes of our buffer announces an
13656 // incomplete char.
13657 for (; i > 0; i--) {
13658 var c = buffer[buffer.length - i];
13659
13660 // See http://en.wikipedia.org/wiki/UTF-8#Description
13661
13662 // 110XXXXX
13663 if (i == 1 && c >> 5 == 0x06) {
13664 this.charLength = 2;
13665 break;
13666 }
13667
13668 // 1110XXXX
13669 if (i <= 2 && c >> 4 == 0x0E) {
13670 this.charLength = 3;
13671 break;
13672 }
13673
13674 // 11110XXX
13675 if (i <= 3 && c >> 3 == 0x1E) {
13676 this.charLength = 4;
13677 break;
13678 }
13679 }
13680 this.charReceived = i;
13681 };
13682
13683 StringDecoder.prototype.end = function(buffer) {
13684 var res = '';
13685 if (buffer && buffer.length)
13686 res = this.write(buffer);
13687
13688 if (this.charReceived) {
13689 var cr = this.charReceived;
13690 var buf = this.charBuffer;
13691 var enc = this.encoding;
13692 res += buf.slice(0, cr).toString(enc);
13693 }
13694
13695 return res;
13696 };
13697
13698 function passThroughWrite(buffer) {
13699 return buffer.toString(this.encoding);
13700 }
13701
13702 function utf16DetectIncompleteChar(buffer) {
13703 this.charReceived = buffer.length % 2;
13704 this.charLength = this.charReceived ? 2 : 0;
13705 }
13706
13707 function base64DetectIncompleteChar(buffer) {
13708 this.charReceived = buffer.length % 3;
13709 this.charLength = this.charReceived ? 3 : 0;
13710 }
13711
13712 },{"buffer":7}],28:[function(require,module,exports){
13713 module.exports = function isBuffer(arg) {
13714 return arg && typeof arg === 'object'
13715 && typeof arg.copy === 'function'
13716 && typeof arg.fill === 'function'
13717 && typeof arg.readUInt8 === 'function';
13718 }
13719 },{}],29:[function(require,module,exports){
13720 (function (process,global){
13721 // Copyright Joyent, Inc. and other Node contributors.
13722 //
13723 // Permission is hereby granted, free of charge, to any person obtaining a
13724 // copy of this software and associated documentation files (the
13725 // "Software"), to deal in the Software without restriction, including
13726 // without limitation the rights to use, copy, modify, merge, publish,
13727 // distribute, sublicense, and/or sell copies of the Software, and to permit
13728 // persons to whom the Software is furnished to do so, subject to the
13729 // following conditions:
13730 //
13731 // The above copyright notice and this permission notice shall be included
13732 // in all copies or substantial portions of the Software.
13733 //
13734 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
13735 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
13736 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
13737 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
13738 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
13739 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
13740 // USE OR OTHER DEALINGS IN THE SOFTWARE.
13741
13742 var formatRegExp = /%[sdj%]/g;
13743 exports.format = function(f) {
13744 if (!isString(f)) {
13745 var objects = [];
13746 for (var i = 0; i < arguments.length; i++) {
13747 objects.push(inspect(arguments[i]));
13748 }
13749 return objects.join(' ');
13750 }
13751
13752 var i = 1;
13753 var args = arguments;
13754 var len = args.length;
13755 var str = String(f).replace(formatRegExp, function(x) {
13756 if (x === '%%') return '%';
13757 if (i >= len) return x;
13758 switch (x) {
13759 case '%s': return String(args[i++]);
13760 case '%d': return Number(args[i++]);
13761 case '%j':
13762 try {
13763 return JSON.stringify(args[i++]);
13764 } catch (_) {
13765 return '[Circular]';
13766 }
13767 default:
13768 return x;
13769 }
13770 });
13771 for (var x = args[i]; i < len; x = args[++i]) {
13772 if (isNull(x) || !isObject(x)) {
13773 str += ' ' + x;
13774 } else {
13775 str += ' ' + inspect(x);
13776 }
13777 }
13778 return str;
13779 };
13780
13781
13782 // Mark that a method should not be used.
13783 // Returns a modified function which warns once by default.
13784 // If --no-deprecation is set, then it is a no-op.
13785 exports.deprecate = function(fn, msg) {
13786 // Allow for deprecating things in the process of starting up.
13787 if (isUndefined(global.process)) {
13788 return function() {
13789 return exports.deprecate(fn, msg).apply(this, arguments);
13790 };
13791 }
13792
13793 if (process.noDeprecation === true) {
13794 return fn;
13795 }
13796
13797 var warned = false;
13798 function deprecated() {
13799 if (!warned) {
13800 if (process.throwDeprecation) {
13801 throw new Error(msg);
13802 } else if (process.traceDeprecation) {
13803 console.trace(msg);
13804 } else {
13805 console.error(msg);
13806 }
13807 warned = true;
13808 }
13809 return fn.apply(this, arguments);
13810 }
13811
13812 return deprecated;
13813 };
13814
13815
13816 var debugs = {};
13817 var debugEnviron;
13818 exports.debuglog = function(set) {
13819 if (isUndefined(debugEnviron))
13820 debugEnviron = process.env.NODE_DEBUG || '';
13821 set = set.toUpperCase();
13822 if (!debugs[set]) {
13823 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
13824 var pid = process.pid;
13825 debugs[set] = function() {
13826 var msg = exports.format.apply(exports, arguments);
13827 console.error('%s %d: %s', set, pid, msg);
13828 };
13829 } else {
13830 debugs[set] = function() {};
13831 }
13832 }
13833 return debugs[set];
13834 };
13835
13836
13837 /**
13838 * Echos the value of a value. Trys to print the value out
13839 * in the best way possible given the different types.
13840 *
13841 * @param {Object} obj The object to print out.
13842 * @param {Object} opts Optional options object that alters the output.
13843 */
13844 /* legacy: obj, showHidden, depth, colors*/
13845 function inspect(obj, opts) {
13846 // default options
13847 var ctx = {
13848 seen: [],
13849 stylize: stylizeNoColor
13850 };
13851 // legacy...
13852 if (arguments.length >= 3) ctx.depth = arguments[2];
13853 if (arguments.length >= 4) ctx.colors = arguments[3];
13854 if (isBoolean(opts)) {
13855 // legacy...
13856 ctx.showHidden = opts;
13857 } else if (opts) {
13858 // got an "options" object
13859 exports._extend(ctx, opts);
13860 }
13861 // set default options
13862 if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
13863 if (isUndefined(ctx.depth)) ctx.depth = 2;
13864 if (isUndefined(ctx.colors)) ctx.colors = false;
13865 if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
13866 if (ctx.colors) ctx.stylize = stylizeWithColor;
13867 return formatValue(ctx, obj, ctx.depth);
13868 }
13869 exports.inspect = inspect;
13870
13871
13872 // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
13873 inspect.colors = {
13874 'bold' : [1, 22],
13875 'italic' : [3, 23],
13876 'underline' : [4, 24],
13877 'inverse' : [7, 27],
13878 'white' : [37, 39],
13879 'grey' : [90, 39],
13880 'black' : [30, 39],
13881 'blue' : [34, 39],
13882 'cyan' : [36, 39],
13883 'green' : [32, 39],
13884 'magenta' : [35, 39],
13885 'red' : [31, 39],
13886 'yellow' : [33, 39]
13887 };
13888
13889 // Don't use 'blue' not visible on cmd.exe
13890 inspect.styles = {
13891 'special': 'cyan',
13892 'number': 'yellow',
13893 'boolean': 'yellow',
13894 'undefined': 'grey',
13895 'null': 'bold',
13896 'string': 'green',
13897 'date': 'magenta',
13898 // "name": intentionally not styling
13899 'regexp': 'red'
13900 };
13901
13902
13903 function stylizeWithColor(str, styleType) {
13904 var style = inspect.styles[styleType];
13905
13906 if (style) {
13907 return '\u001b[' + inspect.colors[style][0] + 'm' + str +
13908 '\u001b[' + inspect.colors[style][1] + 'm';
13909 } else {
13910 return str;
13911 }
13912 }
13913
13914
13915 function stylizeNoColor(str, styleType) {
13916 return str;
13917 }
13918
13919
13920 function arrayToHash(array) {
13921 var hash = {};
13922
13923 array.forEach(function(val, idx) {
13924 hash[val] = true;
13925 });
13926
13927 return hash;
13928 }
13929
13930
13931 function formatValue(ctx, value, recurseTimes) {
13932 // Provide a hook for user-specified inspect functions.
13933 // Check that value is an object with an inspect function on it
13934 if (ctx.customInspect &&
13935 value &&
13936 isFunction(value.inspect) &&
13937 // Filter out the util module, it's inspect function is special
13938 value.inspect !== exports.inspect &&
13939 // Also filter out any prototype objects using the circular check.
13940 !(value.constructor && value.constructor.prototype === value)) {
13941 var ret = value.inspect(recurseTimes, ctx);
13942 if (!isString(ret)) {
13943 ret = formatValue(ctx, ret, recurseTimes);
13944 }
13945 return ret;
13946 }
13947
13948 // Primitive types cannot have properties
13949 var primitive = formatPrimitive(ctx, value);
13950 if (primitive) {
13951 return primitive;
13952 }
13953
13954 // Look up the keys of the object.
13955 var keys = Object.keys(value);
13956 var visibleKeys = arrayToHash(keys);
13957
13958 if (ctx.showHidden) {
13959 keys = Object.getOwnPropertyNames(value);
13960 }
13961
13962 // IE doesn't make error fields non-enumerable
13963 // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
13964 if (isError(value)
13965 && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
13966 return formatError(value);
13967 }
13968
13969 // Some type of object without properties can be shortcutted.
13970 if (keys.length === 0) {
13971 if (isFunction(value)) {
13972 var name = value.name ? ': ' + value.name : '';
13973 return ctx.stylize('[Function' + name + ']', 'special');
13974 }
13975 if (isRegExp(value)) {
13976 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
13977 }
13978 if (isDate(value)) {
13979 return ctx.stylize(Date.prototype.toString.call(value), 'date');
13980 }
13981 if (isError(value)) {
13982 return formatError(value);
13983 }
13984 }
13985
13986 var base = '', array = false, braces = ['{', '}'];
13987
13988 // Make Array say that they are Array
13989 if (isArray(value)) {
13990 array = true;
13991 braces = ['[', ']'];
13992 }
13993
13994 // Make functions say that they are functions
13995 if (isFunction(value)) {
13996 var n = value.name ? ': ' + value.name : '';
13997 base = ' [Function' + n + ']';
13998 }
13999
14000 // Make RegExps say that they are RegExps
14001 if (isRegExp(value)) {
14002 base = ' ' + RegExp.prototype.toString.call(value);
14003 }
14004
14005 // Make dates with properties first say the date
14006 if (isDate(value)) {
14007 base = ' ' + Date.prototype.toUTCString.call(value);
14008 }
14009
14010 // Make error with message first say the error
14011 if (isError(value)) {
14012 base = ' ' + formatError(value);
14013 }
14014
14015 if (keys.length === 0 && (!array || value.length == 0)) {
14016 return braces[0] + base + braces[1];
14017 }
14018
14019 if (recurseTimes < 0) {
14020 if (isRegExp(value)) {
14021 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
14022 } else {
14023 return ctx.stylize('[Object]', 'special');
14024 }
14025 }
14026
14027 ctx.seen.push(value);
14028
14029 var output;
14030 if (array) {
14031 output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
14032 } else {
14033 output = keys.map(function(key) {
14034 return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
14035 });
14036 }
14037
14038 ctx.seen.pop();
14039
14040 return reduceToSingleString(output, base, braces);
14041 }
14042
14043
14044 function formatPrimitive(ctx, value) {
14045 if (isUndefined(value))
14046 return ctx.stylize('undefined', 'undefined');
14047 if (isString(value)) {
14048 var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
14049 .replace(/'/g, "\\'")
14050 .replace(/\\"/g, '"') + '\'';
14051 return ctx.stylize(simple, 'string');
14052 }
14053 if (isNumber(value))
14054 return ctx.stylize('' + value, 'number');
14055 if (isBoolean(value))
14056 return ctx.stylize('' + value, 'boolean');
14057 // For some reason typeof null is "object", so special case here.
14058 if (isNull(value))
14059 return ctx.stylize('null', 'null');
14060 }
14061
14062
14063 function formatError(value) {
14064 return '[' + Error.prototype.toString.call(value) + ']';
14065 }
14066
14067
14068 function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
14069 var output = [];
14070 for (var i = 0, l = value.length; i < l; ++i) {
14071 if (hasOwnProperty(value, String(i))) {
14072 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
14073 String(i), true));
14074 } else {
14075 output.push('');
14076 }
14077 }
14078 keys.forEach(function(key) {
14079 if (!key.match(/^\d+$/)) {
14080 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
14081 key, true));
14082 }
14083 });
14084 return output;
14085 }
14086
14087
14088 function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
14089 var name, str, desc;
14090 desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
14091 if (desc.get) {
14092 if (desc.set) {
14093 str = ctx.stylize('[Getter/Setter]', 'special');
14094 } else {
14095 str = ctx.stylize('[Getter]', 'special');
14096 }
14097 } else {
14098 if (desc.set) {
14099 str = ctx.stylize('[Setter]', 'special');
14100 }
14101 }
14102 if (!hasOwnProperty(visibleKeys, key)) {
14103 name = '[' + key + ']';
14104 }
14105 if (!str) {
14106 if (ctx.seen.indexOf(desc.value) < 0) {
14107 if (isNull(recurseTimes)) {
14108 str = formatValue(ctx, desc.value, null);
14109 } else {
14110 str = formatValue(ctx, desc.value, recurseTimes - 1);
14111 }
14112 if (str.indexOf('\n') > -1) {
14113 if (array) {
14114 str = str.split('\n').map(function(line) {
14115 return ' ' + line;
14116 }).join('\n').substr(2);
14117 } else {
14118 str = '\n' + str.split('\n').map(function(line) {
14119 return ' ' + line;
14120 }).join('\n');
14121 }
14122 }
14123 } else {
14124 str = ctx.stylize('[Circular]', 'special');
14125 }
14126 }
14127 if (isUndefined(name)) {
14128 if (array && key.match(/^\d+$/)) {
14129 return str;
14130 }
14131 name = JSON.stringify('' + key);
14132 if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
14133 name = name.substr(1, name.length - 2);
14134 name = ctx.stylize(name, 'name');
14135 } else {
14136 name = name.replace(/'/g, "\\'")
14137 .replace(/\\"/g, '"')
14138 .replace(/(^"|"$)/g, "'");
14139 name = ctx.stylize(name, 'string');
14140 }
14141 }
14142
14143 return name + ': ' + str;
14144 }
14145
14146
14147 function reduceToSingleString(output, base, braces) {
14148 var numLinesEst = 0;
14149 var length = output.reduce(function(prev, cur) {
14150 numLinesEst++;
14151 if (cur.indexOf('\n') >= 0) numLinesEst++;
14152 return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
14153 }, 0);
14154
14155 if (length > 60) {
14156 return braces[0] +
14157 (base === '' ? '' : base + '\n ') +
14158 ' ' +
14159 output.join(',\n ') +
14160 ' ' +
14161 braces[1];
14162 }
14163
14164 return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
14165 }
14166
14167
14168 // NOTE: These type checking functions intentionally don't use `instanceof`
14169 // because it is fragile and can be easily faked with `Object.create()`.
14170 function isArray(ar) {
14171 return Array.isArray(ar);
14172 }
14173 exports.isArray = isArray;
14174
14175 function isBoolean(arg) {
14176 return typeof arg === 'boolean';
14177 }
14178 exports.isBoolean = isBoolean;
14179
14180 function isNull(arg) {
14181 return arg === null;
14182 }
14183 exports.isNull = isNull;
14184
14185 function isNullOrUndefined(arg) {
14186 return arg == null;
14187 }
14188 exports.isNullOrUndefined = isNullOrUndefined;
14189
14190 function isNumber(arg) {
14191 return typeof arg === 'number';
14192 }
14193 exports.isNumber = isNumber;
14194
14195 function isString(arg) {
14196 return typeof arg === 'string';
14197 }
14198 exports.isString = isString;
14199
14200 function isSymbol(arg) {
14201 return typeof arg === 'symbol';
14202 }
14203 exports.isSymbol = isSymbol;
14204
14205 function isUndefined(arg) {
14206 return arg === void 0;
14207 }
14208 exports.isUndefined = isUndefined;
14209
14210 function isRegExp(re) {
14211 return isObject(re) && objectToString(re) === '[object RegExp]';
14212 }
14213 exports.isRegExp = isRegExp;
14214
14215 function isObject(arg) {
14216 return typeof arg === 'object' && arg !== null;
14217 }
14218 exports.isObject = isObject;
14219
14220 function isDate(d) {
14221 return isObject(d) && objectToString(d) === '[object Date]';
14222 }
14223 exports.isDate = isDate;
14224
14225 function isError(e) {
14226 return isObject(e) &&
14227 (objectToString(e) === '[object Error]' || e instanceof Error);
14228 }
14229 exports.isError = isError;
14230
14231 function isFunction(arg) {
14232 return typeof arg === 'function';
14233 }
14234 exports.isFunction = isFunction;
14235
14236 function isPrimitive(arg) {
14237 return arg === null ||
14238 typeof arg === 'boolean' ||
14239 typeof arg === 'number' ||
14240 typeof arg === 'string' ||
14241 typeof arg === 'symbol' || // ES6 symbol
14242 typeof arg === 'undefined';
14243 }
14244 exports.isPrimitive = isPrimitive;
14245
14246 exports.isBuffer = require('./support/isBuffer');
14247
14248 function objectToString(o) {
14249 return Object.prototype.toString.call(o);
14250 }
14251
14252
14253 function pad(n) {
14254 return n < 10 ? '0' + n.toString(10) : n.toString(10);
14255 }
14256
14257
14258 var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
14259 'Oct', 'Nov', 'Dec'];
14260
14261 // 26 Feb 16:19:34
14262 function timestamp() {
14263 var d = new Date();
14264 var time = [pad(d.getHours()),
14265 pad(d.getMinutes()),
14266 pad(d.getSeconds())].join(':');
14267 return [d.getDate(), months[d.getMonth()], time].join(' ');
14268 }
14269
14270
14271 // log is just a thin wrapper to console.log that prepends a timestamp
14272 exports.log = function() {
14273 console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
14274 };
14275
14276
14277 /**
14278 * Inherit the prototype methods from one constructor into another.
14279 *
14280 * The Function.prototype.inherits from lang.js rewritten as a standalone
14281 * function (not on Function.prototype). NOTE: If this file is to be loaded
14282 * during bootstrapping this function needs to be rewritten using some native
14283 * functions as prototype setup using normal JavaScript does not work as
14284 * expected during bootstrapping (see mirror.js in r114903).
14285 *
14286 * @param {function} ctor Constructor function which needs to inherit the
14287 * prototype.
14288 * @param {function} superCtor Constructor function to inherit prototype from.
14289 */
14290 exports.inherits = require('inherits');
14291
14292 exports._extend = function(origin, add) {
14293 // Don't do anything if add isn't an object
14294 if (!add || !isObject(add)) return origin;
14295
14296 var keys = Object.keys(add);
14297 var i = keys.length;
14298 while (i--) {
14299 origin[keys[i]] = add[keys[i]];
14300 }
14301 return origin;
14302 };
14303
14304 function hasOwnProperty(obj, prop) {
14305 return Object.prototype.hasOwnProperty.call(obj, prop);
14306 }
14307
14308 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
14309 },{"./support/isBuffer":28,"_process":14,"inherits":12}],30:[function(require,module,exports){
14310 // Base58 encoding/decoding
14311 // Originally written by Mike Hearn for BitcoinJ
14312 // Copyright (c) 2011 Google Inc
14313 // Ported to JavaScript by Stefan Thomas
14314 // Merged Buffer refactorings from base58-native by Stephen Pair
14315 // Copyright (c) 2013 BitPay Inc
14316
14317 var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
14318 var ALPHABET_MAP = {}
14319 for(var i = 0; i < ALPHABET.length; i++) {
14320 ALPHABET_MAP[ALPHABET.charAt(i)] = i
14321 }
14322 var BASE = 58
14323
14324 function encode(buffer) {
14325 if (buffer.length === 0) return ''
14326
14327 var i, j, digits = [0]
14328 for (i = 0; i < buffer.length; i++) {
14329 for (j = 0; j < digits.length; j++) digits[j] <<= 8
14330
14331 digits[0] += buffer[i]
14332
14333 var carry = 0
14334 for (j = 0; j < digits.length; ++j) {
14335 digits[j] += carry
14336
14337 carry = (digits[j] / BASE) | 0
14338 digits[j] %= BASE
14339 }
14340
14341 while (carry) {
14342 digits.push(carry % BASE)
14343
14344 carry = (carry / BASE) | 0
14345 }
14346 }
14347
14348 // deal with leading zeros
14349 for (i = 0; buffer[i] === 0 && i < buffer.length - 1; i++) digits.push(0)
14350
14351 // convert digits to a string
14352 var stringOutput = ""
14353 for (var i = digits.length - 1; i >= 0; i--) {
14354 stringOutput = stringOutput + ALPHABET[digits[i]]
14355 }
14356 return stringOutput
14357 }
14358
14359 function decode(string) {
14360 if (string.length === 0) return []
14361
14362 var i, j, bytes = [0]
14363 for (i = 0; i < string.length; i++) {
14364 var c = string[i]
14365 if (!(c in ALPHABET_MAP)) throw new Error('Non-base58 character')
14366
14367 for (j = 0; j < bytes.length; j++) bytes[j] *= BASE
14368 bytes[0] += ALPHABET_MAP[c]
14369
14370 var carry = 0
14371 for (j = 0; j < bytes.length; ++j) {
14372 bytes[j] += carry
14373
14374 carry = bytes[j] >> 8
14375 bytes[j] &= 0xff
14376 }
14377
14378 while (carry) {
14379 bytes.push(carry & 0xff)
14380
14381 carry >>= 8
14382 }
14383 }
14384
14385 // deal with leading zeros
14386 for (i = 0; string[i] === '1' && i < string.length - 1; i++) bytes.push(0)
14387
14388 return bytes.reverse()
14389 }
14390
14391 module.exports = {
14392 encode: encode,
14393 decode: decode
14394 }
14395
14396 },{}],31:[function(require,module,exports){
14397 (function (Buffer){
14398 'use strict'
14399
14400 var base58 = require('bs58')
14401 var createHash = require('create-hash')
14402
14403 // SHA256(SHA256(buffer))
14404 function sha256x2 (buffer) {
14405 buffer = createHash('sha256').update(buffer).digest()
14406 return createHash('sha256').update(buffer).digest()
14407 }
14408
14409 // Encode a buffer as a base58-check encoded string
14410 function encode (payload) {
14411 var checksum = sha256x2(payload).slice(0, 4)
14412
14413 return base58.encode(Buffer.concat([
14414 payload,
14415 checksum
14416 ]))
14417 }
14418
14419 // Decode a base58-check encoded string to a buffer
14420 function decode (string) {
14421 var buffer = new Buffer(base58.decode(string))
14422
14423 var payload = buffer.slice(0, -4)
14424 var checksum = buffer.slice(-4)
14425 var newChecksum = sha256x2(payload).slice(0, 4)
14426
14427 for (var i = 0; i < newChecksum.length; ++i) {
14428 if (newChecksum[i] === checksum[i]) continue
14429
14430 throw new Error('Invalid checksum')
14431 }
14432
14433 return payload
14434 }
14435
14436 module.exports = {
14437 encode: encode,
14438 decode: decode
14439 }
14440
14441 }).call(this,require("buffer").Buffer)
14442 },{"bs58":30,"buffer":7,"create-hash":32}],32:[function(require,module,exports){
14443 (function (Buffer){
14444 'use strict';
14445 var inherits = require('inherits')
14446 var md5 = require('./md5')
14447 var rmd160 = require('ripemd160')
14448 var sha = require('sha.js')
14449
14450 var Transform = require('stream').Transform
14451
14452 function HashNoConstructor(hash) {
14453 Transform.call(this)
14454
14455 this._hash = hash
14456 this.buffers = []
14457 }
14458
14459 inherits(HashNoConstructor, Transform)
14460
14461 HashNoConstructor.prototype._transform = function (data, _, next) {
14462 this.buffers.push(data)
14463
14464 next()
14465 }
14466
14467 HashNoConstructor.prototype._flush = function (next) {
14468 this.push(this.digest())
14469 next()
14470 }
14471
14472 HashNoConstructor.prototype.update = function (data, enc) {
14473 if (typeof data === 'string') {
14474 data = new Buffer(data, enc)
14475 }
14476
14477 this.buffers.push(data)
14478 return this
14479 }
14480
14481 HashNoConstructor.prototype.digest = function (enc) {
14482 var buf = Buffer.concat(this.buffers)
14483 var r = this._hash(buf)
14484 this.buffers = null
14485
14486 return enc ? r.toString(enc) : r
14487 }
14488
14489 function Hash(hash) {
14490 Transform.call(this)
14491
14492 this._hash = hash
14493 }
14494
14495 inherits(Hash, Transform)
14496
14497 Hash.prototype._transform = function (data, enc, next) {
14498 if (enc) data = new Buffer(data, enc)
14499
14500 this._hash.update(data)
14501
14502 next()
14503 }
14504
14505 Hash.prototype._flush = function (next) {
14506 this.push(this._hash.digest())
14507 this._hash = null
14508
14509 next()
14510 }
14511
14512 Hash.prototype.update = function (data, enc) {
14513 if (typeof data === 'string') {
14514 data = new Buffer(data, enc)
14515 }
14516
14517 this._hash.update(data)
14518 return this
14519 }
14520
14521 Hash.prototype.digest = function (enc) {
14522 var outData = this._hash.digest()
14523
14524 return enc ? outData.toString(enc) : outData
14525 }
14526
14527 module.exports = function createHash (alg) {
14528 if ('md5' === alg) return new HashNoConstructor(md5)
14529 if ('rmd160' === alg) return new HashNoConstructor(rmd160)
14530
14531 return new Hash(sha(alg))
14532 }
14533
14534 }).call(this,require("buffer").Buffer)
14535 },{"./md5":34,"buffer":7,"inherits":35,"ripemd160":36,"sha.js":38,"stream":26}],33:[function(require,module,exports){
14536 (function (Buffer){
14537 'use strict';
14538 var intSize = 4;
14539 var zeroBuffer = new Buffer(intSize); zeroBuffer.fill(0);
14540 var chrsz = 8;
14541
14542 function toArray(buf, bigEndian) {
14543 if ((buf.length % intSize) !== 0) {
14544 var len = buf.length + (intSize - (buf.length % intSize));
14545 buf = Buffer.concat([buf, zeroBuffer], len);
14546 }
14547
14548 var arr = [];
14549 var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE;
14550 for (var i = 0; i < buf.length; i += intSize) {
14551 arr.push(fn.call(buf, i));
14552 }
14553 return arr;
14554 }
14555
14556 function toBuffer(arr, size, bigEndian) {
14557 var buf = new Buffer(size);
14558 var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE;
14559 for (var i = 0; i < arr.length; i++) {
14560 fn.call(buf, arr[i], i * 4, true);
14561 }
14562 return buf;
14563 }
14564
14565 function hash(buf, fn, hashSize, bigEndian) {
14566 if (!Buffer.isBuffer(buf)) buf = new Buffer(buf);
14567 var arr = fn(toArray(buf, bigEndian), buf.length * chrsz);
14568 return toBuffer(arr, hashSize, bigEndian);
14569 }
14570 exports.hash = hash;
14571 }).call(this,require("buffer").Buffer)
14572 },{"buffer":7}],34:[function(require,module,exports){
14573 'use strict';
14574 /*
14575 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
14576 * Digest Algorithm, as defined in RFC 1321.
14577 * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
14578 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
14579 * Distributed under the BSD License
14580 * See http://pajhome.org.uk/crypt/md5 for more info.
14581 */
14582
14583 var helpers = require('./helpers');
14584
14585 /*
14586 * Calculate the MD5 of an array of little-endian words, and a bit length
14587 */
14588 function core_md5(x, len)
14589 {
14590 /* append padding */
14591 x[len >> 5] |= 0x80 << ((len) % 32);
14592 x[(((len + 64) >>> 9) << 4) + 14] = len;
14593
14594 var a = 1732584193;
14595 var b = -271733879;
14596 var c = -1732584194;
14597 var d = 271733878;
14598
14599 for(var i = 0; i < x.length; i += 16)
14600 {
14601 var olda = a;
14602 var oldb = b;
14603 var oldc = c;
14604 var oldd = d;
14605
14606 a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
14607 d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
14608 c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
14609 b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
14610 a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
14611 d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
14612 c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
14613 b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
14614 a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
14615 d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
14616 c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
14617 b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
14618 a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
14619 d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
14620 c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
14621 b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
14622
14623 a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
14624 d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
14625 c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
14626 b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
14627 a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
14628 d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
14629 c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
14630 b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
14631 a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
14632 d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
14633 c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
14634 b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
14635 a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
14636 d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
14637 c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
14638 b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
14639
14640 a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
14641 d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
14642 c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
14643 b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
14644 a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
14645 d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
14646 c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
14647 b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
14648 a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
14649 d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
14650 c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
14651 b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
14652 a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
14653 d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
14654 c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
14655 b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
14656
14657 a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
14658 d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
14659 c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
14660 b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
14661 a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
14662 d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
14663 c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
14664 b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
14665 a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
14666 d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
14667 c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
14668 b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
14669 a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
14670 d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
14671 c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
14672 b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
14673
14674 a = safe_add(a, olda);
14675 b = safe_add(b, oldb);
14676 c = safe_add(c, oldc);
14677 d = safe_add(d, oldd);
14678 }
14679 return Array(a, b, c, d);
14680
14681 }
14682
14683 /*
14684 * These functions implement the four basic operations the algorithm uses.
14685 */
14686 function md5_cmn(q, a, b, x, s, t)
14687 {
14688 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
14689 }
14690 function md5_ff(a, b, c, d, x, s, t)
14691 {
14692 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
14693 }
14694 function md5_gg(a, b, c, d, x, s, t)
14695 {
14696 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
14697 }
14698 function md5_hh(a, b, c, d, x, s, t)
14699 {
14700 return md5_cmn(b ^ c ^ d, a, b, x, s, t);
14701 }
14702 function md5_ii(a, b, c, d, x, s, t)
14703 {
14704 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
14705 }
14706
14707 /*
14708 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
14709 * to work around bugs in some JS interpreters.
14710 */
14711 function safe_add(x, y)
14712 {
14713 var lsw = (x & 0xFFFF) + (y & 0xFFFF);
14714 var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
14715 return (msw << 16) | (lsw & 0xFFFF);
14716 }
14717
14718 /*
14719 * Bitwise rotate a 32-bit number to the left.
14720 */
14721 function bit_rol(num, cnt)
14722 {
14723 return (num << cnt) | (num >>> (32 - cnt));
14724 }
14725
14726 module.exports = function md5(buf) {
14727 return helpers.hash(buf, core_md5, 16);
14728 };
14729 },{"./helpers":33}],35:[function(require,module,exports){
14730 arguments[4][12][0].apply(exports,arguments)
14731 },{"dup":12}],36:[function(require,module,exports){
14732 (function (Buffer){
14733 /*
14734 CryptoJS v3.1.2
14735 code.google.com/p/crypto-js
14736 (c) 2009-2013 by Jeff Mott. All rights reserved.
14737 code.google.com/p/crypto-js/wiki/License
14738 */
14739 /** @preserve
14740 (c) 2012 by Cédric Mesnil. All rights reserved.
14741
14742 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
14743
14744 - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
14745 - 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.
14746
14747 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.
14748 */
14749
14750 // constants table
14751 var zl = [
14752 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
14753 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
14754 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
14755 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
14756 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
14757 ]
14758
14759 var zr = [
14760 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
14761 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
14762 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
14763 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
14764 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
14765 ]
14766
14767 var sl = [
14768 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
14769 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
14770 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
14771 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
14772 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
14773 ]
14774
14775 var sr = [
14776 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
14777 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
14778 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
14779 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
14780 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
14781 ]
14782
14783 var hl = [0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]
14784 var hr = [0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]
14785
14786 function bytesToWords (bytes) {
14787 var words = []
14788 for (var i = 0, b = 0; i < bytes.length; i++, b += 8) {
14789 words[b >>> 5] |= bytes[i] << (24 - b % 32)
14790 }
14791 return words
14792 }
14793
14794 function wordsToBytes (words) {
14795 var bytes = []
14796 for (var b = 0; b < words.length * 32; b += 8) {
14797 bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF)
14798 }
14799 return bytes
14800 }
14801
14802 function processBlock (H, M, offset) {
14803 // swap endian
14804 for (var i = 0; i < 16; i++) {
14805 var offset_i = offset + i
14806 var M_offset_i = M[offset_i]
14807
14808 // Swap
14809 M[offset_i] = (
14810 (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |
14811 (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)
14812 )
14813 }
14814
14815 // Working variables
14816 var al, bl, cl, dl, el
14817 var ar, br, cr, dr, er
14818
14819 ar = al = H[0]
14820 br = bl = H[1]
14821 cr = cl = H[2]
14822 dr = dl = H[3]
14823 er = el = H[4]
14824
14825 // computation
14826 var t
14827 for (i = 0; i < 80; i += 1) {
14828 t = (al + M[offset + zl[i]]) | 0
14829 if (i < 16) {
14830 t += f1(bl, cl, dl) + hl[0]
14831 } else if (i < 32) {
14832 t += f2(bl, cl, dl) + hl[1]
14833 } else if (i < 48) {
14834 t += f3(bl, cl, dl) + hl[2]
14835 } else if (i < 64) {
14836 t += f4(bl, cl, dl) + hl[3]
14837 } else {// if (i<80) {
14838 t += f5(bl, cl, dl) + hl[4]
14839 }
14840 t = t | 0
14841 t = rotl(t, sl[i])
14842 t = (t + el) | 0
14843 al = el
14844 el = dl
14845 dl = rotl(cl, 10)
14846 cl = bl
14847 bl = t
14848
14849 t = (ar + M[offset + zr[i]]) | 0
14850 if (i < 16) {
14851 t += f5(br, cr, dr) + hr[0]
14852 } else if (i < 32) {
14853 t += f4(br, cr, dr) + hr[1]
14854 } else if (i < 48) {
14855 t += f3(br, cr, dr) + hr[2]
14856 } else if (i < 64) {
14857 t += f2(br, cr, dr) + hr[3]
14858 } else {// if (i<80) {
14859 t += f1(br, cr, dr) + hr[4]
14860 }
14861
14862 t = t | 0
14863 t = rotl(t, sr[i])
14864 t = (t + er) | 0
14865 ar = er
14866 er = dr
14867 dr = rotl(cr, 10)
14868 cr = br
14869 br = t
14870 }
14871
14872 // intermediate hash value
14873 t = (H[1] + cl + dr) | 0
14874 H[1] = (H[2] + dl + er) | 0
14875 H[2] = (H[3] + el + ar) | 0
14876 H[3] = (H[4] + al + br) | 0
14877 H[4] = (H[0] + bl + cr) | 0
14878 H[0] = t
14879 }
14880
14881 function f1 (x, y, z) {
14882 return ((x) ^ (y) ^ (z))
14883 }
14884
14885 function f2 (x, y, z) {
14886 return (((x) & (y)) | ((~x) & (z)))
14887 }
14888
14889 function f3 (x, y, z) {
14890 return (((x) | (~(y))) ^ (z))
14891 }
14892
14893 function f4 (x, y, z) {
14894 return (((x) & (z)) | ((y) & (~(z))))
14895 }
14896
14897 function f5 (x, y, z) {
14898 return ((x) ^ ((y) | (~(z))))
14899 }
14900
14901 function rotl (x, n) {
14902 return (x << n) | (x >>> (32 - n))
14903 }
14904
14905 function ripemd160 (message) {
14906 var H = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]
14907
14908 if (typeof message === 'string') {
14909 message = new Buffer(message, 'utf8')
14910 }
14911
14912 var m = bytesToWords(message)
14913
14914 var nBitsLeft = message.length * 8
14915 var nBitsTotal = message.length * 8
14916
14917 // Add padding
14918 m[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32)
14919 m[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (
14920 (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |
14921 (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)
14922 )
14923
14924 for (var i = 0; i < m.length; i += 16) {
14925 processBlock(H, m, i)
14926 }
14927
14928 // swap endian
14929 for (i = 0; i < 5; i++) {
14930 // shortcut
14931 var H_i = H[i]
14932
14933 // Swap
14934 H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |
14935 (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00)
14936 }
14937
14938 var digestbytes = wordsToBytes(H)
14939 return new Buffer(digestbytes)
14940 }
14941
14942 module.exports = ripemd160
14943
14944 }).call(this,require("buffer").Buffer)
14945 },{"buffer":7}],37:[function(require,module,exports){
14946 (function (Buffer){
14947 // prototype class for hash functions
14948 function Hash (blockSize, finalSize) {
14949 this._block = new Buffer(blockSize)
14950 this._finalSize = finalSize
14951 this._blockSize = blockSize
14952 this._len = 0
14953 this._s = 0
14954 }
14955
14956 Hash.prototype.update = function (data, enc) {
14957 if (typeof data === 'string') {
14958 enc = enc || 'utf8'
14959 data = new Buffer(data, enc)
14960 }
14961
14962 var l = this._len += data.length
14963 var s = this._s || 0
14964 var f = 0
14965 var buffer = this._block
14966
14967 while (s < l) {
14968 var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize))
14969 var ch = (t - f)
14970
14971 for (var i = 0; i < ch; i++) {
14972 buffer[(s % this._blockSize) + i] = data[i + f]
14973 }
14974
14975 s += ch
14976 f += ch
14977
14978 if ((s % this._blockSize) === 0) {
14979 this._update(buffer)
14980 }
14981 }
14982 this._s = s
14983
14984 return this
14985 }
14986
14987 Hash.prototype.digest = function (enc) {
14988 // Suppose the length of the message M, in bits, is l
14989 var l = this._len * 8
14990
14991 // Append the bit 1 to the end of the message
14992 this._block[this._len % this._blockSize] = 0x80
14993
14994 // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize
14995 this._block.fill(0, this._len % this._blockSize + 1)
14996
14997 if (l % (this._blockSize * 8) >= this._finalSize * 8) {
14998 this._update(this._block)
14999 this._block.fill(0)
15000 }
15001
15002 // to this append the block which is equal to the number l written in binary
15003 // TODO: handle case where l is > Math.pow(2, 29)
15004 this._block.writeInt32BE(l, this._blockSize - 4)
15005
15006 var hash = this._update(this._block) || this._hash()
15007
15008 return enc ? hash.toString(enc) : hash
15009 }
15010
15011 Hash.prototype._update = function () {
15012 throw new Error('_update must be implemented by subclass')
15013 }
15014
15015 module.exports = Hash
15016
15017 }).call(this,require("buffer").Buffer)
15018 },{"buffer":7}],38:[function(require,module,exports){
15019 var exports = module.exports = function SHA (algorithm) {
15020 algorithm = algorithm.toLowerCase()
15021
15022 var Algorithm = exports[algorithm]
15023 if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')
15024
15025 return new Algorithm()
15026 }
15027
15028 exports.sha = require('./sha')
15029 exports.sha1 = require('./sha1')
15030 exports.sha224 = require('./sha224')
15031 exports.sha256 = require('./sha256')
15032 exports.sha384 = require('./sha384')
15033 exports.sha512 = require('./sha512')
15034
15035 },{"./sha":39,"./sha1":40,"./sha224":41,"./sha256":42,"./sha384":43,"./sha512":44}],39:[function(require,module,exports){
15036 (function (Buffer){
15037 /*
15038 * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined
15039 * in FIPS PUB 180-1
15040 * This source code is derived from sha1.js of the same repository.
15041 * The difference between SHA-0 and SHA-1 is just a bitwise rotate left
15042 * operation was added.
15043 */
15044
15045 var inherits = require('inherits')
15046 var Hash = require('./hash')
15047
15048 var W = new Array(80)
15049
15050 function Sha () {
15051 this.init()
15052 this._w = W
15053
15054 Hash.call(this, 64, 56)
15055 }
15056
15057 inherits(Sha, Hash)
15058
15059 Sha.prototype.init = function () {
15060 this._a = 0x67452301 | 0
15061 this._b = 0xefcdab89 | 0
15062 this._c = 0x98badcfe | 0
15063 this._d = 0x10325476 | 0
15064 this._e = 0xc3d2e1f0 | 0
15065
15066 return this
15067 }
15068
15069 /*
15070 * Bitwise rotate a 32-bit number to the left.
15071 */
15072 function rol (num, cnt) {
15073 return (num << cnt) | (num >>> (32 - cnt))
15074 }
15075
15076 Sha.prototype._update = function (M) {
15077 var W = this._w
15078
15079 var a = this._a
15080 var b = this._b
15081 var c = this._c
15082 var d = this._d
15083 var e = this._e
15084
15085 var j = 0, k
15086
15087 /*
15088 * SHA-1 has a bitwise rotate left operation. But, SHA is not
15089 * function calcW() { return rol(W[j - 3] ^ W[j - 8] ^ W[j - 14] ^ W[j - 16], 1) }
15090 */
15091 function calcW () { return W[j - 3] ^ W[j - 8] ^ W[j - 14] ^ W[j - 16] }
15092 function loop (w, f) {
15093 W[j] = w
15094
15095 var t = rol(a, 5) + f + e + w + k
15096
15097 e = d
15098 d = c
15099 c = rol(b, 30)
15100 b = a
15101 a = t
15102 j++
15103 }
15104
15105 k = 1518500249
15106 while (j < 16) loop(M.readInt32BE(j * 4), (b & c) | ((~b) & d))
15107 while (j < 20) loop(calcW(), (b & c) | ((~b) & d))
15108 k = 1859775393
15109 while (j < 40) loop(calcW(), b ^ c ^ d)
15110 k = -1894007588
15111 while (j < 60) loop(calcW(), (b & c) | (b & d) | (c & d))
15112 k = -899497514
15113 while (j < 80) loop(calcW(), b ^ c ^ d)
15114
15115 this._a = (a + this._a) | 0
15116 this._b = (b + this._b) | 0
15117 this._c = (c + this._c) | 0
15118 this._d = (d + this._d) | 0
15119 this._e = (e + this._e) | 0
15120 }
15121
15122 Sha.prototype._hash = function () {
15123 var H = new Buffer(20)
15124
15125 H.writeInt32BE(this._a | 0, 0)
15126 H.writeInt32BE(this._b | 0, 4)
15127 H.writeInt32BE(this._c | 0, 8)
15128 H.writeInt32BE(this._d | 0, 12)
15129 H.writeInt32BE(this._e | 0, 16)
15130
15131 return H
15132 }
15133
15134 module.exports = Sha
15135
15136
15137 }).call(this,require("buffer").Buffer)
15138 },{"./hash":37,"buffer":7,"inherits":35}],40:[function(require,module,exports){
15139 (function (Buffer){
15140 /*
15141 * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
15142 * in FIPS PUB 180-1
15143 * Version 2.1a Copyright Paul Johnston 2000 - 2002.
15144 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
15145 * Distributed under the BSD License
15146 * See http://pajhome.org.uk/crypt/md5 for details.
15147 */
15148
15149 var inherits = require('inherits')
15150 var Hash = require('./hash')
15151
15152 var W = new Array(80)
15153
15154 function Sha1 () {
15155 this.init()
15156 this._w = W
15157
15158 Hash.call(this, 64, 56)
15159 }
15160
15161 inherits(Sha1, Hash)
15162
15163 Sha1.prototype.init = function () {
15164 this._a = 0x67452301 | 0
15165 this._b = 0xefcdab89 | 0
15166 this._c = 0x98badcfe | 0
15167 this._d = 0x10325476 | 0
15168 this._e = 0xc3d2e1f0 | 0
15169
15170 return this
15171 }
15172
15173 /*
15174 * Bitwise rotate a 32-bit number to the left.
15175 */
15176 function rol (num, cnt) {
15177 return (num << cnt) | (num >>> (32 - cnt))
15178 }
15179
15180 Sha1.prototype._update = function (M) {
15181 var W = this._w
15182
15183 var a = this._a
15184 var b = this._b
15185 var c = this._c
15186 var d = this._d
15187 var e = this._e
15188
15189 var j = 0, k
15190
15191 function calcW () { return rol(W[j - 3] ^ W[j - 8] ^ W[j - 14] ^ W[j - 16], 1) }
15192 function loop (w, f) {
15193 W[j] = w
15194
15195 var t = rol(a, 5) + f + e + w + k
15196
15197 e = d
15198 d = c
15199 c = rol(b, 30)
15200 b = a
15201 a = t
15202 j++
15203 }
15204
15205 k = 1518500249
15206 while (j < 16) loop(M.readInt32BE(j * 4), (b & c) | ((~b) & d))
15207 while (j < 20) loop(calcW(), (b & c) | ((~b) & d))
15208 k = 1859775393
15209 while (j < 40) loop(calcW(), b ^ c ^ d)
15210 k = -1894007588
15211 while (j < 60) loop(calcW(), (b & c) | (b & d) | (c & d))
15212 k = -899497514
15213 while (j < 80) loop(calcW(), b ^ c ^ d)
15214
15215 this._a = (a + this._a) | 0
15216 this._b = (b + this._b) | 0
15217 this._c = (c + this._c) | 0
15218 this._d = (d + this._d) | 0
15219 this._e = (e + this._e) | 0
15220 }
15221
15222 Sha1.prototype._hash = function () {
15223 var H = new Buffer(20)
15224
15225 H.writeInt32BE(this._a | 0, 0)
15226 H.writeInt32BE(this._b | 0, 4)
15227 H.writeInt32BE(this._c | 0, 8)
15228 H.writeInt32BE(this._d | 0, 12)
15229 H.writeInt32BE(this._e | 0, 16)
15230
15231 return H
15232 }
15233
15234 module.exports = Sha1
15235
15236 }).call(this,require("buffer").Buffer)
15237 },{"./hash":37,"buffer":7,"inherits":35}],41:[function(require,module,exports){
15238 (function (Buffer){
15239 /**
15240 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
15241 * in FIPS 180-2
15242 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
15243 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
15244 *
15245 */
15246
15247 var inherits = require('inherits')
15248 var Sha256 = require('./sha256')
15249 var Hash = require('./hash')
15250
15251 var W = new Array(64)
15252
15253 function Sha224 () {
15254 this.init()
15255
15256 this._w = W // new Array(64)
15257
15258 Hash.call(this, 64, 56)
15259 }
15260
15261 inherits(Sha224, Sha256)
15262
15263 Sha224.prototype.init = function () {
15264 this._a = 0xc1059ed8 | 0
15265 this._b = 0x367cd507 | 0
15266 this._c = 0x3070dd17 | 0
15267 this._d = 0xf70e5939 | 0
15268 this._e = 0xffc00b31 | 0
15269 this._f = 0x68581511 | 0
15270 this._g = 0x64f98fa7 | 0
15271 this._h = 0xbefa4fa4 | 0
15272
15273 return this
15274 }
15275
15276 Sha224.prototype._hash = function () {
15277 var H = new Buffer(28)
15278
15279 H.writeInt32BE(this._a, 0)
15280 H.writeInt32BE(this._b, 4)
15281 H.writeInt32BE(this._c, 8)
15282 H.writeInt32BE(this._d, 12)
15283 H.writeInt32BE(this._e, 16)
15284 H.writeInt32BE(this._f, 20)
15285 H.writeInt32BE(this._g, 24)
15286
15287 return H
15288 }
15289
15290 module.exports = Sha224
15291
15292 }).call(this,require("buffer").Buffer)
15293 },{"./hash":37,"./sha256":42,"buffer":7,"inherits":35}],42:[function(require,module,exports){
15294 (function (Buffer){
15295 /**
15296 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
15297 * in FIPS 180-2
15298 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
15299 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
15300 *
15301 */
15302
15303 var inherits = require('inherits')
15304 var Hash = require('./hash')
15305
15306 var K = [
15307 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
15308 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
15309 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
15310 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
15311 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
15312 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
15313 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
15314 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
15315 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
15316 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
15317 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
15318 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
15319 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
15320 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
15321 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
15322 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2
15323 ]
15324
15325 var W = new Array(64)
15326
15327 function Sha256 () {
15328 this.init()
15329
15330 this._w = W // new Array(64)
15331
15332 Hash.call(this, 64, 56)
15333 }
15334
15335 inherits(Sha256, Hash)
15336
15337 Sha256.prototype.init = function () {
15338 this._a = 0x6a09e667 | 0
15339 this._b = 0xbb67ae85 | 0
15340 this._c = 0x3c6ef372 | 0
15341 this._d = 0xa54ff53a | 0
15342 this._e = 0x510e527f | 0
15343 this._f = 0x9b05688c | 0
15344 this._g = 0x1f83d9ab | 0
15345 this._h = 0x5be0cd19 | 0
15346
15347 return this
15348 }
15349
15350 function S (X, n) {
15351 return (X >>> n) | (X << (32 - n))
15352 }
15353
15354 function R (X, n) {
15355 return (X >>> n)
15356 }
15357
15358 function Ch (x, y, z) {
15359 return ((x & y) ^ ((~x) & z))
15360 }
15361
15362 function Maj (x, y, z) {
15363 return ((x & y) ^ (x & z) ^ (y & z))
15364 }
15365
15366 function Sigma0256 (x) {
15367 return (S(x, 2) ^ S(x, 13) ^ S(x, 22))
15368 }
15369
15370 function Sigma1256 (x) {
15371 return (S(x, 6) ^ S(x, 11) ^ S(x, 25))
15372 }
15373
15374 function Gamma0256 (x) {
15375 return (S(x, 7) ^ S(x, 18) ^ R(x, 3))
15376 }
15377
15378 function Gamma1256 (x) {
15379 return (S(x, 17) ^ S(x, 19) ^ R(x, 10))
15380 }
15381
15382 Sha256.prototype._update = function (M) {
15383 var W = this._w
15384
15385 var a = this._a | 0
15386 var b = this._b | 0
15387 var c = this._c | 0
15388 var d = this._d | 0
15389 var e = this._e | 0
15390 var f = this._f | 0
15391 var g = this._g | 0
15392 var h = this._h | 0
15393
15394 var j = 0
15395
15396 function calcW () { return Gamma1256(W[j - 2]) + W[j - 7] + Gamma0256(W[j - 15]) + W[j - 16] }
15397 function loop (w) {
15398 W[j] = w
15399
15400 var T1 = h + Sigma1256(e) + Ch(e, f, g) + K[j] + w
15401 var T2 = Sigma0256(a) + Maj(a, b, c)
15402
15403 h = g
15404 g = f
15405 f = e
15406 e = d + T1
15407 d = c
15408 c = b
15409 b = a
15410 a = T1 + T2
15411
15412 j++
15413 }
15414
15415 while (j < 16) loop(M.readInt32BE(j * 4))
15416 while (j < 64) loop(calcW())
15417
15418 this._a = (a + this._a) | 0
15419 this._b = (b + this._b) | 0
15420 this._c = (c + this._c) | 0
15421 this._d = (d + this._d) | 0
15422 this._e = (e + this._e) | 0
15423 this._f = (f + this._f) | 0
15424 this._g = (g + this._g) | 0
15425 this._h = (h + this._h) | 0
15426 }
15427
15428 Sha256.prototype._hash = function () {
15429 var H = new Buffer(32)
15430
15431 H.writeInt32BE(this._a, 0)
15432 H.writeInt32BE(this._b, 4)
15433 H.writeInt32BE(this._c, 8)
15434 H.writeInt32BE(this._d, 12)
15435 H.writeInt32BE(this._e, 16)
15436 H.writeInt32BE(this._f, 20)
15437 H.writeInt32BE(this._g, 24)
15438 H.writeInt32BE(this._h, 28)
15439
15440 return H
15441 }
15442
15443 module.exports = Sha256
15444
15445 }).call(this,require("buffer").Buffer)
15446 },{"./hash":37,"buffer":7,"inherits":35}],43:[function(require,module,exports){
15447 (function (Buffer){
15448 var inherits = require('inherits')
15449 var SHA512 = require('./sha512')
15450 var Hash = require('./hash')
15451
15452 var W = new Array(160)
15453
15454 function Sha384 () {
15455 this.init()
15456 this._w = W
15457
15458 Hash.call(this, 128, 112)
15459 }
15460
15461 inherits(Sha384, SHA512)
15462
15463 Sha384.prototype.init = function () {
15464 this._a = 0xcbbb9d5d | 0
15465 this._b = 0x629a292a | 0
15466 this._c = 0x9159015a | 0
15467 this._d = 0x152fecd8 | 0
15468 this._e = 0x67332667 | 0
15469 this._f = 0x8eb44a87 | 0
15470 this._g = 0xdb0c2e0d | 0
15471 this._h = 0x47b5481d | 0
15472
15473 this._al = 0xc1059ed8 | 0
15474 this._bl = 0x367cd507 | 0
15475 this._cl = 0x3070dd17 | 0
15476 this._dl = 0xf70e5939 | 0
15477 this._el = 0xffc00b31 | 0
15478 this._fl = 0x68581511 | 0
15479 this._gl = 0x64f98fa7 | 0
15480 this._hl = 0xbefa4fa4 | 0
15481
15482 return this
15483 }
15484
15485 Sha384.prototype._hash = function () {
15486 var H = new Buffer(48)
15487
15488 function writeInt64BE (h, l, offset) {
15489 H.writeInt32BE(h, offset)
15490 H.writeInt32BE(l, offset + 4)
15491 }
15492
15493 writeInt64BE(this._a, this._al, 0)
15494 writeInt64BE(this._b, this._bl, 8)
15495 writeInt64BE(this._c, this._cl, 16)
15496 writeInt64BE(this._d, this._dl, 24)
15497 writeInt64BE(this._e, this._el, 32)
15498 writeInt64BE(this._f, this._fl, 40)
15499
15500 return H
15501 }
15502
15503 module.exports = Sha384
15504
15505 }).call(this,require("buffer").Buffer)
15506 },{"./hash":37,"./sha512":44,"buffer":7,"inherits":35}],44:[function(require,module,exports){
15507 (function (Buffer){
15508 var inherits = require('inherits')
15509 var Hash = require('./hash')
15510
15511 var K = [
15512 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
15513 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
15514 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
15515 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
15516 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
15517 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
15518 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
15519 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
15520 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
15521 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
15522 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
15523 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
15524 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
15525 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
15526 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
15527 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
15528 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
15529 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
15530 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
15531 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
15532 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
15533 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
15534 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
15535 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
15536 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
15537 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
15538 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
15539 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
15540 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
15541 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
15542 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
15543 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
15544 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
15545 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
15546 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
15547 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
15548 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
15549 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
15550 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
15551 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
15552 ]
15553
15554 var W = new Array(160)
15555
15556 function Sha512 () {
15557 this.init()
15558 this._w = W
15559
15560 Hash.call(this, 128, 112)
15561 }
15562
15563 inherits(Sha512, Hash)
15564
15565 Sha512.prototype.init = function () {
15566 this._a = 0x6a09e667 | 0
15567 this._b = 0xbb67ae85 | 0
15568 this._c = 0x3c6ef372 | 0
15569 this._d = 0xa54ff53a | 0
15570 this._e = 0x510e527f | 0
15571 this._f = 0x9b05688c | 0
15572 this._g = 0x1f83d9ab | 0
15573 this._h = 0x5be0cd19 | 0
15574
15575 this._al = 0xf3bcc908 | 0
15576 this._bl = 0x84caa73b | 0
15577 this._cl = 0xfe94f82b | 0
15578 this._dl = 0x5f1d36f1 | 0
15579 this._el = 0xade682d1 | 0
15580 this._fl = 0x2b3e6c1f | 0
15581 this._gl = 0xfb41bd6b | 0
15582 this._hl = 0x137e2179 | 0
15583
15584 return this
15585 }
15586
15587 function S (X, Xl, n) {
15588 return (X >>> n) | (Xl << (32 - n))
15589 }
15590
15591 function Ch (x, y, z) {
15592 return ((x & y) ^ ((~x) & z))
15593 }
15594
15595 function Maj (x, y, z) {
15596 return ((x & y) ^ (x & z) ^ (y & z))
15597 }
15598
15599 Sha512.prototype._update = function (M) {
15600 var W = this._w
15601
15602 var a = this._a | 0
15603 var b = this._b | 0
15604 var c = this._c | 0
15605 var d = this._d | 0
15606 var e = this._e | 0
15607 var f = this._f | 0
15608 var g = this._g | 0
15609 var h = this._h | 0
15610
15611 var al = this._al | 0
15612 var bl = this._bl | 0
15613 var cl = this._cl | 0
15614 var dl = this._dl | 0
15615 var el = this._el | 0
15616 var fl = this._fl | 0
15617 var gl = this._gl | 0
15618 var hl = this._hl | 0
15619
15620 var i = 0, j = 0
15621 var Wi, Wil
15622 function calcW () {
15623 var x = W[j - 15 * 2]
15624 var xl = W[j - 15 * 2 + 1]
15625 var gamma0 = S(x, xl, 1) ^ S(x, xl, 8) ^ (x >>> 7)
15626 var gamma0l = S(xl, x, 1) ^ S(xl, x, 8) ^ S(xl, x, 7)
15627
15628 x = W[j - 2 * 2]
15629 xl = W[j - 2 * 2 + 1]
15630 var gamma1 = S(x, xl, 19) ^ S(xl, x, 29) ^ (x >>> 6)
15631 var gamma1l = S(xl, x, 19) ^ S(x, xl, 29) ^ S(xl, x, 6)
15632
15633 // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
15634 var Wi7 = W[j - 7 * 2]
15635 var Wi7l = W[j - 7 * 2 + 1]
15636
15637 var Wi16 = W[j - 16 * 2]
15638 var Wi16l = W[j - 16 * 2 + 1]
15639
15640 Wil = gamma0l + Wi7l
15641 Wi = gamma0 + Wi7 + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0)
15642 Wil = Wil + gamma1l
15643 Wi = Wi + gamma1 + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0)
15644 Wil = Wil + Wi16l
15645 Wi = Wi + Wi16 + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0)
15646 }
15647
15648 function loop () {
15649 W[j] = Wi
15650 W[j + 1] = Wil
15651
15652 var maj = Maj(a, b, c)
15653 var majl = Maj(al, bl, cl)
15654
15655 var sigma0h = S(a, al, 28) ^ S(al, a, 2) ^ S(al, a, 7)
15656 var sigma0l = S(al, a, 28) ^ S(a, al, 2) ^ S(a, al, 7)
15657 var sigma1h = S(e, el, 14) ^ S(e, el, 18) ^ S(el, e, 9)
15658 var sigma1l = S(el, e, 14) ^ S(el, e, 18) ^ S(e, el, 9)
15659
15660 // t1 = h + sigma1 + ch + K[i] + W[i]
15661 var Ki = K[j]
15662 var Kil = K[j + 1]
15663
15664 var ch = Ch(e, f, g)
15665 var chl = Ch(el, fl, gl)
15666
15667 var t1l = hl + sigma1l
15668 var t1 = h + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0)
15669 t1l = t1l + chl
15670 t1 = t1 + ch + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0)
15671 t1l = t1l + Kil
15672 t1 = t1 + Ki + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0)
15673 t1l = t1l + Wil
15674 t1 = t1 + Wi + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0)
15675
15676 // t2 = sigma0 + maj
15677 var t2l = sigma0l + majl
15678 var t2 = sigma0h + maj + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0)
15679
15680 h = g
15681 hl = gl
15682 g = f
15683 gl = fl
15684 f = e
15685 fl = el
15686 el = (dl + t1l) | 0
15687 e = (d + t1 + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0
15688 d = c
15689 dl = cl
15690 c = b
15691 cl = bl
15692 b = a
15693 bl = al
15694 al = (t1l + t2l) | 0
15695 a = (t1 + t2 + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0
15696
15697 i++
15698 j += 2
15699 }
15700
15701 while (i < 16) {
15702 Wi = M.readInt32BE(j * 4)
15703 Wil = M.readInt32BE(j * 4 + 4)
15704
15705 loop()
15706 }
15707
15708 while (i < 80) {
15709 calcW()
15710 loop()
15711 }
15712
15713 this._al = (this._al + al) | 0
15714 this._bl = (this._bl + bl) | 0
15715 this._cl = (this._cl + cl) | 0
15716 this._dl = (this._dl + dl) | 0
15717 this._el = (this._el + el) | 0
15718 this._fl = (this._fl + fl) | 0
15719 this._gl = (this._gl + gl) | 0
15720 this._hl = (this._hl + hl) | 0
15721
15722 this._a = (this._a + a + ((this._al >>> 0) < (al >>> 0) ? 1 : 0)) | 0
15723 this._b = (this._b + b + ((this._bl >>> 0) < (bl >>> 0) ? 1 : 0)) | 0
15724 this._c = (this._c + c + ((this._cl >>> 0) < (cl >>> 0) ? 1 : 0)) | 0
15725 this._d = (this._d + d + ((this._dl >>> 0) < (dl >>> 0) ? 1 : 0)) | 0
15726 this._e = (this._e + e + ((this._el >>> 0) < (el >>> 0) ? 1 : 0)) | 0
15727 this._f = (this._f + f + ((this._fl >>> 0) < (fl >>> 0) ? 1 : 0)) | 0
15728 this._g = (this._g + g + ((this._gl >>> 0) < (gl >>> 0) ? 1 : 0)) | 0
15729 this._h = (this._h + h + ((this._hl >>> 0) < (hl >>> 0) ? 1 : 0)) | 0
15730 }
15731
15732 Sha512.prototype._hash = function () {
15733 var H = new Buffer(64)
15734
15735 function writeInt64BE (h, l, offset) {
15736 H.writeInt32BE(h, offset)
15737 H.writeInt32BE(l, offset + 4)
15738 }
15739
15740 writeInt64BE(this._a, this._al, 0)
15741 writeInt64BE(this._b, this._bl, 8)
15742 writeInt64BE(this._c, this._cl, 16)
15743 writeInt64BE(this._d, this._dl, 24)
15744 writeInt64BE(this._e, this._el, 32)
15745 writeInt64BE(this._f, this._fl, 40)
15746 writeInt64BE(this._g, this._gl, 48)
15747 writeInt64BE(this._h, this._hl, 56)
15748
15749 return H
15750 }
15751
15752 module.exports = Sha512
15753
15754 }).call(this,require("buffer").Buffer)
15755 },{"./hash":37,"buffer":7,"inherits":35}],45:[function(require,module,exports){
15756 (function (Buffer){
15757 'use strict';
15758 var createHash = require('create-hash/browser');
15759 var inherits = require('inherits')
15760
15761 var Transform = require('stream').Transform
15762
15763 var ZEROS = new Buffer(128)
15764 ZEROS.fill(0)
15765
15766 function Hmac(alg, key) {
15767 Transform.call(this)
15768
15769 if (typeof key === 'string') {
15770 key = new Buffer(key)
15771 }
15772
15773 var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64
15774
15775 this._alg = alg
15776 this._key = key
15777
15778 if (key.length > blocksize) {
15779 key = createHash(alg).update(key).digest()
15780
15781 } else if (key.length < blocksize) {
15782 key = Buffer.concat([key, ZEROS], blocksize)
15783 }
15784
15785 var ipad = this._ipad = new Buffer(blocksize)
15786 var opad = this._opad = new Buffer(blocksize)
15787
15788 for (var i = 0; i < blocksize; i++) {
15789 ipad[i] = key[i] ^ 0x36
15790 opad[i] = key[i] ^ 0x5C
15791 }
15792
15793 this._hash = createHash(alg).update(ipad)
15794 }
15795
15796 inherits(Hmac, Transform)
15797
15798 Hmac.prototype.update = function (data, enc) {
15799 this._hash.update(data, enc)
15800
15801 return this
15802 }
15803
15804 Hmac.prototype._transform = function (data, _, next) {
15805 this._hash.update(data)
15806
15807 next()
15808 }
15809
15810 Hmac.prototype._flush = function (next) {
15811 this.push(this.digest())
15812
15813 next()
15814 }
15815
15816 Hmac.prototype.digest = function (enc) {
15817 var h = this._hash.digest()
15818
15819 return createHash(this._alg).update(this._opad).update(h).digest(enc)
15820 }
15821
15822 module.exports = function createHmac(alg, key) {
15823 return new Hmac(alg, key)
15824 }
15825
15826 }).call(this,require("buffer").Buffer)
15827 },{"buffer":7,"create-hash/browser":32,"inherits":46,"stream":26}],46:[function(require,module,exports){
15828 arguments[4][12][0].apply(exports,arguments)
15829 },{"dup":12}],47:[function(require,module,exports){
15830 var assert = require('assert')
15831 var BigInteger = require('bigi')
15832
15833 var Point = require('./point')
15834
15835 function Curve(p, a, b, Gx, Gy, n, h) {
15836 this.p = p
15837 this.a = a
15838 this.b = b
15839 this.G = Point.fromAffine(this, Gx, Gy)
15840 this.n = n
15841 this.h = h
15842
15843 this.infinity = new Point(this, null, null, BigInteger.ZERO)
15844
15845 // result caching
15846 this.pOverFour = p.add(BigInteger.ONE).shiftRight(2)
15847 }
15848
15849 Curve.prototype.pointFromX = function(isOdd, x) {
15850 var alpha = x.pow(3).add(this.a.multiply(x)).add(this.b).mod(this.p)
15851 var beta = alpha.modPow(this.pOverFour, this.p) // XXX: not compatible with all curves
15852
15853 var y = beta
15854 if (beta.isEven() ^ !isOdd) {
15855 y = this.p.subtract(y) // -y % p
15856 }
15857
15858 return Point.fromAffine(this, x, y)
15859 }
15860
15861 Curve.prototype.isInfinity = function(Q) {
15862 if (Q === this.infinity) return true
15863
15864 return Q.z.signum() === 0 && Q.y.signum() !== 0
15865 }
15866
15867 Curve.prototype.isOnCurve = function(Q) {
15868 if (this.isInfinity(Q)) return true
15869
15870 var x = Q.affineX
15871 var y = Q.affineY
15872 var a = this.a
15873 var b = this.b
15874 var p = this.p
15875
15876 // Check that xQ and yQ are integers in the interval [0, p - 1]
15877 if (x.signum() < 0 || x.compareTo(p) >= 0) return false
15878 if (y.signum() < 0 || y.compareTo(p) >= 0) return false
15879
15880 // and check that y^2 = x^3 + ax + b (mod p)
15881 var lhs = y.square().mod(p)
15882 var rhs = x.pow(3).add(a.multiply(x)).add(b).mod(p)
15883 return lhs.equals(rhs)
15884 }
15885
15886 /**
15887 * Validate an elliptic curve point.
15888 *
15889 * See SEC 1, section 3.2.2.1: Elliptic Curve Public Key Validation Primitive
15890 */
15891 Curve.prototype.validate = function(Q) {
15892 // Check Q != O
15893 assert(!this.isInfinity(Q), 'Point is at infinity')
15894 assert(this.isOnCurve(Q), 'Point is not on the curve')
15895
15896 // Check nQ = O (where Q is a scalar multiple of G)
15897 var nQ = Q.multiply(this.n)
15898 assert(this.isInfinity(nQ), 'Point is not a scalar multiple of G')
15899
15900 return true
15901 }
15902
15903 module.exports = Curve
15904
15905 },{"./point":51,"assert":5,"bigi":3}],48:[function(require,module,exports){
15906 module.exports={
15907 "secp128r1": {
15908 "p": "fffffffdffffffffffffffffffffffff",
15909 "a": "fffffffdfffffffffffffffffffffffc",
15910 "b": "e87579c11079f43dd824993c2cee5ed3",
15911 "n": "fffffffe0000000075a30d1b9038a115",
15912 "h": "01",
15913 "Gx": "161ff7528b899b2d0c28607ca52c5b86",
15914 "Gy": "cf5ac8395bafeb13c02da292dded7a83"
15915 },
15916 "secp160k1": {
15917 "p": "fffffffffffffffffffffffffffffffeffffac73",
15918 "a": "00",
15919 "b": "07",
15920 "n": "0100000000000000000001b8fa16dfab9aca16b6b3",
15921 "h": "01",
15922 "Gx": "3b4c382ce37aa192a4019e763036f4f5dd4d7ebb",
15923 "Gy": "938cf935318fdced6bc28286531733c3f03c4fee"
15924 },
15925 "secp160r1": {
15926 "p": "ffffffffffffffffffffffffffffffff7fffffff",
15927 "a": "ffffffffffffffffffffffffffffffff7ffffffc",
15928 "b": "1c97befc54bd7a8b65acf89f81d4d4adc565fa45",
15929 "n": "0100000000000000000001f4c8f927aed3ca752257",
15930 "h": "01",
15931 "Gx": "4a96b5688ef573284664698968c38bb913cbfc82",
15932 "Gy": "23a628553168947d59dcc912042351377ac5fb32"
15933 },
15934 "secp192k1": {
15935 "p": "fffffffffffffffffffffffffffffffffffffffeffffee37",
15936 "a": "00",
15937 "b": "03",
15938 "n": "fffffffffffffffffffffffe26f2fc170f69466a74defd8d",
15939 "h": "01",
15940 "Gx": "db4ff10ec057e9ae26b07d0280b7f4341da5d1b1eae06c7d",
15941 "Gy": "9b2f2f6d9c5628a7844163d015be86344082aa88d95e2f9d"
15942 },
15943 "secp192r1": {
15944 "p": "fffffffffffffffffffffffffffffffeffffffffffffffff",
15945 "a": "fffffffffffffffffffffffffffffffefffffffffffffffc",
15946 "b": "64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1",
15947 "n": "ffffffffffffffffffffffff99def836146bc9b1b4d22831",
15948 "h": "01",
15949 "Gx": "188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012",
15950 "Gy": "07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
15951 },
15952 "secp256k1": {
15953 "p": "fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f",
15954 "a": "00",
15955 "b": "07",
15956 "n": "fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141",
15957 "h": "01",
15958 "Gx": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798",
15959 "Gy": "483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8"
15960 },
15961 "secp256r1": {
15962 "p": "ffffffff00000001000000000000000000000000ffffffffffffffffffffffff",
15963 "a": "ffffffff00000001000000000000000000000000fffffffffffffffffffffffc",
15964 "b": "5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b",
15965 "n": "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551",
15966 "h": "01",
15967 "Gx": "6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296",
15968 "Gy": "4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5"
15969 }
15970 }
15971
15972 },{}],49:[function(require,module,exports){
15973 var Point = require('./point')
15974 var Curve = require('./curve')
15975
15976 var getCurveByName = require('./names')
15977
15978 module.exports = {
15979 Curve: Curve,
15980 Point: Point,
15981 getCurveByName: getCurveByName
15982 }
15983
15984 },{"./curve":47,"./names":50,"./point":51}],50:[function(require,module,exports){
15985 var BigInteger = require('bigi')
15986
15987 var curves = require('./curves')
15988 var Curve = require('./curve')
15989
15990 function getCurveByName(name) {
15991 var curve = curves[name]
15992 if (!curve) return null
15993
15994 var p = new BigInteger(curve.p, 16)
15995 var a = new BigInteger(curve.a, 16)
15996 var b = new BigInteger(curve.b, 16)
15997 var n = new BigInteger(curve.n, 16)
15998 var h = new BigInteger(curve.h, 16)
15999 var Gx = new BigInteger(curve.Gx, 16)
16000 var Gy = new BigInteger(curve.Gy, 16)
16001
16002 return new Curve(p, a, b, Gx, Gy, n, h)
16003 }
16004
16005 module.exports = getCurveByName
16006
16007 },{"./curve":47,"./curves":48,"bigi":3}],51:[function(require,module,exports){
16008 (function (Buffer){
16009 var assert = require('assert')
16010 var BigInteger = require('bigi')
16011
16012 var THREE = BigInteger.valueOf(3)
16013
16014 function Point(curve, x, y, z) {
16015 assert.notStrictEqual(z, undefined, 'Missing Z coordinate')
16016
16017 this.curve = curve
16018 this.x = x
16019 this.y = y
16020 this.z = z
16021 this._zInv = null
16022
16023 this.compressed = true
16024 }
16025
16026 Object.defineProperty(Point.prototype, 'zInv', {
16027 get: function() {
16028 if (this._zInv === null) {
16029 this._zInv = this.z.modInverse(this.curve.p)
16030 }
16031
16032 return this._zInv
16033 }
16034 })
16035
16036 Object.defineProperty(Point.prototype, 'affineX', {
16037 get: function() {
16038 return this.x.multiply(this.zInv).mod(this.curve.p)
16039 }
16040 })
16041
16042 Object.defineProperty(Point.prototype, 'affineY', {
16043 get: function() {
16044 return this.y.multiply(this.zInv).mod(this.curve.p)
16045 }
16046 })
16047
16048 Point.fromAffine = function(curve, x, y) {
16049 return new Point(curve, x, y, BigInteger.ONE)
16050 }
16051
16052 Point.prototype.equals = function(other) {
16053 if (other === this) return true
16054 if (this.curve.isInfinity(this)) return this.curve.isInfinity(other)
16055 if (this.curve.isInfinity(other)) return this.curve.isInfinity(this)
16056
16057 // u = Y2 * Z1 - Y1 * Z2
16058 var u = other.y.multiply(this.z).subtract(this.y.multiply(other.z)).mod(this.curve.p)
16059
16060 if (u.signum() !== 0) return false
16061
16062 // v = X2 * Z1 - X1 * Z2
16063 var v = other.x.multiply(this.z).subtract(this.x.multiply(other.z)).mod(this.curve.p)
16064
16065 return v.signum() === 0
16066 }
16067
16068 Point.prototype.negate = function() {
16069 var y = this.curve.p.subtract(this.y)
16070
16071 return new Point(this.curve, this.x, y, this.z)
16072 }
16073
16074 Point.prototype.add = function(b) {
16075 if (this.curve.isInfinity(this)) return b
16076 if (this.curve.isInfinity(b)) return this
16077
16078 var x1 = this.x
16079 var y1 = this.y
16080 var x2 = b.x
16081 var y2 = b.y
16082
16083 // u = Y2 * Z1 - Y1 * Z2
16084 var u = y2.multiply(this.z).subtract(y1.multiply(b.z)).mod(this.curve.p)
16085 // v = X2 * Z1 - X1 * Z2
16086 var v = x2.multiply(this.z).subtract(x1.multiply(b.z)).mod(this.curve.p)
16087
16088 if (v.signum() === 0) {
16089 if (u.signum() === 0) {
16090 return this.twice() // this == b, so double
16091 }
16092
16093 return this.curve.infinity // this = -b, so infinity
16094 }
16095
16096 var v2 = v.square()
16097 var v3 = v2.multiply(v)
16098 var x1v2 = x1.multiply(v2)
16099 var zu2 = u.square().multiply(this.z)
16100
16101 // x3 = v * (z2 * (z1 * u^2 - 2 * x1 * v^2) - v^3)
16102 var x3 = zu2.subtract(x1v2.shiftLeft(1)).multiply(b.z).subtract(v3).multiply(v).mod(this.curve.p)
16103 // y3 = z2 * (3 * x1 * u * v^2 - y1 * v^3 - z1 * u^3) + u * v^3
16104 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)
16105 // z3 = v^3 * z1 * z2
16106 var z3 = v3.multiply(this.z).multiply(b.z).mod(this.curve.p)
16107
16108 return new Point(this.curve, x3, y3, z3)
16109 }
16110
16111 Point.prototype.twice = function() {
16112 if (this.curve.isInfinity(this)) return this
16113 if (this.y.signum() === 0) return this.curve.infinity
16114
16115 var x1 = this.x
16116 var y1 = this.y
16117
16118 var y1z1 = y1.multiply(this.z)
16119 var y1sqz1 = y1z1.multiply(y1).mod(this.curve.p)
16120 var a = this.curve.a
16121
16122 // w = 3 * x1^2 + a * z1^2
16123 var w = x1.square().multiply(THREE)
16124
16125 if (a.signum() !== 0) {
16126 w = w.add(this.z.square().multiply(a))
16127 }
16128
16129 w = w.mod(this.curve.p)
16130 // x3 = 2 * y1 * z1 * (w^2 - 8 * x1 * y1^2 * z1)
16131 var x3 = w.square().subtract(x1.shiftLeft(3).multiply(y1sqz1)).shiftLeft(1).multiply(y1z1).mod(this.curve.p)
16132 // y3 = 4 * y1^2 * z1 * (3 * w * x1 - 2 * y1^2 * z1) - w^3
16133 var y3 = w.multiply(THREE).multiply(x1).subtract(y1sqz1.shiftLeft(1)).shiftLeft(2).multiply(y1sqz1).subtract(w.pow(3)).mod(this.curve.p)
16134 // z3 = 8 * (y1 * z1)^3
16135 var z3 = y1z1.pow(3).shiftLeft(3).mod(this.curve.p)
16136
16137 return new Point(this.curve, x3, y3, z3)
16138 }
16139
16140 // Simple NAF (Non-Adjacent Form) multiplication algorithm
16141 // TODO: modularize the multiplication algorithm
16142 Point.prototype.multiply = function(k) {
16143 if (this.curve.isInfinity(this)) return this
16144 if (k.signum() === 0) return this.curve.infinity
16145
16146 var e = k
16147 var h = e.multiply(THREE)
16148
16149 var neg = this.negate()
16150 var R = this
16151
16152 for (var i = h.bitLength() - 2; i > 0; --i) {
16153 R = R.twice()
16154
16155 var hBit = h.testBit(i)
16156 var eBit = e.testBit(i)
16157
16158 if (hBit != eBit) {
16159 R = R.add(hBit ? this : neg)
16160 }
16161 }
16162
16163 return R
16164 }
16165
16166 // Compute this*j + x*k (simultaneous multiplication)
16167 Point.prototype.multiplyTwo = function(j, x, k) {
16168 var i
16169
16170 if (j.bitLength() > k.bitLength())
16171 i = j.bitLength() - 1
16172 else
16173 i = k.bitLength() - 1
16174
16175 var R = this.curve.infinity
16176 var both = this.add(x)
16177
16178 while (i >= 0) {
16179 R = R.twice()
16180
16181 var jBit = j.testBit(i)
16182 var kBit = k.testBit(i)
16183
16184 if (jBit) {
16185 if (kBit) {
16186 R = R.add(both)
16187
16188 } else {
16189 R = R.add(this)
16190 }
16191
16192 } else {
16193 if (kBit) {
16194 R = R.add(x)
16195 }
16196 }
16197 --i
16198 }
16199
16200 return R
16201 }
16202
16203 Point.prototype.getEncoded = function(compressed) {
16204 if (compressed == undefined) compressed = this.compressed
16205 if (this.curve.isInfinity(this)) return new Buffer('00', 'hex') // Infinity point encoded is simply '00'
16206
16207 var x = this.affineX
16208 var y = this.affineY
16209
16210 var buffer
16211
16212 // Determine size of q in bytes
16213 var byteLength = Math.floor((this.curve.p.bitLength() + 7) / 8)
16214
16215 // 0x02/0x03 | X
16216 if (compressed) {
16217 buffer = new Buffer(1 + byteLength)
16218 buffer.writeUInt8(y.isEven() ? 0x02 : 0x03, 0)
16219
16220 // 0x04 | X | Y
16221 } else {
16222 buffer = new Buffer(1 + byteLength + byteLength)
16223 buffer.writeUInt8(0x04, 0)
16224
16225 y.toBuffer(byteLength).copy(buffer, 1 + byteLength)
16226 }
16227
16228 x.toBuffer(byteLength).copy(buffer, 1)
16229
16230 return buffer
16231 }
16232
16233 Point.decodeFrom = function(curve, buffer) {
16234 var type = buffer.readUInt8(0)
16235 var compressed = (type !== 4)
16236
16237 var byteLength = Math.floor((curve.p.bitLength() + 7) / 8)
16238 var x = BigInteger.fromBuffer(buffer.slice(1, 1 + byteLength))
16239
16240 var Q
16241 if (compressed) {
16242 assert.equal(buffer.length, byteLength + 1, 'Invalid sequence length')
16243 assert(type === 0x02 || type === 0x03, 'Invalid sequence tag')
16244
16245 var isOdd = (type === 0x03)
16246 Q = curve.pointFromX(isOdd, x)
16247
16248 } else {
16249 assert.equal(buffer.length, 1 + byteLength + byteLength, 'Invalid sequence length')
16250
16251 var y = BigInteger.fromBuffer(buffer.slice(1 + byteLength))
16252 Q = Point.fromAffine(curve, x, y)
16253 }
16254
16255 Q.compressed = compressed
16256 return Q
16257 }
16258
16259 Point.prototype.toString = function () {
16260 if (this.curve.isInfinity(this)) return '(INFINITY)'
16261
16262 return '(' + this.affineX.toString() + ',' + this.affineY.toString() + ')'
16263 }
16264
16265 module.exports = Point
16266
16267 }).call(this,require("buffer").Buffer)
16268 },{"assert":5,"bigi":3,"buffer":7}],52:[function(require,module,exports){
16269 (function (process,global,Buffer){
16270 'use strict';
16271
16272 var crypto = global.crypto || global.msCrypto
16273 if(crypto && crypto.getRandomValues) {
16274 module.exports = randomBytes;
16275 } else {
16276 module.exports = oldBrowser;
16277 }
16278 function randomBytes(size, cb) {
16279 var bytes = new Buffer(size); //in browserify, this is an extended Uint8Array
16280 /* This will not work in older browsers.
16281 * See https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues
16282 */
16283
16284 crypto.getRandomValues(bytes);
16285 if (typeof cb === 'function') {
16286 return process.nextTick(function () {
16287 cb(null, bytes);
16288 });
16289 }
16290 return bytes;
16291 }
16292 function oldBrowser() {
16293 throw new Error(
16294 'secure random number generation not supported by this browser\n'+
16295 'use chrome, FireFox or Internet Explorer 11'
16296 )
16297 }
16298
16299 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer)
16300 },{"_process":14,"buffer":7}],53:[function(require,module,exports){
16301 (function (Buffer){
16302 'use strict';
16303
16304 function getFunctionName(fn) {
16305 return fn.name || fn.toString().match(/function (.*?)\s*\(/)[1];
16306 }
16307
16308 function getTypeTypeName(type) {
16309 if (nativeTypes.Function(type)) {
16310 type = type.toJSON ? type.toJSON() : getFunctionName(type);
16311 }
16312 if (nativeTypes.Object(type)) return JSON.stringify(type);
16313
16314 return type;
16315 }
16316
16317 function getValueTypeName(value) {
16318 if (nativeTypes.Null(value)) return '';
16319
16320 return getFunctionName(value.constructor);
16321 }
16322
16323 function tfErrorString(type, value) {
16324 var typeTypeName = getTypeTypeName(type);
16325 var valueTypeName = getValueTypeName(value);
16326
16327 return 'Expected ' + typeTypeName + ', got ' + (valueTypeName && valueTypeName + ' ') + JSON.stringify(value);
16328 }
16329
16330 function tfPropertyErrorString(type, name, value) {
16331 return tfErrorString('property \"' + name + '\" of type ' + getTypeTypeName(type), value);
16332 }
16333
16334 var nativeTypes = {
16335 Array: (function (_Array) {
16336 function Array(_x) {
16337 return _Array.apply(this, arguments);
16338 }
16339
16340 Array.toString = function () {
16341 return _Array.toString();
16342 };
16343
16344 return Array;
16345 })(function (value) {
16346 return value !== null && value !== undefined && value.constructor === Array;
16347 }),
16348 Boolean: function Boolean(value) {
16349 return typeof value === 'boolean';
16350 },
16351 Buffer: (function (_Buffer) {
16352 function Buffer(_x2) {
16353 return _Buffer.apply(this, arguments);
16354 }
16355
16356 Buffer.toString = function () {
16357 return _Buffer.toString();
16358 };
16359
16360 return Buffer;
16361 })(function (value) {
16362 return Buffer.isBuffer(value);
16363 }),
16364 Function: function Function(value) {
16365 return typeof value === 'function';
16366 },
16367 Null: function Null(value) {
16368 return value === undefined || value === null;
16369 },
16370 Number: function Number(value) {
16371 return typeof value === 'number';
16372 },
16373 Object: function Object(value) {
16374 return typeof value === 'object';
16375 },
16376 String: function String(value) {
16377 return typeof value === 'string';
16378 },
16379 '': function _() {
16380 return true;
16381 }
16382 };
16383
16384 function tJSON(type) {
16385 return type && type.toJSON ? type.toJSON() : type;
16386 }
16387
16388 function sJSON(type) {
16389 var json = tJSON(type);
16390 return nativeTypes.Object(json) ? JSON.stringify(json) : json;
16391 }
16392
16393 var otherTypes = {
16394 arrayOf: function arrayOf(type) {
16395 function arrayOf(value, strict) {
16396 try {
16397 return nativeTypes.Array(value) && value.every(function (x) {
16398 return typeforce(type, x, strict);
16399 });
16400 } catch (e) {
16401 return false;
16402 }
16403 }
16404 arrayOf.toJSON = function () {
16405 return [tJSON(type)];
16406 };
16407
16408 return arrayOf;
16409 },
16410
16411 maybe: function maybe(type) {
16412 function maybe(value, strict) {
16413 return nativeTypes.Null(value) || typeforce(type, value, strict);
16414 }
16415 maybe.toJSON = function () {
16416 return '?' + sJSON(type);
16417 };
16418
16419 return maybe;
16420 },
16421
16422 object: function object(type) {
16423 function object(value, strict) {
16424 typeforce(nativeTypes.Object, value, strict);
16425
16426 var propertyName, propertyType, propertyValue;
16427
16428 try {
16429 for (propertyName in type) {
16430 propertyType = type[propertyName];
16431 propertyValue = value[propertyName];
16432
16433 typeforce(propertyType, propertyValue, strict);
16434 }
16435 } catch (e) {
16436 throw new TypeError(tfPropertyErrorString(propertyType, propertyName, propertyValue));
16437 }
16438
16439 if (strict) {
16440 for (propertyName in value) {
16441 if (type[propertyName]) continue;
16442
16443 throw new TypeError('Unexpected property "' + propertyName + '"');
16444 }
16445 }
16446
16447 return true;
16448 }
16449 object.toJSON = function () {
16450 return type;
16451 };
16452
16453 return object;
16454 },
16455
16456 oneOf: function oneOf() {
16457 for (var _len = arguments.length, types = Array(_len), _key = 0; _key < _len; _key++) {
16458 types[_key] = arguments[_key];
16459 }
16460
16461 function oneOf(value, strict) {
16462 return types.some(function (type) {
16463 try {
16464 return typeforce(type, value, strict);
16465 } catch (e) {
16466 return false;
16467 }
16468 });
16469 }
16470 oneOf.toJSON = function () {
16471 return types.map(sJSON).join('|');
16472 };
16473
16474 return oneOf;
16475 },
16476
16477 quacksLike: function quacksLike(type) {
16478 function quacksLike(value, strict) {
16479 return type === getValueTypeName(value);
16480 }
16481 quacksLike.toJSON = function () {
16482 return type;
16483 };
16484
16485 return quacksLike;
16486 },
16487
16488 tuple: function tuple() {
16489 for (var _len2 = arguments.length, types = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
16490 types[_key2] = arguments[_key2];
16491 }
16492
16493 function tuple(value, strict) {
16494 return types.every(function (type, i) {
16495 return typeforce(type, value[i], strict);
16496 });
16497 }
16498 tuple.toJSON = function () {
16499 return '(' + types.map(sJSON).join(', ') + ')';
16500 };
16501
16502 return tuple;
16503 },
16504
16505 value: function value(expected) {
16506 function value(actual) {
16507 return actual === expected;
16508 }
16509 value.toJSON = function () {
16510 return expected;
16511 };
16512
16513 return value;
16514 }
16515 };
16516
16517 function compile(type) {
16518 if (nativeTypes.String(type)) {
16519 if (type[0] === '?') return otherTypes.maybe(compile(type.slice(1)));
16520
16521 return nativeTypes[type] || otherTypes.quacksLike(type);
16522 } else if (type && nativeTypes.Object(type)) {
16523 if (nativeTypes.Array(type)) return otherTypes.arrayOf(compile(type[0]));
16524
16525 var compiled = {};
16526
16527 for (var propertyName in type) {
16528 compiled[propertyName] = compile(type[propertyName]);
16529 }
16530
16531 return otherTypes.object(compiled);
16532 } else if (nativeTypes.Function(type)) {
16533 return type;
16534 }
16535
16536 return otherTypes.value(type);
16537 }
16538
16539 function typeforce(_x3, _x4, _x5) {
16540 var _again = true;
16541
16542 _function: while (_again) {
16543 var type = _x3,
16544 value = _x4,
16545 strict = _x5;
16546 _again = false;
16547
16548 if (nativeTypes.Function(type)) {
16549 if (type(value, strict)) return true;
16550
16551 throw new TypeError(tfErrorString(type, value));
16552 }
16553
16554 // JIT
16555 _x3 = compile(type);
16556 _x4 = value;
16557 _x5 = strict;
16558 _again = true;
16559 continue _function;
16560 }
16561 }
16562
16563 // assign all types to typeforce function
16564 var typeName;
16565 Object.keys(nativeTypes).forEach(function (typeName) {
16566 var nativeType = nativeTypes[typeName];
16567 nativeType.toJSON = function () {
16568 return typeName;
16569 };
16570
16571 typeforce[typeName] = nativeType;
16572 });
16573
16574 for (typeName in otherTypes) {
16575 typeforce[typeName] = otherTypes[typeName];
16576 }
16577
16578 module.exports = typeforce;
16579 module.exports.compile = compile;
16580 }).call(this,require("buffer").Buffer)
16581 },{"buffer":7}],54:[function(require,module,exports){
16582 (function (Buffer){
16583 var assert = require('assert')
16584 var base58check = require('bs58check')
16585 var typeForce = require('typeforce')
16586 var networks = require('./networks')
16587 var scripts = require('./scripts')
16588
16589 function findScriptTypeByVersion (version) {
16590 for (var networkName in networks) {
16591 var network = networks[networkName]
16592
16593 if (version === network.pubKeyHash) return 'pubkeyhash'
16594 if (version === network.scriptHash) return 'scripthash'
16595 }
16596 }
16597
16598 function Address (hash, version) {
16599 typeForce('Buffer', hash)
16600
16601 assert.strictEqual(hash.length, 20, 'Invalid hash length')
16602 assert.strictEqual(version & 0xff, version, 'Invalid version byte')
16603
16604 this.hash = hash
16605 this.version = version
16606 }
16607
16608 Address.fromBase58Check = function (string) {
16609 var payload = base58check.decode(string)
16610 var version = payload.readUInt8(0)
16611 var hash = payload.slice(1)
16612
16613 return new Address(hash, version)
16614 }
16615
16616 Address.fromOutputScript = function (script, network) {
16617 network = network || networks.bitcoin
16618
16619 if (scripts.isPubKeyHashOutput(script)) return new Address(script.chunks[2], network.pubKeyHash)
16620 if (scripts.isScriptHashOutput(script)) return new Address(script.chunks[1], network.scriptHash)
16621
16622 assert(false, script.toASM() + ' has no matching Address')
16623 }
16624
16625 Address.prototype.toBase58Check = function () {
16626 var payload = new Buffer(21)
16627 payload.writeUInt8(this.version, 0)
16628 this.hash.copy(payload, 1)
16629
16630 return base58check.encode(payload)
16631 }
16632
16633 Address.prototype.toOutputScript = function () {
16634 var scriptType = findScriptTypeByVersion(this.version)
16635
16636 if (scriptType === 'pubkeyhash') return scripts.pubKeyHashOutput(this.hash)
16637 if (scriptType === 'scripthash') return scripts.scriptHashOutput(this.hash)
16638
16639 assert(false, this.toString() + ' has no matching Script')
16640 }
16641
16642 Address.prototype.toString = Address.prototype.toBase58Check
16643
16644 module.exports = Address
16645
16646 }).call(this,require("buffer").Buffer)
16647 },{"./networks":66,"./scripts":69,"assert":5,"bs58check":31,"buffer":7,"typeforce":53}],55:[function(require,module,exports){
16648 var bs58check = require('bs58check')
16649
16650 function decode () {
16651 console.warn('bs58check will be removed in 2.0.0. require("bs58check") instead.')
16652
16653 return bs58check.decode.apply(undefined, arguments)
16654 }
16655
16656 function encode () {
16657 console.warn('bs58check will be removed in 2.0.0. require("bs58check") instead.')
16658
16659 return bs58check.encode.apply(undefined, arguments)
16660 }
16661
16662 module.exports = {
16663 decode: decode,
16664 encode: encode
16665 }
16666
16667 },{"bs58check":31}],56:[function(require,module,exports){
16668 (function (Buffer){
16669 var assert = require('assert')
16670 var bufferutils = require('./bufferutils')
16671 var crypto = require('./crypto')
16672
16673 var Transaction = require('./transaction')
16674
16675 function Block () {
16676 this.version = 1
16677 this.prevHash = null
16678 this.merkleRoot = null
16679 this.timestamp = 0
16680 this.bits = 0
16681 this.nonce = 0
16682 }
16683
16684 Block.fromBuffer = function (buffer) {
16685 assert(buffer.length >= 80, 'Buffer too small (< 80 bytes)')
16686
16687 var offset = 0
16688 function readSlice (n) {
16689 offset += n
16690 return buffer.slice(offset - n, offset)
16691 }
16692
16693 function readUInt32 () {
16694 var i = buffer.readUInt32LE(offset)
16695 offset += 4
16696 return i
16697 }
16698
16699 var block = new Block()
16700 block.version = readUInt32()
16701 block.prevHash = readSlice(32)
16702 block.merkleRoot = readSlice(32)
16703 block.timestamp = readUInt32()
16704 block.bits = readUInt32()
16705 block.nonce = readUInt32()
16706
16707 if (buffer.length === 80) return block
16708
16709 function readVarInt () {
16710 var vi = bufferutils.readVarInt(buffer, offset)
16711 offset += vi.size
16712 return vi.number
16713 }
16714
16715 // FIXME: poor performance
16716 function readTransaction () {
16717 var tx = Transaction.fromBuffer(buffer.slice(offset), true)
16718
16719 offset += tx.toBuffer().length
16720 return tx
16721 }
16722
16723 var nTransactions = readVarInt()
16724 block.transactions = []
16725
16726 for (var i = 0; i < nTransactions; ++i) {
16727 var tx = readTransaction()
16728 block.transactions.push(tx)
16729 }
16730
16731 return block
16732 }
16733
16734 Block.fromHex = function (hex) {
16735 return Block.fromBuffer(new Buffer(hex, 'hex'))
16736 }
16737
16738 Block.prototype.getHash = function () {
16739 return crypto.hash256(this.toBuffer(true))
16740 }
16741
16742 Block.prototype.getId = function () {
16743 return bufferutils.reverse(this.getHash()).toString('hex')
16744 }
16745
16746 Block.prototype.getUTCDate = function () {
16747 var date = new Date(0) // epoch
16748 date.setUTCSeconds(this.timestamp)
16749
16750 return date
16751 }
16752
16753 Block.prototype.toBuffer = function (headersOnly) {
16754 var buffer = new Buffer(80)
16755
16756 var offset = 0
16757 function writeSlice (slice) {
16758 slice.copy(buffer, offset)
16759 offset += slice.length
16760 }
16761
16762 function writeUInt32 (i) {
16763 buffer.writeUInt32LE(i, offset)
16764 offset += 4
16765 }
16766
16767 writeUInt32(this.version)
16768 writeSlice(this.prevHash)
16769 writeSlice(this.merkleRoot)
16770 writeUInt32(this.timestamp)
16771 writeUInt32(this.bits)
16772 writeUInt32(this.nonce)
16773
16774 if (headersOnly || !this.transactions) return buffer
16775
16776 var txLenBuffer = bufferutils.varIntBuffer(this.transactions.length)
16777 var txBuffers = this.transactions.map(function (tx) {
16778 return tx.toBuffer()
16779 })
16780
16781 return Buffer.concat([buffer, txLenBuffer].concat(txBuffers))
16782 }
16783
16784 Block.prototype.toHex = function (headersOnly) {
16785 return this.toBuffer(headersOnly).toString('hex')
16786 }
16787
16788 module.exports = Block
16789
16790 }).call(this,require("buffer").Buffer)
16791 },{"./bufferutils":57,"./crypto":58,"./transaction":70,"assert":5,"buffer":7}],57:[function(require,module,exports){
16792 (function (Buffer){
16793 var assert = require('assert')
16794 var opcodes = require('./opcodes')
16795
16796 // https://github.com/feross/buffer/blob/master/index.js#L1127
16797 function verifuint (value, max) {
16798 assert(typeof value === 'number', 'cannot write a non-number as a number')
16799 assert(value >= 0, 'specified a negative value for writing an unsigned value')
16800 assert(value <= max, 'value is larger than maximum value for type')
16801 assert(Math.floor(value) === value, 'value has a fractional component')
16802 }
16803
16804 function pushDataSize (i) {
16805 return i < opcodes.OP_PUSHDATA1 ? 1
16806 : i < 0xff ? 2
16807 : i < 0xffff ? 3
16808 : 5
16809 }
16810
16811 function readPushDataInt (buffer, offset) {
16812 var opcode = buffer.readUInt8(offset)
16813 var number, size
16814
16815 // ~6 bit
16816 if (opcode < opcodes.OP_PUSHDATA1) {
16817 number = opcode
16818 size = 1
16819
16820 // 8 bit
16821 } else if (opcode === opcodes.OP_PUSHDATA1) {
16822 if (offset + 2 > buffer.length) return null
16823 number = buffer.readUInt8(offset + 1)
16824 size = 2
16825
16826 // 16 bit
16827 } else if (opcode === opcodes.OP_PUSHDATA2) {
16828 if (offset + 3 > buffer.length) return null
16829 number = buffer.readUInt16LE(offset + 1)
16830 size = 3
16831
16832 // 32 bit
16833 } else {
16834 if (offset + 5 > buffer.length) return null
16835 assert.equal(opcode, opcodes.OP_PUSHDATA4, 'Unexpected opcode')
16836
16837 number = buffer.readUInt32LE(offset + 1)
16838 size = 5
16839 }
16840
16841 return {
16842 opcode: opcode,
16843 number: number,
16844 size: size
16845 }
16846 }
16847
16848 function readUInt64LE (buffer, offset) {
16849 var a = buffer.readUInt32LE(offset)
16850 var b = buffer.readUInt32LE(offset + 4)
16851 b *= 0x100000000
16852
16853 verifuint(b + a, 0x001fffffffffffff)
16854
16855 return b + a
16856 }
16857
16858 function readVarInt (buffer, offset) {
16859 var t = buffer.readUInt8(offset)
16860 var number, size
16861
16862 // 8 bit
16863 if (t < 253) {
16864 number = t
16865 size = 1
16866
16867 // 16 bit
16868 } else if (t < 254) {
16869 number = buffer.readUInt16LE(offset + 1)
16870 size = 3
16871
16872 // 32 bit
16873 } else if (t < 255) {
16874 number = buffer.readUInt32LE(offset + 1)
16875 size = 5
16876
16877 // 64 bit
16878 } else {
16879 number = readUInt64LE(buffer, offset + 1)
16880 size = 9
16881 }
16882
16883 return {
16884 number: number,
16885 size: size
16886 }
16887 }
16888
16889 function writePushDataInt (buffer, number, offset) {
16890 var size = pushDataSize(number)
16891
16892 // ~6 bit
16893 if (size === 1) {
16894 buffer.writeUInt8(number, offset)
16895
16896 // 8 bit
16897 } else if (size === 2) {
16898 buffer.writeUInt8(opcodes.OP_PUSHDATA1, offset)
16899 buffer.writeUInt8(number, offset + 1)
16900
16901 // 16 bit
16902 } else if (size === 3) {
16903 buffer.writeUInt8(opcodes.OP_PUSHDATA2, offset)
16904 buffer.writeUInt16LE(number, offset + 1)
16905
16906 // 32 bit
16907 } else {
16908 buffer.writeUInt8(opcodes.OP_PUSHDATA4, offset)
16909 buffer.writeUInt32LE(number, offset + 1)
16910 }
16911
16912 return size
16913 }
16914
16915 function writeUInt64LE (buffer, value, offset) {
16916 verifuint(value, 0x001fffffffffffff)
16917
16918 buffer.writeInt32LE(value & -1, offset)
16919 buffer.writeUInt32LE(Math.floor(value / 0x100000000), offset + 4)
16920 }
16921
16922 function varIntSize (i) {
16923 return i < 253 ? 1
16924 : i < 0x10000 ? 3
16925 : i < 0x100000000 ? 5
16926 : 9
16927 }
16928
16929 function writeVarInt (buffer, number, offset) {
16930 var size = varIntSize(number)
16931
16932 // 8 bit
16933 if (size === 1) {
16934 buffer.writeUInt8(number, offset)
16935
16936 // 16 bit
16937 } else if (size === 3) {
16938 buffer.writeUInt8(253, offset)
16939 buffer.writeUInt16LE(number, offset + 1)
16940
16941 // 32 bit
16942 } else if (size === 5) {
16943 buffer.writeUInt8(254, offset)
16944 buffer.writeUInt32LE(number, offset + 1)
16945
16946 // 64 bit
16947 } else {
16948 buffer.writeUInt8(255, offset)
16949 writeUInt64LE(buffer, number, offset + 1)
16950 }
16951
16952 return size
16953 }
16954
16955 function varIntBuffer (i) {
16956 var size = varIntSize(i)
16957 var buffer = new Buffer(size)
16958 writeVarInt(buffer, i, 0)
16959
16960 return buffer
16961 }
16962
16963 function reverse (buffer) {
16964 var buffer2 = new Buffer(buffer)
16965 Array.prototype.reverse.call(buffer2)
16966 return buffer2
16967 }
16968
16969 module.exports = {
16970 pushDataSize: pushDataSize,
16971 readPushDataInt: readPushDataInt,
16972 readUInt64LE: readUInt64LE,
16973 readVarInt: readVarInt,
16974 reverse: reverse,
16975 varIntBuffer: varIntBuffer,
16976 varIntSize: varIntSize,
16977 writePushDataInt: writePushDataInt,
16978 writeUInt64LE: writeUInt64LE,
16979 writeVarInt: writeVarInt
16980 }
16981
16982 }).call(this,require("buffer").Buffer)
16983 },{"./opcodes":67,"assert":5,"buffer":7}],58:[function(require,module,exports){
16984 var createHash = require('create-hash')
16985
16986 function hash160 (buffer) {
16987 return ripemd160(sha256(buffer))
16988 }
16989
16990 function hash256 (buffer) {
16991 return sha256(sha256(buffer))
16992 }
16993
16994 function ripemd160 (buffer) {
16995 return createHash('rmd160').update(buffer).digest()
16996 }
16997
16998 function sha1 (buffer) {
16999 return createHash('sha1').update(buffer).digest()
17000 }
17001
17002 function sha256 (buffer) {
17003 return createHash('sha256').update(buffer).digest()
17004 }
17005
17006 // FIXME: Name not consistent with others
17007 var createHmac = require('create-hmac')
17008
17009 function HmacSHA256 (buffer, secret) {
17010 console.warn('Hmac* functions are deprecated for removal in 2.0.0, use node crypto instead')
17011 return createHmac('sha256', secret).update(buffer).digest()
17012 }
17013
17014 function HmacSHA512 (buffer, secret) {
17015 console.warn('Hmac* functions are deprecated for removal in 2.0.0, use node crypto instead')
17016 return createHmac('sha512', secret).update(buffer).digest()
17017 }
17018
17019 module.exports = {
17020 ripemd160: ripemd160,
17021 sha1: sha1,
17022 sha256: sha256,
17023 hash160: hash160,
17024 hash256: hash256,
17025 HmacSHA256: HmacSHA256,
17026 HmacSHA512: HmacSHA512
17027 }
17028
17029 },{"create-hash":32,"create-hmac":45}],59:[function(require,module,exports){
17030 (function (Buffer){
17031 var assert = require('assert')
17032 var createHmac = require('create-hmac')
17033 var typeForce = require('typeforce')
17034
17035 var BigInteger = require('bigi')
17036 var ECSignature = require('./ecsignature')
17037
17038 var ZERO = new Buffer([0])
17039 var ONE = new Buffer([1])
17040
17041 // https://tools.ietf.org/html/rfc6979#section-3.2
17042 function deterministicGenerateK (curve, hash, d, checkSig) {
17043 typeForce('Buffer', hash)
17044 typeForce('BigInteger', d)
17045
17046 // FIXME: remove/uncomment for 2.0.0
17047 // typeForce('Function', checkSig)
17048
17049 if (typeof checkSig !== 'function') {
17050 console.warn('deterministicGenerateK requires a checkSig callback in 2.0.0, see #337 for more information')
17051
17052 checkSig = function (k) {
17053 var G = curve.G
17054 var n = curve.n
17055 var e = BigInteger.fromBuffer(hash)
17056
17057 var Q = G.multiply(k)
17058
17059 if (curve.isInfinity(Q))
17060 return false
17061
17062 var r = Q.affineX.mod(n)
17063 if (r.signum() === 0)
17064 return false
17065
17066 var s = k.modInverse(n).multiply(e.add(d.multiply(r))).mod(n)
17067 if (s.signum() === 0)
17068 return false
17069
17070 return true
17071 }
17072 }
17073
17074 // sanity check
17075 assert.equal(hash.length, 32, 'Hash must be 256 bit')
17076
17077 var x = d.toBuffer(32)
17078 var k = new Buffer(32)
17079 var v = new Buffer(32)
17080
17081 // Step A, ignored as hash already provided
17082 // Step B
17083 v.fill(1)
17084
17085 // Step C
17086 k.fill(0)
17087
17088 // Step D
17089 k = createHmac('sha256', k)
17090 .update(v)
17091 .update(ZERO)
17092 .update(x)
17093 .update(hash)
17094 .digest()
17095
17096 // Step E
17097 v = createHmac('sha256', k).update(v).digest()
17098
17099 // Step F
17100 k = createHmac('sha256', k)
17101 .update(v)
17102 .update(ONE)
17103 .update(x)
17104 .update(hash)
17105 .digest()
17106
17107 // Step G
17108 v = createHmac('sha256', k).update(v).digest()
17109
17110 // Step H1/H2a, ignored as tlen === qlen (256 bit)
17111 // Step H2b
17112 v = createHmac('sha256', k).update(v).digest()
17113
17114 var T = BigInteger.fromBuffer(v)
17115
17116 // Step H3, repeat until T is within the interval [1, n - 1] and is suitable for ECDSA
17117 while ((T.signum() <= 0) || (T.compareTo(curve.n) >= 0) || !checkSig(T)) {
17118 k = createHmac('sha256', k)
17119 .update(v)
17120 .update(ZERO)
17121 .digest()
17122
17123 v = createHmac('sha256', k).update(v).digest()
17124
17125 // Step H1/H2a, again, ignored as tlen === qlen (256 bit)
17126 // Step H2b again
17127 v = createHmac('sha256', k).update(v).digest()
17128 T = BigInteger.fromBuffer(v)
17129 }
17130
17131 return T
17132 }
17133
17134 function sign (curve, hash, d) {
17135 var r, s
17136
17137 var e = BigInteger.fromBuffer(hash)
17138 var n = curve.n
17139 var G = curve.G
17140
17141 deterministicGenerateK(curve, hash, d, function (k) {
17142 var Q = G.multiply(k)
17143
17144 if (curve.isInfinity(Q))
17145 return false
17146
17147 r = Q.affineX.mod(n)
17148 if (r.signum() === 0)
17149 return false
17150
17151 s = k.modInverse(n).multiply(e.add(d.multiply(r))).mod(n)
17152 if (s.signum() === 0)
17153 return false
17154
17155 return true
17156 })
17157
17158 var N_OVER_TWO = n.shiftRight(1)
17159
17160 // enforce low S values, see bip62: 'low s values in signatures'
17161 if (s.compareTo(N_OVER_TWO) > 0) {
17162 s = n.subtract(s)
17163 }
17164
17165 return new ECSignature(r, s)
17166 }
17167
17168 function verifyRaw (curve, e, signature, Q) {
17169 var n = curve.n
17170 var G = curve.G
17171
17172 var r = signature.r
17173 var s = signature.s
17174
17175 // 1.4.1 Enforce r and s are both integers in the interval [1, n − 1]
17176 if (r.signum() <= 0 || r.compareTo(n) >= 0) return false
17177 if (s.signum() <= 0 || s.compareTo(n) >= 0) return false
17178
17179 // c = s^-1 mod n
17180 var c = s.modInverse(n)
17181
17182 // 1.4.4 Compute u1 = es^−1 mod n
17183 // u2 = rs^−1 mod n
17184 var u1 = e.multiply(c).mod(n)
17185 var u2 = r.multiply(c).mod(n)
17186
17187 // 1.4.5 Compute R = (xR, yR) = u1G + u2Q
17188 var R = G.multiplyTwo(u1, Q, u2)
17189 var v = R.affineX.mod(n)
17190
17191 // 1.4.5 (cont.) Enforce R is not at infinity
17192 if (curve.isInfinity(R)) return false
17193
17194 // 1.4.8 If v = r, output "valid", and if v != r, output "invalid"
17195 return v.equals(r)
17196 }
17197
17198 function verify (curve, hash, signature, Q) {
17199 // 1.4.2 H = Hash(M), already done by the user
17200 // 1.4.3 e = H
17201 var e = BigInteger.fromBuffer(hash)
17202
17203 return verifyRaw(curve, e, signature, Q)
17204 }
17205
17206 /**
17207 * Recover a public key from a signature.
17208 *
17209 * See SEC 1: Elliptic Curve Cryptography, section 4.1.6, "Public
17210 * Key Recovery Operation".
17211 *
17212 * http://www.secg.org/download/aid-780/sec1-v2.pdf
17213 */
17214 function recoverPubKey (curve, e, signature, i) {
17215 assert.strictEqual(i & 3, i, 'Recovery param is more than two bits')
17216
17217 var n = curve.n
17218 var G = curve.G
17219
17220 var r = signature.r
17221 var s = signature.s
17222
17223 assert(r.signum() > 0 && r.compareTo(n) < 0, 'Invalid r value')
17224 assert(s.signum() > 0 && s.compareTo(n) < 0, 'Invalid s value')
17225
17226 // A set LSB signifies that the y-coordinate is odd
17227 var isYOdd = i & 1
17228
17229 // The more significant bit specifies whether we should use the
17230 // first or second candidate key.
17231 var isSecondKey = i >> 1
17232
17233 // 1.1 Let x = r + jn
17234 var x = isSecondKey ? r.add(n) : r
17235 var R = curve.pointFromX(isYOdd, x)
17236
17237 // 1.4 Check that nR is at infinity
17238 var nR = R.multiply(n)
17239 assert(curve.isInfinity(nR), 'nR is not a valid curve point')
17240
17241 // Compute -e from e
17242 var eNeg = e.negate().mod(n)
17243
17244 // 1.6.1 Compute Q = r^-1 (sR - eG)
17245 // Q = r^-1 (sR + -eG)
17246 var rInv = r.modInverse(n)
17247
17248 var Q = R.multiplyTwo(s, G, eNeg).multiply(rInv)
17249 curve.validate(Q)
17250
17251 return Q
17252 }
17253
17254 /**
17255 * Calculate pubkey extraction parameter.
17256 *
17257 * When extracting a pubkey from a signature, we have to
17258 * distinguish four different cases. Rather than putting this
17259 * burden on the verifier, Bitcoin includes a 2-bit value with the
17260 * signature.
17261 *
17262 * This function simply tries all four cases and returns the value
17263 * that resulted in a successful pubkey recovery.
17264 */
17265 function calcPubKeyRecoveryParam (curve, e, signature, Q) {
17266 for (var i = 0; i < 4; i++) {
17267 var Qprime = recoverPubKey(curve, e, signature, i)
17268
17269 // 1.6.2 Verify Q
17270 if (Qprime.equals(Q)) {
17271 return i
17272 }
17273 }
17274
17275 throw new Error('Unable to find valid recovery factor')
17276 }
17277
17278 module.exports = {
17279 calcPubKeyRecoveryParam: calcPubKeyRecoveryParam,
17280 deterministicGenerateK: deterministicGenerateK,
17281 recoverPubKey: recoverPubKey,
17282 sign: sign,
17283 verify: verify,
17284 verifyRaw: verifyRaw
17285 }
17286
17287 }).call(this,require("buffer").Buffer)
17288 },{"./ecsignature":62,"assert":5,"bigi":3,"buffer":7,"create-hmac":45,"typeforce":53}],60:[function(require,module,exports){
17289 (function (Buffer){
17290 var assert = require('assert')
17291 var base58check = require('bs58check')
17292 var ecdsa = require('./ecdsa')
17293 var networks = require('./networks')
17294 var randomBytes = require('randombytes')
17295 var typeForce = require('typeforce')
17296
17297 var BigInteger = require('bigi')
17298 var ECPubKey = require('./ecpubkey')
17299
17300 var ecurve = require('ecurve')
17301 var secp256k1 = ecurve.getCurveByName('secp256k1')
17302
17303 function ECKey (d, compressed) {
17304 assert(d.signum() > 0, 'Private key must be greater than 0')
17305 assert(d.compareTo(ECKey.curve.n) < 0, 'Private key must be less than the curve order')
17306
17307 var Q = ECKey.curve.G.multiply(d)
17308
17309 this.d = d
17310 this.pub = new ECPubKey(Q, compressed)
17311 }
17312
17313 // Constants
17314 ECKey.curve = secp256k1
17315
17316 // Static constructors
17317 ECKey.fromWIF = function (string) {
17318 var payload = base58check.decode(string)
17319 var compressed = false
17320
17321 // Ignore the version byte
17322 payload = payload.slice(1)
17323
17324 if (payload.length === 33) {
17325 assert.strictEqual(payload[32], 0x01, 'Invalid compression flag')
17326
17327 // Truncate the compression flag
17328 payload = payload.slice(0, -1)
17329 compressed = true
17330 }
17331
17332 assert.equal(payload.length, 32, 'Invalid WIF payload length')
17333
17334 var d = BigInteger.fromBuffer(payload)
17335 return new ECKey(d, compressed)
17336 }
17337
17338 ECKey.makeRandom = function (compressed, rng) {
17339 rng = rng || randomBytes
17340
17341 var buffer = rng(32)
17342 typeForce('Buffer', buffer)
17343 assert.equal(buffer.length, 32, 'Expected 256-bit Buffer from RNG')
17344
17345 var d = BigInteger.fromBuffer(buffer)
17346 d = d.mod(ECKey.curve.n)
17347
17348 return new ECKey(d, compressed)
17349 }
17350
17351 // Export functions
17352 ECKey.prototype.toWIF = function (network) {
17353 network = network || networks.bitcoin
17354
17355 var bufferLen = this.pub.compressed ? 34 : 33
17356 var buffer = new Buffer(bufferLen)
17357
17358 buffer.writeUInt8(network.wif, 0)
17359 this.d.toBuffer(32).copy(buffer, 1)
17360
17361 if (this.pub.compressed) {
17362 buffer.writeUInt8(0x01, 33)
17363 }
17364
17365 return base58check.encode(buffer)
17366 }
17367
17368 // Operations
17369 ECKey.prototype.sign = function (hash) {
17370 return ecdsa.sign(ECKey.curve, hash, this.d)
17371 }
17372
17373 module.exports = ECKey
17374
17375 }).call(this,require("buffer").Buffer)
17376 },{"./ecdsa":59,"./ecpubkey":61,"./networks":66,"assert":5,"bigi":3,"bs58check":31,"buffer":7,"ecurve":49,"randombytes":52,"typeforce":53}],61:[function(require,module,exports){
17377 (function (Buffer){
17378 var crypto = require('./crypto')
17379 var ecdsa = require('./ecdsa')
17380 var typeForce = require('typeforce')
17381 var networks = require('./networks')
17382
17383 var Address = require('./address')
17384
17385 var ecurve = require('ecurve')
17386 var secp256k1 = ecurve.getCurveByName('secp256k1')
17387
17388 function ECPubKey (Q, compressed) {
17389 if (compressed === undefined) {
17390 compressed = true
17391 }
17392
17393 typeForce('Point', Q)
17394 typeForce('Boolean', compressed)
17395
17396 this.compressed = compressed
17397 this.Q = Q
17398 }
17399
17400 // Constants
17401 ECPubKey.curve = secp256k1
17402
17403 // Static constructors
17404 ECPubKey.fromBuffer = function (buffer) {
17405 var Q = ecurve.Point.decodeFrom(ECPubKey.curve, buffer)
17406 return new ECPubKey(Q, Q.compressed)
17407 }
17408
17409 ECPubKey.fromHex = function (hex) {
17410 return ECPubKey.fromBuffer(new Buffer(hex, 'hex'))
17411 }
17412
17413 // Operations
17414 ECPubKey.prototype.getAddress = function (network) {
17415 network = network || networks.bitcoin
17416
17417 return new Address(crypto.hash160(this.toBuffer()), network.pubKeyHash)
17418 }
17419
17420 ECPubKey.prototype.verify = function (hash, signature) {
17421 return ecdsa.verify(ECPubKey.curve, hash, signature, this.Q)
17422 }
17423
17424 // Export functions
17425 ECPubKey.prototype.toBuffer = function () {
17426 return this.Q.getEncoded(this.compressed)
17427 }
17428
17429 ECPubKey.prototype.toHex = function () {
17430 return this.toBuffer().toString('hex')
17431 }
17432
17433 module.exports = ECPubKey
17434
17435 }).call(this,require("buffer").Buffer)
17436 },{"./address":54,"./crypto":58,"./ecdsa":59,"./networks":66,"buffer":7,"ecurve":49,"typeforce":53}],62:[function(require,module,exports){
17437 (function (Buffer){
17438 var assert = require('assert')
17439 var typeForce = require('typeforce')
17440
17441 var BigInteger = require('bigi')
17442
17443 function ECSignature (r, s) {
17444 typeForce('BigInteger', r)
17445 typeForce('BigInteger', s)
17446
17447 this.r = r
17448 this.s = s
17449 }
17450
17451 ECSignature.parseCompact = function (buffer) {
17452 assert.equal(buffer.length, 65, 'Invalid signature length')
17453 var i = buffer.readUInt8(0) - 27
17454
17455 // At most 3 bits
17456 assert.equal(i, i & 7, 'Invalid signature parameter')
17457 var compressed = !!(i & 4)
17458
17459 // Recovery param only
17460 i = i & 3
17461
17462 var r = BigInteger.fromBuffer(buffer.slice(1, 33))
17463 var s = BigInteger.fromBuffer(buffer.slice(33))
17464
17465 return {
17466 compressed: compressed,
17467 i: i,
17468 signature: new ECSignature(r, s)
17469 }
17470 }
17471
17472 ECSignature.fromDER = function (buffer) {
17473 assert.equal(buffer.readUInt8(0), 0x30, 'Not a DER sequence')
17474 assert.equal(buffer.readUInt8(1), buffer.length - 2, 'Invalid sequence length')
17475 assert.equal(buffer.readUInt8(2), 0x02, 'Expected a DER integer')
17476
17477 var rLen = buffer.readUInt8(3)
17478 assert(rLen > 0, 'R length is zero')
17479
17480 var offset = 4 + rLen
17481 assert.equal(buffer.readUInt8(offset), 0x02, 'Expected a DER integer (2)')
17482
17483 var sLen = buffer.readUInt8(offset + 1)
17484 assert(sLen > 0, 'S length is zero')
17485
17486 var rB = buffer.slice(4, offset)
17487 var sB = buffer.slice(offset + 2)
17488 offset += 2 + sLen
17489
17490 if (rLen > 1 && rB.readUInt8(0) === 0x00) {
17491 assert(rB.readUInt8(1) & 0x80, 'R value excessively padded')
17492 }
17493
17494 if (sLen > 1 && sB.readUInt8(0) === 0x00) {
17495 assert(sB.readUInt8(1) & 0x80, 'S value excessively padded')
17496 }
17497
17498 assert.equal(offset, buffer.length, 'Invalid DER encoding')
17499 var r = BigInteger.fromDERInteger(rB)
17500 var s = BigInteger.fromDERInteger(sB)
17501
17502 assert(r.signum() >= 0, 'R value is negative')
17503 assert(s.signum() >= 0, 'S value is negative')
17504
17505 return new ECSignature(r, s)
17506 }
17507
17508 // BIP62: 1 byte hashType flag (only 0x01, 0x02, 0x03, 0x81, 0x82 and 0x83 are allowed)
17509 ECSignature.parseScriptSignature = function (buffer) {
17510 var hashType = buffer.readUInt8(buffer.length - 1)
17511 var hashTypeMod = hashType & ~0x80
17512
17513 assert(hashTypeMod > 0x00 && hashTypeMod < 0x04, 'Invalid hashType ' + hashType)
17514
17515 return {
17516 signature: ECSignature.fromDER(buffer.slice(0, -1)),
17517 hashType: hashType
17518 }
17519 }
17520
17521 ECSignature.prototype.toCompact = function (i, compressed) {
17522 if (compressed) {
17523 i += 4
17524 }
17525
17526 i += 27
17527
17528 var buffer = new Buffer(65)
17529 buffer.writeUInt8(i, 0)
17530
17531 this.r.toBuffer(32).copy(buffer, 1)
17532 this.s.toBuffer(32).copy(buffer, 33)
17533
17534 return buffer
17535 }
17536
17537 ECSignature.prototype.toDER = function () {
17538 var rBa = this.r.toDERInteger()
17539 var sBa = this.s.toDERInteger()
17540
17541 var sequence = []
17542
17543 // INTEGER
17544 sequence.push(0x02, rBa.length)
17545 sequence = sequence.concat(rBa)
17546
17547 // INTEGER
17548 sequence.push(0x02, sBa.length)
17549 sequence = sequence.concat(sBa)
17550
17551 // SEQUENCE
17552 sequence.unshift(0x30, sequence.length)
17553
17554 return new Buffer(sequence)
17555 }
17556
17557 ECSignature.prototype.toScriptSignature = function (hashType) {
17558 var hashTypeMod = hashType & ~0x80
17559 assert(hashTypeMod > 0x00 && hashTypeMod < 0x04, 'Invalid hashType ' + hashType)
17560
17561 var hashTypeBuffer = new Buffer(1)
17562 hashTypeBuffer.writeUInt8(hashType, 0)
17563
17564 return Buffer.concat([this.toDER(), hashTypeBuffer])
17565 }
17566
17567 module.exports = ECSignature
17568
17569 }).call(this,require("buffer").Buffer)
17570 },{"assert":5,"bigi":3,"buffer":7,"typeforce":53}],63:[function(require,module,exports){
17571 (function (Buffer){
17572 var assert = require('assert')
17573 var base58check = require('bs58check')
17574 var bcrypto = require('./crypto')
17575 var createHmac = require('create-hmac')
17576 var typeForce = require('typeforce')
17577 var networks = require('./networks')
17578
17579 var BigInteger = require('bigi')
17580 var ECKey = require('./eckey')
17581 var ECPubKey = require('./ecpubkey')
17582
17583 var ecurve = require('ecurve')
17584 var curve = ecurve.getCurveByName('secp256k1')
17585
17586 function findBIP32NetworkByVersion (version) {
17587 for (var name in networks) {
17588 var network = networks[name]
17589
17590 if (version === network.bip32.private || version === network.bip32.public) {
17591 return network
17592 }
17593 }
17594
17595 assert(false, 'Could not find network for ' + version.toString(16))
17596 }
17597
17598 function HDNode (K, chainCode, network) {
17599 network = network || networks.bitcoin
17600
17601 typeForce('Buffer', chainCode)
17602
17603 assert.equal(chainCode.length, 32, 'Expected chainCode length of 32, got ' + chainCode.length)
17604 assert(network.bip32, 'Unknown BIP32 constants for network')
17605
17606 this.chainCode = chainCode
17607 this.depth = 0
17608 this.index = 0
17609 this.parentFingerprint = 0x00000000
17610 this.network = network
17611
17612 if (K instanceof BigInteger) {
17613 this.privKey = new ECKey(K, true)
17614 this.pubKey = this.privKey.pub
17615 } else if (K instanceof ECKey) {
17616 assert(K.pub.compressed, 'ECKey must be compressed')
17617 this.privKey = K
17618 this.pubKey = K.pub
17619 } else if (K instanceof ECPubKey) {
17620 assert(K.compressed, 'ECPubKey must be compressed')
17621 this.pubKey = K
17622 } else {
17623 this.pubKey = new ECPubKey(K, true)
17624 }
17625 }
17626
17627 HDNode.MASTER_SECRET = new Buffer('Bitcoin seed')
17628 HDNode.HIGHEST_BIT = 0x80000000
17629 HDNode.LENGTH = 78
17630
17631 HDNode.fromSeedBuffer = function (seed, network) {
17632 typeForce('Buffer', seed)
17633
17634 assert(seed.length >= 16, 'Seed should be at least 128 bits')
17635 assert(seed.length <= 64, 'Seed should be at most 512 bits')
17636
17637 var I = createHmac('sha512', HDNode.MASTER_SECRET).update(seed).digest()
17638 var IL = I.slice(0, 32)
17639 var IR = I.slice(32)
17640
17641 // In case IL is 0 or >= n, the master key is invalid
17642 // This is handled by `new ECKey` in the HDNode constructor
17643 var pIL = BigInteger.fromBuffer(IL)
17644
17645 return new HDNode(pIL, IR, network)
17646 }
17647
17648 HDNode.fromSeedHex = function (hex, network) {
17649 return HDNode.fromSeedBuffer(new Buffer(hex, 'hex'), network)
17650 }
17651
17652 HDNode.fromBase58 = function (string, network) {
17653 return HDNode.fromBuffer(base58check.decode(string), network, true)
17654 }
17655
17656 // FIXME: remove in 2.x.y
17657 HDNode.fromBuffer = function (buffer, network, __ignoreDeprecation) {
17658 if (!__ignoreDeprecation) {
17659 console.warn('HDNode.fromBuffer() is deprecated for removal in 2.x.y, use fromBase58 instead')
17660 }
17661
17662 assert.strictEqual(buffer.length, HDNode.LENGTH, 'Invalid buffer length')
17663
17664 // 4 byte: version bytes
17665 var version = buffer.readUInt32BE(0)
17666
17667 if (network) {
17668 assert(version === network.bip32.private || version === network.bip32.public, "Network doesn't match")
17669
17670 // auto-detect
17671 } else {
17672 network = findBIP32NetworkByVersion(version)
17673 }
17674
17675 // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ...
17676 var depth = buffer.readUInt8(4)
17677
17678 // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)
17679 var parentFingerprint = buffer.readUInt32BE(5)
17680 if (depth === 0) {
17681 assert.strictEqual(parentFingerprint, 0x00000000, 'Invalid parent fingerprint')
17682 }
17683
17684 // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
17685 // This is encoded in MSB order. (0x00000000 if master key)
17686 var index = buffer.readUInt32BE(9)
17687 assert(depth > 0 || index === 0, 'Invalid index')
17688
17689 // 32 bytes: the chain code
17690 var chainCode = buffer.slice(13, 45)
17691 var data, hd
17692
17693 // 33 bytes: private key data (0x00 + k)
17694 if (version === network.bip32.private) {
17695 assert.strictEqual(buffer.readUInt8(45), 0x00, 'Invalid private key')
17696 data = buffer.slice(46, 78)
17697 var d = BigInteger.fromBuffer(data)
17698 hd = new HDNode(d, chainCode, network)
17699
17700 // 33 bytes: public key data (0x02 + X or 0x03 + X)
17701 } else {
17702 data = buffer.slice(45, 78)
17703 var Q = ecurve.Point.decodeFrom(curve, data)
17704 assert.equal(Q.compressed, true, 'Invalid public key')
17705
17706 // Verify that the X coordinate in the public point corresponds to a point on the curve.
17707 // If not, the extended public key is invalid.
17708 curve.validate(Q)
17709
17710 hd = new HDNode(Q, chainCode, network)
17711 }
17712
17713 hd.depth = depth
17714 hd.index = index
17715 hd.parentFingerprint = parentFingerprint
17716
17717 return hd
17718 }
17719
17720 // FIXME: remove in 2.x.y
17721 HDNode.fromHex = function (hex, network) {
17722 return HDNode.fromBuffer(new Buffer(hex, 'hex'), network)
17723 }
17724
17725 HDNode.prototype.getIdentifier = function () {
17726 return bcrypto.hash160(this.pubKey.toBuffer())
17727 }
17728
17729 HDNode.prototype.getFingerprint = function () {
17730 return this.getIdentifier().slice(0, 4)
17731 }
17732
17733 HDNode.prototype.getAddress = function () {
17734 return this.pubKey.getAddress(this.network)
17735 }
17736
17737 HDNode.prototype.neutered = function () {
17738 var neutered = new HDNode(this.pubKey.Q, this.chainCode, this.network)
17739 neutered.depth = this.depth
17740 neutered.index = this.index
17741 neutered.parentFingerprint = this.parentFingerprint
17742
17743 return neutered
17744 }
17745
17746 HDNode.prototype.toBase58 = function (isPrivate) {
17747 return base58check.encode(this.toBuffer(isPrivate, true))
17748 }
17749
17750 // FIXME: remove in 2.x.y
17751 HDNode.prototype.toBuffer = function (isPrivate, __ignoreDeprecation) {
17752 if (isPrivate === undefined) {
17753 isPrivate = !!this.privKey
17754
17755 // FIXME: remove in 2.x.y
17756 } else {
17757 console.warn('isPrivate flag is deprecated, please use the .neutered() method instead')
17758 }
17759
17760 if (!__ignoreDeprecation) {
17761 console.warn('HDNode.toBuffer() is deprecated for removal in 2.x.y, use toBase58 instead')
17762 }
17763
17764 // Version
17765 var version = isPrivate ? this.network.bip32.private : this.network.bip32.public
17766 var buffer = new Buffer(HDNode.LENGTH)
17767
17768 // 4 bytes: version bytes
17769 buffer.writeUInt32BE(version, 0)
17770
17771 // Depth
17772 // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ....
17773 buffer.writeUInt8(this.depth, 4)
17774
17775 // 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)
17776 buffer.writeUInt32BE(this.parentFingerprint, 5)
17777
17778 // 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
17779 // This is encoded in Big endian. (0x00000000 if master key)
17780 buffer.writeUInt32BE(this.index, 9)
17781
17782 // 32 bytes: the chain code
17783 this.chainCode.copy(buffer, 13)
17784
17785 // 33 bytes: the public key or private key data
17786 if (isPrivate) {
17787 // FIXME: remove in 2.x.y
17788 assert(this.privKey, 'Missing private key')
17789
17790 // 0x00 + k for private keys
17791 buffer.writeUInt8(0, 45)
17792 this.privKey.d.toBuffer(32).copy(buffer, 46)
17793 } else {
17794 // X9.62 encoding for public keys
17795 this.pubKey.toBuffer().copy(buffer, 45)
17796 }
17797
17798 return buffer
17799 }
17800
17801 // FIXME: remove in 2.x.y
17802 HDNode.prototype.toHex = function (isPrivate) {
17803 return this.toBuffer(isPrivate).toString('hex')
17804 }
17805
17806 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#child-key-derivation-ckd-functions
17807 HDNode.prototype.derive = function (index) {
17808 var isHardened = index >= HDNode.HIGHEST_BIT
17809 var indexBuffer = new Buffer(4)
17810 indexBuffer.writeUInt32BE(index, 0)
17811
17812 var data
17813
17814 // Hardened child
17815 if (isHardened) {
17816 assert(this.privKey, 'Could not derive hardened child key')
17817
17818 // data = 0x00 || ser256(kpar) || ser32(index)
17819 data = Buffer.concat([
17820 this.privKey.d.toBuffer(33),
17821 indexBuffer
17822 ])
17823
17824 // Normal child
17825 } else {
17826 // data = serP(point(kpar)) || ser32(index)
17827 // = serP(Kpar) || ser32(index)
17828 data = Buffer.concat([
17829 this.pubKey.toBuffer(),
17830 indexBuffer
17831 ])
17832 }
17833
17834 var I = createHmac('sha512', this.chainCode).update(data).digest()
17835 var IL = I.slice(0, 32)
17836 var IR = I.slice(32)
17837
17838 var pIL = BigInteger.fromBuffer(IL)
17839
17840 // In case parse256(IL) >= n, proceed with the next value for i
17841 if (pIL.compareTo(curve.n) >= 0) {
17842 return this.derive(index + 1)
17843 }
17844
17845 // Private parent key -> private child key
17846 var hd
17847 if (this.privKey) {
17848 // ki = parse256(IL) + kpar (mod n)
17849 var ki = pIL.add(this.privKey.d).mod(curve.n)
17850
17851 // In case ki == 0, proceed with the next value for i
17852 if (ki.signum() === 0) {
17853 return this.derive(index + 1)
17854 }
17855
17856 hd = new HDNode(ki, IR, this.network)
17857
17858 // Public parent key -> public child key
17859 } else {
17860 // Ki = point(parse256(IL)) + Kpar
17861 // = G*IL + Kpar
17862 var Ki = curve.G.multiply(pIL).add(this.pubKey.Q)
17863
17864 // In case Ki is the point at infinity, proceed with the next value for i
17865 if (curve.isInfinity(Ki)) {
17866 return this.derive(index + 1)
17867 }
17868
17869 hd = new HDNode(Ki, IR, this.network)
17870 }
17871
17872 hd.depth = this.depth + 1
17873 hd.index = index
17874 hd.parentFingerprint = this.getFingerprint().readUInt32BE(0)
17875
17876 return hd
17877 }
17878
17879 HDNode.prototype.deriveHardened = function (index) {
17880 // Only derives hardened private keys by default
17881 return this.derive(index + HDNode.HIGHEST_BIT)
17882 }
17883
17884 HDNode.prototype.toString = HDNode.prototype.toBase58
17885
17886 module.exports = HDNode
17887
17888 }).call(this,require("buffer").Buffer)
17889 },{"./crypto":58,"./eckey":60,"./ecpubkey":61,"./networks":66,"assert":5,"bigi":3,"bs58check":31,"buffer":7,"create-hmac":45,"ecurve":49,"typeforce":53}],64:[function(require,module,exports){
17890 module.exports = {
17891 Address: require('./address'),
17892 base58check: require('./base58check'),
17893 Block: require('./block'),
17894 bufferutils: require('./bufferutils'),
17895 crypto: require('./crypto'),
17896 ecdsa: require('./ecdsa'),
17897 ECKey: require('./eckey'),
17898 ECPubKey: require('./ecpubkey'),
17899 ECSignature: require('./ecsignature'),
17900 Message: require('./message'),
17901 opcodes: require('./opcodes'),
17902 HDNode: require('./hdnode'),
17903 Script: require('./script'),
17904 scripts: require('./scripts'),
17905 Transaction: require('./transaction'),
17906 TransactionBuilder: require('./transaction_builder'),
17907 networks: require('./networks'),
17908 Wallet: require('./wallet')
17909 }
17910
17911 },{"./address":54,"./base58check":55,"./block":56,"./bufferutils":57,"./crypto":58,"./ecdsa":59,"./eckey":60,"./ecpubkey":61,"./ecsignature":62,"./hdnode":63,"./message":65,"./networks":66,"./opcodes":67,"./script":68,"./scripts":69,"./transaction":70,"./transaction_builder":71,"./wallet":72}],65:[function(require,module,exports){
17912 (function (Buffer){
17913 var bufferutils = require('./bufferutils')
17914 var crypto = require('./crypto')
17915 var ecdsa = require('./ecdsa')
17916 var networks = require('./networks')
17917
17918 var BigInteger = require('bigi')
17919 var ECPubKey = require('./ecpubkey')
17920 var ECSignature = require('./ecsignature')
17921
17922 var ecurve = require('ecurve')
17923 var ecparams = ecurve.getCurveByName('secp256k1')
17924
17925 function magicHash (message, network) {
17926 var magicPrefix = new Buffer(network.magicPrefix)
17927 var messageBuffer = new Buffer(message)
17928 var lengthBuffer = bufferutils.varIntBuffer(messageBuffer.length)
17929
17930 var buffer = Buffer.concat([magicPrefix, lengthBuffer, messageBuffer])
17931 return crypto.hash256(buffer)
17932 }
17933
17934 function sign (privKey, message, network) {
17935 network = network || networks.bitcoin
17936
17937 var hash = magicHash(message, network)
17938 var signature = privKey.sign(hash)
17939 var e = BigInteger.fromBuffer(hash)
17940 var i = ecdsa.calcPubKeyRecoveryParam(ecparams, e, signature, privKey.pub.Q)
17941
17942 return signature.toCompact(i, privKey.pub.compressed)
17943 }
17944
17945 // TODO: network could be implied from address
17946 function verify (address, signature, message, network) {
17947 if (!Buffer.isBuffer(signature)) {
17948 signature = new Buffer(signature, 'base64')
17949 }
17950
17951 network = network || networks.bitcoin
17952
17953 var hash = magicHash(message, network)
17954 var parsed = ECSignature.parseCompact(signature)
17955 var e = BigInteger.fromBuffer(hash)
17956 var Q = ecdsa.recoverPubKey(ecparams, e, parsed.signature, parsed.i)
17957
17958 var pubKey = new ECPubKey(Q, parsed.compressed)
17959 return pubKey.getAddress(network).toString() === address.toString()
17960 }
17961
17962 module.exports = {
17963 magicHash: magicHash,
17964 sign: sign,
17965 verify: verify
17966 }
17967
17968 }).call(this,require("buffer").Buffer)
17969 },{"./bufferutils":57,"./crypto":58,"./ecdsa":59,"./ecpubkey":61,"./ecsignature":62,"./networks":66,"bigi":3,"buffer":7,"ecurve":49}],66:[function(require,module,exports){
17970 // https://en.bitcoin.it/wiki/List_of_address_prefixes
17971 // Dogecoin BIP32 is a proposed standard: https://bitcointalk.org/index.php?topic=409731
17972
17973 var networks = {
17974 bitcoin: {
17975 magicPrefix: '\x18Bitcoin Signed Message:\n',
17976 bip32: {
17977 public: 0x0488b21e,
17978 private: 0x0488ade4
17979 },
17980 pubKeyHash: 0x00,
17981 scriptHash: 0x05,
17982 wif: 0x80,
17983 dustThreshold: 546, // https://github.com/bitcoin/bitcoin/blob/v0.9.2/src/core.h#L151-L162
17984 feePerKb: 10000, // https://github.com/bitcoin/bitcoin/blob/v0.9.2/src/main.cpp#L53
17985 estimateFee: estimateFee('bitcoin')
17986 },
17987 testnet: {
17988 magicPrefix: '\x18Bitcoin Signed Message:\n',
17989 bip32: {
17990 public: 0x043587cf,
17991 private: 0x04358394
17992 },
17993 pubKeyHash: 0x6f,
17994 scriptHash: 0xc4,
17995 wif: 0xef,
17996 dustThreshold: 546,
17997 feePerKb: 10000,
17998 estimateFee: estimateFee('testnet')
17999 },
18000 litecoin: {
18001 magicPrefix: '\x19Litecoin Signed Message:\n',
18002 bip32: {
18003 public: 0x019da462,
18004 private: 0x019d9cfe
18005 },
18006 pubKeyHash: 0x30,
18007 scriptHash: 0x05,
18008 wif: 0xb0,
18009 dustThreshold: 0, // https://github.com/litecoin-project/litecoin/blob/v0.8.7.2/src/main.cpp#L360-L365
18010 dustSoftThreshold: 100000, // https://github.com/litecoin-project/litecoin/blob/v0.8.7.2/src/main.h#L53
18011 feePerKb: 100000, // https://github.com/litecoin-project/litecoin/blob/v0.8.7.2/src/main.cpp#L56
18012 estimateFee: estimateFee('litecoin')
18013 },
18014 dogecoin: {
18015 magicPrefix: '\x19Dogecoin Signed Message:\n',
18016 bip32: {
18017 public: 0x02facafd,
18018 private: 0x02fac398
18019 },
18020 pubKeyHash: 0x1e,
18021 scriptHash: 0x16,
18022 wif: 0x9e,
18023 dustThreshold: 0, // https://github.com/dogecoin/dogecoin/blob/v1.7.1/src/core.h#L155-L160
18024 dustSoftThreshold: 100000000, // https://github.com/dogecoin/dogecoin/blob/v1.7.1/src/main.h#L62
18025 feePerKb: 100000000, // https://github.com/dogecoin/dogecoin/blob/v1.7.1/src/main.cpp#L58
18026 estimateFee: estimateFee('dogecoin')
18027 },
18028 viacoin: {
18029 magicPrefix: '\x18Viacoin Signed Message:\n',
18030 bip32: {
18031 public: 0x0488b21e,
18032 private: 0x0488ade4
18033 },
18034 pubKeyHash: 0x47,
18035 scriptHash: 0x21,
18036 wif: 0xc7,
18037 dustThreshold: 560,
18038 dustSoftThreshold: 100000,
18039 feePerKb: 100000, //
18040 estimateFee: estimateFee('viacoin')
18041 },
18042 viacointestnet: {
18043 magicPrefix: '\x18Viacoin Signed Message:\n',
18044 bip32: {
18045 public: 0x043587cf,
18046 private: 0x04358394
18047 },
18048 pubKeyHash: 0x7f,
18049 scriptHash: 0xc4,
18050 wif: 0xff,
18051 dustThreshold: 560,
18052 dustSoftThreshold: 100000,
18053 feePerKb: 100000,
18054 estimateFee: estimateFee('viacointestnet')
18055 },
18056 gamerscoin: {
18057 magicPrefix: '\x19Gamerscoin Signed Message:\n',
18058 bip32: {
18059 public: 0x019da462,
18060 private: 0x019d9cfe
18061 },
18062 pubKeyHash: 0x26,
18063 scriptHash: 0x05,
18064 wif: 0xA6,
18065 dustThreshold: 0, // https://github.com/gamers-coin/gamers-coinv3/blob/master/src/main.cpp#L358-L363
18066 dustSoftThreshold: 100000, // https://github.com/gamers-coin/gamers-coinv3/blob/master/src/main.cpp#L51
18067 feePerKb: 100000, // https://github.com/gamers-coin/gamers-coinv3/blob/master/src/main.cpp#L54
18068 estimateFee: estimateFee('gamerscoin')
18069 },
18070 jumbucks: {
18071 magicPrefix: '\x19Jumbucks Signed Message:\n',
18072 bip32: {
18073 public: 0x037a689a,
18074 private: 0x037a6460
18075 },
18076 pubKeyHash: 0x2b,
18077 scriptHash: 0x05,
18078 wif: 0xab,
18079 dustThreshold: 0,
18080 dustSoftThreshold: 10000,
18081 feePerKb: 10000,
18082 estimateFee: estimateFee('jumbucks')
18083 },
18084 zetacoin: {
18085 magicPrefix: '\x18Zetacoin Signed Message:\n',
18086 bip32: {
18087 public: 0x0488b21e,
18088 private: 0x0488ade4
18089 },
18090 pubKeyHash: 0x50,
18091 scriptHash: 0x09,
18092 wif: 0xe0,
18093 dustThreshold: 546, // https://github.com/zetacoin/zetacoin/blob/master/src/core.h#L159
18094 feePerKb: 10000, // https://github.com/zetacoin/zetacoin/blob/master/src/main.cpp#L54
18095 estimateFee: estimateFee('zetacoin')
18096 }
18097 }
18098
18099 function estimateFee (type) {
18100 return function (tx) {
18101 var network = networks[type]
18102 var baseFee = network.feePerKb
18103 var byteSize = tx.toBuffer().length
18104
18105 var fee = baseFee * Math.ceil(byteSize / 1000)
18106 if (network.dustSoftThreshold === undefined) return fee
18107
18108 tx.outs.forEach(function (e) {
18109 if (e.value < network.dustSoftThreshold) {
18110 fee += baseFee
18111 }
18112 })
18113
18114 return fee
18115 }
18116 }
18117
18118 module.exports = networks
18119
18120 },{}],67:[function(require,module,exports){
18121 module.exports = {
18122 // push value
18123 OP_FALSE: 0,
18124 OP_0: 0,
18125 OP_PUSHDATA1: 76,
18126 OP_PUSHDATA2: 77,
18127 OP_PUSHDATA4: 78,
18128 OP_1NEGATE: 79,
18129 OP_RESERVED: 80,
18130 OP_1: 81,
18131 OP_TRUE: 81,
18132 OP_2: 82,
18133 OP_3: 83,
18134 OP_4: 84,
18135 OP_5: 85,
18136 OP_6: 86,
18137 OP_7: 87,
18138 OP_8: 88,
18139 OP_9: 89,
18140 OP_10: 90,
18141 OP_11: 91,
18142 OP_12: 92,
18143 OP_13: 93,
18144 OP_14: 94,
18145 OP_15: 95,
18146 OP_16: 96,
18147
18148 // control
18149 OP_NOP: 97,
18150 OP_VER: 98,
18151 OP_IF: 99,
18152 OP_NOTIF: 100,
18153 OP_VERIF: 101,
18154 OP_VERNOTIF: 102,
18155 OP_ELSE: 103,
18156 OP_ENDIF: 104,
18157 OP_VERIFY: 105,
18158 OP_RETURN: 106,
18159
18160 // stack ops
18161 OP_TOALTSTACK: 107,
18162 OP_FROMALTSTACK: 108,
18163 OP_2DROP: 109,
18164 OP_2DUP: 110,
18165 OP_3DUP: 111,
18166 OP_2OVER: 112,
18167 OP_2ROT: 113,
18168 OP_2SWAP: 114,
18169 OP_IFDUP: 115,
18170 OP_DEPTH: 116,
18171 OP_DROP: 117,
18172 OP_DUP: 118,
18173 OP_NIP: 119,
18174 OP_OVER: 120,
18175 OP_PICK: 121,
18176 OP_ROLL: 122,
18177 OP_ROT: 123,
18178 OP_SWAP: 124,
18179 OP_TUCK: 125,
18180
18181 // splice ops
18182 OP_CAT: 126,
18183 OP_SUBSTR: 127,
18184 OP_LEFT: 128,
18185 OP_RIGHT: 129,
18186 OP_SIZE: 130,
18187
18188 // bit logic
18189 OP_INVERT: 131,
18190 OP_AND: 132,
18191 OP_OR: 133,
18192 OP_XOR: 134,
18193 OP_EQUAL: 135,
18194 OP_EQUALVERIFY: 136,
18195 OP_RESERVED1: 137,
18196 OP_RESERVED2: 138,
18197
18198 // numeric
18199 OP_1ADD: 139,
18200 OP_1SUB: 140,
18201 OP_2MUL: 141,
18202 OP_2DIV: 142,
18203 OP_NEGATE: 143,
18204 OP_ABS: 144,
18205 OP_NOT: 145,
18206 OP_0NOTEQUAL: 146,
18207
18208 OP_ADD: 147,
18209 OP_SUB: 148,
18210 OP_MUL: 149,
18211 OP_DIV: 150,
18212 OP_MOD: 151,
18213 OP_LSHIFT: 152,
18214 OP_RSHIFT: 153,
18215
18216 OP_BOOLAND: 154,
18217 OP_BOOLOR: 155,
18218 OP_NUMEQUAL: 156,
18219 OP_NUMEQUALVERIFY: 157,
18220 OP_NUMNOTEQUAL: 158,
18221 OP_LESSTHAN: 159,
18222 OP_GREATERTHAN: 160,
18223 OP_LESSTHANOREQUAL: 161,
18224 OP_GREATERTHANOREQUAL: 162,
18225 OP_MIN: 163,
18226 OP_MAX: 164,
18227
18228 OP_WITHIN: 165,
18229
18230 // crypto
18231 OP_RIPEMD160: 166,
18232 OP_SHA1: 167,
18233 OP_SHA256: 168,
18234 OP_HASH160: 169,
18235 OP_HASH256: 170,
18236 OP_CODESEPARATOR: 171,
18237 OP_CHECKSIG: 172,
18238 OP_CHECKSIGVERIFY: 173,
18239 OP_CHECKMULTISIG: 174,
18240 OP_CHECKMULTISIGVERIFY: 175,
18241
18242 // expansion
18243 OP_NOP1: 176,
18244 OP_NOP2: 177,
18245 OP_NOP3: 178,
18246 OP_NOP4: 179,
18247 OP_NOP5: 180,
18248 OP_NOP6: 181,
18249 OP_NOP7: 182,
18250 OP_NOP8: 183,
18251 OP_NOP9: 184,
18252 OP_NOP10: 185,
18253
18254 // template matching params
18255 OP_PUBKEYHASH: 253,
18256 OP_PUBKEY: 254,
18257 OP_INVALIDOPCODE: 255
18258 }
18259
18260 },{}],68:[function(require,module,exports){
18261 (function (Buffer){
18262 var assert = require('assert')
18263 var bufferutils = require('./bufferutils')
18264 var crypto = require('./crypto')
18265 var typeForce = require('typeforce')
18266 var opcodes = require('./opcodes')
18267
18268 function Script (buffer, chunks) {
18269 typeForce('Buffer', buffer)
18270 typeForce('Array', chunks)
18271
18272 this.buffer = buffer
18273 this.chunks = chunks
18274 }
18275
18276 Script.fromASM = function (asm) {
18277 var strChunks = asm.split(' ')
18278 var chunks = strChunks.map(function (strChunk) {
18279 // opcode
18280 if (strChunk in opcodes) {
18281 return opcodes[strChunk]
18282
18283 // data chunk
18284 } else {
18285 return new Buffer(strChunk, 'hex')
18286 }
18287 })
18288
18289 return Script.fromChunks(chunks)
18290 }
18291
18292 Script.fromBuffer = function (buffer) {
18293 var chunks = []
18294 var i = 0
18295
18296 while (i < buffer.length) {
18297 var opcode = buffer.readUInt8(i)
18298
18299 // data chunk
18300 if ((opcode > opcodes.OP_0) && (opcode <= opcodes.OP_PUSHDATA4)) {
18301 var d = bufferutils.readPushDataInt(buffer, i)
18302
18303 // did reading a pushDataInt fail? return non-chunked script
18304 if (d === null) return new Script(buffer, [])
18305 i += d.size
18306
18307 // attempt to read too much data?
18308 if (i + d.number > buffer.length) return new Script(buffer, [])
18309
18310 var data = buffer.slice(i, i + d.number)
18311 i += d.number
18312
18313 chunks.push(data)
18314
18315 // opcode
18316 } else {
18317 chunks.push(opcode)
18318
18319 i += 1
18320 }
18321 }
18322
18323 return new Script(buffer, chunks)
18324 }
18325
18326 Script.fromChunks = function (chunks) {
18327 typeForce('Array', chunks)
18328
18329 var bufferSize = chunks.reduce(function (accum, chunk) {
18330 // data chunk
18331 if (Buffer.isBuffer(chunk)) {
18332 return accum + bufferutils.pushDataSize(chunk.length) + chunk.length
18333 }
18334
18335 // opcode
18336 return accum + 1
18337 }, 0.0)
18338
18339 var buffer = new Buffer(bufferSize)
18340 var offset = 0
18341
18342 chunks.forEach(function (chunk) {
18343 // data chunk
18344 if (Buffer.isBuffer(chunk)) {
18345 offset += bufferutils.writePushDataInt(buffer, chunk.length, offset)
18346
18347 chunk.copy(buffer, offset)
18348 offset += chunk.length
18349
18350 // opcode
18351 } else {
18352 buffer.writeUInt8(chunk, offset)
18353 offset += 1
18354 }
18355 })
18356
18357 assert.equal(offset, buffer.length, 'Could not decode chunks')
18358 return new Script(buffer, chunks)
18359 }
18360
18361 Script.fromHex = function (hex) {
18362 return Script.fromBuffer(new Buffer(hex, 'hex'))
18363 }
18364
18365 Script.EMPTY = Script.fromChunks([])
18366
18367 Script.prototype.getHash = function () {
18368 return crypto.hash160(this.buffer)
18369 }
18370
18371 // FIXME: doesn't work for data chunks, maybe time to use buffertools.compare...
18372 Script.prototype.without = function (needle) {
18373 return Script.fromChunks(this.chunks.filter(function (op) {
18374 return op !== needle
18375 }))
18376 }
18377
18378 var reverseOps = []
18379 for (var op in opcodes) {
18380 var code = opcodes[op]
18381 reverseOps[code] = op
18382 }
18383
18384 Script.prototype.toASM = function () {
18385 return this.chunks.map(function (chunk) {
18386 // data chunk
18387 if (Buffer.isBuffer(chunk)) {
18388 return chunk.toString('hex')
18389
18390 // opcode
18391 } else {
18392 return reverseOps[chunk]
18393 }
18394 }).join(' ')
18395 }
18396
18397 Script.prototype.toBuffer = function () {
18398 return this.buffer
18399 }
18400
18401 Script.prototype.toHex = function () {
18402 return this.toBuffer().toString('hex')
18403 }
18404
18405 module.exports = Script
18406
18407 }).call(this,require("buffer").Buffer)
18408 },{"./bufferutils":57,"./crypto":58,"./opcodes":67,"assert":5,"buffer":7,"typeforce":53}],69:[function(require,module,exports){
18409 (function (Buffer){
18410 var assert = require('assert')
18411 var ops = require('./opcodes')
18412 var typeForce = require('typeforce')
18413
18414 var ecurve = require('ecurve')
18415 var curve = ecurve.getCurveByName('secp256k1')
18416
18417 var ECSignature = require('./ecsignature')
18418 var Script = require('./script')
18419
18420 function isCanonicalPubKey (buffer) {
18421 if (!Buffer.isBuffer(buffer)) return false
18422
18423 try {
18424 ecurve.Point.decodeFrom(curve, buffer)
18425 } catch (e) {
18426 if (!(e.message.match(/Invalid sequence (length|tag)/)))
18427 throw e
18428
18429 return false
18430 }
18431
18432 return true
18433 }
18434
18435 function isCanonicalSignature (buffer) {
18436 if (!Buffer.isBuffer(buffer)) return false
18437
18438 try {
18439 ECSignature.parseScriptSignature(buffer)
18440 } catch (e) {
18441 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/))) {
18442 throw e
18443 }
18444
18445 return false
18446 }
18447
18448 return true
18449 }
18450
18451 function isPubKeyHashInput (script) {
18452 return script.chunks.length === 2 &&
18453 isCanonicalSignature(script.chunks[0]) &&
18454 isCanonicalPubKey(script.chunks[1])
18455 }
18456
18457 function isPubKeyHashOutput (script) {
18458 return script.chunks.length === 5 &&
18459 script.chunks[0] === ops.OP_DUP &&
18460 script.chunks[1] === ops.OP_HASH160 &&
18461 Buffer.isBuffer(script.chunks[2]) &&
18462 script.chunks[2].length === 20 &&
18463 script.chunks[3] === ops.OP_EQUALVERIFY &&
18464 script.chunks[4] === ops.OP_CHECKSIG
18465 }
18466
18467 function isPubKeyInput (script) {
18468 return script.chunks.length === 1 &&
18469 isCanonicalSignature(script.chunks[0])
18470 }
18471
18472 function isPubKeyOutput (script) {
18473 return script.chunks.length === 2 &&
18474 isCanonicalPubKey(script.chunks[0]) &&
18475 script.chunks[1] === ops.OP_CHECKSIG
18476 }
18477
18478 function isScriptHashInput (script, allowIncomplete) {
18479 if (script.chunks.length < 2) return false
18480
18481 var lastChunk = script.chunks[script.chunks.length - 1]
18482 if (!Buffer.isBuffer(lastChunk)) return false
18483
18484 var scriptSig = Script.fromChunks(script.chunks.slice(0, -1))
18485 var redeemScript = Script.fromBuffer(lastChunk)
18486
18487 // is redeemScript a valid script?
18488 if (redeemScript.chunks.length === 0) return false
18489
18490 return classifyInput(scriptSig, allowIncomplete) === classifyOutput(redeemScript)
18491 }
18492
18493 function isScriptHashOutput (script) {
18494 return script.chunks.length === 3 &&
18495 script.chunks[0] === ops.OP_HASH160 &&
18496 Buffer.isBuffer(script.chunks[1]) &&
18497 script.chunks[1].length === 20 &&
18498 script.chunks[2] === ops.OP_EQUAL
18499 }
18500
18501 // allowIncomplete is to account for combining signatures
18502 // See https://github.com/bitcoin/bitcoin/blob/f425050546644a36b0b8e0eb2f6934a3e0f6f80f/src/script/sign.cpp#L195-L197
18503 function isMultisigInput (script, allowIncomplete) {
18504 if (script.chunks.length < 2) return false
18505 if (script.chunks[0] !== ops.OP_0) return false
18506
18507 if (allowIncomplete) {
18508 return script.chunks.slice(1).every(function (chunk) {
18509 return chunk === ops.OP_0 || isCanonicalSignature(chunk)
18510 })
18511 }
18512
18513 return script.chunks.slice(1).every(isCanonicalSignature)
18514 }
18515
18516 function isMultisigOutput (script) {
18517 if (script.chunks.length < 4) return false
18518 if (script.chunks[script.chunks.length - 1] !== ops.OP_CHECKMULTISIG) return false
18519
18520 var mOp = script.chunks[0]
18521 if (mOp === ops.OP_0) return false
18522 if (mOp < ops.OP_1) return false
18523 if (mOp > ops.OP_16) return false
18524
18525 var nOp = script.chunks[script.chunks.length - 2]
18526 if (nOp === ops.OP_0) return false
18527 if (nOp < ops.OP_1) return false
18528 if (nOp > ops.OP_16) return false
18529
18530 var m = mOp - (ops.OP_1 - 1)
18531 var n = nOp - (ops.OP_1 - 1)
18532 if (n < m) return false
18533
18534 var pubKeys = script.chunks.slice(1, -2)
18535 if (n < pubKeys.length) return false
18536
18537 return pubKeys.every(isCanonicalPubKey)
18538 }
18539
18540 function isNullDataOutput (script) {
18541 return script.chunks[0] === ops.OP_RETURN
18542 }
18543
18544 function classifyOutput (script) {
18545 typeForce('Script', script)
18546
18547 if (isPubKeyHashOutput(script)) {
18548 return 'pubkeyhash'
18549 } else if (isScriptHashOutput(script)) {
18550 return 'scripthash'
18551 } else if (isMultisigOutput(script)) {
18552 return 'multisig'
18553 } else if (isPubKeyOutput(script)) {
18554 return 'pubkey'
18555 } else if (isNullDataOutput(script)) {
18556 return 'nulldata'
18557 }
18558
18559 return 'nonstandard'
18560 }
18561
18562 function classifyInput (script, allowIncomplete) {
18563 typeForce('Script', script)
18564
18565 if (isPubKeyHashInput(script)) {
18566 return 'pubkeyhash'
18567 } else if (isMultisigInput(script, allowIncomplete)) {
18568 return 'multisig'
18569 } else if (isScriptHashInput(script, allowIncomplete)) {
18570 return 'scripthash'
18571 } else if (isPubKeyInput(script)) {
18572 return 'pubkey'
18573 }
18574
18575 return 'nonstandard'
18576 }
18577
18578 // Standard Script Templates
18579 // {pubKey} OP_CHECKSIG
18580 function pubKeyOutput (pubKey) {
18581 return Script.fromChunks([
18582 pubKey.toBuffer(),
18583 ops.OP_CHECKSIG
18584 ])
18585 }
18586
18587 // OP_DUP OP_HASH160 {pubKeyHash} OP_EQUALVERIFY OP_CHECKSIG
18588 function pubKeyHashOutput (hash) {
18589 typeForce('Buffer', hash)
18590
18591 return Script.fromChunks([
18592 ops.OP_DUP,
18593 ops.OP_HASH160,
18594 hash,
18595 ops.OP_EQUALVERIFY,
18596 ops.OP_CHECKSIG
18597 ])
18598 }
18599
18600 // OP_HASH160 {scriptHash} OP_EQUAL
18601 function scriptHashOutput (hash) {
18602 typeForce('Buffer', hash)
18603
18604 return Script.fromChunks([
18605 ops.OP_HASH160,
18606 hash,
18607 ops.OP_EQUAL
18608 ])
18609 }
18610
18611 // m [pubKeys ...] n OP_CHECKMULTISIG
18612 function multisigOutput (m, pubKeys) {
18613 typeForce(['ECPubKey'], pubKeys)
18614
18615 assert(pubKeys.length >= m, 'Not enough pubKeys provided')
18616
18617 var pubKeyBuffers = pubKeys.map(function (pubKey) {
18618 return pubKey.toBuffer()
18619 })
18620 var n = pubKeys.length
18621
18622 return Script.fromChunks([].concat(
18623 (ops.OP_1 - 1) + m,
18624 pubKeyBuffers,
18625 (ops.OP_1 - 1) + n,
18626 ops.OP_CHECKMULTISIG
18627 ))
18628 }
18629
18630 // {signature}
18631 function pubKeyInput (signature) {
18632 typeForce('Buffer', signature)
18633
18634 return Script.fromChunks([signature])
18635 }
18636
18637 // {signature} {pubKey}
18638 function pubKeyHashInput (signature, pubKey) {
18639 typeForce('Buffer', signature)
18640
18641 return Script.fromChunks([signature, pubKey.toBuffer()])
18642 }
18643
18644 // <scriptSig> {serialized scriptPubKey script}
18645 function scriptHashInput (scriptSig, scriptPubKey) {
18646 return Script.fromChunks([].concat(
18647 scriptSig.chunks,
18648 scriptPubKey.toBuffer()
18649 ))
18650 }
18651
18652 // OP_0 [signatures ...]
18653 function multisigInput (signatures, scriptPubKey) {
18654 if (scriptPubKey) {
18655 assert(isMultisigOutput(scriptPubKey))
18656
18657 var mOp = scriptPubKey.chunks[0]
18658 var nOp = scriptPubKey.chunks[scriptPubKey.chunks.length - 2]
18659 var m = mOp - (ops.OP_1 - 1)
18660 var n = nOp - (ops.OP_1 - 1)
18661
18662 assert(signatures.length >= m, 'Not enough signatures provided')
18663 assert(signatures.length <= n, 'Too many signatures provided')
18664 }
18665
18666 return Script.fromChunks([].concat(ops.OP_0, signatures))
18667 }
18668
18669 function nullDataOutput (data) {
18670 return Script.fromChunks([ops.OP_RETURN, data])
18671 }
18672
18673 module.exports = {
18674 isCanonicalPubKey: isCanonicalPubKey,
18675 isCanonicalSignature: isCanonicalSignature,
18676 isPubKeyHashInput: isPubKeyHashInput,
18677 isPubKeyHashOutput: isPubKeyHashOutput,
18678 isPubKeyInput: isPubKeyInput,
18679 isPubKeyOutput: isPubKeyOutput,
18680 isScriptHashInput: isScriptHashInput,
18681 isScriptHashOutput: isScriptHashOutput,
18682 isMultisigInput: isMultisigInput,
18683 isMultisigOutput: isMultisigOutput,
18684 isNullDataOutput: isNullDataOutput,
18685 classifyOutput: classifyOutput,
18686 classifyInput: classifyInput,
18687 pubKeyOutput: pubKeyOutput,
18688 pubKeyHashOutput: pubKeyHashOutput,
18689 scriptHashOutput: scriptHashOutput,
18690 multisigOutput: multisigOutput,
18691 pubKeyInput: pubKeyInput,
18692 pubKeyHashInput: pubKeyHashInput,
18693 scriptHashInput: scriptHashInput,
18694 multisigInput: multisigInput,
18695 dataOutput: function (data) {
18696 console.warn('dataOutput is deprecated, use nullDataOutput by 2.0.0')
18697 return nullDataOutput(data)
18698 },
18699 nullDataOutput: nullDataOutput
18700 }
18701
18702 }).call(this,require("buffer").Buffer)
18703 },{"./ecsignature":62,"./opcodes":67,"./script":68,"assert":5,"buffer":7,"ecurve":49,"typeforce":53}],70:[function(require,module,exports){
18704 (function (Buffer){
18705 var assert = require('assert')
18706 var bufferutils = require('./bufferutils')
18707 var crypto = require('./crypto')
18708 var typeForce = require('typeforce')
18709 var opcodes = require('./opcodes')
18710 var scripts = require('./scripts')
18711
18712 var Address = require('./address')
18713 var ECSignature = require('./ecsignature')
18714 var Script = require('./script')
18715
18716 function Transaction () {
18717 this.version = 1
18718 this.locktime = 0
18719 this.ins = []
18720 this.outs = []
18721 }
18722
18723 Transaction.DEFAULT_SEQUENCE = 0xffffffff
18724 Transaction.SIGHASH_ALL = 0x01
18725 Transaction.SIGHASH_NONE = 0x02
18726 Transaction.SIGHASH_SINGLE = 0x03
18727 Transaction.SIGHASH_ANYONECANPAY = 0x80
18728
18729 Transaction.fromBuffer = function (buffer, __disableAssert) {
18730 var offset = 0
18731 function readSlice (n) {
18732 offset += n
18733 return buffer.slice(offset - n, offset)
18734 }
18735
18736 function readUInt32 () {
18737 var i = buffer.readUInt32LE(offset)
18738 offset += 4
18739 return i
18740 }
18741
18742 function readUInt64 () {
18743 var i = bufferutils.readUInt64LE(buffer, offset)
18744 offset += 8
18745 return i
18746 }
18747
18748 function readVarInt () {
18749 var vi = bufferutils.readVarInt(buffer, offset)
18750 offset += vi.size
18751 return vi.number
18752 }
18753
18754 function readScript () {
18755 return Script.fromBuffer(readSlice(readVarInt()))
18756 }
18757
18758 function readGenerationScript () {
18759 return new Script(readSlice(readVarInt()), [])
18760 }
18761
18762 var tx = new Transaction()
18763 tx.version = readUInt32()
18764
18765 var vinLen = readVarInt()
18766 for (var i = 0; i < vinLen; ++i) {
18767 var hash = readSlice(32)
18768
18769 if (Transaction.isCoinbaseHash(hash)) {
18770 tx.ins.push({
18771 hash: hash,
18772 index: readUInt32(),
18773 script: readGenerationScript(),
18774 sequence: readUInt32()
18775 })
18776 } else {
18777 tx.ins.push({
18778 hash: hash,
18779 index: readUInt32(),
18780 script: readScript(),
18781 sequence: readUInt32()
18782 })
18783 }
18784 }
18785
18786 var voutLen = readVarInt()
18787 for (i = 0; i < voutLen; ++i) {
18788 tx.outs.push({
18789 value: readUInt64(),
18790 script: readScript()
18791 })
18792 }
18793
18794 tx.locktime = readUInt32()
18795
18796 if (!__disableAssert) {
18797 assert.equal(offset, buffer.length, 'Transaction has unexpected data')
18798 }
18799
18800 return tx
18801 }
18802
18803 Transaction.fromHex = function (hex) {
18804 return Transaction.fromBuffer(new Buffer(hex, 'hex'))
18805 }
18806
18807 Transaction.isCoinbaseHash = function (buffer) {
18808 return Array.prototype.every.call(buffer, function (x) {
18809 return x === 0
18810 })
18811 }
18812
18813 /**
18814 * Create a new txIn.
18815 *
18816 * Can be called with any of:
18817 *
18818 * - A transaction and an index
18819 * - A transaction hash and an index
18820 *
18821 * Note that this method does not sign the created input.
18822 */
18823 Transaction.prototype.addInput = function (hash, index, sequence, script) {
18824 if (sequence === undefined || sequence === null) {
18825 sequence = Transaction.DEFAULT_SEQUENCE
18826 }
18827
18828 script = script || Script.EMPTY
18829
18830 if (typeof hash === 'string') {
18831 // TxId hex is big-endian, we need little-endian
18832 hash = bufferutils.reverse(new Buffer(hash, 'hex'))
18833 } else if (hash instanceof Transaction) {
18834 hash = hash.getHash()
18835 }
18836
18837 typeForce('Buffer', hash)
18838 typeForce('Number', index)
18839 typeForce('Number', sequence)
18840 typeForce('Script', script)
18841
18842 assert.equal(hash.length, 32, 'Expected hash length of 32, got ' + hash.length)
18843
18844 // Add the input and return the input's index
18845 return (this.ins.push({
18846 hash: hash,
18847 index: index,
18848 script: script,
18849 sequence: sequence
18850 }) - 1)
18851 }
18852
18853 /**
18854 * Create a new txOut.
18855 *
18856 * Can be called with:
18857 *
18858 * - A base58 address string and a value
18859 * - An Address object and a value
18860 * - A scriptPubKey Script and a value
18861 */
18862 Transaction.prototype.addOutput = function (scriptPubKey, value) {
18863 // Attempt to get a valid address if it's a base58 address string
18864 if (typeof scriptPubKey === 'string') {
18865 scriptPubKey = Address.fromBase58Check(scriptPubKey)
18866 }
18867
18868 // Attempt to get a valid script if it's an Address object
18869 if (scriptPubKey instanceof Address) {
18870 scriptPubKey = scriptPubKey.toOutputScript()
18871 }
18872
18873 typeForce('Script', scriptPubKey)
18874 typeForce('Number', value)
18875
18876 // Add the output and return the output's index
18877 return (this.outs.push({
18878 script: scriptPubKey,
18879 value: value
18880 }) - 1)
18881 }
18882
18883 Transaction.prototype.clone = function () {
18884 var newTx = new Transaction()
18885 newTx.version = this.version
18886 newTx.locktime = this.locktime
18887
18888 newTx.ins = this.ins.map(function (txIn) {
18889 return {
18890 hash: txIn.hash,
18891 index: txIn.index,
18892 script: txIn.script,
18893 sequence: txIn.sequence
18894 }
18895 })
18896
18897 newTx.outs = this.outs.map(function (txOut) {
18898 return {
18899 script: txOut.script,
18900 value: txOut.value
18901 }
18902 })
18903
18904 return newTx
18905 }
18906
18907 /**
18908 * Hash transaction for signing a specific input.
18909 *
18910 * Bitcoin uses a different hash for each signed transaction input. This
18911 * method copies the transaction, makes the necessary changes based on the
18912 * hashType, serializes and finally hashes the result. This hash can then be
18913 * used to sign the transaction input in question.
18914 */
18915 Transaction.prototype.hashForSignature = function (inIndex, prevOutScript, hashType) {
18916 // FIXME: remove in 2.x.y
18917 if (arguments[0] instanceof Script) {
18918 console.warn('hashForSignature(prevOutScript, inIndex, ...) has been deprecated. Use hashForSignature(inIndex, prevOutScript, ...)')
18919
18920 // swap the arguments (must be stored in tmp, arguments is special)
18921 var tmp = arguments[0]
18922 inIndex = arguments[1]
18923 prevOutScript = tmp
18924 }
18925
18926 typeForce('Number', inIndex)
18927 typeForce('Script', prevOutScript)
18928 typeForce('Number', hashType)
18929
18930 assert(inIndex >= 0, 'Invalid vin index')
18931 assert(inIndex < this.ins.length, 'Invalid vin index')
18932
18933 var txTmp = this.clone()
18934 var hashScript = prevOutScript.without(opcodes.OP_CODESEPARATOR)
18935
18936 // Blank out other inputs' signatures
18937 txTmp.ins.forEach(function (txIn) {
18938 txIn.script = Script.EMPTY
18939 })
18940 txTmp.ins[inIndex].script = hashScript
18941
18942 var hashTypeModifier = hashType & 0x1f
18943
18944 if (hashTypeModifier === Transaction.SIGHASH_NONE) {
18945 assert(false, 'SIGHASH_NONE not yet supported')
18946 } else if (hashTypeModifier === Transaction.SIGHASH_SINGLE) {
18947 assert(false, 'SIGHASH_SINGLE not yet supported')
18948 }
18949
18950 if (hashType & Transaction.SIGHASH_ANYONECANPAY) {
18951 assert(false, 'SIGHASH_ANYONECANPAY not yet supported')
18952 }
18953
18954 var hashTypeBuffer = new Buffer(4)
18955 hashTypeBuffer.writeInt32LE(hashType, 0)
18956
18957 var buffer = Buffer.concat([txTmp.toBuffer(), hashTypeBuffer])
18958 return crypto.hash256(buffer)
18959 }
18960
18961 Transaction.prototype.getHash = function () {
18962 return crypto.hash256(this.toBuffer())
18963 }
18964
18965 Transaction.prototype.getId = function () {
18966 // TxHash is little-endian, we need big-endian
18967 return bufferutils.reverse(this.getHash()).toString('hex')
18968 }
18969
18970 Transaction.prototype.toBuffer = function () {
18971 function scriptSize (script) {
18972 var length = script.buffer.length
18973
18974 return bufferutils.varIntSize(length) + length
18975 }
18976
18977 var buffer = new Buffer(
18978 8 +
18979 bufferutils.varIntSize(this.ins.length) +
18980 bufferutils.varIntSize(this.outs.length) +
18981 this.ins.reduce(function (sum, input) { return sum + 40 + scriptSize(input.script) }, 0) +
18982 this.outs.reduce(function (sum, output) { return sum + 8 + scriptSize(output.script) }, 0)
18983 )
18984
18985 var offset = 0
18986 function writeSlice (slice) {
18987 slice.copy(buffer, offset)
18988 offset += slice.length
18989 }
18990
18991 function writeUInt32 (i) {
18992 buffer.writeUInt32LE(i, offset)
18993 offset += 4
18994 }
18995
18996 function writeUInt64 (i) {
18997 bufferutils.writeUInt64LE(buffer, i, offset)
18998 offset += 8
18999 }
19000
19001 function writeVarInt (i) {
19002 var n = bufferutils.writeVarInt(buffer, i, offset)
19003 offset += n
19004 }
19005
19006 writeUInt32(this.version)
19007 writeVarInt(this.ins.length)
19008
19009 this.ins.forEach(function (txIn) {
19010 writeSlice(txIn.hash)
19011 writeUInt32(txIn.index)
19012 writeVarInt(txIn.script.buffer.length)
19013 writeSlice(txIn.script.buffer)
19014 writeUInt32(txIn.sequence)
19015 })
19016
19017 writeVarInt(this.outs.length)
19018 this.outs.forEach(function (txOut) {
19019 writeUInt64(txOut.value)
19020 writeVarInt(txOut.script.buffer.length)
19021 writeSlice(txOut.script.buffer)
19022 })
19023
19024 writeUInt32(this.locktime)
19025
19026 return buffer
19027 }
19028
19029 Transaction.prototype.toHex = function () {
19030 return this.toBuffer().toString('hex')
19031 }
19032
19033 Transaction.prototype.setInputScript = function (index, script) {
19034 typeForce('Number', index)
19035 typeForce('Script', script)
19036
19037 this.ins[index].script = script
19038 }
19039
19040 // FIXME: remove in 2.x.y
19041 Transaction.prototype.sign = function (index, privKey, hashType) {
19042 console.warn('Transaction.prototype.sign is deprecated. Use TransactionBuilder instead.')
19043
19044 var prevOutScript = privKey.pub.getAddress().toOutputScript()
19045 var signature = this.signInput(index, prevOutScript, privKey, hashType)
19046
19047 var scriptSig = scripts.pubKeyHashInput(signature, privKey.pub)
19048 this.setInputScript(index, scriptSig)
19049 }
19050
19051 // FIXME: remove in 2.x.y
19052 Transaction.prototype.signInput = function (index, prevOutScript, privKey, hashType) {
19053 console.warn('Transaction.prototype.signInput is deprecated. Use TransactionBuilder instead.')
19054
19055 hashType = hashType || Transaction.SIGHASH_ALL
19056
19057 var hash = this.hashForSignature(index, prevOutScript, hashType)
19058 var signature = privKey.sign(hash)
19059
19060 return signature.toScriptSignature(hashType)
19061 }
19062
19063 // FIXME: remove in 2.x.y
19064 Transaction.prototype.validateInput = function (index, prevOutScript, pubKey, buffer) {
19065 console.warn('Transaction.prototype.validateInput is deprecated. Use TransactionBuilder instead.')
19066
19067 var parsed = ECSignature.parseScriptSignature(buffer)
19068 var hash = this.hashForSignature(index, prevOutScript, parsed.hashType)
19069
19070 return pubKey.verify(hash, parsed.signature)
19071 }
19072
19073 module.exports = Transaction
19074
19075 }).call(this,require("buffer").Buffer)
19076 },{"./address":54,"./bufferutils":57,"./crypto":58,"./ecsignature":62,"./opcodes":67,"./script":68,"./scripts":69,"assert":5,"buffer":7,"typeforce":53}],71:[function(require,module,exports){
19077 (function (Buffer){
19078 var assert = require('assert')
19079 var ops = require('./opcodes')
19080 var scripts = require('./scripts')
19081
19082 var ECPubKey = require('./ecpubkey')
19083 var ECSignature = require('./ecsignature')
19084 var Script = require('./script')
19085 var Transaction = require('./transaction')
19086
19087 function extractInput (txIn) {
19088 var redeemScript
19089 var scriptSig = txIn.script
19090 var prevOutScript
19091 var prevOutType = scripts.classifyInput(scriptSig, true)
19092 var scriptType
19093
19094 // Re-classify if scriptHash
19095 if (prevOutType === 'scripthash') {
19096 redeemScript = Script.fromBuffer(scriptSig.chunks.slice(-1)[0])
19097 prevOutScript = scripts.scriptHashOutput(redeemScript.getHash())
19098
19099 scriptSig = Script.fromChunks(scriptSig.chunks.slice(0, -1))
19100 scriptType = scripts.classifyInput(scriptSig, true)
19101 } else {
19102 scriptType = prevOutType
19103 }
19104
19105 // Extract hashType, pubKeys and signatures
19106 var hashType, parsed, pubKeys, signatures
19107
19108 switch (scriptType) {
19109 case 'pubkeyhash': {
19110 parsed = ECSignature.parseScriptSignature(scriptSig.chunks[0])
19111 hashType = parsed.hashType
19112 pubKeys = [ECPubKey.fromBuffer(scriptSig.chunks[1])]
19113 signatures = [parsed.signature]
19114 prevOutScript = pubKeys[0].getAddress().toOutputScript()
19115
19116 break
19117 }
19118
19119 case 'pubkey': {
19120 parsed = ECSignature.parseScriptSignature(scriptSig.chunks[0])
19121 hashType = parsed.hashType
19122 signatures = [parsed.signature]
19123
19124 if (redeemScript) {
19125 pubKeys = [ECPubKey.fromBuffer(redeemScript.chunks[0])]
19126 }
19127
19128 break
19129 }
19130
19131 case 'multisig': {
19132 signatures = scriptSig.chunks.slice(1).map(function (chunk) {
19133 if (chunk === ops.OP_0) return chunk
19134
19135 var parsed = ECSignature.parseScriptSignature(chunk)
19136 hashType = parsed.hashType
19137
19138 return parsed.signature
19139 })
19140
19141 if (redeemScript) {
19142 pubKeys = redeemScript.chunks.slice(1, -2).map(ECPubKey.fromBuffer)
19143 }
19144
19145 break
19146 }
19147 }
19148
19149 return {
19150 hashType: hashType,
19151 prevOutScript: prevOutScript,
19152 prevOutType: prevOutType,
19153 pubKeys: pubKeys,
19154 redeemScript: redeemScript,
19155 scriptType: scriptType,
19156 signatures: signatures
19157 }
19158 }
19159
19160 function TransactionBuilder () {
19161 this.prevTxMap = {}
19162 this.prevOutScripts = {}
19163 this.prevOutTypes = {}
19164
19165 this.inputs = []
19166 this.tx = new Transaction()
19167 }
19168
19169 TransactionBuilder.fromTransaction = function (transaction) {
19170 var txb = new TransactionBuilder()
19171
19172 // Copy other transaction fields
19173 txb.tx.version = transaction.version
19174 txb.tx.locktime = transaction.locktime
19175
19176 // Extract/add inputs
19177 transaction.ins.forEach(function (txIn) {
19178 txb.addInput(txIn.hash, txIn.index, txIn.sequence)
19179 })
19180
19181 // Extract/add outputs
19182 transaction.outs.forEach(function (txOut) {
19183 txb.addOutput(txOut.script, txOut.value)
19184 })
19185
19186 // Extract/add signatures
19187 txb.inputs = transaction.ins.map(function (txIn) {
19188 // TODO: remove me after testcase added
19189 assert(!Transaction.isCoinbaseHash(txIn.hash), 'coinbase inputs not supported')
19190
19191 // Ignore empty scripts
19192 if (txIn.script.buffer.length === 0) return {}
19193
19194 return extractInput(txIn)
19195 })
19196
19197 return txb
19198 }
19199
19200 TransactionBuilder.prototype.addInput = function (prevTx, index, sequence, prevOutScript) {
19201 var prevOutHash
19202
19203 // txId
19204 if (typeof prevTx === 'string') {
19205 prevOutHash = new Buffer(prevTx, 'hex')
19206
19207 // TxId hex is big-endian, we want little-endian hash
19208 Array.prototype.reverse.call(prevOutHash)
19209
19210 // Transaction
19211 } else if (prevTx instanceof Transaction) {
19212 prevOutHash = prevTx.getHash()
19213 prevOutScript = prevTx.outs[index].script
19214
19215 // txHash
19216 } else {
19217 prevOutHash = prevTx
19218 }
19219
19220 var input = {}
19221 if (prevOutScript) {
19222 var prevOutType = scripts.classifyOutput(prevOutScript)
19223
19224 // if we can, extract pubKey information
19225 switch (prevOutType) {
19226 case 'multisig': {
19227 input.pubKeys = prevOutScript.chunks.slice(1, -2).map(ECPubKey.fromBuffer)
19228 break
19229 }
19230
19231 case 'pubkey': {
19232 input.pubKeys = prevOutScript.chunks.slice(0, 1).map(ECPubKey.fromBuffer)
19233 break
19234 }
19235 }
19236
19237 if (prevOutType !== 'scripthash') {
19238 input.scriptType = prevOutType
19239 }
19240
19241 input.prevOutScript = prevOutScript
19242 input.prevOutType = prevOutType
19243 }
19244
19245 assert(this.inputs.every(function (input2) {
19246 if (input2.hashType === undefined) return true
19247
19248 return input2.hashType & Transaction.SIGHASH_ANYONECANPAY
19249 }), 'No, this would invalidate signatures')
19250
19251 var prevOut = prevOutHash.toString('hex') + ':' + index
19252 assert(!(prevOut in this.prevTxMap), 'Transaction is already an input')
19253
19254 var vin = this.tx.addInput(prevOutHash, index, sequence)
19255 this.inputs[vin] = input
19256 this.prevTxMap[prevOut] = vin
19257
19258 return vin
19259 }
19260
19261 TransactionBuilder.prototype.addOutput = function (scriptPubKey, value) {
19262 assert(this.inputs.every(function (input) {
19263 if (input.hashType === undefined) return true
19264
19265 return (input.hashType & 0x1f) === Transaction.SIGHASH_SINGLE
19266 }), 'No, this would invalidate signatures')
19267
19268 return this.tx.addOutput(scriptPubKey, value)
19269 }
19270
19271 TransactionBuilder.prototype.build = function () {
19272 return this.__build(false)
19273 }
19274 TransactionBuilder.prototype.buildIncomplete = function () {
19275 return this.__build(true)
19276 }
19277
19278 var canSignTypes = {
19279 'pubkeyhash': true,
19280 'multisig': true,
19281 'pubkey': true
19282 }
19283
19284 TransactionBuilder.prototype.__build = function (allowIncomplete) {
19285 if (!allowIncomplete) {
19286 assert(this.tx.ins.length > 0, 'Transaction has no inputs')
19287 assert(this.tx.outs.length > 0, 'Transaction has no outputs')
19288 }
19289
19290 var tx = this.tx.clone()
19291
19292 // Create script signatures from signature meta-data
19293 this.inputs.forEach(function (input, index) {
19294 var scriptType = input.scriptType
19295 var scriptSig
19296
19297 if (!allowIncomplete) {
19298 assert(!!scriptType, 'Transaction is not complete')
19299 assert(scriptType in canSignTypes, scriptType + ' not supported')
19300 assert(input.signatures, 'Transaction is missing signatures')
19301 }
19302
19303 if (input.signatures) {
19304 switch (scriptType) {
19305 case 'pubkeyhash': {
19306 var pkhSignature = input.signatures[0].toScriptSignature(input.hashType)
19307 scriptSig = scripts.pubKeyHashInput(pkhSignature, input.pubKeys[0])
19308 break
19309 }
19310
19311 case 'multisig': {
19312 // Array.prototype.map is sparse-compatible
19313 var msSignatures = input.signatures.map(function (signature) {
19314 return signature && signature.toScriptSignature(input.hashType)
19315 })
19316
19317 // fill in blanks with OP_0
19318 if (allowIncomplete) {
19319 for (var i = 0; i < msSignatures.length; ++i) {
19320 if (msSignatures[i]) continue
19321
19322 msSignatures[i] = ops.OP_0
19323 }
19324 } else {
19325 // Array.prototype.filter returns non-sparse array
19326 msSignatures = msSignatures.filter(function (x) { return x })
19327 }
19328
19329 var redeemScript = allowIncomplete ? undefined : input.redeemScript
19330 scriptSig = scripts.multisigInput(msSignatures, redeemScript)
19331 break
19332 }
19333
19334 case 'pubkey': {
19335 var pkSignature = input.signatures[0].toScriptSignature(input.hashType)
19336 scriptSig = scripts.pubKeyInput(pkSignature)
19337 break
19338 }
19339 }
19340 }
19341
19342 // did we build a scriptSig?
19343 if (scriptSig) {
19344 // wrap as scriptHash if necessary
19345 if (input.prevOutType === 'scripthash') {
19346 scriptSig = scripts.scriptHashInput(scriptSig, input.redeemScript)
19347 }
19348
19349 tx.setInputScript(index, scriptSig)
19350 }
19351 })
19352
19353 return tx
19354 }
19355
19356 TransactionBuilder.prototype.sign = function (index, privKey, redeemScript, hashType) {
19357 assert(index in this.inputs, 'No input at index: ' + index)
19358 hashType = hashType || Transaction.SIGHASH_ALL
19359
19360 var input = this.inputs[index]
19361 var canSign = input.hashType &&
19362 input.prevOutScript &&
19363 input.prevOutType &&
19364 input.pubKeys &&
19365 input.scriptType &&
19366 input.signatures
19367
19368 // are we almost ready to sign?
19369 if (canSign) {
19370 // if redeemScript was provided, enforce consistency
19371 if (redeemScript) {
19372 assert.deepEqual(input.redeemScript, redeemScript, 'Inconsistent redeemScript')
19373 }
19374
19375 assert.equal(input.hashType, hashType, 'Inconsistent hashType')
19376
19377 // no? prepare
19378 } else {
19379 // must be pay-to-scriptHash?
19380 if (redeemScript) {
19381 // if we have a prevOutScript, enforce scriptHash equality to the redeemScript
19382 if (input.prevOutScript) {
19383 assert.equal(input.prevOutType, 'scripthash', 'PrevOutScript must be P2SH')
19384
19385 var scriptHash = input.prevOutScript.chunks[1]
19386 assert.deepEqual(scriptHash, redeemScript.getHash(), 'RedeemScript does not match ' + scriptHash.toString('hex'))
19387 }
19388
19389 var scriptType = scripts.classifyOutput(redeemScript)
19390 assert(scriptType in canSignTypes, 'RedeemScript not supported (' + scriptType + ')')
19391
19392 var pubKeys = []
19393 switch (scriptType) {
19394 case 'multisig': {
19395 pubKeys = redeemScript.chunks.slice(1, -2).map(ECPubKey.fromBuffer)
19396 break
19397 }
19398
19399 case 'pubkeyhash': {
19400 var pkh1 = redeemScript.chunks[2]
19401 var pkh2 = privKey.pub.getAddress().hash
19402
19403 assert.deepEqual(pkh1, pkh2, 'privateKey cannot sign for this input')
19404 pubKeys = [privKey.pub]
19405 break
19406 }
19407
19408 case 'pubkey': {
19409 pubKeys = redeemScript.chunks.slice(0, 1).map(ECPubKey.fromBuffer)
19410 break
19411 }
19412 }
19413
19414 if (!input.prevOutScript) {
19415 input.prevOutScript = scripts.scriptHashOutput(redeemScript.getHash())
19416 input.prevOutType = 'scripthash'
19417 }
19418
19419 input.pubKeys = pubKeys
19420 input.redeemScript = redeemScript
19421 input.scriptType = scriptType
19422
19423 // cannot be pay-to-scriptHash
19424 } else {
19425 assert.notEqual(input.prevOutType, 'scripthash', 'PrevOutScript is P2SH, missing redeemScript')
19426
19427 // can we otherwise sign this?
19428 if (input.scriptType) {
19429 assert(input.pubKeys, input.scriptType + ' not supported')
19430
19431 // we know nothin' Jon Snow, assume pubKeyHash
19432 } else {
19433 input.prevOutScript = privKey.pub.getAddress().toOutputScript()
19434 input.prevOutType = 'pubkeyhash'
19435 input.pubKeys = [privKey.pub]
19436 input.scriptType = input.prevOutType
19437 }
19438 }
19439
19440 input.hashType = hashType
19441 input.signatures = input.signatures || []
19442 }
19443
19444 var signatureScript = input.redeemScript || input.prevOutScript
19445 var signatureHash = this.tx.hashForSignature(index, signatureScript, hashType)
19446
19447 // enforce signature order matches public keys
19448 if (input.scriptType === 'multisig' && input.redeemScript && input.signatures.length !== input.pubKeys.length) {
19449 // maintain a local copy of unmatched signatures
19450 var unmatched = input.signatures.slice()
19451
19452 input.signatures = input.pubKeys.map(function (pubKey) {
19453 var match
19454
19455 // check for any matching signatures
19456 unmatched.some(function (signature, i) {
19457 if (!pubKey.verify(signatureHash, signature)) return false
19458 match = signature
19459
19460 // remove matched signature from unmatched
19461 unmatched.splice(i, 1)
19462
19463 return true
19464 })
19465
19466 return match || undefined
19467 })
19468 }
19469
19470 // enforce in order signing of public keys
19471 assert(input.pubKeys.some(function (pubKey, i) {
19472 if (!privKey.pub.Q.equals(pubKey.Q)) return false
19473
19474 assert(!input.signatures[i], 'Signature already exists')
19475 var signature = privKey.sign(signatureHash)
19476 input.signatures[i] = signature
19477
19478 return true
19479 }, this), 'privateKey cannot sign for this input')
19480 }
19481
19482 module.exports = TransactionBuilder
19483
19484 }).call(this,require("buffer").Buffer)
19485 },{"./ecpubkey":61,"./ecsignature":62,"./opcodes":67,"./script":68,"./scripts":69,"./transaction":70,"assert":5,"buffer":7}],72:[function(require,module,exports){
19486 (function (Buffer){
19487 var assert = require('assert')
19488 var bufferutils = require('./bufferutils')
19489 var typeForce = require('typeforce')
19490 var networks = require('./networks')
19491 var randomBytes = require('randombytes')
19492
19493 var Address = require('./address')
19494 var HDNode = require('./hdnode')
19495 var TransactionBuilder = require('./transaction_builder')
19496 var Script = require('./script')
19497
19498 function Wallet (seed, network) {
19499 console.warn('Wallet is deprecated and will be removed in 2.0.0, see #296')
19500
19501 seed = seed || randomBytes(32)
19502 network = network || networks.bitcoin
19503
19504 // Stored in a closure to make accidental serialization less likely
19505 var masterKey = HDNode.fromSeedBuffer(seed, network)
19506
19507 // HD first-level child derivation method should be hardened
19508 // See https://bitcointalk.org/index.php?topic=405179.msg4415254#msg4415254
19509 var accountZero = masterKey.deriveHardened(0)
19510 var externalAccount = accountZero.derive(0)
19511 var internalAccount = accountZero.derive(1)
19512
19513 this.addresses = []
19514 this.changeAddresses = []
19515 this.network = network
19516 this.unspents = []
19517
19518 // FIXME: remove in 2.0.0
19519 this.unspentMap = {}
19520
19521 // FIXME: remove in 2.0.0
19522 var me = this
19523 this.newMasterKey = function (seed) {
19524 console.warn('newMasterKey is deprecated, please make a new Wallet instance instead')
19525
19526 seed = seed || randomBytes(32)
19527 masterKey = HDNode.fromSeedBuffer(seed, network)
19528
19529 accountZero = masterKey.deriveHardened(0)
19530 externalAccount = accountZero.derive(0)
19531 internalAccount = accountZero.derive(1)
19532
19533 me.addresses = []
19534 me.changeAddresses = []
19535
19536 me.unspents = []
19537 me.unspentMap = {}
19538 }
19539
19540 this.getMasterKey = function () {
19541 return masterKey
19542 }
19543 this.getAccountZero = function () {
19544 return accountZero
19545 }
19546 this.getExternalAccount = function () {
19547 return externalAccount
19548 }
19549 this.getInternalAccount = function () {
19550 return internalAccount
19551 }
19552 }
19553
19554 Wallet.prototype.createTransaction = function (to, value, options) {
19555 // FIXME: remove in 2.0.0
19556 if (typeof options !== 'object') {
19557 if (options !== undefined) {
19558 console.warn('Non options object parameters are deprecated, use options object instead')
19559
19560 options = {
19561 fixedFee: arguments[2],
19562 changeAddress: arguments[3]
19563 }
19564 }
19565 }
19566
19567 options = options || {}
19568
19569 assert(value > this.network.dustThreshold, value + ' must be above dust threshold (' + this.network.dustThreshold + ' Satoshis)')
19570
19571 var changeAddress = options.changeAddress
19572 var fixedFee = options.fixedFee
19573 var minConf = options.minConf === undefined ? 0 : options.minConf // FIXME: change minConf:1 by default in 2.0.0
19574
19575 // filter by minConf, then pending and sort by descending value
19576 var unspents = this.unspents.filter(function (unspent) {
19577 return unspent.confirmations >= minConf
19578 }).filter(function (unspent) {
19579 return !unspent.pending
19580 }).sort(function (o1, o2) {
19581 return o2.value - o1.value
19582 })
19583
19584 var accum = 0
19585 var addresses = []
19586 var subTotal = value
19587
19588 var txb = new TransactionBuilder()
19589 txb.addOutput(to, value)
19590
19591 for (var i = 0; i < unspents.length; ++i) {
19592 var unspent = unspents[i]
19593 addresses.push(unspent.address)
19594
19595 txb.addInput(unspent.txHash, unspent.index)
19596
19597 var fee = fixedFee === undefined ? estimatePaddedFee(txb.buildIncomplete(), this.network) : fixedFee
19598
19599 accum += unspent.value
19600 subTotal = value + fee
19601
19602 if (accum >= subTotal) {
19603 var change = accum - subTotal
19604
19605 if (change > this.network.dustThreshold) {
19606 txb.addOutput(changeAddress || this.getChangeAddress(), change)
19607 }
19608
19609 break
19610 }
19611 }
19612
19613 assert(accum >= subTotal, 'Not enough funds (incl. fee): ' + accum + ' < ' + subTotal)
19614
19615 return this.signWith(txb, addresses).build()
19616 }
19617
19618 // FIXME: remove in 2.0.0
19619 Wallet.prototype.processPendingTx = function (tx) {
19620 this.__processTx(tx, true)
19621 }
19622
19623 // FIXME: remove in 2.0.0
19624 Wallet.prototype.processConfirmedTx = function (tx) {
19625 this.__processTx(tx, false)
19626 }
19627
19628 // FIXME: remove in 2.0.0
19629 Wallet.prototype.__processTx = function (tx, isPending) {
19630 console.warn('processTransaction is considered harmful, see issue #260 for more information')
19631
19632 var txId = tx.getId()
19633 var txHash = tx.getHash()
19634
19635 tx.outs.forEach(function (txOut, i) {
19636 var address
19637
19638 try {
19639 address = Address.fromOutputScript(txOut.script, this.network).toString()
19640 } catch (e) {
19641 if (!(e.message.match(/has no matching Address/)))
19642 throw e
19643 }
19644
19645 var myAddresses = this.addresses.concat(this.changeAddresses)
19646 if (myAddresses.indexOf(address) > -1) {
19647 var lookup = txId + ':' + i
19648 if (lookup in this.unspentMap) return
19649
19650 // its unique, add it
19651 var unspent = {
19652 address: address,
19653 confirmations: 0, // no way to determine this without more information
19654 index: i,
19655 txHash: txHash,
19656 txId: txId,
19657 value: txOut.value,
19658 pending: isPending
19659 }
19660
19661 this.unspentMap[lookup] = unspent
19662 this.unspents.push(unspent)
19663 }
19664 }, this)
19665
19666 tx.ins.forEach(function (txIn) {
19667 // copy and convert to big-endian hex
19668 var txInId = bufferutils.reverse(txIn.hash).toString('hex')
19669
19670 var lookup = txInId + ':' + txIn.index
19671 if (!(lookup in this.unspentMap)) return
19672
19673 var unspent = this.unspentMap[lookup]
19674
19675 if (isPending) {
19676 unspent.pending = true
19677 unspent.spent = true
19678 } else {
19679 delete this.unspentMap[lookup]
19680
19681 this.unspents = this.unspents.filter(function (unspent2) {
19682 return unspent !== unspent2
19683 })
19684 }
19685 }, this)
19686 }
19687
19688 Wallet.prototype.generateAddress = function () {
19689 var k = this.addresses.length
19690 var address = this.getExternalAccount().derive(k).getAddress()
19691
19692 this.addresses.push(address.toString())
19693
19694 return this.getReceiveAddress()
19695 }
19696
19697 Wallet.prototype.generateChangeAddress = function () {
19698 var k = this.changeAddresses.length
19699 var address = this.getInternalAccount().derive(k).getAddress()
19700
19701 this.changeAddresses.push(address.toString())
19702
19703 return this.getChangeAddress()
19704 }
19705
19706 Wallet.prototype.getAddress = function () {
19707 if (this.addresses.length === 0) {
19708 this.generateAddress()
19709 }
19710
19711 return this.addresses[this.addresses.length - 1]
19712 }
19713
19714 Wallet.prototype.getBalance = function (minConf) {
19715 minConf = minConf || 0
19716
19717 return this.unspents.filter(function (unspent) {
19718 return unspent.confirmations >= minConf
19719
19720 // FIXME: remove spent filter in 2.0.0
19721 }).filter(function (unspent) {
19722 return !unspent.spent
19723 }).reduce(function (accum, unspent) {
19724 return accum + unspent.value
19725 }, 0)
19726 }
19727
19728 Wallet.prototype.getChangeAddress = function () {
19729 if (this.changeAddresses.length === 0) {
19730 this.generateChangeAddress()
19731 }
19732
19733 return this.changeAddresses[this.changeAddresses.length - 1]
19734 }
19735
19736 Wallet.prototype.getInternalPrivateKey = function (index) {
19737 return this.getInternalAccount().derive(index).privKey
19738 }
19739
19740 Wallet.prototype.getPrivateKey = function (index) {
19741 return this.getExternalAccount().derive(index).privKey
19742 }
19743
19744 Wallet.prototype.getPrivateKeyForAddress = function (address) {
19745 var index
19746
19747 if ((index = this.addresses.indexOf(address)) > -1) {
19748 return this.getPrivateKey(index)
19749 }
19750
19751 if ((index = this.changeAddresses.indexOf(address)) > -1) {
19752 return this.getInternalPrivateKey(index)
19753 }
19754
19755 assert(false, 'Unknown address. Make sure the address is from the keychain and has been generated')
19756 }
19757
19758 Wallet.prototype.getUnspentOutputs = function (minConf) {
19759 minConf = minConf || 0
19760
19761 return this.unspents.filter(function (unspent) {
19762 return unspent.confirmations >= minConf
19763
19764 // FIXME: remove spent filter in 2.0.0
19765 }).filter(function (unspent) {
19766 return !unspent.spent
19767 }).map(function (unspent) {
19768 return {
19769 address: unspent.address,
19770 confirmations: unspent.confirmations,
19771 index: unspent.index,
19772 txId: unspent.txId,
19773 value: unspent.value,
19774
19775 // FIXME: remove in 2.0.0
19776 hash: unspent.txId,
19777 pending: unspent.pending
19778 }
19779 })
19780 }
19781
19782 Wallet.prototype.setUnspentOutputs = function (unspents) {
19783 this.unspentMap = {}
19784 this.unspents = unspents.map(function (unspent) {
19785 // FIXME: remove unspent.hash in 2.0.0
19786 var txId = unspent.txId || unspent.hash
19787 var index = unspent.index
19788
19789 // FIXME: remove in 2.0.0
19790 if (unspent.hash !== undefined) {
19791 console.warn('unspent.hash is deprecated, use unspent.txId instead')
19792 }
19793
19794 // FIXME: remove in 2.0.0
19795 if (index === undefined) {
19796 console.warn('unspent.outputIndex is deprecated, use unspent.index instead')
19797 index = unspent.outputIndex
19798 }
19799
19800 typeForce('String', txId)
19801 typeForce('Number', index)
19802 typeForce('Number', unspent.value)
19803
19804 assert.equal(txId.length, 64, 'Expected valid txId, got ' + txId)
19805 assert.doesNotThrow(function () {
19806 Address.fromBase58Check(unspent.address)
19807 }, 'Expected Base58 Address, got ' + unspent.address)
19808 assert(isFinite(index), 'Expected finite index, got ' + index)
19809
19810 // FIXME: remove branch in 2.0.0
19811 if (unspent.confirmations !== undefined) {
19812 typeForce('Number', unspent.confirmations)
19813 }
19814
19815 var txHash = bufferutils.reverse(new Buffer(txId, 'hex'))
19816
19817 unspent = {
19818 address: unspent.address,
19819 confirmations: unspent.confirmations || 0,
19820 index: index,
19821 txHash: txHash,
19822 txId: txId,
19823 value: unspent.value,
19824
19825 // FIXME: remove in 2.0.0
19826 pending: unspent.pending || false
19827 }
19828
19829 // FIXME: remove in 2.0.0
19830 this.unspentMap[txId + ':' + index] = unspent
19831
19832 return unspent
19833 }, this)
19834 }
19835
19836 Wallet.prototype.signWith = function (tx, addresses) {
19837 addresses.forEach(function (address, i) {
19838 var privKey = this.getPrivateKeyForAddress(address)
19839
19840 tx.sign(i, privKey)
19841 }, this)
19842
19843 return tx
19844 }
19845
19846 function estimatePaddedFee (tx, network) {
19847 var tmpTx = tx.clone()
19848 tmpTx.addOutput(Script.EMPTY, network.dustSoftThreshold || 0)
19849
19850 return network.estimateFee(tmpTx)
19851 }
19852
19853 // FIXME: 1.0.0 shims, remove in 2.0.0
19854 Wallet.prototype.getReceiveAddress = Wallet.prototype.getAddress
19855 Wallet.prototype.createTx = Wallet.prototype.createTransaction
19856
19857 module.exports = Wallet
19858
19859 }).call(this,require("buffer").Buffer)
19860 },{"./address":54,"./bufferutils":57,"./hdnode":63,"./networks":66,"./script":68,"./transaction_builder":71,"assert":5,"buffer":7,"randombytes":52,"typeforce":53}]},{},[64])(64)
19861 });</script>
19862 <script>bitcoin.networks.shadow = {
19863 magicPrefix: '\x19ShadowCash Signed Message:\n',
19864 bip32: {
19865 public: 0xEE80286A,
19866 private: 0xEE8031E8
19867 },
19868 pubKeyHash: 0x3f,
19869 scriptHash: 0x7d,
19870 wif: 0xbf,
19871 dustThreshold: 0,
19872 feePerKb: 1000,
19873 estimateFee: function() { return "unused in this app" },
19874 };
19875
19876 bitcoin.networks.shadowtn = {
19877 magicPrefix: '\x19ShadowCash Signed Message:\n',
19878 bip32: {
19879 public: 0x76C0FDFB,
19880 private: 0x76C1077A
19881 },
19882 pubKeyHash: 0x7f,
19883 scriptHash: 0xc4,
19884 wif: 0xff,
19885 dustThreshold: 0,
19886 feePerKb: 1000,
19887 estimateFee: function() { return "unused in this app" },
19888 };
19889
19890 bitcoin.networks.clam = {
19891 bip32: {
19892 public: 0xa8c26d64,
19893 private: 0xa8c17826
19894 },
19895 pubKeyHash: 0x89,
19896 wif: 0x85,
19897 };
19898
19899 bitcoin.networks.dash = {
19900 bip32: {
19901 public: 0x0488b21e,
19902 private: 0x0488ade4
19903 },
19904 pubKeyHash: 0x4c,
19905 scriptHash: 0x10,
19906 wif: 0xcc,
19907 };
19908
19909 bitcoin.networks.game = {
19910 bip32: {
19911 public: 0x0488b21e,
19912 private: 0x0488ade4
19913 },
19914 pubKeyHash: 0x26,
19915 scriptHash: 0x05,
19916 wif: 0xa6,
19917 };
19918
19919 bitcoin.networks.namecoin = {
19920 bip32: {
19921 public: 0x0488b21e,
19922 private: 0x0488ade4
19923 },
19924 pubKeyHash: 0x34,
19925 //scriptHash: 0x10,
19926 wif: 0x80,
19927 };
19928
19929 bitcoin.networks.peercoin = {
19930 bip32: {
19931 public: 0x0488b21e,
19932 private: 0x0488ade4
19933 },
19934 pubKeyHash: 0x37,
19935 //scriptHash: 0x10,
19936 wif: 0xb7,
19937 };
19938
19939 bitcoin.networks.slimcoin = {
19940 bip32: {
19941 public: 0xef6adf10,
19942 private: 0xef69ea80
19943 },
19944 pubKeyHash: 0x3f,
19945 scriptHash: 0x7d,
19946 wif: 0x46,
19947 };
19948
19949 bitcoin.networks.slimcointn = {
19950 bip32: {
19951 public: 0x043587CF,
19952 private: 0x04358394
19953 },
19954 pubKeyHash: 0x6f,
19955 scriptHash: 0xc4,
19956 wif: 0x57,
19957 };
19958
19959 </script>
19960 <script>(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.ethUtil = f()}})(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);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.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(require,module,exports){
19961 (function (global){
19962 'use strict';
19963
19964 // compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js
19965 // original notice:
19966
19967 /*!
19968 * The buffer module from node.js, for the browser.
19969 *
19970 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
19971 * @license MIT
19972 */
19973 function compare(a, b) {
19974 if (a === b) {
19975 return 0;
19976 }
19977
19978 var x = a.length;
19979 var y = b.length;
19980
19981 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
19982 if (a[i] !== b[i]) {
19983 x = a[i];
19984 y = b[i];
19985 break;
19986 }
19987 }
19988
19989 if (x < y) {
19990 return -1;
19991 }
19992 if (y < x) {
19993 return 1;
19994 }
19995 return 0;
19996 }
19997 function isBuffer(b) {
19998 if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {
19999 return global.Buffer.isBuffer(b);
20000 }
20001 return !!(b != null && b._isBuffer);
20002 }
20003
20004 // based on node assert, original notice:
20005
20006 // http://wiki.commonjs.org/wiki/Unit_Testing/1.0
20007 //
20008 // THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
20009 //
20010 // Originally from narwhal.js (http://narwhaljs.org)
20011 // Copyright (c) 2009 Thomas Robinson <280north.com>
20012 //
20013 // Permission is hereby granted, free of charge, to any person obtaining a copy
20014 // of this software and associated documentation files (the 'Software'), to
20015 // deal in the Software without restriction, including without limitation the
20016 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
20017 // sell copies of the Software, and to permit persons to whom the Software is
20018 // furnished to do so, subject to the following conditions:
20019 //
20020 // The above copyright notice and this permission notice shall be included in
20021 // all copies or substantial portions of the Software.
20022 //
20023 // THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20024 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20025 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20026 // AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20027 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20028 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20029
20030 var util = require('util/');
20031 var hasOwn = Object.prototype.hasOwnProperty;
20032 var pSlice = Array.prototype.slice;
20033 var functionsHaveNames = (function () {
20034 return function foo() {}.name === 'foo';
20035 }());
20036 function pToString (obj) {
20037 return Object.prototype.toString.call(obj);
20038 }
20039 function isView(arrbuf) {
20040 if (isBuffer(arrbuf)) {
20041 return false;
20042 }
20043 if (typeof global.ArrayBuffer !== 'function') {
20044 return false;
20045 }
20046 if (typeof ArrayBuffer.isView === 'function') {
20047 return ArrayBuffer.isView(arrbuf);
20048 }
20049 if (!arrbuf) {
20050 return false;
20051 }
20052 if (arrbuf instanceof DataView) {
20053 return true;
20054 }
20055 if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {
20056 return true;
20057 }
20058 return false;
20059 }
20060 // 1. The assert module provides functions that throw
20061 // AssertionError's when particular conditions are not met. The
20062 // assert module must conform to the following interface.
20063
20064 var assert = module.exports = ok;
20065
20066 // 2. The AssertionError is defined in assert.
20067 // new assert.AssertionError({ message: message,
20068 // actual: actual,
20069 // expected: expected })
20070
20071 var regex = /\s*function\s+([^\(\s]*)\s*/;
20072 // based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js
20073 function getName(func) {
20074 if (!util.isFunction(func)) {
20075 return;
20076 }
20077 if (functionsHaveNames) {
20078 return func.name;
20079 }
20080 var str = func.toString();
20081 var match = str.match(regex);
20082 return match && match[1];
20083 }
20084 assert.AssertionError = function AssertionError(options) {
20085 this.name = 'AssertionError';
20086 this.actual = options.actual;
20087 this.expected = options.expected;
20088 this.operator = options.operator;
20089 if (options.message) {
20090 this.message = options.message;
20091 this.generatedMessage = false;
20092 } else {
20093 this.message = getMessage(this);
20094 this.generatedMessage = true;
20095 }
20096 var stackStartFunction = options.stackStartFunction || fail;
20097 if (Error.captureStackTrace) {
20098 Error.captureStackTrace(this, stackStartFunction);
20099 } else {
20100 // non v8 browsers so we can have a stacktrace
20101 var err = new Error();
20102 if (err.stack) {
20103 var out = err.stack;
20104
20105 // try to strip useless frames
20106 var fn_name = getName(stackStartFunction);
20107 var idx = out.indexOf('\n' + fn_name);
20108 if (idx >= 0) {
20109 // once we have located the function frame
20110 // we need to strip out everything before it (and its line)
20111 var next_line = out.indexOf('\n', idx + 1);
20112 out = out.substring(next_line + 1);
20113 }
20114
20115 this.stack = out;
20116 }
20117 }
20118 };
20119
20120 // assert.AssertionError instanceof Error
20121 util.inherits(assert.AssertionError, Error);
20122
20123 function truncate(s, n) {
20124 if (typeof s === 'string') {
20125 return s.length < n ? s : s.slice(0, n);
20126 } else {
20127 return s;
20128 }
20129 }
20130 function inspect(something) {
20131 if (functionsHaveNames || !util.isFunction(something)) {
20132 return util.inspect(something);
20133 }
20134 var rawname = getName(something);
20135 var name = rawname ? ': ' + rawname : '';
20136 return '[Function' + name + ']';
20137 }
20138 function getMessage(self) {
20139 return truncate(inspect(self.actual), 128) + ' ' +
20140 self.operator + ' ' +
20141 truncate(inspect(self.expected), 128);
20142 }
20143
20144 // At present only the three keys mentioned above are used and
20145 // understood by the spec. Implementations or sub modules can pass
20146 // other keys to the AssertionError's constructor - they will be
20147 // ignored.
20148
20149 // 3. All of the following functions must throw an AssertionError
20150 // when a corresponding condition is not met, with a message that
20151 // may be undefined if not provided. All assertion methods provide
20152 // both the actual and expected values to the assertion error for
20153 // display purposes.
20154
20155 function fail(actual, expected, message, operator, stackStartFunction) {
20156 throw new assert.AssertionError({
20157 message: message,
20158 actual: actual,
20159 expected: expected,
20160 operator: operator,
20161 stackStartFunction: stackStartFunction
20162 });
20163 }
20164
20165 // EXTENSION! allows for well behaved errors defined elsewhere.
20166 assert.fail = fail;
20167
20168 // 4. Pure assertion tests whether a value is truthy, as determined
20169 // by !!guard.
20170 // assert.ok(guard, message_opt);
20171 // This statement is equivalent to assert.equal(true, !!guard,
20172 // message_opt);. To test strictly for the value true, use
20173 // assert.strictEqual(true, guard, message_opt);.
20174
20175 function ok(value, message) {
20176 if (!value) fail(value, true, message, '==', assert.ok);
20177 }
20178 assert.ok = ok;
20179
20180 // 5. The equality assertion tests shallow, coercive equality with
20181 // ==.
20182 // assert.equal(actual, expected, message_opt);
20183
20184 assert.equal = function equal(actual, expected, message) {
20185 if (actual != expected) fail(actual, expected, message, '==', assert.equal);
20186 };
20187
20188 // 6. The non-equality assertion tests for whether two objects are not equal
20189 // with != assert.notEqual(actual, expected, message_opt);
20190
20191 assert.notEqual = function notEqual(actual, expected, message) {
20192 if (actual == expected) {
20193 fail(actual, expected, message, '!=', assert.notEqual);
20194 }
20195 };
20196
20197 // 7. The equivalence assertion tests a deep equality relation.
20198 // assert.deepEqual(actual, expected, message_opt);
20199
20200 assert.deepEqual = function deepEqual(actual, expected, message) {
20201 if (!_deepEqual(actual, expected, false)) {
20202 fail(actual, expected, message, 'deepEqual', assert.deepEqual);
20203 }
20204 };
20205
20206 assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {
20207 if (!_deepEqual(actual, expected, true)) {
20208 fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);
20209 }
20210 };
20211
20212 function _deepEqual(actual, expected, strict, memos) {
20213 // 7.1. All identical values are equivalent, as determined by ===.
20214 if (actual === expected) {
20215 return true;
20216 } else if (isBuffer(actual) && isBuffer(expected)) {
20217 return compare(actual, expected) === 0;
20218
20219 // 7.2. If the expected value is a Date object, the actual value is
20220 // equivalent if it is also a Date object that refers to the same time.
20221 } else if (util.isDate(actual) && util.isDate(expected)) {
20222 return actual.getTime() === expected.getTime();
20223
20224 // 7.3 If the expected value is a RegExp object, the actual value is
20225 // equivalent if it is also a RegExp object with the same source and
20226 // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
20227 } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
20228 return actual.source === expected.source &&
20229 actual.global === expected.global &&
20230 actual.multiline === expected.multiline &&
20231 actual.lastIndex === expected.lastIndex &&
20232 actual.ignoreCase === expected.ignoreCase;
20233
20234 // 7.4. Other pairs that do not both pass typeof value == 'object',
20235 // equivalence is determined by ==.
20236 } else if ((actual === null || typeof actual !== 'object') &&
20237 (expected === null || typeof expected !== 'object')) {
20238 return strict ? actual === expected : actual == expected;
20239
20240 // If both values are instances of typed arrays, wrap their underlying
20241 // ArrayBuffers in a Buffer each to increase performance
20242 // This optimization requires the arrays to have the same type as checked by
20243 // Object.prototype.toString (aka pToString). Never perform binary
20244 // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their
20245 // bit patterns are not identical.
20246 } else if (isView(actual) && isView(expected) &&
20247 pToString(actual) === pToString(expected) &&
20248 !(actual instanceof Float32Array ||
20249 actual instanceof Float64Array)) {
20250 return compare(new Uint8Array(actual.buffer),
20251 new Uint8Array(expected.buffer)) === 0;
20252
20253 // 7.5 For all other Object pairs, including Array objects, equivalence is
20254 // determined by having the same number of owned properties (as verified
20255 // with Object.prototype.hasOwnProperty.call), the same set of keys
20256 // (although not necessarily the same order), equivalent values for every
20257 // corresponding key, and an identical 'prototype' property. Note: this
20258 // accounts for both named and indexed properties on Arrays.
20259 } else if (isBuffer(actual) !== isBuffer(expected)) {
20260 return false;
20261 } else {
20262 memos = memos || {actual: [], expected: []};
20263
20264 var actualIndex = memos.actual.indexOf(actual);
20265 if (actualIndex !== -1) {
20266 if (actualIndex === memos.expected.indexOf(expected)) {
20267 return true;
20268 }
20269 }
20270
20271 memos.actual.push(actual);
20272 memos.expected.push(expected);
20273
20274 return objEquiv(actual, expected, strict, memos);
20275 }
20276 }
20277
20278 function isArguments(object) {
20279 return Object.prototype.toString.call(object) == '[object Arguments]';
20280 }
20281
20282 function objEquiv(a, b, strict, actualVisitedObjects) {
20283 if (a === null || a === undefined || b === null || b === undefined)
20284 return false;
20285 // if one is a primitive, the other must be same
20286 if (util.isPrimitive(a) || util.isPrimitive(b))
20287 return a === b;
20288 if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))
20289 return false;
20290 var aIsArgs = isArguments(a);
20291 var bIsArgs = isArguments(b);
20292 if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
20293 return false;
20294 if (aIsArgs) {
20295 a = pSlice.call(a);
20296 b = pSlice.call(b);
20297 return _deepEqual(a, b, strict);
20298 }
20299 var ka = objectKeys(a);
20300 var kb = objectKeys(b);
20301 var key, i;
20302 // having the same number of owned properties (keys incorporates
20303 // hasOwnProperty)
20304 if (ka.length !== kb.length)
20305 return false;
20306 //the same set of keys (although not necessarily the same order),
20307 ka.sort();
20308 kb.sort();
20309 //~~~cheap key test
20310 for (i = ka.length - 1; i >= 0; i--) {
20311 if (ka[i] !== kb[i])
20312 return false;
20313 }
20314 //equivalent values for every corresponding key, and
20315 //~~~possibly expensive deep test
20316 for (i = ka.length - 1; i >= 0; i--) {
20317 key = ka[i];
20318 if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))
20319 return false;
20320 }
20321 return true;
20322 }
20323
20324 // 8. The non-equivalence assertion tests for any deep inequality.
20325 // assert.notDeepEqual(actual, expected, message_opt);
20326
20327 assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
20328 if (_deepEqual(actual, expected, false)) {
20329 fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
20330 }
20331 };
20332
20333 assert.notDeepStrictEqual = notDeepStrictEqual;
20334 function notDeepStrictEqual(actual, expected, message) {
20335 if (_deepEqual(actual, expected, true)) {
20336 fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);
20337 }
20338 }
20339
20340
20341 // 9. The strict equality assertion tests strict equality, as determined by ===.
20342 // assert.strictEqual(actual, expected, message_opt);
20343
20344 assert.strictEqual = function strictEqual(actual, expected, message) {
20345 if (actual !== expected) {
20346 fail(actual, expected, message, '===', assert.strictEqual);
20347 }
20348 };
20349
20350 // 10. The strict non-equality assertion tests for strict inequality, as
20351 // determined by !==. assert.notStrictEqual(actual, expected, message_opt);
20352
20353 assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
20354 if (actual === expected) {
20355 fail(actual, expected, message, '!==', assert.notStrictEqual);
20356 }
20357 };
20358
20359 function expectedException(actual, expected) {
20360 if (!actual || !expected) {
20361 return false;
20362 }
20363
20364 if (Object.prototype.toString.call(expected) == '[object RegExp]') {
20365 return expected.test(actual);
20366 }
20367
20368 try {
20369 if (actual instanceof expected) {
20370 return true;
20371 }
20372 } catch (e) {
20373 // Ignore. The instanceof check doesn't work for arrow functions.
20374 }
20375
20376 if (Error.isPrototypeOf(expected)) {
20377 return false;
20378 }
20379
20380 return expected.call({}, actual) === true;
20381 }
20382
20383 function _tryBlock(block) {
20384 var error;
20385 try {
20386 block();
20387 } catch (e) {
20388 error = e;
20389 }
20390 return error;
20391 }
20392
20393 function _throws(shouldThrow, block, expected, message) {
20394 var actual;
20395
20396 if (typeof block !== 'function') {
20397 throw new TypeError('"block" argument must be a function');
20398 }
20399
20400 if (typeof expected === 'string') {
20401 message = expected;
20402 expected = null;
20403 }
20404
20405 actual = _tryBlock(block);
20406
20407 message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
20408 (message ? ' ' + message : '.');
20409
20410 if (shouldThrow && !actual) {
20411 fail(actual, expected, 'Missing expected exception' + message);
20412 }
20413
20414 var userProvidedMessage = typeof message === 'string';
20415 var isUnwantedException = !shouldThrow && util.isError(actual);
20416 var isUnexpectedException = !shouldThrow && actual && !expected;
20417
20418 if ((isUnwantedException &&
20419 userProvidedMessage &&
20420 expectedException(actual, expected)) ||
20421 isUnexpectedException) {
20422 fail(actual, expected, 'Got unwanted exception' + message);
20423 }
20424
20425 if ((shouldThrow && actual && expected &&
20426 !expectedException(actual, expected)) || (!shouldThrow && actual)) {
20427 throw actual;
20428 }
20429 }
20430
20431 // 11. Expected to throw an error:
20432 // assert.throws(block, Error_opt, message_opt);
20433
20434 assert.throws = function(block, /*optional*/error, /*optional*/message) {
20435 _throws(true, block, error, message);
20436 };
20437
20438 // EXTENSION! This is annoying to write outside this module.
20439 assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {
20440 _throws(false, block, error, message);
20441 };
20442
20443 assert.ifError = function(err) { if (err) throw err; };
20444
20445 var objectKeys = Object.keys || function (obj) {
20446 var keys = [];
20447 for (var key in obj) {
20448 if (hasOwn.call(obj, key)) keys.push(key);
20449 }
20450 return keys;
20451 };
20452
20453 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
20454 },{"util/":30}],2:[function(require,module,exports){
20455 'use strict'
20456
20457 exports.byteLength = byteLength
20458 exports.toByteArray = toByteArray
20459 exports.fromByteArray = fromByteArray
20460
20461 var lookup = []
20462 var revLookup = []
20463 var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
20464
20465 var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
20466 for (var i = 0, len = code.length; i < len; ++i) {
20467 lookup[i] = code[i]
20468 revLookup[code.charCodeAt(i)] = i
20469 }
20470
20471 revLookup['-'.charCodeAt(0)] = 62
20472 revLookup['_'.charCodeAt(0)] = 63
20473
20474 function placeHoldersCount (b64) {
20475 var len = b64.length
20476 if (len % 4 > 0) {
20477 throw new Error('Invalid string. Length must be a multiple of 4')
20478 }
20479
20480 // the number of equal signs (place holders)
20481 // if there are two placeholders, than the two characters before it
20482 // represent one byte
20483 // if there is only one, then the three characters before it represent 2 bytes
20484 // this is just a cheap hack to not do indexOf twice
20485 return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
20486 }
20487
20488 function byteLength (b64) {
20489 // base64 is 4/3 + up to two characters of the original data
20490 return b64.length * 3 / 4 - placeHoldersCount(b64)
20491 }
20492
20493 function toByteArray (b64) {
20494 var i, j, l, tmp, placeHolders, arr
20495 var len = b64.length
20496 placeHolders = placeHoldersCount(b64)
20497
20498 arr = new Arr(len * 3 / 4 - placeHolders)
20499
20500 // if there are placeholders, only get up to the last complete 4 chars
20501 l = placeHolders > 0 ? len - 4 : len
20502
20503 var L = 0
20504
20505 for (i = 0, j = 0; i < l; i += 4, j += 3) {
20506 tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
20507 arr[L++] = (tmp >> 16) & 0xFF
20508 arr[L++] = (tmp >> 8) & 0xFF
20509 arr[L++] = tmp & 0xFF
20510 }
20511
20512 if (placeHolders === 2) {
20513 tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
20514 arr[L++] = tmp & 0xFF
20515 } else if (placeHolders === 1) {
20516 tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
20517 arr[L++] = (tmp >> 8) & 0xFF
20518 arr[L++] = tmp & 0xFF
20519 }
20520
20521 return arr
20522 }
20523
20524 function tripletToBase64 (num) {
20525 return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
20526 }
20527
20528 function encodeChunk (uint8, start, end) {
20529 var tmp
20530 var output = []
20531 for (var i = start; i < end; i += 3) {
20532 tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
20533 output.push(tripletToBase64(tmp))
20534 }
20535 return output.join('')
20536 }
20537
20538 function fromByteArray (uint8) {
20539 var tmp
20540 var len = uint8.length
20541 var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
20542 var output = ''
20543 var parts = []
20544 var maxChunkLength = 16383 // must be multiple of 3
20545
20546 // go through the array every three bytes, we'll deal with trailing stuff later
20547 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
20548 parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
20549 }
20550
20551 // pad the end with zeros, but make sure to not forget the extra bytes
20552 if (extraBytes === 1) {
20553 tmp = uint8[len - 1]
20554 output += lookup[tmp >> 2]
20555 output += lookup[(tmp << 4) & 0x3F]
20556 output += '=='
20557 } else if (extraBytes === 2) {
20558 tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
20559 output += lookup[tmp >> 10]
20560 output += lookup[(tmp >> 4) & 0x3F]
20561 output += lookup[(tmp << 2) & 0x3F]
20562 output += '='
20563 }
20564
20565 parts.push(output)
20566
20567 return parts.join('')
20568 }
20569
20570 },{}],3:[function(require,module,exports){
20571
20572 },{}],4:[function(require,module,exports){
20573 (function (global){
20574 'use strict';
20575
20576 var buffer = require('buffer');
20577 var Buffer = buffer.Buffer;
20578 var SlowBuffer = buffer.SlowBuffer;
20579 var MAX_LEN = buffer.kMaxLength || 2147483647;
20580 exports.alloc = function alloc(size, fill, encoding) {
20581 if (typeof Buffer.alloc === 'function') {
20582 return Buffer.alloc(size, fill, encoding);
20583 }
20584 if (typeof encoding === 'number') {
20585 throw new TypeError('encoding must not be number');
20586 }
20587 if (typeof size !== 'number') {
20588 throw new TypeError('size must be a number');
20589 }
20590 if (size > MAX_LEN) {
20591 throw new RangeError('size is too large');
20592 }
20593 var enc = encoding;
20594 var _fill = fill;
20595 if (_fill === undefined) {
20596 enc = undefined;
20597 _fill = 0;
20598 }
20599 var buf = new Buffer(size);
20600 if (typeof _fill === 'string') {
20601 var fillBuf = new Buffer(_fill, enc);
20602 var flen = fillBuf.length;
20603 var i = -1;
20604 while (++i < size) {
20605 buf[i] = fillBuf[i % flen];
20606 }
20607 } else {
20608 buf.fill(_fill);
20609 }
20610 return buf;
20611 }
20612 exports.allocUnsafe = function allocUnsafe(size) {
20613 if (typeof Buffer.allocUnsafe === 'function') {
20614 return Buffer.allocUnsafe(size);
20615 }
20616 if (typeof size !== 'number') {
20617 throw new TypeError('size must be a number');
20618 }
20619 if (size > MAX_LEN) {
20620 throw new RangeError('size is too large');
20621 }
20622 return new Buffer(size);
20623 }
20624 exports.from = function from(value, encodingOrOffset, length) {
20625 if (typeof Buffer.from === 'function' && (!global.Uint8Array || Uint8Array.from !== Buffer.from)) {
20626 return Buffer.from(value, encodingOrOffset, length);
20627 }
20628 if (typeof value === 'number') {
20629 throw new TypeError('"value" argument must not be a number');
20630 }
20631 if (typeof value === 'string') {
20632 return new Buffer(value, encodingOrOffset);
20633 }
20634 if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
20635 var offset = encodingOrOffset;
20636 if (arguments.length === 1) {
20637 return new Buffer(value);
20638 }
20639 if (typeof offset === 'undefined') {
20640 offset = 0;
20641 }
20642 var len = length;
20643 if (typeof len === 'undefined') {
20644 len = value.byteLength - offset;
20645 }
20646 if (offset >= value.byteLength) {
20647 throw new RangeError('\'offset\' is out of bounds');
20648 }
20649 if (len > value.byteLength - offset) {
20650 throw new RangeError('\'length\' is out of bounds');
20651 }
20652 return new Buffer(value.slice(offset, offset + len));
20653 }
20654 if (Buffer.isBuffer(value)) {
20655 var out = new Buffer(value.length);
20656 value.copy(out, 0, 0, value.length);
20657 return out;
20658 }
20659 if (value) {
20660 if (Array.isArray(value) || (typeof ArrayBuffer !== 'undefined' && value.buffer instanceof ArrayBuffer) || 'length' in value) {
20661 return new Buffer(value);
20662 }
20663 if (value.type === 'Buffer' && Array.isArray(value.data)) {
20664 return new Buffer(value.data);
20665 }
20666 }
20667
20668 throw new TypeError('First argument must be a string, Buffer, ' + 'ArrayBuffer, Array, or array-like object.');
20669 }
20670 exports.allocUnsafeSlow = function allocUnsafeSlow(size) {
20671 if (typeof Buffer.allocUnsafeSlow === 'function') {
20672 return Buffer.allocUnsafeSlow(size);
20673 }
20674 if (typeof size !== 'number') {
20675 throw new TypeError('size must be a number');
20676 }
20677 if (size >= MAX_LEN) {
20678 throw new RangeError('size is too large');
20679 }
20680 return new SlowBuffer(size);
20681 }
20682
20683 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
20684 },{"buffer":5}],5:[function(require,module,exports){
20685 /*!
20686 * The buffer module from node.js, for the browser.
20687 *
20688 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
20689 * @license MIT
20690 */
20691 /* eslint-disable no-proto */
20692
20693 'use strict'
20694
20695 var base64 = require('base64-js')
20696 var ieee754 = require('ieee754')
20697
20698 exports.Buffer = Buffer
20699 exports.SlowBuffer = SlowBuffer
20700 exports.INSPECT_MAX_BYTES = 50
20701
20702 var K_MAX_LENGTH = 0x7fffffff
20703 exports.kMaxLength = K_MAX_LENGTH
20704
20705 /**
20706 * If `Buffer.TYPED_ARRAY_SUPPORT`:
20707 * === true Use Uint8Array implementation (fastest)
20708 * === false Print warning and recommend using `buffer` v4.x which has an Object
20709 * implementation (most compatible, even IE6)
20710 *
20711 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
20712 * Opera 11.6+, iOS 4.2+.
20713 *
20714 * We report that the browser does not support typed arrays if the are not subclassable
20715 * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
20716 * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
20717 * for __proto__ and has a buggy typed array implementation.
20718 */
20719 Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
20720
20721 if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
20722 typeof console.error === 'function') {
20723 console.error(
20724 'This browser lacks typed array (Uint8Array) support which is required by ' +
20725 '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
20726 )
20727 }
20728
20729 function typedArraySupport () {
20730 // Can typed array instances can be augmented?
20731 try {
20732 var arr = new Uint8Array(1)
20733 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
20734 return arr.foo() === 42
20735 } catch (e) {
20736 return false
20737 }
20738 }
20739
20740 function createBuffer (length) {
20741 if (length > K_MAX_LENGTH) {
20742 throw new RangeError('Invalid typed array length')
20743 }
20744 // Return an augmented `Uint8Array` instance
20745 var buf = new Uint8Array(length)
20746 buf.__proto__ = Buffer.prototype
20747 return buf
20748 }
20749
20750 /**
20751 * The Buffer constructor returns instances of `Uint8Array` that have their
20752 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
20753 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
20754 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
20755 * returns a single octet.
20756 *
20757 * The `Uint8Array` prototype remains unmodified.
20758 */
20759
20760 function Buffer (arg, encodingOrOffset, length) {
20761 // Common case.
20762 if (typeof arg === 'number') {
20763 if (typeof encodingOrOffset === 'string') {
20764 throw new Error(
20765 'If encoding is specified then the first argument must be a string'
20766 )
20767 }
20768 return allocUnsafe(arg)
20769 }
20770 return from(arg, encodingOrOffset, length)
20771 }
20772
20773 // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
20774 if (typeof Symbol !== 'undefined' && Symbol.species &&
20775 Buffer[Symbol.species] === Buffer) {
20776 Object.defineProperty(Buffer, Symbol.species, {
20777 value: null,
20778 configurable: true,
20779 enumerable: false,
20780 writable: false
20781 })
20782 }
20783
20784 Buffer.poolSize = 8192 // not used by this implementation
20785
20786 function from (value, encodingOrOffset, length) {
20787 if (typeof value === 'number') {
20788 throw new TypeError('"value" argument must not be a number')
20789 }
20790
20791 if (value instanceof ArrayBuffer) {
20792 return fromArrayBuffer(value, encodingOrOffset, length)
20793 }
20794
20795 if (typeof value === 'string') {
20796 return fromString(value, encodingOrOffset)
20797 }
20798
20799 return fromObject(value)
20800 }
20801
20802 /**
20803 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
20804 * if value is a number.
20805 * Buffer.from(str[, encoding])
20806 * Buffer.from(array)
20807 * Buffer.from(buffer)
20808 * Buffer.from(arrayBuffer[, byteOffset[, length]])
20809 **/
20810 Buffer.from = function (value, encodingOrOffset, length) {
20811 return from(value, encodingOrOffset, length)
20812 }
20813
20814 // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
20815 // https://github.com/feross/buffer/pull/148
20816 Buffer.prototype.__proto__ = Uint8Array.prototype
20817 Buffer.__proto__ = Uint8Array
20818
20819 function assertSize (size) {
20820 if (typeof size !== 'number') {
20821 throw new TypeError('"size" argument must be a number')
20822 } else if (size < 0) {
20823 throw new RangeError('"size" argument must not be negative')
20824 }
20825 }
20826
20827 function alloc (size, fill, encoding) {
20828 assertSize(size)
20829 if (size <= 0) {
20830 return createBuffer(size)
20831 }
20832 if (fill !== undefined) {
20833 // Only pay attention to encoding if it's a string. This
20834 // prevents accidentally sending in a number that would
20835 // be interpretted as a start offset.
20836 return typeof encoding === 'string'
20837 ? createBuffer(size).fill(fill, encoding)
20838 : createBuffer(size).fill(fill)
20839 }
20840 return createBuffer(size)
20841 }
20842
20843 /**
20844 * Creates a new filled Buffer instance.
20845 * alloc(size[, fill[, encoding]])
20846 **/
20847 Buffer.alloc = function (size, fill, encoding) {
20848 return alloc(size, fill, encoding)
20849 }
20850
20851 function allocUnsafe (size) {
20852 assertSize(size)
20853 return createBuffer(size < 0 ? 0 : checked(size) | 0)
20854 }
20855
20856 /**
20857 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
20858 * */
20859 Buffer.allocUnsafe = function (size) {
20860 return allocUnsafe(size)
20861 }
20862 /**
20863 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
20864 */
20865 Buffer.allocUnsafeSlow = function (size) {
20866 return allocUnsafe(size)
20867 }
20868
20869 function fromString (string, encoding) {
20870 if (typeof encoding !== 'string' || encoding === '') {
20871 encoding = 'utf8'
20872 }
20873
20874 if (!Buffer.isEncoding(encoding)) {
20875 throw new TypeError('"encoding" must be a valid string encoding')
20876 }
20877
20878 var length = byteLength(string, encoding) | 0
20879 var buf = createBuffer(length)
20880
20881 var actual = buf.write(string, encoding)
20882
20883 if (actual !== length) {
20884 // Writing a hex string, for example, that contains invalid characters will
20885 // cause everything after the first invalid character to be ignored. (e.g.
20886 // 'abxxcd' will be treated as 'ab')
20887 buf = buf.slice(0, actual)
20888 }
20889
20890 return buf
20891 }
20892
20893 function fromArrayLike (array) {
20894 var length = array.length < 0 ? 0 : checked(array.length) | 0
20895 var buf = createBuffer(length)
20896 for (var i = 0; i < length; i += 1) {
20897 buf[i] = array[i] & 255
20898 }
20899 return buf
20900 }
20901
20902 function fromArrayBuffer (array, byteOffset, length) {
20903 if (byteOffset < 0 || array.byteLength < byteOffset) {
20904 throw new RangeError('\'offset\' is out of bounds')
20905 }
20906
20907 if (array.byteLength < byteOffset + (length || 0)) {
20908 throw new RangeError('\'length\' is out of bounds')
20909 }
20910
20911 var buf
20912 if (byteOffset === undefined && length === undefined) {
20913 buf = new Uint8Array(array)
20914 } else if (length === undefined) {
20915 buf = new Uint8Array(array, byteOffset)
20916 } else {
20917 buf = new Uint8Array(array, byteOffset, length)
20918 }
20919
20920 // Return an augmented `Uint8Array` instance
20921 buf.__proto__ = Buffer.prototype
20922 return buf
20923 }
20924
20925 function fromObject (obj) {
20926 if (Buffer.isBuffer(obj)) {
20927 var len = checked(obj.length) | 0
20928 var buf = createBuffer(len)
20929
20930 if (buf.length === 0) {
20931 return buf
20932 }
20933
20934 obj.copy(buf, 0, 0, len)
20935 return buf
20936 }
20937
20938 if (obj) {
20939 if (ArrayBuffer.isView(obj) || 'length' in obj) {
20940 if (typeof obj.length !== 'number' || isnan(obj.length)) {
20941 return createBuffer(0)
20942 }
20943 return fromArrayLike(obj)
20944 }
20945
20946 if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
20947 return fromArrayLike(obj.data)
20948 }
20949 }
20950
20951 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
20952 }
20953
20954 function checked (length) {
20955 // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
20956 // length is NaN (which is otherwise coerced to zero.)
20957 if (length >= K_MAX_LENGTH) {
20958 throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
20959 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
20960 }
20961 return length | 0
20962 }
20963
20964 function SlowBuffer (length) {
20965 if (+length != length) { // eslint-disable-line eqeqeq
20966 length = 0
20967 }
20968 return Buffer.alloc(+length)
20969 }
20970
20971 Buffer.isBuffer = function isBuffer (b) {
20972 return b != null && b._isBuffer === true
20973 }
20974
20975 Buffer.compare = function compare (a, b) {
20976 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
20977 throw new TypeError('Arguments must be Buffers')
20978 }
20979
20980 if (a === b) return 0
20981
20982 var x = a.length
20983 var y = b.length
20984
20985 for (var i = 0, len = Math.min(x, y); i < len; ++i) {
20986 if (a[i] !== b[i]) {
20987 x = a[i]
20988 y = b[i]
20989 break
20990 }
20991 }
20992
20993 if (x < y) return -1
20994 if (y < x) return 1
20995 return 0
20996 }
20997
20998 Buffer.isEncoding = function isEncoding (encoding) {
20999 switch (String(encoding).toLowerCase()) {
21000 case 'hex':
21001 case 'utf8':
21002 case 'utf-8':
21003 case 'ascii':
21004 case 'latin1':
21005 case 'binary':
21006 case 'base64':
21007 case 'ucs2':
21008 case 'ucs-2':
21009 case 'utf16le':
21010 case 'utf-16le':
21011 return true
21012 default:
21013 return false
21014 }
21015 }
21016
21017 Buffer.concat = function concat (list, length) {
21018 if (!Array.isArray(list)) {
21019 throw new TypeError('"list" argument must be an Array of Buffers')
21020 }
21021
21022 if (list.length === 0) {
21023 return Buffer.alloc(0)
21024 }
21025
21026 var i
21027 if (length === undefined) {
21028 length = 0
21029 for (i = 0; i < list.length; ++i) {
21030 length += list[i].length
21031 }
21032 }
21033
21034 var buffer = Buffer.allocUnsafe(length)
21035 var pos = 0
21036 for (i = 0; i < list.length; ++i) {
21037 var buf = list[i]
21038 if (!Buffer.isBuffer(buf)) {
21039 throw new TypeError('"list" argument must be an Array of Buffers')
21040 }
21041 buf.copy(buffer, pos)
21042 pos += buf.length
21043 }
21044 return buffer
21045 }
21046
21047 function byteLength (string, encoding) {
21048 if (Buffer.isBuffer(string)) {
21049 return string.length
21050 }
21051 if (ArrayBuffer.isView(string) || string instanceof ArrayBuffer) {
21052 return string.byteLength
21053 }
21054 if (typeof string !== 'string') {
21055 string = '' + string
21056 }
21057
21058 var len = string.length
21059 if (len === 0) return 0
21060
21061 // Use a for loop to avoid recursion
21062 var loweredCase = false
21063 for (;;) {
21064 switch (encoding) {
21065 case 'ascii':
21066 case 'latin1':
21067 case 'binary':
21068 return len
21069 case 'utf8':
21070 case 'utf-8':
21071 case undefined:
21072 return utf8ToBytes(string).length
21073 case 'ucs2':
21074 case 'ucs-2':
21075 case 'utf16le':
21076 case 'utf-16le':
21077 return len * 2
21078 case 'hex':
21079 return len >>> 1
21080 case 'base64':
21081 return base64ToBytes(string).length
21082 default:
21083 if (loweredCase) return utf8ToBytes(string).length // assume utf8
21084 encoding = ('' + encoding).toLowerCase()
21085 loweredCase = true
21086 }
21087 }
21088 }
21089 Buffer.byteLength = byteLength
21090
21091 function slowToString (encoding, start, end) {
21092 var loweredCase = false
21093
21094 // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
21095 // property of a typed array.
21096
21097 // This behaves neither like String nor Uint8Array in that we set start/end
21098 // to their upper/lower bounds if the value passed is out of range.
21099 // undefined is handled specially as per ECMA-262 6th Edition,
21100 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
21101 if (start === undefined || start < 0) {
21102 start = 0
21103 }
21104 // Return early if start > this.length. Done here to prevent potential uint32
21105 // coercion fail below.
21106 if (start > this.length) {
21107 return ''
21108 }
21109
21110 if (end === undefined || end > this.length) {
21111 end = this.length
21112 }
21113
21114 if (end <= 0) {
21115 return ''
21116 }
21117
21118 // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
21119 end >>>= 0
21120 start >>>= 0
21121
21122 if (end <= start) {
21123 return ''
21124 }
21125
21126 if (!encoding) encoding = 'utf8'
21127
21128 while (true) {
21129 switch (encoding) {
21130 case 'hex':
21131 return hexSlice(this, start, end)
21132
21133 case 'utf8':
21134 case 'utf-8':
21135 return utf8Slice(this, start, end)
21136
21137 case 'ascii':
21138 return asciiSlice(this, start, end)
21139
21140 case 'latin1':
21141 case 'binary':
21142 return latin1Slice(this, start, end)
21143
21144 case 'base64':
21145 return base64Slice(this, start, end)
21146
21147 case 'ucs2':
21148 case 'ucs-2':
21149 case 'utf16le':
21150 case 'utf-16le':
21151 return utf16leSlice(this, start, end)
21152
21153 default:
21154 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
21155 encoding = (encoding + '').toLowerCase()
21156 loweredCase = true
21157 }
21158 }
21159 }
21160
21161 // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
21162 // to detect a Buffer instance. It's not possible to use `instanceof Buffer`
21163 // reliably in a browserify context because there could be multiple different
21164 // copies of the 'buffer' package in use. This method works even for Buffer
21165 // instances that were created from another copy of the `buffer` package.
21166 // See: https://github.com/feross/buffer/issues/154
21167 Buffer.prototype._isBuffer = true
21168
21169 function swap (b, n, m) {
21170 var i = b[n]
21171 b[n] = b[m]
21172 b[m] = i
21173 }
21174
21175 Buffer.prototype.swap16 = function swap16 () {
21176 var len = this.length
21177 if (len % 2 !== 0) {
21178 throw new RangeError('Buffer size must be a multiple of 16-bits')
21179 }
21180 for (var i = 0; i < len; i += 2) {
21181 swap(this, i, i + 1)
21182 }
21183 return this
21184 }
21185
21186 Buffer.prototype.swap32 = function swap32 () {
21187 var len = this.length
21188 if (len % 4 !== 0) {
21189 throw new RangeError('Buffer size must be a multiple of 32-bits')
21190 }
21191 for (var i = 0; i < len; i += 4) {
21192 swap(this, i, i + 3)
21193 swap(this, i + 1, i + 2)
21194 }
21195 return this
21196 }
21197
21198 Buffer.prototype.swap64 = function swap64 () {
21199 var len = this.length
21200 if (len % 8 !== 0) {
21201 throw new RangeError('Buffer size must be a multiple of 64-bits')
21202 }
21203 for (var i = 0; i < len; i += 8) {
21204 swap(this, i, i + 7)
21205 swap(this, i + 1, i + 6)
21206 swap(this, i + 2, i + 5)
21207 swap(this, i + 3, i + 4)
21208 }
21209 return this
21210 }
21211
21212 Buffer.prototype.toString = function toString () {
21213 var length = this.length
21214 if (length === 0) return ''
21215 if (arguments.length === 0) return utf8Slice(this, 0, length)
21216 return slowToString.apply(this, arguments)
21217 }
21218
21219 Buffer.prototype.equals = function equals (b) {
21220 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
21221 if (this === b) return true
21222 return Buffer.compare(this, b) === 0
21223 }
21224
21225 Buffer.prototype.inspect = function inspect () {
21226 var str = ''
21227 var max = exports.INSPECT_MAX_BYTES
21228 if (this.length > 0) {
21229 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
21230 if (this.length > max) str += ' ... '
21231 }
21232 return '<Buffer ' + str + '>'
21233 }
21234
21235 Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
21236 if (!Buffer.isBuffer(target)) {
21237 throw new TypeError('Argument must be a Buffer')
21238 }
21239
21240 if (start === undefined) {
21241 start = 0
21242 }
21243 if (end === undefined) {
21244 end = target ? target.length : 0
21245 }
21246 if (thisStart === undefined) {
21247 thisStart = 0
21248 }
21249 if (thisEnd === undefined) {
21250 thisEnd = this.length
21251 }
21252
21253 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
21254 throw new RangeError('out of range index')
21255 }
21256
21257 if (thisStart >= thisEnd && start >= end) {
21258 return 0
21259 }
21260 if (thisStart >= thisEnd) {
21261 return -1
21262 }
21263 if (start >= end) {
21264 return 1
21265 }
21266
21267 start >>>= 0
21268 end >>>= 0
21269 thisStart >>>= 0
21270 thisEnd >>>= 0
21271
21272 if (this === target) return 0
21273
21274 var x = thisEnd - thisStart
21275 var y = end - start
21276 var len = Math.min(x, y)
21277
21278 var thisCopy = this.slice(thisStart, thisEnd)
21279 var targetCopy = target.slice(start, end)
21280
21281 for (var i = 0; i < len; ++i) {
21282 if (thisCopy[i] !== targetCopy[i]) {
21283 x = thisCopy[i]
21284 y = targetCopy[i]
21285 break
21286 }
21287 }
21288
21289 if (x < y) return -1
21290 if (y < x) return 1
21291 return 0
21292 }
21293
21294 // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
21295 // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
21296 //
21297 // Arguments:
21298 // - buffer - a Buffer to search
21299 // - val - a string, Buffer, or number
21300 // - byteOffset - an index into `buffer`; will be clamped to an int32
21301 // - encoding - an optional encoding, relevant is val is a string
21302 // - dir - true for indexOf, false for lastIndexOf
21303 function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
21304 // Empty buffer means no match
21305 if (buffer.length === 0) return -1
21306
21307 // Normalize byteOffset
21308 if (typeof byteOffset === 'string') {
21309 encoding = byteOffset
21310 byteOffset = 0
21311 } else if (byteOffset > 0x7fffffff) {
21312 byteOffset = 0x7fffffff
21313 } else if (byteOffset < -0x80000000) {
21314 byteOffset = -0x80000000
21315 }
21316 byteOffset = +byteOffset // Coerce to Number.
21317 if (isNaN(byteOffset)) {
21318 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
21319 byteOffset = dir ? 0 : (buffer.length - 1)
21320 }
21321
21322 // Normalize byteOffset: negative offsets start from the end of the buffer
21323 if (byteOffset < 0) byteOffset = buffer.length + byteOffset
21324 if (byteOffset >= buffer.length) {
21325 if (dir) return -1
21326 else byteOffset = buffer.length - 1
21327 } else if (byteOffset < 0) {
21328 if (dir) byteOffset = 0
21329 else return -1
21330 }
21331
21332 // Normalize val
21333 if (typeof val === 'string') {
21334 val = Buffer.from(val, encoding)
21335 }
21336
21337 // Finally, search either indexOf (if dir is true) or lastIndexOf
21338 if (Buffer.isBuffer(val)) {
21339 // Special case: looking for empty string/buffer always fails
21340 if (val.length === 0) {
21341 return -1
21342 }
21343 return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
21344 } else if (typeof val === 'number') {
21345 val = val & 0xFF // Search for a byte value [0-255]
21346 if (typeof Uint8Array.prototype.indexOf === 'function') {
21347 if (dir) {
21348 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
21349 } else {
21350 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
21351 }
21352 }
21353 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
21354 }
21355
21356 throw new TypeError('val must be string, number or Buffer')
21357 }
21358
21359 function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
21360 var indexSize = 1
21361 var arrLength = arr.length
21362 var valLength = val.length
21363
21364 if (encoding !== undefined) {
21365 encoding = String(encoding).toLowerCase()
21366 if (encoding === 'ucs2' || encoding === 'ucs-2' ||
21367 encoding === 'utf16le' || encoding === 'utf-16le') {
21368 if (arr.length < 2 || val.length < 2) {
21369 return -1
21370 }
21371 indexSize = 2
21372 arrLength /= 2
21373 valLength /= 2
21374 byteOffset /= 2
21375 }
21376 }
21377
21378 function read (buf, i) {
21379 if (indexSize === 1) {
21380 return buf[i]
21381 } else {
21382 return buf.readUInt16BE(i * indexSize)
21383 }
21384 }
21385
21386 var i
21387 if (dir) {
21388 var foundIndex = -1
21389 for (i = byteOffset; i < arrLength; i++) {
21390 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
21391 if (foundIndex === -1) foundIndex = i
21392 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
21393 } else {
21394 if (foundIndex !== -1) i -= i - foundIndex
21395 foundIndex = -1
21396 }
21397 }
21398 } else {
21399 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
21400 for (i = byteOffset; i >= 0; i--) {
21401 var found = true
21402 for (var j = 0; j < valLength; j++) {
21403 if (read(arr, i + j) !== read(val, j)) {
21404 found = false
21405 break
21406 }
21407 }
21408 if (found) return i
21409 }
21410 }
21411
21412 return -1
21413 }
21414
21415 Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
21416 return this.indexOf(val, byteOffset, encoding) !== -1
21417 }
21418
21419 Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
21420 return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
21421 }
21422
21423 Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
21424 return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
21425 }
21426
21427 function hexWrite (buf, string, offset, length) {
21428 offset = Number(offset) || 0
21429 var remaining = buf.length - offset
21430 if (!length) {
21431 length = remaining
21432 } else {
21433 length = Number(length)
21434 if (length > remaining) {
21435 length = remaining
21436 }
21437 }
21438
21439 // must be an even number of digits
21440 var strLen = string.length
21441 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
21442
21443 if (length > strLen / 2) {
21444 length = strLen / 2
21445 }
21446 for (var i = 0; i < length; ++i) {
21447 var parsed = parseInt(string.substr(i * 2, 2), 16)
21448 if (isNaN(parsed)) return i
21449 buf[offset + i] = parsed
21450 }
21451 return i
21452 }
21453
21454 function utf8Write (buf, string, offset, length) {
21455 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
21456 }
21457
21458 function asciiWrite (buf, string, offset, length) {
21459 return blitBuffer(asciiToBytes(string), buf, offset, length)
21460 }
21461
21462 function latin1Write (buf, string, offset, length) {
21463 return asciiWrite(buf, string, offset, length)
21464 }
21465
21466 function base64Write (buf, string, offset, length) {
21467 return blitBuffer(base64ToBytes(string), buf, offset, length)
21468 }
21469
21470 function ucs2Write (buf, string, offset, length) {
21471 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
21472 }
21473
21474 Buffer.prototype.write = function write (string, offset, length, encoding) {
21475 // Buffer#write(string)
21476 if (offset === undefined) {
21477 encoding = 'utf8'
21478 length = this.length
21479 offset = 0
21480 // Buffer#write(string, encoding)
21481 } else if (length === undefined && typeof offset === 'string') {
21482 encoding = offset
21483 length = this.length
21484 offset = 0
21485 // Buffer#write(string, offset[, length][, encoding])
21486 } else if (isFinite(offset)) {
21487 offset = offset >>> 0
21488 if (isFinite(length)) {
21489 length = length >>> 0
21490 if (encoding === undefined) encoding = 'utf8'
21491 } else {
21492 encoding = length
21493 length = undefined
21494 }
21495 } else {
21496 throw new Error(
21497 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
21498 )
21499 }
21500
21501 var remaining = this.length - offset
21502 if (length === undefined || length > remaining) length = remaining
21503
21504 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
21505 throw new RangeError('Attempt to write outside buffer bounds')
21506 }
21507
21508 if (!encoding) encoding = 'utf8'
21509
21510 var loweredCase = false
21511 for (;;) {
21512 switch (encoding) {
21513 case 'hex':
21514 return hexWrite(this, string, offset, length)
21515
21516 case 'utf8':
21517 case 'utf-8':
21518 return utf8Write(this, string, offset, length)
21519
21520 case 'ascii':
21521 return asciiWrite(this, string, offset, length)
21522
21523 case 'latin1':
21524 case 'binary':
21525 return latin1Write(this, string, offset, length)
21526
21527 case 'base64':
21528 // Warning: maxLength not taken into account in base64Write
21529 return base64Write(this, string, offset, length)
21530
21531 case 'ucs2':
21532 case 'ucs-2':
21533 case 'utf16le':
21534 case 'utf-16le':
21535 return ucs2Write(this, string, offset, length)
21536
21537 default:
21538 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
21539 encoding = ('' + encoding).toLowerCase()
21540 loweredCase = true
21541 }
21542 }
21543 }
21544
21545 Buffer.prototype.toJSON = function toJSON () {
21546 return {
21547 type: 'Buffer',
21548 data: Array.prototype.slice.call(this._arr || this, 0)
21549 }
21550 }
21551
21552 function base64Slice (buf, start, end) {
21553 if (start === 0 && end === buf.length) {
21554 return base64.fromByteArray(buf)
21555 } else {
21556 return base64.fromByteArray(buf.slice(start, end))
21557 }
21558 }
21559
21560 function utf8Slice (buf, start, end) {
21561 end = Math.min(buf.length, end)
21562 var res = []
21563
21564 var i = start
21565 while (i < end) {
21566 var firstByte = buf[i]
21567 var codePoint = null
21568 var bytesPerSequence = (firstByte > 0xEF) ? 4
21569 : (firstByte > 0xDF) ? 3
21570 : (firstByte > 0xBF) ? 2
21571 : 1
21572
21573 if (i + bytesPerSequence <= end) {
21574 var secondByte, thirdByte, fourthByte, tempCodePoint
21575
21576 switch (bytesPerSequence) {
21577 case 1:
21578 if (firstByte < 0x80) {
21579 codePoint = firstByte
21580 }
21581 break
21582 case 2:
21583 secondByte = buf[i + 1]
21584 if ((secondByte & 0xC0) === 0x80) {
21585 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
21586 if (tempCodePoint > 0x7F) {
21587 codePoint = tempCodePoint
21588 }
21589 }
21590 break
21591 case 3:
21592 secondByte = buf[i + 1]
21593 thirdByte = buf[i + 2]
21594 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
21595 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
21596 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
21597 codePoint = tempCodePoint
21598 }
21599 }
21600 break
21601 case 4:
21602 secondByte = buf[i + 1]
21603 thirdByte = buf[i + 2]
21604 fourthByte = buf[i + 3]
21605 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
21606 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
21607 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
21608 codePoint = tempCodePoint
21609 }
21610 }
21611 }
21612 }
21613
21614 if (codePoint === null) {
21615 // we did not generate a valid codePoint so insert a
21616 // replacement char (U+FFFD) and advance only 1 byte
21617 codePoint = 0xFFFD
21618 bytesPerSequence = 1
21619 } else if (codePoint > 0xFFFF) {
21620 // encode to utf16 (surrogate pair dance)
21621 codePoint -= 0x10000
21622 res.push(codePoint >>> 10 & 0x3FF | 0xD800)
21623 codePoint = 0xDC00 | codePoint & 0x3FF
21624 }
21625
21626 res.push(codePoint)
21627 i += bytesPerSequence
21628 }
21629
21630 return decodeCodePointsArray(res)
21631 }
21632
21633 // Based on http://stackoverflow.com/a/22747272/680742, the browser with
21634 // the lowest limit is Chrome, with 0x10000 args.
21635 // We go 1 magnitude less, for safety
21636 var MAX_ARGUMENTS_LENGTH = 0x1000
21637
21638 function decodeCodePointsArray (codePoints) {
21639 var len = codePoints.length
21640 if (len <= MAX_ARGUMENTS_LENGTH) {
21641 return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
21642 }
21643
21644 // Decode in chunks to avoid "call stack size exceeded".
21645 var res = ''
21646 var i = 0
21647 while (i < len) {
21648 res += String.fromCharCode.apply(
21649 String,
21650 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
21651 )
21652 }
21653 return res
21654 }
21655
21656 function asciiSlice (buf, start, end) {
21657 var ret = ''
21658 end = Math.min(buf.length, end)
21659
21660 for (var i = start; i < end; ++i) {
21661 ret += String.fromCharCode(buf[i] & 0x7F)
21662 }
21663 return ret
21664 }
21665
21666 function latin1Slice (buf, start, end) {
21667 var ret = ''
21668 end = Math.min(buf.length, end)
21669
21670 for (var i = start; i < end; ++i) {
21671 ret += String.fromCharCode(buf[i])
21672 }
21673 return ret
21674 }
21675
21676 function hexSlice (buf, start, end) {
21677 var len = buf.length
21678
21679 if (!start || start < 0) start = 0
21680 if (!end || end < 0 || end > len) end = len
21681
21682 var out = ''
21683 for (var i = start; i < end; ++i) {
21684 out += toHex(buf[i])
21685 }
21686 return out
21687 }
21688
21689 function utf16leSlice (buf, start, end) {
21690 var bytes = buf.slice(start, end)
21691 var res = ''
21692 for (var i = 0; i < bytes.length; i += 2) {
21693 res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
21694 }
21695 return res
21696 }
21697
21698 Buffer.prototype.slice = function slice (start, end) {
21699 var len = this.length
21700 start = ~~start
21701 end = end === undefined ? len : ~~end
21702
21703 if (start < 0) {
21704 start += len
21705 if (start < 0) start = 0
21706 } else if (start > len) {
21707 start = len
21708 }
21709
21710 if (end < 0) {
21711 end += len
21712 if (end < 0) end = 0
21713 } else if (end > len) {
21714 end = len
21715 }
21716
21717 if (end < start) end = start
21718
21719 var newBuf = this.subarray(start, end)
21720 // Return an augmented `Uint8Array` instance
21721 newBuf.__proto__ = Buffer.prototype
21722 return newBuf
21723 }
21724
21725 /*
21726 * Need to make sure that buffer isn't trying to write out of bounds.
21727 */
21728 function checkOffset (offset, ext, length) {
21729 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
21730 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
21731 }
21732
21733 Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
21734 offset = offset >>> 0
21735 byteLength = byteLength >>> 0
21736 if (!noAssert) checkOffset(offset, byteLength, this.length)
21737
21738 var val = this[offset]
21739 var mul = 1
21740 var i = 0
21741 while (++i < byteLength && (mul *= 0x100)) {
21742 val += this[offset + i] * mul
21743 }
21744
21745 return val
21746 }
21747
21748 Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
21749 offset = offset >>> 0
21750 byteLength = byteLength >>> 0
21751 if (!noAssert) {
21752 checkOffset(offset, byteLength, this.length)
21753 }
21754
21755 var val = this[offset + --byteLength]
21756 var mul = 1
21757 while (byteLength > 0 && (mul *= 0x100)) {
21758 val += this[offset + --byteLength] * mul
21759 }
21760
21761 return val
21762 }
21763
21764 Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
21765 offset = offset >>> 0
21766 if (!noAssert) checkOffset(offset, 1, this.length)
21767 return this[offset]
21768 }
21769
21770 Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
21771 offset = offset >>> 0
21772 if (!noAssert) checkOffset(offset, 2, this.length)
21773 return this[offset] | (this[offset + 1] << 8)
21774 }
21775
21776 Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
21777 offset = offset >>> 0
21778 if (!noAssert) checkOffset(offset, 2, this.length)
21779 return (this[offset] << 8) | this[offset + 1]
21780 }
21781
21782 Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
21783 offset = offset >>> 0
21784 if (!noAssert) checkOffset(offset, 4, this.length)
21785
21786 return ((this[offset]) |
21787 (this[offset + 1] << 8) |
21788 (this[offset + 2] << 16)) +
21789 (this[offset + 3] * 0x1000000)
21790 }
21791
21792 Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
21793 offset = offset >>> 0
21794 if (!noAssert) checkOffset(offset, 4, this.length)
21795
21796 return (this[offset] * 0x1000000) +
21797 ((this[offset + 1] << 16) |
21798 (this[offset + 2] << 8) |
21799 this[offset + 3])
21800 }
21801
21802 Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
21803 offset = offset >>> 0
21804 byteLength = byteLength >>> 0
21805 if (!noAssert) checkOffset(offset, byteLength, this.length)
21806
21807 var val = this[offset]
21808 var mul = 1
21809 var i = 0
21810 while (++i < byteLength && (mul *= 0x100)) {
21811 val += this[offset + i] * mul
21812 }
21813 mul *= 0x80
21814
21815 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
21816
21817 return val
21818 }
21819
21820 Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
21821 offset = offset >>> 0
21822 byteLength = byteLength >>> 0
21823 if (!noAssert) checkOffset(offset, byteLength, this.length)
21824
21825 var i = byteLength
21826 var mul = 1
21827 var val = this[offset + --i]
21828 while (i > 0 && (mul *= 0x100)) {
21829 val += this[offset + --i] * mul
21830 }
21831 mul *= 0x80
21832
21833 if (val >= mul) val -= Math.pow(2, 8 * byteLength)
21834
21835 return val
21836 }
21837
21838 Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
21839 offset = offset >>> 0
21840 if (!noAssert) checkOffset(offset, 1, this.length)
21841 if (!(this[offset] & 0x80)) return (this[offset])
21842 return ((0xff - this[offset] + 1) * -1)
21843 }
21844
21845 Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
21846 offset = offset >>> 0
21847 if (!noAssert) checkOffset(offset, 2, this.length)
21848 var val = this[offset] | (this[offset + 1] << 8)
21849 return (val & 0x8000) ? val | 0xFFFF0000 : val
21850 }
21851
21852 Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
21853 offset = offset >>> 0
21854 if (!noAssert) checkOffset(offset, 2, this.length)
21855 var val = this[offset + 1] | (this[offset] << 8)
21856 return (val & 0x8000) ? val | 0xFFFF0000 : val
21857 }
21858
21859 Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
21860 offset = offset >>> 0
21861 if (!noAssert) checkOffset(offset, 4, this.length)
21862
21863 return (this[offset]) |
21864 (this[offset + 1] << 8) |
21865 (this[offset + 2] << 16) |
21866 (this[offset + 3] << 24)
21867 }
21868
21869 Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
21870 offset = offset >>> 0
21871 if (!noAssert) checkOffset(offset, 4, this.length)
21872
21873 return (this[offset] << 24) |
21874 (this[offset + 1] << 16) |
21875 (this[offset + 2] << 8) |
21876 (this[offset + 3])
21877 }
21878
21879 Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
21880 offset = offset >>> 0
21881 if (!noAssert) checkOffset(offset, 4, this.length)
21882 return ieee754.read(this, offset, true, 23, 4)
21883 }
21884
21885 Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
21886 offset = offset >>> 0
21887 if (!noAssert) checkOffset(offset, 4, this.length)
21888 return ieee754.read(this, offset, false, 23, 4)
21889 }
21890
21891 Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
21892 offset = offset >>> 0
21893 if (!noAssert) checkOffset(offset, 8, this.length)
21894 return ieee754.read(this, offset, true, 52, 8)
21895 }
21896
21897 Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
21898 offset = offset >>> 0
21899 if (!noAssert) checkOffset(offset, 8, this.length)
21900 return ieee754.read(this, offset, false, 52, 8)
21901 }
21902
21903 function checkInt (buf, value, offset, ext, max, min) {
21904 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
21905 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
21906 if (offset + ext > buf.length) throw new RangeError('Index out of range')
21907 }
21908
21909 Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
21910 value = +value
21911 offset = offset >>> 0
21912 byteLength = byteLength >>> 0
21913 if (!noAssert) {
21914 var maxBytes = Math.pow(2, 8 * byteLength) - 1
21915 checkInt(this, value, offset, byteLength, maxBytes, 0)
21916 }
21917
21918 var mul = 1
21919 var i = 0
21920 this[offset] = value & 0xFF
21921 while (++i < byteLength && (mul *= 0x100)) {
21922 this[offset + i] = (value / mul) & 0xFF
21923 }
21924
21925 return offset + byteLength
21926 }
21927
21928 Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
21929 value = +value
21930 offset = offset >>> 0
21931 byteLength = byteLength >>> 0
21932 if (!noAssert) {
21933 var maxBytes = Math.pow(2, 8 * byteLength) - 1
21934 checkInt(this, value, offset, byteLength, maxBytes, 0)
21935 }
21936
21937 var i = byteLength - 1
21938 var mul = 1
21939 this[offset + i] = value & 0xFF
21940 while (--i >= 0 && (mul *= 0x100)) {
21941 this[offset + i] = (value / mul) & 0xFF
21942 }
21943
21944 return offset + byteLength
21945 }
21946
21947 Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
21948 value = +value
21949 offset = offset >>> 0
21950 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
21951 this[offset] = (value & 0xff)
21952 return offset + 1
21953 }
21954
21955 Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
21956 value = +value
21957 offset = offset >>> 0
21958 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
21959 this[offset] = (value & 0xff)
21960 this[offset + 1] = (value >>> 8)
21961 return offset + 2
21962 }
21963
21964 Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
21965 value = +value
21966 offset = offset >>> 0
21967 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
21968 this[offset] = (value >>> 8)
21969 this[offset + 1] = (value & 0xff)
21970 return offset + 2
21971 }
21972
21973 Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
21974 value = +value
21975 offset = offset >>> 0
21976 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
21977 this[offset + 3] = (value >>> 24)
21978 this[offset + 2] = (value >>> 16)
21979 this[offset + 1] = (value >>> 8)
21980 this[offset] = (value & 0xff)
21981 return offset + 4
21982 }
21983
21984 Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
21985 value = +value
21986 offset = offset >>> 0
21987 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
21988 this[offset] = (value >>> 24)
21989 this[offset + 1] = (value >>> 16)
21990 this[offset + 2] = (value >>> 8)
21991 this[offset + 3] = (value & 0xff)
21992 return offset + 4
21993 }
21994
21995 Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
21996 value = +value
21997 offset = offset >>> 0
21998 if (!noAssert) {
21999 var limit = Math.pow(2, (8 * byteLength) - 1)
22000
22001 checkInt(this, value, offset, byteLength, limit - 1, -limit)
22002 }
22003
22004 var i = 0
22005 var mul = 1
22006 var sub = 0
22007 this[offset] = value & 0xFF
22008 while (++i < byteLength && (mul *= 0x100)) {
22009 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
22010 sub = 1
22011 }
22012 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
22013 }
22014
22015 return offset + byteLength
22016 }
22017
22018 Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
22019 value = +value
22020 offset = offset >>> 0
22021 if (!noAssert) {
22022 var limit = Math.pow(2, (8 * byteLength) - 1)
22023
22024 checkInt(this, value, offset, byteLength, limit - 1, -limit)
22025 }
22026
22027 var i = byteLength - 1
22028 var mul = 1
22029 var sub = 0
22030 this[offset + i] = value & 0xFF
22031 while (--i >= 0 && (mul *= 0x100)) {
22032 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
22033 sub = 1
22034 }
22035 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
22036 }
22037
22038 return offset + byteLength
22039 }
22040
22041 Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
22042 value = +value
22043 offset = offset >>> 0
22044 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
22045 if (value < 0) value = 0xff + value + 1
22046 this[offset] = (value & 0xff)
22047 return offset + 1
22048 }
22049
22050 Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
22051 value = +value
22052 offset = offset >>> 0
22053 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
22054 this[offset] = (value & 0xff)
22055 this[offset + 1] = (value >>> 8)
22056 return offset + 2
22057 }
22058
22059 Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
22060 value = +value
22061 offset = offset >>> 0
22062 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
22063 this[offset] = (value >>> 8)
22064 this[offset + 1] = (value & 0xff)
22065 return offset + 2
22066 }
22067
22068 Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
22069 value = +value
22070 offset = offset >>> 0
22071 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
22072 this[offset] = (value & 0xff)
22073 this[offset + 1] = (value >>> 8)
22074 this[offset + 2] = (value >>> 16)
22075 this[offset + 3] = (value >>> 24)
22076 return offset + 4
22077 }
22078
22079 Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
22080 value = +value
22081 offset = offset >>> 0
22082 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
22083 if (value < 0) value = 0xffffffff + value + 1
22084 this[offset] = (value >>> 24)
22085 this[offset + 1] = (value >>> 16)
22086 this[offset + 2] = (value >>> 8)
22087 this[offset + 3] = (value & 0xff)
22088 return offset + 4
22089 }
22090
22091 function checkIEEE754 (buf, value, offset, ext, max, min) {
22092 if (offset + ext > buf.length) throw new RangeError('Index out of range')
22093 if (offset < 0) throw new RangeError('Index out of range')
22094 }
22095
22096 function writeFloat (buf, value, offset, littleEndian, noAssert) {
22097 value = +value
22098 offset = offset >>> 0
22099 if (!noAssert) {
22100 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
22101 }
22102 ieee754.write(buf, value, offset, littleEndian, 23, 4)
22103 return offset + 4
22104 }
22105
22106 Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
22107 return writeFloat(this, value, offset, true, noAssert)
22108 }
22109
22110 Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
22111 return writeFloat(this, value, offset, false, noAssert)
22112 }
22113
22114 function writeDouble (buf, value, offset, littleEndian, noAssert) {
22115 value = +value
22116 offset = offset >>> 0
22117 if (!noAssert) {
22118 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
22119 }
22120 ieee754.write(buf, value, offset, littleEndian, 52, 8)
22121 return offset + 8
22122 }
22123
22124 Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
22125 return writeDouble(this, value, offset, true, noAssert)
22126 }
22127
22128 Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
22129 return writeDouble(this, value, offset, false, noAssert)
22130 }
22131
22132 // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
22133 Buffer.prototype.copy = function copy (target, targetStart, start, end) {
22134 if (!start) start = 0
22135 if (!end && end !== 0) end = this.length
22136 if (targetStart >= target.length) targetStart = target.length
22137 if (!targetStart) targetStart = 0
22138 if (end > 0 && end < start) end = start
22139
22140 // Copy 0 bytes; we're done
22141 if (end === start) return 0
22142 if (target.length === 0 || this.length === 0) return 0
22143
22144 // Fatal error conditions
22145 if (targetStart < 0) {
22146 throw new RangeError('targetStart out of bounds')
22147 }
22148 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
22149 if (end < 0) throw new RangeError('sourceEnd out of bounds')
22150
22151 // Are we oob?
22152 if (end > this.length) end = this.length
22153 if (target.length - targetStart < end - start) {
22154 end = target.length - targetStart + start
22155 }
22156
22157 var len = end - start
22158 var i
22159
22160 if (this === target && start < targetStart && targetStart < end) {
22161 // descending copy from end
22162 for (i = len - 1; i >= 0; --i) {
22163 target[i + targetStart] = this[i + start]
22164 }
22165 } else if (len < 1000) {
22166 // ascending copy from start
22167 for (i = 0; i < len; ++i) {
22168 target[i + targetStart] = this[i + start]
22169 }
22170 } else {
22171 Uint8Array.prototype.set.call(
22172 target,
22173 this.subarray(start, start + len),
22174 targetStart
22175 )
22176 }
22177
22178 return len
22179 }
22180
22181 // Usage:
22182 // buffer.fill(number[, offset[, end]])
22183 // buffer.fill(buffer[, offset[, end]])
22184 // buffer.fill(string[, offset[, end]][, encoding])
22185 Buffer.prototype.fill = function fill (val, start, end, encoding) {
22186 // Handle string cases:
22187 if (typeof val === 'string') {
22188 if (typeof start === 'string') {
22189 encoding = start
22190 start = 0
22191 end = this.length
22192 } else if (typeof end === 'string') {
22193 encoding = end
22194 end = this.length
22195 }
22196 if (val.length === 1) {
22197 var code = val.charCodeAt(0)
22198 if (code < 256) {
22199 val = code
22200 }
22201 }
22202 if (encoding !== undefined && typeof encoding !== 'string') {
22203 throw new TypeError('encoding must be a string')
22204 }
22205 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
22206 throw new TypeError('Unknown encoding: ' + encoding)
22207 }
22208 } else if (typeof val === 'number') {
22209 val = val & 255
22210 }
22211
22212 // Invalid ranges are not set to a default, so can range check early.
22213 if (start < 0 || this.length < start || this.length < end) {
22214 throw new RangeError('Out of range index')
22215 }
22216
22217 if (end <= start) {
22218 return this
22219 }
22220
22221 start = start >>> 0
22222 end = end === undefined ? this.length : end >>> 0
22223
22224 if (!val) val = 0
22225
22226 var i
22227 if (typeof val === 'number') {
22228 for (i = start; i < end; ++i) {
22229 this[i] = val
22230 }
22231 } else {
22232 var bytes = Buffer.isBuffer(val)
22233 ? val
22234 : new Buffer(val, encoding)
22235 var len = bytes.length
22236 for (i = 0; i < end - start; ++i) {
22237 this[i + start] = bytes[i % len]
22238 }
22239 }
22240
22241 return this
22242 }
22243
22244 // HELPER FUNCTIONS
22245 // ================
22246
22247 var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
22248
22249 function base64clean (str) {
22250 // Node strips out invalid characters like \n and \t from the string, base64-js does not
22251 str = stringtrim(str).replace(INVALID_BASE64_RE, '')
22252 // Node converts strings with length < 2 to ''
22253 if (str.length < 2) return ''
22254 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
22255 while (str.length % 4 !== 0) {
22256 str = str + '='
22257 }
22258 return str
22259 }
22260
22261 function stringtrim (str) {
22262 if (str.trim) return str.trim()
22263 return str.replace(/^\s+|\s+$/g, '')
22264 }
22265
22266 function toHex (n) {
22267 if (n < 16) return '0' + n.toString(16)
22268 return n.toString(16)
22269 }
22270
22271 function utf8ToBytes (string, units) {
22272 units = units || Infinity
22273 var codePoint
22274 var length = string.length
22275 var leadSurrogate = null
22276 var bytes = []
22277
22278 for (var i = 0; i < length; ++i) {
22279 codePoint = string.charCodeAt(i)
22280
22281 // is surrogate component
22282 if (codePoint > 0xD7FF && codePoint < 0xE000) {
22283 // last char was a lead
22284 if (!leadSurrogate) {
22285 // no lead yet
22286 if (codePoint > 0xDBFF) {
22287 // unexpected trail
22288 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
22289 continue
22290 } else if (i + 1 === length) {
22291 // unpaired lead
22292 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
22293 continue
22294 }
22295
22296 // valid lead
22297 leadSurrogate = codePoint
22298
22299 continue
22300 }
22301
22302 // 2 leads in a row
22303 if (codePoint < 0xDC00) {
22304 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
22305 leadSurrogate = codePoint
22306 continue
22307 }
22308
22309 // valid surrogate pair
22310 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
22311 } else if (leadSurrogate) {
22312 // valid bmp char, but last char was a lead
22313 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
22314 }
22315
22316 leadSurrogate = null
22317
22318 // encode utf8
22319 if (codePoint < 0x80) {
22320 if ((units -= 1) < 0) break
22321 bytes.push(codePoint)
22322 } else if (codePoint < 0x800) {
22323 if ((units -= 2) < 0) break
22324 bytes.push(
22325 codePoint >> 0x6 | 0xC0,
22326 codePoint & 0x3F | 0x80
22327 )
22328 } else if (codePoint < 0x10000) {
22329 if ((units -= 3) < 0) break
22330 bytes.push(
22331 codePoint >> 0xC | 0xE0,
22332 codePoint >> 0x6 & 0x3F | 0x80,
22333 codePoint & 0x3F | 0x80
22334 )
22335 } else if (codePoint < 0x110000) {
22336 if ((units -= 4) < 0) break
22337 bytes.push(
22338 codePoint >> 0x12 | 0xF0,
22339 codePoint >> 0xC & 0x3F | 0x80,
22340 codePoint >> 0x6 & 0x3F | 0x80,
22341 codePoint & 0x3F | 0x80
22342 )
22343 } else {
22344 throw new Error('Invalid code point')
22345 }
22346 }
22347
22348 return bytes
22349 }
22350
22351 function asciiToBytes (str) {
22352 var byteArray = []
22353 for (var i = 0; i < str.length; ++i) {
22354 // Node's code seems to be doing this and not & 0x7F..
22355 byteArray.push(str.charCodeAt(i) & 0xFF)
22356 }
22357 return byteArray
22358 }
22359
22360 function utf16leToBytes (str, units) {
22361 var c, hi, lo
22362 var byteArray = []
22363 for (var i = 0; i < str.length; ++i) {
22364 if ((units -= 2) < 0) break
22365
22366 c = str.charCodeAt(i)
22367 hi = c >> 8
22368 lo = c % 256
22369 byteArray.push(lo)
22370 byteArray.push(hi)
22371 }
22372
22373 return byteArray
22374 }
22375
22376 function base64ToBytes (str) {
22377 return base64.toByteArray(base64clean(str))
22378 }
22379
22380 function blitBuffer (src, dst, offset, length) {
22381 for (var i = 0; i < length; ++i) {
22382 if ((i + offset >= dst.length) || (i >= src.length)) break
22383 dst[i + offset] = src[i]
22384 }
22385 return i
22386 }
22387
22388 function isnan (val) {
22389 return val !== val // eslint-disable-line no-self-compare
22390 }
22391
22392 },{"base64-js":2,"ieee754":8}],6:[function(require,module,exports){
22393 (function (Buffer){
22394 // Copyright Joyent, Inc. and other Node contributors.
22395 //
22396 // Permission is hereby granted, free of charge, to any person obtaining a
22397 // copy of this software and associated documentation files (the
22398 // "Software"), to deal in the Software without restriction, including
22399 // without limitation the rights to use, copy, modify, merge, publish,
22400 // distribute, sublicense, and/or sell copies of the Software, and to permit
22401 // persons to whom the Software is furnished to do so, subject to the
22402 // following conditions:
22403 //
22404 // The above copyright notice and this permission notice shall be included
22405 // in all copies or substantial portions of the Software.
22406 //
22407 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
22408 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22409 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
22410 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
22411 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
22412 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
22413 // USE OR OTHER DEALINGS IN THE SOFTWARE.
22414
22415 // NOTE: These type checking functions intentionally don't use `instanceof`
22416 // because it is fragile and can be easily faked with `Object.create()`.
22417
22418 function isArray(arg) {
22419 if (Array.isArray) {
22420 return Array.isArray(arg);
22421 }
22422 return objectToString(arg) === '[object Array]';
22423 }
22424 exports.isArray = isArray;
22425
22426 function isBoolean(arg) {
22427 return typeof arg === 'boolean';
22428 }
22429 exports.isBoolean = isBoolean;
22430
22431 function isNull(arg) {
22432 return arg === null;
22433 }
22434 exports.isNull = isNull;
22435
22436 function isNullOrUndefined(arg) {
22437 return arg == null;
22438 }
22439 exports.isNullOrUndefined = isNullOrUndefined;
22440
22441 function isNumber(arg) {
22442 return typeof arg === 'number';
22443 }
22444 exports.isNumber = isNumber;
22445
22446 function isString(arg) {
22447 return typeof arg === 'string';
22448 }
22449 exports.isString = isString;
22450
22451 function isSymbol(arg) {
22452 return typeof arg === 'symbol';
22453 }
22454 exports.isSymbol = isSymbol;
22455
22456 function isUndefined(arg) {
22457 return arg === void 0;
22458 }
22459 exports.isUndefined = isUndefined;
22460
22461 function isRegExp(re) {
22462 return objectToString(re) === '[object RegExp]';
22463 }
22464 exports.isRegExp = isRegExp;
22465
22466 function isObject(arg) {
22467 return typeof arg === 'object' && arg !== null;
22468 }
22469 exports.isObject = isObject;
22470
22471 function isDate(d) {
22472 return objectToString(d) === '[object Date]';
22473 }
22474 exports.isDate = isDate;
22475
22476 function isError(e) {
22477 return (objectToString(e) === '[object Error]' || e instanceof Error);
22478 }
22479 exports.isError = isError;
22480
22481 function isFunction(arg) {
22482 return typeof arg === 'function';
22483 }
22484 exports.isFunction = isFunction;
22485
22486 function isPrimitive(arg) {
22487 return arg === null ||
22488 typeof arg === 'boolean' ||
22489 typeof arg === 'number' ||
22490 typeof arg === 'string' ||
22491 typeof arg === 'symbol' || // ES6 symbol
22492 typeof arg === 'undefined';
22493 }
22494 exports.isPrimitive = isPrimitive;
22495
22496 exports.isBuffer = Buffer.isBuffer;
22497
22498 function objectToString(o) {
22499 return Object.prototype.toString.call(o);
22500 }
22501
22502 }).call(this,{"isBuffer":require("../../is-buffer/index.js")})
22503 },{"../../is-buffer/index.js":10}],7:[function(require,module,exports){
22504 // Copyright Joyent, Inc. and other Node contributors.
22505 //
22506 // Permission is hereby granted, free of charge, to any person obtaining a
22507 // copy of this software and associated documentation files (the
22508 // "Software"), to deal in the Software without restriction, including
22509 // without limitation the rights to use, copy, modify, merge, publish,
22510 // distribute, sublicense, and/or sell copies of the Software, and to permit
22511 // persons to whom the Software is furnished to do so, subject to the
22512 // following conditions:
22513 //
22514 // The above copyright notice and this permission notice shall be included
22515 // in all copies or substantial portions of the Software.
22516 //
22517 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
22518 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22519 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
22520 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
22521 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
22522 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
22523 // USE OR OTHER DEALINGS IN THE SOFTWARE.
22524
22525 function EventEmitter() {
22526 this._events = this._events || {};
22527 this._maxListeners = this._maxListeners || undefined;
22528 }
22529 module.exports = EventEmitter;
22530
22531 // Backwards-compat with node 0.10.x
22532 EventEmitter.EventEmitter = EventEmitter;
22533
22534 EventEmitter.prototype._events = undefined;
22535 EventEmitter.prototype._maxListeners = undefined;
22536
22537 // By default EventEmitters will print a warning if more than 10 listeners are
22538 // added to it. This is a useful default which helps finding memory leaks.
22539 EventEmitter.defaultMaxListeners = 10;
22540
22541 // Obviously not all Emitters should be limited to 10. This function allows
22542 // that to be increased. Set to zero for unlimited.
22543 EventEmitter.prototype.setMaxListeners = function(n) {
22544 if (!isNumber(n) || n < 0 || isNaN(n))
22545 throw TypeError('n must be a positive number');
22546 this._maxListeners = n;
22547 return this;
22548 };
22549
22550 EventEmitter.prototype.emit = function(type) {
22551 var er, handler, len, args, i, listeners;
22552
22553 if (!this._events)
22554 this._events = {};
22555
22556 // If there is no 'error' event listener then throw.
22557 if (type === 'error') {
22558 if (!this._events.error ||
22559 (isObject(this._events.error) && !this._events.error.length)) {
22560 er = arguments[1];
22561 if (er instanceof Error) {
22562 throw er; // Unhandled 'error' event
22563 } else {
22564 // At least give some kind of context to the user
22565 var err = new Error('Uncaught, unspecified "error" event. (' + er + ')');
22566 err.context = er;
22567 throw err;
22568 }
22569 }
22570 }
22571
22572 handler = this._events[type];
22573
22574 if (isUndefined(handler))
22575 return false;
22576
22577 if (isFunction(handler)) {
22578 switch (arguments.length) {
22579 // fast cases
22580 case 1:
22581 handler.call(this);
22582 break;
22583 case 2:
22584 handler.call(this, arguments[1]);
22585 break;
22586 case 3:
22587 handler.call(this, arguments[1], arguments[2]);
22588 break;
22589 // slower
22590 default:
22591 args = Array.prototype.slice.call(arguments, 1);
22592 handler.apply(this, args);
22593 }
22594 } else if (isObject(handler)) {
22595 args = Array.prototype.slice.call(arguments, 1);
22596 listeners = handler.slice();
22597 len = listeners.length;
22598 for (i = 0; i < len; i++)
22599 listeners[i].apply(this, args);
22600 }
22601
22602 return true;
22603 };
22604
22605 EventEmitter.prototype.addListener = function(type, listener) {
22606 var m;
22607
22608 if (!isFunction(listener))
22609 throw TypeError('listener must be a function');
22610
22611 if (!this._events)
22612 this._events = {};
22613
22614 // To avoid recursion in the case that type === "newListener"! Before
22615 // adding it to the listeners, first emit "newListener".
22616 if (this._events.newListener)
22617 this.emit('newListener', type,
22618 isFunction(listener.listener) ?
22619 listener.listener : listener);
22620
22621 if (!this._events[type])
22622 // Optimize the case of one listener. Don't need the extra array object.
22623 this._events[type] = listener;
22624 else if (isObject(this._events[type]))
22625 // If we've already got an array, just append.
22626 this._events[type].push(listener);
22627 else
22628 // Adding the second element, need to change to array.
22629 this._events[type] = [this._events[type], listener];
22630
22631 // Check for listener leak
22632 if (isObject(this._events[type]) && !this._events[type].warned) {
22633 if (!isUndefined(this._maxListeners)) {
22634 m = this._maxListeners;
22635 } else {
22636 m = EventEmitter.defaultMaxListeners;
22637 }
22638
22639 if (m && m > 0 && this._events[type].length > m) {
22640 this._events[type].warned = true;
22641 console.error('(node) warning: possible EventEmitter memory ' +
22642 'leak detected. %d listeners added. ' +
22643 'Use emitter.setMaxListeners() to increase limit.',
22644 this._events[type].length);
22645 if (typeof console.trace === 'function') {
22646 // not supported in IE 10
22647 console.trace();
22648 }
22649 }
22650 }
22651
22652 return this;
22653 };
22654
22655 EventEmitter.prototype.on = EventEmitter.prototype.addListener;
22656
22657 EventEmitter.prototype.once = function(type, listener) {
22658 if (!isFunction(listener))
22659 throw TypeError('listener must be a function');
22660
22661 var fired = false;
22662
22663 function g() {
22664 this.removeListener(type, g);
22665
22666 if (!fired) {
22667 fired = true;
22668 listener.apply(this, arguments);
22669 }
22670 }
22671
22672 g.listener = listener;
22673 this.on(type, g);
22674
22675 return this;
22676 };
22677
22678 // emits a 'removeListener' event iff the listener was removed
22679 EventEmitter.prototype.removeListener = function(type, listener) {
22680 var list, position, length, i;
22681
22682 if (!isFunction(listener))
22683 throw TypeError('listener must be a function');
22684
22685 if (!this._events || !this._events[type])
22686 return this;
22687
22688 list = this._events[type];
22689 length = list.length;
22690 position = -1;
22691
22692 if (list === listener ||
22693 (isFunction(list.listener) && list.listener === listener)) {
22694 delete this._events[type];
22695 if (this._events.removeListener)
22696 this.emit('removeListener', type, listener);
22697
22698 } else if (isObject(list)) {
22699 for (i = length; i-- > 0;) {
22700 if (list[i] === listener ||
22701 (list[i].listener && list[i].listener === listener)) {
22702 position = i;
22703 break;
22704 }
22705 }
22706
22707 if (position < 0)
22708 return this;
22709
22710 if (list.length === 1) {
22711 list.length = 0;
22712 delete this._events[type];
22713 } else {
22714 list.splice(position, 1);
22715 }
22716
22717 if (this._events.removeListener)
22718 this.emit('removeListener', type, listener);
22719 }
22720
22721 return this;
22722 };
22723
22724 EventEmitter.prototype.removeAllListeners = function(type) {
22725 var key, listeners;
22726
22727 if (!this._events)
22728 return this;
22729
22730 // not listening for removeListener, no need to emit
22731 if (!this._events.removeListener) {
22732 if (arguments.length === 0)
22733 this._events = {};
22734 else if (this._events[type])
22735 delete this._events[type];
22736 return this;
22737 }
22738
22739 // emit removeListener for all listeners on all events
22740 if (arguments.length === 0) {
22741 for (key in this._events) {
22742 if (key === 'removeListener') continue;
22743 this.removeAllListeners(key);
22744 }
22745 this.removeAllListeners('removeListener');
22746 this._events = {};
22747 return this;
22748 }
22749
22750 listeners = this._events[type];
22751
22752 if (isFunction(listeners)) {
22753 this.removeListener(type, listeners);
22754 } else if (listeners) {
22755 // LIFO order
22756 while (listeners.length)
22757 this.removeListener(type, listeners[listeners.length - 1]);
22758 }
22759 delete this._events[type];
22760
22761 return this;
22762 };
22763
22764 EventEmitter.prototype.listeners = function(type) {
22765 var ret;
22766 if (!this._events || !this._events[type])
22767 ret = [];
22768 else if (isFunction(this._events[type]))
22769 ret = [this._events[type]];
22770 else
22771 ret = this._events[type].slice();
22772 return ret;
22773 };
22774
22775 EventEmitter.prototype.listenerCount = function(type) {
22776 if (this._events) {
22777 var evlistener = this._events[type];
22778
22779 if (isFunction(evlistener))
22780 return 1;
22781 else if (evlistener)
22782 return evlistener.length;
22783 }
22784 return 0;
22785 };
22786
22787 EventEmitter.listenerCount = function(emitter, type) {
22788 return emitter.listenerCount(type);
22789 };
22790
22791 function isFunction(arg) {
22792 return typeof arg === 'function';
22793 }
22794
22795 function isNumber(arg) {
22796 return typeof arg === 'number';
22797 }
22798
22799 function isObject(arg) {
22800 return typeof arg === 'object' && arg !== null;
22801 }
22802
22803 function isUndefined(arg) {
22804 return arg === void 0;
22805 }
22806
22807 },{}],8:[function(require,module,exports){
22808 exports.read = function (buffer, offset, isLE, mLen, nBytes) {
22809 var e, m
22810 var eLen = nBytes * 8 - mLen - 1
22811 var eMax = (1 << eLen) - 1
22812 var eBias = eMax >> 1
22813 var nBits = -7
22814 var i = isLE ? (nBytes - 1) : 0
22815 var d = isLE ? -1 : 1
22816 var s = buffer[offset + i]
22817
22818 i += d
22819
22820 e = s & ((1 << (-nBits)) - 1)
22821 s >>= (-nBits)
22822 nBits += eLen
22823 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
22824
22825 m = e & ((1 << (-nBits)) - 1)
22826 e >>= (-nBits)
22827 nBits += mLen
22828 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
22829
22830 if (e === 0) {
22831 e = 1 - eBias
22832 } else if (e === eMax) {
22833 return m ? NaN : ((s ? -1 : 1) * Infinity)
22834 } else {
22835 m = m + Math.pow(2, mLen)
22836 e = e - eBias
22837 }
22838 return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
22839 }
22840
22841 exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
22842 var e, m, c
22843 var eLen = nBytes * 8 - mLen - 1
22844 var eMax = (1 << eLen) - 1
22845 var eBias = eMax >> 1
22846 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
22847 var i = isLE ? 0 : (nBytes - 1)
22848 var d = isLE ? 1 : -1
22849 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
22850
22851 value = Math.abs(value)
22852
22853 if (isNaN(value) || value === Infinity) {
22854 m = isNaN(value) ? 1 : 0
22855 e = eMax
22856 } else {
22857 e = Math.floor(Math.log(value) / Math.LN2)
22858 if (value * (c = Math.pow(2, -e)) < 1) {
22859 e--
22860 c *= 2
22861 }
22862 if (e + eBias >= 1) {
22863 value += rt / c
22864 } else {
22865 value += rt * Math.pow(2, 1 - eBias)
22866 }
22867 if (value * c >= 2) {
22868 e++
22869 c /= 2
22870 }
22871
22872 if (e + eBias >= eMax) {
22873 m = 0
22874 e = eMax
22875 } else if (e + eBias >= 1) {
22876 m = (value * c - 1) * Math.pow(2, mLen)
22877 e = e + eBias
22878 } else {
22879 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
22880 e = 0
22881 }
22882 }
22883
22884 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
22885
22886 e = (e << mLen) | m
22887 eLen += mLen
22888 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
22889
22890 buffer[offset + i - d] |= s * 128
22891 }
22892
22893 },{}],9:[function(require,module,exports){
22894 if (typeof Object.create === 'function') {
22895 // implementation from standard node.js 'util' module
22896 module.exports = function inherits(ctor, superCtor) {
22897 ctor.super_ = superCtor
22898 ctor.prototype = Object.create(superCtor.prototype, {
22899 constructor: {
22900 value: ctor,
22901 enumerable: false,
22902 writable: true,
22903 configurable: true
22904 }
22905 });
22906 };
22907 } else {
22908 // old school shim for old browsers
22909 module.exports = function inherits(ctor, superCtor) {
22910 ctor.super_ = superCtor
22911 var TempCtor = function () {}
22912 TempCtor.prototype = superCtor.prototype
22913 ctor.prototype = new TempCtor()
22914 ctor.prototype.constructor = ctor
22915 }
22916 }
22917
22918 },{}],10:[function(require,module,exports){
22919 /*!
22920 * Determine if an object is a Buffer
22921 *
22922 * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
22923 * @license MIT
22924 */
22925
22926 // The _isBuffer check is for Safari 5-7 support, because it's missing
22927 // Object.prototype.constructor. Remove this eventually
22928 module.exports = function (obj) {
22929 return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)
22930 }
22931
22932 function isBuffer (obj) {
22933 return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
22934 }
22935
22936 // For Node v0.10 support. Remove this eventually.
22937 function isSlowBuffer (obj) {
22938 return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))
22939 }
22940
22941 },{}],11:[function(require,module,exports){
22942 var toString = {}.toString;
22943
22944 module.exports = Array.isArray || function (arr) {
22945 return toString.call(arr) == '[object Array]';
22946 };
22947
22948 },{}],12:[function(require,module,exports){
22949 (function (process){
22950 'use strict';
22951
22952 if (!process.version ||
22953 process.version.indexOf('v0.') === 0 ||
22954 process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
22955 module.exports = nextTick;
22956 } else {
22957 module.exports = process.nextTick;
22958 }
22959
22960 function nextTick(fn, arg1, arg2, arg3) {
22961 if (typeof fn !== 'function') {
22962 throw new TypeError('"callback" argument must be a function');
22963 }
22964 var len = arguments.length;
22965 var args, i;
22966 switch (len) {
22967 case 0:
22968 case 1:
22969 return process.nextTick(fn);
22970 case 2:
22971 return process.nextTick(function afterTickOne() {
22972 fn.call(null, arg1);
22973 });
22974 case 3:
22975 return process.nextTick(function afterTickTwo() {
22976 fn.call(null, arg1, arg2);
22977 });
22978 case 4:
22979 return process.nextTick(function afterTickThree() {
22980 fn.call(null, arg1, arg2, arg3);
22981 });
22982 default:
22983 args = new Array(len - 1);
22984 i = 0;
22985 while (i < args.length) {
22986 args[i++] = arguments[i];
22987 }
22988 return process.nextTick(function afterTick() {
22989 fn.apply(null, args);
22990 });
22991 }
22992 }
22993
22994 }).call(this,require('_process'))
22995 },{"_process":13}],13:[function(require,module,exports){
22996 // shim for using process in browser
22997 var process = module.exports = {};
22998
22999 // cached from whatever global is present so that test runners that stub it
23000 // don't break things. But we need to wrap it in a try catch in case it is
23001 // wrapped in strict mode code which doesn't define any globals. It's inside a
23002 // function because try/catches deoptimize in certain engines.
23003
23004 var cachedSetTimeout;
23005 var cachedClearTimeout;
23006
23007 function defaultSetTimout() {
23008 throw new Error('setTimeout has not been defined');
23009 }
23010 function defaultClearTimeout () {
23011 throw new Error('clearTimeout has not been defined');
23012 }
23013 (function () {
23014 try {
23015 if (typeof setTimeout === 'function') {
23016 cachedSetTimeout = setTimeout;
23017 } else {
23018 cachedSetTimeout = defaultSetTimout;
23019 }
23020 } catch (e) {
23021 cachedSetTimeout = defaultSetTimout;
23022 }
23023 try {
23024 if (typeof clearTimeout === 'function') {
23025 cachedClearTimeout = clearTimeout;
23026 } else {
23027 cachedClearTimeout = defaultClearTimeout;
23028 }
23029 } catch (e) {
23030 cachedClearTimeout = defaultClearTimeout;
23031 }
23032 } ())
23033 function runTimeout(fun) {
23034 if (cachedSetTimeout === setTimeout) {
23035 //normal enviroments in sane situations
23036 return setTimeout(fun, 0);
23037 }
23038 // if setTimeout wasn't available but was latter defined
23039 if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
23040 cachedSetTimeout = setTimeout;
23041 return setTimeout(fun, 0);
23042 }
23043 try {
23044 // when when somebody has screwed with setTimeout but no I.E. maddness
23045 return cachedSetTimeout(fun, 0);
23046 } catch(e){
23047 try {
23048 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
23049 return cachedSetTimeout.call(null, fun, 0);
23050 } catch(e){
23051 // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
23052 return cachedSetTimeout.call(this, fun, 0);
23053 }
23054 }
23055
23056
23057 }
23058 function runClearTimeout(marker) {
23059 if (cachedClearTimeout === clearTimeout) {
23060 //normal enviroments in sane situations
23061 return clearTimeout(marker);
23062 }
23063 // if clearTimeout wasn't available but was latter defined
23064 if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
23065 cachedClearTimeout = clearTimeout;
23066 return clearTimeout(marker);
23067 }
23068 try {
23069 // when when somebody has screwed with setTimeout but no I.E. maddness
23070 return cachedClearTimeout(marker);
23071 } catch (e){
23072 try {
23073 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
23074 return cachedClearTimeout.call(null, marker);
23075 } catch (e){
23076 // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
23077 // Some versions of I.E. have different rules for clearTimeout vs setTimeout
23078 return cachedClearTimeout.call(this, marker);
23079 }
23080 }
23081
23082
23083
23084 }
23085 var queue = [];
23086 var draining = false;
23087 var currentQueue;
23088 var queueIndex = -1;
23089
23090 function cleanUpNextTick() {
23091 if (!draining || !currentQueue) {
23092 return;
23093 }
23094 draining = false;
23095 if (currentQueue.length) {
23096 queue = currentQueue.concat(queue);
23097 } else {
23098 queueIndex = -1;
23099 }
23100 if (queue.length) {
23101 drainQueue();
23102 }
23103 }
23104
23105 function drainQueue() {
23106 if (draining) {
23107 return;
23108 }
23109 var timeout = runTimeout(cleanUpNextTick);
23110 draining = true;
23111
23112 var len = queue.length;
23113 while(len) {
23114 currentQueue = queue;
23115 queue = [];
23116 while (++queueIndex < len) {
23117 if (currentQueue) {
23118 currentQueue[queueIndex].run();
23119 }
23120 }
23121 queueIndex = -1;
23122 len = queue.length;
23123 }
23124 currentQueue = null;
23125 draining = false;
23126 runClearTimeout(timeout);
23127 }
23128
23129 process.nextTick = function (fun) {
23130 var args = new Array(arguments.length - 1);
23131 if (arguments.length > 1) {
23132 for (var i = 1; i < arguments.length; i++) {
23133 args[i - 1] = arguments[i];
23134 }
23135 }
23136 queue.push(new Item(fun, args));
23137 if (queue.length === 1 && !draining) {
23138 runTimeout(drainQueue);
23139 }
23140 };
23141
23142 // v8 likes predictible objects
23143 function Item(fun, array) {
23144 this.fun = fun;
23145 this.array = array;
23146 }
23147 Item.prototype.run = function () {
23148 this.fun.apply(null, this.array);
23149 };
23150 process.title = 'browser';
23151 process.browser = true;
23152 process.env = {};
23153 process.argv = [];
23154 process.version = ''; // empty string to avoid regexp issues
23155 process.versions = {};
23156
23157 function noop() {}
23158
23159 process.on = noop;
23160 process.addListener = noop;
23161 process.once = noop;
23162 process.off = noop;
23163 process.removeListener = noop;
23164 process.removeAllListeners = noop;
23165 process.emit = noop;
23166
23167 process.binding = function (name) {
23168 throw new Error('process.binding is not supported');
23169 };
23170
23171 process.cwd = function () { return '/' };
23172 process.chdir = function (dir) {
23173 throw new Error('process.chdir is not supported');
23174 };
23175 process.umask = function() { return 0; };
23176
23177 },{}],14:[function(require,module,exports){
23178 module.exports = require("./lib/_stream_duplex.js")
23179
23180 },{"./lib/_stream_duplex.js":15}],15:[function(require,module,exports){
23181 // a duplex stream is just a stream that is both readable and writable.
23182 // Since JS doesn't have multiple prototypal inheritance, this class
23183 // prototypally inherits from Readable, and then parasitically from
23184 // Writable.
23185
23186 'use strict';
23187
23188 /*<replacement>*/
23189
23190 var objectKeys = Object.keys || function (obj) {
23191 var keys = [];
23192 for (var key in obj) {
23193 keys.push(key);
23194 }return keys;
23195 };
23196 /*</replacement>*/
23197
23198 module.exports = Duplex;
23199
23200 /*<replacement>*/
23201 var processNextTick = require('process-nextick-args');
23202 /*</replacement>*/
23203
23204 /*<replacement>*/
23205 var util = require('core-util-is');
23206 util.inherits = require('inherits');
23207 /*</replacement>*/
23208
23209 var Readable = require('./_stream_readable');
23210 var Writable = require('./_stream_writable');
23211
23212 util.inherits(Duplex, Readable);
23213
23214 var keys = objectKeys(Writable.prototype);
23215 for (var v = 0; v < keys.length; v++) {
23216 var method = keys[v];
23217 if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
23218 }
23219
23220 function Duplex(options) {
23221 if (!(this instanceof Duplex)) return new Duplex(options);
23222
23223 Readable.call(this, options);
23224 Writable.call(this, options);
23225
23226 if (options && options.readable === false) this.readable = false;
23227
23228 if (options && options.writable === false) this.writable = false;
23229
23230 this.allowHalfOpen = true;
23231 if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
23232
23233 this.once('end', onend);
23234 }
23235
23236 // the no-half-open enforcer
23237 function onend() {
23238 // if we allow half-open state, or if the writable side ended,
23239 // then we're ok.
23240 if (this.allowHalfOpen || this._writableState.ended) return;
23241
23242 // no more data can be written.
23243 // But allow more writes to happen in this tick.
23244 processNextTick(onEndNT, this);
23245 }
23246
23247 function onEndNT(self) {
23248 self.end();
23249 }
23250
23251 function forEach(xs, f) {
23252 for (var i = 0, l = xs.length; i < l; i++) {
23253 f(xs[i], i);
23254 }
23255 }
23256 },{"./_stream_readable":17,"./_stream_writable":19,"core-util-is":6,"inherits":9,"process-nextick-args":12}],16:[function(require,module,exports){
23257 // a passthrough stream.
23258 // basically just the most minimal sort of Transform stream.
23259 // Every written chunk gets output as-is.
23260
23261 'use strict';
23262
23263 module.exports = PassThrough;
23264
23265 var Transform = require('./_stream_transform');
23266
23267 /*<replacement>*/
23268 var util = require('core-util-is');
23269 util.inherits = require('inherits');
23270 /*</replacement>*/
23271
23272 util.inherits(PassThrough, Transform);
23273
23274 function PassThrough(options) {
23275 if (!(this instanceof PassThrough)) return new PassThrough(options);
23276
23277 Transform.call(this, options);
23278 }
23279
23280 PassThrough.prototype._transform = function (chunk, encoding, cb) {
23281 cb(null, chunk);
23282 };
23283 },{"./_stream_transform":18,"core-util-is":6,"inherits":9}],17:[function(require,module,exports){
23284 (function (process){
23285 'use strict';
23286
23287 module.exports = Readable;
23288
23289 /*<replacement>*/
23290 var processNextTick = require('process-nextick-args');
23291 /*</replacement>*/
23292
23293 /*<replacement>*/
23294 var isArray = require('isarray');
23295 /*</replacement>*/
23296
23297 /*<replacement>*/
23298 var Duplex;
23299 /*</replacement>*/
23300
23301 Readable.ReadableState = ReadableState;
23302
23303 /*<replacement>*/
23304 var EE = require('events').EventEmitter;
23305
23306 var EElistenerCount = function (emitter, type) {
23307 return emitter.listeners(type).length;
23308 };
23309 /*</replacement>*/
23310
23311 /*<replacement>*/
23312 var Stream;
23313 (function () {
23314 try {
23315 Stream = require('st' + 'ream');
23316 } catch (_) {} finally {
23317 if (!Stream) Stream = require('events').EventEmitter;
23318 }
23319 })();
23320 /*</replacement>*/
23321
23322 var Buffer = require('buffer').Buffer;
23323 /*<replacement>*/
23324 var bufferShim = require('buffer-shims');
23325 /*</replacement>*/
23326
23327 /*<replacement>*/
23328 var util = require('core-util-is');
23329 util.inherits = require('inherits');
23330 /*</replacement>*/
23331
23332 /*<replacement>*/
23333 var debugUtil = require('util');
23334 var debug = void 0;
23335 if (debugUtil && debugUtil.debuglog) {
23336 debug = debugUtil.debuglog('stream');
23337 } else {
23338 debug = function () {};
23339 }
23340 /*</replacement>*/
23341
23342 var BufferList = require('./internal/streams/BufferList');
23343 var StringDecoder;
23344
23345 util.inherits(Readable, Stream);
23346
23347 function prependListener(emitter, event, fn) {
23348 // Sadly this is not cacheable as some libraries bundle their own
23349 // event emitter implementation with them.
23350 if (typeof emitter.prependListener === 'function') {
23351 return emitter.prependListener(event, fn);
23352 } else {
23353 // This is a hack to make sure that our error handler is attached before any
23354 // userland ones. NEVER DO THIS. This is here only because this code needs
23355 // to continue to work with older versions of Node.js that do not include
23356 // the prependListener() method. The goal is to eventually remove this hack.
23357 if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];
23358 }
23359 }
23360
23361 function ReadableState(options, stream) {
23362 Duplex = Duplex || require('./_stream_duplex');
23363
23364 options = options || {};
23365
23366 // object stream flag. Used to make read(n) ignore n and to
23367 // make all the buffer merging and length checks go away
23368 this.objectMode = !!options.objectMode;
23369
23370 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
23371
23372 // the point at which it stops calling _read() to fill the buffer
23373 // Note: 0 is a valid value, means "don't call _read preemptively ever"
23374 var hwm = options.highWaterMark;
23375 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
23376 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
23377
23378 // cast to ints.
23379 this.highWaterMark = ~ ~this.highWaterMark;
23380
23381 // A linked list is used to store data chunks instead of an array because the
23382 // linked list can remove elements from the beginning faster than
23383 // array.shift()
23384 this.buffer = new BufferList();
23385 this.length = 0;
23386 this.pipes = null;
23387 this.pipesCount = 0;
23388 this.flowing = null;
23389 this.ended = false;
23390 this.endEmitted = false;
23391 this.reading = false;
23392
23393 // a flag to be able to tell if the onwrite cb is called immediately,
23394 // or on a later tick. We set this to true at first, because any
23395 // actions that shouldn't happen until "later" should generally also
23396 // not happen before the first write call.
23397 this.sync = true;
23398
23399 // whenever we return null, then we set a flag to say
23400 // that we're awaiting a 'readable' event emission.
23401 this.needReadable = false;
23402 this.emittedReadable = false;
23403 this.readableListening = false;
23404 this.resumeScheduled = false;
23405
23406 // Crypto is kind of old and crusty. Historically, its default string
23407 // encoding is 'binary' so we have to make this configurable.
23408 // Everything else in the universe uses 'utf8', though.
23409 this.defaultEncoding = options.defaultEncoding || 'utf8';
23410
23411 // when piping, we only care about 'readable' events that happen
23412 // after read()ing all the bytes and not getting any pushback.
23413 this.ranOut = false;
23414
23415 // the number of writers that are awaiting a drain event in .pipe()s
23416 this.awaitDrain = 0;
23417
23418 // if true, a maybeReadMore has been scheduled
23419 this.readingMore = false;
23420
23421 this.decoder = null;
23422 this.encoding = null;
23423 if (options.encoding) {
23424 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
23425 this.decoder = new StringDecoder(options.encoding);
23426 this.encoding = options.encoding;
23427 }
23428 }
23429
23430 function Readable(options) {
23431 Duplex = Duplex || require('./_stream_duplex');
23432
23433 if (!(this instanceof Readable)) return new Readable(options);
23434
23435 this._readableState = new ReadableState(options, this);
23436
23437 // legacy
23438 this.readable = true;
23439
23440 if (options && typeof options.read === 'function') this._read = options.read;
23441
23442 Stream.call(this);
23443 }
23444
23445 // Manually shove something into the read() buffer.
23446 // This returns true if the highWaterMark has not been hit yet,
23447 // similar to how Writable.write() returns true if you should
23448 // write() some more.
23449 Readable.prototype.push = function (chunk, encoding) {
23450 var state = this._readableState;
23451
23452 if (!state.objectMode && typeof chunk === 'string') {
23453 encoding = encoding || state.defaultEncoding;
23454 if (encoding !== state.encoding) {
23455 chunk = bufferShim.from(chunk, encoding);
23456 encoding = '';
23457 }
23458 }
23459
23460 return readableAddChunk(this, state, chunk, encoding, false);
23461 };
23462
23463 // Unshift should *always* be something directly out of read()
23464 Readable.prototype.unshift = function (chunk) {
23465 var state = this._readableState;
23466 return readableAddChunk(this, state, chunk, '', true);
23467 };
23468
23469 Readable.prototype.isPaused = function () {
23470 return this._readableState.flowing === false;
23471 };
23472
23473 function readableAddChunk(stream, state, chunk, encoding, addToFront) {
23474 var er = chunkInvalid(state, chunk);
23475 if (er) {
23476 stream.emit('error', er);
23477 } else if (chunk === null) {
23478 state.reading = false;
23479 onEofChunk(stream, state);
23480 } else if (state.objectMode || chunk && chunk.length > 0) {
23481 if (state.ended && !addToFront) {
23482 var e = new Error('stream.push() after EOF');
23483 stream.emit('error', e);
23484 } else if (state.endEmitted && addToFront) {
23485 var _e = new Error('stream.unshift() after end event');
23486 stream.emit('error', _e);
23487 } else {
23488 var skipAdd;
23489 if (state.decoder && !addToFront && !encoding) {
23490 chunk = state.decoder.write(chunk);
23491 skipAdd = !state.objectMode && chunk.length === 0;
23492 }
23493
23494 if (!addToFront) state.reading = false;
23495
23496 // Don't add to the buffer if we've decoded to an empty string chunk and
23497 // we're not in object mode
23498 if (!skipAdd) {
23499 // if we want the data now, just emit it.
23500 if (state.flowing && state.length === 0 && !state.sync) {
23501 stream.emit('data', chunk);
23502 stream.read(0);
23503 } else {
23504 // update the buffer info.
23505 state.length += state.objectMode ? 1 : chunk.length;
23506 if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
23507
23508 if (state.needReadable) emitReadable(stream);
23509 }
23510 }
23511
23512 maybeReadMore(stream, state);
23513 }
23514 } else if (!addToFront) {
23515 state.reading = false;
23516 }
23517
23518 return needMoreData(state);
23519 }
23520
23521 // if it's past the high water mark, we can push in some more.
23522 // Also, if we have no data yet, we can stand some
23523 // more bytes. This is to work around cases where hwm=0,
23524 // such as the repl. Also, if the push() triggered a
23525 // readable event, and the user called read(largeNumber) such that
23526 // needReadable was set, then we ought to push more, so that another
23527 // 'readable' event will be triggered.
23528 function needMoreData(state) {
23529 return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
23530 }
23531
23532 // backwards compatibility.
23533 Readable.prototype.setEncoding = function (enc) {
23534 if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
23535 this._readableState.decoder = new StringDecoder(enc);
23536 this._readableState.encoding = enc;
23537 return this;
23538 };
23539
23540 // Don't raise the hwm > 8MB
23541 var MAX_HWM = 0x800000;
23542 function computeNewHighWaterMark(n) {
23543 if (n >= MAX_HWM) {
23544 n = MAX_HWM;
23545 } else {
23546 // Get the next highest power of 2 to prevent increasing hwm excessively in
23547 // tiny amounts
23548 n--;
23549 n |= n >>> 1;
23550 n |= n >>> 2;
23551 n |= n >>> 4;
23552 n |= n >>> 8;
23553 n |= n >>> 16;
23554 n++;
23555 }
23556 return n;
23557 }
23558
23559 // This function is designed to be inlinable, so please take care when making
23560 // changes to the function body.
23561 function howMuchToRead(n, state) {
23562 if (n <= 0 || state.length === 0 && state.ended) return 0;
23563 if (state.objectMode) return 1;
23564 if (n !== n) {
23565 // Only flow one buffer at a time
23566 if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
23567 }
23568 // If we're asking for more than the current hwm, then raise the hwm.
23569 if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
23570 if (n <= state.length) return n;
23571 // Don't have enough
23572 if (!state.ended) {
23573 state.needReadable = true;
23574 return 0;
23575 }
23576 return state.length;
23577 }
23578
23579 // you can override either this method, or the async _read(n) below.
23580 Readable.prototype.read = function (n) {
23581 debug('read', n);
23582 n = parseInt(n, 10);
23583 var state = this._readableState;
23584 var nOrig = n;
23585
23586 if (n !== 0) state.emittedReadable = false;
23587
23588 // if we're doing read(0) to trigger a readable event, but we
23589 // already have a bunch of data in the buffer, then just trigger
23590 // the 'readable' event and move on.
23591 if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
23592 debug('read: emitReadable', state.length, state.ended);
23593 if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
23594 return null;
23595 }
23596
23597 n = howMuchToRead(n, state);
23598
23599 // if we've ended, and we're now clear, then finish it up.
23600 if (n === 0 && state.ended) {
23601 if (state.length === 0) endReadable(this);
23602 return null;
23603 }
23604
23605 // All the actual chunk generation logic needs to be
23606 // *below* the call to _read. The reason is that in certain
23607 // synthetic stream cases, such as passthrough streams, _read
23608 // may be a completely synchronous operation which may change
23609 // the state of the read buffer, providing enough data when
23610 // before there was *not* enough.
23611 //
23612 // So, the steps are:
23613 // 1. Figure out what the state of things will be after we do
23614 // a read from the buffer.
23615 //
23616 // 2. If that resulting state will trigger a _read, then call _read.
23617 // Note that this may be asynchronous, or synchronous. Yes, it is
23618 // deeply ugly to write APIs this way, but that still doesn't mean
23619 // that the Readable class should behave improperly, as streams are
23620 // designed to be sync/async agnostic.
23621 // Take note if the _read call is sync or async (ie, if the read call
23622 // has returned yet), so that we know whether or not it's safe to emit
23623 // 'readable' etc.
23624 //
23625 // 3. Actually pull the requested chunks out of the buffer and return.
23626
23627 // if we need a readable event, then we need to do some reading.
23628 var doRead = state.needReadable;
23629 debug('need readable', doRead);
23630
23631 // if we currently have less than the highWaterMark, then also read some
23632 if (state.length === 0 || state.length - n < state.highWaterMark) {
23633 doRead = true;
23634 debug('length less than watermark', doRead);
23635 }
23636
23637 // however, if we've ended, then there's no point, and if we're already
23638 // reading, then it's unnecessary.
23639 if (state.ended || state.reading) {
23640 doRead = false;
23641 debug('reading or ended', doRead);
23642 } else if (doRead) {
23643 debug('do read');
23644 state.reading = true;
23645 state.sync = true;
23646 // if the length is currently zero, then we *need* a readable event.
23647 if (state.length === 0) state.needReadable = true;
23648 // call internal read method
23649 this._read(state.highWaterMark);
23650 state.sync = false;
23651 // If _read pushed data synchronously, then `reading` will be false,
23652 // and we need to re-evaluate how much data we can return to the user.
23653 if (!state.reading) n = howMuchToRead(nOrig, state);
23654 }
23655
23656 var ret;
23657 if (n > 0) ret = fromList(n, state);else ret = null;
23658
23659 if (ret === null) {
23660 state.needReadable = true;
23661 n = 0;
23662 } else {
23663 state.length -= n;
23664 }
23665
23666 if (state.length === 0) {
23667 // If we have nothing in the buffer, then we want to know
23668 // as soon as we *do* get something into the buffer.
23669 if (!state.ended) state.needReadable = true;
23670
23671 // If we tried to read() past the EOF, then emit end on the next tick.
23672 if (nOrig !== n && state.ended) endReadable(this);
23673 }
23674
23675 if (ret !== null) this.emit('data', ret);
23676
23677 return ret;
23678 };
23679
23680 function chunkInvalid(state, chunk) {
23681 var er = null;
23682 if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) {
23683 er = new TypeError('Invalid non-string/buffer chunk');
23684 }
23685 return er;
23686 }
23687
23688 function onEofChunk(stream, state) {
23689 if (state.ended) return;
23690 if (state.decoder) {
23691 var chunk = state.decoder.end();
23692 if (chunk && chunk.length) {
23693 state.buffer.push(chunk);
23694 state.length += state.objectMode ? 1 : chunk.length;
23695 }
23696 }
23697 state.ended = true;
23698
23699 // emit 'readable' now to make sure it gets picked up.
23700 emitReadable(stream);
23701 }
23702
23703 // Don't emit readable right away in sync mode, because this can trigger
23704 // another read() call => stack overflow. This way, it might trigger
23705 // a nextTick recursion warning, but that's not so bad.
23706 function emitReadable(stream) {
23707 var state = stream._readableState;
23708 state.needReadable = false;
23709 if (!state.emittedReadable) {
23710 debug('emitReadable', state.flowing);
23711 state.emittedReadable = true;
23712 if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);
23713 }
23714 }
23715
23716 function emitReadable_(stream) {
23717 debug('emit readable');
23718 stream.emit('readable');
23719 flow(stream);
23720 }
23721
23722 // at this point, the user has presumably seen the 'readable' event,
23723 // and called read() to consume some data. that may have triggered
23724 // in turn another _read(n) call, in which case reading = true if
23725 // it's in progress.
23726 // However, if we're not ended, or reading, and the length < hwm,
23727 // then go ahead and try to read some more preemptively.
23728 function maybeReadMore(stream, state) {
23729 if (!state.readingMore) {
23730 state.readingMore = true;
23731 processNextTick(maybeReadMore_, stream, state);
23732 }
23733 }
23734
23735 function maybeReadMore_(stream, state) {
23736 var len = state.length;
23737 while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
23738 debug('maybeReadMore read 0');
23739 stream.read(0);
23740 if (len === state.length)
23741 // didn't get any data, stop spinning.
23742 break;else len = state.length;
23743 }
23744 state.readingMore = false;
23745 }
23746
23747 // abstract method. to be overridden in specific implementation classes.
23748 // call cb(er, data) where data is <= n in length.
23749 // for virtual (non-string, non-buffer) streams, "length" is somewhat
23750 // arbitrary, and perhaps not very meaningful.
23751 Readable.prototype._read = function (n) {
23752 this.emit('error', new Error('_read() is not implemented'));
23753 };
23754
23755 Readable.prototype.pipe = function (dest, pipeOpts) {
23756 var src = this;
23757 var state = this._readableState;
23758
23759 switch (state.pipesCount) {
23760 case 0:
23761 state.pipes = dest;
23762 break;
23763 case 1:
23764 state.pipes = [state.pipes, dest];
23765 break;
23766 default:
23767 state.pipes.push(dest);
23768 break;
23769 }
23770 state.pipesCount += 1;
23771 debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
23772
23773 var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
23774
23775 var endFn = doEnd ? onend : cleanup;
23776 if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);
23777
23778 dest.on('unpipe', onunpipe);
23779 function onunpipe(readable) {
23780 debug('onunpipe');
23781 if (readable === src) {
23782 cleanup();
23783 }
23784 }
23785
23786 function onend() {
23787 debug('onend');
23788 dest.end();
23789 }
23790
23791 // when the dest drains, it reduces the awaitDrain counter
23792 // on the source. This would be more elegant with a .once()
23793 // handler in flow(), but adding and removing repeatedly is
23794 // too slow.
23795 var ondrain = pipeOnDrain(src);
23796 dest.on('drain', ondrain);
23797
23798 var cleanedUp = false;
23799 function cleanup() {
23800 debug('cleanup');
23801 // cleanup event handlers once the pipe is broken
23802 dest.removeListener('close', onclose);
23803 dest.removeListener('finish', onfinish);
23804 dest.removeListener('drain', ondrain);
23805 dest.removeListener('error', onerror);
23806 dest.removeListener('unpipe', onunpipe);
23807 src.removeListener('end', onend);
23808 src.removeListener('end', cleanup);
23809 src.removeListener('data', ondata);
23810
23811 cleanedUp = true;
23812
23813 // if the reader is waiting for a drain event from this
23814 // specific writer, then it would cause it to never start
23815 // flowing again.
23816 // So, if this is awaiting a drain, then we just call it now.
23817 // If we don't know, then assume that we are waiting for one.
23818 if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
23819 }
23820
23821 // If the user pushes more data while we're writing to dest then we'll end up
23822 // in ondata again. However, we only want to increase awaitDrain once because
23823 // dest will only emit one 'drain' event for the multiple writes.
23824 // => Introduce a guard on increasing awaitDrain.
23825 var increasedAwaitDrain = false;
23826 src.on('data', ondata);
23827 function ondata(chunk) {
23828 debug('ondata');
23829 increasedAwaitDrain = false;
23830 var ret = dest.write(chunk);
23831 if (false === ret && !increasedAwaitDrain) {
23832 // If the user unpiped during `dest.write()`, it is possible
23833 // to get stuck in a permanently paused state if that write
23834 // also returned false.
23835 // => Check whether `dest` is still a piping destination.
23836 if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
23837 debug('false write response, pause', src._readableState.awaitDrain);
23838 src._readableState.awaitDrain++;
23839 increasedAwaitDrain = true;
23840 }
23841 src.pause();
23842 }
23843 }
23844
23845 // if the dest has an error, then stop piping into it.
23846 // however, don't suppress the throwing behavior for this.
23847 function onerror(er) {
23848 debug('onerror', er);
23849 unpipe();
23850 dest.removeListener('error', onerror);
23851 if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
23852 }
23853
23854 // Make sure our error handler is attached before userland ones.
23855 prependListener(dest, 'error', onerror);
23856
23857 // Both close and finish should trigger unpipe, but only once.
23858 function onclose() {
23859 dest.removeListener('finish', onfinish);
23860 unpipe();
23861 }
23862 dest.once('close', onclose);
23863 function onfinish() {
23864 debug('onfinish');
23865 dest.removeListener('close', onclose);
23866 unpipe();
23867 }
23868 dest.once('finish', onfinish);
23869
23870 function unpipe() {
23871 debug('unpipe');
23872 src.unpipe(dest);
23873 }
23874
23875 // tell the dest that it's being piped to
23876 dest.emit('pipe', src);
23877
23878 // start the flow if it hasn't been started already.
23879 if (!state.flowing) {
23880 debug('pipe resume');
23881 src.resume();
23882 }
23883
23884 return dest;
23885 };
23886
23887 function pipeOnDrain(src) {
23888 return function () {
23889 var state = src._readableState;
23890 debug('pipeOnDrain', state.awaitDrain);
23891 if (state.awaitDrain) state.awaitDrain--;
23892 if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
23893 state.flowing = true;
23894 flow(src);
23895 }
23896 };
23897 }
23898
23899 Readable.prototype.unpipe = function (dest) {
23900 var state = this._readableState;
23901
23902 // if we're not piping anywhere, then do nothing.
23903 if (state.pipesCount === 0) return this;
23904
23905 // just one destination. most common case.
23906 if (state.pipesCount === 1) {
23907 // passed in one, but it's not the right one.
23908 if (dest && dest !== state.pipes) return this;
23909
23910 if (!dest) dest = state.pipes;
23911
23912 // got a match.
23913 state.pipes = null;
23914 state.pipesCount = 0;
23915 state.flowing = false;
23916 if (dest) dest.emit('unpipe', this);
23917 return this;
23918 }
23919
23920 // slow case. multiple pipe destinations.
23921
23922 if (!dest) {
23923 // remove all.
23924 var dests = state.pipes;
23925 var len = state.pipesCount;
23926 state.pipes = null;
23927 state.pipesCount = 0;
23928 state.flowing = false;
23929
23930 for (var i = 0; i < len; i++) {
23931 dests[i].emit('unpipe', this);
23932 }return this;
23933 }
23934
23935 // try to find the right one.
23936 var index = indexOf(state.pipes, dest);
23937 if (index === -1) return this;
23938
23939 state.pipes.splice(index, 1);
23940 state.pipesCount -= 1;
23941 if (state.pipesCount === 1) state.pipes = state.pipes[0];
23942
23943 dest.emit('unpipe', this);
23944
23945 return this;
23946 };
23947
23948 // set up data events if they are asked for
23949 // Ensure readable listeners eventually get something
23950 Readable.prototype.on = function (ev, fn) {
23951 var res = Stream.prototype.on.call(this, ev, fn);
23952
23953 if (ev === 'data') {
23954 // Start flowing on next tick if stream isn't explicitly paused
23955 if (this._readableState.flowing !== false) this.resume();
23956 } else if (ev === 'readable') {
23957 var state = this._readableState;
23958 if (!state.endEmitted && !state.readableListening) {
23959 state.readableListening = state.needReadable = true;
23960 state.emittedReadable = false;
23961 if (!state.reading) {
23962 processNextTick(nReadingNextTick, this);
23963 } else if (state.length) {
23964 emitReadable(this, state);
23965 }
23966 }
23967 }
23968
23969 return res;
23970 };
23971 Readable.prototype.addListener = Readable.prototype.on;
23972
23973 function nReadingNextTick(self) {
23974 debug('readable nexttick read 0');
23975 self.read(0);
23976 }
23977
23978 // pause() and resume() are remnants of the legacy readable stream API
23979 // If the user uses them, then switch into old mode.
23980 Readable.prototype.resume = function () {
23981 var state = this._readableState;
23982 if (!state.flowing) {
23983 debug('resume');
23984 state.flowing = true;
23985 resume(this, state);
23986 }
23987 return this;
23988 };
23989
23990 function resume(stream, state) {
23991 if (!state.resumeScheduled) {
23992 state.resumeScheduled = true;
23993 processNextTick(resume_, stream, state);
23994 }
23995 }
23996
23997 function resume_(stream, state) {
23998 if (!state.reading) {
23999 debug('resume read 0');
24000 stream.read(0);
24001 }
24002
24003 state.resumeScheduled = false;
24004 state.awaitDrain = 0;
24005 stream.emit('resume');
24006 flow(stream);
24007 if (state.flowing && !state.reading) stream.read(0);
24008 }
24009
24010 Readable.prototype.pause = function () {
24011 debug('call pause flowing=%j', this._readableState.flowing);
24012 if (false !== this._readableState.flowing) {
24013 debug('pause');
24014 this._readableState.flowing = false;
24015 this.emit('pause');
24016 }
24017 return this;
24018 };
24019
24020 function flow(stream) {
24021 var state = stream._readableState;
24022 debug('flow', state.flowing);
24023 while (state.flowing && stream.read() !== null) {}
24024 }
24025
24026 // wrap an old-style stream as the async data source.
24027 // This is *not* part of the readable stream interface.
24028 // It is an ugly unfortunate mess of history.
24029 Readable.prototype.wrap = function (stream) {
24030 var state = this._readableState;
24031 var paused = false;
24032
24033 var self = this;
24034 stream.on('end', function () {
24035 debug('wrapped end');
24036 if (state.decoder && !state.ended) {
24037 var chunk = state.decoder.end();
24038 if (chunk && chunk.length) self.push(chunk);
24039 }
24040
24041 self.push(null);
24042 });
24043
24044 stream.on('data', function (chunk) {
24045 debug('wrapped data');
24046 if (state.decoder) chunk = state.decoder.write(chunk);
24047
24048 // don't skip over falsy values in objectMode
24049 if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
24050
24051 var ret = self.push(chunk);
24052 if (!ret) {
24053 paused = true;
24054 stream.pause();
24055 }
24056 });
24057
24058 // proxy all the other methods.
24059 // important when wrapping filters and duplexes.
24060 for (var i in stream) {
24061 if (this[i] === undefined && typeof stream[i] === 'function') {
24062 this[i] = function (method) {
24063 return function () {
24064 return stream[method].apply(stream, arguments);
24065 };
24066 }(i);
24067 }
24068 }
24069
24070 // proxy certain important events.
24071 var events = ['error', 'close', 'destroy', 'pause', 'resume'];
24072 forEach(events, function (ev) {
24073 stream.on(ev, self.emit.bind(self, ev));
24074 });
24075
24076 // when we try to consume some more bytes, simply unpause the
24077 // underlying stream.
24078 self._read = function (n) {
24079 debug('wrapped _read', n);
24080 if (paused) {
24081 paused = false;
24082 stream.resume();
24083 }
24084 };
24085
24086 return self;
24087 };
24088
24089 // exposed for testing purposes only.
24090 Readable._fromList = fromList;
24091
24092 // Pluck off n bytes from an array of buffers.
24093 // Length is the combined lengths of all the buffers in the list.
24094 // This function is designed to be inlinable, so please take care when making
24095 // changes to the function body.
24096 function fromList(n, state) {
24097 // nothing buffered
24098 if (state.length === 0) return null;
24099
24100 var ret;
24101 if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
24102 // read it all, truncate the list
24103 if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);
24104 state.buffer.clear();
24105 } else {
24106 // read part of list
24107 ret = fromListPartial(n, state.buffer, state.decoder);
24108 }
24109
24110 return ret;
24111 }
24112
24113 // Extracts only enough buffered data to satisfy the amount requested.
24114 // This function is designed to be inlinable, so please take care when making
24115 // changes to the function body.
24116 function fromListPartial(n, list, hasStrings) {
24117 var ret;
24118 if (n < list.head.data.length) {
24119 // slice is the same for buffers and strings
24120 ret = list.head.data.slice(0, n);
24121 list.head.data = list.head.data.slice(n);
24122 } else if (n === list.head.data.length) {
24123 // first chunk is a perfect match
24124 ret = list.shift();
24125 } else {
24126 // result spans more than one buffer
24127 ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
24128 }
24129 return ret;
24130 }
24131
24132 // Copies a specified amount of characters from the list of buffered data
24133 // chunks.
24134 // This function is designed to be inlinable, so please take care when making
24135 // changes to the function body.
24136 function copyFromBufferString(n, list) {
24137 var p = list.head;
24138 var c = 1;
24139 var ret = p.data;
24140 n -= ret.length;
24141 while (p = p.next) {
24142 var str = p.data;
24143 var nb = n > str.length ? str.length : n;
24144 if (nb === str.length) ret += str;else ret += str.slice(0, n);
24145 n -= nb;
24146 if (n === 0) {
24147 if (nb === str.length) {
24148 ++c;
24149 if (p.next) list.head = p.next;else list.head = list.tail = null;
24150 } else {
24151 list.head = p;
24152 p.data = str.slice(nb);
24153 }
24154 break;
24155 }
24156 ++c;
24157 }
24158 list.length -= c;
24159 return ret;
24160 }
24161
24162 // Copies a specified amount of bytes from the list of buffered data chunks.
24163 // This function is designed to be inlinable, so please take care when making
24164 // changes to the function body.
24165 function copyFromBuffer(n, list) {
24166 var ret = bufferShim.allocUnsafe(n);
24167 var p = list.head;
24168 var c = 1;
24169 p.data.copy(ret);
24170 n -= p.data.length;
24171 while (p = p.next) {
24172 var buf = p.data;
24173 var nb = n > buf.length ? buf.length : n;
24174 buf.copy(ret, ret.length - n, 0, nb);
24175 n -= nb;
24176 if (n === 0) {
24177 if (nb === buf.length) {
24178 ++c;
24179 if (p.next) list.head = p.next;else list.head = list.tail = null;
24180 } else {
24181 list.head = p;
24182 p.data = buf.slice(nb);
24183 }
24184 break;
24185 }
24186 ++c;
24187 }
24188 list.length -= c;
24189 return ret;
24190 }
24191
24192 function endReadable(stream) {
24193 var state = stream._readableState;
24194
24195 // If we get here before consuming all the bytes, then that is a
24196 // bug in node. Should never happen.
24197 if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
24198
24199 if (!state.endEmitted) {
24200 state.ended = true;
24201 processNextTick(endReadableNT, state, stream);
24202 }
24203 }
24204
24205 function endReadableNT(state, stream) {
24206 // Check that we didn't get one last unshift.
24207 if (!state.endEmitted && state.length === 0) {
24208 state.endEmitted = true;
24209 stream.readable = false;
24210 stream.emit('end');
24211 }
24212 }
24213
24214 function forEach(xs, f) {
24215 for (var i = 0, l = xs.length; i < l; i++) {
24216 f(xs[i], i);
24217 }
24218 }
24219
24220 function indexOf(xs, x) {
24221 for (var i = 0, l = xs.length; i < l; i++) {
24222 if (xs[i] === x) return i;
24223 }
24224 return -1;
24225 }
24226 }).call(this,require('_process'))
24227 },{"./_stream_duplex":15,"./internal/streams/BufferList":20,"_process":13,"buffer":5,"buffer-shims":4,"core-util-is":6,"events":7,"inherits":9,"isarray":11,"process-nextick-args":12,"string_decoder/":26,"util":3}],18:[function(require,module,exports){
24228 // a transform stream is a readable/writable stream where you do
24229 // something with the data. Sometimes it's called a "filter",
24230 // but that's not a great name for it, since that implies a thing where
24231 // some bits pass through, and others are simply ignored. (That would
24232 // be a valid example of a transform, of course.)
24233 //
24234 // While the output is causally related to the input, it's not a
24235 // necessarily symmetric or synchronous transformation. For example,
24236 // a zlib stream might take multiple plain-text writes(), and then
24237 // emit a single compressed chunk some time in the future.
24238 //
24239 // Here's how this works:
24240 //
24241 // The Transform stream has all the aspects of the readable and writable
24242 // stream classes. When you write(chunk), that calls _write(chunk,cb)
24243 // internally, and returns false if there's a lot of pending writes
24244 // buffered up. When you call read(), that calls _read(n) until
24245 // there's enough pending readable data buffered up.
24246 //
24247 // In a transform stream, the written data is placed in a buffer. When
24248 // _read(n) is called, it transforms the queued up data, calling the
24249 // buffered _write cb's as it consumes chunks. If consuming a single
24250 // written chunk would result in multiple output chunks, then the first
24251 // outputted bit calls the readcb, and subsequent chunks just go into
24252 // the read buffer, and will cause it to emit 'readable' if necessary.
24253 //
24254 // This way, back-pressure is actually determined by the reading side,
24255 // since _read has to be called to start processing a new chunk. However,
24256 // a pathological inflate type of transform can cause excessive buffering
24257 // here. For example, imagine a stream where every byte of input is
24258 // interpreted as an integer from 0-255, and then results in that many
24259 // bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
24260 // 1kb of data being output. In this case, you could write a very small
24261 // amount of input, and end up with a very large amount of output. In
24262 // such a pathological inflating mechanism, there'd be no way to tell
24263 // the system to stop doing the transform. A single 4MB write could
24264 // cause the system to run out of memory.
24265 //
24266 // However, even in such a pathological case, only a single written chunk
24267 // would be consumed, and then the rest would wait (un-transformed) until
24268 // the results of the previous transformed chunk were consumed.
24269
24270 'use strict';
24271
24272 module.exports = Transform;
24273
24274 var Duplex = require('./_stream_duplex');
24275
24276 /*<replacement>*/
24277 var util = require('core-util-is');
24278 util.inherits = require('inherits');
24279 /*</replacement>*/
24280
24281 util.inherits(Transform, Duplex);
24282
24283 function TransformState(stream) {
24284 this.afterTransform = function (er, data) {
24285 return afterTransform(stream, er, data);
24286 };
24287
24288 this.needTransform = false;
24289 this.transforming = false;
24290 this.writecb = null;
24291 this.writechunk = null;
24292 this.writeencoding = null;
24293 }
24294
24295 function afterTransform(stream, er, data) {
24296 var ts = stream._transformState;
24297 ts.transforming = false;
24298
24299 var cb = ts.writecb;
24300
24301 if (!cb) return stream.emit('error', new Error('no writecb in Transform class'));
24302
24303 ts.writechunk = null;
24304 ts.writecb = null;
24305
24306 if (data !== null && data !== undefined) stream.push(data);
24307
24308 cb(er);
24309
24310 var rs = stream._readableState;
24311 rs.reading = false;
24312 if (rs.needReadable || rs.length < rs.highWaterMark) {
24313 stream._read(rs.highWaterMark);
24314 }
24315 }
24316
24317 function Transform(options) {
24318 if (!(this instanceof Transform)) return new Transform(options);
24319
24320 Duplex.call(this, options);
24321
24322 this._transformState = new TransformState(this);
24323
24324 var stream = this;
24325
24326 // start out asking for a readable event once data is transformed.
24327 this._readableState.needReadable = true;
24328
24329 // we have implemented the _read method, and done the other things
24330 // that Readable wants before the first _read call, so unset the
24331 // sync guard flag.
24332 this._readableState.sync = false;
24333
24334 if (options) {
24335 if (typeof options.transform === 'function') this._transform = options.transform;
24336
24337 if (typeof options.flush === 'function') this._flush = options.flush;
24338 }
24339
24340 // When the writable side finishes, then flush out anything remaining.
24341 this.once('prefinish', function () {
24342 if (typeof this._flush === 'function') this._flush(function (er, data) {
24343 done(stream, er, data);
24344 });else done(stream);
24345 });
24346 }
24347
24348 Transform.prototype.push = function (chunk, encoding) {
24349 this._transformState.needTransform = false;
24350 return Duplex.prototype.push.call(this, chunk, encoding);
24351 };
24352
24353 // This is the part where you do stuff!
24354 // override this function in implementation classes.
24355 // 'chunk' is an input chunk.
24356 //
24357 // Call `push(newChunk)` to pass along transformed output
24358 // to the readable side. You may call 'push' zero or more times.
24359 //
24360 // Call `cb(err)` when you are done with this chunk. If you pass
24361 // an error, then that'll put the hurt on the whole operation. If you
24362 // never call cb(), then you'll never get another chunk.
24363 Transform.prototype._transform = function (chunk, encoding, cb) {
24364 throw new Error('_transform() is not implemented');
24365 };
24366
24367 Transform.prototype._write = function (chunk, encoding, cb) {
24368 var ts = this._transformState;
24369 ts.writecb = cb;
24370 ts.writechunk = chunk;
24371 ts.writeencoding = encoding;
24372 if (!ts.transforming) {
24373 var rs = this._readableState;
24374 if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
24375 }
24376 };
24377
24378 // Doesn't matter what the args are here.
24379 // _transform does all the work.
24380 // That we got here means that the readable side wants more data.
24381 Transform.prototype._read = function (n) {
24382 var ts = this._transformState;
24383
24384 if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
24385 ts.transforming = true;
24386 this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
24387 } else {
24388 // mark that we need a transform, so that any data that comes in
24389 // will get processed, now that we've asked for it.
24390 ts.needTransform = true;
24391 }
24392 };
24393
24394 function done(stream, er, data) {
24395 if (er) return stream.emit('error', er);
24396
24397 if (data !== null && data !== undefined) stream.push(data);
24398
24399 // if there's nothing in the write buffer, then that means
24400 // that nothing more will ever be provided
24401 var ws = stream._writableState;
24402 var ts = stream._transformState;
24403
24404 if (ws.length) throw new Error('Calling transform done when ws.length != 0');
24405
24406 if (ts.transforming) throw new Error('Calling transform done when still transforming');
24407
24408 return stream.push(null);
24409 }
24410 },{"./_stream_duplex":15,"core-util-is":6,"inherits":9}],19:[function(require,module,exports){
24411 (function (process){
24412 // A bit simpler than readable streams.
24413 // Implement an async ._write(chunk, encoding, cb), and it'll handle all
24414 // the drain event emission and buffering.
24415
24416 'use strict';
24417
24418 module.exports = Writable;
24419
24420 /*<replacement>*/
24421 var processNextTick = require('process-nextick-args');
24422 /*</replacement>*/
24423
24424 /*<replacement>*/
24425 var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;
24426 /*</replacement>*/
24427
24428 /*<replacement>*/
24429 var Duplex;
24430 /*</replacement>*/
24431
24432 Writable.WritableState = WritableState;
24433
24434 /*<replacement>*/
24435 var util = require('core-util-is');
24436 util.inherits = require('inherits');
24437 /*</replacement>*/
24438
24439 /*<replacement>*/
24440 var internalUtil = {
24441 deprecate: require('util-deprecate')
24442 };
24443 /*</replacement>*/
24444
24445 /*<replacement>*/
24446 var Stream;
24447 (function () {
24448 try {
24449 Stream = require('st' + 'ream');
24450 } catch (_) {} finally {
24451 if (!Stream) Stream = require('events').EventEmitter;
24452 }
24453 })();
24454 /*</replacement>*/
24455
24456 var Buffer = require('buffer').Buffer;
24457 /*<replacement>*/
24458 var bufferShim = require('buffer-shims');
24459 /*</replacement>*/
24460
24461 util.inherits(Writable, Stream);
24462
24463 function nop() {}
24464
24465 function WriteReq(chunk, encoding, cb) {
24466 this.chunk = chunk;
24467 this.encoding = encoding;
24468 this.callback = cb;
24469 this.next = null;
24470 }
24471
24472 function WritableState(options, stream) {
24473 Duplex = Duplex || require('./_stream_duplex');
24474
24475 options = options || {};
24476
24477 // object stream flag to indicate whether or not this stream
24478 // contains buffers or objects.
24479 this.objectMode = !!options.objectMode;
24480
24481 if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
24482
24483 // the point at which write() starts returning false
24484 // Note: 0 is a valid value, means that we always return false if
24485 // the entire buffer is not flushed immediately on write()
24486 var hwm = options.highWaterMark;
24487 var defaultHwm = this.objectMode ? 16 : 16 * 1024;
24488 this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
24489
24490 // cast to ints.
24491 this.highWaterMark = ~ ~this.highWaterMark;
24492
24493 // drain event flag.
24494 this.needDrain = false;
24495 // at the start of calling end()
24496 this.ending = false;
24497 // when end() has been called, and returned
24498 this.ended = false;
24499 // when 'finish' is emitted
24500 this.finished = false;
24501
24502 // should we decode strings into buffers before passing to _write?
24503 // this is here so that some node-core streams can optimize string
24504 // handling at a lower level.
24505 var noDecode = options.decodeStrings === false;
24506 this.decodeStrings = !noDecode;
24507
24508 // Crypto is kind of old and crusty. Historically, its default string
24509 // encoding is 'binary' so we have to make this configurable.
24510 // Everything else in the universe uses 'utf8', though.
24511 this.defaultEncoding = options.defaultEncoding || 'utf8';
24512
24513 // not an actual buffer we keep track of, but a measurement
24514 // of how much we're waiting to get pushed to some underlying
24515 // socket or file.
24516 this.length = 0;
24517
24518 // a flag to see when we're in the middle of a write.
24519 this.writing = false;
24520
24521 // when true all writes will be buffered until .uncork() call
24522 this.corked = 0;
24523
24524 // a flag to be able to tell if the onwrite cb is called immediately,
24525 // or on a later tick. We set this to true at first, because any
24526 // actions that shouldn't happen until "later" should generally also
24527 // not happen before the first write call.
24528 this.sync = true;
24529
24530 // a flag to know if we're processing previously buffered items, which
24531 // may call the _write() callback in the same tick, so that we don't
24532 // end up in an overlapped onwrite situation.
24533 this.bufferProcessing = false;
24534
24535 // the callback that's passed to _write(chunk,cb)
24536 this.onwrite = function (er) {
24537 onwrite(stream, er);
24538 };
24539
24540 // the callback that the user supplies to write(chunk,encoding,cb)
24541 this.writecb = null;
24542
24543 // the amount that is being written when _write is called.
24544 this.writelen = 0;
24545
24546 this.bufferedRequest = null;
24547 this.lastBufferedRequest = null;
24548
24549 // number of pending user-supplied write callbacks
24550 // this must be 0 before 'finish' can be emitted
24551 this.pendingcb = 0;
24552
24553 // emit prefinish if the only thing we're waiting for is _write cbs
24554 // This is relevant for synchronous Transform streams
24555 this.prefinished = false;
24556
24557 // True if the error was already emitted and should not be thrown again
24558 this.errorEmitted = false;
24559
24560 // count buffered requests
24561 this.bufferedRequestCount = 0;
24562
24563 // allocate the first CorkedRequest, there is always
24564 // one allocated and free to use, and we maintain at most two
24565 this.corkedRequestsFree = new CorkedRequest(this);
24566 }
24567
24568 WritableState.prototype.getBuffer = function getBuffer() {
24569 var current = this.bufferedRequest;
24570 var out = [];
24571 while (current) {
24572 out.push(current);
24573 current = current.next;
24574 }
24575 return out;
24576 };
24577
24578 (function () {
24579 try {
24580 Object.defineProperty(WritableState.prototype, 'buffer', {
24581 get: internalUtil.deprecate(function () {
24582 return this.getBuffer();
24583 }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.')
24584 });
24585 } catch (_) {}
24586 })();
24587
24588 // Test _writableState for inheritance to account for Duplex streams,
24589 // whose prototype chain only points to Readable.
24590 var realHasInstance;
24591 if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
24592 realHasInstance = Function.prototype[Symbol.hasInstance];
24593 Object.defineProperty(Writable, Symbol.hasInstance, {
24594 value: function (object) {
24595 if (realHasInstance.call(this, object)) return true;
24596
24597 return object && object._writableState instanceof WritableState;
24598 }
24599 });
24600 } else {
24601 realHasInstance = function (object) {
24602 return object instanceof this;
24603 };
24604 }
24605
24606 function Writable(options) {
24607 Duplex = Duplex || require('./_stream_duplex');
24608
24609 // Writable ctor is applied to Duplexes, too.
24610 // `realHasInstance` is necessary because using plain `instanceof`
24611 // would return false, as no `_writableState` property is attached.
24612
24613 // Trying to use the custom `instanceof` for Writable here will also break the
24614 // Node.js LazyTransform implementation, which has a non-trivial getter for
24615 // `_writableState` that would lead to infinite recursion.
24616 if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
24617 return new Writable(options);
24618 }
24619
24620 this._writableState = new WritableState(options, this);
24621
24622 // legacy.
24623 this.writable = true;
24624
24625 if (options) {
24626 if (typeof options.write === 'function') this._write = options.write;
24627
24628 if (typeof options.writev === 'function') this._writev = options.writev;
24629 }
24630
24631 Stream.call(this);
24632 }
24633
24634 // Otherwise people can pipe Writable streams, which is just wrong.
24635 Writable.prototype.pipe = function () {
24636 this.emit('error', new Error('Cannot pipe, not readable'));
24637 };
24638
24639 function writeAfterEnd(stream, cb) {
24640 var er = new Error('write after end');
24641 // TODO: defer error events consistently everywhere, not just the cb
24642 stream.emit('error', er);
24643 processNextTick(cb, er);
24644 }
24645
24646 // If we get something that is not a buffer, string, null, or undefined,
24647 // and we're not in objectMode, then that's an error.
24648 // Otherwise stream chunks are all considered to be of length=1, and the
24649 // watermarks determine how many objects to keep in the buffer, rather than
24650 // how many bytes or characters.
24651 function validChunk(stream, state, chunk, cb) {
24652 var valid = true;
24653 var er = false;
24654 // Always throw error if a null is written
24655 // if we are not in object mode then throw
24656 // if it is not a buffer, string, or undefined.
24657 if (chunk === null) {
24658 er = new TypeError('May not write null values to stream');
24659 } else if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
24660 er = new TypeError('Invalid non-string/buffer chunk');
24661 }
24662 if (er) {
24663 stream.emit('error', er);
24664 processNextTick(cb, er);
24665 valid = false;
24666 }
24667 return valid;
24668 }
24669
24670 Writable.prototype.write = function (chunk, encoding, cb) {
24671 var state = this._writableState;
24672 var ret = false;
24673
24674 if (typeof encoding === 'function') {
24675 cb = encoding;
24676 encoding = null;
24677 }
24678
24679 if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
24680
24681 if (typeof cb !== 'function') cb = nop;
24682
24683 if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) {
24684 state.pendingcb++;
24685 ret = writeOrBuffer(this, state, chunk, encoding, cb);
24686 }
24687
24688 return ret;
24689 };
24690
24691 Writable.prototype.cork = function () {
24692 var state = this._writableState;
24693
24694 state.corked++;
24695 };
24696
24697 Writable.prototype.uncork = function () {
24698 var state = this._writableState;
24699
24700 if (state.corked) {
24701 state.corked--;
24702
24703 if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
24704 }
24705 };
24706
24707 Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
24708 // node::ParseEncoding() requires lower case.
24709 if (typeof encoding === 'string') encoding = encoding.toLowerCase();
24710 if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);
24711 this._writableState.defaultEncoding = encoding;
24712 return this;
24713 };
24714
24715 function decodeChunk(state, chunk, encoding) {
24716 if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
24717 chunk = bufferShim.from(chunk, encoding);
24718 }
24719 return chunk;
24720 }
24721
24722 // if we're already writing something, then just put this
24723 // in the queue, and wait our turn. Otherwise, call _write
24724 // If we return false, then we need a drain event, so set that flag.
24725 function writeOrBuffer(stream, state, chunk, encoding, cb) {
24726 chunk = decodeChunk(state, chunk, encoding);
24727
24728 if (Buffer.isBuffer(chunk)) encoding = 'buffer';
24729 var len = state.objectMode ? 1 : chunk.length;
24730
24731 state.length += len;
24732
24733 var ret = state.length < state.highWaterMark;
24734 // we must ensure that previous needDrain will not be reset to false.
24735 if (!ret) state.needDrain = true;
24736
24737 if (state.writing || state.corked) {
24738 var last = state.lastBufferedRequest;
24739 state.lastBufferedRequest = new WriteReq(chunk, encoding, cb);
24740 if (last) {
24741 last.next = state.lastBufferedRequest;
24742 } else {
24743 state.bufferedRequest = state.lastBufferedRequest;
24744 }
24745 state.bufferedRequestCount += 1;
24746 } else {
24747 doWrite(stream, state, false, len, chunk, encoding, cb);
24748 }
24749
24750 return ret;
24751 }
24752
24753 function doWrite(stream, state, writev, len, chunk, encoding, cb) {
24754 state.writelen = len;
24755 state.writecb = cb;
24756 state.writing = true;
24757 state.sync = true;
24758 if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
24759 state.sync = false;
24760 }
24761
24762 function onwriteError(stream, state, sync, er, cb) {
24763 --state.pendingcb;
24764 if (sync) processNextTick(cb, er);else cb(er);
24765
24766 stream._writableState.errorEmitted = true;
24767 stream.emit('error', er);
24768 }
24769
24770 function onwriteStateUpdate(state) {
24771 state.writing = false;
24772 state.writecb = null;
24773 state.length -= state.writelen;
24774 state.writelen = 0;
24775 }
24776
24777 function onwrite(stream, er) {
24778 var state = stream._writableState;
24779 var sync = state.sync;
24780 var cb = state.writecb;
24781
24782 onwriteStateUpdate(state);
24783
24784 if (er) onwriteError(stream, state, sync, er, cb);else {
24785 // Check if we're actually ready to finish, but don't emit yet
24786 var finished = needFinish(state);
24787
24788 if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
24789 clearBuffer(stream, state);
24790 }
24791
24792 if (sync) {
24793 /*<replacement>*/
24794 asyncWrite(afterWrite, stream, state, finished, cb);
24795 /*</replacement>*/
24796 } else {
24797 afterWrite(stream, state, finished, cb);
24798 }
24799 }
24800 }
24801
24802 function afterWrite(stream, state, finished, cb) {
24803 if (!finished) onwriteDrain(stream, state);
24804 state.pendingcb--;
24805 cb();
24806 finishMaybe(stream, state);
24807 }
24808
24809 // Must force callback to be called on nextTick, so that we don't
24810 // emit 'drain' before the write() consumer gets the 'false' return
24811 // value, and has a chance to attach a 'drain' listener.
24812 function onwriteDrain(stream, state) {
24813 if (state.length === 0 && state.needDrain) {
24814 state.needDrain = false;
24815 stream.emit('drain');
24816 }
24817 }
24818
24819 // if there's something in the buffer waiting, then process it
24820 function clearBuffer(stream, state) {
24821 state.bufferProcessing = true;
24822 var entry = state.bufferedRequest;
24823
24824 if (stream._writev && entry && entry.next) {
24825 // Fast case, write everything using _writev()
24826 var l = state.bufferedRequestCount;
24827 var buffer = new Array(l);
24828 var holder = state.corkedRequestsFree;
24829 holder.entry = entry;
24830
24831 var count = 0;
24832 while (entry) {
24833 buffer[count] = entry;
24834 entry = entry.next;
24835 count += 1;
24836 }
24837
24838 doWrite(stream, state, true, state.length, buffer, '', holder.finish);
24839
24840 // doWrite is almost always async, defer these to save a bit of time
24841 // as the hot path ends with doWrite
24842 state.pendingcb++;
24843 state.lastBufferedRequest = null;
24844 if (holder.next) {
24845 state.corkedRequestsFree = holder.next;
24846 holder.next = null;
24847 } else {
24848 state.corkedRequestsFree = new CorkedRequest(state);
24849 }
24850 } else {
24851 // Slow case, write chunks one-by-one
24852 while (entry) {
24853 var chunk = entry.chunk;
24854 var encoding = entry.encoding;
24855 var cb = entry.callback;
24856 var len = state.objectMode ? 1 : chunk.length;
24857
24858 doWrite(stream, state, false, len, chunk, encoding, cb);
24859 entry = entry.next;
24860 // if we didn't call the onwrite immediately, then
24861 // it means that we need to wait until it does.
24862 // also, that means that the chunk and cb are currently
24863 // being processed, so move the buffer counter past them.
24864 if (state.writing) {
24865 break;
24866 }
24867 }
24868
24869 if (entry === null) state.lastBufferedRequest = null;
24870 }
24871
24872 state.bufferedRequestCount = 0;
24873 state.bufferedRequest = entry;
24874 state.bufferProcessing = false;
24875 }
24876
24877 Writable.prototype._write = function (chunk, encoding, cb) {
24878 cb(new Error('_write() is not implemented'));
24879 };
24880
24881 Writable.prototype._writev = null;
24882
24883 Writable.prototype.end = function (chunk, encoding, cb) {
24884 var state = this._writableState;
24885
24886 if (typeof chunk === 'function') {
24887 cb = chunk;
24888 chunk = null;
24889 encoding = null;
24890 } else if (typeof encoding === 'function') {
24891 cb = encoding;
24892 encoding = null;
24893 }
24894
24895 if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
24896
24897 // .end() fully uncorks
24898 if (state.corked) {
24899 state.corked = 1;
24900 this.uncork();
24901 }
24902
24903 // ignore unnecessary end() calls.
24904 if (!state.ending && !state.finished) endWritable(this, state, cb);
24905 };
24906
24907 function needFinish(state) {
24908 return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
24909 }
24910
24911 function prefinish(stream, state) {
24912 if (!state.prefinished) {
24913 state.prefinished = true;
24914 stream.emit('prefinish');
24915 }
24916 }
24917
24918 function finishMaybe(stream, state) {
24919 var need = needFinish(state);
24920 if (need) {
24921 if (state.pendingcb === 0) {
24922 prefinish(stream, state);
24923 state.finished = true;
24924 stream.emit('finish');
24925 } else {
24926 prefinish(stream, state);
24927 }
24928 }
24929 return need;
24930 }
24931
24932 function endWritable(stream, state, cb) {
24933 state.ending = true;
24934 finishMaybe(stream, state);
24935 if (cb) {
24936 if (state.finished) processNextTick(cb);else stream.once('finish', cb);
24937 }
24938 state.ended = true;
24939 stream.writable = false;
24940 }
24941
24942 // It seems a linked list but it is not
24943 // there will be only 2 of these for each stream
24944 function CorkedRequest(state) {
24945 var _this = this;
24946
24947 this.next = null;
24948 this.entry = null;
24949
24950 this.finish = function (err) {
24951 var entry = _this.entry;
24952 _this.entry = null;
24953 while (entry) {
24954 var cb = entry.callback;
24955 state.pendingcb--;
24956 cb(err);
24957 entry = entry.next;
24958 }
24959 if (state.corkedRequestsFree) {
24960 state.corkedRequestsFree.next = _this;
24961 } else {
24962 state.corkedRequestsFree = _this;
24963 }
24964 };
24965 }
24966 }).call(this,require('_process'))
24967 },{"./_stream_duplex":15,"_process":13,"buffer":5,"buffer-shims":4,"core-util-is":6,"events":7,"inherits":9,"process-nextick-args":12,"util-deprecate":27}],20:[function(require,module,exports){
24968 'use strict';
24969
24970 var Buffer = require('buffer').Buffer;
24971 /*<replacement>*/
24972 var bufferShim = require('buffer-shims');
24973 /*</replacement>*/
24974
24975 module.exports = BufferList;
24976
24977 function BufferList() {
24978 this.head = null;
24979 this.tail = null;
24980 this.length = 0;
24981 }
24982
24983 BufferList.prototype.push = function (v) {
24984 var entry = { data: v, next: null };
24985 if (this.length > 0) this.tail.next = entry;else this.head = entry;
24986 this.tail = entry;
24987 ++this.length;
24988 };
24989
24990 BufferList.prototype.unshift = function (v) {
24991 var entry = { data: v, next: this.head };
24992 if (this.length === 0) this.tail = entry;
24993 this.head = entry;
24994 ++this.length;
24995 };
24996
24997 BufferList.prototype.shift = function () {
24998 if (this.length === 0) return;
24999 var ret = this.head.data;
25000 if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
25001 --this.length;
25002 return ret;
25003 };
25004
25005 BufferList.prototype.clear = function () {
25006 this.head = this.tail = null;
25007 this.length = 0;
25008 };
25009
25010 BufferList.prototype.join = function (s) {
25011 if (this.length === 0) return '';
25012 var p = this.head;
25013 var ret = '' + p.data;
25014 while (p = p.next) {
25015 ret += s + p.data;
25016 }return ret;
25017 };
25018
25019 BufferList.prototype.concat = function (n) {
25020 if (this.length === 0) return bufferShim.alloc(0);
25021 if (this.length === 1) return this.head.data;
25022 var ret = bufferShim.allocUnsafe(n >>> 0);
25023 var p = this.head;
25024 var i = 0;
25025 while (p) {
25026 p.data.copy(ret, i);
25027 i += p.data.length;
25028 p = p.next;
25029 }
25030 return ret;
25031 };
25032 },{"buffer":5,"buffer-shims":4}],21:[function(require,module,exports){
25033 module.exports = require("./lib/_stream_passthrough.js")
25034
25035 },{"./lib/_stream_passthrough.js":16}],22:[function(require,module,exports){
25036 (function (process){
25037 var Stream = (function (){
25038 try {
25039 return require('st' + 'ream'); // hack to fix a circular dependency issue when used with browserify
25040 } catch(_){}
25041 }());
25042 exports = module.exports = require('./lib/_stream_readable.js');
25043 exports.Stream = Stream || exports;
25044 exports.Readable = exports;
25045 exports.Writable = require('./lib/_stream_writable.js');
25046 exports.Duplex = require('./lib/_stream_duplex.js');
25047 exports.Transform = require('./lib/_stream_transform.js');
25048 exports.PassThrough = require('./lib/_stream_passthrough.js');
25049
25050 if (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) {
25051 module.exports = Stream;
25052 }
25053
25054 }).call(this,require('_process'))
25055 },{"./lib/_stream_duplex.js":15,"./lib/_stream_passthrough.js":16,"./lib/_stream_readable.js":17,"./lib/_stream_transform.js":18,"./lib/_stream_writable.js":19,"_process":13}],23:[function(require,module,exports){
25056 module.exports = require("./lib/_stream_transform.js")
25057
25058 },{"./lib/_stream_transform.js":18}],24:[function(require,module,exports){
25059 module.exports = require("./lib/_stream_writable.js")
25060
25061 },{"./lib/_stream_writable.js":19}],25:[function(require,module,exports){
25062 // Copyright Joyent, Inc. and other Node contributors.
25063 //
25064 // Permission is hereby granted, free of charge, to any person obtaining a
25065 // copy of this software and associated documentation files (the
25066 // "Software"), to deal in the Software without restriction, including
25067 // without limitation the rights to use, copy, modify, merge, publish,
25068 // distribute, sublicense, and/or sell copies of the Software, and to permit
25069 // persons to whom the Software is furnished to do so, subject to the
25070 // following conditions:
25071 //
25072 // The above copyright notice and this permission notice shall be included
25073 // in all copies or substantial portions of the Software.
25074 //
25075 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
25076 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25077 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
25078 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
25079 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
25080 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
25081 // USE OR OTHER DEALINGS IN THE SOFTWARE.
25082
25083 module.exports = Stream;
25084
25085 var EE = require('events').EventEmitter;
25086 var inherits = require('inherits');
25087
25088 inherits(Stream, EE);
25089 Stream.Readable = require('readable-stream/readable.js');
25090 Stream.Writable = require('readable-stream/writable.js');
25091 Stream.Duplex = require('readable-stream/duplex.js');
25092 Stream.Transform = require('readable-stream/transform.js');
25093 Stream.PassThrough = require('readable-stream/passthrough.js');
25094
25095 // Backwards-compat with node 0.4.x
25096 Stream.Stream = Stream;
25097
25098
25099
25100 // old-style streams. Note that the pipe method (the only relevant
25101 // part of this class) is overridden in the Readable class.
25102
25103 function Stream() {
25104 EE.call(this);
25105 }
25106
25107 Stream.prototype.pipe = function(dest, options) {
25108 var source = this;
25109
25110 function ondata(chunk) {
25111 if (dest.writable) {
25112 if (false === dest.write(chunk) && source.pause) {
25113 source.pause();
25114 }
25115 }
25116 }
25117
25118 source.on('data', ondata);
25119
25120 function ondrain() {
25121 if (source.readable && source.resume) {
25122 source.resume();
25123 }
25124 }
25125
25126 dest.on('drain', ondrain);
25127
25128 // If the 'end' option is not supplied, dest.end() will be called when
25129 // source gets the 'end' or 'close' events. Only dest.end() once.
25130 if (!dest._isStdio && (!options || options.end !== false)) {
25131 source.on('end', onend);
25132 source.on('close', onclose);
25133 }
25134
25135 var didOnEnd = false;
25136 function onend() {
25137 if (didOnEnd) return;
25138 didOnEnd = true;
25139
25140 dest.end();
25141 }
25142
25143
25144 function onclose() {
25145 if (didOnEnd) return;
25146 didOnEnd = true;
25147
25148 if (typeof dest.destroy === 'function') dest.destroy();
25149 }
25150
25151 // don't leave dangling pipes when there are errors.
25152 function onerror(er) {
25153 cleanup();
25154 if (EE.listenerCount(this, 'error') === 0) {
25155 throw er; // Unhandled stream error in pipe.
25156 }
25157 }
25158
25159 source.on('error', onerror);
25160 dest.on('error', onerror);
25161
25162 // remove all the event listeners that were added.
25163 function cleanup() {
25164 source.removeListener('data', ondata);
25165 dest.removeListener('drain', ondrain);
25166
25167 source.removeListener('end', onend);
25168 source.removeListener('close', onclose);
25169
25170 source.removeListener('error', onerror);
25171 dest.removeListener('error', onerror);
25172
25173 source.removeListener('end', cleanup);
25174 source.removeListener('close', cleanup);
25175
25176 dest.removeListener('close', cleanup);
25177 }
25178
25179 source.on('end', cleanup);
25180 source.on('close', cleanup);
25181
25182 dest.on('close', cleanup);
25183
25184 dest.emit('pipe', source);
25185
25186 // Allow for unix-like usage: A.pipe(B).pipe(C)
25187 return dest;
25188 };
25189
25190 },{"events":7,"inherits":9,"readable-stream/duplex.js":14,"readable-stream/passthrough.js":21,"readable-stream/readable.js":22,"readable-stream/transform.js":23,"readable-stream/writable.js":24}],26:[function(require,module,exports){
25191 // Copyright Joyent, Inc. and other Node contributors.
25192 //
25193 // Permission is hereby granted, free of charge, to any person obtaining a
25194 // copy of this software and associated documentation files (the
25195 // "Software"), to deal in the Software without restriction, including
25196 // without limitation the rights to use, copy, modify, merge, publish,
25197 // distribute, sublicense, and/or sell copies of the Software, and to permit
25198 // persons to whom the Software is furnished to do so, subject to the
25199 // following conditions:
25200 //
25201 // The above copyright notice and this permission notice shall be included
25202 // in all copies or substantial portions of the Software.
25203 //
25204 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
25205 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25206 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
25207 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
25208 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
25209 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
25210 // USE OR OTHER DEALINGS IN THE SOFTWARE.
25211
25212 var Buffer = require('buffer').Buffer;
25213
25214 var isBufferEncoding = Buffer.isEncoding
25215 || function(encoding) {
25216 switch (encoding && encoding.toLowerCase()) {
25217 case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true;
25218 default: return false;
25219 }
25220 }
25221
25222
25223 function assertEncoding(encoding) {
25224 if (encoding && !isBufferEncoding(encoding)) {
25225 throw new Error('Unknown encoding: ' + encoding);
25226 }
25227 }
25228
25229 // StringDecoder provides an interface for efficiently splitting a series of
25230 // buffers into a series of JS strings without breaking apart multi-byte
25231 // characters. CESU-8 is handled as part of the UTF-8 encoding.
25232 //
25233 // @TODO Handling all encodings inside a single object makes it very difficult
25234 // to reason about this code, so it should be split up in the future.
25235 // @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code
25236 // points as used by CESU-8.
25237 var StringDecoder = exports.StringDecoder = function(encoding) {
25238 this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');
25239 assertEncoding(encoding);
25240 switch (this.encoding) {
25241 case 'utf8':
25242 // CESU-8 represents each of Surrogate Pair by 3-bytes
25243 this.surrogateSize = 3;
25244 break;
25245 case 'ucs2':
25246 case 'utf16le':
25247 // UTF-16 represents each of Surrogate Pair by 2-bytes
25248 this.surrogateSize = 2;
25249 this.detectIncompleteChar = utf16DetectIncompleteChar;
25250 break;
25251 case 'base64':
25252 // Base-64 stores 3 bytes in 4 chars, and pads the remainder.
25253 this.surrogateSize = 3;
25254 this.detectIncompleteChar = base64DetectIncompleteChar;
25255 break;
25256 default:
25257 this.write = passThroughWrite;
25258 return;
25259 }
25260
25261 // Enough space to store all bytes of a single character. UTF-8 needs 4
25262 // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).
25263 this.charBuffer = new Buffer(6);
25264 // Number of bytes received for the current incomplete multi-byte character.
25265 this.charReceived = 0;
25266 // Number of bytes expected for the current incomplete multi-byte character.
25267 this.charLength = 0;
25268 };
25269
25270
25271 // write decodes the given buffer and returns it as JS string that is
25272 // guaranteed to not contain any partial multi-byte characters. Any partial
25273 // character found at the end of the buffer is buffered up, and will be
25274 // returned when calling write again with the remaining bytes.
25275 //
25276 // Note: Converting a Buffer containing an orphan surrogate to a String
25277 // currently works, but converting a String to a Buffer (via `new Buffer`, or
25278 // Buffer#write) will replace incomplete surrogates with the unicode
25279 // replacement character. See https://codereview.chromium.org/121173009/ .
25280 StringDecoder.prototype.write = function(buffer) {
25281 var charStr = '';
25282 // if our last write ended with an incomplete multibyte character
25283 while (this.charLength) {
25284 // determine how many remaining bytes this buffer has to offer for this char
25285 var available = (buffer.length >= this.charLength - this.charReceived) ?
25286 this.charLength - this.charReceived :
25287 buffer.length;
25288
25289 // add the new bytes to the char buffer
25290 buffer.copy(this.charBuffer, this.charReceived, 0, available);
25291 this.charReceived += available;
25292
25293 if (this.charReceived < this.charLength) {
25294 // still not enough chars in this buffer? wait for more ...
25295 return '';
25296 }
25297
25298 // remove bytes belonging to the current character from the buffer
25299 buffer = buffer.slice(available, buffer.length);
25300
25301 // get the character that was split
25302 charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);
25303
25304 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
25305 var charCode = charStr.charCodeAt(charStr.length - 1);
25306 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
25307 this.charLength += this.surrogateSize;
25308 charStr = '';
25309 continue;
25310 }
25311 this.charReceived = this.charLength = 0;
25312
25313 // if there are no more bytes in this buffer, just emit our char
25314 if (buffer.length === 0) {
25315 return charStr;
25316 }
25317 break;
25318 }
25319
25320 // determine and set charLength / charReceived
25321 this.detectIncompleteChar(buffer);
25322
25323 var end = buffer.length;
25324 if (this.charLength) {
25325 // buffer the incomplete character bytes we got
25326 buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);
25327 end -= this.charReceived;
25328 }
25329
25330 charStr += buffer.toString(this.encoding, 0, end);
25331
25332 var end = charStr.length - 1;
25333 var charCode = charStr.charCodeAt(end);
25334 // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
25335 if (charCode >= 0xD800 && charCode <= 0xDBFF) {
25336 var size = this.surrogateSize;
25337 this.charLength += size;
25338 this.charReceived += size;
25339 this.charBuffer.copy(this.charBuffer, size, 0, size);
25340 buffer.copy(this.charBuffer, 0, 0, size);
25341 return charStr.substring(0, end);
25342 }
25343
25344 // or just emit the charStr
25345 return charStr;
25346 };
25347
25348 // detectIncompleteChar determines if there is an incomplete UTF-8 character at
25349 // the end of the given buffer. If so, it sets this.charLength to the byte
25350 // length that character, and sets this.charReceived to the number of bytes
25351 // that are available for this character.
25352 StringDecoder.prototype.detectIncompleteChar = function(buffer) {
25353 // determine how many bytes we have to check at the end of this buffer
25354 var i = (buffer.length >= 3) ? 3 : buffer.length;
25355
25356 // Figure out if one of the last i bytes of our buffer announces an
25357 // incomplete char.
25358 for (; i > 0; i--) {
25359 var c = buffer[buffer.length - i];
25360
25361 // See http://en.wikipedia.org/wiki/UTF-8#Description
25362
25363 // 110XXXXX
25364 if (i == 1 && c >> 5 == 0x06) {
25365 this.charLength = 2;
25366 break;
25367 }
25368
25369 // 1110XXXX
25370 if (i <= 2 && c >> 4 == 0x0E) {
25371 this.charLength = 3;
25372 break;
25373 }
25374
25375 // 11110XXX
25376 if (i <= 3 && c >> 3 == 0x1E) {
25377 this.charLength = 4;
25378 break;
25379 }
25380 }
25381 this.charReceived = i;
25382 };
25383
25384 StringDecoder.prototype.end = function(buffer) {
25385 var res = '';
25386 if (buffer && buffer.length)
25387 res = this.write(buffer);
25388
25389 if (this.charReceived) {
25390 var cr = this.charReceived;
25391 var buf = this.charBuffer;
25392 var enc = this.encoding;
25393 res += buf.slice(0, cr).toString(enc);
25394 }
25395
25396 return res;
25397 };
25398
25399 function passThroughWrite(buffer) {
25400 return buffer.toString(this.encoding);
25401 }
25402
25403 function utf16DetectIncompleteChar(buffer) {
25404 this.charReceived = buffer.length % 2;
25405 this.charLength = this.charReceived ? 2 : 0;
25406 }
25407
25408 function base64DetectIncompleteChar(buffer) {
25409 this.charReceived = buffer.length % 3;
25410 this.charLength = this.charReceived ? 3 : 0;
25411 }
25412
25413 },{"buffer":5}],27:[function(require,module,exports){
25414 (function (global){
25415
25416 /**
25417 * Module exports.
25418 */
25419
25420 module.exports = deprecate;
25421
25422 /**
25423 * Mark that a method should not be used.
25424 * Returns a modified function which warns once by default.
25425 *
25426 * If `localStorage.noDeprecation = true` is set, then it is a no-op.
25427 *
25428 * If `localStorage.throwDeprecation = true` is set, then deprecated functions
25429 * will throw an Error when invoked.
25430 *
25431 * If `localStorage.traceDeprecation = true` is set, then deprecated functions
25432 * will invoke `console.trace()` instead of `console.error()`.
25433 *
25434 * @param {Function} fn - the function to deprecate
25435 * @param {String} msg - the string to print to the console when `fn` is invoked
25436 * @returns {Function} a new "deprecated" version of `fn`
25437 * @api public
25438 */
25439
25440 function deprecate (fn, msg) {
25441 if (config('noDeprecation')) {
25442 return fn;
25443 }
25444
25445 var warned = false;
25446 function deprecated() {
25447 if (!warned) {
25448 if (config('throwDeprecation')) {
25449 throw new Error(msg);
25450 } else if (config('traceDeprecation')) {
25451 console.trace(msg);
25452 } else {
25453 console.warn(msg);
25454 }
25455 warned = true;
25456 }
25457 return fn.apply(this, arguments);
25458 }
25459
25460 return deprecated;
25461 }
25462
25463 /**
25464 * Checks `localStorage` for boolean values for the given `name`.
25465 *
25466 * @param {String} name
25467 * @returns {Boolean}
25468 * @api private
25469 */
25470
25471 function config (name) {
25472 // accessing global.localStorage can trigger a DOMException in sandboxed iframes
25473 try {
25474 if (!global.localStorage) return false;
25475 } catch (_) {
25476 return false;
25477 }
25478 var val = global.localStorage[name];
25479 if (null == val) return false;
25480 return String(val).toLowerCase() === 'true';
25481 }
25482
25483 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
25484 },{}],28:[function(require,module,exports){
25485 arguments[4][9][0].apply(exports,arguments)
25486 },{"dup":9}],29:[function(require,module,exports){
25487 module.exports = function isBuffer(arg) {
25488 return arg && typeof arg === 'object'
25489 && typeof arg.copy === 'function'
25490 && typeof arg.fill === 'function'
25491 && typeof arg.readUInt8 === 'function';
25492 }
25493 },{}],30:[function(require,module,exports){
25494 (function (process,global){
25495 // Copyright Joyent, Inc. and other Node contributors.
25496 //
25497 // Permission is hereby granted, free of charge, to any person obtaining a
25498 // copy of this software and associated documentation files (the
25499 // "Software"), to deal in the Software without restriction, including
25500 // without limitation the rights to use, copy, modify, merge, publish,
25501 // distribute, sublicense, and/or sell copies of the Software, and to permit
25502 // persons to whom the Software is furnished to do so, subject to the
25503 // following conditions:
25504 //
25505 // The above copyright notice and this permission notice shall be included
25506 // in all copies or substantial portions of the Software.
25507 //
25508 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
25509 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25510 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
25511 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
25512 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
25513 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
25514 // USE OR OTHER DEALINGS IN THE SOFTWARE.
25515
25516 var formatRegExp = /%[sdj%]/g;
25517 exports.format = function(f) {
25518 if (!isString(f)) {
25519 var objects = [];
25520 for (var i = 0; i < arguments.length; i++) {
25521 objects.push(inspect(arguments[i]));
25522 }
25523 return objects.join(' ');
25524 }
25525
25526 var i = 1;
25527 var args = arguments;
25528 var len = args.length;
25529 var str = String(f).replace(formatRegExp, function(x) {
25530 if (x === '%%') return '%';
25531 if (i >= len) return x;
25532 switch (x) {
25533 case '%s': return String(args[i++]);
25534 case '%d': return Number(args[i++]);
25535 case '%j':
25536 try {
25537 return JSON.stringify(args[i++]);
25538 } catch (_) {
25539 return '[Circular]';
25540 }
25541 default:
25542 return x;
25543 }
25544 });
25545 for (var x = args[i]; i < len; x = args[++i]) {
25546 if (isNull(x) || !isObject(x)) {
25547 str += ' ' + x;
25548 } else {
25549 str += ' ' + inspect(x);
25550 }
25551 }
25552 return str;
25553 };
25554
25555
25556 // Mark that a method should not be used.
25557 // Returns a modified function which warns once by default.
25558 // If --no-deprecation is set, then it is a no-op.
25559 exports.deprecate = function(fn, msg) {
25560 // Allow for deprecating things in the process of starting up.
25561 if (isUndefined(global.process)) {
25562 return function() {
25563 return exports.deprecate(fn, msg).apply(this, arguments);
25564 };
25565 }
25566
25567 if (process.noDeprecation === true) {
25568 return fn;
25569 }
25570
25571 var warned = false;
25572 function deprecated() {
25573 if (!warned) {
25574 if (process.throwDeprecation) {
25575 throw new Error(msg);
25576 } else if (process.traceDeprecation) {
25577 console.trace(msg);
25578 } else {
25579 console.error(msg);
25580 }
25581 warned = true;
25582 }
25583 return fn.apply(this, arguments);
25584 }
25585
25586 return deprecated;
25587 };
25588
25589
25590 var debugs = {};
25591 var debugEnviron;
25592 exports.debuglog = function(set) {
25593 if (isUndefined(debugEnviron))
25594 debugEnviron = process.env.NODE_DEBUG || '';
25595 set = set.toUpperCase();
25596 if (!debugs[set]) {
25597 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
25598 var pid = process.pid;
25599 debugs[set] = function() {
25600 var msg = exports.format.apply(exports, arguments);
25601 console.error('%s %d: %s', set, pid, msg);
25602 };
25603 } else {
25604 debugs[set] = function() {};
25605 }
25606 }
25607 return debugs[set];
25608 };
25609
25610
25611 /**
25612 * Echos the value of a value. Trys to print the value out
25613 * in the best way possible given the different types.
25614 *
25615 * @param {Object} obj The object to print out.
25616 * @param {Object} opts Optional options object that alters the output.
25617 */
25618 /* legacy: obj, showHidden, depth, colors*/
25619 function inspect(obj, opts) {
25620 // default options
25621 var ctx = {
25622 seen: [],
25623 stylize: stylizeNoColor
25624 };
25625 // legacy...
25626 if (arguments.length >= 3) ctx.depth = arguments[2];
25627 if (arguments.length >= 4) ctx.colors = arguments[3];
25628 if (isBoolean(opts)) {
25629 // legacy...
25630 ctx.showHidden = opts;
25631 } else if (opts) {
25632 // got an "options" object
25633 exports._extend(ctx, opts);
25634 }
25635 // set default options
25636 if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
25637 if (isUndefined(ctx.depth)) ctx.depth = 2;
25638 if (isUndefined(ctx.colors)) ctx.colors = false;
25639 if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
25640 if (ctx.colors) ctx.stylize = stylizeWithColor;
25641 return formatValue(ctx, obj, ctx.depth);
25642 }
25643 exports.inspect = inspect;
25644
25645
25646 // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
25647 inspect.colors = {
25648 'bold' : [1, 22],
25649 'italic' : [3, 23],
25650 'underline' : [4, 24],
25651 'inverse' : [7, 27],
25652 'white' : [37, 39],
25653 'grey' : [90, 39],
25654 'black' : [30, 39],
25655 'blue' : [34, 39],
25656 'cyan' : [36, 39],
25657 'green' : [32, 39],
25658 'magenta' : [35, 39],
25659 'red' : [31, 39],
25660 'yellow' : [33, 39]
25661 };
25662
25663 // Don't use 'blue' not visible on cmd.exe
25664 inspect.styles = {
25665 'special': 'cyan',
25666 'number': 'yellow',
25667 'boolean': 'yellow',
25668 'undefined': 'grey',
25669 'null': 'bold',
25670 'string': 'green',
25671 'date': 'magenta',
25672 // "name": intentionally not styling
25673 'regexp': 'red'
25674 };
25675
25676
25677 function stylizeWithColor(str, styleType) {
25678 var style = inspect.styles[styleType];
25679
25680 if (style) {
25681 return '\u001b[' + inspect.colors[style][0] + 'm' + str +
25682 '\u001b[' + inspect.colors[style][1] + 'm';
25683 } else {
25684 return str;
25685 }
25686 }
25687
25688
25689 function stylizeNoColor(str, styleType) {
25690 return str;
25691 }
25692
25693
25694 function arrayToHash(array) {
25695 var hash = {};
25696
25697 array.forEach(function(val, idx) {
25698 hash[val] = true;
25699 });
25700
25701 return hash;
25702 }
25703
25704
25705 function formatValue(ctx, value, recurseTimes) {
25706 // Provide a hook for user-specified inspect functions.
25707 // Check that value is an object with an inspect function on it
25708 if (ctx.customInspect &&
25709 value &&
25710 isFunction(value.inspect) &&
25711 // Filter out the util module, it's inspect function is special
25712 value.inspect !== exports.inspect &&
25713 // Also filter out any prototype objects using the circular check.
25714 !(value.constructor && value.constructor.prototype === value)) {
25715 var ret = value.inspect(recurseTimes, ctx);
25716 if (!isString(ret)) {
25717 ret = formatValue(ctx, ret, recurseTimes);
25718 }
25719 return ret;
25720 }
25721
25722 // Primitive types cannot have properties
25723 var primitive = formatPrimitive(ctx, value);
25724 if (primitive) {
25725 return primitive;
25726 }
25727
25728 // Look up the keys of the object.
25729 var keys = Object.keys(value);
25730 var visibleKeys = arrayToHash(keys);
25731
25732 if (ctx.showHidden) {
25733 keys = Object.getOwnPropertyNames(value);
25734 }
25735
25736 // IE doesn't make error fields non-enumerable
25737 // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
25738 if (isError(value)
25739 && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
25740 return formatError(value);
25741 }
25742
25743 // Some type of object without properties can be shortcutted.
25744 if (keys.length === 0) {
25745 if (isFunction(value)) {
25746 var name = value.name ? ': ' + value.name : '';
25747 return ctx.stylize('[Function' + name + ']', 'special');
25748 }
25749 if (isRegExp(value)) {
25750 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
25751 }
25752 if (isDate(value)) {
25753 return ctx.stylize(Date.prototype.toString.call(value), 'date');
25754 }
25755 if (isError(value)) {
25756 return formatError(value);
25757 }
25758 }
25759
25760 var base = '', array = false, braces = ['{', '}'];
25761
25762 // Make Array say that they are Array
25763 if (isArray(value)) {
25764 array = true;
25765 braces = ['[', ']'];
25766 }
25767
25768 // Make functions say that they are functions
25769 if (isFunction(value)) {
25770 var n = value.name ? ': ' + value.name : '';
25771 base = ' [Function' + n + ']';
25772 }
25773
25774 // Make RegExps say that they are RegExps
25775 if (isRegExp(value)) {
25776 base = ' ' + RegExp.prototype.toString.call(value);
25777 }
25778
25779 // Make dates with properties first say the date
25780 if (isDate(value)) {
25781 base = ' ' + Date.prototype.toUTCString.call(value);
25782 }
25783
25784 // Make error with message first say the error
25785 if (isError(value)) {
25786 base = ' ' + formatError(value);
25787 }
25788
25789 if (keys.length === 0 && (!array || value.length == 0)) {
25790 return braces[0] + base + braces[1];
25791 }
25792
25793 if (recurseTimes < 0) {
25794 if (isRegExp(value)) {
25795 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
25796 } else {
25797 return ctx.stylize('[Object]', 'special');
25798 }
25799 }
25800
25801 ctx.seen.push(value);
25802
25803 var output;
25804 if (array) {
25805 output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
25806 } else {
25807 output = keys.map(function(key) {
25808 return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
25809 });
25810 }
25811
25812 ctx.seen.pop();
25813
25814 return reduceToSingleString(output, base, braces);
25815 }
25816
25817
25818 function formatPrimitive(ctx, value) {
25819 if (isUndefined(value))
25820 return ctx.stylize('undefined', 'undefined');
25821 if (isString(value)) {
25822 var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
25823 .replace(/'/g, "\\'")
25824 .replace(/\\"/g, '"') + '\'';
25825 return ctx.stylize(simple, 'string');
25826 }
25827 if (isNumber(value))
25828 return ctx.stylize('' + value, 'number');
25829 if (isBoolean(value))
25830 return ctx.stylize('' + value, 'boolean');
25831 // For some reason typeof null is "object", so special case here.
25832 if (isNull(value))
25833 return ctx.stylize('null', 'null');
25834 }
25835
25836
25837 function formatError(value) {
25838 return '[' + Error.prototype.toString.call(value) + ']';
25839 }
25840
25841
25842 function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
25843 var output = [];
25844 for (var i = 0, l = value.length; i < l; ++i) {
25845 if (hasOwnProperty(value, String(i))) {
25846 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
25847 String(i), true));
25848 } else {
25849 output.push('');
25850 }
25851 }
25852 keys.forEach(function(key) {
25853 if (!key.match(/^\d+$/)) {
25854 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
25855 key, true));
25856 }
25857 });
25858 return output;
25859 }
25860
25861
25862 function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
25863 var name, str, desc;
25864 desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
25865 if (desc.get) {
25866 if (desc.set) {
25867 str = ctx.stylize('[Getter/Setter]', 'special');
25868 } else {
25869 str = ctx.stylize('[Getter]', 'special');
25870 }
25871 } else {
25872 if (desc.set) {
25873 str = ctx.stylize('[Setter]', 'special');
25874 }
25875 }
25876 if (!hasOwnProperty(visibleKeys, key)) {
25877 name = '[' + key + ']';
25878 }
25879 if (!str) {
25880 if (ctx.seen.indexOf(desc.value) < 0) {
25881 if (isNull(recurseTimes)) {
25882 str = formatValue(ctx, desc.value, null);
25883 } else {
25884 str = formatValue(ctx, desc.value, recurseTimes - 1);
25885 }
25886 if (str.indexOf('\n') > -1) {
25887 if (array) {
25888 str = str.split('\n').map(function(line) {
25889 return ' ' + line;
25890 }).join('\n').substr(2);
25891 } else {
25892 str = '\n' + str.split('\n').map(function(line) {
25893 return ' ' + line;
25894 }).join('\n');
25895 }
25896 }
25897 } else {
25898 str = ctx.stylize('[Circular]', 'special');
25899 }
25900 }
25901 if (isUndefined(name)) {
25902 if (array && key.match(/^\d+$/)) {
25903 return str;
25904 }
25905 name = JSON.stringify('' + key);
25906 if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
25907 name = name.substr(1, name.length - 2);
25908 name = ctx.stylize(name, 'name');
25909 } else {
25910 name = name.replace(/'/g, "\\'")
25911 .replace(/\\"/g, '"')
25912 .replace(/(^"|"$)/g, "'");
25913 name = ctx.stylize(name, 'string');
25914 }
25915 }
25916
25917 return name + ': ' + str;
25918 }
25919
25920
25921 function reduceToSingleString(output, base, braces) {
25922 var numLinesEst = 0;
25923 var length = output.reduce(function(prev, cur) {
25924 numLinesEst++;
25925 if (cur.indexOf('\n') >= 0) numLinesEst++;
25926 return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
25927 }, 0);
25928
25929 if (length > 60) {
25930 return braces[0] +
25931 (base === '' ? '' : base + '\n ') +
25932 ' ' +
25933 output.join(',\n ') +
25934 ' ' +
25935 braces[1];
25936 }
25937
25938 return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
25939 }
25940
25941
25942 // NOTE: These type checking functions intentionally don't use `instanceof`
25943 // because it is fragile and can be easily faked with `Object.create()`.
25944 function isArray(ar) {
25945 return Array.isArray(ar);
25946 }
25947 exports.isArray = isArray;
25948
25949 function isBoolean(arg) {
25950 return typeof arg === 'boolean';
25951 }
25952 exports.isBoolean = isBoolean;
25953
25954 function isNull(arg) {
25955 return arg === null;
25956 }
25957 exports.isNull = isNull;
25958
25959 function isNullOrUndefined(arg) {
25960 return arg == null;
25961 }
25962 exports.isNullOrUndefined = isNullOrUndefined;
25963
25964 function isNumber(arg) {
25965 return typeof arg === 'number';
25966 }
25967 exports.isNumber = isNumber;
25968
25969 function isString(arg) {
25970 return typeof arg === 'string';
25971 }
25972 exports.isString = isString;
25973
25974 function isSymbol(arg) {
25975 return typeof arg === 'symbol';
25976 }
25977 exports.isSymbol = isSymbol;
25978
25979 function isUndefined(arg) {
25980 return arg === void 0;
25981 }
25982 exports.isUndefined = isUndefined;
25983
25984 function isRegExp(re) {
25985 return isObject(re) && objectToString(re) === '[object RegExp]';
25986 }
25987 exports.isRegExp = isRegExp;
25988
25989 function isObject(arg) {
25990 return typeof arg === 'object' && arg !== null;
25991 }
25992 exports.isObject = isObject;
25993
25994 function isDate(d) {
25995 return isObject(d) && objectToString(d) === '[object Date]';
25996 }
25997 exports.isDate = isDate;
25998
25999 function isError(e) {
26000 return isObject(e) &&
26001 (objectToString(e) === '[object Error]' || e instanceof Error);
26002 }
26003 exports.isError = isError;
26004
26005 function isFunction(arg) {
26006 return typeof arg === 'function';
26007 }
26008 exports.isFunction = isFunction;
26009
26010 function isPrimitive(arg) {
26011 return arg === null ||
26012 typeof arg === 'boolean' ||
26013 typeof arg === 'number' ||
26014 typeof arg === 'string' ||
26015 typeof arg === 'symbol' || // ES6 symbol
26016 typeof arg === 'undefined';
26017 }
26018 exports.isPrimitive = isPrimitive;
26019
26020 exports.isBuffer = require('./support/isBuffer');
26021
26022 function objectToString(o) {
26023 return Object.prototype.toString.call(o);
26024 }
26025
26026
26027 function pad(n) {
26028 return n < 10 ? '0' + n.toString(10) : n.toString(10);
26029 }
26030
26031
26032 var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
26033 'Oct', 'Nov', 'Dec'];
26034
26035 // 26 Feb 16:19:34
26036 function timestamp() {
26037 var d = new Date();
26038 var time = [pad(d.getHours()),
26039 pad(d.getMinutes()),
26040 pad(d.getSeconds())].join(':');
26041 return [d.getDate(), months[d.getMonth()], time].join(' ');
26042 }
26043
26044
26045 // log is just a thin wrapper to console.log that prepends a timestamp
26046 exports.log = function() {
26047 console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
26048 };
26049
26050
26051 /**
26052 * Inherit the prototype methods from one constructor into another.
26053 *
26054 * The Function.prototype.inherits from lang.js rewritten as a standalone
26055 * function (not on Function.prototype). NOTE: If this file is to be loaded
26056 * during bootstrapping this function needs to be rewritten using some native
26057 * functions as prototype setup using normal JavaScript does not work as
26058 * expected during bootstrapping (see mirror.js in r114903).
26059 *
26060 * @param {function} ctor Constructor function which needs to inherit the
26061 * prototype.
26062 * @param {function} superCtor Constructor function to inherit prototype from.
26063 */
26064 exports.inherits = require('inherits');
26065
26066 exports._extend = function(origin, add) {
26067 // Don't do anything if add isn't an object
26068 if (!add || !isObject(add)) return origin;
26069
26070 var keys = Object.keys(add);
26071 var i = keys.length;
26072 while (i--) {
26073 origin[keys[i]] = add[keys[i]];
26074 }
26075 return origin;
26076 };
26077
26078 function hasOwnProperty(obj, prop) {
26079 return Object.prototype.hasOwnProperty.call(obj, prop);
26080 }
26081
26082 }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
26083 },{"./support/isBuffer":29,"_process":13,"inherits":28}],31:[function(require,module,exports){
26084 (function (Buffer){
26085 const createKeccakHash = require('keccak')
26086 const secp256k1 = require('secp256k1')
26087 const assert = require('assert')
26088 const rlp = require('rlp')
26089 const BN = require('bn.js')
26090 const createHash = require('create-hash')
26091 Object.assign(exports, require('ethjs-util'))
26092
26093 /**
26094 * the max integer that this VM can handle (a ```BN```)
26095 * @var {BN} MAX_INTEGER
26096 */
26097 exports.MAX_INTEGER = new BN('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16)
26098
26099 /**
26100 * 2^256 (a ```BN```)
26101 * @var {BN} TWO_POW256
26102 */
26103 exports.TWO_POW256 = new BN('10000000000000000000000000000000000000000000000000000000000000000', 16)
26104
26105 /**
26106 * SHA3-256 hash of null (a ```String```)
26107 * @var {String} SHA3_NULL_S
26108 */
26109 exports.SHA3_NULL_S = 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470'
26110
26111 /**
26112 * SHA3-256 hash of null (a ```Buffer```)
26113 * @var {Buffer} SHA3_NULL
26114 */
26115 exports.SHA3_NULL = Buffer.from(exports.SHA3_NULL_S, 'hex')
26116
26117 /**
26118 * SHA3-256 of an RLP of an empty array (a ```String```)
26119 * @var {String} SHA3_RLP_ARRAY_S
26120 */
26121 exports.SHA3_RLP_ARRAY_S = '1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347'
26122
26123 /**
26124 * SHA3-256 of an RLP of an empty array (a ```Buffer```)
26125 * @var {Buffer} SHA3_RLP_ARRAY
26126 */
26127 exports.SHA3_RLP_ARRAY = Buffer.from(exports.SHA3_RLP_ARRAY_S, 'hex')
26128
26129 /**
26130 * SHA3-256 hash of the RLP of null (a ```String```)
26131 * @var {String} SHA3_RLP_S
26132 */
26133 exports.SHA3_RLP_S = '56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421'
26134
26135 /**
26136 * SHA3-256 hash of the RLP of null (a ```Buffer```)
26137 * @var {Buffer} SHA3_RLP
26138 */
26139 exports.SHA3_RLP = Buffer.from(exports.SHA3_RLP_S, 'hex')
26140
26141 /**
26142 * [`BN`](https://github.com/indutny/bn.js)
26143 * @var {Function}
26144 */
26145 exports.BN = BN
26146
26147 /**
26148 * [`rlp`](https://github.com/ethereumjs/rlp)
26149 * @var {Function}
26150 */
26151 exports.rlp = rlp
26152
26153 /**
26154 * [`secp256k1`](https://github.com/cryptocoinjs/secp256k1-node/)
26155 * @var {Object}
26156 */
26157 exports.secp256k1 = secp256k1
26158
26159 /**
26160 * Returns a buffer filled with 0s
26161 * @method zeros
26162 * @param {Number} bytes the number of bytes the buffer should be
26163 * @return {Buffer}
26164 */
26165 exports.zeros = function (bytes) {
26166 return Buffer.allocUnsafe(bytes).fill(0)
26167 }
26168
26169 /**
26170 * Left Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.
26171 * Or it truncates the beginning if it exceeds.
26172 * @method lsetLength
26173 * @param {Buffer|Array} msg the value to pad
26174 * @param {Number} length the number of bytes the output should be
26175 * @param {Boolean} [right=false] whether to start padding form the left or right
26176 * @return {Buffer|Array}
26177 */
26178 exports.setLengthLeft = exports.setLength = function (msg, length, right) {
26179 var buf = exports.zeros(length)
26180 msg = exports.toBuffer(msg)
26181 if (right) {
26182 if (msg.length < length) {
26183 msg.copy(buf)
26184 return buf
26185 }
26186 return msg.slice(0, length)
26187 } else {
26188 if (msg.length < length) {
26189 msg.copy(buf, length - msg.length)
26190 return buf
26191 }
26192 return msg.slice(-length)
26193 }
26194 }
26195
26196 /**
26197 * Right Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.
26198 * Or it truncates the beginning if it exceeds.
26199 * @param {Buffer|Array} msg the value to pad
26200 * @param {Number} length the number of bytes the output should be
26201 * @return {Buffer|Array}
26202 */
26203 exports.setLengthRight = function (msg, length) {
26204 return exports.setLength(msg, length, true)
26205 }
26206
26207 /**
26208 * Trims leading zeros from a `Buffer` or an `Array`
26209 * @param {Buffer|Array|String} a
26210 * @return {Buffer|Array|String}
26211 */
26212 exports.unpad = exports.stripZeros = function (a) {
26213 a = exports.stripHexPrefix(a)
26214 var first = a[0]
26215 while (a.length > 0 && first.toString() === '0') {
26216 a = a.slice(1)
26217 first = a[0]
26218 }
26219 return a
26220 }
26221 /**
26222 * Attempts to turn a value into a `Buffer`. As input it supports `Buffer`, `String`, `Number`, null/undefined, `BN` and other objects with a `toArray()` method.
26223 * @param {*} v the value
26224 */
26225 exports.toBuffer = function (v) {
26226 if (!Buffer.isBuffer(v)) {
26227 if (Array.isArray(v)) {
26228 v = Buffer.from(v)
26229 } else if (typeof v === 'string') {
26230 if (exports.isHexPrefixed(v)) {
26231 v = Buffer.from(exports.padToEven(exports.stripHexPrefix(v)), 'hex')
26232 } else {
26233 v = Buffer.from(v)
26234 }
26235 } else if (typeof v === 'number') {
26236 v = exports.intToBuffer(v)
26237 } else if (v === null || v === undefined) {
26238 v = Buffer.allocUnsafe(0)
26239 } else if (v.toArray) {
26240 // converts a BN to a Buffer
26241 v = Buffer.from(v.toArray())
26242 } else {
26243 throw new Error('invalid type')
26244 }
26245 }
26246 return v
26247 }
26248
26249 /**
26250 * Converts a `Buffer` to a `Number`
26251 * @param {Buffer} buf
26252 * @return {Number}
26253 * @throws If the input number exceeds 53 bits.
26254 */
26255 exports.bufferToInt = function (buf) {
26256 return new BN(exports.toBuffer(buf)).toNumber()
26257 }
26258
26259 /**
26260 * Converts a `Buffer` into a hex `String`
26261 * @param {Buffer} buf
26262 * @return {String}
26263 */
26264 exports.bufferToHex = function (buf) {
26265 buf = exports.toBuffer(buf)
26266 return '0x' + buf.toString('hex')
26267 }
26268
26269 /**
26270 * Interprets a `Buffer` as a signed integer and returns a `BN`. Assumes 256-bit numbers.
26271 * @param {Buffer} num
26272 * @return {BN}
26273 */
26274 exports.fromSigned = function (num) {
26275 return new BN(num).fromTwos(256)
26276 }
26277
26278 /**
26279 * Converts a `BN` to an unsigned integer and returns it as a `Buffer`. Assumes 256-bit numbers.
26280 * @param {BN} num
26281 * @return {Buffer}
26282 */
26283 exports.toUnsigned = function (num) {
26284 return Buffer.from(num.toTwos(256).toArray())
26285 }
26286
26287 /**
26288 * Creates SHA-3 hash of the input
26289 * @param {Buffer|Array|String|Number} a the input data
26290 * @param {Number} [bits=256] the SHA width
26291 * @return {Buffer}
26292 */
26293 exports.sha3 = function (a, bits) {
26294 a = exports.toBuffer(a)
26295 if (!bits) bits = 256
26296
26297 return createKeccakHash('keccak' + bits).update(a).digest()
26298 }
26299
26300 /**
26301 * Creates SHA256 hash of the input
26302 * @param {Buffer|Array|String|Number} a the input data
26303 * @return {Buffer}
26304 */
26305 exports.sha256 = function (a) {
26306 a = exports.toBuffer(a)
26307 return createHash('sha256').update(a).digest()
26308 }
26309
26310 /**
26311 * Creates RIPEMD160 hash of the input
26312 * @param {Buffer|Array|String|Number} a the input data
26313 * @param {Boolean} padded whether it should be padded to 256 bits or not
26314 * @return {Buffer}
26315 */
26316 exports.ripemd160 = function (a, padded) {
26317 a = exports.toBuffer(a)
26318 var hash = createHash('rmd160').update(a).digest()
26319 if (padded === true) {
26320 return exports.setLength(hash, 32)
26321 } else {
26322 return hash
26323 }
26324 }
26325
26326 /**
26327 * Creates SHA-3 hash of the RLP encoded version of the input
26328 * @param {Buffer|Array|String|Number} a the input data
26329 * @return {Buffer}
26330 */
26331 exports.rlphash = function (a) {
26332 return exports.sha3(rlp.encode(a))
26333 }
26334
26335 /**
26336 * Checks if the private key satisfies the rules of the curve secp256k1.
26337 * @param {Buffer} privateKey
26338 * @return {Boolean}
26339 */
26340 exports.isValidPrivate = function (privateKey) {
26341 return secp256k1.privateKeyVerify(privateKey)
26342 }
26343
26344 /**
26345 * Checks if the public key satisfies the rules of the curve secp256k1
26346 * and the requirements of Ethereum.
26347 * @param {Buffer} publicKey The two points of an uncompressed key, unless sanitize is enabled
26348 * @param {Boolean} [sanitize=false] Accept public keys in other formats
26349 * @return {Boolean}
26350 */
26351 exports.isValidPublic = function (publicKey, sanitize) {
26352 if (publicKey.length === 64) {
26353 // Convert to SEC1 for secp256k1
26354 return secp256k1.publicKeyVerify(Buffer.concat([ Buffer.from([4]), publicKey ]))
26355 }
26356
26357 if (!sanitize) {
26358 return false
26359 }
26360
26361 return secp256k1.publicKeyVerify(publicKey)
26362 }
26363
26364 /**
26365 * Returns the ethereum address of a given public key.
26366 * Accepts "Ethereum public keys" and SEC1 encoded keys.
26367 * @param {Buffer} pubKey The two points of an uncompressed key, unless sanitize is enabled
26368 * @param {Boolean} [sanitize=false] Accept public keys in other formats
26369 * @return {Buffer}
26370 */
26371 exports.pubToAddress = exports.publicToAddress = function (pubKey, sanitize) {
26372 pubKey = exports.toBuffer(pubKey)
26373 if (sanitize && (pubKey.length !== 64)) {
26374 pubKey = secp256k1.publicKeyConvert(pubKey, false).slice(1)
26375 }
26376 assert(pubKey.length === 64)
26377 // Only take the lower 160bits of the hash
26378 return exports.sha3(pubKey).slice(-20)
26379 }
26380
26381 /**
26382 * Returns the ethereum public key of a given private key
26383 * @param {Buffer} privateKey A private key must be 256 bits wide
26384 * @return {Buffer}
26385 */
26386 var privateToPublic = exports.privateToPublic = function (privateKey) {
26387 privateKey = exports.toBuffer(privateKey)
26388 // skip the type flag and use the X, Y points
26389 return secp256k1.publicKeyCreate(privateKey, false).slice(1)
26390 }
26391
26392 /**
26393 * Converts a public key to the Ethereum format.
26394 * @param {Buffer} publicKey
26395 * @return {Buffer}
26396 */
26397 exports.importPublic = function (publicKey) {
26398 publicKey = exports.toBuffer(publicKey)
26399 if (publicKey.length !== 64) {
26400 publicKey = secp256k1.publicKeyConvert(publicKey, false).slice(1)
26401 }
26402 return publicKey
26403 }
26404
26405 /**
26406 * ECDSA sign
26407 * @param {Buffer} msgHash
26408 * @param {Buffer} privateKey
26409 * @return {Object}
26410 */
26411 exports.ecsign = function (msgHash, privateKey) {
26412 var sig = secp256k1.sign(msgHash, privateKey)
26413
26414 var ret = {}
26415 ret.r = sig.signature.slice(0, 32)
26416 ret.s = sig.signature.slice(32, 64)
26417 ret.v = sig.recovery + 27
26418 return ret
26419 }
26420
26421 /**
26422 * Returns the keccak-256 hash of `message`, prefixed with the header used by the `eth_sign` RPC call.
26423 * The output of this function can be fed into `ecsign` to produce the same signature as the `eth_sign`
26424 * call for a given `message`, or fed to `ecrecover` along with a signature to recover the public key
26425 * used to produce the signature.
26426 * @param message
26427 * @returns {Buffer} hash
26428 */
26429 exports.hashPersonalMessage = function (message) {
26430 var prefix = exports.toBuffer('\u0019Ethereum Signed Message:\n' + message.length.toString())
26431 return exports.sha3(Buffer.concat([prefix, message]))
26432 }
26433
26434 /**
26435 * ECDSA public key recovery from signature
26436 * @param {Buffer} msgHash
26437 * @param {Number} v
26438 * @param {Buffer} r
26439 * @param {Buffer} s
26440 * @return {Buffer} publicKey
26441 */
26442 exports.ecrecover = function (msgHash, v, r, s) {
26443 var signature = Buffer.concat([exports.setLength(r, 32), exports.setLength(s, 32)], 64)
26444 var recovery = v - 27
26445 if (recovery !== 0 && recovery !== 1) {
26446 throw new Error('Invalid signature v value')
26447 }
26448 var senderPubKey = secp256k1.recover(msgHash, signature, recovery)
26449 return secp256k1.publicKeyConvert(senderPubKey, false).slice(1)
26450 }
26451
26452 /**
26453 * Convert signature parameters into the format of `eth_sign` RPC method
26454 * @param {Number} v
26455 * @param {Buffer} r
26456 * @param {Buffer} s
26457 * @return {String} sig
26458 */
26459 exports.toRpcSig = function (v, r, s) {
26460 // NOTE: with potential introduction of chainId this might need to be updated
26461 if (v !== 27 && v !== 28) {
26462 throw new Error('Invalid recovery id')
26463 }
26464
26465 // geth (and the RPC eth_sign method) uses the 65 byte format used by Bitcoin
26466 // FIXME: this might change in the future - https://github.com/ethereum/go-ethereum/issues/2053
26467 return exports.bufferToHex(Buffer.concat([
26468 exports.setLengthLeft(r, 32),
26469 exports.setLengthLeft(s, 32),
26470 exports.toBuffer(v - 27)
26471 ]))
26472 }
26473
26474 /**
26475 * Convert signature format of the `eth_sign` RPC method to signature parameters
26476 * NOTE: all because of a bug in geth: https://github.com/ethereum/go-ethereum/issues/2053
26477 * @param {String} sig
26478 * @return {Object}
26479 */
26480 exports.fromRpcSig = function (sig) {
26481 sig = exports.toBuffer(sig)
26482
26483 // NOTE: with potential introduction of chainId this might need to be updated
26484 if (sig.length !== 65) {
26485 throw new Error('Invalid signature length')
26486 }
26487
26488 var v = sig[64]
26489 // support both versions of `eth_sign` responses
26490 if (v < 27) {
26491 v += 27
26492 }
26493
26494 return {
26495 v: v,
26496 r: sig.slice(0, 32),
26497 s: sig.slice(32, 64)
26498 }
26499 }
26500
26501 /**
26502 * Returns the ethereum address of a given private key
26503 * @param {Buffer} privateKey A private key must be 256 bits wide
26504 * @return {Buffer}
26505 */
26506 exports.privateToAddress = function (privateKey) {
26507 return exports.publicToAddress(privateToPublic(privateKey))
26508 }
26509
26510 /**
26511 * Checks if the address is a valid. Accepts checksummed addresses too
26512 * @param {String} address
26513 * @return {Boolean}
26514 */
26515 exports.isValidAddress = function (address) {
26516 return /^0x[0-9a-fA-F]{40}$/i.test(address)
26517 }
26518
26519 /**
26520 * Returns a checksummed address
26521 * @param {String} address
26522 * @return {String}
26523 */
26524 exports.toChecksumAddress = function (address) {
26525 address = exports.stripHexPrefix(address).toLowerCase()
26526 var hash = exports.sha3(address).toString('hex')
26527 var ret = '0x'
26528
26529 for (var i = 0; i < address.length; i++) {
26530 if (parseInt(hash[i], 16) >= 8) {
26531 ret += address[i].toUpperCase()
26532 } else {
26533 ret += address[i]
26534 }
26535 }
26536
26537 return ret
26538 }
26539
26540 /**
26541 * Checks if the address is a valid checksummed address
26542 * @param {Buffer} address
26543 * @return {Boolean}
26544 */
26545 exports.isValidChecksumAddress = function (address) {
26546 return exports.isValidAddress(address) && (exports.toChecksumAddress(address) === address)
26547 }
26548
26549 /**
26550 * Generates an address of a newly created contract
26551 * @param {Buffer} from the address which is creating this new address
26552 * @param {Buffer} nonce the nonce of the from account
26553 * @return {Buffer}
26554 */
26555 exports.generateAddress = function (from, nonce) {
26556 from = exports.toBuffer(from)
26557 nonce = new BN(nonce)
26558
26559 if (nonce.isZero()) {
26560 // in RLP we want to encode null in the case of zero nonce
26561 // read the RLP documentation for an answer if you dare
26562 nonce = null
26563 } else {
26564 nonce = Buffer.from(nonce.toArray())
26565 }
26566
26567 // Only take the lower 160bits of the hash
26568 return exports.rlphash([from, nonce]).slice(-20)
26569 }
26570
26571 /**
26572 * Returns true if the supplied address belongs to a precompiled account
26573 * @param {Buffer|String} address
26574 * @return {Boolean}
26575 */
26576 exports.isPrecompiled = function (address) {
26577 var a = exports.unpad(address)
26578 return a.length === 1 && a[0] > 0 && a[0] < 5
26579 }
26580
26581 /**
26582 * Adds "0x" to a given `String` if it does not already start with "0x"
26583 * @param {String} str
26584 * @return {String}
26585 */
26586 exports.addHexPrefix = function (str) {
26587 if (typeof str !== 'string') {
26588 return str
26589 }
26590
26591 return exports.isHexPrefixed(str) ? str : '0x' + str
26592 }
26593
26594 /**
26595 * Validate ECDSA signature
26596 * @method isValidSignature
26597 * @param {Buffer} v
26598 * @param {Buffer} r
26599 * @param {Buffer} s
26600 * @param {Boolean} [homestead=true]
26601 * @return {Boolean}
26602 */
26603
26604 exports.isValidSignature = function (v, r, s, homestead) {
26605 const SECP256K1_N_DIV_2 = new BN('7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0', 16)
26606 const SECP256K1_N = new BN('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 16)
26607
26608 if (r.length !== 32 || s.length !== 32) {
26609 return false
26610 }
26611
26612 if (v !== 27 && v !== 28) {
26613 return false
26614 }
26615
26616 r = new BN(r)
26617 s = new BN(s)
26618
26619 if (r.isZero() || r.gt(SECP256K1_N) || s.isZero() || s.gt(SECP256K1_N)) {
26620 return false
26621 }
26622
26623 if ((homestead === false) && (new BN(s).cmp(SECP256K1_N_DIV_2) === 1)) {
26624 return false
26625 }
26626
26627 return true
26628 }
26629
26630 /**
26631 * Converts a `Buffer` or `Array` to JSON
26632 * @param {Buffer|Array} ba
26633 * @return {Array|String|null}
26634 */
26635 exports.baToJSON = function (ba) {
26636 if (Buffer.isBuffer(ba)) {
26637 return '0x' + ba.toString('hex')
26638 } else if (ba instanceof Array) {
26639 var array = []
26640 for (var i = 0; i < ba.length; i++) {
26641 array.push(exports.baToJSON(ba[i]))
26642 }
26643 return array
26644 }
26645 }
26646
26647 /**
26648 * Defines properties on a `Object`. It make the assumption that underlying data is binary.
26649 * @param {Object} self the `Object` to define properties on
26650 * @param {Array} fields an array fields to define. Fields can contain:
26651 * * `name` - the name of the properties
26652 * * `length` - the number of bytes the field can have
26653 * * `allowLess` - if the field can be less than the length
26654 * * `allowEmpty`
26655 * @param {*} data data to be validated against the definitions
26656 */
26657 exports.defineProperties = function (self, fields, data) {
26658 self.raw = []
26659 self._fields = []
26660
26661 // attach the `toJSON`
26662 self.toJSON = function (label) {
26663 if (label) {
26664 var obj = {}
26665 self._fields.forEach(function (field) {
26666 obj[field] = '0x' + self[field].toString('hex')
26667 })
26668 return obj
26669 }
26670 return exports.baToJSON(this.raw)
26671 }
26672
26673 self.serialize = function serialize () {
26674 return rlp.encode(self.raw)
26675 }
26676
26677 fields.forEach(function (field, i) {
26678 self._fields.push(field.name)
26679 function getter () {
26680 return self.raw[i]
26681 }
26682 function setter (v) {
26683 v = exports.toBuffer(v)
26684
26685 if (v.toString('hex') === '00' && !field.allowZero) {
26686 v = Buffer.allocUnsafe(0)
26687 }
26688
26689 if (field.allowLess && field.length) {
26690 v = exports.stripZeros(v)
26691 assert(field.length >= v.length, 'The field ' + field.name + ' must not have more ' + field.length + ' bytes')
26692 } else if (!(field.allowZero && v.length === 0) && field.length) {
26693 assert(field.length === v.length, 'The field ' + field.name + ' must have byte length of ' + field.length)
26694 }
26695
26696 self.raw[i] = v
26697 }
26698
26699 Object.defineProperty(self, field.name, {
26700 enumerable: true,
26701 configurable: true,
26702 get: getter,
26703 set: setter
26704 })
26705
26706 if (field.default) {
26707 self[field.name] = field.default
26708 }
26709
26710 // attach alias
26711 if (field.alias) {
26712 Object.defineProperty(self, field.alias, {
26713 enumerable: false,
26714 configurable: true,
26715 set: setter,
26716 get: getter
26717 })
26718 }
26719 })
26720
26721 // if the constuctor is passed data
26722 if (data) {
26723 if (typeof data === 'string') {
26724 data = Buffer.from(exports.stripHexPrefix(data), 'hex')
26725 }
26726
26727 if (Buffer.isBuffer(data)) {
26728 data = rlp.decode(data)
26729 }
26730
26731 if (Array.isArray(data)) {
26732 if (data.length > self._fields.length) {
26733 throw (new Error('wrong number of fields in data'))
26734 }
26735
26736 // make sure all the items are buffers
26737 data.forEach(function (d, i) {
26738 self[self._fields[i]] = exports.toBuffer(d)
26739 })
26740 } else if (typeof data === 'object') {
26741 const keys = Object.keys(data)
26742 fields.forEach(function (field) {
26743 if (keys.indexOf(field.name) !== -1) self[field.name] = data[field.name]
26744 if (keys.indexOf(field.alias) !== -1) self[field.alias] = data[field.alias]
26745 })
26746 } else {
26747 throw new Error('invalid data')
26748 }
26749 }
26750 }
26751
26752 }).call(this,require("buffer").Buffer)
26753 },{"assert":1,"bn.js":33,"buffer":5,"create-hash":36,"ethjs-util":56,"keccak":65,"rlp":72,"secp256k1":73}],32:[function(require,module,exports){
26754 (function (Buffer){
26755 // Reference https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki
26756 // Format: 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
26757 // NOTE: SIGHASH byte ignored AND restricted, truncate before use
26758
26759 function check (buffer) {
26760 if (buffer.length < 8) return false
26761 if (buffer.length > 72) return false
26762 if (buffer[0] !== 0x30) return false
26763 if (buffer[1] !== buffer.length - 2) return false
26764 if (buffer[2] !== 0x02) return false
26765
26766 var lenR = buffer[3]
26767 if (lenR === 0) return false
26768 if (5 + lenR >= buffer.length) return false
26769 if (buffer[4 + lenR] !== 0x02) return false
26770
26771 var lenS = buffer[5 + lenR]
26772 if (lenS === 0) return false
26773 if ((6 + lenR + lenS) !== buffer.length) return false
26774
26775 if (buffer[4] & 0x80) return false
26776 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) return false
26777
26778 if (buffer[lenR + 6] & 0x80) return false
26779 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) return false
26780 return true
26781 }
26782
26783 function decode (buffer) {
26784 if (buffer.length < 8) throw new Error('DER sequence length is too short')
26785 if (buffer.length > 72) throw new Error('DER sequence length is too long')
26786 if (buffer[0] !== 0x30) throw new Error('Expected DER sequence')
26787 if (buffer[1] !== buffer.length - 2) throw new Error('DER sequence length is invalid')
26788 if (buffer[2] !== 0x02) throw new Error('Expected DER integer')
26789
26790 var lenR = buffer[3]
26791 if (lenR === 0) throw new Error('R length is zero')
26792 if (5 + lenR >= buffer.length) throw new Error('R length is too long')
26793 if (buffer[4 + lenR] !== 0x02) throw new Error('Expected DER integer (2)')
26794
26795 var lenS = buffer[5 + lenR]
26796 if (lenS === 0) throw new Error('S length is zero')
26797 if ((6 + lenR + lenS) !== buffer.length) throw new Error('S length is invalid')
26798
26799 if (buffer[4] & 0x80) throw new Error('R value is negative')
26800 if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) throw new Error('R value excessively padded')
26801
26802 if (buffer[lenR + 6] & 0x80) throw new Error('S value is negative')
26803 if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) throw new Error('S value excessively padded')
26804
26805 // non-BIP66 - extract R, S values
26806 return {
26807 r: buffer.slice(4, 4 + lenR),
26808 s: buffer.slice(6 + lenR)
26809 }
26810 }
26811
26812 /*
26813 * Expects r and s to be positive DER integers.
26814 *
26815 * The DER format uses the most significant bit as a sign bit (& 0x80).
26816 * If the significant bit is set AND the integer is positive, a 0x00 is prepended.
26817 *
26818 * Examples:
26819 *
26820 * 0 => 0x00
26821 * 1 => 0x01
26822 * -1 => 0xff
26823 * 127 => 0x7f
26824 * -127 => 0x81
26825 * 128 => 0x0080
26826 * -128 => 0x80
26827 * 255 => 0x00ff
26828 * -255 => 0xff01
26829 * 16300 => 0x3fac
26830 * -16300 => 0xc054
26831 * 62300 => 0x00f35c
26832 * -62300 => 0xff0ca4
26833 */
26834 function encode (r, s) {
26835 var lenR = r.length
26836 var lenS = s.length
26837 if (lenR === 0) throw new Error('R length is zero')
26838 if (lenS === 0) throw new Error('S length is zero')
26839 if (lenR > 33) throw new Error('R length is too long')
26840 if (lenS > 33) throw new Error('S length is too long')
26841 if (r[0] & 0x80) throw new Error('R value is negative')
26842 if (s[0] & 0x80) throw new Error('S value is negative')
26843 if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) throw new Error('R value excessively padded')
26844 if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) throw new Error('S value excessively padded')
26845
26846 var signature = new Buffer(6 + lenR + lenS)
26847
26848 // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
26849 signature[0] = 0x30
26850 signature[1] = signature.length - 2
26851 signature[2] = 0x02
26852 signature[3] = r.length
26853 r.copy(signature, 4)
26854 signature[4 + lenR] = 0x02
26855 signature[5 + lenR] = s.length
26856 s.copy(signature, 6 + lenR)
26857
26858 return signature
26859 }
26860
26861 module.exports = {
26862 check: check,
26863 decode: decode,
26864 encode: encode
26865 }
26866
26867 }).call(this,require("buffer").Buffer)
26868 },{"buffer":5}],33:[function(require,module,exports){
26869 (function (module, exports) {
26870 'use strict';
26871
26872 // Utils
26873 function assert (val, msg) {
26874 if (!val) throw new Error(msg || 'Assertion failed');
26875 }
26876
26877 // Could use `inherits` module, but don't want to move from single file
26878 // architecture yet.
26879 function inherits (ctor, superCtor) {
26880 ctor.super_ = superCtor;
26881 var TempCtor = function () {};
26882 TempCtor.prototype = superCtor.prototype;
26883 ctor.prototype = new TempCtor();
26884 ctor.prototype.constructor = ctor;
26885 }
26886
26887 // BN
26888
26889 function BN (number, base, endian) {
26890 if (BN.isBN(number)) {
26891 return number;
26892 }
26893
26894 this.negative = 0;
26895 this.words = null;
26896 this.length = 0;
26897
26898 // Reduction context
26899 this.red = null;
26900
26901 if (number !== null) {
26902 if (base === 'le' || base === 'be') {
26903 endian = base;
26904 base = 10;
26905 }
26906
26907 this._init(number || 0, base || 10, endian || 'be');
26908 }
26909 }
26910 if (typeof module === 'object') {
26911 module.exports = BN;
26912 } else {
26913 exports.BN = BN;
26914 }
26915
26916 BN.BN = BN;
26917 BN.wordSize = 26;
26918
26919 var Buffer;
26920 try {
26921 Buffer = require('buf' + 'fer').Buffer;
26922 } catch (e) {
26923 }
26924
26925 BN.isBN = function isBN (num) {
26926 if (num instanceof BN) {
26927 return true;
26928 }
26929
26930 return num !== null && typeof num === 'object' &&
26931 num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
26932 };
26933
26934 BN.max = function max (left, right) {
26935 if (left.cmp(right) > 0) return left;
26936 return right;
26937 };
26938
26939 BN.min = function min (left, right) {
26940 if (left.cmp(right) < 0) return left;
26941 return right;
26942 };
26943
26944 BN.prototype._init = function init (number, base, endian) {
26945 if (typeof number === 'number') {
26946 return this._initNumber(number, base, endian);
26947 }
26948
26949 if (typeof number === 'object') {
26950 return this._initArray(number, base, endian);
26951 }
26952
26953 if (base === 'hex') {
26954 base = 16;
26955 }
26956 assert(base === (base | 0) && base >= 2 && base <= 36);
26957
26958 number = number.toString().replace(/\s+/g, '');
26959 var start = 0;
26960 if (number[0] === '-') {
26961 start++;
26962 }
26963
26964 if (base === 16) {
26965 this._parseHex(number, start);
26966 } else {
26967 this._parseBase(number, base, start);
26968 }
26969
26970 if (number[0] === '-') {
26971 this.negative = 1;
26972 }
26973
26974 this.strip();
26975
26976 if (endian !== 'le') return;
26977
26978 this._initArray(this.toArray(), base, endian);
26979 };
26980
26981 BN.prototype._initNumber = function _initNumber (number, base, endian) {
26982 if (number < 0) {
26983 this.negative = 1;
26984 number = -number;
26985 }
26986 if (number < 0x4000000) {
26987 this.words = [ number & 0x3ffffff ];
26988 this.length = 1;
26989 } else if (number < 0x10000000000000) {
26990 this.words = [
26991 number & 0x3ffffff,
26992 (number / 0x4000000) & 0x3ffffff
26993 ];
26994 this.length = 2;
26995 } else {
26996 assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)
26997 this.words = [
26998 number & 0x3ffffff,
26999 (number / 0x4000000) & 0x3ffffff,
27000 1
27001 ];
27002 this.length = 3;
27003 }
27004
27005 if (endian !== 'le') return;
27006
27007 // Reverse the bytes
27008 this._initArray(this.toArray(), base, endian);
27009 };
27010
27011 BN.prototype._initArray = function _initArray (number, base, endian) {
27012 // Perhaps a Uint8Array
27013 assert(typeof number.length === 'number');
27014 if (number.length <= 0) {
27015 this.words = [ 0 ];
27016 this.length = 1;
27017 return this;
27018 }
27019
27020 this.length = Math.ceil(number.length / 3);
27021 this.words = new Array(this.length);
27022 for (var i = 0; i < this.length; i++) {
27023 this.words[i] = 0;
27024 }
27025
27026 var j, w;
27027 var off = 0;
27028 if (endian === 'be') {
27029 for (i = number.length - 1, j = 0; i >= 0; i -= 3) {
27030 w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);
27031 this.words[j] |= (w << off) & 0x3ffffff;
27032 this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
27033 off += 24;
27034 if (off >= 26) {
27035 off -= 26;
27036 j++;
27037 }
27038 }
27039 } else if (endian === 'le') {
27040 for (i = 0, j = 0; i < number.length; i += 3) {
27041 w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);
27042 this.words[j] |= (w << off) & 0x3ffffff;
27043 this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
27044 off += 24;
27045 if (off >= 26) {
27046 off -= 26;
27047 j++;
27048 }
27049 }
27050 }
27051 return this.strip();
27052 };
27053
27054 function parseHex (str, start, end) {
27055 var r = 0;
27056 var len = Math.min(str.length, end);
27057 for (var i = start; i < len; i++) {
27058 var c = str.charCodeAt(i) - 48;
27059
27060 r <<= 4;
27061
27062 // 'a' - 'f'
27063 if (c >= 49 && c <= 54) {
27064 r |= c - 49 + 0xa;
27065
27066 // 'A' - 'F'
27067 } else if (c >= 17 && c <= 22) {
27068 r |= c - 17 + 0xa;
27069
27070 // '0' - '9'
27071 } else {
27072 r |= c & 0xf;
27073 }
27074 }
27075 return r;
27076 }
27077
27078 BN.prototype._parseHex = function _parseHex (number, start) {
27079 // Create possibly bigger array to ensure that it fits the number
27080 this.length = Math.ceil((number.length - start) / 6);
27081 this.words = new Array(this.length);
27082 for (var i = 0; i < this.length; i++) {
27083 this.words[i] = 0;
27084 }
27085
27086 var j, w;
27087 // Scan 24-bit chunks and add them to the number
27088 var off = 0;
27089 for (i = number.length - 6, j = 0; i >= start; i -= 6) {
27090 w = parseHex(number, i, i + 6);
27091 this.words[j] |= (w << off) & 0x3ffffff;
27092 // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb
27093 this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;
27094 off += 24;
27095 if (off >= 26) {
27096 off -= 26;
27097 j++;
27098 }
27099 }
27100 if (i + 6 !== start) {
27101 w = parseHex(number, start, i + 6);
27102 this.words[j] |= (w << off) & 0x3ffffff;
27103 this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;
27104 }
27105 this.strip();
27106 };
27107
27108 function parseBase (str, start, end, mul) {
27109 var r = 0;
27110 var len = Math.min(str.length, end);
27111 for (var i = start; i < len; i++) {
27112 var c = str.charCodeAt(i) - 48;
27113
27114 r *= mul;
27115
27116 // 'a'
27117 if (c >= 49) {
27118 r += c - 49 + 0xa;
27119
27120 // 'A'
27121 } else if (c >= 17) {
27122 r += c - 17 + 0xa;
27123
27124 // '0' - '9'
27125 } else {
27126 r += c;
27127 }
27128 }
27129 return r;
27130 }
27131
27132 BN.prototype._parseBase = function _parseBase (number, base, start) {
27133 // Initialize as zero
27134 this.words = [ 0 ];
27135 this.length = 1;
27136
27137 // Find length of limb in base
27138 for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {
27139 limbLen++;
27140 }
27141 limbLen--;
27142 limbPow = (limbPow / base) | 0;
27143
27144 var total = number.length - start;
27145 var mod = total % limbLen;
27146 var end = Math.min(total, total - mod) + start;
27147
27148 var word = 0;
27149 for (var i = start; i < end; i += limbLen) {
27150 word = parseBase(number, i, i + limbLen, base);
27151
27152 this.imuln(limbPow);
27153 if (this.words[0] + word < 0x4000000) {
27154 this.words[0] += word;
27155 } else {
27156 this._iaddn(word);
27157 }
27158 }
27159
27160 if (mod !== 0) {
27161 var pow = 1;
27162 word = parseBase(number, i, number.length, base);
27163
27164 for (i = 0; i < mod; i++) {
27165 pow *= base;
27166 }
27167
27168 this.imuln(pow);
27169 if (this.words[0] + word < 0x4000000) {
27170 this.words[0] += word;
27171 } else {
27172 this._iaddn(word);
27173 }
27174 }
27175 };
27176
27177 BN.prototype.copy = function copy (dest) {
27178 dest.words = new Array(this.length);
27179 for (var i = 0; i < this.length; i++) {
27180 dest.words[i] = this.words[i];
27181 }
27182 dest.length = this.length;
27183 dest.negative = this.negative;
27184 dest.red = this.red;
27185 };
27186
27187 BN.prototype.clone = function clone () {
27188 var r = new BN(null);
27189 this.copy(r);
27190 return r;
27191 };
27192
27193 BN.prototype._expand = function _expand (size) {
27194 while (this.length < size) {
27195 this.words[this.length++] = 0;
27196 }
27197 return this;
27198 };
27199
27200 // Remove leading `0` from `this`
27201 BN.prototype.strip = function strip () {
27202 while (this.length > 1 && this.words[this.length - 1] === 0) {
27203 this.length--;
27204 }
27205 return this._normSign();
27206 };
27207
27208 BN.prototype._normSign = function _normSign () {
27209 // -0 = 0
27210 if (this.length === 1 && this.words[0] === 0) {
27211 this.negative = 0;
27212 }
27213 return this;
27214 };
27215
27216 BN.prototype.inspect = function inspect () {
27217 return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';
27218 };
27219
27220 /*
27221
27222 var zeros = [];
27223 var groupSizes = [];
27224 var groupBases = [];
27225
27226 var s = '';
27227 var i = -1;
27228 while (++i < BN.wordSize) {
27229 zeros[i] = s;
27230 s += '0';
27231 }
27232 groupSizes[0] = 0;
27233 groupSizes[1] = 0;
27234 groupBases[0] = 0;
27235 groupBases[1] = 0;
27236 var base = 2 - 1;
27237 while (++base < 36 + 1) {
27238 var groupSize = 0;
27239 var groupBase = 1;
27240 while (groupBase < (1 << BN.wordSize) / base) {
27241 groupBase *= base;
27242 groupSize += 1;
27243 }
27244 groupSizes[base] = groupSize;
27245 groupBases[base] = groupBase;
27246 }
27247
27248 */
27249
27250 var zeros = [
27251 '',
27252 '0',
27253 '00',
27254 '000',
27255 '0000',
27256 '00000',
27257 '000000',
27258 '0000000',
27259 '00000000',
27260 '000000000',
27261 '0000000000',
27262 '00000000000',
27263 '000000000000',
27264 '0000000000000',
27265 '00000000000000',
27266 '000000000000000',
27267 '0000000000000000',
27268 '00000000000000000',
27269 '000000000000000000',
27270 '0000000000000000000',
27271 '00000000000000000000',
27272 '000000000000000000000',
27273 '0000000000000000000000',
27274 '00000000000000000000000',
27275 '000000000000000000000000',
27276 '0000000000000000000000000'
27277 ];
27278
27279 var groupSizes = [
27280 0, 0,
27281 25, 16, 12, 11, 10, 9, 8,
27282 8, 7, 7, 7, 7, 6, 6,
27283 6, 6, 6, 6, 6, 5, 5,
27284 5, 5, 5, 5, 5, 5, 5,
27285 5, 5, 5, 5, 5, 5, 5
27286 ];
27287
27288 var groupBases = [
27289 0, 0,
27290 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,
27291 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,
27292 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,
27293 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,
27294 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176
27295 ];
27296
27297 BN.prototype.toString = function toString (base, padding) {
27298 base = base || 10;
27299 padding = padding | 0 || 1;
27300
27301 var out;
27302 if (base === 16 || base === 'hex') {
27303 out = '';
27304 var off = 0;
27305 var carry = 0;
27306 for (var i = 0; i < this.length; i++) {
27307 var w = this.words[i];
27308 var word = (((w << off) | carry) & 0xffffff).toString(16);
27309 carry = (w >>> (24 - off)) & 0xffffff;
27310 if (carry !== 0 || i !== this.length - 1) {
27311 out = zeros[6 - word.length] + word + out;
27312 } else {
27313 out = word + out;
27314 }
27315 off += 2;
27316 if (off >= 26) {
27317 off -= 26;
27318 i--;
27319 }
27320 }
27321 if (carry !== 0) {
27322 out = carry.toString(16) + out;
27323 }
27324 while (out.length % padding !== 0) {
27325 out = '0' + out;
27326 }
27327 if (this.negative !== 0) {
27328 out = '-' + out;
27329 }
27330 return out;
27331 }
27332
27333 if (base === (base | 0) && base >= 2 && base <= 36) {
27334 // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));
27335 var groupSize = groupSizes[base];
27336 // var groupBase = Math.pow(base, groupSize);
27337 var groupBase = groupBases[base];
27338 out = '';
27339 var c = this.clone();
27340 c.negative = 0;
27341 while (!c.isZero()) {
27342 var r = c.modn(groupBase).toString(base);
27343 c = c.idivn(groupBase);
27344
27345 if (!c.isZero()) {
27346 out = zeros[groupSize - r.length] + r + out;
27347 } else {
27348 out = r + out;
27349 }
27350 }
27351 if (this.isZero()) {
27352 out = '0' + out;
27353 }
27354 while (out.length % padding !== 0) {
27355 out = '0' + out;
27356 }
27357 if (this.negative !== 0) {
27358 out = '-' + out;
27359 }
27360 return out;
27361 }
27362
27363 assert(false, 'Base should be between 2 and 36');
27364 };
27365
27366 BN.prototype.toNumber = function toNumber () {
27367 var ret = this.words[0];
27368 if (this.length === 2) {
27369 ret += this.words[1] * 0x4000000;
27370 } else if (this.length === 3 && this.words[2] === 0x01) {
27371 // NOTE: at this stage it is known that the top bit is set
27372 ret += 0x10000000000000 + (this.words[1] * 0x4000000);
27373 } else if (this.length > 2) {
27374 assert(false, 'Number can only safely store up to 53 bits');
27375 }
27376 return (this.negative !== 0) ? -ret : ret;
27377 };
27378
27379 BN.prototype.toJSON = function toJSON () {
27380 return this.toString(16);
27381 };
27382
27383 BN.prototype.toBuffer = function toBuffer (endian, length) {
27384 assert(typeof Buffer !== 'undefined');
27385 return this.toArrayLike(Buffer, endian, length);
27386 };
27387
27388 BN.prototype.toArray = function toArray (endian, length) {
27389 return this.toArrayLike(Array, endian, length);
27390 };
27391
27392 BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {
27393 var byteLength = this.byteLength();
27394 var reqLength = length || Math.max(1, byteLength);
27395 assert(byteLength <= reqLength, 'byte array longer than desired length');
27396 assert(reqLength > 0, 'Requested array length <= 0');
27397
27398 this.strip();
27399 var littleEndian = endian === 'le';
27400 var res = new ArrayType(reqLength);
27401
27402 var b, i;
27403 var q = this.clone();
27404 if (!littleEndian) {
27405 // Assume big-endian
27406 for (i = 0; i < reqLength - byteLength; i++) {
27407 res[i] = 0;
27408 }
27409
27410 for (i = 0; !q.isZero(); i++) {
27411 b = q.andln(0xff);
27412 q.iushrn(8);
27413
27414 res[reqLength - i - 1] = b;
27415 }
27416 } else {
27417 for (i = 0; !q.isZero(); i++) {
27418 b = q.andln(0xff);
27419 q.iushrn(8);
27420
27421 res[i] = b;
27422 }
27423
27424 for (; i < reqLength; i++) {
27425 res[i] = 0;
27426 }
27427 }
27428
27429 return res;
27430 };
27431
27432 if (Math.clz32) {
27433 BN.prototype._countBits = function _countBits (w) {
27434 return 32 - Math.clz32(w);
27435 };
27436 } else {
27437 BN.prototype._countBits = function _countBits (w) {
27438 var t = w;
27439 var r = 0;
27440 if (t >= 0x1000) {
27441 r += 13;
27442 t >>>= 13;
27443 }
27444 if (t >= 0x40) {
27445 r += 7;
27446 t >>>= 7;
27447 }
27448 if (t >= 0x8) {
27449 r += 4;
27450 t >>>= 4;
27451 }
27452 if (t >= 0x02) {
27453 r += 2;
27454 t >>>= 2;
27455 }
27456 return r + t;
27457 };
27458 }
27459
27460 BN.prototype._zeroBits = function _zeroBits (w) {
27461 // Short-cut
27462 if (w === 0) return 26;
27463
27464 var t = w;
27465 var r = 0;
27466 if ((t & 0x1fff) === 0) {
27467 r += 13;
27468 t >>>= 13;
27469 }
27470 if ((t & 0x7f) === 0) {
27471 r += 7;
27472 t >>>= 7;
27473 }
27474 if ((t & 0xf) === 0) {
27475 r += 4;
27476 t >>>= 4;
27477 }
27478 if ((t & 0x3) === 0) {
27479 r += 2;
27480 t >>>= 2;
27481 }
27482 if ((t & 0x1) === 0) {
27483 r++;
27484 }
27485 return r;
27486 };
27487
27488 // Return number of used bits in a BN
27489 BN.prototype.bitLength = function bitLength () {
27490 var w = this.words[this.length - 1];
27491 var hi = this._countBits(w);
27492 return (this.length - 1) * 26 + hi;
27493 };
27494
27495 function toBitArray (num) {
27496 var w = new Array(num.bitLength());
27497
27498 for (var bit = 0; bit < w.length; bit++) {
27499 var off = (bit / 26) | 0;
27500 var wbit = bit % 26;
27501
27502 w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;
27503 }
27504
27505 return w;
27506 }
27507
27508 // Number of trailing zero bits
27509 BN.prototype.zeroBits = function zeroBits () {
27510 if (this.isZero()) return 0;
27511
27512 var r = 0;
27513 for (var i = 0; i < this.length; i++) {
27514 var b = this._zeroBits(this.words[i]);
27515 r += b;
27516 if (b !== 26) break;
27517 }
27518 return r;
27519 };
27520
27521 BN.prototype.byteLength = function byteLength () {
27522 return Math.ceil(this.bitLength() / 8);
27523 };
27524
27525 BN.prototype.toTwos = function toTwos (width) {
27526 if (this.negative !== 0) {
27527 return this.abs().inotn(width).iaddn(1);
27528 }
27529 return this.clone();
27530 };
27531
27532 BN.prototype.fromTwos = function fromTwos (width) {
27533 if (this.testn(width - 1)) {
27534 return this.notn(width).iaddn(1).ineg();
27535 }
27536 return this.clone();
27537 };
27538
27539 BN.prototype.isNeg = function isNeg () {
27540 return this.negative !== 0;
27541 };
27542
27543 // Return negative clone of `this`
27544 BN.prototype.neg = function neg () {
27545 return this.clone().ineg();
27546 };
27547
27548 BN.prototype.ineg = function ineg () {
27549 if (!this.isZero()) {
27550 this.negative ^= 1;
27551 }
27552
27553 return this;
27554 };
27555
27556 // Or `num` with `this` in-place
27557 BN.prototype.iuor = function iuor (num) {
27558 while (this.length < num.length) {
27559 this.words[this.length++] = 0;
27560 }
27561
27562 for (var i = 0; i < num.length; i++) {
27563 this.words[i] = this.words[i] | num.words[i];
27564 }
27565
27566 return this.strip();
27567 };
27568
27569 BN.prototype.ior = function ior (num) {
27570 assert((this.negative | num.negative) === 0);
27571 return this.iuor(num);
27572 };
27573
27574 // Or `num` with `this`
27575 BN.prototype.or = function or (num) {
27576 if (this.length > num.length) return this.clone().ior(num);
27577 return num.clone().ior(this);
27578 };
27579
27580 BN.prototype.uor = function uor (num) {
27581 if (this.length > num.length) return this.clone().iuor(num);
27582 return num.clone().iuor(this);
27583 };
27584
27585 // And `num` with `this` in-place
27586 BN.prototype.iuand = function iuand (num) {
27587 // b = min-length(num, this)
27588 var b;
27589 if (this.length > num.length) {
27590 b = num;
27591 } else {
27592 b = this;
27593 }
27594
27595 for (var i = 0; i < b.length; i++) {
27596 this.words[i] = this.words[i] & num.words[i];
27597 }
27598
27599 this.length = b.length;
27600
27601 return this.strip();
27602 };
27603
27604 BN.prototype.iand = function iand (num) {
27605 assert((this.negative | num.negative) === 0);
27606 return this.iuand(num);
27607 };
27608
27609 // And `num` with `this`
27610 BN.prototype.and = function and (num) {
27611 if (this.length > num.length) return this.clone().iand(num);
27612 return num.clone().iand(this);
27613 };
27614
27615 BN.prototype.uand = function uand (num) {
27616 if (this.length > num.length) return this.clone().iuand(num);
27617 return num.clone().iuand(this);
27618 };
27619
27620 // Xor `num` with `this` in-place
27621 BN.prototype.iuxor = function iuxor (num) {
27622 // a.length > b.length
27623 var a;
27624 var b;
27625 if (this.length > num.length) {
27626 a = this;
27627 b = num;
27628 } else {
27629 a = num;
27630 b = this;
27631 }
27632
27633 for (var i = 0; i < b.length; i++) {
27634 this.words[i] = a.words[i] ^ b.words[i];
27635 }
27636
27637 if (this !== a) {
27638 for (; i < a.length; i++) {
27639 this.words[i] = a.words[i];
27640 }
27641 }
27642
27643 this.length = a.length;
27644
27645 return this.strip();
27646 };
27647
27648 BN.prototype.ixor = function ixor (num) {
27649 assert((this.negative | num.negative) === 0);
27650 return this.iuxor(num);
27651 };
27652
27653 // Xor `num` with `this`
27654 BN.prototype.xor = function xor (num) {
27655 if (this.length > num.length) return this.clone().ixor(num);
27656 return num.clone().ixor(this);
27657 };
27658
27659 BN.prototype.uxor = function uxor (num) {
27660 if (this.length > num.length) return this.clone().iuxor(num);
27661 return num.clone().iuxor(this);
27662 };
27663
27664 // Not ``this`` with ``width`` bitwidth
27665 BN.prototype.inotn = function inotn (width) {
27666 assert(typeof width === 'number' && width >= 0);
27667
27668 var bytesNeeded = Math.ceil(width / 26) | 0;
27669 var bitsLeft = width % 26;
27670
27671 // Extend the buffer with leading zeroes
27672 this._expand(bytesNeeded);
27673
27674 if (bitsLeft > 0) {
27675 bytesNeeded--;
27676 }
27677
27678 // Handle complete words
27679 for (var i = 0; i < bytesNeeded; i++) {
27680 this.words[i] = ~this.words[i] & 0x3ffffff;
27681 }
27682
27683 // Handle the residue
27684 if (bitsLeft > 0) {
27685 this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));
27686 }
27687
27688 // And remove leading zeroes
27689 return this.strip();
27690 };
27691
27692 BN.prototype.notn = function notn (width) {
27693 return this.clone().inotn(width);
27694 };
27695
27696 // Set `bit` of `this`
27697 BN.prototype.setn = function setn (bit, val) {
27698 assert(typeof bit === 'number' && bit >= 0);
27699
27700 var off = (bit / 26) | 0;
27701 var wbit = bit % 26;
27702
27703 this._expand(off + 1);
27704
27705 if (val) {
27706 this.words[off] = this.words[off] | (1 << wbit);
27707 } else {
27708 this.words[off] = this.words[off] & ~(1 << wbit);
27709 }
27710
27711 return this.strip();
27712 };
27713
27714 // Add `num` to `this` in-place
27715 BN.prototype.iadd = function iadd (num) {
27716 var r;
27717
27718 // negative + positive
27719 if (this.negative !== 0 && num.negative === 0) {
27720 this.negative = 0;
27721 r = this.isub(num);
27722 this.negative ^= 1;
27723 return this._normSign();
27724
27725 // positive + negative
27726 } else if (this.negative === 0 && num.negative !== 0) {
27727 num.negative = 0;
27728 r = this.isub(num);
27729 num.negative = 1;
27730 return r._normSign();
27731 }
27732
27733 // a.length > b.length
27734 var a, b;
27735 if (this.length > num.length) {
27736 a = this;
27737 b = num;
27738 } else {
27739 a = num;
27740 b = this;
27741 }
27742
27743 var carry = 0;
27744 for (var i = 0; i < b.length; i++) {
27745 r = (a.words[i] | 0) + (b.words[i] | 0) + carry;
27746 this.words[i] = r & 0x3ffffff;
27747 carry = r >>> 26;
27748 }
27749 for (; carry !== 0 && i < a.length; i++) {
27750 r = (a.words[i] | 0) + carry;
27751 this.words[i] = r & 0x3ffffff;
27752 carry = r >>> 26;
27753 }
27754
27755 this.length = a.length;
27756 if (carry !== 0) {
27757 this.words[this.length] = carry;
27758 this.length++;
27759 // Copy the rest of the words
27760 } else if (a !== this) {
27761 for (; i < a.length; i++) {
27762 this.words[i] = a.words[i];
27763 }
27764 }
27765
27766 return this;
27767 };
27768
27769 // Add `num` to `this`
27770 BN.prototype.add = function add (num) {
27771 var res;
27772 if (num.negative !== 0 && this.negative === 0) {
27773 num.negative = 0;
27774 res = this.sub(num);
27775 num.negative ^= 1;
27776 return res;
27777 } else if (num.negative === 0 && this.negative !== 0) {
27778 this.negative = 0;
27779 res = num.sub(this);
27780 this.negative = 1;
27781 return res;
27782 }
27783
27784 if (this.length > num.length) return this.clone().iadd(num);
27785
27786 return num.clone().iadd(this);
27787 };
27788
27789 // Subtract `num` from `this` in-place
27790 BN.prototype.isub = function isub (num) {
27791 // this - (-num) = this + num
27792 if (num.negative !== 0) {
27793 num.negative = 0;
27794 var r = this.iadd(num);
27795 num.negative = 1;
27796 return r._normSign();
27797
27798 // -this - num = -(this + num)
27799 } else if (this.negative !== 0) {
27800 this.negative = 0;
27801 this.iadd(num);
27802 this.negative = 1;
27803 return this._normSign();
27804 }
27805
27806 // At this point both numbers are positive
27807 var cmp = this.cmp(num);
27808
27809 // Optimization - zeroify
27810 if (cmp === 0) {
27811 this.negative = 0;
27812 this.length = 1;
27813 this.words[0] = 0;
27814 return this;
27815 }
27816
27817 // a > b
27818 var a, b;
27819 if (cmp > 0) {
27820 a = this;
27821 b = num;
27822 } else {
27823 a = num;
27824 b = this;
27825 }
27826
27827 var carry = 0;
27828 for (var i = 0; i < b.length; i++) {
27829 r = (a.words[i] | 0) - (b.words[i] | 0) + carry;
27830 carry = r >> 26;
27831 this.words[i] = r & 0x3ffffff;
27832 }
27833 for (; carry !== 0 && i < a.length; i++) {
27834 r = (a.words[i] | 0) + carry;
27835 carry = r >> 26;
27836 this.words[i] = r & 0x3ffffff;
27837 }
27838
27839 // Copy rest of the words
27840 if (carry === 0 && i < a.length && a !== this) {
27841 for (; i < a.length; i++) {
27842 this.words[i] = a.words[i];
27843 }
27844 }
27845
27846 this.length = Math.max(this.length, i);
27847
27848 if (a !== this) {
27849 this.negative = 1;
27850 }
27851
27852 return this.strip();
27853 };
27854
27855 // Subtract `num` from `this`
27856 BN.prototype.sub = function sub (num) {
27857 return this.clone().isub(num);
27858 };
27859
27860 function smallMulTo (self, num, out) {
27861 out.negative = num.negative ^ self.negative;
27862 var len = (self.length + num.length) | 0;
27863 out.length = len;
27864 len = (len - 1) | 0;
27865
27866 // Peel one iteration (compiler can't do it, because of code complexity)
27867 var a = self.words[0] | 0;
27868 var b = num.words[0] | 0;
27869 var r = a * b;
27870
27871 var lo = r & 0x3ffffff;
27872 var carry = (r / 0x4000000) | 0;
27873 out.words[0] = lo;
27874
27875 for (var k = 1; k < len; k++) {
27876 // Sum all words with the same `i + j = k` and accumulate `ncarry`,
27877 // note that ncarry could be >= 0x3ffffff
27878 var ncarry = carry >>> 26;
27879 var rword = carry & 0x3ffffff;
27880 var maxJ = Math.min(k, num.length - 1);
27881 for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
27882 var i = (k - j) | 0;
27883 a = self.words[i] | 0;
27884 b = num.words[j] | 0;
27885 r = a * b + rword;
27886 ncarry += (r / 0x4000000) | 0;
27887 rword = r & 0x3ffffff;
27888 }
27889 out.words[k] = rword | 0;
27890 carry = ncarry | 0;
27891 }
27892 if (carry !== 0) {
27893 out.words[k] = carry | 0;
27894 } else {
27895 out.length--;
27896 }
27897
27898 return out.strip();
27899 }
27900
27901 // TODO(indutny): it may be reasonable to omit it for users who don't need
27902 // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit
27903 // multiplication (like elliptic secp256k1).
27904 var comb10MulTo = function comb10MulTo (self, num, out) {
27905 var a = self.words;
27906 var b = num.words;
27907 var o = out.words;
27908 var c = 0;
27909 var lo;
27910 var mid;
27911 var hi;
27912 var a0 = a[0] | 0;
27913 var al0 = a0 & 0x1fff;
27914 var ah0 = a0 >>> 13;
27915 var a1 = a[1] | 0;
27916 var al1 = a1 & 0x1fff;
27917 var ah1 = a1 >>> 13;
27918 var a2 = a[2] | 0;
27919 var al2 = a2 & 0x1fff;
27920 var ah2 = a2 >>> 13;
27921 var a3 = a[3] | 0;
27922 var al3 = a3 & 0x1fff;
27923 var ah3 = a3 >>> 13;
27924 var a4 = a[4] | 0;
27925 var al4 = a4 & 0x1fff;
27926 var ah4 = a4 >>> 13;
27927 var a5 = a[5] | 0;
27928 var al5 = a5 & 0x1fff;
27929 var ah5 = a5 >>> 13;
27930 var a6 = a[6] | 0;
27931 var al6 = a6 & 0x1fff;
27932 var ah6 = a6 >>> 13;
27933 var a7 = a[7] | 0;
27934 var al7 = a7 & 0x1fff;
27935 var ah7 = a7 >>> 13;
27936 var a8 = a[8] | 0;
27937 var al8 = a8 & 0x1fff;
27938 var ah8 = a8 >>> 13;
27939 var a9 = a[9] | 0;
27940 var al9 = a9 & 0x1fff;
27941 var ah9 = a9 >>> 13;
27942 var b0 = b[0] | 0;
27943 var bl0 = b0 & 0x1fff;
27944 var bh0 = b0 >>> 13;
27945 var b1 = b[1] | 0;
27946 var bl1 = b1 & 0x1fff;
27947 var bh1 = b1 >>> 13;
27948 var b2 = b[2] | 0;
27949 var bl2 = b2 & 0x1fff;
27950 var bh2 = b2 >>> 13;
27951 var b3 = b[3] | 0;
27952 var bl3 = b3 & 0x1fff;
27953 var bh3 = b3 >>> 13;
27954 var b4 = b[4] | 0;
27955 var bl4 = b4 & 0x1fff;
27956 var bh4 = b4 >>> 13;
27957 var b5 = b[5] | 0;
27958 var bl5 = b5 & 0x1fff;
27959 var bh5 = b5 >>> 13;
27960 var b6 = b[6] | 0;
27961 var bl6 = b6 & 0x1fff;
27962 var bh6 = b6 >>> 13;
27963 var b7 = b[7] | 0;
27964 var bl7 = b7 & 0x1fff;
27965 var bh7 = b7 >>> 13;
27966 var b8 = b[8] | 0;
27967 var bl8 = b8 & 0x1fff;
27968 var bh8 = b8 >>> 13;
27969 var b9 = b[9] | 0;
27970 var bl9 = b9 & 0x1fff;
27971 var bh9 = b9 >>> 13;
27972
27973 out.negative = self.negative ^ num.negative;
27974 out.length = 19;
27975 /* k = 0 */
27976 lo = Math.imul(al0, bl0);
27977 mid = Math.imul(al0, bh0);
27978 mid = (mid + Math.imul(ah0, bl0)) | 0;
27979 hi = Math.imul(ah0, bh0);
27980 var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
27981 c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;
27982 w0 &= 0x3ffffff;
27983 /* k = 1 */
27984 lo = Math.imul(al1, bl0);
27985 mid = Math.imul(al1, bh0);
27986 mid = (mid + Math.imul(ah1, bl0)) | 0;
27987 hi = Math.imul(ah1, bh0);
27988 lo = (lo + Math.imul(al0, bl1)) | 0;
27989 mid = (mid + Math.imul(al0, bh1)) | 0;
27990 mid = (mid + Math.imul(ah0, bl1)) | 0;
27991 hi = (hi + Math.imul(ah0, bh1)) | 0;
27992 var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
27993 c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;
27994 w1 &= 0x3ffffff;
27995 /* k = 2 */
27996 lo = Math.imul(al2, bl0);
27997 mid = Math.imul(al2, bh0);
27998 mid = (mid + Math.imul(ah2, bl0)) | 0;
27999 hi = Math.imul(ah2, bh0);
28000 lo = (lo + Math.imul(al1, bl1)) | 0;
28001 mid = (mid + Math.imul(al1, bh1)) | 0;
28002 mid = (mid + Math.imul(ah1, bl1)) | 0;
28003 hi = (hi + Math.imul(ah1, bh1)) | 0;
28004 lo = (lo + Math.imul(al0, bl2)) | 0;
28005 mid = (mid + Math.imul(al0, bh2)) | 0;
28006 mid = (mid + Math.imul(ah0, bl2)) | 0;
28007 hi = (hi + Math.imul(ah0, bh2)) | 0;
28008 var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28009 c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;
28010 w2 &= 0x3ffffff;
28011 /* k = 3 */
28012 lo = Math.imul(al3, bl0);
28013 mid = Math.imul(al3, bh0);
28014 mid = (mid + Math.imul(ah3, bl0)) | 0;
28015 hi = Math.imul(ah3, bh0);
28016 lo = (lo + Math.imul(al2, bl1)) | 0;
28017 mid = (mid + Math.imul(al2, bh1)) | 0;
28018 mid = (mid + Math.imul(ah2, bl1)) | 0;
28019 hi = (hi + Math.imul(ah2, bh1)) | 0;
28020 lo = (lo + Math.imul(al1, bl2)) | 0;
28021 mid = (mid + Math.imul(al1, bh2)) | 0;
28022 mid = (mid + Math.imul(ah1, bl2)) | 0;
28023 hi = (hi + Math.imul(ah1, bh2)) | 0;
28024 lo = (lo + Math.imul(al0, bl3)) | 0;
28025 mid = (mid + Math.imul(al0, bh3)) | 0;
28026 mid = (mid + Math.imul(ah0, bl3)) | 0;
28027 hi = (hi + Math.imul(ah0, bh3)) | 0;
28028 var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28029 c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;
28030 w3 &= 0x3ffffff;
28031 /* k = 4 */
28032 lo = Math.imul(al4, bl0);
28033 mid = Math.imul(al4, bh0);
28034 mid = (mid + Math.imul(ah4, bl0)) | 0;
28035 hi = Math.imul(ah4, bh0);
28036 lo = (lo + Math.imul(al3, bl1)) | 0;
28037 mid = (mid + Math.imul(al3, bh1)) | 0;
28038 mid = (mid + Math.imul(ah3, bl1)) | 0;
28039 hi = (hi + Math.imul(ah3, bh1)) | 0;
28040 lo = (lo + Math.imul(al2, bl2)) | 0;
28041 mid = (mid + Math.imul(al2, bh2)) | 0;
28042 mid = (mid + Math.imul(ah2, bl2)) | 0;
28043 hi = (hi + Math.imul(ah2, bh2)) | 0;
28044 lo = (lo + Math.imul(al1, bl3)) | 0;
28045 mid = (mid + Math.imul(al1, bh3)) | 0;
28046 mid = (mid + Math.imul(ah1, bl3)) | 0;
28047 hi = (hi + Math.imul(ah1, bh3)) | 0;
28048 lo = (lo + Math.imul(al0, bl4)) | 0;
28049 mid = (mid + Math.imul(al0, bh4)) | 0;
28050 mid = (mid + Math.imul(ah0, bl4)) | 0;
28051 hi = (hi + Math.imul(ah0, bh4)) | 0;
28052 var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28053 c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;
28054 w4 &= 0x3ffffff;
28055 /* k = 5 */
28056 lo = Math.imul(al5, bl0);
28057 mid = Math.imul(al5, bh0);
28058 mid = (mid + Math.imul(ah5, bl0)) | 0;
28059 hi = Math.imul(ah5, bh0);
28060 lo = (lo + Math.imul(al4, bl1)) | 0;
28061 mid = (mid + Math.imul(al4, bh1)) | 0;
28062 mid = (mid + Math.imul(ah4, bl1)) | 0;
28063 hi = (hi + Math.imul(ah4, bh1)) | 0;
28064 lo = (lo + Math.imul(al3, bl2)) | 0;
28065 mid = (mid + Math.imul(al3, bh2)) | 0;
28066 mid = (mid + Math.imul(ah3, bl2)) | 0;
28067 hi = (hi + Math.imul(ah3, bh2)) | 0;
28068 lo = (lo + Math.imul(al2, bl3)) | 0;
28069 mid = (mid + Math.imul(al2, bh3)) | 0;
28070 mid = (mid + Math.imul(ah2, bl3)) | 0;
28071 hi = (hi + Math.imul(ah2, bh3)) | 0;
28072 lo = (lo + Math.imul(al1, bl4)) | 0;
28073 mid = (mid + Math.imul(al1, bh4)) | 0;
28074 mid = (mid + Math.imul(ah1, bl4)) | 0;
28075 hi = (hi + Math.imul(ah1, bh4)) | 0;
28076 lo = (lo + Math.imul(al0, bl5)) | 0;
28077 mid = (mid + Math.imul(al0, bh5)) | 0;
28078 mid = (mid + Math.imul(ah0, bl5)) | 0;
28079 hi = (hi + Math.imul(ah0, bh5)) | 0;
28080 var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28081 c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;
28082 w5 &= 0x3ffffff;
28083 /* k = 6 */
28084 lo = Math.imul(al6, bl0);
28085 mid = Math.imul(al6, bh0);
28086 mid = (mid + Math.imul(ah6, bl0)) | 0;
28087 hi = Math.imul(ah6, bh0);
28088 lo = (lo + Math.imul(al5, bl1)) | 0;
28089 mid = (mid + Math.imul(al5, bh1)) | 0;
28090 mid = (mid + Math.imul(ah5, bl1)) | 0;
28091 hi = (hi + Math.imul(ah5, bh1)) | 0;
28092 lo = (lo + Math.imul(al4, bl2)) | 0;
28093 mid = (mid + Math.imul(al4, bh2)) | 0;
28094 mid = (mid + Math.imul(ah4, bl2)) | 0;
28095 hi = (hi + Math.imul(ah4, bh2)) | 0;
28096 lo = (lo + Math.imul(al3, bl3)) | 0;
28097 mid = (mid + Math.imul(al3, bh3)) | 0;
28098 mid = (mid + Math.imul(ah3, bl3)) | 0;
28099 hi = (hi + Math.imul(ah3, bh3)) | 0;
28100 lo = (lo + Math.imul(al2, bl4)) | 0;
28101 mid = (mid + Math.imul(al2, bh4)) | 0;
28102 mid = (mid + Math.imul(ah2, bl4)) | 0;
28103 hi = (hi + Math.imul(ah2, bh4)) | 0;
28104 lo = (lo + Math.imul(al1, bl5)) | 0;
28105 mid = (mid + Math.imul(al1, bh5)) | 0;
28106 mid = (mid + Math.imul(ah1, bl5)) | 0;
28107 hi = (hi + Math.imul(ah1, bh5)) | 0;
28108 lo = (lo + Math.imul(al0, bl6)) | 0;
28109 mid = (mid + Math.imul(al0, bh6)) | 0;
28110 mid = (mid + Math.imul(ah0, bl6)) | 0;
28111 hi = (hi + Math.imul(ah0, bh6)) | 0;
28112 var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28113 c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;
28114 w6 &= 0x3ffffff;
28115 /* k = 7 */
28116 lo = Math.imul(al7, bl0);
28117 mid = Math.imul(al7, bh0);
28118 mid = (mid + Math.imul(ah7, bl0)) | 0;
28119 hi = Math.imul(ah7, bh0);
28120 lo = (lo + Math.imul(al6, bl1)) | 0;
28121 mid = (mid + Math.imul(al6, bh1)) | 0;
28122 mid = (mid + Math.imul(ah6, bl1)) | 0;
28123 hi = (hi + Math.imul(ah6, bh1)) | 0;
28124 lo = (lo + Math.imul(al5, bl2)) | 0;
28125 mid = (mid + Math.imul(al5, bh2)) | 0;
28126 mid = (mid + Math.imul(ah5, bl2)) | 0;
28127 hi = (hi + Math.imul(ah5, bh2)) | 0;
28128 lo = (lo + Math.imul(al4, bl3)) | 0;
28129 mid = (mid + Math.imul(al4, bh3)) | 0;
28130 mid = (mid + Math.imul(ah4, bl3)) | 0;
28131 hi = (hi + Math.imul(ah4, bh3)) | 0;
28132 lo = (lo + Math.imul(al3, bl4)) | 0;
28133 mid = (mid + Math.imul(al3, bh4)) | 0;
28134 mid = (mid + Math.imul(ah3, bl4)) | 0;
28135 hi = (hi + Math.imul(ah3, bh4)) | 0;
28136 lo = (lo + Math.imul(al2, bl5)) | 0;
28137 mid = (mid + Math.imul(al2, bh5)) | 0;
28138 mid = (mid + Math.imul(ah2, bl5)) | 0;
28139 hi = (hi + Math.imul(ah2, bh5)) | 0;
28140 lo = (lo + Math.imul(al1, bl6)) | 0;
28141 mid = (mid + Math.imul(al1, bh6)) | 0;
28142 mid = (mid + Math.imul(ah1, bl6)) | 0;
28143 hi = (hi + Math.imul(ah1, bh6)) | 0;
28144 lo = (lo + Math.imul(al0, bl7)) | 0;
28145 mid = (mid + Math.imul(al0, bh7)) | 0;
28146 mid = (mid + Math.imul(ah0, bl7)) | 0;
28147 hi = (hi + Math.imul(ah0, bh7)) | 0;
28148 var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28149 c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;
28150 w7 &= 0x3ffffff;
28151 /* k = 8 */
28152 lo = Math.imul(al8, bl0);
28153 mid = Math.imul(al8, bh0);
28154 mid = (mid + Math.imul(ah8, bl0)) | 0;
28155 hi = Math.imul(ah8, bh0);
28156 lo = (lo + Math.imul(al7, bl1)) | 0;
28157 mid = (mid + Math.imul(al7, bh1)) | 0;
28158 mid = (mid + Math.imul(ah7, bl1)) | 0;
28159 hi = (hi + Math.imul(ah7, bh1)) | 0;
28160 lo = (lo + Math.imul(al6, bl2)) | 0;
28161 mid = (mid + Math.imul(al6, bh2)) | 0;
28162 mid = (mid + Math.imul(ah6, bl2)) | 0;
28163 hi = (hi + Math.imul(ah6, bh2)) | 0;
28164 lo = (lo + Math.imul(al5, bl3)) | 0;
28165 mid = (mid + Math.imul(al5, bh3)) | 0;
28166 mid = (mid + Math.imul(ah5, bl3)) | 0;
28167 hi = (hi + Math.imul(ah5, bh3)) | 0;
28168 lo = (lo + Math.imul(al4, bl4)) | 0;
28169 mid = (mid + Math.imul(al4, bh4)) | 0;
28170 mid = (mid + Math.imul(ah4, bl4)) | 0;
28171 hi = (hi + Math.imul(ah4, bh4)) | 0;
28172 lo = (lo + Math.imul(al3, bl5)) | 0;
28173 mid = (mid + Math.imul(al3, bh5)) | 0;
28174 mid = (mid + Math.imul(ah3, bl5)) | 0;
28175 hi = (hi + Math.imul(ah3, bh5)) | 0;
28176 lo = (lo + Math.imul(al2, bl6)) | 0;
28177 mid = (mid + Math.imul(al2, bh6)) | 0;
28178 mid = (mid + Math.imul(ah2, bl6)) | 0;
28179 hi = (hi + Math.imul(ah2, bh6)) | 0;
28180 lo = (lo + Math.imul(al1, bl7)) | 0;
28181 mid = (mid + Math.imul(al1, bh7)) | 0;
28182 mid = (mid + Math.imul(ah1, bl7)) | 0;
28183 hi = (hi + Math.imul(ah1, bh7)) | 0;
28184 lo = (lo + Math.imul(al0, bl8)) | 0;
28185 mid = (mid + Math.imul(al0, bh8)) | 0;
28186 mid = (mid + Math.imul(ah0, bl8)) | 0;
28187 hi = (hi + Math.imul(ah0, bh8)) | 0;
28188 var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28189 c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;
28190 w8 &= 0x3ffffff;
28191 /* k = 9 */
28192 lo = Math.imul(al9, bl0);
28193 mid = Math.imul(al9, bh0);
28194 mid = (mid + Math.imul(ah9, bl0)) | 0;
28195 hi = Math.imul(ah9, bh0);
28196 lo = (lo + Math.imul(al8, bl1)) | 0;
28197 mid = (mid + Math.imul(al8, bh1)) | 0;
28198 mid = (mid + Math.imul(ah8, bl1)) | 0;
28199 hi = (hi + Math.imul(ah8, bh1)) | 0;
28200 lo = (lo + Math.imul(al7, bl2)) | 0;
28201 mid = (mid + Math.imul(al7, bh2)) | 0;
28202 mid = (mid + Math.imul(ah7, bl2)) | 0;
28203 hi = (hi + Math.imul(ah7, bh2)) | 0;
28204 lo = (lo + Math.imul(al6, bl3)) | 0;
28205 mid = (mid + Math.imul(al6, bh3)) | 0;
28206 mid = (mid + Math.imul(ah6, bl3)) | 0;
28207 hi = (hi + Math.imul(ah6, bh3)) | 0;
28208 lo = (lo + Math.imul(al5, bl4)) | 0;
28209 mid = (mid + Math.imul(al5, bh4)) | 0;
28210 mid = (mid + Math.imul(ah5, bl4)) | 0;
28211 hi = (hi + Math.imul(ah5, bh4)) | 0;
28212 lo = (lo + Math.imul(al4, bl5)) | 0;
28213 mid = (mid + Math.imul(al4, bh5)) | 0;
28214 mid = (mid + Math.imul(ah4, bl5)) | 0;
28215 hi = (hi + Math.imul(ah4, bh5)) | 0;
28216 lo = (lo + Math.imul(al3, bl6)) | 0;
28217 mid = (mid + Math.imul(al3, bh6)) | 0;
28218 mid = (mid + Math.imul(ah3, bl6)) | 0;
28219 hi = (hi + Math.imul(ah3, bh6)) | 0;
28220 lo = (lo + Math.imul(al2, bl7)) | 0;
28221 mid = (mid + Math.imul(al2, bh7)) | 0;
28222 mid = (mid + Math.imul(ah2, bl7)) | 0;
28223 hi = (hi + Math.imul(ah2, bh7)) | 0;
28224 lo = (lo + Math.imul(al1, bl8)) | 0;
28225 mid = (mid + Math.imul(al1, bh8)) | 0;
28226 mid = (mid + Math.imul(ah1, bl8)) | 0;
28227 hi = (hi + Math.imul(ah1, bh8)) | 0;
28228 lo = (lo + Math.imul(al0, bl9)) | 0;
28229 mid = (mid + Math.imul(al0, bh9)) | 0;
28230 mid = (mid + Math.imul(ah0, bl9)) | 0;
28231 hi = (hi + Math.imul(ah0, bh9)) | 0;
28232 var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28233 c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;
28234 w9 &= 0x3ffffff;
28235 /* k = 10 */
28236 lo = Math.imul(al9, bl1);
28237 mid = Math.imul(al9, bh1);
28238 mid = (mid + Math.imul(ah9, bl1)) | 0;
28239 hi = Math.imul(ah9, bh1);
28240 lo = (lo + Math.imul(al8, bl2)) | 0;
28241 mid = (mid + Math.imul(al8, bh2)) | 0;
28242 mid = (mid + Math.imul(ah8, bl2)) | 0;
28243 hi = (hi + Math.imul(ah8, bh2)) | 0;
28244 lo = (lo + Math.imul(al7, bl3)) | 0;
28245 mid = (mid + Math.imul(al7, bh3)) | 0;
28246 mid = (mid + Math.imul(ah7, bl3)) | 0;
28247 hi = (hi + Math.imul(ah7, bh3)) | 0;
28248 lo = (lo + Math.imul(al6, bl4)) | 0;
28249 mid = (mid + Math.imul(al6, bh4)) | 0;
28250 mid = (mid + Math.imul(ah6, bl4)) | 0;
28251 hi = (hi + Math.imul(ah6, bh4)) | 0;
28252 lo = (lo + Math.imul(al5, bl5)) | 0;
28253 mid = (mid + Math.imul(al5, bh5)) | 0;
28254 mid = (mid + Math.imul(ah5, bl5)) | 0;
28255 hi = (hi + Math.imul(ah5, bh5)) | 0;
28256 lo = (lo + Math.imul(al4, bl6)) | 0;
28257 mid = (mid + Math.imul(al4, bh6)) | 0;
28258 mid = (mid + Math.imul(ah4, bl6)) | 0;
28259 hi = (hi + Math.imul(ah4, bh6)) | 0;
28260 lo = (lo + Math.imul(al3, bl7)) | 0;
28261 mid = (mid + Math.imul(al3, bh7)) | 0;
28262 mid = (mid + Math.imul(ah3, bl7)) | 0;
28263 hi = (hi + Math.imul(ah3, bh7)) | 0;
28264 lo = (lo + Math.imul(al2, bl8)) | 0;
28265 mid = (mid + Math.imul(al2, bh8)) | 0;
28266 mid = (mid + Math.imul(ah2, bl8)) | 0;
28267 hi = (hi + Math.imul(ah2, bh8)) | 0;
28268 lo = (lo + Math.imul(al1, bl9)) | 0;
28269 mid = (mid + Math.imul(al1, bh9)) | 0;
28270 mid = (mid + Math.imul(ah1, bl9)) | 0;
28271 hi = (hi + Math.imul(ah1, bh9)) | 0;
28272 var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28273 c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;
28274 w10 &= 0x3ffffff;
28275 /* k = 11 */
28276 lo = Math.imul(al9, bl2);
28277 mid = Math.imul(al9, bh2);
28278 mid = (mid + Math.imul(ah9, bl2)) | 0;
28279 hi = Math.imul(ah9, bh2);
28280 lo = (lo + Math.imul(al8, bl3)) | 0;
28281 mid = (mid + Math.imul(al8, bh3)) | 0;
28282 mid = (mid + Math.imul(ah8, bl3)) | 0;
28283 hi = (hi + Math.imul(ah8, bh3)) | 0;
28284 lo = (lo + Math.imul(al7, bl4)) | 0;
28285 mid = (mid + Math.imul(al7, bh4)) | 0;
28286 mid = (mid + Math.imul(ah7, bl4)) | 0;
28287 hi = (hi + Math.imul(ah7, bh4)) | 0;
28288 lo = (lo + Math.imul(al6, bl5)) | 0;
28289 mid = (mid + Math.imul(al6, bh5)) | 0;
28290 mid = (mid + Math.imul(ah6, bl5)) | 0;
28291 hi = (hi + Math.imul(ah6, bh5)) | 0;
28292 lo = (lo + Math.imul(al5, bl6)) | 0;
28293 mid = (mid + Math.imul(al5, bh6)) | 0;
28294 mid = (mid + Math.imul(ah5, bl6)) | 0;
28295 hi = (hi + Math.imul(ah5, bh6)) | 0;
28296 lo = (lo + Math.imul(al4, bl7)) | 0;
28297 mid = (mid + Math.imul(al4, bh7)) | 0;
28298 mid = (mid + Math.imul(ah4, bl7)) | 0;
28299 hi = (hi + Math.imul(ah4, bh7)) | 0;
28300 lo = (lo + Math.imul(al3, bl8)) | 0;
28301 mid = (mid + Math.imul(al3, bh8)) | 0;
28302 mid = (mid + Math.imul(ah3, bl8)) | 0;
28303 hi = (hi + Math.imul(ah3, bh8)) | 0;
28304 lo = (lo + Math.imul(al2, bl9)) | 0;
28305 mid = (mid + Math.imul(al2, bh9)) | 0;
28306 mid = (mid + Math.imul(ah2, bl9)) | 0;
28307 hi = (hi + Math.imul(ah2, bh9)) | 0;
28308 var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28309 c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;
28310 w11 &= 0x3ffffff;
28311 /* k = 12 */
28312 lo = Math.imul(al9, bl3);
28313 mid = Math.imul(al9, bh3);
28314 mid = (mid + Math.imul(ah9, bl3)) | 0;
28315 hi = Math.imul(ah9, bh3);
28316 lo = (lo + Math.imul(al8, bl4)) | 0;
28317 mid = (mid + Math.imul(al8, bh4)) | 0;
28318 mid = (mid + Math.imul(ah8, bl4)) | 0;
28319 hi = (hi + Math.imul(ah8, bh4)) | 0;
28320 lo = (lo + Math.imul(al7, bl5)) | 0;
28321 mid = (mid + Math.imul(al7, bh5)) | 0;
28322 mid = (mid + Math.imul(ah7, bl5)) | 0;
28323 hi = (hi + Math.imul(ah7, bh5)) | 0;
28324 lo = (lo + Math.imul(al6, bl6)) | 0;
28325 mid = (mid + Math.imul(al6, bh6)) | 0;
28326 mid = (mid + Math.imul(ah6, bl6)) | 0;
28327 hi = (hi + Math.imul(ah6, bh6)) | 0;
28328 lo = (lo + Math.imul(al5, bl7)) | 0;
28329 mid = (mid + Math.imul(al5, bh7)) | 0;
28330 mid = (mid + Math.imul(ah5, bl7)) | 0;
28331 hi = (hi + Math.imul(ah5, bh7)) | 0;
28332 lo = (lo + Math.imul(al4, bl8)) | 0;
28333 mid = (mid + Math.imul(al4, bh8)) | 0;
28334 mid = (mid + Math.imul(ah4, bl8)) | 0;
28335 hi = (hi + Math.imul(ah4, bh8)) | 0;
28336 lo = (lo + Math.imul(al3, bl9)) | 0;
28337 mid = (mid + Math.imul(al3, bh9)) | 0;
28338 mid = (mid + Math.imul(ah3, bl9)) | 0;
28339 hi = (hi + Math.imul(ah3, bh9)) | 0;
28340 var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28341 c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;
28342 w12 &= 0x3ffffff;
28343 /* k = 13 */
28344 lo = Math.imul(al9, bl4);
28345 mid = Math.imul(al9, bh4);
28346 mid = (mid + Math.imul(ah9, bl4)) | 0;
28347 hi = Math.imul(ah9, bh4);
28348 lo = (lo + Math.imul(al8, bl5)) | 0;
28349 mid = (mid + Math.imul(al8, bh5)) | 0;
28350 mid = (mid + Math.imul(ah8, bl5)) | 0;
28351 hi = (hi + Math.imul(ah8, bh5)) | 0;
28352 lo = (lo + Math.imul(al7, bl6)) | 0;
28353 mid = (mid + Math.imul(al7, bh6)) | 0;
28354 mid = (mid + Math.imul(ah7, bl6)) | 0;
28355 hi = (hi + Math.imul(ah7, bh6)) | 0;
28356 lo = (lo + Math.imul(al6, bl7)) | 0;
28357 mid = (mid + Math.imul(al6, bh7)) | 0;
28358 mid = (mid + Math.imul(ah6, bl7)) | 0;
28359 hi = (hi + Math.imul(ah6, bh7)) | 0;
28360 lo = (lo + Math.imul(al5, bl8)) | 0;
28361 mid = (mid + Math.imul(al5, bh8)) | 0;
28362 mid = (mid + Math.imul(ah5, bl8)) | 0;
28363 hi = (hi + Math.imul(ah5, bh8)) | 0;
28364 lo = (lo + Math.imul(al4, bl9)) | 0;
28365 mid = (mid + Math.imul(al4, bh9)) | 0;
28366 mid = (mid + Math.imul(ah4, bl9)) | 0;
28367 hi = (hi + Math.imul(ah4, bh9)) | 0;
28368 var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28369 c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;
28370 w13 &= 0x3ffffff;
28371 /* k = 14 */
28372 lo = Math.imul(al9, bl5);
28373 mid = Math.imul(al9, bh5);
28374 mid = (mid + Math.imul(ah9, bl5)) | 0;
28375 hi = Math.imul(ah9, bh5);
28376 lo = (lo + Math.imul(al8, bl6)) | 0;
28377 mid = (mid + Math.imul(al8, bh6)) | 0;
28378 mid = (mid + Math.imul(ah8, bl6)) | 0;
28379 hi = (hi + Math.imul(ah8, bh6)) | 0;
28380 lo = (lo + Math.imul(al7, bl7)) | 0;
28381 mid = (mid + Math.imul(al7, bh7)) | 0;
28382 mid = (mid + Math.imul(ah7, bl7)) | 0;
28383 hi = (hi + Math.imul(ah7, bh7)) | 0;
28384 lo = (lo + Math.imul(al6, bl8)) | 0;
28385 mid = (mid + Math.imul(al6, bh8)) | 0;
28386 mid = (mid + Math.imul(ah6, bl8)) | 0;
28387 hi = (hi + Math.imul(ah6, bh8)) | 0;
28388 lo = (lo + Math.imul(al5, bl9)) | 0;
28389 mid = (mid + Math.imul(al5, bh9)) | 0;
28390 mid = (mid + Math.imul(ah5, bl9)) | 0;
28391 hi = (hi + Math.imul(ah5, bh9)) | 0;
28392 var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28393 c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;
28394 w14 &= 0x3ffffff;
28395 /* k = 15 */
28396 lo = Math.imul(al9, bl6);
28397 mid = Math.imul(al9, bh6);
28398 mid = (mid + Math.imul(ah9, bl6)) | 0;
28399 hi = Math.imul(ah9, bh6);
28400 lo = (lo + Math.imul(al8, bl7)) | 0;
28401 mid = (mid + Math.imul(al8, bh7)) | 0;
28402 mid = (mid + Math.imul(ah8, bl7)) | 0;
28403 hi = (hi + Math.imul(ah8, bh7)) | 0;
28404 lo = (lo + Math.imul(al7, bl8)) | 0;
28405 mid = (mid + Math.imul(al7, bh8)) | 0;
28406 mid = (mid + Math.imul(ah7, bl8)) | 0;
28407 hi = (hi + Math.imul(ah7, bh8)) | 0;
28408 lo = (lo + Math.imul(al6, bl9)) | 0;
28409 mid = (mid + Math.imul(al6, bh9)) | 0;
28410 mid = (mid + Math.imul(ah6, bl9)) | 0;
28411 hi = (hi + Math.imul(ah6, bh9)) | 0;
28412 var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28413 c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;
28414 w15 &= 0x3ffffff;
28415 /* k = 16 */
28416 lo = Math.imul(al9, bl7);
28417 mid = Math.imul(al9, bh7);
28418 mid = (mid + Math.imul(ah9, bl7)) | 0;
28419 hi = Math.imul(ah9, bh7);
28420 lo = (lo + Math.imul(al8, bl8)) | 0;
28421 mid = (mid + Math.imul(al8, bh8)) | 0;
28422 mid = (mid + Math.imul(ah8, bl8)) | 0;
28423 hi = (hi + Math.imul(ah8, bh8)) | 0;
28424 lo = (lo + Math.imul(al7, bl9)) | 0;
28425 mid = (mid + Math.imul(al7, bh9)) | 0;
28426 mid = (mid + Math.imul(ah7, bl9)) | 0;
28427 hi = (hi + Math.imul(ah7, bh9)) | 0;
28428 var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28429 c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;
28430 w16 &= 0x3ffffff;
28431 /* k = 17 */
28432 lo = Math.imul(al9, bl8);
28433 mid = Math.imul(al9, bh8);
28434 mid = (mid + Math.imul(ah9, bl8)) | 0;
28435 hi = Math.imul(ah9, bh8);
28436 lo = (lo + Math.imul(al8, bl9)) | 0;
28437 mid = (mid + Math.imul(al8, bh9)) | 0;
28438 mid = (mid + Math.imul(ah8, bl9)) | 0;
28439 hi = (hi + Math.imul(ah8, bh9)) | 0;
28440 var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28441 c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;
28442 w17 &= 0x3ffffff;
28443 /* k = 18 */
28444 lo = Math.imul(al9, bl9);
28445 mid = Math.imul(al9, bh9);
28446 mid = (mid + Math.imul(ah9, bl9)) | 0;
28447 hi = Math.imul(ah9, bh9);
28448 var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
28449 c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;
28450 w18 &= 0x3ffffff;
28451 o[0] = w0;
28452 o[1] = w1;
28453 o[2] = w2;
28454 o[3] = w3;
28455 o[4] = w4;
28456 o[5] = w5;
28457 o[6] = w6;
28458 o[7] = w7;
28459 o[8] = w8;
28460 o[9] = w9;
28461 o[10] = w10;
28462 o[11] = w11;
28463 o[12] = w12;
28464 o[13] = w13;
28465 o[14] = w14;
28466 o[15] = w15;
28467 o[16] = w16;
28468 o[17] = w17;
28469 o[18] = w18;
28470 if (c !== 0) {
28471 o[19] = c;
28472 out.length++;
28473 }
28474 return out;
28475 };
28476
28477 // Polyfill comb
28478 if (!Math.imul) {
28479 comb10MulTo = smallMulTo;
28480 }
28481
28482 function bigMulTo (self, num, out) {
28483 out.negative = num.negative ^ self.negative;
28484 out.length = self.length + num.length;
28485
28486 var carry = 0;
28487 var hncarry = 0;
28488 for (var k = 0; k < out.length - 1; k++) {
28489 // Sum all words with the same `i + j = k` and accumulate `ncarry`,
28490 // note that ncarry could be >= 0x3ffffff
28491 var ncarry = hncarry;
28492 hncarry = 0;
28493 var rword = carry & 0x3ffffff;
28494 var maxJ = Math.min(k, num.length - 1);
28495 for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
28496 var i = k - j;
28497 var a = self.words[i] | 0;
28498 var b = num.words[j] | 0;
28499 var r = a * b;
28500
28501 var lo = r & 0x3ffffff;
28502 ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;
28503 lo = (lo + rword) | 0;
28504 rword = lo & 0x3ffffff;
28505 ncarry = (ncarry + (lo >>> 26)) | 0;
28506
28507 hncarry += ncarry >>> 26;
28508 ncarry &= 0x3ffffff;
28509 }
28510 out.words[k] = rword;
28511 carry = ncarry;
28512 ncarry = hncarry;
28513 }
28514 if (carry !== 0) {
28515 out.words[k] = carry;
28516 } else {
28517 out.length--;
28518 }
28519
28520 return out.strip();
28521 }
28522
28523 function jumboMulTo (self, num, out) {
28524 var fftm = new FFTM();
28525 return fftm.mulp(self, num, out);
28526 }
28527
28528 BN.prototype.mulTo = function mulTo (num, out) {
28529 var res;
28530 var len = this.length + num.length;
28531 if (this.length === 10 && num.length === 10) {
28532 res = comb10MulTo(this, num, out);
28533 } else if (len < 63) {
28534 res = smallMulTo(this, num, out);
28535 } else if (len < 1024) {
28536 res = bigMulTo(this, num, out);
28537 } else {
28538 res = jumboMulTo(this, num, out);
28539 }
28540
28541 return res;
28542 };
28543
28544 // Cooley-Tukey algorithm for FFT
28545 // slightly revisited to rely on looping instead of recursion
28546
28547 function FFTM (x, y) {
28548 this.x = x;
28549 this.y = y;
28550 }
28551
28552 FFTM.prototype.makeRBT = function makeRBT (N) {
28553 var t = new Array(N);
28554 var l = BN.prototype._countBits(N) - 1;
28555 for (var i = 0; i < N; i++) {
28556 t[i] = this.revBin(i, l, N);
28557 }
28558
28559 return t;
28560 };
28561
28562 // Returns binary-reversed representation of `x`
28563 FFTM.prototype.revBin = function revBin (x, l, N) {
28564 if (x === 0 || x === N - 1) return x;
28565
28566 var rb = 0;
28567 for (var i = 0; i < l; i++) {
28568 rb |= (x & 1) << (l - i - 1);
28569 x >>= 1;
28570 }
28571
28572 return rb;
28573 };
28574
28575 // Performs "tweedling" phase, therefore 'emulating'
28576 // behaviour of the recursive algorithm
28577 FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {
28578 for (var i = 0; i < N; i++) {
28579 rtws[i] = rws[rbt[i]];
28580 itws[i] = iws[rbt[i]];
28581 }
28582 };
28583
28584 FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {
28585 this.permute(rbt, rws, iws, rtws, itws, N);
28586
28587 for (var s = 1; s < N; s <<= 1) {
28588 var l = s << 1;
28589
28590 var rtwdf = Math.cos(2 * Math.PI / l);
28591 var itwdf = Math.sin(2 * Math.PI / l);
28592
28593 for (var p = 0; p < N; p += l) {
28594 var rtwdf_ = rtwdf;
28595 var itwdf_ = itwdf;
28596
28597 for (var j = 0; j < s; j++) {
28598 var re = rtws[p + j];
28599 var ie = itws[p + j];
28600
28601 var ro = rtws[p + j + s];
28602 var io = itws[p + j + s];
28603
28604 var rx = rtwdf_ * ro - itwdf_ * io;
28605
28606 io = rtwdf_ * io + itwdf_ * ro;
28607 ro = rx;
28608
28609 rtws[p + j] = re + ro;
28610 itws[p + j] = ie + io;
28611
28612 rtws[p + j + s] = re - ro;
28613 itws[p + j + s] = ie - io;
28614
28615 /* jshint maxdepth : false */
28616 if (j !== l) {
28617 rx = rtwdf * rtwdf_ - itwdf * itwdf_;
28618
28619 itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;
28620 rtwdf_ = rx;
28621 }
28622 }
28623 }
28624 }
28625 };
28626
28627 FFTM.prototype.guessLen13b = function guessLen13b (n, m) {
28628 var N = Math.max(m, n) | 1;
28629 var odd = N & 1;
28630 var i = 0;
28631 for (N = N / 2 | 0; N; N = N >>> 1) {
28632 i++;
28633 }
28634
28635 return 1 << i + 1 + odd;
28636 };
28637
28638 FFTM.prototype.conjugate = function conjugate (rws, iws, N) {
28639 if (N <= 1) return;
28640
28641 for (var i = 0; i < N / 2; i++) {
28642 var t = rws[i];
28643
28644 rws[i] = rws[N - i - 1];
28645 rws[N - i - 1] = t;
28646
28647 t = iws[i];
28648
28649 iws[i] = -iws[N - i - 1];
28650 iws[N - i - 1] = -t;
28651 }
28652 };
28653
28654 FFTM.prototype.normalize13b = function normalize13b (ws, N) {
28655 var carry = 0;
28656 for (var i = 0; i < N / 2; i++) {
28657 var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +
28658 Math.round(ws[2 * i] / N) +
28659 carry;
28660
28661 ws[i] = w & 0x3ffffff;
28662
28663 if (w < 0x4000000) {
28664 carry = 0;
28665 } else {
28666 carry = w / 0x4000000 | 0;
28667 }
28668 }
28669
28670 return ws;
28671 };
28672
28673 FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {
28674 var carry = 0;
28675 for (var i = 0; i < len; i++) {
28676 carry = carry + (ws[i] | 0);
28677
28678 rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;
28679 rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;
28680 }
28681
28682 // Pad with zeroes
28683 for (i = 2 * len; i < N; ++i) {
28684 rws[i] = 0;
28685 }
28686
28687 assert(carry === 0);
28688 assert((carry & ~0x1fff) === 0);
28689 };
28690
28691 FFTM.prototype.stub = function stub (N) {
28692 var ph = new Array(N);
28693 for (var i = 0; i < N; i++) {
28694 ph[i] = 0;
28695 }
28696
28697 return ph;
28698 };
28699
28700 FFTM.prototype.mulp = function mulp (x, y, out) {
28701 var N = 2 * this.guessLen13b(x.length, y.length);
28702
28703 var rbt = this.makeRBT(N);
28704
28705 var _ = this.stub(N);
28706
28707 var rws = new Array(N);
28708 var rwst = new Array(N);
28709 var iwst = new Array(N);
28710
28711 var nrws = new Array(N);
28712 var nrwst = new Array(N);
28713 var niwst = new Array(N);
28714
28715 var rmws = out.words;
28716 rmws.length = N;
28717
28718 this.convert13b(x.words, x.length, rws, N);
28719 this.convert13b(y.words, y.length, nrws, N);
28720
28721 this.transform(rws, _, rwst, iwst, N, rbt);
28722 this.transform(nrws, _, nrwst, niwst, N, rbt);
28723
28724 for (var i = 0; i < N; i++) {
28725 var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];
28726 iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];
28727 rwst[i] = rx;
28728 }
28729
28730 this.conjugate(rwst, iwst, N);
28731 this.transform(rwst, iwst, rmws, _, N, rbt);
28732 this.conjugate(rmws, _, N);
28733 this.normalize13b(rmws, N);
28734
28735 out.negative = x.negative ^ y.negative;
28736 out.length = x.length + y.length;
28737 return out.strip();
28738 };
28739
28740 // Multiply `this` by `num`
28741 BN.prototype.mul = function mul (num) {
28742 var out = new BN(null);
28743 out.words = new Array(this.length + num.length);
28744 return this.mulTo(num, out);
28745 };
28746
28747 // Multiply employing FFT
28748 BN.prototype.mulf = function mulf (num) {
28749 var out = new BN(null);
28750 out.words = new Array(this.length + num.length);
28751 return jumboMulTo(this, num, out);
28752 };
28753
28754 // In-place Multiplication
28755 BN.prototype.imul = function imul (num) {
28756 return this.clone().mulTo(num, this);
28757 };
28758
28759 BN.prototype.imuln = function imuln (num) {
28760 assert(typeof num === 'number');
28761 assert(num < 0x4000000);
28762
28763 // Carry
28764 var carry = 0;
28765 for (var i = 0; i < this.length; i++) {
28766 var w = (this.words[i] | 0) * num;
28767 var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);
28768 carry >>= 26;
28769 carry += (w / 0x4000000) | 0;
28770 // NOTE: lo is 27bit maximum
28771 carry += lo >>> 26;
28772 this.words[i] = lo & 0x3ffffff;
28773 }
28774
28775 if (carry !== 0) {
28776 this.words[i] = carry;
28777 this.length++;
28778 }
28779
28780 return this;
28781 };
28782
28783 BN.prototype.muln = function muln (num) {
28784 return this.clone().imuln(num);
28785 };
28786
28787 // `this` * `this`
28788 BN.prototype.sqr = function sqr () {
28789 return this.mul(this);
28790 };
28791
28792 // `this` * `this` in-place
28793 BN.prototype.isqr = function isqr () {
28794 return this.imul(this.clone());
28795 };
28796
28797 // Math.pow(`this`, `num`)
28798 BN.prototype.pow = function pow (num) {
28799 var w = toBitArray(num);
28800 if (w.length === 0) return new BN(1);
28801
28802 // Skip leading zeroes
28803 var res = this;
28804 for (var i = 0; i < w.length; i++, res = res.sqr()) {
28805 if (w[i] !== 0) break;
28806 }
28807
28808 if (++i < w.length) {
28809 for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {
28810 if (w[i] === 0) continue;
28811
28812 res = res.mul(q);
28813 }
28814 }
28815
28816 return res;
28817 };
28818
28819 // Shift-left in-place
28820 BN.prototype.iushln = function iushln (bits) {
28821 assert(typeof bits === 'number' && bits >= 0);
28822 var r = bits % 26;
28823 var s = (bits - r) / 26;
28824 var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);
28825 var i;
28826
28827 if (r !== 0) {
28828 var carry = 0;
28829
28830 for (i = 0; i < this.length; i++) {
28831 var newCarry = this.words[i] & carryMask;
28832 var c = ((this.words[i] | 0) - newCarry) << r;
28833 this.words[i] = c | carry;
28834 carry = newCarry >>> (26 - r);
28835 }
28836
28837 if (carry) {
28838 this.words[i] = carry;
28839 this.length++;
28840 }
28841 }
28842
28843 if (s !== 0) {
28844 for (i = this.length - 1; i >= 0; i--) {
28845 this.words[i + s] = this.words[i];
28846 }
28847
28848 for (i = 0; i < s; i++) {
28849 this.words[i] = 0;
28850 }
28851
28852 this.length += s;
28853 }
28854
28855 return this.strip();
28856 };
28857
28858 BN.prototype.ishln = function ishln (bits) {
28859 // TODO(indutny): implement me
28860 assert(this.negative === 0);
28861 return this.iushln(bits);
28862 };
28863
28864 // Shift-right in-place
28865 // NOTE: `hint` is a lowest bit before trailing zeroes
28866 // NOTE: if `extended` is present - it will be filled with destroyed bits
28867 BN.prototype.iushrn = function iushrn (bits, hint, extended) {
28868 assert(typeof bits === 'number' && bits >= 0);
28869 var h;
28870 if (hint) {
28871 h = (hint - (hint % 26)) / 26;
28872 } else {
28873 h = 0;
28874 }
28875
28876 var r = bits % 26;
28877 var s = Math.min((bits - r) / 26, this.length);
28878 var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
28879 var maskedWords = extended;
28880
28881 h -= s;
28882 h = Math.max(0, h);
28883
28884 // Extended mode, copy masked part
28885 if (maskedWords) {
28886 for (var i = 0; i < s; i++) {
28887 maskedWords.words[i] = this.words[i];
28888 }
28889 maskedWords.length = s;
28890 }
28891
28892 if (s === 0) {
28893 // No-op, we should not move anything at all
28894 } else if (this.length > s) {
28895 this.length -= s;
28896 for (i = 0; i < this.length; i++) {
28897 this.words[i] = this.words[i + s];
28898 }
28899 } else {
28900 this.words[0] = 0;
28901 this.length = 1;
28902 }
28903
28904 var carry = 0;
28905 for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {
28906 var word = this.words[i] | 0;
28907 this.words[i] = (carry << (26 - r)) | (word >>> r);
28908 carry = word & mask;
28909 }
28910
28911 // Push carried bits as a mask
28912 if (maskedWords && carry !== 0) {
28913 maskedWords.words[maskedWords.length++] = carry;
28914 }
28915
28916 if (this.length === 0) {
28917 this.words[0] = 0;
28918 this.length = 1;
28919 }
28920
28921 return this.strip();
28922 };
28923
28924 BN.prototype.ishrn = function ishrn (bits, hint, extended) {
28925 // TODO(indutny): implement me
28926 assert(this.negative === 0);
28927 return this.iushrn(bits, hint, extended);
28928 };
28929
28930 // Shift-left
28931 BN.prototype.shln = function shln (bits) {
28932 return this.clone().ishln(bits);
28933 };
28934
28935 BN.prototype.ushln = function ushln (bits) {
28936 return this.clone().iushln(bits);
28937 };
28938
28939 // Shift-right
28940 BN.prototype.shrn = function shrn (bits) {
28941 return this.clone().ishrn(bits);
28942 };
28943
28944 BN.prototype.ushrn = function ushrn (bits) {
28945 return this.clone().iushrn(bits);
28946 };
28947
28948 // Test if n bit is set
28949 BN.prototype.testn = function testn (bit) {
28950 assert(typeof bit === 'number' && bit >= 0);
28951 var r = bit % 26;
28952 var s = (bit - r) / 26;
28953 var q = 1 << r;
28954
28955 // Fast case: bit is much higher than all existing words
28956 if (this.length <= s) return false;
28957
28958 // Check bit and return
28959 var w = this.words[s];
28960
28961 return !!(w & q);
28962 };
28963
28964 // Return only lowers bits of number (in-place)
28965 BN.prototype.imaskn = function imaskn (bits) {
28966 assert(typeof bits === 'number' && bits >= 0);
28967 var r = bits % 26;
28968 var s = (bits - r) / 26;
28969
28970 assert(this.negative === 0, 'imaskn works only with positive numbers');
28971
28972 if (this.length <= s) {
28973 return this;
28974 }
28975
28976 if (r !== 0) {
28977 s++;
28978 }
28979 this.length = Math.min(s, this.length);
28980
28981 if (r !== 0) {
28982 var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
28983 this.words[this.length - 1] &= mask;
28984 }
28985
28986 return this.strip();
28987 };
28988
28989 // Return only lowers bits of number
28990 BN.prototype.maskn = function maskn (bits) {
28991 return this.clone().imaskn(bits);
28992 };
28993
28994 // Add plain number `num` to `this`
28995 BN.prototype.iaddn = function iaddn (num) {
28996 assert(typeof num === 'number');
28997 assert(num < 0x4000000);
28998 if (num < 0) return this.isubn(-num);
28999
29000 // Possible sign change
29001 if (this.negative !== 0) {
29002 if (this.length === 1 && (this.words[0] | 0) < num) {
29003 this.words[0] = num - (this.words[0] | 0);
29004 this.negative = 0;
29005 return this;
29006 }
29007
29008 this.negative = 0;
29009 this.isubn(num);
29010 this.negative = 1;
29011 return this;
29012 }
29013
29014 // Add without checks
29015 return this._iaddn(num);
29016 };
29017
29018 BN.prototype._iaddn = function _iaddn (num) {
29019 this.words[0] += num;
29020
29021 // Carry
29022 for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {
29023 this.words[i] -= 0x4000000;
29024 if (i === this.length - 1) {
29025 this.words[i + 1] = 1;
29026 } else {
29027 this.words[i + 1]++;
29028 }
29029 }
29030 this.length = Math.max(this.length, i + 1);
29031
29032 return this;
29033 };
29034
29035 // Subtract plain number `num` from `this`
29036 BN.prototype.isubn = function isubn (num) {
29037 assert(typeof num === 'number');
29038 assert(num < 0x4000000);
29039 if (num < 0) return this.iaddn(-num);
29040
29041 if (this.negative !== 0) {
29042 this.negative = 0;
29043 this.iaddn(num);
29044 this.negative = 1;
29045 return this;
29046 }
29047
29048 this.words[0] -= num;
29049
29050 if (this.length === 1 && this.words[0] < 0) {
29051 this.words[0] = -this.words[0];
29052 this.negative = 1;
29053 } else {
29054 // Carry
29055 for (var i = 0; i < this.length && this.words[i] < 0; i++) {
29056 this.words[i] += 0x4000000;
29057 this.words[i + 1] -= 1;
29058 }
29059 }
29060
29061 return this.strip();
29062 };
29063
29064 BN.prototype.addn = function addn (num) {
29065 return this.clone().iaddn(num);
29066 };
29067
29068 BN.prototype.subn = function subn (num) {
29069 return this.clone().isubn(num);
29070 };
29071
29072 BN.prototype.iabs = function iabs () {
29073 this.negative = 0;
29074
29075 return this;
29076 };
29077
29078 BN.prototype.abs = function abs () {
29079 return this.clone().iabs();
29080 };
29081
29082 BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {
29083 var len = num.length + shift;
29084 var i;
29085
29086 this._expand(len);
29087
29088 var w;
29089 var carry = 0;
29090 for (i = 0; i < num.length; i++) {
29091 w = (this.words[i + shift] | 0) + carry;
29092 var right = (num.words[i] | 0) * mul;
29093 w -= right & 0x3ffffff;
29094 carry = (w >> 26) - ((right / 0x4000000) | 0);
29095 this.words[i + shift] = w & 0x3ffffff;
29096 }
29097 for (; i < this.length - shift; i++) {
29098 w = (this.words[i + shift] | 0) + carry;
29099 carry = w >> 26;
29100 this.words[i + shift] = w & 0x3ffffff;
29101 }
29102
29103 if (carry === 0) return this.strip();
29104
29105 // Subtraction overflow
29106 assert(carry === -1);
29107 carry = 0;
29108 for (i = 0; i < this.length; i++) {
29109 w = -(this.words[i] | 0) + carry;
29110 carry = w >> 26;
29111 this.words[i] = w & 0x3ffffff;
29112 }
29113 this.negative = 1;
29114
29115 return this.strip();
29116 };
29117
29118 BN.prototype._wordDiv = function _wordDiv (num, mode) {
29119 var shift = this.length - num.length;
29120
29121 var a = this.clone();
29122 var b = num;
29123
29124 // Normalize
29125 var bhi = b.words[b.length - 1] | 0;
29126 var bhiBits = this._countBits(bhi);
29127 shift = 26 - bhiBits;
29128 if (shift !== 0) {
29129 b = b.ushln(shift);
29130 a.iushln(shift);
29131 bhi = b.words[b.length - 1] | 0;
29132 }
29133
29134 // Initialize quotient
29135 var m = a.length - b.length;
29136 var q;
29137
29138 if (mode !== 'mod') {
29139 q = new BN(null);
29140 q.length = m + 1;
29141 q.words = new Array(q.length);
29142 for (var i = 0; i < q.length; i++) {
29143 q.words[i] = 0;
29144 }
29145 }
29146
29147 var diff = a.clone()._ishlnsubmul(b, 1, m);
29148 if (diff.negative === 0) {
29149 a = diff;
29150 if (q) {
29151 q.words[m] = 1;
29152 }
29153 }
29154
29155 for (var j = m - 1; j >= 0; j--) {
29156 var qj = (a.words[b.length + j] | 0) * 0x4000000 +
29157 (a.words[b.length + j - 1] | 0);
29158
29159 // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max
29160 // (0x7ffffff)
29161 qj = Math.min((qj / bhi) | 0, 0x3ffffff);
29162
29163 a._ishlnsubmul(b, qj, j);
29164 while (a.negative !== 0) {
29165 qj--;
29166 a.negative = 0;
29167 a._ishlnsubmul(b, 1, j);
29168 if (!a.isZero()) {
29169 a.negative ^= 1;
29170 }
29171 }
29172 if (q) {
29173 q.words[j] = qj;
29174 }
29175 }
29176 if (q) {
29177 q.strip();
29178 }
29179 a.strip();
29180
29181 // Denormalize
29182 if (mode !== 'div' && shift !== 0) {
29183 a.iushrn(shift);
29184 }
29185
29186 return {
29187 div: q || null,
29188 mod: a
29189 };
29190 };
29191
29192 // NOTE: 1) `mode` can be set to `mod` to request mod only,
29193 // to `div` to request div only, or be absent to
29194 // request both div & mod
29195 // 2) `positive` is true if unsigned mod is requested
29196 BN.prototype.divmod = function divmod (num, mode, positive) {
29197 assert(!num.isZero());
29198
29199 if (this.isZero()) {
29200 return {
29201 div: new BN(0),
29202 mod: new BN(0)
29203 };
29204 }
29205
29206 var div, mod, res;
29207 if (this.negative !== 0 && num.negative === 0) {
29208 res = this.neg().divmod(num, mode);
29209
29210 if (mode !== 'mod') {
29211 div = res.div.neg();
29212 }
29213
29214 if (mode !== 'div') {
29215 mod = res.mod.neg();
29216 if (positive && mod.negative !== 0) {
29217 mod.iadd(num);
29218 }
29219 }
29220
29221 return {
29222 div: div,
29223 mod: mod
29224 };
29225 }
29226
29227 if (this.negative === 0 && num.negative !== 0) {
29228 res = this.divmod(num.neg(), mode);
29229
29230 if (mode !== 'mod') {
29231 div = res.div.neg();
29232 }
29233
29234 return {
29235 div: div,
29236 mod: res.mod
29237 };
29238 }
29239
29240 if ((this.negative & num.negative) !== 0) {
29241 res = this.neg().divmod(num.neg(), mode);
29242
29243 if (mode !== 'div') {
29244 mod = res.mod.neg();
29245 if (positive && mod.negative !== 0) {
29246 mod.isub(num);
29247 }
29248 }
29249
29250 return {
29251 div: res.div,
29252 mod: mod
29253 };
29254 }
29255
29256 // Both numbers are positive at this point
29257
29258 // Strip both numbers to approximate shift value
29259 if (num.length > this.length || this.cmp(num) < 0) {
29260 return {
29261 div: new BN(0),
29262 mod: this
29263 };
29264 }
29265
29266 // Very short reduction
29267 if (num.length === 1) {
29268 if (mode === 'div') {
29269 return {
29270 div: this.divn(num.words[0]),
29271 mod: null
29272 };
29273 }
29274
29275 if (mode === 'mod') {
29276 return {
29277 div: null,
29278 mod: new BN(this.modn(num.words[0]))
29279 };
29280 }
29281
29282 return {
29283 div: this.divn(num.words[0]),
29284 mod: new BN(this.modn(num.words[0]))
29285 };
29286 }
29287
29288 return this._wordDiv(num, mode);
29289 };
29290
29291 // Find `this` / `num`
29292 BN.prototype.div = function div (num) {
29293 return this.divmod(num, 'div', false).div;
29294 };
29295
29296 // Find `this` % `num`
29297 BN.prototype.mod = function mod (num) {
29298 return this.divmod(num, 'mod', false).mod;
29299 };
29300
29301 BN.prototype.umod = function umod (num) {
29302 return this.divmod(num, 'mod', true).mod;
29303 };
29304
29305 // Find Round(`this` / `num`)
29306 BN.prototype.divRound = function divRound (num) {
29307 var dm = this.divmod(num);
29308
29309 // Fast case - exact division
29310 if (dm.mod.isZero()) return dm.div;
29311
29312 var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;
29313
29314 var half = num.ushrn(1);
29315 var r2 = num.andln(1);
29316 var cmp = mod.cmp(half);
29317
29318 // Round down
29319 if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;
29320
29321 // Round up
29322 return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);
29323 };
29324
29325 BN.prototype.modn = function modn (num) {
29326 assert(num <= 0x3ffffff);
29327 var p = (1 << 26) % num;
29328
29329 var acc = 0;
29330 for (var i = this.length - 1; i >= 0; i--) {
29331 acc = (p * acc + (this.words[i] | 0)) % num;
29332 }
29333
29334 return acc;
29335 };
29336
29337 // In-place division by number
29338 BN.prototype.idivn = function idivn (num) {
29339 assert(num <= 0x3ffffff);
29340
29341 var carry = 0;
29342 for (var i = this.length - 1; i >= 0; i--) {
29343 var w = (this.words[i] | 0) + carry * 0x4000000;
29344 this.words[i] = (w / num) | 0;
29345 carry = w % num;
29346 }
29347
29348 return this.strip();
29349 };
29350
29351 BN.prototype.divn = function divn (num) {
29352 return this.clone().idivn(num);
29353 };
29354
29355 BN.prototype.egcd = function egcd (p) {
29356 assert(p.negative === 0);
29357 assert(!p.isZero());
29358
29359 var x = this;
29360 var y = p.clone();
29361
29362 if (x.negative !== 0) {
29363 x = x.umod(p);
29364 } else {
29365 x = x.clone();
29366 }
29367
29368 // A * x + B * y = x
29369 var A = new BN(1);
29370 var B = new BN(0);
29371
29372 // C * x + D * y = y
29373 var C = new BN(0);
29374 var D = new BN(1);
29375
29376 var g = 0;
29377
29378 while (x.isEven() && y.isEven()) {
29379 x.iushrn(1);
29380 y.iushrn(1);
29381 ++g;
29382 }
29383
29384 var yp = y.clone();
29385 var xp = x.clone();
29386
29387 while (!x.isZero()) {
29388 for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
29389 if (i > 0) {
29390 x.iushrn(i);
29391 while (i-- > 0) {
29392 if (A.isOdd() || B.isOdd()) {
29393 A.iadd(yp);
29394 B.isub(xp);
29395 }
29396
29397 A.iushrn(1);
29398 B.iushrn(1);
29399 }
29400 }
29401
29402 for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
29403 if (j > 0) {
29404 y.iushrn(j);
29405 while (j-- > 0) {
29406 if (C.isOdd() || D.isOdd()) {
29407 C.iadd(yp);
29408 D.isub(xp);
29409 }
29410
29411 C.iushrn(1);
29412 D.iushrn(1);
29413 }
29414 }
29415
29416 if (x.cmp(y) >= 0) {
29417 x.isub(y);
29418 A.isub(C);
29419 B.isub(D);
29420 } else {
29421 y.isub(x);
29422 C.isub(A);
29423 D.isub(B);
29424 }
29425 }
29426
29427 return {
29428 a: C,
29429 b: D,
29430 gcd: y.iushln(g)
29431 };
29432 };
29433
29434 // This is reduced incarnation of the binary EEA
29435 // above, designated to invert members of the
29436 // _prime_ fields F(p) at a maximal speed
29437 BN.prototype._invmp = function _invmp (p) {
29438 assert(p.negative === 0);
29439 assert(!p.isZero());
29440
29441 var a = this;
29442 var b = p.clone();
29443
29444 if (a.negative !== 0) {
29445 a = a.umod(p);
29446 } else {
29447 a = a.clone();
29448 }
29449
29450 var x1 = new BN(1);
29451 var x2 = new BN(0);
29452
29453 var delta = b.clone();
29454
29455 while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {
29456 for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
29457 if (i > 0) {
29458 a.iushrn(i);
29459 while (i-- > 0) {
29460 if (x1.isOdd()) {
29461 x1.iadd(delta);
29462 }
29463
29464 x1.iushrn(1);
29465 }
29466 }
29467
29468 for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
29469 if (j > 0) {
29470 b.iushrn(j);
29471 while (j-- > 0) {
29472 if (x2.isOdd()) {
29473 x2.iadd(delta);
29474 }
29475
29476 x2.iushrn(1);
29477 }
29478 }
29479
29480 if (a.cmp(b) >= 0) {
29481 a.isub(b);
29482 x1.isub(x2);
29483 } else {
29484 b.isub(a);
29485 x2.isub(x1);
29486 }
29487 }
29488
29489 var res;
29490 if (a.cmpn(1) === 0) {
29491 res = x1;
29492 } else {
29493 res = x2;
29494 }
29495
29496 if (res.cmpn(0) < 0) {
29497 res.iadd(p);
29498 }
29499
29500 return res;
29501 };
29502
29503 BN.prototype.gcd = function gcd (num) {
29504 if (this.isZero()) return num.abs();
29505 if (num.isZero()) return this.abs();
29506
29507 var a = this.clone();
29508 var b = num.clone();
29509 a.negative = 0;
29510 b.negative = 0;
29511
29512 // Remove common factor of two
29513 for (var shift = 0; a.isEven() && b.isEven(); shift++) {
29514 a.iushrn(1);
29515 b.iushrn(1);
29516 }
29517
29518 do {
29519 while (a.isEven()) {
29520 a.iushrn(1);
29521 }
29522 while (b.isEven()) {
29523 b.iushrn(1);
29524 }
29525
29526 var r = a.cmp(b);
29527 if (r < 0) {
29528 // Swap `a` and `b` to make `a` always bigger than `b`
29529 var t = a;
29530 a = b;
29531 b = t;
29532 } else if (r === 0 || b.cmpn(1) === 0) {
29533 break;
29534 }
29535
29536 a.isub(b);
29537 } while (true);
29538
29539 return b.iushln(shift);
29540 };
29541
29542 // Invert number in the field F(num)
29543 BN.prototype.invm = function invm (num) {
29544 return this.egcd(num).a.umod(num);
29545 };
29546
29547 BN.prototype.isEven = function isEven () {
29548 return (this.words[0] & 1) === 0;
29549 };
29550
29551 BN.prototype.isOdd = function isOdd () {
29552 return (this.words[0] & 1) === 1;
29553 };
29554
29555 // And first word and num
29556 BN.prototype.andln = function andln (num) {
29557 return this.words[0] & num;
29558 };
29559
29560 // Increment at the bit position in-line
29561 BN.prototype.bincn = function bincn (bit) {
29562 assert(typeof bit === 'number');
29563 var r = bit % 26;
29564 var s = (bit - r) / 26;
29565 var q = 1 << r;
29566
29567 // Fast case: bit is much higher than all existing words
29568 if (this.length <= s) {
29569 this._expand(s + 1);
29570 this.words[s] |= q;
29571 return this;
29572 }
29573
29574 // Add bit and propagate, if needed
29575 var carry = q;
29576 for (var i = s; carry !== 0 && i < this.length; i++) {
29577 var w = this.words[i] | 0;
29578 w += carry;
29579 carry = w >>> 26;
29580 w &= 0x3ffffff;
29581 this.words[i] = w;
29582 }
29583 if (carry !== 0) {
29584 this.words[i] = carry;
29585 this.length++;
29586 }
29587 return this;
29588 };
29589
29590 BN.prototype.isZero = function isZero () {
29591 return this.length === 1 && this.words[0] === 0;
29592 };
29593
29594 BN.prototype.cmpn = function cmpn (num) {
29595 var negative = num < 0;
29596
29597 if (this.negative !== 0 && !negative) return -1;
29598 if (this.negative === 0 && negative) return 1;
29599
29600 this.strip();
29601
29602 var res;
29603 if (this.length > 1) {
29604 res = 1;
29605 } else {
29606 if (negative) {
29607 num = -num;
29608 }
29609
29610 assert(num <= 0x3ffffff, 'Number is too big');
29611
29612 var w = this.words[0] | 0;
29613 res = w === num ? 0 : w < num ? -1 : 1;
29614 }
29615 if (this.negative !== 0) return -res | 0;
29616 return res;
29617 };
29618
29619 // Compare two numbers and return:
29620 // 1 - if `this` > `num`
29621 // 0 - if `this` == `num`
29622 // -1 - if `this` < `num`
29623 BN.prototype.cmp = function cmp (num) {
29624 if (this.negative !== 0 && num.negative === 0) return -1;
29625 if (this.negative === 0 && num.negative !== 0) return 1;
29626
29627 var res = this.ucmp(num);
29628 if (this.negative !== 0) return -res | 0;
29629 return res;
29630 };
29631
29632 // Unsigned comparison
29633 BN.prototype.ucmp = function ucmp (num) {
29634 // At this point both numbers have the same sign
29635 if (this.length > num.length) return 1;
29636 if (this.length < num.length) return -1;
29637
29638 var res = 0;
29639 for (var i = this.length - 1; i >= 0; i--) {
29640 var a = this.words[i] | 0;
29641 var b = num.words[i] | 0;
29642
29643 if (a === b) continue;
29644 if (a < b) {
29645 res = -1;
29646 } else if (a > b) {
29647 res = 1;
29648 }
29649 break;
29650 }
29651 return res;
29652 };
29653
29654 BN.prototype.gtn = function gtn (num) {
29655 return this.cmpn(num) === 1;
29656 };
29657
29658 BN.prototype.gt = function gt (num) {
29659 return this.cmp(num) === 1;
29660 };
29661
29662 BN.prototype.gten = function gten (num) {
29663 return this.cmpn(num) >= 0;
29664 };
29665
29666 BN.prototype.gte = function gte (num) {
29667 return this.cmp(num) >= 0;
29668 };
29669
29670 BN.prototype.ltn = function ltn (num) {
29671 return this.cmpn(num) === -1;
29672 };
29673
29674 BN.prototype.lt = function lt (num) {
29675 return this.cmp(num) === -1;
29676 };
29677
29678 BN.prototype.lten = function lten (num) {
29679 return this.cmpn(num) <= 0;
29680 };
29681
29682 BN.prototype.lte = function lte (num) {
29683 return this.cmp(num) <= 0;
29684 };
29685
29686 BN.prototype.eqn = function eqn (num) {
29687 return this.cmpn(num) === 0;
29688 };
29689
29690 BN.prototype.eq = function eq (num) {
29691 return this.cmp(num) === 0;
29692 };
29693
29694 //
29695 // A reduce context, could be using montgomery or something better, depending
29696 // on the `m` itself.
29697 //
29698 BN.red = function red (num) {
29699 return new Red(num);
29700 };
29701
29702 BN.prototype.toRed = function toRed (ctx) {
29703 assert(!this.red, 'Already a number in reduction context');
29704 assert(this.negative === 0, 'red works only with positives');
29705 return ctx.convertTo(this)._forceRed(ctx);
29706 };
29707
29708 BN.prototype.fromRed = function fromRed () {
29709 assert(this.red, 'fromRed works only with numbers in reduction context');
29710 return this.red.convertFrom(this);
29711 };
29712
29713 BN.prototype._forceRed = function _forceRed (ctx) {
29714 this.red = ctx;
29715 return this;
29716 };
29717
29718 BN.prototype.forceRed = function forceRed (ctx) {
29719 assert(!this.red, 'Already a number in reduction context');
29720 return this._forceRed(ctx);
29721 };
29722
29723 BN.prototype.redAdd = function redAdd (num) {
29724 assert(this.red, 'redAdd works only with red numbers');
29725 return this.red.add(this, num);
29726 };
29727
29728 BN.prototype.redIAdd = function redIAdd (num) {
29729 assert(this.red, 'redIAdd works only with red numbers');
29730 return this.red.iadd(this, num);
29731 };
29732
29733 BN.prototype.redSub = function redSub (num) {
29734 assert(this.red, 'redSub works only with red numbers');
29735 return this.red.sub(this, num);
29736 };
29737
29738 BN.prototype.redISub = function redISub (num) {
29739 assert(this.red, 'redISub works only with red numbers');
29740 return this.red.isub(this, num);
29741 };
29742
29743 BN.prototype.redShl = function redShl (num) {
29744 assert(this.red, 'redShl works only with red numbers');
29745 return this.red.shl(this, num);
29746 };
29747
29748 BN.prototype.redMul = function redMul (num) {
29749 assert(this.red, 'redMul works only with red numbers');
29750 this.red._verify2(this, num);
29751 return this.red.mul(this, num);
29752 };
29753
29754 BN.prototype.redIMul = function redIMul (num) {
29755 assert(this.red, 'redMul works only with red numbers');
29756 this.red._verify2(this, num);
29757 return this.red.imul(this, num);
29758 };
29759
29760 BN.prototype.redSqr = function redSqr () {
29761 assert(this.red, 'redSqr works only with red numbers');
29762 this.red._verify1(this);
29763 return this.red.sqr(this);
29764 };
29765
29766 BN.prototype.redISqr = function redISqr () {
29767 assert(this.red, 'redISqr works only with red numbers');
29768 this.red._verify1(this);
29769 return this.red.isqr(this);
29770 };
29771
29772 // Square root over p
29773 BN.prototype.redSqrt = function redSqrt () {
29774 assert(this.red, 'redSqrt works only with red numbers');
29775 this.red._verify1(this);
29776 return this.red.sqrt(this);
29777 };
29778
29779 BN.prototype.redInvm = function redInvm () {
29780 assert(this.red, 'redInvm works only with red numbers');
29781 this.red._verify1(this);
29782 return this.red.invm(this);
29783 };
29784
29785 // Return negative clone of `this` % `red modulo`
29786 BN.prototype.redNeg = function redNeg () {
29787 assert(this.red, 'redNeg works only with red numbers');
29788 this.red._verify1(this);
29789 return this.red.neg(this);
29790 };
29791
29792 BN.prototype.redPow = function redPow (num) {
29793 assert(this.red && !num.red, 'redPow(normalNum)');
29794 this.red._verify1(this);
29795 return this.red.pow(this, num);
29796 };
29797
29798 // Prime numbers with efficient reduction
29799 var primes = {
29800 k256: null,
29801 p224: null,
29802 p192: null,
29803 p25519: null
29804 };
29805
29806 // Pseudo-Mersenne prime
29807 function MPrime (name, p) {
29808 // P = 2 ^ N - K
29809 this.name = name;
29810 this.p = new BN(p, 16);
29811 this.n = this.p.bitLength();
29812 this.k = new BN(1).iushln(this.n).isub(this.p);
29813
29814 this.tmp = this._tmp();
29815 }
29816
29817 MPrime.prototype._tmp = function _tmp () {
29818 var tmp = new BN(null);
29819 tmp.words = new Array(Math.ceil(this.n / 13));
29820 return tmp;
29821 };
29822
29823 MPrime.prototype.ireduce = function ireduce (num) {
29824 // Assumes that `num` is less than `P^2`
29825 // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)
29826 var r = num;
29827 var rlen;
29828
29829 do {
29830 this.split(r, this.tmp);
29831 r = this.imulK(r);
29832 r = r.iadd(this.tmp);
29833 rlen = r.bitLength();
29834 } while (rlen > this.n);
29835
29836 var cmp = rlen < this.n ? -1 : r.ucmp(this.p);
29837 if (cmp === 0) {
29838 r.words[0] = 0;
29839 r.length = 1;
29840 } else if (cmp > 0) {
29841 r.isub(this.p);
29842 } else {
29843 r.strip();
29844 }
29845
29846 return r;
29847 };
29848
29849 MPrime.prototype.split = function split (input, out) {
29850 input.iushrn(this.n, 0, out);
29851 };
29852
29853 MPrime.prototype.imulK = function imulK (num) {
29854 return num.imul(this.k);
29855 };
29856
29857 function K256 () {
29858 MPrime.call(
29859 this,
29860 'k256',
29861 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');
29862 }
29863 inherits(K256, MPrime);
29864
29865 K256.prototype.split = function split (input, output) {
29866 // 256 = 9 * 26 + 22
29867 var mask = 0x3fffff;
29868
29869 var outLen = Math.min(input.length, 9);
29870 for (var i = 0; i < outLen; i++) {
29871 output.words[i] = input.words[i];
29872 }
29873 output.length = outLen;
29874
29875 if (input.length <= 9) {
29876 input.words[0] = 0;
29877 input.length = 1;
29878 return;
29879 }
29880
29881 // Shift by 9 limbs
29882 var prev = input.words[9];
29883 output.words[output.length++] = prev & mask;
29884
29885 for (i = 10; i < input.length; i++) {
29886 var next = input.words[i] | 0;
29887 input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);
29888 prev = next;
29889 }
29890 prev >>>= 22;
29891 input.words[i - 10] = prev;
29892 if (prev === 0 && input.length > 10) {
29893 input.length -= 10;
29894 } else {
29895 input.length -= 9;
29896 }
29897 };
29898
29899 K256.prototype.imulK = function imulK (num) {
29900 // K = 0x1000003d1 = [ 0x40, 0x3d1 ]
29901 num.words[num.length] = 0;
29902 num.words[num.length + 1] = 0;
29903 num.length += 2;
29904
29905 // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390
29906 var lo = 0;
29907 for (var i = 0; i < num.length; i++) {
29908 var w = num.words[i] | 0;
29909 lo += w * 0x3d1;
29910 num.words[i] = lo & 0x3ffffff;
29911 lo = w * 0x40 + ((lo / 0x4000000) | 0);
29912 }
29913
29914 // Fast length reduction
29915 if (num.words[num.length - 1] === 0) {
29916 num.length--;
29917 if (num.words[num.length - 1] === 0) {
29918 num.length--;
29919 }
29920 }
29921 return num;
29922 };
29923
29924 function P224 () {
29925 MPrime.call(
29926 this,
29927 'p224',
29928 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');
29929 }
29930 inherits(P224, MPrime);
29931
29932 function P192 () {
29933 MPrime.call(
29934 this,
29935 'p192',
29936 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');
29937 }
29938 inherits(P192, MPrime);
29939
29940 function P25519 () {
29941 // 2 ^ 255 - 19
29942 MPrime.call(
29943 this,
29944 '25519',
29945 '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');
29946 }
29947 inherits(P25519, MPrime);
29948
29949 P25519.prototype.imulK = function imulK (num) {
29950 // K = 0x13
29951 var carry = 0;
29952 for (var i = 0; i < num.length; i++) {
29953 var hi = (num.words[i] | 0) * 0x13 + carry;
29954 var lo = hi & 0x3ffffff;
29955 hi >>>= 26;
29956
29957 num.words[i] = lo;
29958 carry = hi;
29959 }
29960 if (carry !== 0) {
29961 num.words[num.length++] = carry;
29962 }
29963 return num;
29964 };
29965
29966 // Exported mostly for testing purposes, use plain name instead
29967 BN._prime = function prime (name) {
29968 // Cached version of prime
29969 if (primes[name]) return primes[name];
29970
29971 var prime;
29972 if (name === 'k256') {
29973 prime = new K256();
29974 } else if (name === 'p224') {
29975 prime = new P224();
29976 } else if (name === 'p192') {
29977 prime = new P192();
29978 } else if (name === 'p25519') {
29979 prime = new P25519();
29980 } else {
29981 throw new Error('Unknown prime ' + name);
29982 }
29983 primes[name] = prime;
29984
29985 return prime;
29986 };
29987
29988 //
29989 // Base reduction engine
29990 //
29991 function Red (m) {
29992 if (typeof m === 'string') {
29993 var prime = BN._prime(m);
29994 this.m = prime.p;
29995 this.prime = prime;
29996 } else {
29997 assert(m.gtn(1), 'modulus must be greater than 1');
29998 this.m = m;
29999 this.prime = null;
30000 }
30001 }
30002
30003 Red.prototype._verify1 = function _verify1 (a) {
30004 assert(a.negative === 0, 'red works only with positives');
30005 assert(a.red, 'red works only with red numbers');
30006 };
30007
30008 Red.prototype._verify2 = function _verify2 (a, b) {
30009 assert((a.negative | b.negative) === 0, 'red works only with positives');
30010 assert(a.red && a.red === b.red,
30011 'red works only with red numbers');
30012 };
30013
30014 Red.prototype.imod = function imod (a) {
30015 if (this.prime) return this.prime.ireduce(a)._forceRed(this);
30016 return a.umod(this.m)._forceRed(this);
30017 };
30018
30019 Red.prototype.neg = function neg (a) {
30020 if (a.isZero()) {
30021 return a.clone();
30022 }
30023
30024 return this.m.sub(a)._forceRed(this);
30025 };
30026
30027 Red.prototype.add = function add (a, b) {
30028 this._verify2(a, b);
30029
30030 var res = a.add(b);
30031 if (res.cmp(this.m) >= 0) {
30032 res.isub(this.m);
30033 }
30034 return res._forceRed(this);
30035 };
30036
30037 Red.prototype.iadd = function iadd (a, b) {
30038 this._verify2(a, b);
30039
30040 var res = a.iadd(b);
30041 if (res.cmp(this.m) >= 0) {
30042 res.isub(this.m);
30043 }
30044 return res;
30045 };
30046
30047 Red.prototype.sub = function sub (a, b) {
30048 this._verify2(a, b);
30049
30050 var res = a.sub(b);
30051 if (res.cmpn(0) < 0) {
30052 res.iadd(this.m);
30053 }
30054 return res._forceRed(this);
30055 };
30056
30057 Red.prototype.isub = function isub (a, b) {
30058 this._verify2(a, b);
30059
30060 var res = a.isub(b);
30061 if (res.cmpn(0) < 0) {
30062 res.iadd(this.m);
30063 }
30064 return res;
30065 };
30066
30067 Red.prototype.shl = function shl (a, num) {
30068 this._verify1(a);
30069 return this.imod(a.ushln(num));
30070 };
30071
30072 Red.prototype.imul = function imul (a, b) {
30073 this._verify2(a, b);
30074 return this.imod(a.imul(b));
30075 };
30076
30077 Red.prototype.mul = function mul (a, b) {
30078 this._verify2(a, b);
30079 return this.imod(a.mul(b));
30080 };
30081
30082 Red.prototype.isqr = function isqr (a) {
30083 return this.imul(a, a.clone());
30084 };
30085
30086 Red.prototype.sqr = function sqr (a) {
30087 return this.mul(a, a);
30088 };
30089
30090 Red.prototype.sqrt = function sqrt (a) {
30091 if (a.isZero()) return a.clone();
30092
30093 var mod3 = this.m.andln(3);
30094 assert(mod3 % 2 === 1);
30095
30096 // Fast case
30097 if (mod3 === 3) {
30098 var pow = this.m.add(new BN(1)).iushrn(2);
30099 return this.pow(a, pow);
30100 }
30101
30102 // Tonelli-Shanks algorithm (Totally unoptimized and slow)
30103 //
30104 // Find Q and S, that Q * 2 ^ S = (P - 1)
30105 var q = this.m.subn(1);
30106 var s = 0;
30107 while (!q.isZero() && q.andln(1) === 0) {
30108 s++;
30109 q.iushrn(1);
30110 }
30111 assert(!q.isZero());
30112
30113 var one = new BN(1).toRed(this);
30114 var nOne = one.redNeg();
30115
30116 // Find quadratic non-residue
30117 // NOTE: Max is such because of generalized Riemann hypothesis.
30118 var lpow = this.m.subn(1).iushrn(1);
30119 var z = this.m.bitLength();
30120 z = new BN(2 * z * z).toRed(this);
30121
30122 while (this.pow(z, lpow).cmp(nOne) !== 0) {
30123 z.redIAdd(nOne);
30124 }
30125
30126 var c = this.pow(z, q);
30127 var r = this.pow(a, q.addn(1).iushrn(1));
30128 var t = this.pow(a, q);
30129 var m = s;
30130 while (t.cmp(one) !== 0) {
30131 var tmp = t;
30132 for (var i = 0; tmp.cmp(one) !== 0; i++) {
30133 tmp = tmp.redSqr();
30134 }
30135 assert(i < m);
30136 var b = this.pow(c, new BN(1).iushln(m - i - 1));
30137
30138 r = r.redMul(b);
30139 c = b.redSqr();
30140 t = t.redMul(c);
30141 m = i;
30142 }
30143
30144 return r;
30145 };
30146
30147 Red.prototype.invm = function invm (a) {
30148 var inv = a._invmp(this.m);
30149 if (inv.negative !== 0) {
30150 inv.negative = 0;
30151 return this.imod(inv).redNeg();
30152 } else {
30153 return this.imod(inv);
30154 }
30155 };
30156
30157 Red.prototype.pow = function pow (a, num) {
30158 if (num.isZero()) return new BN(1);
30159 if (num.cmpn(1) === 0) return a.clone();
30160
30161 var windowSize = 4;
30162 var wnd = new Array(1 << windowSize);
30163 wnd[0] = new BN(1).toRed(this);
30164 wnd[1] = a;
30165 for (var i = 2; i < wnd.length; i++) {
30166 wnd[i] = this.mul(wnd[i - 1], a);
30167 }
30168
30169 var res = wnd[0];
30170 var current = 0;
30171 var currentLen = 0;
30172 var start = num.bitLength() % 26;
30173 if (start === 0) {
30174 start = 26;
30175 }
30176
30177 for (i = num.length - 1; i >= 0; i--) {
30178 var word = num.words[i];
30179 for (var j = start - 1; j >= 0; j--) {
30180 var bit = (word >> j) & 1;
30181 if (res !== wnd[0]) {
30182 res = this.sqr(res);
30183 }
30184
30185 if (bit === 0 && current === 0) {
30186 currentLen = 0;
30187 continue;
30188 }
30189
30190 current <<= 1;
30191 current |= bit;
30192 currentLen++;
30193 if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;
30194
30195 res = this.mul(res, wnd[current]);
30196 currentLen = 0;
30197 current = 0;
30198 }
30199 start = 26;
30200 }
30201
30202 return res;
30203 };
30204
30205 Red.prototype.convertTo = function convertTo (num) {
30206 var r = num.umod(this.m);
30207
30208 return r === num ? r.clone() : r;
30209 };
30210
30211 Red.prototype.convertFrom = function convertFrom (num) {
30212 var res = num.clone();
30213 res.red = null;
30214 return res;
30215 };
30216
30217 //
30218 // Montgomery method engine
30219 //
30220
30221 BN.mont = function mont (num) {
30222 return new Mont(num);
30223 };
30224
30225 function Mont (m) {
30226 Red.call(this, m);
30227
30228 this.shift = this.m.bitLength();
30229 if (this.shift % 26 !== 0) {
30230 this.shift += 26 - (this.shift % 26);
30231 }
30232
30233 this.r = new BN(1).iushln(this.shift);
30234 this.r2 = this.imod(this.r.sqr());
30235 this.rinv = this.r._invmp(this.m);
30236
30237 this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);
30238 this.minv = this.minv.umod(this.r);
30239 this.minv = this.r.sub(this.minv);
30240 }
30241 inherits(Mont, Red);
30242
30243 Mont.prototype.convertTo = function convertTo (num) {
30244 return this.imod(num.ushln(this.shift));
30245 };
30246
30247 Mont.prototype.convertFrom = function convertFrom (num) {
30248 var r = this.imod(num.mul(this.rinv));
30249 r.red = null;
30250 return r;
30251 };
30252
30253 Mont.prototype.imul = function imul (a, b) {
30254 if (a.isZero() || b.isZero()) {
30255 a.words[0] = 0;
30256 a.length = 1;
30257 return a;
30258 }
30259
30260 var t = a.imul(b);
30261 var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
30262 var u = t.isub(c).iushrn(this.shift);
30263 var res = u;
30264
30265 if (u.cmp(this.m) >= 0) {
30266 res = u.isub(this.m);
30267 } else if (u.cmpn(0) < 0) {
30268 res = u.iadd(this.m);
30269 }
30270
30271 return res._forceRed(this);
30272 };
30273
30274 Mont.prototype.mul = function mul (a, b) {
30275 if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);
30276
30277 var t = a.mul(b);
30278 var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
30279 var u = t.isub(c).iushrn(this.shift);
30280 var res = u;
30281 if (u.cmp(this.m) >= 0) {
30282 res = u.isub(this.m);
30283 } else if (u.cmpn(0) < 0) {
30284 res = u.iadd(this.m);
30285 }
30286
30287 return res._forceRed(this);
30288 };
30289
30290 Mont.prototype.invm = function invm (a) {
30291 // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R
30292 var res = this.imod(a._invmp(this.m).mul(this.r2));
30293 return res._forceRed(this);
30294 };
30295 })(typeof module === 'undefined' || module, this);
30296
30297 },{}],34:[function(require,module,exports){
30298 var r;
30299
30300 module.exports = function rand(len) {
30301 if (!r)
30302 r = new Rand(null);
30303
30304 return r.generate(len);
30305 };
30306
30307 function Rand(rand) {
30308 this.rand = rand;
30309 }
30310 module.exports.Rand = Rand;
30311
30312 Rand.prototype.generate = function generate(len) {
30313 return this._rand(len);
30314 };
30315
30316 if (typeof self === 'object') {
30317 if (self.crypto && self.crypto.getRandomValues) {
30318 // Modern browsers
30319 Rand.prototype._rand = function _rand(n) {
30320 var arr = new Uint8Array(n);
30321 self.crypto.getRandomValues(arr);
30322 return arr;
30323 };
30324 } else if (self.msCrypto && self.msCrypto.getRandomValues) {
30325 // IE
30326 Rand.prototype._rand = function _rand(n) {
30327 var arr = new Uint8Array(n);
30328 self.msCrypto.getRandomValues(arr);
30329 return arr;
30330 };
30331 } else {
30332 // Old junk
30333 Rand.prototype._rand = function() {
30334 throw new Error('Not implemented yet');
30335 };
30336 }
30337 } else {
30338 // Node.js or Web worker with no crypto support
30339 try {
30340 var crypto = require('crypto');
30341
30342 Rand.prototype._rand = function _rand(n) {
30343 return crypto.randomBytes(n);
30344 };
30345 } catch (e) {
30346 // Emulate crypto API using randy
30347 Rand.prototype._rand = function _rand(n) {
30348 var res = new Uint8Array(n);
30349 for (var i = 0; i < res.length; i++)
30350 res[i] = this.rand.getByte();
30351 return res;
30352 };
30353 }
30354 }
30355
30356 },{"crypto":3}],35:[function(require,module,exports){
30357 (function (Buffer){
30358 var Transform = require('stream').Transform
30359 var inherits = require('inherits')
30360 var StringDecoder = require('string_decoder').StringDecoder
30361 module.exports = CipherBase
30362 inherits(CipherBase, Transform)
30363 function CipherBase (hashMode) {
30364 Transform.call(this)
30365 this.hashMode = typeof hashMode === 'string'
30366 if (this.hashMode) {
30367 this[hashMode] = this._finalOrDigest
30368 } else {
30369 this.final = this._finalOrDigest
30370 }
30371 this._decoder = null
30372 this._encoding = null
30373 }
30374 CipherBase.prototype.update = function (data, inputEnc, outputEnc) {
30375 if (typeof data === 'string') {
30376 data = new Buffer(data, inputEnc)
30377 }
30378 var outData = this._update(data)
30379 if (this.hashMode) {
30380 return this
30381 }
30382 if (outputEnc) {
30383 outData = this._toString(outData, outputEnc)
30384 }
30385 return outData
30386 }
30387
30388 CipherBase.prototype.setAutoPadding = function () {}
30389
30390 CipherBase.prototype.getAuthTag = function () {
30391 throw new Error('trying to get auth tag in unsupported state')
30392 }
30393
30394 CipherBase.prototype.setAuthTag = function () {
30395 throw new Error('trying to set auth tag in unsupported state')
30396 }
30397
30398 CipherBase.prototype.setAAD = function () {
30399 throw new Error('trying to set aad in unsupported state')
30400 }
30401
30402 CipherBase.prototype._transform = function (data, _, next) {
30403 var err
30404 try {
30405 if (this.hashMode) {
30406 this._update(data)
30407 } else {
30408 this.push(this._update(data))
30409 }
30410 } catch (e) {
30411 err = e
30412 } finally {
30413 next(err)
30414 }
30415 }
30416 CipherBase.prototype._flush = function (done) {
30417 var err
30418 try {
30419 this.push(this._final())
30420 } catch (e) {
30421 err = e
30422 } finally {
30423 done(err)
30424 }
30425 }
30426 CipherBase.prototype._finalOrDigest = function (outputEnc) {
30427 var outData = this._final() || new Buffer('')
30428 if (outputEnc) {
30429 outData = this._toString(outData, outputEnc, true)
30430 }
30431 return outData
30432 }
30433
30434 CipherBase.prototype._toString = function (value, enc, fin) {
30435 if (!this._decoder) {
30436 this._decoder = new StringDecoder(enc)
30437 this._encoding = enc
30438 }
30439 if (this._encoding !== enc) {
30440 throw new Error('can\'t switch encodings')
30441 }
30442 var out = this._decoder.write(value)
30443 if (fin) {
30444 out += this._decoder.end()
30445 }
30446 return out
30447 }
30448
30449 }).call(this,require("buffer").Buffer)
30450 },{"buffer":5,"inherits":63,"stream":25,"string_decoder":26}],36:[function(require,module,exports){
30451 (function (Buffer){
30452 'use strict';
30453 var inherits = require('inherits')
30454 var md5 = require('./md5')
30455 var rmd160 = require('ripemd160')
30456 var sha = require('sha.js')
30457
30458 var Base = require('cipher-base')
30459
30460 function HashNoConstructor(hash) {
30461 Base.call(this, 'digest')
30462
30463 this._hash = hash
30464 this.buffers = []
30465 }
30466
30467 inherits(HashNoConstructor, Base)
30468
30469 HashNoConstructor.prototype._update = function (data) {
30470 this.buffers.push(data)
30471 }
30472
30473 HashNoConstructor.prototype._final = function () {
30474 var buf = Buffer.concat(this.buffers)
30475 var r = this._hash(buf)
30476 this.buffers = null
30477
30478 return r
30479 }
30480
30481 function Hash(hash) {
30482 Base.call(this, 'digest')
30483
30484 this._hash = hash
30485 }
30486
30487 inherits(Hash, Base)
30488
30489 Hash.prototype._update = function (data) {
30490 this._hash.update(data)
30491 }
30492
30493 Hash.prototype._final = function () {
30494 return this._hash.digest()
30495 }
30496
30497 module.exports = function createHash (alg) {
30498 alg = alg.toLowerCase()
30499 if ('md5' === alg) return new HashNoConstructor(md5)
30500 if ('rmd160' === alg || 'ripemd160' === alg) return new HashNoConstructor(rmd160)
30501
30502 return new Hash(sha(alg))
30503 }
30504
30505 }).call(this,require("buffer").Buffer)
30506 },{"./md5":38,"buffer":5,"cipher-base":35,"inherits":63,"ripemd160":71,"sha.js":80}],37:[function(require,module,exports){
30507 (function (Buffer){
30508 'use strict';
30509 var intSize = 4;
30510 var zeroBuffer = new Buffer(intSize); zeroBuffer.fill(0);
30511 var chrsz = 8;
30512
30513 function toArray(buf, bigEndian) {
30514 if ((buf.length % intSize) !== 0) {
30515 var len = buf.length + (intSize - (buf.length % intSize));
30516 buf = Buffer.concat([buf, zeroBuffer], len);
30517 }
30518
30519 var arr = [];
30520 var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE;
30521 for (var i = 0; i < buf.length; i += intSize) {
30522 arr.push(fn.call(buf, i));
30523 }
30524 return arr;
30525 }
30526
30527 function toBuffer(arr, size, bigEndian) {
30528 var buf = new Buffer(size);
30529 var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE;
30530 for (var i = 0; i < arr.length; i++) {
30531 fn.call(buf, arr[i], i * 4, true);
30532 }
30533 return buf;
30534 }
30535
30536 function hash(buf, fn, hashSize, bigEndian) {
30537 if (!Buffer.isBuffer(buf)) buf = new Buffer(buf);
30538 var arr = fn(toArray(buf, bigEndian), buf.length * chrsz);
30539 return toBuffer(arr, hashSize, bigEndian);
30540 }
30541 exports.hash = hash;
30542 }).call(this,require("buffer").Buffer)
30543 },{"buffer":5}],38:[function(require,module,exports){
30544 'use strict';
30545 /*
30546 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
30547 * Digest Algorithm, as defined in RFC 1321.
30548 * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
30549 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
30550 * Distributed under the BSD License
30551 * See http://pajhome.org.uk/crypt/md5 for more info.
30552 */
30553
30554 var helpers = require('./helpers');
30555
30556 /*
30557 * Calculate the MD5 of an array of little-endian words, and a bit length
30558 */
30559 function core_md5(x, len)
30560 {
30561 /* append padding */
30562 x[len >> 5] |= 0x80 << ((len) % 32);
30563 x[(((len + 64) >>> 9) << 4) + 14] = len;
30564
30565 var a = 1732584193;
30566 var b = -271733879;
30567 var c = -1732584194;
30568 var d = 271733878;
30569
30570 for(var i = 0; i < x.length; i += 16)
30571 {
30572 var olda = a;
30573 var oldb = b;
30574 var oldc = c;
30575 var oldd = d;
30576
30577 a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
30578 d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
30579 c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
30580 b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
30581 a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
30582 d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
30583 c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
30584 b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
30585 a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
30586 d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
30587 c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
30588 b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
30589 a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
30590 d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
30591 c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
30592 b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
30593
30594 a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
30595 d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
30596 c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
30597 b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
30598 a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
30599 d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
30600 c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
30601 b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
30602 a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
30603 d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
30604 c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
30605 b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
30606 a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
30607 d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
30608 c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
30609 b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
30610
30611 a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
30612 d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
30613 c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
30614 b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
30615 a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
30616 d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
30617 c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
30618 b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
30619 a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
30620 d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
30621 c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
30622 b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
30623 a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
30624 d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
30625 c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
30626 b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
30627
30628 a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
30629 d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
30630 c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
30631 b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
30632 a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
30633 d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
30634 c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
30635 b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
30636 a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
30637 d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
30638 c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
30639 b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
30640 a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
30641 d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
30642 c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
30643 b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
30644
30645 a = safe_add(a, olda);
30646 b = safe_add(b, oldb);
30647 c = safe_add(c, oldc);
30648 d = safe_add(d, oldd);
30649 }
30650 return Array(a, b, c, d);
30651
30652 }
30653
30654 /*
30655 * These functions implement the four basic operations the algorithm uses.
30656 */
30657 function md5_cmn(q, a, b, x, s, t)
30658 {
30659 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
30660 }
30661 function md5_ff(a, b, c, d, x, s, t)
30662 {
30663 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
30664 }
30665 function md5_gg(a, b, c, d, x, s, t)
30666 {
30667 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
30668 }
30669 function md5_hh(a, b, c, d, x, s, t)
30670 {
30671 return md5_cmn(b ^ c ^ d, a, b, x, s, t);
30672 }
30673 function md5_ii(a, b, c, d, x, s, t)
30674 {
30675 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
30676 }
30677
30678 /*
30679 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
30680 * to work around bugs in some JS interpreters.
30681 */
30682 function safe_add(x, y)
30683 {
30684 var lsw = (x & 0xFFFF) + (y & 0xFFFF);
30685 var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
30686 return (msw << 16) | (lsw & 0xFFFF);
30687 }
30688
30689 /*
30690 * Bitwise rotate a 32-bit number to the left.
30691 */
30692 function bit_rol(num, cnt)
30693 {
30694 return (num << cnt) | (num >>> (32 - cnt));
30695 }
30696
30697 module.exports = function md5(buf) {
30698 return helpers.hash(buf, core_md5, 16);
30699 };
30700 },{"./helpers":37}],39:[function(require,module,exports){
30701 'use strict';
30702
30703 var elliptic = exports;
30704
30705 elliptic.version = require('../package.json').version;
30706 elliptic.utils = require('./elliptic/utils');
30707 elliptic.rand = require('brorand');
30708 elliptic.hmacDRBG = require('./elliptic/hmac-drbg');
30709 elliptic.curve = require('./elliptic/curve');
30710 elliptic.curves = require('./elliptic/curves');
30711
30712 // Protocols
30713 elliptic.ec = require('./elliptic/ec');
30714 elliptic.eddsa = require('./elliptic/eddsa');
30715
30716 },{"../package.json":55,"./elliptic/curve":42,"./elliptic/curves":45,"./elliptic/ec":46,"./elliptic/eddsa":49,"./elliptic/hmac-drbg":52,"./elliptic/utils":54,"brorand":34}],40:[function(require,module,exports){
30717 'use strict';
30718
30719 var BN = require('bn.js');
30720 var elliptic = require('../../elliptic');
30721 var utils = elliptic.utils;
30722 var getNAF = utils.getNAF;
30723 var getJSF = utils.getJSF;
30724 var assert = utils.assert;
30725
30726 function BaseCurve(type, conf) {
30727 this.type = type;
30728 this.p = new BN(conf.p, 16);
30729
30730 // Use Montgomery, when there is no fast reduction for the prime
30731 this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);
30732
30733 // Useful for many curves
30734 this.zero = new BN(0).toRed(this.red);
30735 this.one = new BN(1).toRed(this.red);
30736 this.two = new BN(2).toRed(this.red);
30737
30738 // Curve configuration, optional
30739 this.n = conf.n && new BN(conf.n, 16);
30740 this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);
30741
30742 // Temporary arrays
30743 this._wnafT1 = new Array(4);
30744 this._wnafT2 = new Array(4);
30745 this._wnafT3 = new Array(4);
30746 this._wnafT4 = new Array(4);
30747
30748 // Generalized Greg Maxwell's trick
30749 var adjustCount = this.n && this.p.div(this.n);
30750 if (!adjustCount || adjustCount.cmpn(100) > 0) {
30751 this.redN = null;
30752 } else {
30753 this._maxwellTrick = true;
30754 this.redN = this.n.toRed(this.red);
30755 }
30756 }
30757 module.exports = BaseCurve;
30758
30759 BaseCurve.prototype.point = function point() {
30760 throw new Error('Not implemented');
30761 };
30762
30763 BaseCurve.prototype.validate = function validate() {
30764 throw new Error('Not implemented');
30765 };
30766
30767 BaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {
30768 assert(p.precomputed);
30769 var doubles = p._getDoubles();
30770
30771 var naf = getNAF(k, 1);
30772 var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);
30773 I /= 3;
30774
30775 // Translate into more windowed form
30776 var repr = [];
30777 for (var j = 0; j < naf.length; j += doubles.step) {
30778 var nafW = 0;
30779 for (var k = j + doubles.step - 1; k >= j; k--)
30780 nafW = (nafW << 1) + naf[k];
30781 repr.push(nafW);
30782 }
30783
30784 var a = this.jpoint(null, null, null);
30785 var b = this.jpoint(null, null, null);
30786 for (var i = I; i > 0; i--) {
30787 for (var j = 0; j < repr.length; j++) {
30788 var nafW = repr[j];
30789 if (nafW === i)
30790 b = b.mixedAdd(doubles.points[j]);
30791 else if (nafW === -i)
30792 b = b.mixedAdd(doubles.points[j].neg());
30793 }
30794 a = a.add(b);
30795 }
30796 return a.toP();
30797 };
30798
30799 BaseCurve.prototype._wnafMul = function _wnafMul(p, k) {
30800 var w = 4;
30801
30802 // Precompute window
30803 var nafPoints = p._getNAFPoints(w);
30804 w = nafPoints.wnd;
30805 var wnd = nafPoints.points;
30806
30807 // Get NAF form
30808 var naf = getNAF(k, w);
30809
30810 // Add `this`*(N+1) for every w-NAF index
30811 var acc = this.jpoint(null, null, null);
30812 for (var i = naf.length - 1; i >= 0; i--) {
30813 // Count zeroes
30814 for (var k = 0; i >= 0 && naf[i] === 0; i--)
30815 k++;
30816 if (i >= 0)
30817 k++;
30818 acc = acc.dblp(k);
30819
30820 if (i < 0)
30821 break;
30822 var z = naf[i];
30823 assert(z !== 0);
30824 if (p.type === 'affine') {
30825 // J +- P
30826 if (z > 0)
30827 acc = acc.mixedAdd(wnd[(z - 1) >> 1]);
30828 else
30829 acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());
30830 } else {
30831 // J +- J
30832 if (z > 0)
30833 acc = acc.add(wnd[(z - 1) >> 1]);
30834 else
30835 acc = acc.add(wnd[(-z - 1) >> 1].neg());
30836 }
30837 }
30838 return p.type === 'affine' ? acc.toP() : acc;
30839 };
30840
30841 BaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,
30842 points,
30843 coeffs,
30844 len,
30845 jacobianResult) {
30846 var wndWidth = this._wnafT1;
30847 var wnd = this._wnafT2;
30848 var naf = this._wnafT3;
30849
30850 // Fill all arrays
30851 var max = 0;
30852 for (var i = 0; i < len; i++) {
30853 var p = points[i];
30854 var nafPoints = p._getNAFPoints(defW);
30855 wndWidth[i] = nafPoints.wnd;
30856 wnd[i] = nafPoints.points;
30857 }
30858
30859 // Comb small window NAFs
30860 for (var i = len - 1; i >= 1; i -= 2) {
30861 var a = i - 1;
30862 var b = i;
30863 if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {
30864 naf[a] = getNAF(coeffs[a], wndWidth[a]);
30865 naf[b] = getNAF(coeffs[b], wndWidth[b]);
30866 max = Math.max(naf[a].length, max);
30867 max = Math.max(naf[b].length, max);
30868 continue;
30869 }
30870
30871 var comb = [
30872 points[a], /* 1 */
30873 null, /* 3 */
30874 null, /* 5 */
30875 points[b] /* 7 */
30876 ];
30877
30878 // Try to avoid Projective points, if possible
30879 if (points[a].y.cmp(points[b].y) === 0) {
30880 comb[1] = points[a].add(points[b]);
30881 comb[2] = points[a].toJ().mixedAdd(points[b].neg());
30882 } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {
30883 comb[1] = points[a].toJ().mixedAdd(points[b]);
30884 comb[2] = points[a].add(points[b].neg());
30885 } else {
30886 comb[1] = points[a].toJ().mixedAdd(points[b]);
30887 comb[2] = points[a].toJ().mixedAdd(points[b].neg());
30888 }
30889
30890 var index = [
30891 -3, /* -1 -1 */
30892 -1, /* -1 0 */
30893 -5, /* -1 1 */
30894 -7, /* 0 -1 */
30895 0, /* 0 0 */
30896 7, /* 0 1 */
30897 5, /* 1 -1 */
30898 1, /* 1 0 */
30899 3 /* 1 1 */
30900 ];
30901
30902 var jsf = getJSF(coeffs[a], coeffs[b]);
30903 max = Math.max(jsf[0].length, max);
30904 naf[a] = new Array(max);
30905 naf[b] = new Array(max);
30906 for (var j = 0; j < max; j++) {
30907 var ja = jsf[0][j] | 0;
30908 var jb = jsf[1][j] | 0;
30909
30910 naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];
30911 naf[b][j] = 0;
30912 wnd[a] = comb;
30913 }
30914 }
30915
30916 var acc = this.jpoint(null, null, null);
30917 var tmp = this._wnafT4;
30918 for (var i = max; i >= 0; i--) {
30919 var k = 0;
30920
30921 while (i >= 0) {
30922 var zero = true;
30923 for (var j = 0; j < len; j++) {
30924 tmp[j] = naf[j][i] | 0;
30925 if (tmp[j] !== 0)
30926 zero = false;
30927 }
30928 if (!zero)
30929 break;
30930 k++;
30931 i--;
30932 }
30933 if (i >= 0)
30934 k++;
30935 acc = acc.dblp(k);
30936 if (i < 0)
30937 break;
30938
30939 for (var j = 0; j < len; j++) {
30940 var z = tmp[j];
30941 var p;
30942 if (z === 0)
30943 continue;
30944 else if (z > 0)
30945 p = wnd[j][(z - 1) >> 1];
30946 else if (z < 0)
30947 p = wnd[j][(-z - 1) >> 1].neg();
30948
30949 if (p.type === 'affine')
30950 acc = acc.mixedAdd(p);
30951 else
30952 acc = acc.add(p);
30953 }
30954 }
30955 // Zeroify references
30956 for (var i = 0; i < len; i++)
30957 wnd[i] = null;
30958
30959 if (jacobianResult)
30960 return acc;
30961 else
30962 return acc.toP();
30963 };
30964
30965 function BasePoint(curve, type) {
30966 this.curve = curve;
30967 this.type = type;
30968 this.precomputed = null;
30969 }
30970 BaseCurve.BasePoint = BasePoint;
30971
30972 BasePoint.prototype.eq = function eq(/*other*/) {
30973 throw new Error('Not implemented');
30974 };
30975
30976 BasePoint.prototype.validate = function validate() {
30977 return this.curve.validate(this);
30978 };
30979
30980 BaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
30981 bytes = utils.toArray(bytes, enc);
30982
30983 var len = this.p.byteLength();
30984
30985 // uncompressed, hybrid-odd, hybrid-even
30986 if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&
30987 bytes.length - 1 === 2 * len) {
30988 if (bytes[0] === 0x06)
30989 assert(bytes[bytes.length - 1] % 2 === 0);
30990 else if (bytes[0] === 0x07)
30991 assert(bytes[bytes.length - 1] % 2 === 1);
30992
30993 var res = this.point(bytes.slice(1, 1 + len),
30994 bytes.slice(1 + len, 1 + 2 * len));
30995
30996 return res;
30997 } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&
30998 bytes.length - 1 === len) {
30999 return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);
31000 }
31001 throw new Error('Unknown point format');
31002 };
31003
31004 BasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {
31005 return this.encode(enc, true);
31006 };
31007
31008 BasePoint.prototype._encode = function _encode(compact) {
31009 var len = this.curve.p.byteLength();
31010 var x = this.getX().toArray('be', len);
31011
31012 if (compact)
31013 return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);
31014
31015 return [ 0x04 ].concat(x, this.getY().toArray('be', len)) ;
31016 };
31017
31018 BasePoint.prototype.encode = function encode(enc, compact) {
31019 return utils.encode(this._encode(compact), enc);
31020 };
31021
31022 BasePoint.prototype.precompute = function precompute(power) {
31023 if (this.precomputed)
31024 return this;
31025
31026 var precomputed = {
31027 doubles: null,
31028 naf: null,
31029 beta: null
31030 };
31031 precomputed.naf = this._getNAFPoints(8);
31032 precomputed.doubles = this._getDoubles(4, power);
31033 precomputed.beta = this._getBeta();
31034 this.precomputed = precomputed;
31035
31036 return this;
31037 };
31038
31039 BasePoint.prototype._hasDoubles = function _hasDoubles(k) {
31040 if (!this.precomputed)
31041 return false;
31042
31043 var doubles = this.precomputed.doubles;
31044 if (!doubles)
31045 return false;
31046
31047 return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);
31048 };
31049
31050 BasePoint.prototype._getDoubles = function _getDoubles(step, power) {
31051 if (this.precomputed && this.precomputed.doubles)
31052 return this.precomputed.doubles;
31053
31054 var doubles = [ this ];
31055 var acc = this;
31056 for (var i = 0; i < power; i += step) {
31057 for (var j = 0; j < step; j++)
31058 acc = acc.dbl();
31059 doubles.push(acc);
31060 }
31061 return {
31062 step: step,
31063 points: doubles
31064 };
31065 };
31066
31067 BasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {
31068 if (this.precomputed && this.precomputed.naf)
31069 return this.precomputed.naf;
31070
31071 var res = [ this ];
31072 var max = (1 << wnd) - 1;
31073 var dbl = max === 1 ? null : this.dbl();
31074 for (var i = 1; i < max; i++)
31075 res[i] = res[i - 1].add(dbl);
31076 return {
31077 wnd: wnd,
31078 points: res
31079 };
31080 };
31081
31082 BasePoint.prototype._getBeta = function _getBeta() {
31083 return null;
31084 };
31085
31086 BasePoint.prototype.dblp = function dblp(k) {
31087 var r = this;
31088 for (var i = 0; i < k; i++)
31089 r = r.dbl();
31090 return r;
31091 };
31092
31093 },{"../../elliptic":39,"bn.js":33}],41:[function(require,module,exports){
31094 'use strict';
31095
31096 var curve = require('../curve');
31097 var elliptic = require('../../elliptic');
31098 var BN = require('bn.js');
31099 var inherits = require('inherits');
31100 var Base = curve.base;
31101
31102 var assert = elliptic.utils.assert;
31103
31104 function EdwardsCurve(conf) {
31105 // NOTE: Important as we are creating point in Base.call()
31106 this.twisted = (conf.a | 0) !== 1;
31107 this.mOneA = this.twisted && (conf.a | 0) === -1;
31108 this.extended = this.mOneA;
31109
31110 Base.call(this, 'edwards', conf);
31111
31112 this.a = new BN(conf.a, 16).umod(this.red.m);
31113 this.a = this.a.toRed(this.red);
31114 this.c = new BN(conf.c, 16).toRed(this.red);
31115 this.c2 = this.c.redSqr();
31116 this.d = new BN(conf.d, 16).toRed(this.red);
31117 this.dd = this.d.redAdd(this.d);
31118
31119 assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);
31120 this.oneC = (conf.c | 0) === 1;
31121 }
31122 inherits(EdwardsCurve, Base);
31123 module.exports = EdwardsCurve;
31124
31125 EdwardsCurve.prototype._mulA = function _mulA(num) {
31126 if (this.mOneA)
31127 return num.redNeg();
31128 else
31129 return this.a.redMul(num);
31130 };
31131
31132 EdwardsCurve.prototype._mulC = function _mulC(num) {
31133 if (this.oneC)
31134 return num;
31135 else
31136 return this.c.redMul(num);
31137 };
31138
31139 // Just for compatibility with Short curve
31140 EdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {
31141 return this.point(x, y, z, t);
31142 };
31143
31144 EdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {
31145 x = new BN(x, 16);
31146 if (!x.red)
31147 x = x.toRed(this.red);
31148
31149 var x2 = x.redSqr();
31150 var rhs = this.c2.redSub(this.a.redMul(x2));
31151 var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));
31152
31153 var y2 = rhs.redMul(lhs.redInvm());
31154 var y = y2.redSqrt();
31155 if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)
31156 throw new Error('invalid point');
31157
31158 var isOdd = y.fromRed().isOdd();
31159 if (odd && !isOdd || !odd && isOdd)
31160 y = y.redNeg();
31161
31162 return this.point(x, y);
31163 };
31164
31165 EdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {
31166 y = new BN(y, 16);
31167 if (!y.red)
31168 y = y.toRed(this.red);
31169
31170 // x^2 = (y^2 - 1) / (d y^2 + 1)
31171 var y2 = y.redSqr();
31172 var lhs = y2.redSub(this.one);
31173 var rhs = y2.redMul(this.d).redAdd(this.one);
31174 var x2 = lhs.redMul(rhs.redInvm());
31175
31176 if (x2.cmp(this.zero) === 0) {
31177 if (odd)
31178 throw new Error('invalid point');
31179 else
31180 return this.point(this.zero, y);
31181 }
31182
31183 var x = x2.redSqrt();
31184 if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)
31185 throw new Error('invalid point');
31186
31187 if (x.isOdd() !== odd)
31188 x = x.redNeg();
31189
31190 return this.point(x, y);
31191 };
31192
31193 EdwardsCurve.prototype.validate = function validate(point) {
31194 if (point.isInfinity())
31195 return true;
31196
31197 // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)
31198 point.normalize();
31199
31200 var x2 = point.x.redSqr();
31201 var y2 = point.y.redSqr();
31202 var lhs = x2.redMul(this.a).redAdd(y2);
31203 var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));
31204
31205 return lhs.cmp(rhs) === 0;
31206 };
31207
31208 function Point(curve, x, y, z, t) {
31209 Base.BasePoint.call(this, curve, 'projective');
31210 if (x === null && y === null && z === null) {
31211 this.x = this.curve.zero;
31212 this.y = this.curve.one;
31213 this.z = this.curve.one;
31214 this.t = this.curve.zero;
31215 this.zOne = true;
31216 } else {
31217 this.x = new BN(x, 16);
31218 this.y = new BN(y, 16);
31219 this.z = z ? new BN(z, 16) : this.curve.one;
31220 this.t = t && new BN(t, 16);
31221 if (!this.x.red)
31222 this.x = this.x.toRed(this.curve.red);
31223 if (!this.y.red)
31224 this.y = this.y.toRed(this.curve.red);
31225 if (!this.z.red)
31226 this.z = this.z.toRed(this.curve.red);
31227 if (this.t && !this.t.red)
31228 this.t = this.t.toRed(this.curve.red);
31229 this.zOne = this.z === this.curve.one;
31230
31231 // Use extended coordinates
31232 if (this.curve.extended && !this.t) {
31233 this.t = this.x.redMul(this.y);
31234 if (!this.zOne)
31235 this.t = this.t.redMul(this.z.redInvm());
31236 }
31237 }
31238 }
31239 inherits(Point, Base.BasePoint);
31240
31241 EdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
31242 return Point.fromJSON(this, obj);
31243 };
31244
31245 EdwardsCurve.prototype.point = function point(x, y, z, t) {
31246 return new Point(this, x, y, z, t);
31247 };
31248
31249 Point.fromJSON = function fromJSON(curve, obj) {
31250 return new Point(curve, obj[0], obj[1], obj[2]);
31251 };
31252
31253 Point.prototype.inspect = function inspect() {
31254 if (this.isInfinity())
31255 return '<EC Point Infinity>';
31256 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
31257 ' y: ' + this.y.fromRed().toString(16, 2) +
31258 ' z: ' + this.z.fromRed().toString(16, 2) + '>';
31259 };
31260
31261 Point.prototype.isInfinity = function isInfinity() {
31262 // XXX This code assumes that zero is always zero in red
31263 return this.x.cmpn(0) === 0 &&
31264 this.y.cmp(this.z) === 0;
31265 };
31266
31267 Point.prototype._extDbl = function _extDbl() {
31268 // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html
31269 // #doubling-dbl-2008-hwcd
31270 // 4M + 4S
31271
31272 // A = X1^2
31273 var a = this.x.redSqr();
31274 // B = Y1^2
31275 var b = this.y.redSqr();
31276 // C = 2 * Z1^2
31277 var c = this.z.redSqr();
31278 c = c.redIAdd(c);
31279 // D = a * A
31280 var d = this.curve._mulA(a);
31281 // E = (X1 + Y1)^2 - A - B
31282 var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);
31283 // G = D + B
31284 var g = d.redAdd(b);
31285 // F = G - C
31286 var f = g.redSub(c);
31287 // H = D - B
31288 var h = d.redSub(b);
31289 // X3 = E * F
31290 var nx = e.redMul(f);
31291 // Y3 = G * H
31292 var ny = g.redMul(h);
31293 // T3 = E * H
31294 var nt = e.redMul(h);
31295 // Z3 = F * G
31296 var nz = f.redMul(g);
31297 return this.curve.point(nx, ny, nz, nt);
31298 };
31299
31300 Point.prototype._projDbl = function _projDbl() {
31301 // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
31302 // #doubling-dbl-2008-bbjlp
31303 // #doubling-dbl-2007-bl
31304 // and others
31305 // Generally 3M + 4S or 2M + 4S
31306
31307 // B = (X1 + Y1)^2
31308 var b = this.x.redAdd(this.y).redSqr();
31309 // C = X1^2
31310 var c = this.x.redSqr();
31311 // D = Y1^2
31312 var d = this.y.redSqr();
31313
31314 var nx;
31315 var ny;
31316 var nz;
31317 if (this.curve.twisted) {
31318 // E = a * C
31319 var e = this.curve._mulA(c);
31320 // F = E + D
31321 var f = e.redAdd(d);
31322 if (this.zOne) {
31323 // X3 = (B - C - D) * (F - 2)
31324 nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));
31325 // Y3 = F * (E - D)
31326 ny = f.redMul(e.redSub(d));
31327 // Z3 = F^2 - 2 * F
31328 nz = f.redSqr().redSub(f).redSub(f);
31329 } else {
31330 // H = Z1^2
31331 var h = this.z.redSqr();
31332 // J = F - 2 * H
31333 var j = f.redSub(h).redISub(h);
31334 // X3 = (B-C-D)*J
31335 nx = b.redSub(c).redISub(d).redMul(j);
31336 // Y3 = F * (E - D)
31337 ny = f.redMul(e.redSub(d));
31338 // Z3 = F * J
31339 nz = f.redMul(j);
31340 }
31341 } else {
31342 // E = C + D
31343 var e = c.redAdd(d);
31344 // H = (c * Z1)^2
31345 var h = this.curve._mulC(this.c.redMul(this.z)).redSqr();
31346 // J = E - 2 * H
31347 var j = e.redSub(h).redSub(h);
31348 // X3 = c * (B - E) * J
31349 nx = this.curve._mulC(b.redISub(e)).redMul(j);
31350 // Y3 = c * E * (C - D)
31351 ny = this.curve._mulC(e).redMul(c.redISub(d));
31352 // Z3 = E * J
31353 nz = e.redMul(j);
31354 }
31355 return this.curve.point(nx, ny, nz);
31356 };
31357
31358 Point.prototype.dbl = function dbl() {
31359 if (this.isInfinity())
31360 return this;
31361
31362 // Double in extended coordinates
31363 if (this.curve.extended)
31364 return this._extDbl();
31365 else
31366 return this._projDbl();
31367 };
31368
31369 Point.prototype._extAdd = function _extAdd(p) {
31370 // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html
31371 // #addition-add-2008-hwcd-3
31372 // 8M
31373
31374 // A = (Y1 - X1) * (Y2 - X2)
31375 var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));
31376 // B = (Y1 + X1) * (Y2 + X2)
31377 var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));
31378 // C = T1 * k * T2
31379 var c = this.t.redMul(this.curve.dd).redMul(p.t);
31380 // D = Z1 * 2 * Z2
31381 var d = this.z.redMul(p.z.redAdd(p.z));
31382 // E = B - A
31383 var e = b.redSub(a);
31384 // F = D - C
31385 var f = d.redSub(c);
31386 // G = D + C
31387 var g = d.redAdd(c);
31388 // H = B + A
31389 var h = b.redAdd(a);
31390 // X3 = E * F
31391 var nx = e.redMul(f);
31392 // Y3 = G * H
31393 var ny = g.redMul(h);
31394 // T3 = E * H
31395 var nt = e.redMul(h);
31396 // Z3 = F * G
31397 var nz = f.redMul(g);
31398 return this.curve.point(nx, ny, nz, nt);
31399 };
31400
31401 Point.prototype._projAdd = function _projAdd(p) {
31402 // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
31403 // #addition-add-2008-bbjlp
31404 // #addition-add-2007-bl
31405 // 10M + 1S
31406
31407 // A = Z1 * Z2
31408 var a = this.z.redMul(p.z);
31409 // B = A^2
31410 var b = a.redSqr();
31411 // C = X1 * X2
31412 var c = this.x.redMul(p.x);
31413 // D = Y1 * Y2
31414 var d = this.y.redMul(p.y);
31415 // E = d * C * D
31416 var e = this.curve.d.redMul(c).redMul(d);
31417 // F = B - E
31418 var f = b.redSub(e);
31419 // G = B + E
31420 var g = b.redAdd(e);
31421 // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)
31422 var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);
31423 var nx = a.redMul(f).redMul(tmp);
31424 var ny;
31425 var nz;
31426 if (this.curve.twisted) {
31427 // Y3 = A * G * (D - a * C)
31428 ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));
31429 // Z3 = F * G
31430 nz = f.redMul(g);
31431 } else {
31432 // Y3 = A * G * (D - C)
31433 ny = a.redMul(g).redMul(d.redSub(c));
31434 // Z3 = c * F * G
31435 nz = this.curve._mulC(f).redMul(g);
31436 }
31437 return this.curve.point(nx, ny, nz);
31438 };
31439
31440 Point.prototype.add = function add(p) {
31441 if (this.isInfinity())
31442 return p;
31443 if (p.isInfinity())
31444 return this;
31445
31446 if (this.curve.extended)
31447 return this._extAdd(p);
31448 else
31449 return this._projAdd(p);
31450 };
31451
31452 Point.prototype.mul = function mul(k) {
31453 if (this._hasDoubles(k))
31454 return this.curve._fixedNafMul(this, k);
31455 else
31456 return this.curve._wnafMul(this, k);
31457 };
31458
31459 Point.prototype.mulAdd = function mulAdd(k1, p, k2) {
31460 return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);
31461 };
31462
31463 Point.prototype.jmulAdd = function jmulAdd(k1, p, k2) {
31464 return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);
31465 };
31466
31467 Point.prototype.normalize = function normalize() {
31468 if (this.zOne)
31469 return this;
31470
31471 // Normalize coordinates
31472 var zi = this.z.redInvm();
31473 this.x = this.x.redMul(zi);
31474 this.y = this.y.redMul(zi);
31475 if (this.t)
31476 this.t = this.t.redMul(zi);
31477 this.z = this.curve.one;
31478 this.zOne = true;
31479 return this;
31480 };
31481
31482 Point.prototype.neg = function neg() {
31483 return this.curve.point(this.x.redNeg(),
31484 this.y,
31485 this.z,
31486 this.t && this.t.redNeg());
31487 };
31488
31489 Point.prototype.getX = function getX() {
31490 this.normalize();
31491 return this.x.fromRed();
31492 };
31493
31494 Point.prototype.getY = function getY() {
31495 this.normalize();
31496 return this.y.fromRed();
31497 };
31498
31499 Point.prototype.eq = function eq(other) {
31500 return this === other ||
31501 this.getX().cmp(other.getX()) === 0 &&
31502 this.getY().cmp(other.getY()) === 0;
31503 };
31504
31505 Point.prototype.eqXToP = function eqXToP(x) {
31506 var rx = x.toRed(this.curve.red).redMul(this.z);
31507 if (this.x.cmp(rx) === 0)
31508 return true;
31509
31510 var xc = x.clone();
31511 var t = this.curve.redN.redMul(this.z);
31512 for (;;) {
31513 xc.iadd(this.curve.n);
31514 if (xc.cmp(this.curve.p) >= 0)
31515 return false;
31516
31517 rx.redIAdd(t);
31518 if (this.x.cmp(rx) === 0)
31519 return true;
31520 }
31521 return false;
31522 };
31523
31524 // Compatibility with BaseCurve
31525 Point.prototype.toP = Point.prototype.normalize;
31526 Point.prototype.mixedAdd = Point.prototype.add;
31527
31528 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],42:[function(require,module,exports){
31529 'use strict';
31530
31531 var curve = exports;
31532
31533 curve.base = require('./base');
31534 curve.short = require('./short');
31535 curve.mont = require('./mont');
31536 curve.edwards = require('./edwards');
31537
31538 },{"./base":40,"./edwards":41,"./mont":43,"./short":44}],43:[function(require,module,exports){
31539 'use strict';
31540
31541 var curve = require('../curve');
31542 var BN = require('bn.js');
31543 var inherits = require('inherits');
31544 var Base = curve.base;
31545
31546 var elliptic = require('../../elliptic');
31547 var utils = elliptic.utils;
31548
31549 function MontCurve(conf) {
31550 Base.call(this, 'mont', conf);
31551
31552 this.a = new BN(conf.a, 16).toRed(this.red);
31553 this.b = new BN(conf.b, 16).toRed(this.red);
31554 this.i4 = new BN(4).toRed(this.red).redInvm();
31555 this.two = new BN(2).toRed(this.red);
31556 this.a24 = this.i4.redMul(this.a.redAdd(this.two));
31557 }
31558 inherits(MontCurve, Base);
31559 module.exports = MontCurve;
31560
31561 MontCurve.prototype.validate = function validate(point) {
31562 var x = point.normalize().x;
31563 var x2 = x.redSqr();
31564 var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);
31565 var y = rhs.redSqrt();
31566
31567 return y.redSqr().cmp(rhs) === 0;
31568 };
31569
31570 function Point(curve, x, z) {
31571 Base.BasePoint.call(this, curve, 'projective');
31572 if (x === null && z === null) {
31573 this.x = this.curve.one;
31574 this.z = this.curve.zero;
31575 } else {
31576 this.x = new BN(x, 16);
31577 this.z = new BN(z, 16);
31578 if (!this.x.red)
31579 this.x = this.x.toRed(this.curve.red);
31580 if (!this.z.red)
31581 this.z = this.z.toRed(this.curve.red);
31582 }
31583 }
31584 inherits(Point, Base.BasePoint);
31585
31586 MontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
31587 return this.point(utils.toArray(bytes, enc), 1);
31588 };
31589
31590 MontCurve.prototype.point = function point(x, z) {
31591 return new Point(this, x, z);
31592 };
31593
31594 MontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
31595 return Point.fromJSON(this, obj);
31596 };
31597
31598 Point.prototype.precompute = function precompute() {
31599 // No-op
31600 };
31601
31602 Point.prototype._encode = function _encode() {
31603 return this.getX().toArray('be', this.curve.p.byteLength());
31604 };
31605
31606 Point.fromJSON = function fromJSON(curve, obj) {
31607 return new Point(curve, obj[0], obj[1] || curve.one);
31608 };
31609
31610 Point.prototype.inspect = function inspect() {
31611 if (this.isInfinity())
31612 return '<EC Point Infinity>';
31613 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
31614 ' z: ' + this.z.fromRed().toString(16, 2) + '>';
31615 };
31616
31617 Point.prototype.isInfinity = function isInfinity() {
31618 // XXX This code assumes that zero is always zero in red
31619 return this.z.cmpn(0) === 0;
31620 };
31621
31622 Point.prototype.dbl = function dbl() {
31623 // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3
31624 // 2M + 2S + 4A
31625
31626 // A = X1 + Z1
31627 var a = this.x.redAdd(this.z);
31628 // AA = A^2
31629 var aa = a.redSqr();
31630 // B = X1 - Z1
31631 var b = this.x.redSub(this.z);
31632 // BB = B^2
31633 var bb = b.redSqr();
31634 // C = AA - BB
31635 var c = aa.redSub(bb);
31636 // X3 = AA * BB
31637 var nx = aa.redMul(bb);
31638 // Z3 = C * (BB + A24 * C)
31639 var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));
31640 return this.curve.point(nx, nz);
31641 };
31642
31643 Point.prototype.add = function add() {
31644 throw new Error('Not supported on Montgomery curve');
31645 };
31646
31647 Point.prototype.diffAdd = function diffAdd(p, diff) {
31648 // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3
31649 // 4M + 2S + 6A
31650
31651 // A = X2 + Z2
31652 var a = this.x.redAdd(this.z);
31653 // B = X2 - Z2
31654 var b = this.x.redSub(this.z);
31655 // C = X3 + Z3
31656 var c = p.x.redAdd(p.z);
31657 // D = X3 - Z3
31658 var d = p.x.redSub(p.z);
31659 // DA = D * A
31660 var da = d.redMul(a);
31661 // CB = C * B
31662 var cb = c.redMul(b);
31663 // X5 = Z1 * (DA + CB)^2
31664 var nx = diff.z.redMul(da.redAdd(cb).redSqr());
31665 // Z5 = X1 * (DA - CB)^2
31666 var nz = diff.x.redMul(da.redISub(cb).redSqr());
31667 return this.curve.point(nx, nz);
31668 };
31669
31670 Point.prototype.mul = function mul(k) {
31671 var t = k.clone();
31672 var a = this; // (N / 2) * Q + Q
31673 var b = this.curve.point(null, null); // (N / 2) * Q
31674 var c = this; // Q
31675
31676 for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))
31677 bits.push(t.andln(1));
31678
31679 for (var i = bits.length - 1; i >= 0; i--) {
31680 if (bits[i] === 0) {
31681 // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q
31682 a = a.diffAdd(b, c);
31683 // N * Q = 2 * ((N / 2) * Q + Q))
31684 b = b.dbl();
31685 } else {
31686 // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)
31687 b = a.diffAdd(b, c);
31688 // N * Q + Q = 2 * ((N / 2) * Q + Q)
31689 a = a.dbl();
31690 }
31691 }
31692 return b;
31693 };
31694
31695 Point.prototype.mulAdd = function mulAdd() {
31696 throw new Error('Not supported on Montgomery curve');
31697 };
31698
31699 Point.prototype.jumlAdd = function jumlAdd() {
31700 throw new Error('Not supported on Montgomery curve');
31701 };
31702
31703 Point.prototype.eq = function eq(other) {
31704 return this.getX().cmp(other.getX()) === 0;
31705 };
31706
31707 Point.prototype.normalize = function normalize() {
31708 this.x = this.x.redMul(this.z.redInvm());
31709 this.z = this.curve.one;
31710 return this;
31711 };
31712
31713 Point.prototype.getX = function getX() {
31714 // Normalize coordinates
31715 this.normalize();
31716
31717 return this.x.fromRed();
31718 };
31719
31720 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],44:[function(require,module,exports){
31721 'use strict';
31722
31723 var curve = require('../curve');
31724 var elliptic = require('../../elliptic');
31725 var BN = require('bn.js');
31726 var inherits = require('inherits');
31727 var Base = curve.base;
31728
31729 var assert = elliptic.utils.assert;
31730
31731 function ShortCurve(conf) {
31732 Base.call(this, 'short', conf);
31733
31734 this.a = new BN(conf.a, 16).toRed(this.red);
31735 this.b = new BN(conf.b, 16).toRed(this.red);
31736 this.tinv = this.two.redInvm();
31737
31738 this.zeroA = this.a.fromRed().cmpn(0) === 0;
31739 this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;
31740
31741 // If the curve is endomorphic, precalculate beta and lambda
31742 this.endo = this._getEndomorphism(conf);
31743 this._endoWnafT1 = new Array(4);
31744 this._endoWnafT2 = new Array(4);
31745 }
31746 inherits(ShortCurve, Base);
31747 module.exports = ShortCurve;
31748
31749 ShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {
31750 // No efficient endomorphism
31751 if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)
31752 return;
31753
31754 // Compute beta and lambda, that lambda * P = (beta * Px; Py)
31755 var beta;
31756 var lambda;
31757 if (conf.beta) {
31758 beta = new BN(conf.beta, 16).toRed(this.red);
31759 } else {
31760 var betas = this._getEndoRoots(this.p);
31761 // Choose the smallest beta
31762 beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];
31763 beta = beta.toRed(this.red);
31764 }
31765 if (conf.lambda) {
31766 lambda = new BN(conf.lambda, 16);
31767 } else {
31768 // Choose the lambda that is matching selected beta
31769 var lambdas = this._getEndoRoots(this.n);
31770 if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {
31771 lambda = lambdas[0];
31772 } else {
31773 lambda = lambdas[1];
31774 assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);
31775 }
31776 }
31777
31778 // Get basis vectors, used for balanced length-two representation
31779 var basis;
31780 if (conf.basis) {
31781 basis = conf.basis.map(function(vec) {
31782 return {
31783 a: new BN(vec.a, 16),
31784 b: new BN(vec.b, 16)
31785 };
31786 });
31787 } else {
31788 basis = this._getEndoBasis(lambda);
31789 }
31790
31791 return {
31792 beta: beta,
31793 lambda: lambda,
31794 basis: basis
31795 };
31796 };
31797
31798 ShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {
31799 // Find roots of for x^2 + x + 1 in F
31800 // Root = (-1 +- Sqrt(-3)) / 2
31801 //
31802 var red = num === this.p ? this.red : BN.mont(num);
31803 var tinv = new BN(2).toRed(red).redInvm();
31804 var ntinv = tinv.redNeg();
31805
31806 var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);
31807
31808 var l1 = ntinv.redAdd(s).fromRed();
31809 var l2 = ntinv.redSub(s).fromRed();
31810 return [ l1, l2 ];
31811 };
31812
31813 ShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {
31814 // aprxSqrt >= sqrt(this.n)
31815 var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));
31816
31817 // 3.74
31818 // Run EGCD, until r(L + 1) < aprxSqrt
31819 var u = lambda;
31820 var v = this.n.clone();
31821 var x1 = new BN(1);
31822 var y1 = new BN(0);
31823 var x2 = new BN(0);
31824 var y2 = new BN(1);
31825
31826 // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)
31827 var a0;
31828 var b0;
31829 // First vector
31830 var a1;
31831 var b1;
31832 // Second vector
31833 var a2;
31834 var b2;
31835
31836 var prevR;
31837 var i = 0;
31838 var r;
31839 var x;
31840 while (u.cmpn(0) !== 0) {
31841 var q = v.div(u);
31842 r = v.sub(q.mul(u));
31843 x = x2.sub(q.mul(x1));
31844 var y = y2.sub(q.mul(y1));
31845
31846 if (!a1 && r.cmp(aprxSqrt) < 0) {
31847 a0 = prevR.neg();
31848 b0 = x1;
31849 a1 = r.neg();
31850 b1 = x;
31851 } else if (a1 && ++i === 2) {
31852 break;
31853 }
31854 prevR = r;
31855
31856 v = u;
31857 u = r;
31858 x2 = x1;
31859 x1 = x;
31860 y2 = y1;
31861 y1 = y;
31862 }
31863 a2 = r.neg();
31864 b2 = x;
31865
31866 var len1 = a1.sqr().add(b1.sqr());
31867 var len2 = a2.sqr().add(b2.sqr());
31868 if (len2.cmp(len1) >= 0) {
31869 a2 = a0;
31870 b2 = b0;
31871 }
31872
31873 // Normalize signs
31874 if (a1.negative) {
31875 a1 = a1.neg();
31876 b1 = b1.neg();
31877 }
31878 if (a2.negative) {
31879 a2 = a2.neg();
31880 b2 = b2.neg();
31881 }
31882
31883 return [
31884 { a: a1, b: b1 },
31885 { a: a2, b: b2 }
31886 ];
31887 };
31888
31889 ShortCurve.prototype._endoSplit = function _endoSplit(k) {
31890 var basis = this.endo.basis;
31891 var v1 = basis[0];
31892 var v2 = basis[1];
31893
31894 var c1 = v2.b.mul(k).divRound(this.n);
31895 var c2 = v1.b.neg().mul(k).divRound(this.n);
31896
31897 var p1 = c1.mul(v1.a);
31898 var p2 = c2.mul(v2.a);
31899 var q1 = c1.mul(v1.b);
31900 var q2 = c2.mul(v2.b);
31901
31902 // Calculate answer
31903 var k1 = k.sub(p1).sub(p2);
31904 var k2 = q1.add(q2).neg();
31905 return { k1: k1, k2: k2 };
31906 };
31907
31908 ShortCurve.prototype.pointFromX = function pointFromX(x, odd) {
31909 x = new BN(x, 16);
31910 if (!x.red)
31911 x = x.toRed(this.red);
31912
31913 var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);
31914 var y = y2.redSqrt();
31915 if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)
31916 throw new Error('invalid point');
31917
31918 // XXX Is there any way to tell if the number is odd without converting it
31919 // to non-red form?
31920 var isOdd = y.fromRed().isOdd();
31921 if (odd && !isOdd || !odd && isOdd)
31922 y = y.redNeg();
31923
31924 return this.point(x, y);
31925 };
31926
31927 ShortCurve.prototype.validate = function validate(point) {
31928 if (point.inf)
31929 return true;
31930
31931 var x = point.x;
31932 var y = point.y;
31933
31934 var ax = this.a.redMul(x);
31935 var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);
31936 return y.redSqr().redISub(rhs).cmpn(0) === 0;
31937 };
31938
31939 ShortCurve.prototype._endoWnafMulAdd =
31940 function _endoWnafMulAdd(points, coeffs, jacobianResult) {
31941 var npoints = this._endoWnafT1;
31942 var ncoeffs = this._endoWnafT2;
31943 for (var i = 0; i < points.length; i++) {
31944 var split = this._endoSplit(coeffs[i]);
31945 var p = points[i];
31946 var beta = p._getBeta();
31947
31948 if (split.k1.negative) {
31949 split.k1.ineg();
31950 p = p.neg(true);
31951 }
31952 if (split.k2.negative) {
31953 split.k2.ineg();
31954 beta = beta.neg(true);
31955 }
31956
31957 npoints[i * 2] = p;
31958 npoints[i * 2 + 1] = beta;
31959 ncoeffs[i * 2] = split.k1;
31960 ncoeffs[i * 2 + 1] = split.k2;
31961 }
31962 var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);
31963
31964 // Clean-up references to points and coefficients
31965 for (var j = 0; j < i * 2; j++) {
31966 npoints[j] = null;
31967 ncoeffs[j] = null;
31968 }
31969 return res;
31970 };
31971
31972 function Point(curve, x, y, isRed) {
31973 Base.BasePoint.call(this, curve, 'affine');
31974 if (x === null && y === null) {
31975 this.x = null;
31976 this.y = null;
31977 this.inf = true;
31978 } else {
31979 this.x = new BN(x, 16);
31980 this.y = new BN(y, 16);
31981 // Force redgomery representation when loading from JSON
31982 if (isRed) {
31983 this.x.forceRed(this.curve.red);
31984 this.y.forceRed(this.curve.red);
31985 }
31986 if (!this.x.red)
31987 this.x = this.x.toRed(this.curve.red);
31988 if (!this.y.red)
31989 this.y = this.y.toRed(this.curve.red);
31990 this.inf = false;
31991 }
31992 }
31993 inherits(Point, Base.BasePoint);
31994
31995 ShortCurve.prototype.point = function point(x, y, isRed) {
31996 return new Point(this, x, y, isRed);
31997 };
31998
31999 ShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {
32000 return Point.fromJSON(this, obj, red);
32001 };
32002
32003 Point.prototype._getBeta = function _getBeta() {
32004 if (!this.curve.endo)
32005 return;
32006
32007 var pre = this.precomputed;
32008 if (pre && pre.beta)
32009 return pre.beta;
32010
32011 var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);
32012 if (pre) {
32013 var curve = this.curve;
32014 var endoMul = function(p) {
32015 return curve.point(p.x.redMul(curve.endo.beta), p.y);
32016 };
32017 pre.beta = beta;
32018 beta.precomputed = {
32019 beta: null,
32020 naf: pre.naf && {
32021 wnd: pre.naf.wnd,
32022 points: pre.naf.points.map(endoMul)
32023 },
32024 doubles: pre.doubles && {
32025 step: pre.doubles.step,
32026 points: pre.doubles.points.map(endoMul)
32027 }
32028 };
32029 }
32030 return beta;
32031 };
32032
32033 Point.prototype.toJSON = function toJSON() {
32034 if (!this.precomputed)
32035 return [ this.x, this.y ];
32036
32037 return [ this.x, this.y, this.precomputed && {
32038 doubles: this.precomputed.doubles && {
32039 step: this.precomputed.doubles.step,
32040 points: this.precomputed.doubles.points.slice(1)
32041 },
32042 naf: this.precomputed.naf && {
32043 wnd: this.precomputed.naf.wnd,
32044 points: this.precomputed.naf.points.slice(1)
32045 }
32046 } ];
32047 };
32048
32049 Point.fromJSON = function fromJSON(curve, obj, red) {
32050 if (typeof obj === 'string')
32051 obj = JSON.parse(obj);
32052 var res = curve.point(obj[0], obj[1], red);
32053 if (!obj[2])
32054 return res;
32055
32056 function obj2point(obj) {
32057 return curve.point(obj[0], obj[1], red);
32058 }
32059
32060 var pre = obj[2];
32061 res.precomputed = {
32062 beta: null,
32063 doubles: pre.doubles && {
32064 step: pre.doubles.step,
32065 points: [ res ].concat(pre.doubles.points.map(obj2point))
32066 },
32067 naf: pre.naf && {
32068 wnd: pre.naf.wnd,
32069 points: [ res ].concat(pre.naf.points.map(obj2point))
32070 }
32071 };
32072 return res;
32073 };
32074
32075 Point.prototype.inspect = function inspect() {
32076 if (this.isInfinity())
32077 return '<EC Point Infinity>';
32078 return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
32079 ' y: ' + this.y.fromRed().toString(16, 2) + '>';
32080 };
32081
32082 Point.prototype.isInfinity = function isInfinity() {
32083 return this.inf;
32084 };
32085
32086 Point.prototype.add = function add(p) {
32087 // O + P = P
32088 if (this.inf)
32089 return p;
32090
32091 // P + O = P
32092 if (p.inf)
32093 return this;
32094
32095 // P + P = 2P
32096 if (this.eq(p))
32097 return this.dbl();
32098
32099 // P + (-P) = O
32100 if (this.neg().eq(p))
32101 return this.curve.point(null, null);
32102
32103 // P + Q = O
32104 if (this.x.cmp(p.x) === 0)
32105 return this.curve.point(null, null);
32106
32107 var c = this.y.redSub(p.y);
32108 if (c.cmpn(0) !== 0)
32109 c = c.redMul(this.x.redSub(p.x).redInvm());
32110 var nx = c.redSqr().redISub(this.x).redISub(p.x);
32111 var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
32112 return this.curve.point(nx, ny);
32113 };
32114
32115 Point.prototype.dbl = function dbl() {
32116 if (this.inf)
32117 return this;
32118
32119 // 2P = O
32120 var ys1 = this.y.redAdd(this.y);
32121 if (ys1.cmpn(0) === 0)
32122 return this.curve.point(null, null);
32123
32124 var a = this.curve.a;
32125
32126 var x2 = this.x.redSqr();
32127 var dyinv = ys1.redInvm();
32128 var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);
32129
32130 var nx = c.redSqr().redISub(this.x.redAdd(this.x));
32131 var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
32132 return this.curve.point(nx, ny);
32133 };
32134
32135 Point.prototype.getX = function getX() {
32136 return this.x.fromRed();
32137 };
32138
32139 Point.prototype.getY = function getY() {
32140 return this.y.fromRed();
32141 };
32142
32143 Point.prototype.mul = function mul(k) {
32144 k = new BN(k, 16);
32145
32146 if (this._hasDoubles(k))
32147 return this.curve._fixedNafMul(this, k);
32148 else if (this.curve.endo)
32149 return this.curve._endoWnafMulAdd([ this ], [ k ]);
32150 else
32151 return this.curve._wnafMul(this, k);
32152 };
32153
32154 Point.prototype.mulAdd = function mulAdd(k1, p2, k2) {
32155 var points = [ this, p2 ];
32156 var coeffs = [ k1, k2 ];
32157 if (this.curve.endo)
32158 return this.curve._endoWnafMulAdd(points, coeffs);
32159 else
32160 return this.curve._wnafMulAdd(1, points, coeffs, 2);
32161 };
32162
32163 Point.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {
32164 var points = [ this, p2 ];
32165 var coeffs = [ k1, k2 ];
32166 if (this.curve.endo)
32167 return this.curve._endoWnafMulAdd(points, coeffs, true);
32168 else
32169 return this.curve._wnafMulAdd(1, points, coeffs, 2, true);
32170 };
32171
32172 Point.prototype.eq = function eq(p) {
32173 return this === p ||
32174 this.inf === p.inf &&
32175 (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);
32176 };
32177
32178 Point.prototype.neg = function neg(_precompute) {
32179 if (this.inf)
32180 return this;
32181
32182 var res = this.curve.point(this.x, this.y.redNeg());
32183 if (_precompute && this.precomputed) {
32184 var pre = this.precomputed;
32185 var negate = function(p) {
32186 return p.neg();
32187 };
32188 res.precomputed = {
32189 naf: pre.naf && {
32190 wnd: pre.naf.wnd,
32191 points: pre.naf.points.map(negate)
32192 },
32193 doubles: pre.doubles && {
32194 step: pre.doubles.step,
32195 points: pre.doubles.points.map(negate)
32196 }
32197 };
32198 }
32199 return res;
32200 };
32201
32202 Point.prototype.toJ = function toJ() {
32203 if (this.inf)
32204 return this.curve.jpoint(null, null, null);
32205
32206 var res = this.curve.jpoint(this.x, this.y, this.curve.one);
32207 return res;
32208 };
32209
32210 function JPoint(curve, x, y, z) {
32211 Base.BasePoint.call(this, curve, 'jacobian');
32212 if (x === null && y === null && z === null) {
32213 this.x = this.curve.one;
32214 this.y = this.curve.one;
32215 this.z = new BN(0);
32216 } else {
32217 this.x = new BN(x, 16);
32218 this.y = new BN(y, 16);
32219 this.z = new BN(z, 16);
32220 }
32221 if (!this.x.red)
32222 this.x = this.x.toRed(this.curve.red);
32223 if (!this.y.red)
32224 this.y = this.y.toRed(this.curve.red);
32225 if (!this.z.red)
32226 this.z = this.z.toRed(this.curve.red);
32227
32228 this.zOne = this.z === this.curve.one;
32229 }
32230 inherits(JPoint, Base.BasePoint);
32231
32232 ShortCurve.prototype.jpoint = function jpoint(x, y, z) {
32233 return new JPoint(this, x, y, z);
32234 };
32235
32236 JPoint.prototype.toP = function toP() {
32237 if (this.isInfinity())
32238 return this.curve.point(null, null);
32239
32240 var zinv = this.z.redInvm();
32241 var zinv2 = zinv.redSqr();
32242 var ax = this.x.redMul(zinv2);
32243 var ay = this.y.redMul(zinv2).redMul(zinv);
32244
32245 return this.curve.point(ax, ay);
32246 };
32247
32248 JPoint.prototype.neg = function neg() {
32249 return this.curve.jpoint(this.x, this.y.redNeg(), this.z);
32250 };
32251
32252 JPoint.prototype.add = function add(p) {
32253 // O + P = P
32254 if (this.isInfinity())
32255 return p;
32256
32257 // P + O = P
32258 if (p.isInfinity())
32259 return this;
32260
32261 // 12M + 4S + 7A
32262 var pz2 = p.z.redSqr();
32263 var z2 = this.z.redSqr();
32264 var u1 = this.x.redMul(pz2);
32265 var u2 = p.x.redMul(z2);
32266 var s1 = this.y.redMul(pz2.redMul(p.z));
32267 var s2 = p.y.redMul(z2.redMul(this.z));
32268
32269 var h = u1.redSub(u2);
32270 var r = s1.redSub(s2);
32271 if (h.cmpn(0) === 0) {
32272 if (r.cmpn(0) !== 0)
32273 return this.curve.jpoint(null, null, null);
32274 else
32275 return this.dbl();
32276 }
32277
32278 var h2 = h.redSqr();
32279 var h3 = h2.redMul(h);
32280 var v = u1.redMul(h2);
32281
32282 var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
32283 var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
32284 var nz = this.z.redMul(p.z).redMul(h);
32285
32286 return this.curve.jpoint(nx, ny, nz);
32287 };
32288
32289 JPoint.prototype.mixedAdd = function mixedAdd(p) {
32290 // O + P = P
32291 if (this.isInfinity())
32292 return p.toJ();
32293
32294 // P + O = P
32295 if (p.isInfinity())
32296 return this;
32297
32298 // 8M + 3S + 7A
32299 var z2 = this.z.redSqr();
32300 var u1 = this.x;
32301 var u2 = p.x.redMul(z2);
32302 var s1 = this.y;
32303 var s2 = p.y.redMul(z2).redMul(this.z);
32304
32305 var h = u1.redSub(u2);
32306 var r = s1.redSub(s2);
32307 if (h.cmpn(0) === 0) {
32308 if (r.cmpn(0) !== 0)
32309 return this.curve.jpoint(null, null, null);
32310 else
32311 return this.dbl();
32312 }
32313
32314 var h2 = h.redSqr();
32315 var h3 = h2.redMul(h);
32316 var v = u1.redMul(h2);
32317
32318 var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
32319 var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
32320 var nz = this.z.redMul(h);
32321
32322 return this.curve.jpoint(nx, ny, nz);
32323 };
32324
32325 JPoint.prototype.dblp = function dblp(pow) {
32326 if (pow === 0)
32327 return this;
32328 if (this.isInfinity())
32329 return this;
32330 if (!pow)
32331 return this.dbl();
32332
32333 if (this.curve.zeroA || this.curve.threeA) {
32334 var r = this;
32335 for (var i = 0; i < pow; i++)
32336 r = r.dbl();
32337 return r;
32338 }
32339
32340 // 1M + 2S + 1A + N * (4S + 5M + 8A)
32341 // N = 1 => 6M + 6S + 9A
32342 var a = this.curve.a;
32343 var tinv = this.curve.tinv;
32344
32345 var jx = this.x;
32346 var jy = this.y;
32347 var jz = this.z;
32348 var jz4 = jz.redSqr().redSqr();
32349
32350 // Reuse results
32351 var jyd = jy.redAdd(jy);
32352 for (var i = 0; i < pow; i++) {
32353 var jx2 = jx.redSqr();
32354 var jyd2 = jyd.redSqr();
32355 var jyd4 = jyd2.redSqr();
32356 var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
32357
32358 var t1 = jx.redMul(jyd2);
32359 var nx = c.redSqr().redISub(t1.redAdd(t1));
32360 var t2 = t1.redISub(nx);
32361 var dny = c.redMul(t2);
32362 dny = dny.redIAdd(dny).redISub(jyd4);
32363 var nz = jyd.redMul(jz);
32364 if (i + 1 < pow)
32365 jz4 = jz4.redMul(jyd4);
32366
32367 jx = nx;
32368 jz = nz;
32369 jyd = dny;
32370 }
32371
32372 return this.curve.jpoint(jx, jyd.redMul(tinv), jz);
32373 };
32374
32375 JPoint.prototype.dbl = function dbl() {
32376 if (this.isInfinity())
32377 return this;
32378
32379 if (this.curve.zeroA)
32380 return this._zeroDbl();
32381 else if (this.curve.threeA)
32382 return this._threeDbl();
32383 else
32384 return this._dbl();
32385 };
32386
32387 JPoint.prototype._zeroDbl = function _zeroDbl() {
32388 var nx;
32389 var ny;
32390 var nz;
32391 // Z = 1
32392 if (this.zOne) {
32393 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html
32394 // #doubling-mdbl-2007-bl
32395 // 1M + 5S + 14A
32396
32397 // XX = X1^2
32398 var xx = this.x.redSqr();
32399 // YY = Y1^2
32400 var yy = this.y.redSqr();
32401 // YYYY = YY^2
32402 var yyyy = yy.redSqr();
32403 // S = 2 * ((X1 + YY)^2 - XX - YYYY)
32404 var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
32405 s = s.redIAdd(s);
32406 // M = 3 * XX + a; a = 0
32407 var m = xx.redAdd(xx).redIAdd(xx);
32408 // T = M ^ 2 - 2*S
32409 var t = m.redSqr().redISub(s).redISub(s);
32410
32411 // 8 * YYYY
32412 var yyyy8 = yyyy.redIAdd(yyyy);
32413 yyyy8 = yyyy8.redIAdd(yyyy8);
32414 yyyy8 = yyyy8.redIAdd(yyyy8);
32415
32416 // X3 = T
32417 nx = t;
32418 // Y3 = M * (S - T) - 8 * YYYY
32419 ny = m.redMul(s.redISub(t)).redISub(yyyy8);
32420 // Z3 = 2*Y1
32421 nz = this.y.redAdd(this.y);
32422 } else {
32423 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html
32424 // #doubling-dbl-2009-l
32425 // 2M + 5S + 13A
32426
32427 // A = X1^2
32428 var a = this.x.redSqr();
32429 // B = Y1^2
32430 var b = this.y.redSqr();
32431 // C = B^2
32432 var c = b.redSqr();
32433 // D = 2 * ((X1 + B)^2 - A - C)
32434 var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);
32435 d = d.redIAdd(d);
32436 // E = 3 * A
32437 var e = a.redAdd(a).redIAdd(a);
32438 // F = E^2
32439 var f = e.redSqr();
32440
32441 // 8 * C
32442 var c8 = c.redIAdd(c);
32443 c8 = c8.redIAdd(c8);
32444 c8 = c8.redIAdd(c8);
32445
32446 // X3 = F - 2 * D
32447 nx = f.redISub(d).redISub(d);
32448 // Y3 = E * (D - X3) - 8 * C
32449 ny = e.redMul(d.redISub(nx)).redISub(c8);
32450 // Z3 = 2 * Y1 * Z1
32451 nz = this.y.redMul(this.z);
32452 nz = nz.redIAdd(nz);
32453 }
32454
32455 return this.curve.jpoint(nx, ny, nz);
32456 };
32457
32458 JPoint.prototype._threeDbl = function _threeDbl() {
32459 var nx;
32460 var ny;
32461 var nz;
32462 // Z = 1
32463 if (this.zOne) {
32464 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html
32465 // #doubling-mdbl-2007-bl
32466 // 1M + 5S + 15A
32467
32468 // XX = X1^2
32469 var xx = this.x.redSqr();
32470 // YY = Y1^2
32471 var yy = this.y.redSqr();
32472 // YYYY = YY^2
32473 var yyyy = yy.redSqr();
32474 // S = 2 * ((X1 + YY)^2 - XX - YYYY)
32475 var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
32476 s = s.redIAdd(s);
32477 // M = 3 * XX + a
32478 var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);
32479 // T = M^2 - 2 * S
32480 var t = m.redSqr().redISub(s).redISub(s);
32481 // X3 = T
32482 nx = t;
32483 // Y3 = M * (S - T) - 8 * YYYY
32484 var yyyy8 = yyyy.redIAdd(yyyy);
32485 yyyy8 = yyyy8.redIAdd(yyyy8);
32486 yyyy8 = yyyy8.redIAdd(yyyy8);
32487 ny = m.redMul(s.redISub(t)).redISub(yyyy8);
32488 // Z3 = 2 * Y1
32489 nz = this.y.redAdd(this.y);
32490 } else {
32491 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b
32492 // 3M + 5S
32493
32494 // delta = Z1^2
32495 var delta = this.z.redSqr();
32496 // gamma = Y1^2
32497 var gamma = this.y.redSqr();
32498 // beta = X1 * gamma
32499 var beta = this.x.redMul(gamma);
32500 // alpha = 3 * (X1 - delta) * (X1 + delta)
32501 var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));
32502 alpha = alpha.redAdd(alpha).redIAdd(alpha);
32503 // X3 = alpha^2 - 8 * beta
32504 var beta4 = beta.redIAdd(beta);
32505 beta4 = beta4.redIAdd(beta4);
32506 var beta8 = beta4.redAdd(beta4);
32507 nx = alpha.redSqr().redISub(beta8);
32508 // Z3 = (Y1 + Z1)^2 - gamma - delta
32509 nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);
32510 // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2
32511 var ggamma8 = gamma.redSqr();
32512 ggamma8 = ggamma8.redIAdd(ggamma8);
32513 ggamma8 = ggamma8.redIAdd(ggamma8);
32514 ggamma8 = ggamma8.redIAdd(ggamma8);
32515 ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);
32516 }
32517
32518 return this.curve.jpoint(nx, ny, nz);
32519 };
32520
32521 JPoint.prototype._dbl = function _dbl() {
32522 var a = this.curve.a;
32523
32524 // 4M + 6S + 10A
32525 var jx = this.x;
32526 var jy = this.y;
32527 var jz = this.z;
32528 var jz4 = jz.redSqr().redSqr();
32529
32530 var jx2 = jx.redSqr();
32531 var jy2 = jy.redSqr();
32532
32533 var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
32534
32535 var jxd4 = jx.redAdd(jx);
32536 jxd4 = jxd4.redIAdd(jxd4);
32537 var t1 = jxd4.redMul(jy2);
32538 var nx = c.redSqr().redISub(t1.redAdd(t1));
32539 var t2 = t1.redISub(nx);
32540
32541 var jyd8 = jy2.redSqr();
32542 jyd8 = jyd8.redIAdd(jyd8);
32543 jyd8 = jyd8.redIAdd(jyd8);
32544 jyd8 = jyd8.redIAdd(jyd8);
32545 var ny = c.redMul(t2).redISub(jyd8);
32546 var nz = jy.redAdd(jy).redMul(jz);
32547
32548 return this.curve.jpoint(nx, ny, nz);
32549 };
32550
32551 JPoint.prototype.trpl = function trpl() {
32552 if (!this.curve.zeroA)
32553 return this.dbl().add(this);
32554
32555 // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl
32556 // 5M + 10S + ...
32557
32558 // XX = X1^2
32559 var xx = this.x.redSqr();
32560 // YY = Y1^2
32561 var yy = this.y.redSqr();
32562 // ZZ = Z1^2
32563 var zz = this.z.redSqr();
32564 // YYYY = YY^2
32565 var yyyy = yy.redSqr();
32566 // M = 3 * XX + a * ZZ2; a = 0
32567 var m = xx.redAdd(xx).redIAdd(xx);
32568 // MM = M^2
32569 var mm = m.redSqr();
32570 // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM
32571 var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
32572 e = e.redIAdd(e);
32573 e = e.redAdd(e).redIAdd(e);
32574 e = e.redISub(mm);
32575 // EE = E^2
32576 var ee = e.redSqr();
32577 // T = 16*YYYY
32578 var t = yyyy.redIAdd(yyyy);
32579 t = t.redIAdd(t);
32580 t = t.redIAdd(t);
32581 t = t.redIAdd(t);
32582 // U = (M + E)^2 - MM - EE - T
32583 var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);
32584 // X3 = 4 * (X1 * EE - 4 * YY * U)
32585 var yyu4 = yy.redMul(u);
32586 yyu4 = yyu4.redIAdd(yyu4);
32587 yyu4 = yyu4.redIAdd(yyu4);
32588 var nx = this.x.redMul(ee).redISub(yyu4);
32589 nx = nx.redIAdd(nx);
32590 nx = nx.redIAdd(nx);
32591 // Y3 = 8 * Y1 * (U * (T - U) - E * EE)
32592 var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));
32593 ny = ny.redIAdd(ny);
32594 ny = ny.redIAdd(ny);
32595 ny = ny.redIAdd(ny);
32596 // Z3 = (Z1 + E)^2 - ZZ - EE
32597 var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);
32598
32599 return this.curve.jpoint(nx, ny, nz);
32600 };
32601
32602 JPoint.prototype.mul = function mul(k, kbase) {
32603 k = new BN(k, kbase);
32604
32605 return this.curve._wnafMul(this, k);
32606 };
32607
32608 JPoint.prototype.eq = function eq(p) {
32609 if (p.type === 'affine')
32610 return this.eq(p.toJ());
32611
32612 if (this === p)
32613 return true;
32614
32615 // x1 * z2^2 == x2 * z1^2
32616 var z2 = this.z.redSqr();
32617 var pz2 = p.z.redSqr();
32618 if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)
32619 return false;
32620
32621 // y1 * z2^3 == y2 * z1^3
32622 var z3 = z2.redMul(this.z);
32623 var pz3 = pz2.redMul(p.z);
32624 return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;
32625 };
32626
32627 JPoint.prototype.eqXToP = function eqXToP(x) {
32628 var zs = this.z.redSqr();
32629 var rx = x.toRed(this.curve.red).redMul(zs);
32630 if (this.x.cmp(rx) === 0)
32631 return true;
32632
32633 var xc = x.clone();
32634 var t = this.curve.redN.redMul(zs);
32635 for (;;) {
32636 xc.iadd(this.curve.n);
32637 if (xc.cmp(this.curve.p) >= 0)
32638 return false;
32639
32640 rx.redIAdd(t);
32641 if (this.x.cmp(rx) === 0)
32642 return true;
32643 }
32644 return false;
32645 };
32646
32647 JPoint.prototype.inspect = function inspect() {
32648 if (this.isInfinity())
32649 return '<EC JPoint Infinity>';
32650 return '<EC JPoint x: ' + this.x.toString(16, 2) +
32651 ' y: ' + this.y.toString(16, 2) +
32652 ' z: ' + this.z.toString(16, 2) + '>';
32653 };
32654
32655 JPoint.prototype.isInfinity = function isInfinity() {
32656 // XXX This code assumes that zero is always zero in red
32657 return this.z.cmpn(0) === 0;
32658 };
32659
32660 },{"../../elliptic":39,"../curve":42,"bn.js":33,"inherits":63}],45:[function(require,module,exports){
32661 'use strict';
32662
32663 var curves = exports;
32664
32665 var hash = require('hash.js');
32666 var elliptic = require('../elliptic');
32667
32668 var assert = elliptic.utils.assert;
32669
32670 function PresetCurve(options) {
32671 if (options.type === 'short')
32672 this.curve = new elliptic.curve.short(options);
32673 else if (options.type === 'edwards')
32674 this.curve = new elliptic.curve.edwards(options);
32675 else
32676 this.curve = new elliptic.curve.mont(options);
32677 this.g = this.curve.g;
32678 this.n = this.curve.n;
32679 this.hash = options.hash;
32680
32681 assert(this.g.validate(), 'Invalid curve');
32682 assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');
32683 }
32684 curves.PresetCurve = PresetCurve;
32685
32686 function defineCurve(name, options) {
32687 Object.defineProperty(curves, name, {
32688 configurable: true,
32689 enumerable: true,
32690 get: function() {
32691 var curve = new PresetCurve(options);
32692 Object.defineProperty(curves, name, {
32693 configurable: true,
32694 enumerable: true,
32695 value: curve
32696 });
32697 return curve;
32698 }
32699 });
32700 }
32701
32702 defineCurve('p192', {
32703 type: 'short',
32704 prime: 'p192',
32705 p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',
32706 a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',
32707 b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',
32708 n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',
32709 hash: hash.sha256,
32710 gRed: false,
32711 g: [
32712 '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',
32713 '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811'
32714 ]
32715 });
32716
32717 defineCurve('p224', {
32718 type: 'short',
32719 prime: 'p224',
32720 p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',
32721 a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',
32722 b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',
32723 n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',
32724 hash: hash.sha256,
32725 gRed: false,
32726 g: [
32727 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',
32728 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34'
32729 ]
32730 });
32731
32732 defineCurve('p256', {
32733 type: 'short',
32734 prime: null,
32735 p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',
32736 a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',
32737 b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',
32738 n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',
32739 hash: hash.sha256,
32740 gRed: false,
32741 g: [
32742 '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',
32743 '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5'
32744 ]
32745 });
32746
32747 defineCurve('p384', {
32748 type: 'short',
32749 prime: null,
32750 p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32751 'fffffffe ffffffff 00000000 00000000 ffffffff',
32752 a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32753 'fffffffe ffffffff 00000000 00000000 fffffffc',
32754 b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +
32755 '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',
32756 n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +
32757 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',
32758 hash: hash.sha384,
32759 gRed: false,
32760 g: [
32761 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +
32762 '5502f25d bf55296c 3a545e38 72760ab7',
32763 '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +
32764 '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'
32765 ]
32766 });
32767
32768 defineCurve('p521', {
32769 type: 'short',
32770 prime: null,
32771 p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32772 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32773 'ffffffff ffffffff ffffffff ffffffff ffffffff',
32774 a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32775 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32776 'ffffffff ffffffff ffffffff ffffffff fffffffc',
32777 b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +
32778 '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +
32779 '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',
32780 n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
32781 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +
32782 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',
32783 hash: hash.sha512,
32784 gRed: false,
32785 g: [
32786 '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +
32787 '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +
32788 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',
32789 '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +
32790 '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +
32791 '3fad0761 353c7086 a272c240 88be9476 9fd16650'
32792 ]
32793 });
32794
32795 defineCurve('curve25519', {
32796 type: 'mont',
32797 prime: 'p25519',
32798 p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
32799 a: '76d06',
32800 b: '1',
32801 n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
32802 hash: hash.sha256,
32803 gRed: false,
32804 g: [
32805 '9'
32806 ]
32807 });
32808
32809 defineCurve('ed25519', {
32810 type: 'edwards',
32811 prime: 'p25519',
32812 p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
32813 a: '-1',
32814 c: '1',
32815 // -121665 * (121666^(-1)) (mod P)
32816 d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',
32817 n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
32818 hash: hash.sha256,
32819 gRed: false,
32820 g: [
32821 '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',
32822
32823 // 4/5
32824 '6666666666666666666666666666666666666666666666666666666666666658'
32825 ]
32826 });
32827
32828 var pre;
32829 try {
32830 pre = require('./precomputed/secp256k1');
32831 } catch (e) {
32832 pre = undefined;
32833 }
32834
32835 defineCurve('secp256k1', {
32836 type: 'short',
32837 prime: 'k256',
32838 p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',
32839 a: '0',
32840 b: '7',
32841 n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',
32842 h: '1',
32843 hash: hash.sha256,
32844
32845 // Precomputed endomorphism
32846 beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',
32847 lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',
32848 basis: [
32849 {
32850 a: '3086d221a7d46bcde86c90e49284eb15',
32851 b: '-e4437ed6010e88286f547fa90abfe4c3'
32852 },
32853 {
32854 a: '114ca50f7a8e2f3f657c1108d9d44cfd8',
32855 b: '3086d221a7d46bcde86c90e49284eb15'
32856 }
32857 ],
32858
32859 gRed: false,
32860 g: [
32861 '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',
32862 '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',
32863 pre
32864 ]
32865 });
32866
32867 },{"../elliptic":39,"./precomputed/secp256k1":53,"hash.js":57}],46:[function(require,module,exports){
32868 'use strict';
32869
32870 var BN = require('bn.js');
32871 var elliptic = require('../../elliptic');
32872 var utils = elliptic.utils;
32873 var assert = utils.assert;
32874
32875 var KeyPair = require('./key');
32876 var Signature = require('./signature');
32877
32878 function EC(options) {
32879 if (!(this instanceof EC))
32880 return new EC(options);
32881
32882 // Shortcut `elliptic.ec(curve-name)`
32883 if (typeof options === 'string') {
32884 assert(elliptic.curves.hasOwnProperty(options), 'Unknown curve ' + options);
32885
32886 options = elliptic.curves[options];
32887 }
32888
32889 // Shortcut for `elliptic.ec(elliptic.curves.curveName)`
32890 if (options instanceof elliptic.curves.PresetCurve)
32891 options = { curve: options };
32892
32893 this.curve = options.curve.curve;
32894 this.n = this.curve.n;
32895 this.nh = this.n.ushrn(1);
32896 this.g = this.curve.g;
32897
32898 // Point on curve
32899 this.g = options.curve.g;
32900 this.g.precompute(options.curve.n.bitLength() + 1);
32901
32902 // Hash for function for DRBG
32903 this.hash = options.hash || options.curve.hash;
32904 }
32905 module.exports = EC;
32906
32907 EC.prototype.keyPair = function keyPair(options) {
32908 return new KeyPair(this, options);
32909 };
32910
32911 EC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {
32912 return KeyPair.fromPrivate(this, priv, enc);
32913 };
32914
32915 EC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {
32916 return KeyPair.fromPublic(this, pub, enc);
32917 };
32918
32919 EC.prototype.genKeyPair = function genKeyPair(options) {
32920 if (!options)
32921 options = {};
32922
32923 // Instantiate Hmac_DRBG
32924 var drbg = new elliptic.hmacDRBG({
32925 hash: this.hash,
32926 pers: options.pers,
32927 entropy: options.entropy || elliptic.rand(this.hash.hmacStrength),
32928 nonce: this.n.toArray()
32929 });
32930
32931 var bytes = this.n.byteLength();
32932 var ns2 = this.n.sub(new BN(2));
32933 do {
32934 var priv = new BN(drbg.generate(bytes));
32935 if (priv.cmp(ns2) > 0)
32936 continue;
32937
32938 priv.iaddn(1);
32939 return this.keyFromPrivate(priv);
32940 } while (true);
32941 };
32942
32943 EC.prototype._truncateToN = function truncateToN(msg, truncOnly) {
32944 var delta = msg.byteLength() * 8 - this.n.bitLength();
32945 if (delta > 0)
32946 msg = msg.ushrn(delta);
32947 if (!truncOnly && msg.cmp(this.n) >= 0)
32948 return msg.sub(this.n);
32949 else
32950 return msg;
32951 };
32952
32953 EC.prototype.sign = function sign(msg, key, enc, options) {
32954 if (typeof enc === 'object') {
32955 options = enc;
32956 enc = null;
32957 }
32958 if (!options)
32959 options = {};
32960
32961 key = this.keyFromPrivate(key, enc);
32962 msg = this._truncateToN(new BN(msg, 16));
32963
32964 // Zero-extend key to provide enough entropy
32965 var bytes = this.n.byteLength();
32966 var bkey = key.getPrivate().toArray('be', bytes);
32967
32968 // Zero-extend nonce to have the same byte size as N
32969 var nonce = msg.toArray('be', bytes);
32970
32971 // Instantiate Hmac_DRBG
32972 var drbg = new elliptic.hmacDRBG({
32973 hash: this.hash,
32974 entropy: bkey,
32975 nonce: nonce,
32976 pers: options.pers,
32977 persEnc: options.persEnc
32978 });
32979
32980 // Number of bytes to generate
32981 var ns1 = this.n.sub(new BN(1));
32982
32983 for (var iter = 0; true; iter++) {
32984 var k = options.k ?
32985 options.k(iter) :
32986 new BN(drbg.generate(this.n.byteLength()));
32987 k = this._truncateToN(k, true);
32988 if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)
32989 continue;
32990
32991 var kp = this.g.mul(k);
32992 if (kp.isInfinity())
32993 continue;
32994
32995 var kpX = kp.getX();
32996 var r = kpX.umod(this.n);
32997 if (r.cmpn(0) === 0)
32998 continue;
32999
33000 var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));
33001 s = s.umod(this.n);
33002 if (s.cmpn(0) === 0)
33003 continue;
33004
33005 var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |
33006 (kpX.cmp(r) !== 0 ? 2 : 0);
33007
33008 // Use complement of `s`, if it is > `n / 2`
33009 if (options.canonical && s.cmp(this.nh) > 0) {
33010 s = this.n.sub(s);
33011 recoveryParam ^= 1;
33012 }
33013
33014 return new Signature({ r: r, s: s, recoveryParam: recoveryParam });
33015 }
33016 };
33017
33018 EC.prototype.verify = function verify(msg, signature, key, enc) {
33019 msg = this._truncateToN(new BN(msg, 16));
33020 key = this.keyFromPublic(key, enc);
33021 signature = new Signature(signature, 'hex');
33022
33023 // Perform primitive values validation
33024 var r = signature.r;
33025 var s = signature.s;
33026 if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)
33027 return false;
33028 if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)
33029 return false;
33030
33031 // Validate signature
33032 var sinv = s.invm(this.n);
33033 var u1 = sinv.mul(msg).umod(this.n);
33034 var u2 = sinv.mul(r).umod(this.n);
33035
33036 if (!this.curve._maxwellTrick) {
33037 var p = this.g.mulAdd(u1, key.getPublic(), u2);
33038 if (p.isInfinity())
33039 return false;
33040
33041 return p.getX().umod(this.n).cmp(r) === 0;
33042 }
33043
33044 // NOTE: Greg Maxwell's trick, inspired by:
33045 // https://git.io/vad3K
33046
33047 var p = this.g.jmulAdd(u1, key.getPublic(), u2);
33048 if (p.isInfinity())
33049 return false;
33050
33051 // Compare `p.x` of Jacobian point with `r`,
33052 // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the
33053 // inverse of `p.z^2`
33054 return p.eqXToP(r);
33055 };
33056
33057 EC.prototype.recoverPubKey = function(msg, signature, j, enc) {
33058 assert((3 & j) === j, 'The recovery param is more than two bits');
33059 signature = new Signature(signature, enc);
33060
33061 var n = this.n;
33062 var e = new BN(msg);
33063 var r = signature.r;
33064 var s = signature.s;
33065
33066 // A set LSB signifies that the y-coordinate is odd
33067 var isYOdd = j & 1;
33068 var isSecondKey = j >> 1;
33069 if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)
33070 throw new Error('Unable to find sencond key candinate');
33071
33072 // 1.1. Let x = r + jn.
33073 if (isSecondKey)
33074 r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);
33075 else
33076 r = this.curve.pointFromX(r, isYOdd);
33077
33078 var rInv = signature.r.invm(n);
33079 var s1 = n.sub(e).mul(rInv).umod(n);
33080 var s2 = s.mul(rInv).umod(n);
33081
33082 // 1.6.1 Compute Q = r^-1 (sR - eG)
33083 // Q = r^-1 (sR + -eG)
33084 return this.g.mulAdd(s1, r, s2);
33085 };
33086
33087 EC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {
33088 signature = new Signature(signature, enc);
33089 if (signature.recoveryParam !== null)
33090 return signature.recoveryParam;
33091
33092 for (var i = 0; i < 4; i++) {
33093 var Qprime;
33094 try {
33095 Qprime = this.recoverPubKey(e, signature, i);
33096 } catch (e) {
33097 continue;
33098 }
33099
33100 if (Qprime.eq(Q))
33101 return i;
33102 }
33103 throw new Error('Unable to find valid recovery factor');
33104 };
33105
33106 },{"../../elliptic":39,"./key":47,"./signature":48,"bn.js":33}],47:[function(require,module,exports){
33107 'use strict';
33108
33109 var BN = require('bn.js');
33110 var elliptic = require('../../elliptic');
33111 var utils = elliptic.utils;
33112 var assert = utils.assert;
33113
33114 function KeyPair(ec, options) {
33115 this.ec = ec;
33116 this.priv = null;
33117 this.pub = null;
33118
33119 // KeyPair(ec, { priv: ..., pub: ... })
33120 if (options.priv)
33121 this._importPrivate(options.priv, options.privEnc);
33122 if (options.pub)
33123 this._importPublic(options.pub, options.pubEnc);
33124 }
33125 module.exports = KeyPair;
33126
33127 KeyPair.fromPublic = function fromPublic(ec, pub, enc) {
33128 if (pub instanceof KeyPair)
33129 return pub;
33130
33131 return new KeyPair(ec, {
33132 pub: pub,
33133 pubEnc: enc
33134 });
33135 };
33136
33137 KeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {
33138 if (priv instanceof KeyPair)
33139 return priv;
33140
33141 return new KeyPair(ec, {
33142 priv: priv,
33143 privEnc: enc
33144 });
33145 };
33146
33147 KeyPair.prototype.validate = function validate() {
33148 var pub = this.getPublic();
33149
33150 if (pub.isInfinity())
33151 return { result: false, reason: 'Invalid public key' };
33152 if (!pub.validate())
33153 return { result: false, reason: 'Public key is not a point' };
33154 if (!pub.mul(this.ec.curve.n).isInfinity())
33155 return { result: false, reason: 'Public key * N != O' };
33156
33157 return { result: true, reason: null };
33158 };
33159
33160 KeyPair.prototype.getPublic = function getPublic(compact, enc) {
33161 // compact is optional argument
33162 if (typeof compact === 'string') {
33163 enc = compact;
33164 compact = null;
33165 }
33166
33167 if (!this.pub)
33168 this.pub = this.ec.g.mul(this.priv);
33169
33170 if (!enc)
33171 return this.pub;
33172
33173 return this.pub.encode(enc, compact);
33174 };
33175
33176 KeyPair.prototype.getPrivate = function getPrivate(enc) {
33177 if (enc === 'hex')
33178 return this.priv.toString(16, 2);
33179 else
33180 return this.priv;
33181 };
33182
33183 KeyPair.prototype._importPrivate = function _importPrivate(key, enc) {
33184 this.priv = new BN(key, enc || 16);
33185
33186 // Ensure that the priv won't be bigger than n, otherwise we may fail
33187 // in fixed multiplication method
33188 this.priv = this.priv.umod(this.ec.curve.n);
33189 };
33190
33191 KeyPair.prototype._importPublic = function _importPublic(key, enc) {
33192 if (key.x || key.y) {
33193 // Montgomery points only have an `x` coordinate.
33194 // Weierstrass/Edwards points on the other hand have both `x` and
33195 // `y` coordinates.
33196 if (this.ec.curve.type === 'mont') {
33197 assert(key.x, 'Need x coordinate');
33198 } else if (this.ec.curve.type === 'short' ||
33199 this.ec.curve.type === 'edwards') {
33200 assert(key.x && key.y, 'Need both x and y coordinate');
33201 }
33202 this.pub = this.ec.curve.point(key.x, key.y);
33203 return;
33204 }
33205 this.pub = this.ec.curve.decodePoint(key, enc);
33206 };
33207
33208 // ECDH
33209 KeyPair.prototype.derive = function derive(pub) {
33210 return pub.mul(this.priv).getX();
33211 };
33212
33213 // ECDSA
33214 KeyPair.prototype.sign = function sign(msg, enc, options) {
33215 return this.ec.sign(msg, this, enc, options);
33216 };
33217
33218 KeyPair.prototype.verify = function verify(msg, signature) {
33219 return this.ec.verify(msg, signature, this);
33220 };
33221
33222 KeyPair.prototype.inspect = function inspect() {
33223 return '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) +
33224 ' pub: ' + (this.pub && this.pub.inspect()) + ' >';
33225 };
33226
33227 },{"../../elliptic":39,"bn.js":33}],48:[function(require,module,exports){
33228 'use strict';
33229
33230 var BN = require('bn.js');
33231
33232 var elliptic = require('../../elliptic');
33233 var utils = elliptic.utils;
33234 var assert = utils.assert;
33235
33236 function Signature(options, enc) {
33237 if (options instanceof Signature)
33238 return options;
33239
33240 if (this._importDER(options, enc))
33241 return;
33242
33243 assert(options.r && options.s, 'Signature without r or s');
33244 this.r = new BN(options.r, 16);
33245 this.s = new BN(options.s, 16);
33246 if (options.recoveryParam === undefined)
33247 this.recoveryParam = null;
33248 else
33249 this.recoveryParam = options.recoveryParam;
33250 }
33251 module.exports = Signature;
33252
33253 function Position() {
33254 this.place = 0;
33255 }
33256
33257 function getLength(buf, p) {
33258 var initial = buf[p.place++];
33259 if (!(initial & 0x80)) {
33260 return initial;
33261 }
33262 var octetLen = initial & 0xf;
33263 var val = 0;
33264 for (var i = 0, off = p.place; i < octetLen; i++, off++) {
33265 val <<= 8;
33266 val |= buf[off];
33267 }
33268 p.place = off;
33269 return val;
33270 }
33271
33272 function rmPadding(buf) {
33273 var i = 0;
33274 var len = buf.length - 1;
33275 while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {
33276 i++;
33277 }
33278 if (i === 0) {
33279 return buf;
33280 }
33281 return buf.slice(i);
33282 }
33283
33284 Signature.prototype._importDER = function _importDER(data, enc) {
33285 data = utils.toArray(data, enc);
33286 var p = new Position();
33287 if (data[p.place++] !== 0x30) {
33288 return false;
33289 }
33290 var len = getLength(data, p);
33291 if ((len + p.place) !== data.length) {
33292 return false;
33293 }
33294 if (data[p.place++] !== 0x02) {
33295 return false;
33296 }
33297 var rlen = getLength(data, p);
33298 var r = data.slice(p.place, rlen + p.place);
33299 p.place += rlen;
33300 if (data[p.place++] !== 0x02) {
33301 return false;
33302 }
33303 var slen = getLength(data, p);
33304 if (data.length !== slen + p.place) {
33305 return false;
33306 }
33307 var s = data.slice(p.place, slen + p.place);
33308 if (r[0] === 0 && (r[1] & 0x80)) {
33309 r = r.slice(1);
33310 }
33311 if (s[0] === 0 && (s[1] & 0x80)) {
33312 s = s.slice(1);
33313 }
33314
33315 this.r = new BN(r);
33316 this.s = new BN(s);
33317 this.recoveryParam = null;
33318
33319 return true;
33320 };
33321
33322 function constructLength(arr, len) {
33323 if (len < 0x80) {
33324 arr.push(len);
33325 return;
33326 }
33327 var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);
33328 arr.push(octets | 0x80);
33329 while (--octets) {
33330 arr.push((len >>> (octets << 3)) & 0xff);
33331 }
33332 arr.push(len);
33333 }
33334
33335 Signature.prototype.toDER = function toDER(enc) {
33336 var r = this.r.toArray();
33337 var s = this.s.toArray();
33338
33339 // Pad values
33340 if (r[0] & 0x80)
33341 r = [ 0 ].concat(r);
33342 // Pad values
33343 if (s[0] & 0x80)
33344 s = [ 0 ].concat(s);
33345
33346 r = rmPadding(r);
33347 s = rmPadding(s);
33348
33349 while (!s[0] && !(s[1] & 0x80)) {
33350 s = s.slice(1);
33351 }
33352 var arr = [ 0x02 ];
33353 constructLength(arr, r.length);
33354 arr = arr.concat(r);
33355 arr.push(0x02);
33356 constructLength(arr, s.length);
33357 var backHalf = arr.concat(s);
33358 var res = [ 0x30 ];
33359 constructLength(res, backHalf.length);
33360 res = res.concat(backHalf);
33361 return utils.encode(res, enc);
33362 };
33363
33364 },{"../../elliptic":39,"bn.js":33}],49:[function(require,module,exports){
33365 'use strict';
33366
33367 var hash = require('hash.js');
33368 var elliptic = require('../../elliptic');
33369 var utils = elliptic.utils;
33370 var assert = utils.assert;
33371 var parseBytes = utils.parseBytes;
33372 var KeyPair = require('./key');
33373 var Signature = require('./signature');
33374
33375 function EDDSA(curve) {
33376 assert(curve === 'ed25519', 'only tested with ed25519 so far');
33377
33378 if (!(this instanceof EDDSA))
33379 return new EDDSA(curve);
33380
33381 var curve = elliptic.curves[curve].curve;
33382 this.curve = curve;
33383 this.g = curve.g;
33384 this.g.precompute(curve.n.bitLength() + 1);
33385
33386 this.pointClass = curve.point().constructor;
33387 this.encodingLength = Math.ceil(curve.n.bitLength() / 8);
33388 this.hash = hash.sha512;
33389 }
33390
33391 module.exports = EDDSA;
33392
33393 /**
33394 * @param {Array|String} message - message bytes
33395 * @param {Array|String|KeyPair} secret - secret bytes or a keypair
33396 * @returns {Signature} - signature
33397 */
33398 EDDSA.prototype.sign = function sign(message, secret) {
33399 message = parseBytes(message);
33400 var key = this.keyFromSecret(secret);
33401 var r = this.hashInt(key.messagePrefix(), message);
33402 var R = this.g.mul(r);
33403 var Rencoded = this.encodePoint(R);
33404 var s_ = this.hashInt(Rencoded, key.pubBytes(), message)
33405 .mul(key.priv());
33406 var S = r.add(s_).umod(this.curve.n);
33407 return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });
33408 };
33409
33410 /**
33411 * @param {Array} message - message bytes
33412 * @param {Array|String|Signature} sig - sig bytes
33413 * @param {Array|String|Point|KeyPair} pub - public key
33414 * @returns {Boolean} - true if public key matches sig of message
33415 */
33416 EDDSA.prototype.verify = function verify(message, sig, pub) {
33417 message = parseBytes(message);
33418 sig = this.makeSignature(sig);
33419 var key = this.keyFromPublic(pub);
33420 var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);
33421 var SG = this.g.mul(sig.S());
33422 var RplusAh = sig.R().add(key.pub().mul(h));
33423 return RplusAh.eq(SG);
33424 };
33425
33426 EDDSA.prototype.hashInt = function hashInt() {
33427 var hash = this.hash();
33428 for (var i = 0; i < arguments.length; i++)
33429 hash.update(arguments[i]);
33430 return utils.intFromLE(hash.digest()).umod(this.curve.n);
33431 };
33432
33433 EDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {
33434 return KeyPair.fromPublic(this, pub);
33435 };
33436
33437 EDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {
33438 return KeyPair.fromSecret(this, secret);
33439 };
33440
33441 EDDSA.prototype.makeSignature = function makeSignature(sig) {
33442 if (sig instanceof Signature)
33443 return sig;
33444 return new Signature(this, sig);
33445 };
33446
33447 /**
33448 * * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2
33449 *
33450 * EDDSA defines methods for encoding and decoding points and integers. These are
33451 * helper convenience methods, that pass along to utility functions implied
33452 * parameters.
33453 *
33454 */
33455 EDDSA.prototype.encodePoint = function encodePoint(point) {
33456 var enc = point.getY().toArray('le', this.encodingLength);
33457 enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;
33458 return enc;
33459 };
33460
33461 EDDSA.prototype.decodePoint = function decodePoint(bytes) {
33462 bytes = utils.parseBytes(bytes);
33463
33464 var lastIx = bytes.length - 1;
33465 var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);
33466 var xIsOdd = (bytes[lastIx] & 0x80) !== 0;
33467
33468 var y = utils.intFromLE(normed);
33469 return this.curve.pointFromY(y, xIsOdd);
33470 };
33471
33472 EDDSA.prototype.encodeInt = function encodeInt(num) {
33473 return num.toArray('le', this.encodingLength);
33474 };
33475
33476 EDDSA.prototype.decodeInt = function decodeInt(bytes) {
33477 return utils.intFromLE(bytes);
33478 };
33479
33480 EDDSA.prototype.isPoint = function isPoint(val) {
33481 return val instanceof this.pointClass;
33482 };
33483
33484 },{"../../elliptic":39,"./key":50,"./signature":51,"hash.js":57}],50:[function(require,module,exports){
33485 'use strict';
33486
33487 var elliptic = require('../../elliptic');
33488 var utils = elliptic.utils;
33489 var assert = utils.assert;
33490 var parseBytes = utils.parseBytes;
33491 var cachedProperty = utils.cachedProperty;
33492
33493 /**
33494 * @param {EDDSA} eddsa - instance
33495 * @param {Object} params - public/private key parameters
33496 *
33497 * @param {Array<Byte>} [params.secret] - secret seed bytes
33498 * @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)
33499 * @param {Array<Byte>} [params.pub] - public key point encoded as bytes
33500 *
33501 */
33502 function KeyPair(eddsa, params) {
33503 this.eddsa = eddsa;
33504 this._secret = parseBytes(params.secret);
33505 if (eddsa.isPoint(params.pub))
33506 this._pub = params.pub;
33507 else
33508 this._pubBytes = parseBytes(params.pub);
33509 }
33510
33511 KeyPair.fromPublic = function fromPublic(eddsa, pub) {
33512 if (pub instanceof KeyPair)
33513 return pub;
33514 return new KeyPair(eddsa, { pub: pub });
33515 };
33516
33517 KeyPair.fromSecret = function fromSecret(eddsa, secret) {
33518 if (secret instanceof KeyPair)
33519 return secret;
33520 return new KeyPair(eddsa, { secret: secret });
33521 };
33522
33523 KeyPair.prototype.secret = function secret() {
33524 return this._secret;
33525 };
33526
33527 cachedProperty(KeyPair, 'pubBytes', function pubBytes() {
33528 return this.eddsa.encodePoint(this.pub());
33529 });
33530
33531 cachedProperty(KeyPair, 'pub', function pub() {
33532 if (this._pubBytes)
33533 return this.eddsa.decodePoint(this._pubBytes);
33534 return this.eddsa.g.mul(this.priv());
33535 });
33536
33537 cachedProperty(KeyPair, 'privBytes', function privBytes() {
33538 var eddsa = this.eddsa;
33539 var hash = this.hash();
33540 var lastIx = eddsa.encodingLength - 1;
33541
33542 var a = hash.slice(0, eddsa.encodingLength);
33543 a[0] &= 248;
33544 a[lastIx] &= 127;
33545 a[lastIx] |= 64;
33546
33547 return a;
33548 });
33549
33550 cachedProperty(KeyPair, 'priv', function priv() {
33551 return this.eddsa.decodeInt(this.privBytes());
33552 });
33553
33554 cachedProperty(KeyPair, 'hash', function hash() {
33555 return this.eddsa.hash().update(this.secret()).digest();
33556 });
33557
33558 cachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {
33559 return this.hash().slice(this.eddsa.encodingLength);
33560 });
33561
33562 KeyPair.prototype.sign = function sign(message) {
33563 assert(this._secret, 'KeyPair can only verify');
33564 return this.eddsa.sign(message, this);
33565 };
33566
33567 KeyPair.prototype.verify = function verify(message, sig) {
33568 return this.eddsa.verify(message, sig, this);
33569 };
33570
33571 KeyPair.prototype.getSecret = function getSecret(enc) {
33572 assert(this._secret, 'KeyPair is public only');
33573 return utils.encode(this.secret(), enc);
33574 };
33575
33576 KeyPair.prototype.getPublic = function getPublic(enc) {
33577 return utils.encode(this.pubBytes(), enc);
33578 };
33579
33580 module.exports = KeyPair;
33581
33582 },{"../../elliptic":39}],51:[function(require,module,exports){
33583 'use strict';
33584
33585 var BN = require('bn.js');
33586 var elliptic = require('../../elliptic');
33587 var utils = elliptic.utils;
33588 var assert = utils.assert;
33589 var cachedProperty = utils.cachedProperty;
33590 var parseBytes = utils.parseBytes;
33591
33592 /**
33593 * @param {EDDSA} eddsa - eddsa instance
33594 * @param {Array<Bytes>|Object} sig -
33595 * @param {Array<Bytes>|Point} [sig.R] - R point as Point or bytes
33596 * @param {Array<Bytes>|bn} [sig.S] - S scalar as bn or bytes
33597 * @param {Array<Bytes>} [sig.Rencoded] - R point encoded
33598 * @param {Array<Bytes>} [sig.Sencoded] - S scalar encoded
33599 */
33600 function Signature(eddsa, sig) {
33601 this.eddsa = eddsa;
33602
33603 if (typeof sig !== 'object')
33604 sig = parseBytes(sig);
33605
33606 if (Array.isArray(sig)) {
33607 sig = {
33608 R: sig.slice(0, eddsa.encodingLength),
33609 S: sig.slice(eddsa.encodingLength)
33610 };
33611 }
33612
33613 assert(sig.R && sig.S, 'Signature without R or S');
33614
33615 if (eddsa.isPoint(sig.R))
33616 this._R = sig.R;
33617 if (sig.S instanceof BN)
33618 this._S = sig.S;
33619
33620 this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;
33621 this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;
33622 }
33623
33624 cachedProperty(Signature, 'S', function S() {
33625 return this.eddsa.decodeInt(this.Sencoded());
33626 });
33627
33628 cachedProperty(Signature, 'R', function R() {
33629 return this.eddsa.decodePoint(this.Rencoded());
33630 });
33631
33632 cachedProperty(Signature, 'Rencoded', function Rencoded() {
33633 return this.eddsa.encodePoint(this.R());
33634 });
33635
33636 cachedProperty(Signature, 'Sencoded', function Sencoded() {
33637 return this.eddsa.encodeInt(this.S());
33638 });
33639
33640 Signature.prototype.toBytes = function toBytes() {
33641 return this.Rencoded().concat(this.Sencoded());
33642 };
33643
33644 Signature.prototype.toHex = function toHex() {
33645 return utils.encode(this.toBytes(), 'hex').toUpperCase();
33646 };
33647
33648 module.exports = Signature;
33649
33650 },{"../../elliptic":39,"bn.js":33}],52:[function(require,module,exports){
33651 'use strict';
33652
33653 var hash = require('hash.js');
33654 var elliptic = require('../elliptic');
33655 var utils = elliptic.utils;
33656 var assert = utils.assert;
33657
33658 function HmacDRBG(options) {
33659 if (!(this instanceof HmacDRBG))
33660 return new HmacDRBG(options);
33661 this.hash = options.hash;
33662 this.predResist = !!options.predResist;
33663
33664 this.outLen = this.hash.outSize;
33665 this.minEntropy = options.minEntropy || this.hash.hmacStrength;
33666
33667 this.reseed = null;
33668 this.reseedInterval = null;
33669 this.K = null;
33670 this.V = null;
33671
33672 var entropy = utils.toArray(options.entropy, options.entropyEnc);
33673 var nonce = utils.toArray(options.nonce, options.nonceEnc);
33674 var pers = utils.toArray(options.pers, options.persEnc);
33675 assert(entropy.length >= (this.minEntropy / 8),
33676 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
33677 this._init(entropy, nonce, pers);
33678 }
33679 module.exports = HmacDRBG;
33680
33681 HmacDRBG.prototype._init = function init(entropy, nonce, pers) {
33682 var seed = entropy.concat(nonce).concat(pers);
33683
33684 this.K = new Array(this.outLen / 8);
33685 this.V = new Array(this.outLen / 8);
33686 for (var i = 0; i < this.V.length; i++) {
33687 this.K[i] = 0x00;
33688 this.V[i] = 0x01;
33689 }
33690
33691 this._update(seed);
33692 this.reseed = 1;
33693 this.reseedInterval = 0x1000000000000; // 2^48
33694 };
33695
33696 HmacDRBG.prototype._hmac = function hmac() {
33697 return new hash.hmac(this.hash, this.K);
33698 };
33699
33700 HmacDRBG.prototype._update = function update(seed) {
33701 var kmac = this._hmac()
33702 .update(this.V)
33703 .update([ 0x00 ]);
33704 if (seed)
33705 kmac = kmac.update(seed);
33706 this.K = kmac.digest();
33707 this.V = this._hmac().update(this.V).digest();
33708 if (!seed)
33709 return;
33710
33711 this.K = this._hmac()
33712 .update(this.V)
33713 .update([ 0x01 ])
33714 .update(seed)
33715 .digest();
33716 this.V = this._hmac().update(this.V).digest();
33717 };
33718
33719 HmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {
33720 // Optional entropy enc
33721 if (typeof entropyEnc !== 'string') {
33722 addEnc = add;
33723 add = entropyEnc;
33724 entropyEnc = null;
33725 }
33726
33727 entropy = utils.toBuffer(entropy, entropyEnc);
33728 add = utils.toBuffer(add, addEnc);
33729
33730 assert(entropy.length >= (this.minEntropy / 8),
33731 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
33732
33733 this._update(entropy.concat(add || []));
33734 this.reseed = 1;
33735 };
33736
33737 HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {
33738 if (this.reseed > this.reseedInterval)
33739 throw new Error('Reseed is required');
33740
33741 // Optional encoding
33742 if (typeof enc !== 'string') {
33743 addEnc = add;
33744 add = enc;
33745 enc = null;
33746 }
33747
33748 // Optional additional data
33749 if (add) {
33750 add = utils.toArray(add, addEnc);
33751 this._update(add);
33752 }
33753
33754 var temp = [];
33755 while (temp.length < len) {
33756 this.V = this._hmac().update(this.V).digest();
33757 temp = temp.concat(this.V);
33758 }
33759
33760 var res = temp.slice(0, len);
33761 this._update(add);
33762 this.reseed++;
33763 return utils.encode(res, enc);
33764 };
33765
33766 },{"../elliptic":39,"hash.js":57}],53:[function(require,module,exports){
33767 module.exports = {
33768 doubles: {
33769 step: 4,
33770 points: [
33771 [
33772 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',
33773 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821'
33774 ],
33775 [
33776 '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',
33777 '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf'
33778 ],
33779 [
33780 '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',
33781 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695'
33782 ],
33783 [
33784 '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',
33785 '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9'
33786 ],
33787 [
33788 '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',
33789 '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36'
33790 ],
33791 [
33792 '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',
33793 '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f'
33794 ],
33795 [
33796 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',
33797 '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999'
33798 ],
33799 [
33800 '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',
33801 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09'
33802 ],
33803 [
33804 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',
33805 '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d'
33806 ],
33807 [
33808 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',
33809 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088'
33810 ],
33811 [
33812 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',
33813 '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d'
33814 ],
33815 [
33816 '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',
33817 '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8'
33818 ],
33819 [
33820 '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',
33821 '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a'
33822 ],
33823 [
33824 '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',
33825 '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453'
33826 ],
33827 [
33828 '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',
33829 '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160'
33830 ],
33831 [
33832 '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',
33833 '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0'
33834 ],
33835 [
33836 '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',
33837 '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6'
33838 ],
33839 [
33840 '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',
33841 '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589'
33842 ],
33843 [
33844 '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',
33845 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17'
33846 ],
33847 [
33848 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',
33849 '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda'
33850 ],
33851 [
33852 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',
33853 '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd'
33854 ],
33855 [
33856 '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',
33857 '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2'
33858 ],
33859 [
33860 '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',
33861 '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6'
33862 ],
33863 [
33864 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',
33865 '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f'
33866 ],
33867 [
33868 '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',
33869 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01'
33870 ],
33871 [
33872 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',
33873 '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3'
33874 ],
33875 [
33876 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',
33877 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f'
33878 ],
33879 [
33880 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',
33881 '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7'
33882 ],
33883 [
33884 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',
33885 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78'
33886 ],
33887 [
33888 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',
33889 '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1'
33890 ],
33891 [
33892 '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',
33893 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150'
33894 ],
33895 [
33896 '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',
33897 '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82'
33898 ],
33899 [
33900 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',
33901 '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc'
33902 ],
33903 [
33904 '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',
33905 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b'
33906 ],
33907 [
33908 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',
33909 '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51'
33910 ],
33911 [
33912 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',
33913 '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45'
33914 ],
33915 [
33916 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',
33917 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120'
33918 ],
33919 [
33920 '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',
33921 '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84'
33922 ],
33923 [
33924 '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',
33925 '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d'
33926 ],
33927 [
33928 '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',
33929 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d'
33930 ],
33931 [
33932 '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',
33933 '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8'
33934 ],
33935 [
33936 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',
33937 '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8'
33938 ],
33939 [
33940 '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',
33941 '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac'
33942 ],
33943 [
33944 '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',
33945 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f'
33946 ],
33947 [
33948 '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',
33949 '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962'
33950 ],
33951 [
33952 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',
33953 '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907'
33954 ],
33955 [
33956 '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',
33957 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec'
33958 ],
33959 [
33960 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',
33961 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d'
33962 ],
33963 [
33964 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',
33965 '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414'
33966 ],
33967 [
33968 '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',
33969 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd'
33970 ],
33971 [
33972 '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',
33973 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0'
33974 ],
33975 [
33976 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',
33977 '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811'
33978 ],
33979 [
33980 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',
33981 '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1'
33982 ],
33983 [
33984 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',
33985 '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c'
33986 ],
33987 [
33988 '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',
33989 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73'
33990 ],
33991 [
33992 '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',
33993 '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd'
33994 ],
33995 [
33996 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',
33997 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405'
33998 ],
33999 [
34000 '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',
34001 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589'
34002 ],
34003 [
34004 '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',
34005 '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e'
34006 ],
34007 [
34008 '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',
34009 '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27'
34010 ],
34011 [
34012 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',
34013 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1'
34014 ],
34015 [
34016 '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',
34017 '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482'
34018 ],
34019 [
34020 '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',
34021 '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945'
34022 ],
34023 [
34024 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',
34025 '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573'
34026 ],
34027 [
34028 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',
34029 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82'
34030 ]
34031 ]
34032 },
34033 naf: {
34034 wnd: 7,
34035 points: [
34036 [
34037 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',
34038 '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672'
34039 ],
34040 [
34041 '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',
34042 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6'
34043 ],
34044 [
34045 '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',
34046 '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da'
34047 ],
34048 [
34049 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',
34050 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37'
34051 ],
34052 [
34053 '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',
34054 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b'
34055 ],
34056 [
34057 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',
34058 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81'
34059 ],
34060 [
34061 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',
34062 '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58'
34063 ],
34064 [
34065 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',
34066 '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77'
34067 ],
34068 [
34069 '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',
34070 '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a'
34071 ],
34072 [
34073 '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',
34074 '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c'
34075 ],
34076 [
34077 '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',
34078 '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67'
34079 ],
34080 [
34081 '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',
34082 '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402'
34083 ],
34084 [
34085 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',
34086 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55'
34087 ],
34088 [
34089 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',
34090 '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482'
34091 ],
34092 [
34093 '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',
34094 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82'
34095 ],
34096 [
34097 '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',
34098 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396'
34099 ],
34100 [
34101 '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',
34102 '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49'
34103 ],
34104 [
34105 '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',
34106 '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf'
34107 ],
34108 [
34109 '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',
34110 '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a'
34111 ],
34112 [
34113 '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',
34114 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7'
34115 ],
34116 [
34117 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',
34118 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933'
34119 ],
34120 [
34121 '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',
34122 '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a'
34123 ],
34124 [
34125 '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',
34126 '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6'
34127 ],
34128 [
34129 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',
34130 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37'
34131 ],
34132 [
34133 '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',
34134 '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e'
34135 ],
34136 [
34137 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',
34138 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6'
34139 ],
34140 [
34141 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',
34142 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476'
34143 ],
34144 [
34145 '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',
34146 '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40'
34147 ],
34148 [
34149 '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',
34150 '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61'
34151 ],
34152 [
34153 '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',
34154 '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683'
34155 ],
34156 [
34157 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',
34158 '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5'
34159 ],
34160 [
34161 '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',
34162 '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b'
34163 ],
34164 [
34165 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',
34166 '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417'
34167 ],
34168 [
34169 '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',
34170 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868'
34171 ],
34172 [
34173 '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',
34174 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a'
34175 ],
34176 [
34177 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',
34178 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6'
34179 ],
34180 [
34181 '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',
34182 '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996'
34183 ],
34184 [
34185 '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',
34186 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e'
34187 ],
34188 [
34189 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',
34190 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d'
34191 ],
34192 [
34193 '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',
34194 '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2'
34195 ],
34196 [
34197 '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',
34198 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e'
34199 ],
34200 [
34201 '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',
34202 '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437'
34203 ],
34204 [
34205 '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',
34206 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311'
34207 ],
34208 [
34209 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',
34210 '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4'
34211 ],
34212 [
34213 '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',
34214 '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575'
34215 ],
34216 [
34217 '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',
34218 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d'
34219 ],
34220 [
34221 '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',
34222 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d'
34223 ],
34224 [
34225 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',
34226 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629'
34227 ],
34228 [
34229 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',
34230 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06'
34231 ],
34232 [
34233 '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',
34234 '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374'
34235 ],
34236 [
34237 '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',
34238 '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee'
34239 ],
34240 [
34241 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',
34242 '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1'
34243 ],
34244 [
34245 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',
34246 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b'
34247 ],
34248 [
34249 '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',
34250 '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661'
34251 ],
34252 [
34253 '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',
34254 '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6'
34255 ],
34256 [
34257 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',
34258 '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e'
34259 ],
34260 [
34261 '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',
34262 '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d'
34263 ],
34264 [
34265 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',
34266 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc'
34267 ],
34268 [
34269 '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',
34270 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4'
34271 ],
34272 [
34273 '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',
34274 '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c'
34275 ],
34276 [
34277 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',
34278 '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b'
34279 ],
34280 [
34281 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',
34282 '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913'
34283 ],
34284 [
34285 '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',
34286 '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154'
34287 ],
34288 [
34289 '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',
34290 '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865'
34291 ],
34292 [
34293 '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',
34294 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc'
34295 ],
34296 [
34297 '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',
34298 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224'
34299 ],
34300 [
34301 '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',
34302 '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e'
34303 ],
34304 [
34305 '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',
34306 '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6'
34307 ],
34308 [
34309 '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',
34310 '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511'
34311 ],
34312 [
34313 '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',
34314 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b'
34315 ],
34316 [
34317 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',
34318 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2'
34319 ],
34320 [
34321 '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',
34322 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c'
34323 ],
34324 [
34325 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',
34326 '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3'
34327 ],
34328 [
34329 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',
34330 '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d'
34331 ],
34332 [
34333 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',
34334 '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700'
34335 ],
34336 [
34337 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',
34338 '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4'
34339 ],
34340 [
34341 '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',
34342 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196'
34343 ],
34344 [
34345 '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',
34346 '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4'
34347 ],
34348 [
34349 '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',
34350 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257'
34351 ],
34352 [
34353 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',
34354 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13'
34355 ],
34356 [
34357 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',
34358 '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096'
34359 ],
34360 [
34361 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',
34362 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38'
34363 ],
34364 [
34365 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',
34366 '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f'
34367 ],
34368 [
34369 '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',
34370 '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448'
34371 ],
34372 [
34373 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',
34374 '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a'
34375 ],
34376 [
34377 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',
34378 '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4'
34379 ],
34380 [
34381 '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',
34382 '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437'
34383 ],
34384 [
34385 '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',
34386 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7'
34387 ],
34388 [
34389 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',
34390 '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d'
34391 ],
34392 [
34393 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',
34394 '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a'
34395 ],
34396 [
34397 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',
34398 '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54'
34399 ],
34400 [
34401 '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',
34402 '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77'
34403 ],
34404 [
34405 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',
34406 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517'
34407 ],
34408 [
34409 '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',
34410 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10'
34411 ],
34412 [
34413 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',
34414 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125'
34415 ],
34416 [
34417 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',
34418 '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e'
34419 ],
34420 [
34421 '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',
34422 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1'
34423 ],
34424 [
34425 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',
34426 '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2'
34427 ],
34428 [
34429 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',
34430 '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423'
34431 ],
34432 [
34433 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',
34434 '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8'
34435 ],
34436 [
34437 '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',
34438 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758'
34439 ],
34440 [
34441 '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',
34442 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375'
34443 ],
34444 [
34445 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',
34446 '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d'
34447 ],
34448 [
34449 '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',
34450 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec'
34451 ],
34452 [
34453 '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',
34454 '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0'
34455 ],
34456 [
34457 '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',
34458 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c'
34459 ],
34460 [
34461 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',
34462 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4'
34463 ],
34464 [
34465 '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',
34466 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f'
34467 ],
34468 [
34469 '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',
34470 '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649'
34471 ],
34472 [
34473 '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',
34474 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826'
34475 ],
34476 [
34477 '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',
34478 '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5'
34479 ],
34480 [
34481 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',
34482 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87'
34483 ],
34484 [
34485 '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',
34486 '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b'
34487 ],
34488 [
34489 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',
34490 '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc'
34491 ],
34492 [
34493 '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',
34494 '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c'
34495 ],
34496 [
34497 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',
34498 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f'
34499 ],
34500 [
34501 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',
34502 '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a'
34503 ],
34504 [
34505 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',
34506 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46'
34507 ],
34508 [
34509 '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',
34510 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f'
34511 ],
34512 [
34513 '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',
34514 '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03'
34515 ],
34516 [
34517 '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',
34518 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08'
34519 ],
34520 [
34521 '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',
34522 '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8'
34523 ],
34524 [
34525 '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',
34526 '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373'
34527 ],
34528 [
34529 '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',
34530 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3'
34531 ],
34532 [
34533 '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',
34534 '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8'
34535 ],
34536 [
34537 '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',
34538 '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1'
34539 ],
34540 [
34541 '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',
34542 '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9'
34543 ]
34544 ]
34545 }
34546 };
34547
34548 },{}],54:[function(require,module,exports){
34549 'use strict';
34550
34551 var utils = exports;
34552 var BN = require('bn.js');
34553
34554 utils.assert = function assert(val, msg) {
34555 if (!val)
34556 throw new Error(msg || 'Assertion failed');
34557 };
34558
34559 function toArray(msg, enc) {
34560 if (Array.isArray(msg))
34561 return msg.slice();
34562 if (!msg)
34563 return [];
34564 var res = [];
34565 if (typeof msg !== 'string') {
34566 for (var i = 0; i < msg.length; i++)
34567 res[i] = msg[i] | 0;
34568 return res;
34569 }
34570 if (!enc) {
34571 for (var i = 0; i < msg.length; i++) {
34572 var c = msg.charCodeAt(i);
34573 var hi = c >> 8;
34574 var lo = c & 0xff;
34575 if (hi)
34576 res.push(hi, lo);
34577 else
34578 res.push(lo);
34579 }
34580 } else if (enc === 'hex') {
34581 msg = msg.replace(/[^a-z0-9]+/ig, '');
34582 if (msg.length % 2 !== 0)
34583 msg = '0' + msg;
34584 for (var i = 0; i < msg.length; i += 2)
34585 res.push(parseInt(msg[i] + msg[i + 1], 16));
34586 }
34587 return res;
34588 }
34589 utils.toArray = toArray;
34590
34591 function zero2(word) {
34592 if (word.length === 1)
34593 return '0' + word;
34594 else
34595 return word;
34596 }
34597 utils.zero2 = zero2;
34598
34599 function toHex(msg) {
34600 var res = '';
34601 for (var i = 0; i < msg.length; i++)
34602 res += zero2(msg[i].toString(16));
34603 return res;
34604 }
34605 utils.toHex = toHex;
34606
34607 utils.encode = function encode(arr, enc) {
34608 if (enc === 'hex')
34609 return toHex(arr);
34610 else
34611 return arr;
34612 };
34613
34614 // Represent num in a w-NAF form
34615 function getNAF(num, w) {
34616 var naf = [];
34617 var ws = 1 << (w + 1);
34618 var k = num.clone();
34619 while (k.cmpn(1) >= 0) {
34620 var z;
34621 if (k.isOdd()) {
34622 var mod = k.andln(ws - 1);
34623 if (mod > (ws >> 1) - 1)
34624 z = (ws >> 1) - mod;
34625 else
34626 z = mod;
34627 k.isubn(z);
34628 } else {
34629 z = 0;
34630 }
34631 naf.push(z);
34632
34633 // Optimization, shift by word if possible
34634 var shift = (k.cmpn(0) !== 0 && k.andln(ws - 1) === 0) ? (w + 1) : 1;
34635 for (var i = 1; i < shift; i++)
34636 naf.push(0);
34637 k.iushrn(shift);
34638 }
34639
34640 return naf;
34641 }
34642 utils.getNAF = getNAF;
34643
34644 // Represent k1, k2 in a Joint Sparse Form
34645 function getJSF(k1, k2) {
34646 var jsf = [
34647 [],
34648 []
34649 ];
34650
34651 k1 = k1.clone();
34652 k2 = k2.clone();
34653 var d1 = 0;
34654 var d2 = 0;
34655 while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {
34656
34657 // First phase
34658 var m14 = (k1.andln(3) + d1) & 3;
34659 var m24 = (k2.andln(3) + d2) & 3;
34660 if (m14 === 3)
34661 m14 = -1;
34662 if (m24 === 3)
34663 m24 = -1;
34664 var u1;
34665 if ((m14 & 1) === 0) {
34666 u1 = 0;
34667 } else {
34668 var m8 = (k1.andln(7) + d1) & 7;
34669 if ((m8 === 3 || m8 === 5) && m24 === 2)
34670 u1 = -m14;
34671 else
34672 u1 = m14;
34673 }
34674 jsf[0].push(u1);
34675
34676 var u2;
34677 if ((m24 & 1) === 0) {
34678 u2 = 0;
34679 } else {
34680 var m8 = (k2.andln(7) + d2) & 7;
34681 if ((m8 === 3 || m8 === 5) && m14 === 2)
34682 u2 = -m24;
34683 else
34684 u2 = m24;
34685 }
34686 jsf[1].push(u2);
34687
34688 // Second phase
34689 if (2 * d1 === u1 + 1)
34690 d1 = 1 - d1;
34691 if (2 * d2 === u2 + 1)
34692 d2 = 1 - d2;
34693 k1.iushrn(1);
34694 k2.iushrn(1);
34695 }
34696
34697 return jsf;
34698 }
34699 utils.getJSF = getJSF;
34700
34701 function cachedProperty(obj, name, computer) {
34702 var key = '_' + name;
34703 obj.prototype[name] = function cachedProperty() {
34704 return this[key] !== undefined ? this[key] :
34705 this[key] = computer.call(this);
34706 };
34707 }
34708 utils.cachedProperty = cachedProperty;
34709
34710 function parseBytes(bytes) {
34711 return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :
34712 bytes;
34713 }
34714 utils.parseBytes = parseBytes;
34715
34716 function intFromLE(bytes) {
34717 return new BN(bytes, 'hex', 'le');
34718 }
34719 utils.intFromLE = intFromLE;
34720
34721
34722 },{"bn.js":33}],55:[function(require,module,exports){
34723 module.exports={
34724 "_args": [
34725 [
34726 {
34727 "raw": "elliptic@^6.2.3",
34728 "scope": null,
34729 "escapedName": "elliptic",
34730 "name": "elliptic",
34731 "rawSpec": "^6.2.3",
34732 "spec": ">=6.2.3 <7.0.0",
34733 "type": "range"
34734 },
34735 "/home/user/ethereum/ethereumjs-util/node_modules/secp256k1"
34736 ]
34737 ],
34738 "_from": "elliptic@>=6.2.3 <7.0.0",
34739 "_id": "elliptic@6.3.3",
34740 "_inCache": true,
34741 "_location": "/elliptic",
34742 "_nodeVersion": "7.0.0",
34743 "_npmOperationalInternal": {
34744 "host": "packages-18-east.internal.npmjs.com",
34745 "tmp": "tmp/elliptic-6.3.3.tgz_1486422837740_0.10658654430881143"
34746 },
34747 "_npmUser": {
34748 "name": "indutny",
34749 "email": "fedor@indutny.com"
34750 },
34751 "_npmVersion": "3.10.8",
34752 "_phantomChildren": {},
34753 "_requested": {
34754 "raw": "elliptic@^6.2.3",
34755 "scope": null,
34756 "escapedName": "elliptic",
34757 "name": "elliptic",
34758 "rawSpec": "^6.2.3",
34759 "spec": ">=6.2.3 <7.0.0",
34760 "type": "range"
34761 },
34762 "_requiredBy": [
34763 "/browserify-sign",
34764 "/create-ecdh",
34765 "/secp256k1"
34766 ],
34767 "_resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz",
34768 "_shasum": "5482d9646d54bcb89fd7d994fc9e2e9568876e3f",
34769 "_shrinkwrap": null,
34770 "_spec": "elliptic@^6.2.3",
34771 "_where": "/home/user/ethereum/ethereumjs-util/node_modules/secp256k1",
34772 "author": {
34773 "name": "Fedor Indutny",
34774 "email": "fedor@indutny.com"
34775 },
34776 "bugs": {
34777 "url": "https://github.com/indutny/elliptic/issues"
34778 },
34779 "dependencies": {
34780 "bn.js": "^4.4.0",
34781 "brorand": "^1.0.1",
34782 "hash.js": "^1.0.0",
34783 "inherits": "^2.0.1"
34784 },
34785 "description": "EC cryptography",
34786 "devDependencies": {
34787 "brfs": "^1.4.3",
34788 "coveralls": "^2.11.3",
34789 "grunt": "^0.4.5",
34790 "grunt-browserify": "^5.0.0",
34791 "grunt-cli": "^1.2.0",
34792 "grunt-contrib-connect": "^1.0.0",
34793 "grunt-contrib-copy": "^1.0.0",
34794 "grunt-contrib-uglify": "^1.0.1",
34795 "grunt-mocha-istanbul": "^3.0.1",
34796 "grunt-saucelabs": "^8.6.2",
34797 "istanbul": "^0.4.2",
34798 "jscs": "^2.9.0",
34799 "jshint": "^2.6.0",
34800 "mocha": "^2.1.0"
34801 },
34802 "directories": {},
34803 "dist": {
34804 "shasum": "5482d9646d54bcb89fd7d994fc9e2e9568876e3f",
34805 "tarball": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz"
34806 },
34807 "files": [
34808 "lib"
34809 ],
34810 "gitHead": "63aee8d697e9b7fac37ece24222029117a890a7e",
34811 "homepage": "https://github.com/indutny/elliptic",
34812 "keywords": [
34813 "EC",
34814 "Elliptic",
34815 "curve",
34816 "Cryptography"
34817 ],
34818 "license": "MIT",
34819 "main": "lib/elliptic.js",
34820 "maintainers": [
34821 {
34822 "name": "indutny",
34823 "email": "fedor@indutny.com"
34824 }
34825 ],
34826 "name": "elliptic",
34827 "optionalDependencies": {},
34828 "readme": "ERROR: No README data found!",
34829 "repository": {
34830 "type": "git",
34831 "url": "git+ssh://git@github.com/indutny/elliptic.git"
34832 },
34833 "scripts": {
34834 "jscs": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
34835 "jshint": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",
34836 "lint": "npm run jscs && npm run jshint",
34837 "test": "npm run lint && npm run unit",
34838 "unit": "istanbul test _mocha --reporter=spec test/index.js",
34839 "version": "grunt dist && git add dist/"
34840 },
34841 "version": "6.3.3"
34842 }
34843
34844 },{}],56:[function(require,module,exports){
34845 (function (Buffer){
34846 'use strict';
34847
34848 var isHexPrefixed = require('is-hex-prefixed');
34849 var stripHexPrefix = require('strip-hex-prefix');
34850
34851 /**
34852 * Pads a `String` to have an even length
34853 * @param {String} value
34854 * @return {String} output
34855 */
34856 function padToEven(value) {
34857 var a = value; // eslint-disable-line
34858
34859 if (typeof a !== 'string') {
34860 throw new Error('[ethjs-util] while padding to even, value must be string, is currently ' + typeof a + ', while padToEven.');
34861 }
34862
34863 if (a.length % 2) {
34864 a = '0' + a;
34865 }
34866
34867 return a;
34868 }
34869
34870 /**
34871 * Converts a `Number` into a hex `String`
34872 * @param {Number} i
34873 * @return {String}
34874 */
34875 function intToHex(i) {
34876 var hex = i.toString(16); // eslint-disable-line
34877
34878 return '0x' + padToEven(hex);
34879 }
34880
34881 /**
34882 * Converts an `Number` to a `Buffer`
34883 * @param {Number} i
34884 * @return {Buffer}
34885 */
34886 function intToBuffer(i) {
34887 var hex = intToHex(i);
34888
34889 return new Buffer(hex.slice(2), 'hex');
34890 }
34891
34892 /**
34893 * Get the binary size of a string
34894 * @param {String} str
34895 * @return {Number}
34896 */
34897 function getBinarySize(str) {
34898 if (typeof str !== 'string') {
34899 throw new Error('[ethjs-util] while getting binary size, method getBinarySize requires input \'str\' to be type String, got \'' + typeof str + '\'.');
34900 }
34901
34902 return Buffer.byteLength(str, 'utf8');
34903 }
34904
34905 /**
34906 * Returns TRUE if the first specified array contains all elements
34907 * from the second one. FALSE otherwise.
34908 *
34909 * @param {array} superset
34910 * @param {array} subset
34911 *
34912 * @returns {boolean}
34913 */
34914 function arrayContainsArray(superset, subset, some) {
34915 if (Array.isArray(superset) !== true) {
34916 throw new Error('[ethjs-util] method arrayContainsArray requires input \'superset\' to be an array got type \'' + typeof superset + '\'');
34917 }
34918 if (Array.isArray(subset) !== true) {
34919 throw new Error('[ethjs-util] method arrayContainsArray requires input \'subset\' to be an array got type \'' + typeof subset + '\'');
34920 }
34921
34922 return subset[Boolean(some) && 'some' || 'every'](function (value) {
34923 return superset.indexOf(value) >= 0;
34924 });
34925 }
34926
34927 /**
34928 * Should be called to get utf8 from it's hex representation
34929 *
34930 * @method toUtf8
34931 * @param {String} string in hex
34932 * @returns {String} ascii string representation of hex value
34933 */
34934 function toUtf8(hex) {
34935 var bufferValue = new Buffer(padToEven(stripHexPrefix(hex).replace(/^0+|0+$/g, '')), 'hex');
34936
34937 return bufferValue.toString('utf8');
34938 }
34939
34940 /**
34941 * Should be called to get ascii from it's hex representation
34942 *
34943 * @method toAscii
34944 * @param {String} string in hex
34945 * @returns {String} ascii string representation of hex value
34946 */
34947 function toAscii(hex) {
34948 var str = ''; // eslint-disable-line
34949 var i = 0,
34950 l = hex.length; // eslint-disable-line
34951
34952 if (hex.substring(0, 2) === '0x') {
34953 i = 2;
34954 }
34955
34956 for (; i < l; i += 2) {
34957 var code = parseInt(hex.substr(i, 2), 16);
34958 str += String.fromCharCode(code);
34959 }
34960
34961 return str;
34962 }
34963
34964 /**
34965 * Should be called to get hex representation (prefixed by 0x) of utf8 string
34966 *
34967 * @method fromUtf8
34968 * @param {String} string
34969 * @param {Number} optional padding
34970 * @returns {String} hex representation of input string
34971 */
34972 function fromUtf8(stringValue) {
34973 var str = new Buffer(stringValue, 'utf8');
34974
34975 return '0x' + padToEven(str.toString('hex')).replace(/^0+|0+$/g, '');
34976 }
34977
34978 /**
34979 * Should be called to get hex representation (prefixed by 0x) of ascii string
34980 *
34981 * @method fromAscii
34982 * @param {String} string
34983 * @param {Number} optional padding
34984 * @returns {String} hex representation of input string
34985 */
34986 function fromAscii(stringValue) {
34987 var hex = ''; // eslint-disable-line
34988 for (var i = 0; i < stringValue.length; i++) {
34989 // eslint-disable-line
34990 var code = stringValue.charCodeAt(i);
34991 var n = code.toString(16);
34992 hex += n.length < 2 ? '0' + n : n;
34993 }
34994
34995 return '0x' + hex;
34996 }
34997
34998 /**
34999 * getKeys([{a: 1, b: 2}, {a: 3, b: 4}], 'a') => [1, 3]
35000 *
35001 * @method getKeys get specific key from inner object array of objects
35002 * @param {String} params
35003 * @param {String} key
35004 * @param {Boolean} allowEmpty
35005 * @returns {Array} output just a simple array of output keys
35006 */
35007 function getKeys(params, key, allowEmpty) {
35008 if (!Array.isArray(params)) {
35009 throw new Error('[ethjs-util] method getKeys expecting type Array as \'params\' input, got \'' + typeof params + '\'');
35010 }
35011 if (typeof key !== 'string') {
35012 throw new Error('[ethjs-util] method getKeys expecting type String for input \'key\' got \'' + typeof key + '\'.');
35013 }
35014
35015 var result = []; // eslint-disable-line
35016
35017 for (var i = 0; i < params.length; i++) {
35018 // eslint-disable-line
35019 var value = params[i][key]; // eslint-disable-line
35020 if (allowEmpty && !value) {
35021 value = '';
35022 } else if (typeof value !== 'string') {
35023 throw new Error('invalid abi');
35024 }
35025 result.push(value);
35026 }
35027
35028 return result;
35029 }
35030
35031 /**
35032 * Is the string a hex string.
35033 *
35034 * @method check if string is hex string of specific length
35035 * @param {String} value
35036 * @param {Number} length
35037 * @returns {Boolean} output the string is a hex string
35038 */
35039 function isHexString(value, length) {
35040 if (typeof value !== 'string' || !value.match(/^0x[0-9A-Fa-f]*$/)) {
35041 return false;
35042 }
35043
35044 if (length && value.length !== 2 + 2 * length) {
35045 return false;
35046 }
35047
35048 return true;
35049 }
35050
35051 module.exports = {
35052 arrayContainsArray: arrayContainsArray,
35053 intToBuffer: intToBuffer,
35054 getBinarySize: getBinarySize,
35055 isHexPrefixed: isHexPrefixed,
35056 stripHexPrefix: stripHexPrefix,
35057 padToEven: padToEven,
35058 intToHex: intToHex,
35059 fromAscii: fromAscii,
35060 fromUtf8: fromUtf8,
35061 toAscii: toAscii,
35062 toUtf8: toUtf8,
35063 getKeys: getKeys,
35064 isHexString: isHexString
35065 };
35066 }).call(this,require("buffer").Buffer)
35067 },{"buffer":5,"is-hex-prefixed":64,"strip-hex-prefix":87}],57:[function(require,module,exports){
35068 var hash = exports;
35069
35070 hash.utils = require('./hash/utils');
35071 hash.common = require('./hash/common');
35072 hash.sha = require('./hash/sha');
35073 hash.ripemd = require('./hash/ripemd');
35074 hash.hmac = require('./hash/hmac');
35075
35076 // Proxy hash functions to the main object
35077 hash.sha1 = hash.sha.sha1;
35078 hash.sha256 = hash.sha.sha256;
35079 hash.sha224 = hash.sha.sha224;
35080 hash.sha384 = hash.sha.sha384;
35081 hash.sha512 = hash.sha.sha512;
35082 hash.ripemd160 = hash.ripemd.ripemd160;
35083
35084 },{"./hash/common":58,"./hash/hmac":59,"./hash/ripemd":60,"./hash/sha":61,"./hash/utils":62}],58:[function(require,module,exports){
35085 var hash = require('../hash');
35086 var utils = hash.utils;
35087 var assert = utils.assert;
35088
35089 function BlockHash() {
35090 this.pending = null;
35091 this.pendingTotal = 0;
35092 this.blockSize = this.constructor.blockSize;
35093 this.outSize = this.constructor.outSize;
35094 this.hmacStrength = this.constructor.hmacStrength;
35095 this.padLength = this.constructor.padLength / 8;
35096 this.endian = 'big';
35097
35098 this._delta8 = this.blockSize / 8;
35099 this._delta32 = this.blockSize / 32;
35100 }
35101 exports.BlockHash = BlockHash;
35102
35103 BlockHash.prototype.update = function update(msg, enc) {
35104 // Convert message to array, pad it, and join into 32bit blocks
35105 msg = utils.toArray(msg, enc);
35106 if (!this.pending)
35107 this.pending = msg;
35108 else
35109 this.pending = this.pending.concat(msg);
35110 this.pendingTotal += msg.length;
35111
35112 // Enough data, try updating
35113 if (this.pending.length >= this._delta8) {
35114 msg = this.pending;
35115
35116 // Process pending data in blocks
35117 var r = msg.length % this._delta8;
35118 this.pending = msg.slice(msg.length - r, msg.length);
35119 if (this.pending.length === 0)
35120 this.pending = null;
35121
35122 msg = utils.join32(msg, 0, msg.length - r, this.endian);
35123 for (var i = 0; i < msg.length; i += this._delta32)
35124 this._update(msg, i, i + this._delta32);
35125 }
35126
35127 return this;
35128 };
35129
35130 BlockHash.prototype.digest = function digest(enc) {
35131 this.update(this._pad());
35132 assert(this.pending === null);
35133
35134 return this._digest(enc);
35135 };
35136
35137 BlockHash.prototype._pad = function pad() {
35138 var len = this.pendingTotal;
35139 var bytes = this._delta8;
35140 var k = bytes - ((len + this.padLength) % bytes);
35141 var res = new Array(k + this.padLength);
35142 res[0] = 0x80;
35143 for (var i = 1; i < k; i++)
35144 res[i] = 0;
35145
35146 // Append length
35147 len <<= 3;
35148 if (this.endian === 'big') {
35149 for (var t = 8; t < this.padLength; t++)
35150 res[i++] = 0;
35151
35152 res[i++] = 0;
35153 res[i++] = 0;
35154 res[i++] = 0;
35155 res[i++] = 0;
35156 res[i++] = (len >>> 24) & 0xff;
35157 res[i++] = (len >>> 16) & 0xff;
35158 res[i++] = (len >>> 8) & 0xff;
35159 res[i++] = len & 0xff;
35160 } else {
35161 res[i++] = len & 0xff;
35162 res[i++] = (len >>> 8) & 0xff;
35163 res[i++] = (len >>> 16) & 0xff;
35164 res[i++] = (len >>> 24) & 0xff;
35165 res[i++] = 0;
35166 res[i++] = 0;
35167 res[i++] = 0;
35168 res[i++] = 0;
35169
35170 for (var t = 8; t < this.padLength; t++)
35171 res[i++] = 0;
35172 }
35173
35174 return res;
35175 };
35176
35177 },{"../hash":57}],59:[function(require,module,exports){
35178 var hmac = exports;
35179
35180 var hash = require('../hash');
35181 var utils = hash.utils;
35182 var assert = utils.assert;
35183
35184 function Hmac(hash, key, enc) {
35185 if (!(this instanceof Hmac))
35186 return new Hmac(hash, key, enc);
35187 this.Hash = hash;
35188 this.blockSize = hash.blockSize / 8;
35189 this.outSize = hash.outSize / 8;
35190 this.inner = null;
35191 this.outer = null;
35192
35193 this._init(utils.toArray(key, enc));
35194 }
35195 module.exports = Hmac;
35196
35197 Hmac.prototype._init = function init(key) {
35198 // Shorten key, if needed
35199 if (key.length > this.blockSize)
35200 key = new this.Hash().update(key).digest();
35201 assert(key.length <= this.blockSize);
35202
35203 // Add padding to key
35204 for (var i = key.length; i < this.blockSize; i++)
35205 key.push(0);
35206
35207 for (var i = 0; i < key.length; i++)
35208 key[i] ^= 0x36;
35209 this.inner = new this.Hash().update(key);
35210
35211 // 0x36 ^ 0x5c = 0x6a
35212 for (var i = 0; i < key.length; i++)
35213 key[i] ^= 0x6a;
35214 this.outer = new this.Hash().update(key);
35215 };
35216
35217 Hmac.prototype.update = function update(msg, enc) {
35218 this.inner.update(msg, enc);
35219 return this;
35220 };
35221
35222 Hmac.prototype.digest = function digest(enc) {
35223 this.outer.update(this.inner.digest());
35224 return this.outer.digest(enc);
35225 };
35226
35227 },{"../hash":57}],60:[function(require,module,exports){
35228 var hash = require('../hash');
35229 var utils = hash.utils;
35230
35231 var rotl32 = utils.rotl32;
35232 var sum32 = utils.sum32;
35233 var sum32_3 = utils.sum32_3;
35234 var sum32_4 = utils.sum32_4;
35235 var BlockHash = hash.common.BlockHash;
35236
35237 function RIPEMD160() {
35238 if (!(this instanceof RIPEMD160))
35239 return new RIPEMD160();
35240
35241 BlockHash.call(this);
35242
35243 this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];
35244 this.endian = 'little';
35245 }
35246 utils.inherits(RIPEMD160, BlockHash);
35247 exports.ripemd160 = RIPEMD160;
35248
35249 RIPEMD160.blockSize = 512;
35250 RIPEMD160.outSize = 160;
35251 RIPEMD160.hmacStrength = 192;
35252 RIPEMD160.padLength = 64;
35253
35254 RIPEMD160.prototype._update = function update(msg, start) {
35255 var A = this.h[0];
35256 var B = this.h[1];
35257 var C = this.h[2];
35258 var D = this.h[3];
35259 var E = this.h[4];
35260 var Ah = A;
35261 var Bh = B;
35262 var Ch = C;
35263 var Dh = D;
35264 var Eh = E;
35265 for (var j = 0; j < 80; j++) {
35266 var T = sum32(
35267 rotl32(
35268 sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),
35269 s[j]),
35270 E);
35271 A = E;
35272 E = D;
35273 D = rotl32(C, 10);
35274 C = B;
35275 B = T;
35276 T = sum32(
35277 rotl32(
35278 sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),
35279 sh[j]),
35280 Eh);
35281 Ah = Eh;
35282 Eh = Dh;
35283 Dh = rotl32(Ch, 10);
35284 Ch = Bh;
35285 Bh = T;
35286 }
35287 T = sum32_3(this.h[1], C, Dh);
35288 this.h[1] = sum32_3(this.h[2], D, Eh);
35289 this.h[2] = sum32_3(this.h[3], E, Ah);
35290 this.h[3] = sum32_3(this.h[4], A, Bh);
35291 this.h[4] = sum32_3(this.h[0], B, Ch);
35292 this.h[0] = T;
35293 };
35294
35295 RIPEMD160.prototype._digest = function digest(enc) {
35296 if (enc === 'hex')
35297 return utils.toHex32(this.h, 'little');
35298 else
35299 return utils.split32(this.h, 'little');
35300 };
35301
35302 function f(j, x, y, z) {
35303 if (j <= 15)
35304 return x ^ y ^ z;
35305 else if (j <= 31)
35306 return (x & y) | ((~x) & z);
35307 else if (j <= 47)
35308 return (x | (~y)) ^ z;
35309 else if (j <= 63)
35310 return (x & z) | (y & (~z));
35311 else
35312 return x ^ (y | (~z));
35313 }
35314
35315 function K(j) {
35316 if (j <= 15)
35317 return 0x00000000;
35318 else if (j <= 31)
35319 return 0x5a827999;
35320 else if (j <= 47)
35321 return 0x6ed9eba1;
35322 else if (j <= 63)
35323 return 0x8f1bbcdc;
35324 else
35325 return 0xa953fd4e;
35326 }
35327
35328 function Kh(j) {
35329 if (j <= 15)
35330 return 0x50a28be6;
35331 else if (j <= 31)
35332 return 0x5c4dd124;
35333 else if (j <= 47)
35334 return 0x6d703ef3;
35335 else if (j <= 63)
35336 return 0x7a6d76e9;
35337 else
35338 return 0x00000000;
35339 }
35340
35341 var r = [
35342 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
35343 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
35344 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
35345 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
35346 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
35347 ];
35348
35349 var rh = [
35350 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
35351 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
35352 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
35353 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
35354 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
35355 ];
35356
35357 var s = [
35358 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
35359 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
35360 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
35361 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
35362 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
35363 ];
35364
35365 var sh = [
35366 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
35367 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
35368 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
35369 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
35370 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
35371 ];
35372
35373 },{"../hash":57}],61:[function(require,module,exports){
35374 var hash = require('../hash');
35375 var utils = hash.utils;
35376 var assert = utils.assert;
35377
35378 var rotr32 = utils.rotr32;
35379 var rotl32 = utils.rotl32;
35380 var sum32 = utils.sum32;
35381 var sum32_4 = utils.sum32_4;
35382 var sum32_5 = utils.sum32_5;
35383 var rotr64_hi = utils.rotr64_hi;
35384 var rotr64_lo = utils.rotr64_lo;
35385 var shr64_hi = utils.shr64_hi;
35386 var shr64_lo = utils.shr64_lo;
35387 var sum64 = utils.sum64;
35388 var sum64_hi = utils.sum64_hi;
35389 var sum64_lo = utils.sum64_lo;
35390 var sum64_4_hi = utils.sum64_4_hi;
35391 var sum64_4_lo = utils.sum64_4_lo;
35392 var sum64_5_hi = utils.sum64_5_hi;
35393 var sum64_5_lo = utils.sum64_5_lo;
35394 var BlockHash = hash.common.BlockHash;
35395
35396 var sha256_K = [
35397 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
35398 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
35399 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
35400 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
35401 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
35402 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
35403 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
35404 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
35405 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
35406 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
35407 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
35408 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
35409 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
35410 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
35411 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
35412 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
35413 ];
35414
35415 var sha512_K = [
35416 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
35417 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
35418 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
35419 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
35420 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
35421 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
35422 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
35423 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
35424 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
35425 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
35426 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
35427 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
35428 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
35429 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
35430 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
35431 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
35432 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
35433 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
35434 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
35435 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
35436 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
35437 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
35438 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
35439 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
35440 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
35441 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
35442 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
35443 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
35444 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
35445 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
35446 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
35447 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
35448 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
35449 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
35450 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
35451 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
35452 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
35453 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
35454 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
35455 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
35456 ];
35457
35458 var sha1_K = [
35459 0x5A827999, 0x6ED9EBA1,
35460 0x8F1BBCDC, 0xCA62C1D6
35461 ];
35462
35463 function SHA256() {
35464 if (!(this instanceof SHA256))
35465 return new SHA256();
35466
35467 BlockHash.call(this);
35468 this.h = [ 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,
35469 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19 ];
35470 this.k = sha256_K;
35471 this.W = new Array(64);
35472 }
35473 utils.inherits(SHA256, BlockHash);
35474 exports.sha256 = SHA256;
35475
35476 SHA256.blockSize = 512;
35477 SHA256.outSize = 256;
35478 SHA256.hmacStrength = 192;
35479 SHA256.padLength = 64;
35480
35481 SHA256.prototype._update = function _update(msg, start) {
35482 var W = this.W;
35483
35484 for (var i = 0; i < 16; i++)
35485 W[i] = msg[start + i];
35486 for (; i < W.length; i++)
35487 W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);
35488
35489 var a = this.h[0];
35490 var b = this.h[1];
35491 var c = this.h[2];
35492 var d = this.h[3];
35493 var e = this.h[4];
35494 var f = this.h[5];
35495 var g = this.h[6];
35496 var h = this.h[7];
35497
35498 assert(this.k.length === W.length);
35499 for (var i = 0; i < W.length; i++) {
35500 var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);
35501 var T2 = sum32(s0_256(a), maj32(a, b, c));
35502 h = g;
35503 g = f;
35504 f = e;
35505 e = sum32(d, T1);
35506 d = c;
35507 c = b;
35508 b = a;
35509 a = sum32(T1, T2);
35510 }
35511
35512 this.h[0] = sum32(this.h[0], a);
35513 this.h[1] = sum32(this.h[1], b);
35514 this.h[2] = sum32(this.h[2], c);
35515 this.h[3] = sum32(this.h[3], d);
35516 this.h[4] = sum32(this.h[4], e);
35517 this.h[5] = sum32(this.h[5], f);
35518 this.h[6] = sum32(this.h[6], g);
35519 this.h[7] = sum32(this.h[7], h);
35520 };
35521
35522 SHA256.prototype._digest = function digest(enc) {
35523 if (enc === 'hex')
35524 return utils.toHex32(this.h, 'big');
35525 else
35526 return utils.split32(this.h, 'big');
35527 };
35528
35529 function SHA224() {
35530 if (!(this instanceof SHA224))
35531 return new SHA224();
35532
35533 SHA256.call(this);
35534 this.h = [ 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,
35535 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];
35536 }
35537 utils.inherits(SHA224, SHA256);
35538 exports.sha224 = SHA224;
35539
35540 SHA224.blockSize = 512;
35541 SHA224.outSize = 224;
35542 SHA224.hmacStrength = 192;
35543 SHA224.padLength = 64;
35544
35545 SHA224.prototype._digest = function digest(enc) {
35546 // Just truncate output
35547 if (enc === 'hex')
35548 return utils.toHex32(this.h.slice(0, 7), 'big');
35549 else
35550 return utils.split32(this.h.slice(0, 7), 'big');
35551 };
35552
35553 function SHA512() {
35554 if (!(this instanceof SHA512))
35555 return new SHA512();
35556
35557 BlockHash.call(this);
35558 this.h = [ 0x6a09e667, 0xf3bcc908,
35559 0xbb67ae85, 0x84caa73b,
35560 0x3c6ef372, 0xfe94f82b,
35561 0xa54ff53a, 0x5f1d36f1,
35562 0x510e527f, 0xade682d1,
35563 0x9b05688c, 0x2b3e6c1f,
35564 0x1f83d9ab, 0xfb41bd6b,
35565 0x5be0cd19, 0x137e2179 ];
35566 this.k = sha512_K;
35567 this.W = new Array(160);
35568 }
35569 utils.inherits(SHA512, BlockHash);
35570 exports.sha512 = SHA512;
35571
35572 SHA512.blockSize = 1024;
35573 SHA512.outSize = 512;
35574 SHA512.hmacStrength = 192;
35575 SHA512.padLength = 128;
35576
35577 SHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {
35578 var W = this.W;
35579
35580 // 32 x 32bit words
35581 for (var i = 0; i < 32; i++)
35582 W[i] = msg[start + i];
35583 for (; i < W.length; i += 2) {
35584 var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2
35585 var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);
35586 var c1_hi = W[i - 14]; // i - 7
35587 var c1_lo = W[i - 13];
35588 var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15
35589 var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);
35590 var c3_hi = W[i - 32]; // i - 16
35591 var c3_lo = W[i - 31];
35592
35593 W[i] = sum64_4_hi(c0_hi, c0_lo,
35594 c1_hi, c1_lo,
35595 c2_hi, c2_lo,
35596 c3_hi, c3_lo);
35597 W[i + 1] = sum64_4_lo(c0_hi, c0_lo,
35598 c1_hi, c1_lo,
35599 c2_hi, c2_lo,
35600 c3_hi, c3_lo);
35601 }
35602 };
35603
35604 SHA512.prototype._update = function _update(msg, start) {
35605 this._prepareBlock(msg, start);
35606
35607 var W = this.W;
35608
35609 var ah = this.h[0];
35610 var al = this.h[1];
35611 var bh = this.h[2];
35612 var bl = this.h[3];
35613 var ch = this.h[4];
35614 var cl = this.h[5];
35615 var dh = this.h[6];
35616 var dl = this.h[7];
35617 var eh = this.h[8];
35618 var el = this.h[9];
35619 var fh = this.h[10];
35620 var fl = this.h[11];
35621 var gh = this.h[12];
35622 var gl = this.h[13];
35623 var hh = this.h[14];
35624 var hl = this.h[15];
35625
35626 assert(this.k.length === W.length);
35627 for (var i = 0; i < W.length; i += 2) {
35628 var c0_hi = hh;
35629 var c0_lo = hl;
35630 var c1_hi = s1_512_hi(eh, el);
35631 var c1_lo = s1_512_lo(eh, el);
35632 var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);
35633 var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);
35634 var c3_hi = this.k[i];
35635 var c3_lo = this.k[i + 1];
35636 var c4_hi = W[i];
35637 var c4_lo = W[i + 1];
35638
35639 var T1_hi = sum64_5_hi(c0_hi, c0_lo,
35640 c1_hi, c1_lo,
35641 c2_hi, c2_lo,
35642 c3_hi, c3_lo,
35643 c4_hi, c4_lo);
35644 var T1_lo = sum64_5_lo(c0_hi, c0_lo,
35645 c1_hi, c1_lo,
35646 c2_hi, c2_lo,
35647 c3_hi, c3_lo,
35648 c4_hi, c4_lo);
35649
35650 var c0_hi = s0_512_hi(ah, al);
35651 var c0_lo = s0_512_lo(ah, al);
35652 var c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);
35653 var c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);
35654
35655 var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);
35656 var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);
35657
35658 hh = gh;
35659 hl = gl;
35660
35661 gh = fh;
35662 gl = fl;
35663
35664 fh = eh;
35665 fl = el;
35666
35667 eh = sum64_hi(dh, dl, T1_hi, T1_lo);
35668 el = sum64_lo(dl, dl, T1_hi, T1_lo);
35669
35670 dh = ch;
35671 dl = cl;
35672
35673 ch = bh;
35674 cl = bl;
35675
35676 bh = ah;
35677 bl = al;
35678
35679 ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);
35680 al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);
35681 }
35682
35683 sum64(this.h, 0, ah, al);
35684 sum64(this.h, 2, bh, bl);
35685 sum64(this.h, 4, ch, cl);
35686 sum64(this.h, 6, dh, dl);
35687 sum64(this.h, 8, eh, el);
35688 sum64(this.h, 10, fh, fl);
35689 sum64(this.h, 12, gh, gl);
35690 sum64(this.h, 14, hh, hl);
35691 };
35692
35693 SHA512.prototype._digest = function digest(enc) {
35694 if (enc === 'hex')
35695 return utils.toHex32(this.h, 'big');
35696 else
35697 return utils.split32(this.h, 'big');
35698 };
35699
35700 function SHA384() {
35701 if (!(this instanceof SHA384))
35702 return new SHA384();
35703
35704 SHA512.call(this);
35705 this.h = [ 0xcbbb9d5d, 0xc1059ed8,
35706 0x629a292a, 0x367cd507,
35707 0x9159015a, 0x3070dd17,
35708 0x152fecd8, 0xf70e5939,
35709 0x67332667, 0xffc00b31,
35710 0x8eb44a87, 0x68581511,
35711 0xdb0c2e0d, 0x64f98fa7,
35712 0x47b5481d, 0xbefa4fa4 ];
35713 }
35714 utils.inherits(SHA384, SHA512);
35715 exports.sha384 = SHA384;
35716
35717 SHA384.blockSize = 1024;
35718 SHA384.outSize = 384;
35719 SHA384.hmacStrength = 192;
35720 SHA384.padLength = 128;
35721
35722 SHA384.prototype._digest = function digest(enc) {
35723 if (enc === 'hex')
35724 return utils.toHex32(this.h.slice(0, 12), 'big');
35725 else
35726 return utils.split32(this.h.slice(0, 12), 'big');
35727 };
35728
35729 function SHA1() {
35730 if (!(this instanceof SHA1))
35731 return new SHA1();
35732
35733 BlockHash.call(this);
35734 this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe,
35735 0x10325476, 0xc3d2e1f0 ];
35736 this.W = new Array(80);
35737 }
35738
35739 utils.inherits(SHA1, BlockHash);
35740 exports.sha1 = SHA1;
35741
35742 SHA1.blockSize = 512;
35743 SHA1.outSize = 160;
35744 SHA1.hmacStrength = 80;
35745 SHA1.padLength = 64;
35746
35747 SHA1.prototype._update = function _update(msg, start) {
35748 var W = this.W;
35749
35750 for (var i = 0; i < 16; i++)
35751 W[i] = msg[start + i];
35752
35753 for(; i < W.length; i++)
35754 W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);
35755
35756 var a = this.h[0];
35757 var b = this.h[1];
35758 var c = this.h[2];
35759 var d = this.h[3];
35760 var e = this.h[4];
35761
35762 for (var i = 0; i < W.length; i++) {
35763 var s = ~~(i / 20);
35764 var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);
35765 e = d;
35766 d = c;
35767 c = rotl32(b, 30);
35768 b = a;
35769 a = t;
35770 }
35771
35772 this.h[0] = sum32(this.h[0], a);
35773 this.h[1] = sum32(this.h[1], b);
35774 this.h[2] = sum32(this.h[2], c);
35775 this.h[3] = sum32(this.h[3], d);
35776 this.h[4] = sum32(this.h[4], e);
35777 };
35778
35779 SHA1.prototype._digest = function digest(enc) {
35780 if (enc === 'hex')
35781 return utils.toHex32(this.h, 'big');
35782 else
35783 return utils.split32(this.h, 'big');
35784 };
35785
35786 function ch32(x, y, z) {
35787 return (x & y) ^ ((~x) & z);
35788 }
35789
35790 function maj32(x, y, z) {
35791 return (x & y) ^ (x & z) ^ (y & z);
35792 }
35793
35794 function p32(x, y, z) {
35795 return x ^ y ^ z;
35796 }
35797
35798 function s0_256(x) {
35799 return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);
35800 }
35801
35802 function s1_256(x) {
35803 return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);
35804 }
35805
35806 function g0_256(x) {
35807 return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);
35808 }
35809
35810 function g1_256(x) {
35811 return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);
35812 }
35813
35814 function ft_1(s, x, y, z) {
35815 if (s === 0)
35816 return ch32(x, y, z);
35817 if (s === 1 || s === 3)
35818 return p32(x, y, z);
35819 if (s === 2)
35820 return maj32(x, y, z);
35821 }
35822
35823 function ch64_hi(xh, xl, yh, yl, zh, zl) {
35824 var r = (xh & yh) ^ ((~xh) & zh);
35825 if (r < 0)
35826 r += 0x100000000;
35827 return r;
35828 }
35829
35830 function ch64_lo(xh, xl, yh, yl, zh, zl) {
35831 var r = (xl & yl) ^ ((~xl) & zl);
35832 if (r < 0)
35833 r += 0x100000000;
35834 return r;
35835 }
35836
35837 function maj64_hi(xh, xl, yh, yl, zh, zl) {
35838 var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);
35839 if (r < 0)
35840 r += 0x100000000;
35841 return r;
35842 }
35843
35844 function maj64_lo(xh, xl, yh, yl, zh, zl) {
35845 var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);
35846 if (r < 0)
35847 r += 0x100000000;
35848 return r;
35849 }
35850
35851 function s0_512_hi(xh, xl) {
35852 var c0_hi = rotr64_hi(xh, xl, 28);
35853 var c1_hi = rotr64_hi(xl, xh, 2); // 34
35854 var c2_hi = rotr64_hi(xl, xh, 7); // 39
35855
35856 var r = c0_hi ^ c1_hi ^ c2_hi;
35857 if (r < 0)
35858 r += 0x100000000;
35859 return r;
35860 }
35861
35862 function s0_512_lo(xh, xl) {
35863 var c0_lo = rotr64_lo(xh, xl, 28);
35864 var c1_lo = rotr64_lo(xl, xh, 2); // 34
35865 var c2_lo = rotr64_lo(xl, xh, 7); // 39
35866
35867 var r = c0_lo ^ c1_lo ^ c2_lo;
35868 if (r < 0)
35869 r += 0x100000000;
35870 return r;
35871 }
35872
35873 function s1_512_hi(xh, xl) {
35874 var c0_hi = rotr64_hi(xh, xl, 14);
35875 var c1_hi = rotr64_hi(xh, xl, 18);
35876 var c2_hi = rotr64_hi(xl, xh, 9); // 41
35877
35878 var r = c0_hi ^ c1_hi ^ c2_hi;
35879 if (r < 0)
35880 r += 0x100000000;
35881 return r;
35882 }
35883
35884 function s1_512_lo(xh, xl) {
35885 var c0_lo = rotr64_lo(xh, xl, 14);
35886 var c1_lo = rotr64_lo(xh, xl, 18);
35887 var c2_lo = rotr64_lo(xl, xh, 9); // 41
35888
35889 var r = c0_lo ^ c1_lo ^ c2_lo;
35890 if (r < 0)
35891 r += 0x100000000;
35892 return r;
35893 }
35894
35895 function g0_512_hi(xh, xl) {
35896 var c0_hi = rotr64_hi(xh, xl, 1);
35897 var c1_hi = rotr64_hi(xh, xl, 8);
35898 var c2_hi = shr64_hi(xh, xl, 7);
35899
35900 var r = c0_hi ^ c1_hi ^ c2_hi;
35901 if (r < 0)
35902 r += 0x100000000;
35903 return r;
35904 }
35905
35906 function g0_512_lo(xh, xl) {
35907 var c0_lo = rotr64_lo(xh, xl, 1);
35908 var c1_lo = rotr64_lo(xh, xl, 8);
35909 var c2_lo = shr64_lo(xh, xl, 7);
35910
35911 var r = c0_lo ^ c1_lo ^ c2_lo;
35912 if (r < 0)
35913 r += 0x100000000;
35914 return r;
35915 }
35916
35917 function g1_512_hi(xh, xl) {
35918 var c0_hi = rotr64_hi(xh, xl, 19);
35919 var c1_hi = rotr64_hi(xl, xh, 29); // 61
35920 var c2_hi = shr64_hi(xh, xl, 6);
35921
35922 var r = c0_hi ^ c1_hi ^ c2_hi;
35923 if (r < 0)
35924 r += 0x100000000;
35925 return r;
35926 }
35927
35928 function g1_512_lo(xh, xl) {
35929 var c0_lo = rotr64_lo(xh, xl, 19);
35930 var c1_lo = rotr64_lo(xl, xh, 29); // 61
35931 var c2_lo = shr64_lo(xh, xl, 6);
35932
35933 var r = c0_lo ^ c1_lo ^ c2_lo;
35934 if (r < 0)
35935 r += 0x100000000;
35936 return r;
35937 }
35938
35939 },{"../hash":57}],62:[function(require,module,exports){
35940 var utils = exports;
35941 var inherits = require('inherits');
35942
35943 function toArray(msg, enc) {
35944 if (Array.isArray(msg))
35945 return msg.slice();
35946 if (!msg)
35947 return [];
35948 var res = [];
35949 if (typeof msg === 'string') {
35950 if (!enc) {
35951 for (var i = 0; i < msg.length; i++) {
35952 var c = msg.charCodeAt(i);
35953 var hi = c >> 8;
35954 var lo = c & 0xff;
35955 if (hi)
35956 res.push(hi, lo);
35957 else
35958 res.push(lo);
35959 }
35960 } else if (enc === 'hex') {
35961 msg = msg.replace(/[^a-z0-9]+/ig, '');
35962 if (msg.length % 2 !== 0)
35963 msg = '0' + msg;
35964 for (var i = 0; i < msg.length; i += 2)
35965 res.push(parseInt(msg[i] + msg[i + 1], 16));
35966 }
35967 } else {
35968 for (var i = 0; i < msg.length; i++)
35969 res[i] = msg[i] | 0;
35970 }
35971 return res;
35972 }
35973 utils.toArray = toArray;
35974
35975 function toHex(msg) {
35976 var res = '';
35977 for (var i = 0; i < msg.length; i++)
35978 res += zero2(msg[i].toString(16));
35979 return res;
35980 }
35981 utils.toHex = toHex;
35982
35983 function htonl(w) {
35984 var res = (w >>> 24) |
35985 ((w >>> 8) & 0xff00) |
35986 ((w << 8) & 0xff0000) |
35987 ((w & 0xff) << 24);
35988 return res >>> 0;
35989 }
35990 utils.htonl = htonl;
35991
35992 function toHex32(msg, endian) {
35993 var res = '';
35994 for (var i = 0; i < msg.length; i++) {
35995 var w = msg[i];
35996 if (endian === 'little')
35997 w = htonl(w);
35998 res += zero8(w.toString(16));
35999 }
36000 return res;
36001 }
36002 utils.toHex32 = toHex32;
36003
36004 function zero2(word) {
36005 if (word.length === 1)
36006 return '0' + word;
36007 else
36008 return word;
36009 }
36010 utils.zero2 = zero2;
36011
36012 function zero8(word) {
36013 if (word.length === 7)
36014 return '0' + word;
36015 else if (word.length === 6)
36016 return '00' + word;
36017 else if (word.length === 5)
36018 return '000' + word;
36019 else if (word.length === 4)
36020 return '0000' + word;
36021 else if (word.length === 3)
36022 return '00000' + word;
36023 else if (word.length === 2)
36024 return '000000' + word;
36025 else if (word.length === 1)
36026 return '0000000' + word;
36027 else
36028 return word;
36029 }
36030 utils.zero8 = zero8;
36031
36032 function join32(msg, start, end, endian) {
36033 var len = end - start;
36034 assert(len % 4 === 0);
36035 var res = new Array(len / 4);
36036 for (var i = 0, k = start; i < res.length; i++, k += 4) {
36037 var w;
36038 if (endian === 'big')
36039 w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];
36040 else
36041 w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];
36042 res[i] = w >>> 0;
36043 }
36044 return res;
36045 }
36046 utils.join32 = join32;
36047
36048 function split32(msg, endian) {
36049 var res = new Array(msg.length * 4);
36050 for (var i = 0, k = 0; i < msg.length; i++, k += 4) {
36051 var m = msg[i];
36052 if (endian === 'big') {
36053 res[k] = m >>> 24;
36054 res[k + 1] = (m >>> 16) & 0xff;
36055 res[k + 2] = (m >>> 8) & 0xff;
36056 res[k + 3] = m & 0xff;
36057 } else {
36058 res[k + 3] = m >>> 24;
36059 res[k + 2] = (m >>> 16) & 0xff;
36060 res[k + 1] = (m >>> 8) & 0xff;
36061 res[k] = m & 0xff;
36062 }
36063 }
36064 return res;
36065 }
36066 utils.split32 = split32;
36067
36068 function rotr32(w, b) {
36069 return (w >>> b) | (w << (32 - b));
36070 }
36071 utils.rotr32 = rotr32;
36072
36073 function rotl32(w, b) {
36074 return (w << b) | (w >>> (32 - b));
36075 }
36076 utils.rotl32 = rotl32;
36077
36078 function sum32(a, b) {
36079 return (a + b) >>> 0;
36080 }
36081 utils.sum32 = sum32;
36082
36083 function sum32_3(a, b, c) {
36084 return (a + b + c) >>> 0;
36085 }
36086 utils.sum32_3 = sum32_3;
36087
36088 function sum32_4(a, b, c, d) {
36089 return (a + b + c + d) >>> 0;
36090 }
36091 utils.sum32_4 = sum32_4;
36092
36093 function sum32_5(a, b, c, d, e) {
36094 return (a + b + c + d + e) >>> 0;
36095 }
36096 utils.sum32_5 = sum32_5;
36097
36098 function assert(cond, msg) {
36099 if (!cond)
36100 throw new Error(msg || 'Assertion failed');
36101 }
36102 utils.assert = assert;
36103
36104 utils.inherits = inherits;
36105
36106 function sum64(buf, pos, ah, al) {
36107 var bh = buf[pos];
36108 var bl = buf[pos + 1];
36109
36110 var lo = (al + bl) >>> 0;
36111 var hi = (lo < al ? 1 : 0) + ah + bh;
36112 buf[pos] = hi >>> 0;
36113 buf[pos + 1] = lo;
36114 }
36115 exports.sum64 = sum64;
36116
36117 function sum64_hi(ah, al, bh, bl) {
36118 var lo = (al + bl) >>> 0;
36119 var hi = (lo < al ? 1 : 0) + ah + bh;
36120 return hi >>> 0;
36121 };
36122 exports.sum64_hi = sum64_hi;
36123
36124 function sum64_lo(ah, al, bh, bl) {
36125 var lo = al + bl;
36126 return lo >>> 0;
36127 };
36128 exports.sum64_lo = sum64_lo;
36129
36130 function sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {
36131 var carry = 0;
36132 var lo = al;
36133 lo = (lo + bl) >>> 0;
36134 carry += lo < al ? 1 : 0;
36135 lo = (lo + cl) >>> 0;
36136 carry += lo < cl ? 1 : 0;
36137 lo = (lo + dl) >>> 0;
36138 carry += lo < dl ? 1 : 0;
36139
36140 var hi = ah + bh + ch + dh + carry;
36141 return hi >>> 0;
36142 };
36143 exports.sum64_4_hi = sum64_4_hi;
36144
36145 function sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {
36146 var lo = al + bl + cl + dl;
36147 return lo >>> 0;
36148 };
36149 exports.sum64_4_lo = sum64_4_lo;
36150
36151 function sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
36152 var carry = 0;
36153 var lo = al;
36154 lo = (lo + bl) >>> 0;
36155 carry += lo < al ? 1 : 0;
36156 lo = (lo + cl) >>> 0;
36157 carry += lo < cl ? 1 : 0;
36158 lo = (lo + dl) >>> 0;
36159 carry += lo < dl ? 1 : 0;
36160 lo = (lo + el) >>> 0;
36161 carry += lo < el ? 1 : 0;
36162
36163 var hi = ah + bh + ch + dh + eh + carry;
36164 return hi >>> 0;
36165 };
36166 exports.sum64_5_hi = sum64_5_hi;
36167
36168 function sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
36169 var lo = al + bl + cl + dl + el;
36170
36171 return lo >>> 0;
36172 };
36173 exports.sum64_5_lo = sum64_5_lo;
36174
36175 function rotr64_hi(ah, al, num) {
36176 var r = (al << (32 - num)) | (ah >>> num);
36177 return r >>> 0;
36178 };
36179 exports.rotr64_hi = rotr64_hi;
36180
36181 function rotr64_lo(ah, al, num) {
36182 var r = (ah << (32 - num)) | (al >>> num);
36183 return r >>> 0;
36184 };
36185 exports.rotr64_lo = rotr64_lo;
36186
36187 function shr64_hi(ah, al, num) {
36188 return ah >>> num;
36189 };
36190 exports.shr64_hi = shr64_hi;
36191
36192 function shr64_lo(ah, al, num) {
36193 var r = (ah << (32 - num)) | (al >>> num);
36194 return r >>> 0;
36195 };
36196 exports.shr64_lo = shr64_lo;
36197
36198 },{"inherits":63}],63:[function(require,module,exports){
36199 arguments[4][9][0].apply(exports,arguments)
36200 },{"dup":9}],64:[function(require,module,exports){
36201 /**
36202 * Returns a `Boolean` on whether or not the a `String` starts with '0x'
36203 * @param {String} str the string input value
36204 * @return {Boolean} a boolean if it is or is not hex prefixed
36205 * @throws if the str input is not a string
36206 */
36207 module.exports = function isHexPrefixed(str) {
36208 if (typeof str !== 'string') {
36209 throw new Error("[is-hex-prefixed] value must be type 'string', is currently type " + (typeof str) + ", while checking isHexPrefixed.");
36210 }
36211
36212 return str.slice(0, 2) === '0x';
36213 }
36214
36215 },{}],65:[function(require,module,exports){
36216 'use strict'
36217 module.exports = require('./lib/api')(require('./lib/keccak'))
36218
36219 },{"./lib/api":66,"./lib/keccak":70}],66:[function(require,module,exports){
36220 'use strict'
36221 var createKeccak = require('./keccak')
36222 var createShake = require('./shake')
36223
36224 module.exports = function (KeccakState) {
36225 var Keccak = createKeccak(KeccakState)
36226 var Shake = createShake(KeccakState)
36227
36228 return function (algorithm, options) {
36229 var hash = typeof algorithm === 'string' ? algorithm.toLowerCase() : algorithm
36230 switch (hash) {
36231 case 'keccak224': return new Keccak(1152, 448, null, 224, options)
36232 case 'keccak256': return new Keccak(1088, 512, null, 256, options)
36233 case 'keccak384': return new Keccak(832, 768, null, 384, options)
36234 case 'keccak512': return new Keccak(576, 1024, null, 512, options)
36235
36236 case 'sha3-224': return new Keccak(1152, 448, 0x06, 224, options)
36237 case 'sha3-256': return new Keccak(1088, 512, 0x06, 256, options)
36238 case 'sha3-384': return new Keccak(832, 768, 0x06, 384, options)
36239 case 'sha3-512': return new Keccak(576, 1024, 0x06, 512, options)
36240
36241 case 'shake128': return new Shake(1344, 256, 0x1f, options)
36242 case 'shake256': return new Shake(1088, 512, 0x1f, options)
36243
36244 default: throw new Error('Invald algorithm: ' + algorithm)
36245 }
36246 }
36247 }
36248
36249 },{"./keccak":67,"./shake":68}],67:[function(require,module,exports){
36250 (function (Buffer){
36251 'use strict'
36252 var Transform = require('stream').Transform
36253 var inherits = require('inherits')
36254
36255 module.exports = function (KeccakState) {
36256 function Keccak (rate, capacity, delimitedSuffix, hashBitLength, options) {
36257 Transform.call(this, options)
36258
36259 this._rate = rate
36260 this._capacity = capacity
36261 this._delimitedSuffix = delimitedSuffix
36262 this._hashBitLength = hashBitLength
36263 this._options = options
36264
36265 this._state = new KeccakState()
36266 this._state.initialize(rate, capacity)
36267 this._finalized = false
36268 }
36269
36270 inherits(Keccak, Transform)
36271
36272 Keccak.prototype._transform = function (chunk, encoding, callback) {
36273 var error = null
36274 try {
36275 this.update(chunk, encoding)
36276 } catch (err) {
36277 error = err
36278 }
36279
36280 callback(error)
36281 }
36282
36283 Keccak.prototype._flush = function (callback) {
36284 var error = null
36285 try {
36286 this.push(this.digest())
36287 } catch (err) {
36288 error = err
36289 }
36290
36291 callback(error)
36292 }
36293
36294 Keccak.prototype.update = function (data, encoding) {
36295 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
36296 if (this._finalized) throw new Error('Digest already called')
36297 if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)
36298
36299 this._state.absorb(data)
36300
36301 return this
36302 }
36303
36304 Keccak.prototype.digest = function (encoding) {
36305 if (this._finalized) throw new Error('Digest already called')
36306 this._finalized = true
36307
36308 if (this._delimitedSuffix) this._state.absorbLastFewBits(this._delimitedSuffix)
36309 var digest = this._state.squeeze(this._hashBitLength / 8)
36310 if (encoding !== undefined) digest = digest.toString(encoding)
36311
36312 this._resetState()
36313
36314 return digest
36315 }
36316
36317 // remove result from memory
36318 Keccak.prototype._resetState = function () {
36319 this._state.initialize(this._rate, this._capacity)
36320 return this
36321 }
36322
36323 // because sometimes we need hash right now and little later
36324 Keccak.prototype._clone = function () {
36325 var clone = new Keccak(this._rate, this._capacity, this._delimitedSuffix, this._hashBitLength, this._options)
36326 this._state.copy(clone._state)
36327 clone._finalized = this._finalized
36328
36329 return clone
36330 }
36331
36332 return Keccak
36333 }
36334
36335 }).call(this,require("buffer").Buffer)
36336 },{"buffer":5,"inherits":63,"stream":25}],68:[function(require,module,exports){
36337 (function (Buffer){
36338 'use strict'
36339 var Transform = require('stream').Transform
36340 var inherits = require('inherits')
36341
36342 module.exports = function (KeccakState) {
36343 function Shake (rate, capacity, delimitedSuffix, options) {
36344 Transform.call(this, options)
36345
36346 this._rate = rate
36347 this._capacity = capacity
36348 this._delimitedSuffix = delimitedSuffix
36349 this._options = options
36350
36351 this._state = new KeccakState()
36352 this._state.initialize(rate, capacity)
36353 this._finalized = false
36354 }
36355
36356 inherits(Shake, Transform)
36357
36358 Shake.prototype._transform = function (chunk, encoding, callback) {
36359 var error = null
36360 try {
36361 this.update(chunk, encoding)
36362 } catch (err) {
36363 error = err
36364 }
36365
36366 callback(error)
36367 }
36368
36369 Shake.prototype._flush = function () {}
36370
36371 Shake.prototype._read = function (size) {
36372 this.push(this.squeeze(size))
36373 }
36374
36375 Shake.prototype.update = function (data, encoding) {
36376 if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
36377 if (this._finalized) throw new Error('Squeeze already called')
36378 if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)
36379
36380 this._state.absorb(data)
36381
36382 return this
36383 }
36384
36385 Shake.prototype.squeeze = function (dataByteLength, encoding) {
36386 if (!this._finalized) {
36387 this._finalized = true
36388 this._state.absorbLastFewBits(this._delimitedSuffix)
36389 }
36390
36391 var data = this._state.squeeze(dataByteLength)
36392 if (encoding !== undefined) data = data.toString(encoding)
36393
36394 return data
36395 }
36396
36397 Shake.prototype._resetState = function () {
36398 this._state.initialize(this._rate, this._capacity)
36399 return this
36400 }
36401
36402 Shake.prototype._clone = function () {
36403 var clone = new Shake(this._rate, this._capacity, this._delimitedSuffix, this._options)
36404 this._state.copy(clone._state)
36405 clone._finalized = this._finalized
36406
36407 return clone
36408 }
36409
36410 return Shake
36411 }
36412
36413 }).call(this,require("buffer").Buffer)
36414 },{"buffer":5,"inherits":63,"stream":25}],69:[function(require,module,exports){
36415 'use strict'
36416 var P1600_ROUND_CONSTANTS = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649, 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0, 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771, 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648, 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648]
36417
36418 exports.p1600 = function (s) {
36419 for (var round = 0; round < 24; ++round) {
36420 // theta
36421 var lo0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40]
36422 var hi0 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41]
36423 var lo1 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42]
36424 var hi1 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43]
36425 var lo2 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44]
36426 var hi2 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45]
36427 var lo3 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46]
36428 var hi3 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47]
36429 var lo4 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48]
36430 var hi4 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49]
36431
36432 var lo = lo4 ^ (lo1 << 1 | hi1 >>> 31)
36433 var hi = hi4 ^ (hi1 << 1 | lo1 >>> 31)
36434 var t1slo0 = s[0] ^ lo
36435 var t1shi0 = s[1] ^ hi
36436 var t1slo5 = s[10] ^ lo
36437 var t1shi5 = s[11] ^ hi
36438 var t1slo10 = s[20] ^ lo
36439 var t1shi10 = s[21] ^ hi
36440 var t1slo15 = s[30] ^ lo
36441 var t1shi15 = s[31] ^ hi
36442 var t1slo20 = s[40] ^ lo
36443 var t1shi20 = s[41] ^ hi
36444 lo = lo0 ^ (lo2 << 1 | hi2 >>> 31)
36445 hi = hi0 ^ (hi2 << 1 | lo2 >>> 31)
36446 var t1slo1 = s[2] ^ lo
36447 var t1shi1 = s[3] ^ hi
36448 var t1slo6 = s[12] ^ lo
36449 var t1shi6 = s[13] ^ hi
36450 var t1slo11 = s[22] ^ lo
36451 var t1shi11 = s[23] ^ hi
36452 var t1slo16 = s[32] ^ lo
36453 var t1shi16 = s[33] ^ hi
36454 var t1slo21 = s[42] ^ lo
36455 var t1shi21 = s[43] ^ hi
36456 lo = lo1 ^ (lo3 << 1 | hi3 >>> 31)
36457 hi = hi1 ^ (hi3 << 1 | lo3 >>> 31)
36458 var t1slo2 = s[4] ^ lo
36459 var t1shi2 = s[5] ^ hi
36460 var t1slo7 = s[14] ^ lo
36461 var t1shi7 = s[15] ^ hi
36462 var t1slo12 = s[24] ^ lo
36463 var t1shi12 = s[25] ^ hi
36464 var t1slo17 = s[34] ^ lo
36465 var t1shi17 = s[35] ^ hi
36466 var t1slo22 = s[44] ^ lo
36467 var t1shi22 = s[45] ^ hi
36468 lo = lo2 ^ (lo4 << 1 | hi4 >>> 31)
36469 hi = hi2 ^ (hi4 << 1 | lo4 >>> 31)
36470 var t1slo3 = s[6] ^ lo
36471 var t1shi3 = s[7] ^ hi
36472 var t1slo8 = s[16] ^ lo
36473 var t1shi8 = s[17] ^ hi
36474 var t1slo13 = s[26] ^ lo
36475 var t1shi13 = s[27] ^ hi
36476 var t1slo18 = s[36] ^ lo
36477 var t1shi18 = s[37] ^ hi
36478 var t1slo23 = s[46] ^ lo
36479 var t1shi23 = s[47] ^ hi
36480 lo = lo3 ^ (lo0 << 1 | hi0 >>> 31)
36481 hi = hi3 ^ (hi0 << 1 | lo0 >>> 31)
36482 var t1slo4 = s[8] ^ lo
36483 var t1shi4 = s[9] ^ hi
36484 var t1slo9 = s[18] ^ lo
36485 var t1shi9 = s[19] ^ hi
36486 var t1slo14 = s[28] ^ lo
36487 var t1shi14 = s[29] ^ hi
36488 var t1slo19 = s[38] ^ lo
36489 var t1shi19 = s[39] ^ hi
36490 var t1slo24 = s[48] ^ lo
36491 var t1shi24 = s[49] ^ hi
36492
36493 // rho & pi
36494 var t2slo0 = t1slo0
36495 var t2shi0 = t1shi0
36496 var t2slo16 = (t1shi5 << 4 | t1slo5 >>> 28)
36497 var t2shi16 = (t1slo5 << 4 | t1shi5 >>> 28)
36498 var t2slo7 = (t1slo10 << 3 | t1shi10 >>> 29)
36499 var t2shi7 = (t1shi10 << 3 | t1slo10 >>> 29)
36500 var t2slo23 = (t1shi15 << 9 | t1slo15 >>> 23)
36501 var t2shi23 = (t1slo15 << 9 | t1shi15 >>> 23)
36502 var t2slo14 = (t1slo20 << 18 | t1shi20 >>> 14)
36503 var t2shi14 = (t1shi20 << 18 | t1slo20 >>> 14)
36504 var t2slo10 = (t1slo1 << 1 | t1shi1 >>> 31)
36505 var t2shi10 = (t1shi1 << 1 | t1slo1 >>> 31)
36506 var t2slo1 = (t1shi6 << 12 | t1slo6 >>> 20)
36507 var t2shi1 = (t1slo6 << 12 | t1shi6 >>> 20)
36508 var t2slo17 = (t1slo11 << 10 | t1shi11 >>> 22)
36509 var t2shi17 = (t1shi11 << 10 | t1slo11 >>> 22)
36510 var t2slo8 = (t1shi16 << 13 | t1slo16 >>> 19)
36511 var t2shi8 = (t1slo16 << 13 | t1shi16 >>> 19)
36512 var t2slo24 = (t1slo21 << 2 | t1shi21 >>> 30)
36513 var t2shi24 = (t1shi21 << 2 | t1slo21 >>> 30)
36514 var t2slo20 = (t1shi2 << 30 | t1slo2 >>> 2)
36515 var t2shi20 = (t1slo2 << 30 | t1shi2 >>> 2)
36516 var t2slo11 = (t1slo7 << 6 | t1shi7 >>> 26)
36517 var t2shi11 = (t1shi7 << 6 | t1slo7 >>> 26)
36518 var t2slo2 = (t1shi12 << 11 | t1slo12 >>> 21)
36519 var t2shi2 = (t1slo12 << 11 | t1shi12 >>> 21)
36520 var t2slo18 = (t1slo17 << 15 | t1shi17 >>> 17)
36521 var t2shi18 = (t1shi17 << 15 | t1slo17 >>> 17)
36522 var t2slo9 = (t1shi22 << 29 | t1slo22 >>> 3)
36523 var t2shi9 = (t1slo22 << 29 | t1shi22 >>> 3)
36524 var t2slo5 = (t1slo3 << 28 | t1shi3 >>> 4)
36525 var t2shi5 = (t1shi3 << 28 | t1slo3 >>> 4)
36526 var t2slo21 = (t1shi8 << 23 | t1slo8 >>> 9)
36527 var t2shi21 = (t1slo8 << 23 | t1shi8 >>> 9)
36528 var t2slo12 = (t1slo13 << 25 | t1shi13 >>> 7)
36529 var t2shi12 = (t1shi13 << 25 | t1slo13 >>> 7)
36530 var t2slo3 = (t1slo18 << 21 | t1shi18 >>> 11)
36531 var t2shi3 = (t1shi18 << 21 | t1slo18 >>> 11)
36532 var t2slo19 = (t1shi23 << 24 | t1slo23 >>> 8)
36533 var t2shi19 = (t1slo23 << 24 | t1shi23 >>> 8)
36534 var t2slo15 = (t1slo4 << 27 | t1shi4 >>> 5)
36535 var t2shi15 = (t1shi4 << 27 | t1slo4 >>> 5)
36536 var t2slo6 = (t1slo9 << 20 | t1shi9 >>> 12)
36537 var t2shi6 = (t1shi9 << 20 | t1slo9 >>> 12)
36538 var t2slo22 = (t1shi14 << 7 | t1slo14 >>> 25)
36539 var t2shi22 = (t1slo14 << 7 | t1shi14 >>> 25)
36540 var t2slo13 = (t1slo19 << 8 | t1shi19 >>> 24)
36541 var t2shi13 = (t1shi19 << 8 | t1slo19 >>> 24)
36542 var t2slo4 = (t1slo24 << 14 | t1shi24 >>> 18)
36543 var t2shi4 = (t1shi24 << 14 | t1slo24 >>> 18)
36544
36545 // chi
36546 s[0] = t2slo0 ^ (~t2slo1 & t2slo2)
36547 s[1] = t2shi0 ^ (~t2shi1 & t2shi2)
36548 s[10] = t2slo5 ^ (~t2slo6 & t2slo7)
36549 s[11] = t2shi5 ^ (~t2shi6 & t2shi7)
36550 s[20] = t2slo10 ^ (~t2slo11 & t2slo12)
36551 s[21] = t2shi10 ^ (~t2shi11 & t2shi12)
36552 s[30] = t2slo15 ^ (~t2slo16 & t2slo17)
36553 s[31] = t2shi15 ^ (~t2shi16 & t2shi17)
36554 s[40] = t2slo20 ^ (~t2slo21 & t2slo22)
36555 s[41] = t2shi20 ^ (~t2shi21 & t2shi22)
36556 s[2] = t2slo1 ^ (~t2slo2 & t2slo3)
36557 s[3] = t2shi1 ^ (~t2shi2 & t2shi3)
36558 s[12] = t2slo6 ^ (~t2slo7 & t2slo8)
36559 s[13] = t2shi6 ^ (~t2shi7 & t2shi8)
36560 s[22] = t2slo11 ^ (~t2slo12 & t2slo13)
36561 s[23] = t2shi11 ^ (~t2shi12 & t2shi13)
36562 s[32] = t2slo16 ^ (~t2slo17 & t2slo18)
36563 s[33] = t2shi16 ^ (~t2shi17 & t2shi18)
36564 s[42] = t2slo21 ^ (~t2slo22 & t2slo23)
36565 s[43] = t2shi21 ^ (~t2shi22 & t2shi23)
36566 s[4] = t2slo2 ^ (~t2slo3 & t2slo4)
36567 s[5] = t2shi2 ^ (~t2shi3 & t2shi4)
36568 s[14] = t2slo7 ^ (~t2slo8 & t2slo9)
36569 s[15] = t2shi7 ^ (~t2shi8 & t2shi9)
36570 s[24] = t2slo12 ^ (~t2slo13 & t2slo14)
36571 s[25] = t2shi12 ^ (~t2shi13 & t2shi14)
36572 s[34] = t2slo17 ^ (~t2slo18 & t2slo19)
36573 s[35] = t2shi17 ^ (~t2shi18 & t2shi19)
36574 s[44] = t2slo22 ^ (~t2slo23 & t2slo24)
36575 s[45] = t2shi22 ^ (~t2shi23 & t2shi24)
36576 s[6] = t2slo3 ^ (~t2slo4 & t2slo0)
36577 s[7] = t2shi3 ^ (~t2shi4 & t2shi0)
36578 s[16] = t2slo8 ^ (~t2slo9 & t2slo5)
36579 s[17] = t2shi8 ^ (~t2shi9 & t2shi5)
36580 s[26] = t2slo13 ^ (~t2slo14 & t2slo10)
36581 s[27] = t2shi13 ^ (~t2shi14 & t2shi10)
36582 s[36] = t2slo18 ^ (~t2slo19 & t2slo15)
36583 s[37] = t2shi18 ^ (~t2shi19 & t2shi15)
36584 s[46] = t2slo23 ^ (~t2slo24 & t2slo20)
36585 s[47] = t2shi23 ^ (~t2shi24 & t2shi20)
36586 s[8] = t2slo4 ^ (~t2slo0 & t2slo1)
36587 s[9] = t2shi4 ^ (~t2shi0 & t2shi1)
36588 s[18] = t2slo9 ^ (~t2slo5 & t2slo6)
36589 s[19] = t2shi9 ^ (~t2shi5 & t2shi6)
36590 s[28] = t2slo14 ^ (~t2slo10 & t2slo11)
36591 s[29] = t2shi14 ^ (~t2shi10 & t2shi11)
36592 s[38] = t2slo19 ^ (~t2slo15 & t2slo16)
36593 s[39] = t2shi19 ^ (~t2shi15 & t2shi16)
36594 s[48] = t2slo24 ^ (~t2slo20 & t2slo21)
36595 s[49] = t2shi24 ^ (~t2shi20 & t2shi21)
36596
36597 // iota
36598 s[0] ^= P1600_ROUND_CONSTANTS[round * 2]
36599 s[1] ^= P1600_ROUND_CONSTANTS[round * 2 + 1]
36600 }
36601 }
36602
36603 },{}],70:[function(require,module,exports){
36604 (function (Buffer){
36605 'use strict'
36606 var keccakState = require('./keccak-state-unroll')
36607
36608 function Keccak () {
36609 // much faster than `new Array(50)`
36610 this.state = [
36611 0, 0, 0, 0, 0,
36612 0, 0, 0, 0, 0,
36613 0, 0, 0, 0, 0,
36614 0, 0, 0, 0, 0,
36615 0, 0, 0, 0, 0
36616 ]
36617
36618 this.blockSize = null
36619 this.count = 0
36620 this.squeezing = false
36621 }
36622
36623 Keccak.prototype.initialize = function (rate, capacity) {
36624 for (var i = 0; i < 50; ++i) this.state[i] = 0
36625 this.blockSize = rate / 8
36626 this.count = 0
36627 this.squeezing = false
36628 }
36629
36630 Keccak.prototype.absorb = function (data) {
36631 for (var i = 0; i < data.length; ++i) {
36632 this.state[~~(this.count / 4)] ^= data[i] << (8 * (this.count % 4))
36633 this.count += 1
36634 if (this.count === this.blockSize) {
36635 keccakState.p1600(this.state)
36636 this.count = 0
36637 }
36638 }
36639 }
36640
36641 Keccak.prototype.absorbLastFewBits = function (bits) {
36642 this.state[~~(this.count / 4)] ^= bits << (8 * (this.count % 4))
36643 if ((bits & 0x80) !== 0 && this.count === (this.blockSize - 1)) keccakState.p1600(this.state)
36644 this.state[~~((this.blockSize - 1) / 4)] ^= 0x80 << (8 * ((this.blockSize - 1) % 4))
36645 keccakState.p1600(this.state)
36646 this.count = 0
36647 this.squeezing = true
36648 }
36649
36650 Keccak.prototype.squeeze = function (length) {
36651 if (!this.squeezing) this.absorbLastFewBits(0x01)
36652
36653 var output = Buffer.allocUnsafe(length)
36654 for (var i = 0; i < length; ++i) {
36655 output[i] = (this.state[~~(this.count / 4)] >>> (8 * (this.count % 4))) & 0xff
36656 this.count += 1
36657 if (this.count === this.blockSize) {
36658 keccakState.p1600(this.state)
36659 this.count = 0
36660 }
36661 }
36662
36663 return output
36664 }
36665
36666 Keccak.prototype.copy = function (dest) {
36667 for (var i = 0; i < 50; ++i) dest.state[i] = this.state[i]
36668 dest.blockSize = this.blockSize
36669 dest.count = this.count
36670 dest.squeezing = this.squeezing
36671 }
36672
36673 module.exports = Keccak
36674
36675 }).call(this,require("buffer").Buffer)
36676 },{"./keccak-state-unroll":69,"buffer":5}],71:[function(require,module,exports){
36677 (function (Buffer){
36678 /*
36679 CryptoJS v3.1.2
36680 code.google.com/p/crypto-js
36681 (c) 2009-2013 by Jeff Mott. All rights reserved.
36682 code.google.com/p/crypto-js/wiki/License
36683 */
36684 /** @preserve
36685 (c) 2012 by Cédric Mesnil. All rights reserved.
36686
36687 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
36688
36689 - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
36690 - 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.
36691
36692 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.
36693 */
36694
36695 // constants table
36696 var zl = [
36697 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
36698 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
36699 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
36700 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
36701 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
36702 ]
36703
36704 var zr = [
36705 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
36706 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
36707 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
36708 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
36709 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
36710 ]
36711
36712 var sl = [
36713 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
36714 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
36715 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
36716 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
36717 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
36718 ]
36719
36720 var sr = [
36721 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
36722 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
36723 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
36724 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
36725 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
36726 ]
36727
36728 var hl = [0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]
36729 var hr = [0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]
36730
36731 function bytesToWords (bytes) {
36732 var words = []
36733 for (var i = 0, b = 0; i < bytes.length; i++, b += 8) {
36734 words[b >>> 5] |= bytes[i] << (24 - b % 32)
36735 }
36736 return words
36737 }
36738
36739 function wordsToBytes (words) {
36740 var bytes = []
36741 for (var b = 0; b < words.length * 32; b += 8) {
36742 bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF)
36743 }
36744 return bytes
36745 }
36746
36747 function processBlock (H, M, offset) {
36748 // swap endian
36749 for (var i = 0; i < 16; i++) {
36750 var offset_i = offset + i
36751 var M_offset_i = M[offset_i]
36752
36753 // Swap
36754 M[offset_i] = (
36755 (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |
36756 (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)
36757 )
36758 }
36759
36760 // Working variables
36761 var al, bl, cl, dl, el
36762 var ar, br, cr, dr, er
36763
36764 ar = al = H[0]
36765 br = bl = H[1]
36766 cr = cl = H[2]
36767 dr = dl = H[3]
36768 er = el = H[4]
36769
36770 // computation
36771 var t
36772 for (i = 0; i < 80; i += 1) {
36773 t = (al + M[offset + zl[i]]) | 0
36774 if (i < 16) {
36775 t += f1(bl, cl, dl) + hl[0]
36776 } else if (i < 32) {
36777 t += f2(bl, cl, dl) + hl[1]
36778 } else if (i < 48) {
36779 t += f3(bl, cl, dl) + hl[2]
36780 } else if (i < 64) {
36781 t += f4(bl, cl, dl) + hl[3]
36782 } else {// if (i<80) {
36783 t += f5(bl, cl, dl) + hl[4]
36784 }
36785 t = t | 0
36786 t = rotl(t, sl[i])
36787 t = (t + el) | 0
36788 al = el
36789 el = dl
36790 dl = rotl(cl, 10)
36791 cl = bl
36792 bl = t
36793
36794 t = (ar + M[offset + zr[i]]) | 0
36795 if (i < 16) {
36796 t += f5(br, cr, dr) + hr[0]
36797 } else if (i < 32) {
36798 t += f4(br, cr, dr) + hr[1]
36799 } else if (i < 48) {
36800 t += f3(br, cr, dr) + hr[2]
36801 } else if (i < 64) {
36802 t += f2(br, cr, dr) + hr[3]
36803 } else {// if (i<80) {
36804 t += f1(br, cr, dr) + hr[4]
36805 }
36806
36807 t = t | 0
36808 t = rotl(t, sr[i])
36809 t = (t + er) | 0
36810 ar = er
36811 er = dr
36812 dr = rotl(cr, 10)
36813 cr = br
36814 br = t
36815 }
36816
36817 // intermediate hash value
36818 t = (H[1] + cl + dr) | 0
36819 H[1] = (H[2] + dl + er) | 0
36820 H[2] = (H[3] + el + ar) | 0
36821 H[3] = (H[4] + al + br) | 0
36822 H[4] = (H[0] + bl + cr) | 0
36823 H[0] = t
36824 }
36825
36826 function f1 (x, y, z) {
36827 return ((x) ^ (y) ^ (z))
36828 }
36829
36830 function f2 (x, y, z) {
36831 return (((x) & (y)) | ((~x) & (z)))
36832 }
36833
36834 function f3 (x, y, z) {
36835 return (((x) | (~(y))) ^ (z))
36836 }
36837
36838 function f4 (x, y, z) {
36839 return (((x) & (z)) | ((y) & (~(z))))
36840 }
36841
36842 function f5 (x, y, z) {
36843 return ((x) ^ ((y) | (~(z))))
36844 }
36845
36846 function rotl (x, n) {
36847 return (x << n) | (x >>> (32 - n))
36848 }
36849
36850 function ripemd160 (message) {
36851 var H = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]
36852
36853 if (typeof message === 'string') {
36854 message = new Buffer(message, 'utf8')
36855 }
36856
36857 var m = bytesToWords(message)
36858
36859 var nBitsLeft = message.length * 8
36860 var nBitsTotal = message.length * 8
36861
36862 // Add padding
36863 m[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32)
36864 m[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (
36865 (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |
36866 (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)
36867 )
36868
36869 for (var i = 0; i < m.length; i += 16) {
36870 processBlock(H, m, i)
36871 }
36872
36873 // swap endian
36874 for (i = 0; i < 5; i++) {
36875 // shortcut
36876 var H_i = H[i]
36877
36878 // Swap
36879 H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |
36880 (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00)
36881 }
36882
36883 var digestbytes = wordsToBytes(H)
36884 return new Buffer(digestbytes)
36885 }
36886
36887 module.exports = ripemd160
36888
36889 }).call(this,require("buffer").Buffer)
36890 },{"buffer":5}],72:[function(require,module,exports){
36891 (function (Buffer){
36892 const assert = require('assert')
36893 /**
36894 * RLP Encoding based on: https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP
36895 * This function takes in a data, convert it to buffer if not, and a length for recursion
36896 *
36897 * @param {Buffer,String,Integer,Array} data - will be converted to buffer
36898 * @returns {Buffer} - returns buffer of encoded data
36899 **/
36900 exports.encode = function (input) {
36901 if (input instanceof Array) {
36902 var output = []
36903 for (var i = 0; i < input.length; i++) {
36904 output.push(exports.encode(input[i]))
36905 }
36906 var buf = Buffer.concat(output)
36907 return Buffer.concat([encodeLength(buf.length, 192), buf])
36908 } else {
36909 input = toBuffer(input)
36910 if (input.length === 1 && input[0] < 128) {
36911 return input
36912 } else {
36913 return Buffer.concat([encodeLength(input.length, 128), input])
36914 }
36915 }
36916 }
36917
36918 function safeParseInt (v, base) {
36919 if (v.slice(0, 2) === '00') {
36920 throw (new Error('invalid RLP: extra zeros'))
36921 }
36922
36923 return parseInt(v, base)
36924 }
36925
36926 function encodeLength (len, offset) {
36927 if (len < 56) {
36928 return new Buffer([len + offset])
36929 } else {
36930 var hexLength = intToHex(len)
36931 var lLength = hexLength.length / 2
36932 var firstByte = intToHex(offset + 55 + lLength)
36933 return new Buffer(firstByte + hexLength, 'hex')
36934 }
36935 }
36936
36937 /**
36938 * RLP Decoding based on: {@link https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP|RLP}
36939 * @param {Buffer,String,Integer,Array} data - will be converted to buffer
36940 * @returns {Array} - returns decode Array of Buffers containg the original message
36941 **/
36942 exports.decode = function (input, stream) {
36943 if (!input || input.length === 0) {
36944 return new Buffer([])
36945 }
36946
36947 input = toBuffer(input)
36948 var decoded = _decode(input)
36949
36950 if (stream) {
36951 return decoded
36952 }
36953
36954 assert.equal(decoded.remainder.length, 0, 'invalid remainder')
36955 return decoded.data
36956 }
36957
36958 exports.getLength = function (input) {
36959 if (!input || input.length === 0) {
36960 return new Buffer([])
36961 }
36962
36963 input = toBuffer(input)
36964 var firstByte = input[0]
36965 if (firstByte <= 0x7f) {
36966 return input.length
36967 } else if (firstByte <= 0xb7) {
36968 return firstByte - 0x7f
36969 } else if (firstByte <= 0xbf) {
36970 return firstByte - 0xb6
36971 } else if (firstByte <= 0xf7) {
36972 // a list between 0-55 bytes long
36973 return firstByte - 0xbf
36974 } else {
36975 // a list over 55 bytes long
36976 var llength = firstByte - 0xf6
36977 var length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
36978 return llength + length
36979 }
36980 }
36981
36982 function _decode (input) {
36983 var length, llength, data, innerRemainder, d
36984 var decoded = []
36985 var firstByte = input[0]
36986
36987 if (firstByte <= 0x7f) {
36988 // a single byte whose value is in the [0x00, 0x7f] range, that byte is its own RLP encoding.
36989 return {
36990 data: input.slice(0, 1),
36991 remainder: input.slice(1)
36992 }
36993 } else if (firstByte <= 0xb7) {
36994 // string is 0-55 bytes long. A single byte with value 0x80 plus the length of the string followed by the string
36995 // The range of the first byte is [0x80, 0xb7]
36996 length = firstByte - 0x7f
36997
36998 // set 0x80 null to 0
36999 if (firstByte === 0x80) {
37000 data = new Buffer([])
37001 } else {
37002 data = input.slice(1, length)
37003 }
37004
37005 if (length === 2 && data[0] < 0x80) {
37006 throw new Error('invalid rlp encoding: byte must be less 0x80')
37007 }
37008
37009 return {
37010 data: data,
37011 remainder: input.slice(length)
37012 }
37013 } else if (firstByte <= 0xbf) {
37014 llength = firstByte - 0xb6
37015 length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
37016 data = input.slice(llength, length + llength)
37017 if (data.length < length) {
37018 throw (new Error('invalid RLP'))
37019 }
37020
37021 return {
37022 data: data,
37023 remainder: input.slice(length + llength)
37024 }
37025 } else if (firstByte <= 0xf7) {
37026 // a list between 0-55 bytes long
37027 length = firstByte - 0xbf
37028 innerRemainder = input.slice(1, length)
37029 while (innerRemainder.length) {
37030 d = _decode(innerRemainder)
37031 decoded.push(d.data)
37032 innerRemainder = d.remainder
37033 }
37034
37035 return {
37036 data: decoded,
37037 remainder: input.slice(length)
37038 }
37039 } else {
37040 // a list over 55 bytes long
37041 llength = firstByte - 0xf6
37042 length = safeParseInt(input.slice(1, llength).toString('hex'), 16)
37043 var totalLength = llength + length
37044 if (totalLength > input.length) {
37045 throw new Error('invalid rlp: total length is larger than the data')
37046 }
37047
37048 innerRemainder = input.slice(llength, totalLength)
37049 if (innerRemainder.length === 0) {
37050 throw new Error('invalid rlp, List has a invalid length')
37051 }
37052
37053 while (innerRemainder.length) {
37054 d = _decode(innerRemainder)
37055 decoded.push(d.data)
37056 innerRemainder = d.remainder
37057 }
37058 return {
37059 data: decoded,
37060 remainder: input.slice(totalLength)
37061 }
37062 }
37063 }
37064
37065 function isHexPrefixed (str) {
37066 return str.slice(0, 2) === '0x'
37067 }
37068
37069 // Removes 0x from a given String
37070 function stripHexPrefix (str) {
37071 if (typeof str !== 'string') {
37072 return str
37073 }
37074 return isHexPrefixed(str) ? str.slice(2) : str
37075 }
37076
37077 function intToHex (i) {
37078 var hex = i.toString(16)
37079 if (hex.length % 2) {
37080 hex = '0' + hex
37081 }
37082
37083 return hex
37084 }
37085
37086 function padToEven (a) {
37087 if (a.length % 2) a = '0' + a
37088 return a
37089 }
37090
37091 function intToBuffer (i) {
37092 var hex = intToHex(i)
37093 return new Buffer(hex, 'hex')
37094 }
37095
37096 function toBuffer (v) {
37097 if (!Buffer.isBuffer(v)) {
37098 if (typeof v === 'string') {
37099 if (isHexPrefixed(v)) {
37100 v = new Buffer(padToEven(stripHexPrefix(v)), 'hex')
37101 } else {
37102 v = new Buffer(v)
37103 }
37104 } else if (typeof v === 'number') {
37105 if (!v) {
37106 v = new Buffer([])
37107 } else {
37108 v = intToBuffer(v)
37109 }
37110 } else if (v === null || v === undefined) {
37111 v = new Buffer([])
37112 } else if (v.toArray) {
37113 // converts a BN to a Buffer
37114 v = new Buffer(v.toArray())
37115 } else {
37116 throw new Error('invalid type')
37117 }
37118 }
37119 return v
37120 }
37121
37122 }).call(this,require("buffer").Buffer)
37123 },{"assert":1,"buffer":5}],73:[function(require,module,exports){
37124 'use strict'
37125 module.exports = require('./lib')(require('./lib/elliptic'))
37126
37127 },{"./lib":77,"./lib/elliptic":76}],74:[function(require,module,exports){
37128 (function (Buffer){
37129 'use strict'
37130 var toString = Object.prototype.toString
37131
37132 // TypeError
37133 exports.isArray = function (value, message) {
37134 if (!Array.isArray(value)) throw TypeError(message)
37135 }
37136
37137 exports.isBoolean = function (value, message) {
37138 if (toString.call(value) !== '[object Boolean]') throw TypeError(message)
37139 }
37140
37141 exports.isBuffer = function (value, message) {
37142 if (!Buffer.isBuffer(value)) throw TypeError(message)
37143 }
37144
37145 exports.isFunction = function (value, message) {
37146 if (toString.call(value) !== '[object Function]') throw TypeError(message)
37147 }
37148
37149 exports.isNumber = function (value, message) {
37150 if (toString.call(value) !== '[object Number]') throw TypeError(message)
37151 }
37152
37153 exports.isObject = function (value, message) {
37154 if (toString.call(value) !== '[object Object]') throw TypeError(message)
37155 }
37156
37157 // RangeError
37158 exports.isBufferLength = function (buffer, length, message) {
37159 if (buffer.length !== length) throw RangeError(message)
37160 }
37161
37162 exports.isBufferLength2 = function (buffer, length1, length2, message) {
37163 if (buffer.length !== length1 && buffer.length !== length2) throw RangeError(message)
37164 }
37165
37166 exports.isLengthGTZero = function (value, message) {
37167 if (value.length === 0) throw RangeError(message)
37168 }
37169
37170 exports.isNumberInInterval = function (number, x, y, message) {
37171 if (number <= x || number >= y) throw RangeError(message)
37172 }
37173
37174 }).call(this,{"isBuffer":require("../../../../../.nvm/versions/node/v7.5.0/lib/node_modules/browserify/node_modules/is-buffer/index.js")})
37175 },{"../../../../../.nvm/versions/node/v7.5.0/lib/node_modules/browserify/node_modules/is-buffer/index.js":10}],75:[function(require,module,exports){
37176 (function (Buffer){
37177 'use strict'
37178 var bip66 = require('bip66')
37179
37180 var EC_PRIVKEY_EXPORT_DER_COMPRESSED = new Buffer([
37181 // begin
37182 0x30, 0x81, 0xd3, 0x02, 0x01, 0x01, 0x04, 0x20,
37183 // private key
37184 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37185 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37186 // middle
37187 0xa0, 0x81, 0x85, 0x30, 0x81, 0x82, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48,
37188 0xcE, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
37189 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
37190 0xff, 0xff, 0xfE, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04,
37191 0x21, 0x02, 0x79, 0xbE, 0x66, 0x7E, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xcE, 0x87,
37192 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xcE, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8,
37193 0x17, 0x98, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
37194 0xff, 0xff, 0xff, 0xff, 0xfE, 0xba, 0xaE, 0xdc, 0xE6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5E,
37195 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x24, 0x03, 0x22, 0x00,
37196 // public key
37197 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37198 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37199 0x00
37200 ])
37201
37202 var EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED = new Buffer([
37203 // begin
37204 0x30, 0x82, 0x01, 0x13, 0x02, 0x01, 0x01, 0x04, 0x20,
37205 // private key
37206 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37207 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37208 // middle
37209 0xa0, 0x81, 0xa5, 0x30, 0x81, 0xa2, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48,
37210 0xcE, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
37211 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
37212 0xff, 0xff, 0xfE, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04,
37213 0x41, 0x04, 0x79, 0xbE, 0x66, 0x7E, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xcE, 0x87,
37214 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xcE, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8,
37215 0x17, 0x98, 0x48, 0x3a, 0xda, 0x77, 0x26, 0xa3, 0xc4, 0x65, 0x5d, 0xa4, 0xfb, 0xfc, 0x0E, 0x11,
37216 0x08, 0xa8, 0xfd, 0x17, 0xb4, 0x48, 0xa6, 0x85, 0x54, 0x19, 0x9c, 0x47, 0xd0, 0x8f, 0xfb, 0x10,
37217 0xd4, 0xb8, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
37218 0xff, 0xff, 0xff, 0xff, 0xfE, 0xba, 0xaE, 0xdc, 0xE6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5E,
37219 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x44, 0x03, 0x42, 0x00,
37220 // public key
37221 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37222 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37223 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37224 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37225 0x00
37226 ])
37227
37228 var ZERO_BUFFER_32 = new Buffer([
37229 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37230 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
37231 ])
37232
37233 exports.privateKeyExport = function (privateKey, publicKey, compressed) {
37234 var result = new Buffer(compressed ? EC_PRIVKEY_EXPORT_DER_COMPRESSED : EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED)
37235 privateKey.copy(result, compressed ? 8 : 9)
37236 publicKey.copy(result, compressed ? 181 : 214)
37237 return result
37238 }
37239
37240 exports.privateKeyImport = function (privateKey) {
37241 var length = privateKey.length
37242
37243 // sequence header
37244 var index = 0
37245 if (length < index + 1 || privateKey[index] !== 0x30) return
37246 index += 1
37247
37248 // sequence length constructor
37249 if (length < index + 1 || !(privateKey[index] & 0x80)) return
37250
37251 var lenb = privateKey[index] & 0x7f
37252 index += 1
37253 if (lenb < 1 || lenb > 2) return
37254 if (length < index + lenb) return
37255
37256 // sequence length
37257 var len = privateKey[index + lenb - 1] | (lenb > 1 ? privateKey[index + lenb - 2] << 8 : 0)
37258 index += lenb
37259 if (length < index + len) return
37260
37261 // sequence element 0: version number (=1)
37262 if (length < index + 3 ||
37263 privateKey[index] !== 0x02 ||
37264 privateKey[index + 1] !== 0x01 ||
37265 privateKey[index + 2] !== 0x01) {
37266 return
37267 }
37268 index += 3
37269
37270 // sequence element 1: octet string, up to 32 bytes
37271 if (length < index + 2 ||
37272 privateKey[index] !== 0x04 ||
37273 privateKey[index + 1] > 0x20 ||
37274 length < index + 2 + privateKey[index + 1]) {
37275 return
37276 }
37277
37278 return privateKey.slice(index + 2, index + 2 + privateKey[index + 1])
37279 }
37280
37281 exports.signatureExport = function (sigObj) {
37282 var r = Buffer.concat([new Buffer([0]), sigObj.r])
37283 for (var lenR = 33, posR = 0; lenR > 1 && r[posR] === 0x00 && !(r[posR + 1] & 0x80); --lenR, ++posR);
37284
37285 var s = Buffer.concat([new Buffer([0]), sigObj.s])
37286 for (var lenS = 33, posS = 0; lenS > 1 && s[posS] === 0x00 && !(s[posS + 1] & 0x80); --lenS, ++posS);
37287
37288 return bip66.encode(r.slice(posR), s.slice(posS))
37289 }
37290
37291 exports.signatureImport = function (sig) {
37292 var r = new Buffer(ZERO_BUFFER_32)
37293 var s = new Buffer(ZERO_BUFFER_32)
37294
37295 try {
37296 var sigObj = bip66.decode(sig)
37297 if (sigObj.r.length === 33 && sigObj.r[0] === 0x00) sigObj.r = sigObj.r.slice(1)
37298 if (sigObj.r.length > 32) throw new Error('R length is too long')
37299 if (sigObj.s.length === 33 && sigObj.s[0] === 0x00) sigObj.s = sigObj.s.slice(1)
37300 if (sigObj.s.length > 32) throw new Error('S length is too long')
37301 } catch (err) {
37302 return
37303 }
37304
37305 sigObj.r.copy(r, 32 - sigObj.r.length)
37306 sigObj.s.copy(s, 32 - sigObj.s.length)
37307
37308 return { r: r, s: s }
37309 }
37310
37311 exports.signatureImportLax = function (sig) {
37312 var r = new Buffer(ZERO_BUFFER_32)
37313 var s = new Buffer(ZERO_BUFFER_32)
37314
37315 var length = sig.length
37316 var index = 0
37317
37318 // sequence tag byte
37319 if (sig[index++] !== 0x30) return
37320
37321 // sequence length byte
37322 var lenbyte = sig[index++]
37323 if (lenbyte & 0x80) {
37324 index += lenbyte - 0x80
37325 if (index > length) return
37326 }
37327
37328 // sequence tag byte for r
37329 if (sig[index++] !== 0x02) return
37330
37331 // length for r
37332 var rlen = sig[index++]
37333 if (rlen & 0x80) {
37334 lenbyte = rlen - 0x80
37335 if (index + lenbyte > length) return
37336 for (; lenbyte > 0 && sig[index] === 0x00; index += 1, lenbyte -= 1);
37337 for (rlen = 0; lenbyte > 0; index += 1, lenbyte -= 1) rlen = (rlen << 8) + sig[index]
37338 }
37339 if (rlen > length - index) return
37340 var rindex = index
37341 index += rlen
37342
37343 // sequence tag byte for s
37344 if (sig[index++] !== 0x02) return
37345
37346 // length for s
37347 var slen = sig[index++]
37348 if (slen & 0x80) {
37349 lenbyte = slen - 0x80
37350 if (index + lenbyte > length) return
37351 for (; lenbyte > 0 && sig[index] === 0x00; index += 1, lenbyte -= 1);
37352 for (slen = 0; lenbyte > 0; index += 1, lenbyte -= 1) slen = (slen << 8) + sig[index]
37353 }
37354 if (slen > length - index) return
37355 var sindex = index
37356 index += slen
37357
37358 // ignore leading zeros in r
37359 for (; rlen > 0 && sig[rindex] === 0x00; rlen -= 1, rindex += 1);
37360 // copy r value
37361 if (rlen > 32) return
37362 var rvalue = sig.slice(rindex, rindex + rlen)
37363 rvalue.copy(r, 32 - rvalue.length)
37364
37365 // ignore leading zeros in s
37366 for (; slen > 0 && sig[sindex] === 0x00; slen -= 1, sindex += 1);
37367 // copy s value
37368 if (slen > 32) return
37369 var svalue = sig.slice(sindex, sindex + slen)
37370 svalue.copy(s, 32 - svalue.length)
37371
37372 return { r: r, s: s }
37373 }
37374
37375 }).call(this,require("buffer").Buffer)
37376 },{"bip66":32,"buffer":5}],76:[function(require,module,exports){
37377 (function (Buffer){
37378 'use strict'
37379 var createHash = require('create-hash')
37380 var BN = require('bn.js')
37381 var EC = require('elliptic').ec
37382
37383 var messages = require('../messages.json')
37384
37385 var ec = new EC('secp256k1')
37386 var ecparams = ec.curve
37387
37388 function loadCompressedPublicKey (first, xBuffer) {
37389 var x = new BN(xBuffer)
37390
37391 // overflow
37392 if (x.cmp(ecparams.p) >= 0) return null
37393 x = x.toRed(ecparams.red)
37394
37395 // compute corresponding Y
37396 var y = x.redSqr().redIMul(x).redIAdd(ecparams.b).redSqrt()
37397 if ((first === 0x03) !== y.isOdd()) y = y.redNeg()
37398
37399 return ec.keyPair({ pub: { x: x, y: y } })
37400 }
37401
37402 function loadUncompressedPublicKey (first, xBuffer, yBuffer) {
37403 var x = new BN(xBuffer)
37404 var y = new BN(yBuffer)
37405
37406 // overflow
37407 if (x.cmp(ecparams.p) >= 0 || y.cmp(ecparams.p) >= 0) return null
37408
37409 x = x.toRed(ecparams.red)
37410 y = y.toRed(ecparams.red)
37411
37412 // is odd flag
37413 if ((first === 0x06 || first === 0x07) && y.isOdd() !== (first === 0x07)) return null
37414
37415 // x*x*x + b = y*y
37416 var x3 = x.redSqr().redIMul(x)
37417 if (!y.redSqr().redISub(x3.redIAdd(ecparams.b)).isZero()) return null
37418
37419 return ec.keyPair({ pub: { x: x, y: y } })
37420 }
37421
37422 function loadPublicKey (publicKey) {
37423 var first = publicKey[0]
37424 switch (first) {
37425 case 0x02:
37426 case 0x03:
37427 if (publicKey.length !== 33) return null
37428 return loadCompressedPublicKey(first, publicKey.slice(1, 33))
37429 case 0x04:
37430 case 0x06:
37431 case 0x07:
37432 if (publicKey.length !== 65) return null
37433 return loadUncompressedPublicKey(first, publicKey.slice(1, 33), publicKey.slice(33, 65))
37434 default:
37435 return null
37436 }
37437 }
37438
37439 exports.privateKeyVerify = function (privateKey) {
37440 var bn = new BN(privateKey)
37441 return bn.cmp(ecparams.n) < 0 && !bn.isZero()
37442 }
37443
37444 exports.privateKeyExport = function (privateKey, compressed) {
37445 var d = new BN(privateKey)
37446 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.EC_PRIVATE_KEY_EXPORT_DER_FAIL)
37447
37448 return new Buffer(ec.keyFromPrivate(privateKey).getPublic(compressed, true))
37449 }
37450
37451 exports.privateKeyTweakAdd = function (privateKey, tweak) {
37452 var bn = new BN(tweak)
37453 if (bn.cmp(ecparams.n) >= 0) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)
37454
37455 bn.iadd(new BN(privateKey))
37456 if (bn.cmp(ecparams.n) >= 0) bn.isub(ecparams.n)
37457 if (bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)
37458
37459 return bn.toArrayLike(Buffer, 'be', 32)
37460 }
37461
37462 exports.privateKeyTweakMul = function (privateKey, tweak) {
37463 var bn = new BN(tweak)
37464 if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_MUL_FAIL)
37465
37466 bn.imul(new BN(privateKey))
37467 if (bn.cmp(ecparams.n)) bn = bn.umod(ecparams.n)
37468
37469 return bn.toArrayLike(Buffer, 'be', 32)
37470 }
37471
37472 exports.publicKeyCreate = function (privateKey, compressed) {
37473 var d = new BN(privateKey)
37474 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.EC_PUBLIC_KEY_CREATE_FAIL)
37475
37476 return new Buffer(ec.keyFromPrivate(privateKey).getPublic(compressed, true))
37477 }
37478
37479 exports.publicKeyConvert = function (publicKey, compressed) {
37480 var pair = loadPublicKey(publicKey)
37481 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
37482
37483 return new Buffer(pair.getPublic(compressed, true))
37484 }
37485
37486 exports.publicKeyVerify = function (publicKey) {
37487 return loadPublicKey(publicKey) !== null
37488 }
37489
37490 exports.publicKeyTweakAdd = function (publicKey, tweak, compressed) {
37491 var pair = loadPublicKey(publicKey)
37492 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
37493
37494 tweak = new BN(tweak)
37495 if (tweak.cmp(ecparams.n) >= 0) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_ADD_FAIL)
37496
37497 return new Buffer(ecparams.g.mul(tweak).add(pair.pub).encode(true, compressed))
37498 }
37499
37500 exports.publicKeyTweakMul = function (publicKey, tweak, compressed) {
37501 var pair = loadPublicKey(publicKey)
37502 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
37503
37504 tweak = new BN(tweak)
37505 if (tweak.cmp(ecparams.n) >= 0 || tweak.isZero()) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_MUL_FAIL)
37506
37507 return new Buffer(pair.pub.mul(tweak).encode(true, compressed))
37508 }
37509
37510 exports.publicKeyCombine = function (publicKeys, compressed) {
37511 var pairs = new Array(publicKeys.length)
37512 for (var i = 0; i < publicKeys.length; ++i) {
37513 pairs[i] = loadPublicKey(publicKeys[i])
37514 if (pairs[i] === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
37515 }
37516
37517 var point = pairs[0].pub
37518 for (var j = 1; j < pairs.length; ++j) point = point.add(pairs[j].pub)
37519 if (point.isInfinity()) throw new Error(messages.EC_PUBLIC_KEY_COMBINE_FAIL)
37520
37521 return new Buffer(point.encode(true, compressed))
37522 }
37523
37524 exports.signatureNormalize = function (signature) {
37525 var r = new BN(signature.slice(0, 32))
37526 var s = new BN(signature.slice(32, 64))
37527 if (r.cmp(ecparams.n) >= 0 || s.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
37528
37529 var result = new Buffer(signature)
37530 if (s.cmp(ec.nh) === 1) ecparams.n.sub(s).toArrayLike(Buffer, 'be', 32).copy(result, 32)
37531
37532 return result
37533 }
37534
37535 exports.signatureExport = function (signature) {
37536 var r = signature.slice(0, 32)
37537 var s = signature.slice(32, 64)
37538 if (new BN(r).cmp(ecparams.n) >= 0 || new BN(s).cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
37539
37540 return { r: r, s: s }
37541 }
37542
37543 exports.signatureImport = function (sigObj) {
37544 var r = new BN(sigObj.r)
37545 if (r.cmp(ecparams.n) >= 0) r = new BN(0)
37546
37547 var s = new BN(sigObj.s)
37548 if (s.cmp(ecparams.n) >= 0) s = new BN(0)
37549
37550 return Buffer.concat([
37551 r.toArrayLike(Buffer, 'be', 32),
37552 s.toArrayLike(Buffer, 'be', 32)
37553 ])
37554 }
37555
37556 exports.sign = function (message, privateKey, noncefn, data) {
37557 if (typeof noncefn === 'function') {
37558 var getNonce = noncefn
37559 noncefn = function (counter) {
37560 var nonce = getNonce(message, privateKey, null, data, counter)
37561 if (!Buffer.isBuffer(nonce) || nonce.length !== 32) throw new Error(messages.ECDSA_SIGN_FAIL)
37562
37563 return new BN(nonce)
37564 }
37565 }
37566
37567 var d = new BN(privateKey)
37568 if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.ECDSA_SIGN_FAIL)
37569
37570 var result = ec.sign(message, privateKey, { canonical: true, k: noncefn, pers: data })
37571 return {
37572 signature: Buffer.concat([
37573 result.r.toArrayLike(Buffer, 'be', 32),
37574 result.s.toArrayLike(Buffer, 'be', 32)
37575 ]),
37576 recovery: result.recoveryParam
37577 }
37578 }
37579
37580 exports.verify = function (message, signature, publicKey) {
37581 var sigObj = {r: signature.slice(0, 32), s: signature.slice(32, 64)}
37582
37583 var sigr = new BN(sigObj.r)
37584 var sigs = new BN(sigObj.s)
37585 if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
37586 if (sigs.cmp(ec.nh) === 1 || sigr.isZero() || sigs.isZero()) return false
37587
37588 var pair = loadPublicKey(publicKey)
37589 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
37590
37591 return ec.verify(message, sigObj, {x: pair.pub.x, y: pair.pub.y})
37592 }
37593
37594 exports.recover = function (message, signature, recovery, compressed) {
37595 var sigObj = {r: signature.slice(0, 32), s: signature.slice(32, 64)}
37596
37597 var sigr = new BN(sigObj.r)
37598 var sigs = new BN(sigObj.s)
37599 if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)
37600
37601 try {
37602 if (sigr.isZero() || sigs.isZero()) throw new Error()
37603
37604 var point = ec.recoverPubKey(message, sigObj, recovery)
37605 return new Buffer(point.encode(true, compressed))
37606 } catch (err) {
37607 throw new Error(messages.ECDSA_RECOVER_FAIL)
37608 }
37609 }
37610
37611 exports.ecdh = function (publicKey, privateKey) {
37612 var shared = exports.ecdhUnsafe(publicKey, privateKey, true)
37613 return createHash('sha256').update(shared).digest()
37614 }
37615
37616 exports.ecdhUnsafe = function (publicKey, privateKey, compressed) {
37617 var pair = loadPublicKey(publicKey)
37618 if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)
37619
37620 var scalar = new BN(privateKey)
37621 if (scalar.cmp(ecparams.n) >= 0 || scalar.isZero()) throw new Error(messages.ECDH_FAIL)
37622
37623 return new Buffer(pair.pub.mul(scalar).encode(true, compressed))
37624 }
37625
37626 }).call(this,require("buffer").Buffer)
37627 },{"../messages.json":78,"bn.js":33,"buffer":5,"create-hash":36,"elliptic":39}],77:[function(require,module,exports){
37628 'use strict'
37629 var assert = require('./assert')
37630 var der = require('./der')
37631 var messages = require('./messages.json')
37632
37633 function initCompressedValue (value, defaultValue) {
37634 if (value === undefined) return defaultValue
37635
37636 assert.isBoolean(value, messages.COMPRESSED_TYPE_INVALID)
37637 return value
37638 }
37639
37640 module.exports = function (secp256k1) {
37641 return {
37642 privateKeyVerify: function (privateKey) {
37643 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37644 return privateKey.length === 32 && secp256k1.privateKeyVerify(privateKey)
37645 },
37646
37647 privateKeyExport: function (privateKey, compressed) {
37648 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37649 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
37650
37651 compressed = initCompressedValue(compressed, true)
37652 var publicKey = secp256k1.privateKeyExport(privateKey, compressed)
37653
37654 return der.privateKeyExport(privateKey, publicKey, compressed)
37655 },
37656
37657 privateKeyImport: function (privateKey) {
37658 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37659
37660 privateKey = der.privateKeyImport(privateKey)
37661 if (privateKey && privateKey.length === 32 && secp256k1.privateKeyVerify(privateKey)) return privateKey
37662
37663 throw new Error(messages.EC_PRIVATE_KEY_IMPORT_DER_FAIL)
37664 },
37665
37666 privateKeyTweakAdd: function (privateKey, tweak) {
37667 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37668 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
37669
37670 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
37671 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
37672
37673 return secp256k1.privateKeyTweakAdd(privateKey, tweak)
37674 },
37675
37676 privateKeyTweakMul: function (privateKey, tweak) {
37677 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37678 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
37679
37680 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
37681 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
37682
37683 return secp256k1.privateKeyTweakMul(privateKey, tweak)
37684 },
37685
37686 publicKeyCreate: function (privateKey, compressed) {
37687 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37688 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
37689
37690 compressed = initCompressedValue(compressed, true)
37691
37692 return secp256k1.publicKeyCreate(privateKey, compressed)
37693 },
37694
37695 publicKeyConvert: function (publicKey, compressed) {
37696 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37697 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
37698
37699 compressed = initCompressedValue(compressed, true)
37700
37701 return secp256k1.publicKeyConvert(publicKey, compressed)
37702 },
37703
37704 publicKeyVerify: function (publicKey) {
37705 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37706 return secp256k1.publicKeyVerify(publicKey)
37707 },
37708
37709 publicKeyTweakAdd: function (publicKey, tweak, compressed) {
37710 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37711 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
37712
37713 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
37714 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
37715
37716 compressed = initCompressedValue(compressed, true)
37717
37718 return secp256k1.publicKeyTweakAdd(publicKey, tweak, compressed)
37719 },
37720
37721 publicKeyTweakMul: function (publicKey, tweak, compressed) {
37722 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37723 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
37724
37725 assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)
37726 assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)
37727
37728 compressed = initCompressedValue(compressed, true)
37729
37730 return secp256k1.publicKeyTweakMul(publicKey, tweak, compressed)
37731 },
37732
37733 publicKeyCombine: function (publicKeys, compressed) {
37734 assert.isArray(publicKeys, messages.EC_PUBLIC_KEYS_TYPE_INVALID)
37735 assert.isLengthGTZero(publicKeys, messages.EC_PUBLIC_KEYS_LENGTH_INVALID)
37736 for (var i = 0; i < publicKeys.length; ++i) {
37737 assert.isBuffer(publicKeys[i], messages.EC_PUBLIC_KEY_TYPE_INVALID)
37738 assert.isBufferLength2(publicKeys[i], 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
37739 }
37740
37741 compressed = initCompressedValue(compressed, true)
37742
37743 return secp256k1.publicKeyCombine(publicKeys, compressed)
37744 },
37745
37746 signatureNormalize: function (signature) {
37747 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
37748 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
37749
37750 return secp256k1.signatureNormalize(signature)
37751 },
37752
37753 signatureExport: function (signature) {
37754 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
37755 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
37756
37757 var sigObj = secp256k1.signatureExport(signature)
37758 return der.signatureExport(sigObj)
37759 },
37760
37761 signatureImport: function (sig) {
37762 assert.isBuffer(sig, messages.ECDSA_SIGNATURE_TYPE_INVALID)
37763 assert.isLengthGTZero(sig, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
37764
37765 var sigObj = der.signatureImport(sig)
37766 if (sigObj) return secp256k1.signatureImport(sigObj)
37767
37768 throw new Error(messages.ECDSA_SIGNATURE_PARSE_DER_FAIL)
37769 },
37770
37771 signatureImportLax: function (sig) {
37772 assert.isBuffer(sig, messages.ECDSA_SIGNATURE_TYPE_INVALID)
37773 assert.isLengthGTZero(sig, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
37774
37775 var sigObj = der.signatureImportLax(sig)
37776 if (sigObj) return secp256k1.signatureImport(sigObj)
37777
37778 throw new Error(messages.ECDSA_SIGNATURE_PARSE_DER_FAIL)
37779 },
37780
37781 sign: function (message, privateKey, options) {
37782 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
37783 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
37784
37785 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37786 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
37787
37788 var data = null
37789 var noncefn = null
37790 if (options !== undefined) {
37791 assert.isObject(options, messages.OPTIONS_TYPE_INVALID)
37792
37793 if (options.data !== undefined) {
37794 assert.isBuffer(options.data, messages.OPTIONS_DATA_TYPE_INVALID)
37795 assert.isBufferLength(options.data, 32, messages.OPTIONS_DATA_LENGTH_INVALID)
37796 data = options.data
37797 }
37798
37799 if (options.noncefn !== undefined) {
37800 assert.isFunction(options.noncefn, messages.OPTIONS_NONCEFN_TYPE_INVALID)
37801 noncefn = options.noncefn
37802 }
37803 }
37804
37805 return secp256k1.sign(message, privateKey, noncefn, data)
37806 },
37807
37808 verify: function (message, signature, publicKey) {
37809 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
37810 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
37811
37812 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
37813 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
37814
37815 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37816 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
37817
37818 return secp256k1.verify(message, signature, publicKey)
37819 },
37820
37821 recover: function (message, signature, recovery, compressed) {
37822 assert.isBuffer(message, messages.MSG32_TYPE_INVALID)
37823 assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)
37824
37825 assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)
37826 assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)
37827
37828 assert.isNumber(recovery, messages.RECOVERY_ID_TYPE_INVALID)
37829 assert.isNumberInInterval(recovery, -1, 4, messages.RECOVERY_ID_VALUE_INVALID)
37830
37831 compressed = initCompressedValue(compressed, true)
37832
37833 return secp256k1.recover(message, signature, recovery, compressed)
37834 },
37835
37836 ecdh: function (publicKey, privateKey) {
37837 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37838 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
37839
37840 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37841 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
37842
37843 return secp256k1.ecdh(publicKey, privateKey)
37844 },
37845
37846 ecdhUnsafe: function (publicKey, privateKey, compressed) {
37847 assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)
37848 assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)
37849
37850 assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)
37851 assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)
37852
37853 compressed = initCompressedValue(compressed, true)
37854
37855 return secp256k1.ecdhUnsafe(publicKey, privateKey, compressed)
37856 }
37857 }
37858 }
37859
37860 },{"./assert":74,"./der":75,"./messages.json":78}],78:[function(require,module,exports){
37861 module.exports={
37862 "COMPRESSED_TYPE_INVALID": "compressed should be a boolean",
37863 "EC_PRIVATE_KEY_TYPE_INVALID": "private key should be a Buffer",
37864 "EC_PRIVATE_KEY_LENGTH_INVALID": "private key length is invalid",
37865 "EC_PRIVATE_KEY_TWEAK_ADD_FAIL": "tweak out of range or resulting private key is invalid",
37866 "EC_PRIVATE_KEY_TWEAK_MUL_FAIL": "tweak out of range",
37867 "EC_PRIVATE_KEY_EXPORT_DER_FAIL": "couldn't export to DER format",
37868 "EC_PRIVATE_KEY_IMPORT_DER_FAIL": "couldn't import from DER format",
37869 "EC_PUBLIC_KEYS_TYPE_INVALID": "public keys should be an Array",
37870 "EC_PUBLIC_KEYS_LENGTH_INVALID": "public keys Array should have at least 1 element",
37871 "EC_PUBLIC_KEY_TYPE_INVALID": "public key should be a Buffer",
37872 "EC_PUBLIC_KEY_LENGTH_INVALID": "public key length is invalid",
37873 "EC_PUBLIC_KEY_PARSE_FAIL": "the public key could not be parsed or is invalid",
37874 "EC_PUBLIC_KEY_CREATE_FAIL": "private was invalid, try again",
37875 "EC_PUBLIC_KEY_TWEAK_ADD_FAIL": "tweak out of range or resulting public key is invalid",
37876 "EC_PUBLIC_KEY_TWEAK_MUL_FAIL": "tweak out of range",
37877 "EC_PUBLIC_KEY_COMBINE_FAIL": "the sum of the public keys is not valid",
37878 "ECDH_FAIL": "scalar was invalid (zero or overflow)",
37879 "ECDSA_SIGNATURE_TYPE_INVALID": "signature should be a Buffer",
37880 "ECDSA_SIGNATURE_LENGTH_INVALID": "signature length is invalid",
37881 "ECDSA_SIGNATURE_PARSE_FAIL": "couldn't parse signature",
37882 "ECDSA_SIGNATURE_PARSE_DER_FAIL": "couldn't parse DER signature",
37883 "ECDSA_SIGNATURE_SERIALIZE_DER_FAIL": "couldn't serialize signature to DER format",
37884 "ECDSA_SIGN_FAIL": "nonce generation function failed or private key is invalid",
37885 "ECDSA_RECOVER_FAIL": "couldn't recover public key from signature",
37886 "MSG32_TYPE_INVALID": "message should be a Buffer",
37887 "MSG32_LENGTH_INVALID": "message length is invalid",
37888 "OPTIONS_TYPE_INVALID": "options should be an Object",
37889 "OPTIONS_DATA_TYPE_INVALID": "options.data should be a Buffer",
37890 "OPTIONS_DATA_LENGTH_INVALID": "options.data length is invalid",
37891 "OPTIONS_NONCEFN_TYPE_INVALID": "options.noncefn should be a Function",
37892 "RECOVERY_ID_TYPE_INVALID": "recovery should be a Number",
37893 "RECOVERY_ID_VALUE_INVALID": "recovery should have value between -1 and 4",
37894 "TWEAK_TYPE_INVALID": "tweak should be a Buffer",
37895 "TWEAK_LENGTH_INVALID": "tweak length is invalid"
37896 }
37897
37898 },{}],79:[function(require,module,exports){
37899 (function (Buffer){
37900 // prototype class for hash functions
37901 function Hash (blockSize, finalSize) {
37902 this._block = new Buffer(blockSize)
37903 this._finalSize = finalSize
37904 this._blockSize = blockSize
37905 this._len = 0
37906 this._s = 0
37907 }
37908
37909 Hash.prototype.update = function (data, enc) {
37910 if (typeof data === 'string') {
37911 enc = enc || 'utf8'
37912 data = new Buffer(data, enc)
37913 }
37914
37915 var l = this._len += data.length
37916 var s = this._s || 0
37917 var f = 0
37918 var buffer = this._block
37919
37920 while (s < l) {
37921 var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize))
37922 var ch = (t - f)
37923
37924 for (var i = 0; i < ch; i++) {
37925 buffer[(s % this._blockSize) + i] = data[i + f]
37926 }
37927
37928 s += ch
37929 f += ch
37930
37931 if ((s % this._blockSize) === 0) {
37932 this._update(buffer)
37933 }
37934 }
37935 this._s = s
37936
37937 return this
37938 }
37939
37940 Hash.prototype.digest = function (enc) {
37941 // Suppose the length of the message M, in bits, is l
37942 var l = this._len * 8
37943
37944 // Append the bit 1 to the end of the message
37945 this._block[this._len % this._blockSize] = 0x80
37946
37947 // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize
37948 this._block.fill(0, this._len % this._blockSize + 1)
37949
37950 if (l % (this._blockSize * 8) >= this._finalSize * 8) {
37951 this._update(this._block)
37952 this._block.fill(0)
37953 }
37954
37955 // to this append the block which is equal to the number l written in binary
37956 // TODO: handle case where l is > Math.pow(2, 29)
37957 this._block.writeInt32BE(l, this._blockSize - 4)
37958
37959 var hash = this._update(this._block) || this._hash()
37960
37961 return enc ? hash.toString(enc) : hash
37962 }
37963
37964 Hash.prototype._update = function () {
37965 throw new Error('_update must be implemented by subclass')
37966 }
37967
37968 module.exports = Hash
37969
37970 }).call(this,require("buffer").Buffer)
37971 },{"buffer":5}],80:[function(require,module,exports){
37972 var exports = module.exports = function SHA (algorithm) {
37973 algorithm = algorithm.toLowerCase()
37974
37975 var Algorithm = exports[algorithm]
37976 if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')
37977
37978 return new Algorithm()
37979 }
37980
37981 exports.sha = require('./sha')
37982 exports.sha1 = require('./sha1')
37983 exports.sha224 = require('./sha224')
37984 exports.sha256 = require('./sha256')
37985 exports.sha384 = require('./sha384')
37986 exports.sha512 = require('./sha512')
37987
37988 },{"./sha":81,"./sha1":82,"./sha224":83,"./sha256":84,"./sha384":85,"./sha512":86}],81:[function(require,module,exports){
37989 (function (Buffer){
37990 /*
37991 * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined
37992 * in FIPS PUB 180-1
37993 * This source code is derived from sha1.js of the same repository.
37994 * The difference between SHA-0 and SHA-1 is just a bitwise rotate left
37995 * operation was added.
37996 */
37997
37998 var inherits = require('inherits')
37999 var Hash = require('./hash')
38000
38001 var K = [
38002 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
38003 ]
38004
38005 var W = new Array(80)
38006
38007 function Sha () {
38008 this.init()
38009 this._w = W
38010
38011 Hash.call(this, 64, 56)
38012 }
38013
38014 inherits(Sha, Hash)
38015
38016 Sha.prototype.init = function () {
38017 this._a = 0x67452301
38018 this._b = 0xefcdab89
38019 this._c = 0x98badcfe
38020 this._d = 0x10325476
38021 this._e = 0xc3d2e1f0
38022
38023 return this
38024 }
38025
38026 function rotl5 (num) {
38027 return (num << 5) | (num >>> 27)
38028 }
38029
38030 function rotl30 (num) {
38031 return (num << 30) | (num >>> 2)
38032 }
38033
38034 function ft (s, b, c, d) {
38035 if (s === 0) return (b & c) | ((~b) & d)
38036 if (s === 2) return (b & c) | (b & d) | (c & d)
38037 return b ^ c ^ d
38038 }
38039
38040 Sha.prototype._update = function (M) {
38041 var W = this._w
38042
38043 var a = this._a | 0
38044 var b = this._b | 0
38045 var c = this._c | 0
38046 var d = this._d | 0
38047 var e = this._e | 0
38048
38049 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
38050 for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]
38051
38052 for (var j = 0; j < 80; ++j) {
38053 var s = ~~(j / 20)
38054 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
38055
38056 e = d
38057 d = c
38058 c = rotl30(b)
38059 b = a
38060 a = t
38061 }
38062
38063 this._a = (a + this._a) | 0
38064 this._b = (b + this._b) | 0
38065 this._c = (c + this._c) | 0
38066 this._d = (d + this._d) | 0
38067 this._e = (e + this._e) | 0
38068 }
38069
38070 Sha.prototype._hash = function () {
38071 var H = new Buffer(20)
38072
38073 H.writeInt32BE(this._a | 0, 0)
38074 H.writeInt32BE(this._b | 0, 4)
38075 H.writeInt32BE(this._c | 0, 8)
38076 H.writeInt32BE(this._d | 0, 12)
38077 H.writeInt32BE(this._e | 0, 16)
38078
38079 return H
38080 }
38081
38082 module.exports = Sha
38083
38084 }).call(this,require("buffer").Buffer)
38085 },{"./hash":79,"buffer":5,"inherits":63}],82:[function(require,module,exports){
38086 (function (Buffer){
38087 /*
38088 * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
38089 * in FIPS PUB 180-1
38090 * Version 2.1a Copyright Paul Johnston 2000 - 2002.
38091 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
38092 * Distributed under the BSD License
38093 * See http://pajhome.org.uk/crypt/md5 for details.
38094 */
38095
38096 var inherits = require('inherits')
38097 var Hash = require('./hash')
38098
38099 var K = [
38100 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
38101 ]
38102
38103 var W = new Array(80)
38104
38105 function Sha1 () {
38106 this.init()
38107 this._w = W
38108
38109 Hash.call(this, 64, 56)
38110 }
38111
38112 inherits(Sha1, Hash)
38113
38114 Sha1.prototype.init = function () {
38115 this._a = 0x67452301
38116 this._b = 0xefcdab89
38117 this._c = 0x98badcfe
38118 this._d = 0x10325476
38119 this._e = 0xc3d2e1f0
38120
38121 return this
38122 }
38123
38124 function rotl1 (num) {
38125 return (num << 1) | (num >>> 31)
38126 }
38127
38128 function rotl5 (num) {
38129 return (num << 5) | (num >>> 27)
38130 }
38131
38132 function rotl30 (num) {
38133 return (num << 30) | (num >>> 2)
38134 }
38135
38136 function ft (s, b, c, d) {
38137 if (s === 0) return (b & c) | ((~b) & d)
38138 if (s === 2) return (b & c) | (b & d) | (c & d)
38139 return b ^ c ^ d
38140 }
38141
38142 Sha1.prototype._update = function (M) {
38143 var W = this._w
38144
38145 var a = this._a | 0
38146 var b = this._b | 0
38147 var c = this._c | 0
38148 var d = this._d | 0
38149 var e = this._e | 0
38150
38151 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
38152 for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])
38153
38154 for (var j = 0; j < 80; ++j) {
38155 var s = ~~(j / 20)
38156 var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
38157
38158 e = d
38159 d = c
38160 c = rotl30(b)
38161 b = a
38162 a = t
38163 }
38164
38165 this._a = (a + this._a) | 0
38166 this._b = (b + this._b) | 0
38167 this._c = (c + this._c) | 0
38168 this._d = (d + this._d) | 0
38169 this._e = (e + this._e) | 0
38170 }
38171
38172 Sha1.prototype._hash = function () {
38173 var H = new Buffer(20)
38174
38175 H.writeInt32BE(this._a | 0, 0)
38176 H.writeInt32BE(this._b | 0, 4)
38177 H.writeInt32BE(this._c | 0, 8)
38178 H.writeInt32BE(this._d | 0, 12)
38179 H.writeInt32BE(this._e | 0, 16)
38180
38181 return H
38182 }
38183
38184 module.exports = Sha1
38185
38186 }).call(this,require("buffer").Buffer)
38187 },{"./hash":79,"buffer":5,"inherits":63}],83:[function(require,module,exports){
38188 (function (Buffer){
38189 /**
38190 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
38191 * in FIPS 180-2
38192 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
38193 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
38194 *
38195 */
38196
38197 var inherits = require('inherits')
38198 var Sha256 = require('./sha256')
38199 var Hash = require('./hash')
38200
38201 var W = new Array(64)
38202
38203 function Sha224 () {
38204 this.init()
38205
38206 this._w = W // new Array(64)
38207
38208 Hash.call(this, 64, 56)
38209 }
38210
38211 inherits(Sha224, Sha256)
38212
38213 Sha224.prototype.init = function () {
38214 this._a = 0xc1059ed8
38215 this._b = 0x367cd507
38216 this._c = 0x3070dd17
38217 this._d = 0xf70e5939
38218 this._e = 0xffc00b31
38219 this._f = 0x68581511
38220 this._g = 0x64f98fa7
38221 this._h = 0xbefa4fa4
38222
38223 return this
38224 }
38225
38226 Sha224.prototype._hash = function () {
38227 var H = new Buffer(28)
38228
38229 H.writeInt32BE(this._a, 0)
38230 H.writeInt32BE(this._b, 4)
38231 H.writeInt32BE(this._c, 8)
38232 H.writeInt32BE(this._d, 12)
38233 H.writeInt32BE(this._e, 16)
38234 H.writeInt32BE(this._f, 20)
38235 H.writeInt32BE(this._g, 24)
38236
38237 return H
38238 }
38239
38240 module.exports = Sha224
38241
38242 }).call(this,require("buffer").Buffer)
38243 },{"./hash":79,"./sha256":84,"buffer":5,"inherits":63}],84:[function(require,module,exports){
38244 (function (Buffer){
38245 /**
38246 * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
38247 * in FIPS 180-2
38248 * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
38249 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
38250 *
38251 */
38252
38253 var inherits = require('inherits')
38254 var Hash = require('./hash')
38255
38256 var K = [
38257 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
38258 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
38259 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
38260 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
38261 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
38262 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
38263 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
38264 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
38265 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
38266 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
38267 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
38268 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
38269 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
38270 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
38271 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
38272 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2
38273 ]
38274
38275 var W = new Array(64)
38276
38277 function Sha256 () {
38278 this.init()
38279
38280 this._w = W // new Array(64)
38281
38282 Hash.call(this, 64, 56)
38283 }
38284
38285 inherits(Sha256, Hash)
38286
38287 Sha256.prototype.init = function () {
38288 this._a = 0x6a09e667
38289 this._b = 0xbb67ae85
38290 this._c = 0x3c6ef372
38291 this._d = 0xa54ff53a
38292 this._e = 0x510e527f
38293 this._f = 0x9b05688c
38294 this._g = 0x1f83d9ab
38295 this._h = 0x5be0cd19
38296
38297 return this
38298 }
38299
38300 function ch (x, y, z) {
38301 return z ^ (x & (y ^ z))
38302 }
38303
38304 function maj (x, y, z) {
38305 return (x & y) | (z & (x | y))
38306 }
38307
38308 function sigma0 (x) {
38309 return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)
38310 }
38311
38312 function sigma1 (x) {
38313 return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)
38314 }
38315
38316 function gamma0 (x) {
38317 return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)
38318 }
38319
38320 function gamma1 (x) {
38321 return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)
38322 }
38323
38324 Sha256.prototype._update = function (M) {
38325 var W = this._w
38326
38327 var a = this._a | 0
38328 var b = this._b | 0
38329 var c = this._c | 0
38330 var d = this._d | 0
38331 var e = this._e | 0
38332 var f = this._f | 0
38333 var g = this._g | 0
38334 var h = this._h | 0
38335
38336 for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
38337 for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0
38338
38339 for (var j = 0; j < 64; ++j) {
38340 var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0
38341 var T2 = (sigma0(a) + maj(a, b, c)) | 0
38342
38343 h = g
38344 g = f
38345 f = e
38346 e = (d + T1) | 0
38347 d = c
38348 c = b
38349 b = a
38350 a = (T1 + T2) | 0
38351 }
38352
38353 this._a = (a + this._a) | 0
38354 this._b = (b + this._b) | 0
38355 this._c = (c + this._c) | 0
38356 this._d = (d + this._d) | 0
38357 this._e = (e + this._e) | 0
38358 this._f = (f + this._f) | 0
38359 this._g = (g + this._g) | 0
38360 this._h = (h + this._h) | 0
38361 }
38362
38363 Sha256.prototype._hash = function () {
38364 var H = new Buffer(32)
38365
38366 H.writeInt32BE(this._a, 0)
38367 H.writeInt32BE(this._b, 4)
38368 H.writeInt32BE(this._c, 8)
38369 H.writeInt32BE(this._d, 12)
38370 H.writeInt32BE(this._e, 16)
38371 H.writeInt32BE(this._f, 20)
38372 H.writeInt32BE(this._g, 24)
38373 H.writeInt32BE(this._h, 28)
38374
38375 return H
38376 }
38377
38378 module.exports = Sha256
38379
38380 }).call(this,require("buffer").Buffer)
38381 },{"./hash":79,"buffer":5,"inherits":63}],85:[function(require,module,exports){
38382 (function (Buffer){
38383 var inherits = require('inherits')
38384 var SHA512 = require('./sha512')
38385 var Hash = require('./hash')
38386
38387 var W = new Array(160)
38388
38389 function Sha384 () {
38390 this.init()
38391 this._w = W
38392
38393 Hash.call(this, 128, 112)
38394 }
38395
38396 inherits(Sha384, SHA512)
38397
38398 Sha384.prototype.init = function () {
38399 this._ah = 0xcbbb9d5d
38400 this._bh = 0x629a292a
38401 this._ch = 0x9159015a
38402 this._dh = 0x152fecd8
38403 this._eh = 0x67332667
38404 this._fh = 0x8eb44a87
38405 this._gh = 0xdb0c2e0d
38406 this._hh = 0x47b5481d
38407
38408 this._al = 0xc1059ed8
38409 this._bl = 0x367cd507
38410 this._cl = 0x3070dd17
38411 this._dl = 0xf70e5939
38412 this._el = 0xffc00b31
38413 this._fl = 0x68581511
38414 this._gl = 0x64f98fa7
38415 this._hl = 0xbefa4fa4
38416
38417 return this
38418 }
38419
38420 Sha384.prototype._hash = function () {
38421 var H = new Buffer(48)
38422
38423 function writeInt64BE (h, l, offset) {
38424 H.writeInt32BE(h, offset)
38425 H.writeInt32BE(l, offset + 4)
38426 }
38427
38428 writeInt64BE(this._ah, this._al, 0)
38429 writeInt64BE(this._bh, this._bl, 8)
38430 writeInt64BE(this._ch, this._cl, 16)
38431 writeInt64BE(this._dh, this._dl, 24)
38432 writeInt64BE(this._eh, this._el, 32)
38433 writeInt64BE(this._fh, this._fl, 40)
38434
38435 return H
38436 }
38437
38438 module.exports = Sha384
38439
38440 }).call(this,require("buffer").Buffer)
38441 },{"./hash":79,"./sha512":86,"buffer":5,"inherits":63}],86:[function(require,module,exports){
38442 (function (Buffer){
38443 var inherits = require('inherits')
38444 var Hash = require('./hash')
38445
38446 var K = [
38447 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
38448 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
38449 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
38450 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
38451 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
38452 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
38453 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
38454 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
38455 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
38456 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
38457 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
38458 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
38459 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
38460 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
38461 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
38462 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
38463 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
38464 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
38465 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
38466 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
38467 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
38468 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
38469 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
38470 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
38471 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
38472 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
38473 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
38474 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
38475 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
38476 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
38477 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
38478 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
38479 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
38480 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
38481 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
38482 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
38483 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
38484 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
38485 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
38486 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
38487 ]
38488
38489 var W = new Array(160)
38490
38491 function Sha512 () {
38492 this.init()
38493 this._w = W
38494
38495 Hash.call(this, 128, 112)
38496 }
38497
38498 inherits(Sha512, Hash)
38499
38500 Sha512.prototype.init = function () {
38501 this._ah = 0x6a09e667
38502 this._bh = 0xbb67ae85
38503 this._ch = 0x3c6ef372
38504 this._dh = 0xa54ff53a
38505 this._eh = 0x510e527f
38506 this._fh = 0x9b05688c
38507 this._gh = 0x1f83d9ab
38508 this._hh = 0x5be0cd19
38509
38510 this._al = 0xf3bcc908
38511 this._bl = 0x84caa73b
38512 this._cl = 0xfe94f82b
38513 this._dl = 0x5f1d36f1
38514 this._el = 0xade682d1
38515 this._fl = 0x2b3e6c1f
38516 this._gl = 0xfb41bd6b
38517 this._hl = 0x137e2179
38518
38519 return this
38520 }
38521
38522 function Ch (x, y, z) {
38523 return z ^ (x & (y ^ z))
38524 }
38525
38526 function maj (x, y, z) {
38527 return (x & y) | (z & (x | y))
38528 }
38529
38530 function sigma0 (x, xl) {
38531 return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)
38532 }
38533
38534 function sigma1 (x, xl) {
38535 return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)
38536 }
38537
38538 function Gamma0 (x, xl) {
38539 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)
38540 }
38541
38542 function Gamma0l (x, xl) {
38543 return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)
38544 }
38545
38546 function Gamma1 (x, xl) {
38547 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)
38548 }
38549
38550 function Gamma1l (x, xl) {
38551 return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)
38552 }
38553
38554 function getCarry (a, b) {
38555 return (a >>> 0) < (b >>> 0) ? 1 : 0
38556 }
38557
38558 Sha512.prototype._update = function (M) {
38559 var W = this._w
38560
38561 var ah = this._ah | 0
38562 var bh = this._bh | 0
38563 var ch = this._ch | 0
38564 var dh = this._dh | 0
38565 var eh = this._eh | 0
38566 var fh = this._fh | 0
38567 var gh = this._gh | 0
38568 var hh = this._hh | 0
38569
38570 var al = this._al | 0
38571 var bl = this._bl | 0
38572 var cl = this._cl | 0
38573 var dl = this._dl | 0
38574 var el = this._el | 0
38575 var fl = this._fl | 0
38576 var gl = this._gl | 0
38577 var hl = this._hl | 0
38578
38579 for (var i = 0; i < 32; i += 2) {
38580 W[i] = M.readInt32BE(i * 4)
38581 W[i + 1] = M.readInt32BE(i * 4 + 4)
38582 }
38583 for (; i < 160; i += 2) {
38584 var xh = W[i - 15 * 2]
38585 var xl = W[i - 15 * 2 + 1]
38586 var gamma0 = Gamma0(xh, xl)
38587 var gamma0l = Gamma0l(xl, xh)
38588
38589 xh = W[i - 2 * 2]
38590 xl = W[i - 2 * 2 + 1]
38591 var gamma1 = Gamma1(xh, xl)
38592 var gamma1l = Gamma1l(xl, xh)
38593
38594 // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
38595 var Wi7h = W[i - 7 * 2]
38596 var Wi7l = W[i - 7 * 2 + 1]
38597
38598 var Wi16h = W[i - 16 * 2]
38599 var Wi16l = W[i - 16 * 2 + 1]
38600
38601 var Wil = (gamma0l + Wi7l) | 0
38602 var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0
38603 Wil = (Wil + gamma1l) | 0
38604 Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0
38605 Wil = (Wil + Wi16l) | 0
38606 Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0
38607
38608 W[i] = Wih
38609 W[i + 1] = Wil
38610 }
38611
38612 for (var j = 0; j < 160; j += 2) {
38613 Wih = W[j]
38614 Wil = W[j + 1]
38615
38616 var majh = maj(ah, bh, ch)
38617 var majl = maj(al, bl, cl)
38618
38619 var sigma0h = sigma0(ah, al)
38620 var sigma0l = sigma0(al, ah)
38621 var sigma1h = sigma1(eh, el)
38622 var sigma1l = sigma1(el, eh)
38623
38624 // t1 = h + sigma1 + ch + K[j] + W[j]
38625 var Kih = K[j]
38626 var Kil = K[j + 1]
38627
38628 var chh = Ch(eh, fh, gh)
38629 var chl = Ch(el, fl, gl)
38630
38631 var t1l = (hl + sigma1l) | 0
38632 var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0
38633 t1l = (t1l + chl) | 0
38634 t1h = (t1h + chh + getCarry(t1l, chl)) | 0
38635 t1l = (t1l + Kil) | 0
38636 t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0
38637 t1l = (t1l + Wil) | 0
38638 t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0
38639
38640 // t2 = sigma0 + maj
38641 var t2l = (sigma0l + majl) | 0
38642 var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0
38643
38644 hh = gh
38645 hl = gl
38646 gh = fh
38647 gl = fl
38648 fh = eh
38649 fl = el
38650 el = (dl + t1l) | 0
38651 eh = (dh + t1h + getCarry(el, dl)) | 0
38652 dh = ch
38653 dl = cl
38654 ch = bh
38655 cl = bl
38656 bh = ah
38657 bl = al
38658 al = (t1l + t2l) | 0
38659 ah = (t1h + t2h + getCarry(al, t1l)) | 0
38660 }
38661
38662 this._al = (this._al + al) | 0
38663 this._bl = (this._bl + bl) | 0
38664 this._cl = (this._cl + cl) | 0
38665 this._dl = (this._dl + dl) | 0
38666 this._el = (this._el + el) | 0
38667 this._fl = (this._fl + fl) | 0
38668 this._gl = (this._gl + gl) | 0
38669 this._hl = (this._hl + hl) | 0
38670
38671 this._ah = (this._ah + ah + getCarry(this._al, al)) | 0
38672 this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0
38673 this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0
38674 this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0
38675 this._eh = (this._eh + eh + getCarry(this._el, el)) | 0
38676 this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0
38677 this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0
38678 this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0
38679 }
38680
38681 Sha512.prototype._hash = function () {
38682 var H = new Buffer(64)
38683
38684 function writeInt64BE (h, l, offset) {
38685 H.writeInt32BE(h, offset)
38686 H.writeInt32BE(l, offset + 4)
38687 }
38688
38689 writeInt64BE(this._ah, this._al, 0)
38690 writeInt64BE(this._bh, this._bl, 8)
38691 writeInt64BE(this._ch, this._cl, 16)
38692 writeInt64BE(this._dh, this._dl, 24)
38693 writeInt64BE(this._eh, this._el, 32)
38694 writeInt64BE(this._fh, this._fl, 40)
38695 writeInt64BE(this._gh, this._gl, 48)
38696 writeInt64BE(this._hh, this._hl, 56)
38697
38698 return H
38699 }
38700
38701 module.exports = Sha512
38702
38703 }).call(this,require("buffer").Buffer)
38704 },{"./hash":79,"buffer":5,"inherits":63}],87:[function(require,module,exports){
38705 var isHexPrefixed = require('is-hex-prefixed');
38706
38707 /**
38708 * Removes '0x' from a given `String` is present
38709 * @param {String} str the string value
38710 * @return {String|Optional} a string by pass if necessary
38711 */
38712 module.exports = function stripHexPrefix(str) {
38713 if (typeof str !== 'string') {
38714 return str;
38715 }
38716
38717 return isHexPrefixed(str) ? str.slice(2) : str;
38718 }
38719
38720 },{"is-hex-prefixed":64}]},{},[31])(31)
38721 });</script>
38722 <script>function convertRippleAdrr(address) {
38723 return window.basex('rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz').encode(
38724 window.basex('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz').decode(address)
38725 )
38726 }
38727
38728 function convertRipplePriv(priv) {
38729 return window.basex('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz').decode(priv).toString("hex").slice(2)
38730 }
38731
38732 </script>
38733 <script>// Select components from sjcl to suit the crypto operations bip39 requires.
38734
38735 //// base.js
38736
38737 /** @fileOverview Javascript cryptography implementation.
38738 *
38739 * Crush to remove comments, shorten variable names and
38740 * generally reduce transmission size.
38741 *
38742 * @author Emily Stark
38743 * @author Mike Hamburg
38744 * @author Dan Boneh
38745 */
38746
38747 "use strict";
38748 /*jslint indent: 2, bitwise: false, nomen: false, plusplus: false, white: false, regexp: false */
38749 /*global document, window, escape, unescape, module, require, Uint32Array */
38750
38751 /** @namespace The Stanford Javascript Crypto Library, top-level namespace. */
38752 var sjcl = {
38753 /** @namespace Symmetric ciphers. */
38754 cipher: {},
38755
38756 /** @namespace Hash functions. Right now only SHA256 is implemented. */
38757 hash: {},
38758
38759 /** @namespace Key exchange functions. Right now only SRP is implemented. */
38760 keyexchange: {},
38761
38762 /** @namespace Block cipher modes of operation. */
38763 mode: {},
38764
38765 /** @namespace Miscellaneous. HMAC and PBKDF2. */
38766 misc: {},
38767
38768 /**
38769 * @namespace Bit array encoders and decoders.
38770 *
38771 * @description
38772 * The members of this namespace are functions which translate between
38773 * SJCL's bitArrays and other objects (usually strings). Because it
38774 * isn't always clear which direction is encoding and which is decoding,
38775 * the method names are "fromBits" and "toBits".
38776 */
38777 codec: {},
38778
38779 /** @namespace Exceptions. */
38780 exception: {
38781 /** @constructor Ciphertext is corrupt. */
38782 corrupt: function(message) {
38783 this.toString = function() { return "CORRUPT: "+this.message; };
38784 this.message = message;
38785 },
38786
38787 /** @constructor Invalid parameter. */
38788 invalid: function(message) {
38789 this.toString = function() { return "INVALID: "+this.message; };
38790 this.message = message;
38791 },
38792
38793 /** @constructor Bug or missing feature in SJCL. @constructor */
38794 bug: function(message) {
38795 this.toString = function() { return "BUG: "+this.message; };
38796 this.message = message;
38797 },
38798
38799 /** @constructor Something isn't ready. */
38800 notReady: function(message) {
38801 this.toString = function() { return "NOT READY: "+this.message; };
38802 this.message = message;
38803 }
38804 }
38805 };
38806
38807 if(typeof module !== 'undefined' && module.exports){
38808 module.exports = sjcl;
38809 }
38810 if (typeof define === "function") {
38811 define([], function () {
38812 return sjcl;
38813 });
38814 }
38815
38816
38817 //// bitArray.js
38818
38819 /** @fileOverview Arrays of bits, encoded as arrays of Numbers.
38820 *
38821 * @author Emily Stark
38822 * @author Mike Hamburg
38823 * @author Dan Boneh
38824 */
38825
38826 /** @namespace Arrays of bits, encoded as arrays of Numbers.
38827 *
38828 * @description
38829 * <p>
38830 * These objects are the currency accepted by SJCL's crypto functions.
38831 * </p>
38832 *
38833 * <p>
38834 * Most of our crypto primitives operate on arrays of 4-byte words internally,
38835 * but many of them can take arguments that are not a multiple of 4 bytes.
38836 * This library encodes arrays of bits (whose size need not be a multiple of 8
38837 * bits) as arrays of 32-bit words. The bits are packed, big-endian, into an
38838 * array of words, 32 bits at a time. Since the words are double-precision
38839 * floating point numbers, they fit some extra data. We use this (in a private,
38840 * possibly-changing manner) to encode the number of bits actually present
38841 * in the last word of the array.
38842 * </p>
38843 *
38844 * <p>
38845 * Because bitwise ops clear this out-of-band data, these arrays can be passed
38846 * to ciphers like AES which want arrays of words.
38847 * </p>
38848 */
38849 sjcl.bitArray = {
38850 /**
38851 * Array slices in units of bits.
38852 * @param {bitArray} a The array to slice.
38853 * @param {Number} bstart The offset to the start of the slice, in bits.
38854 * @param {Number} bend The offset to the end of the slice, in bits. If this is undefined,
38855 * slice until the end of the array.
38856 * @return {bitArray} The requested slice.
38857 */
38858 bitSlice: function (a, bstart, bend) {
38859 a = sjcl.bitArray._shiftRight(a.slice(bstart/32), 32 - (bstart & 31)).slice(1);
38860 return (bend === undefined) ? a : sjcl.bitArray.clamp(a, bend-bstart);
38861 },
38862
38863 /**
38864 * Extract a number packed into a bit array.
38865 * @param {bitArray} a The array to slice.
38866 * @param {Number} bstart The offset to the start of the slice, in bits.
38867 * @param {Number} length The length of the number to extract.
38868 * @return {Number} The requested slice.
38869 */
38870 extract: function(a, bstart, blength) {
38871 // FIXME: this Math.floor is not necessary at all, but for some reason
38872 // seems to suppress a bug in the Chromium JIT.
38873 var x, sh = Math.floor((-bstart-blength) & 31);
38874 if ((bstart + blength - 1 ^ bstart) & -32) {
38875 // it crosses a boundary
38876 x = (a[bstart/32|0] << (32 - sh)) ^ (a[bstart/32+1|0] >>> sh);
38877 } else {
38878 // within a single word
38879 x = a[bstart/32|0] >>> sh;
38880 }
38881 return x & ((1<<blength) - 1);
38882 },
38883
38884 /**
38885 * Concatenate two bit arrays.
38886 * @param {bitArray} a1 The first array.
38887 * @param {bitArray} a2 The second array.
38888 * @return {bitArray} The concatenation of a1 and a2.
38889 */
38890 concat: function (a1, a2) {
38891 if (a1.length === 0 || a2.length === 0) {
38892 return a1.concat(a2);
38893 }
38894
38895 var last = a1[a1.length-1], shift = sjcl.bitArray.getPartial(last);
38896 if (shift === 32) {
38897 return a1.concat(a2);
38898 } else {
38899 return sjcl.bitArray._shiftRight(a2, shift, last|0, a1.slice(0,a1.length-1));
38900 }
38901 },
38902
38903 /**
38904 * Find the length of an array of bits.
38905 * @param {bitArray} a The array.
38906 * @return {Number} The length of a, in bits.
38907 */
38908 bitLength: function (a) {
38909 var l = a.length, x;
38910 if (l === 0) { return 0; }
38911 x = a[l - 1];
38912 return (l-1) * 32 + sjcl.bitArray.getPartial(x);
38913 },
38914
38915 /**
38916 * Truncate an array.
38917 * @param {bitArray} a The array.
38918 * @param {Number} len The length to truncate to, in bits.
38919 * @return {bitArray} A new array, truncated to len bits.
38920 */
38921 clamp: function (a, len) {
38922 if (a.length * 32 < len) { return a; }
38923 a = a.slice(0, Math.ceil(len / 32));
38924 var l = a.length;
38925 len = len & 31;
38926 if (l > 0 && len) {
38927 a[l-1] = sjcl.bitArray.partial(len, a[l-1] & 0x80000000 >> (len-1), 1);
38928 }
38929 return a;
38930 },
38931
38932 /**
38933 * Make a partial word for a bit array.
38934 * @param {Number} len The number of bits in the word.
38935 * @param {Number} x The bits.
38936 * @param {Number} [0] _end Pass 1 if x has already been shifted to the high side.
38937 * @return {Number} The partial word.
38938 */
38939 partial: function (len, x, _end) {
38940 if (len === 32) { return x; }
38941 return (_end ? x|0 : x << (32-len)) + len * 0x10000000000;
38942 },
38943
38944 /**
38945 * Get the number of bits used by a partial word.
38946 * @param {Number} x The partial word.
38947 * @return {Number} The number of bits used by the partial word.
38948 */
38949 getPartial: function (x) {
38950 return Math.round(x/0x10000000000) || 32;
38951 },
38952
38953 /**
38954 * Compare two arrays for equality in a predictable amount of time.
38955 * @param {bitArray} a The first array.
38956 * @param {bitArray} b The second array.
38957 * @return {boolean} true if a == b; false otherwise.
38958 */
38959 equal: function (a, b) {
38960 if (sjcl.bitArray.bitLength(a) !== sjcl.bitArray.bitLength(b)) {
38961 return false;
38962 }
38963 var x = 0, i;
38964 for (i=0; i<a.length; i++) {
38965 x |= a[i]^b[i];
38966 }
38967 return (x === 0);
38968 },
38969
38970 /** Shift an array right.
38971 * @param {bitArray} a The array to shift.
38972 * @param {Number} shift The number of bits to shift.
38973 * @param {Number} [carry=0] A byte to carry in
38974 * @param {bitArray} [out=[]] An array to prepend to the output.
38975 * @private
38976 */
38977 _shiftRight: function (a, shift, carry, out) {
38978 var i, last2=0, shift2;
38979 if (out === undefined) { out = []; }
38980
38981 for (; shift >= 32; shift -= 32) {
38982 out.push(carry);
38983 carry = 0;
38984 }
38985 if (shift === 0) {
38986 return out.concat(a);
38987 }
38988
38989 for (i=0; i<a.length; i++) {
38990 out.push(carry | a[i]>>>shift);
38991 carry = a[i] << (32-shift);
38992 }
38993 last2 = a.length ? a[a.length-1] : 0;
38994 shift2 = sjcl.bitArray.getPartial(last2);
38995 out.push(sjcl.bitArray.partial(shift+shift2 & 31, (shift + shift2 > 32) ? carry : out.pop(),1));
38996 return out;
38997 },
38998
38999 /** xor a block of 4 words together.
39000 * @private
39001 */
39002 _xor4: function(x,y) {
39003 return [x[0]^y[0],x[1]^y[1],x[2]^y[2],x[3]^y[3]];
39004 },
39005
39006 /** byteswap a word array inplace.
39007 * (does not handle partial words)
39008 * @param {sjcl.bitArray} a word array
39009 * @return {sjcl.bitArray} byteswapped array
39010 */
39011 byteswapM: function(a) {
39012 var i, v, m = 0xff00;
39013 for (i = 0; i < a.length; ++i) {
39014 v = a[i];
39015 a[i] = (v >>> 24) | ((v >>> 8) & m) | ((v & m) << 8) | (v << 24);
39016 }
39017 return a;
39018 }
39019 };
39020
39021
39022 //// codecString.js
39023
39024 /** @fileOverview Bit array codec implementations.
39025 *
39026 * @author Emily Stark
39027 * @author Mike Hamburg
39028 * @author Dan Boneh
39029 */
39030
39031 /** @namespace UTF-8 strings */
39032 sjcl.codec.utf8String = {
39033 /** Convert from a bitArray to a UTF-8 string. */
39034 fromBits: function (arr) {
39035 var out = "", bl = sjcl.bitArray.bitLength(arr), i, tmp;
39036 for (i=0; i<bl/8; i++) {
39037 if ((i&3) === 0) {
39038 tmp = arr[i/4];
39039 }
39040 out += String.fromCharCode(tmp >>> 24);
39041 tmp <<= 8;
39042 }
39043 return decodeURIComponent(escape(out));
39044 },
39045
39046 /** Convert from a UTF-8 string to a bitArray. */
39047 toBits: function (str) {
39048 str = unescape(encodeURIComponent(str));
39049 var out = [], i, tmp=0;
39050 for (i=0; i<str.length; i++) {
39051 tmp = tmp << 8 | str.charCodeAt(i);
39052 if ((i&3) === 3) {
39053 out.push(tmp);
39054 tmp = 0;
39055 }
39056 }
39057 if (i&3) {
39058 out.push(sjcl.bitArray.partial(8*(i&3), tmp));
39059 }
39060 return out;
39061 }
39062 };
39063
39064
39065 //// codecHex.js
39066
39067 /** @fileOverview Bit array codec implementations.
39068 *
39069 * @author Emily Stark
39070 * @author Mike Hamburg
39071 * @author Dan Boneh
39072 */
39073
39074 /** @namespace Hexadecimal */
39075 sjcl.codec.hex = {
39076 /** Convert from a bitArray to a hex string. */
39077 fromBits: function (arr) {
39078 var out = "", i;
39079 for (i=0; i<arr.length; i++) {
39080 out += ((arr[i]|0)+0xF00000000000).toString(16).substr(4);
39081 }
39082 return out.substr(0, sjcl.bitArray.bitLength(arr)/4);//.replace(/(.{8})/g, "$1 ");
39083 },
39084 /** Convert from a hex string to a bitArray. */
39085 toBits: function (str) {
39086 var i, out=[], len;
39087 str = str.replace(/\s|0x/g, "");
39088 len = str.length;
39089 str = str + "00000000";
39090 for (i=0; i<str.length; i+=8) {
39091 out.push(parseInt(str.substr(i,8),16)^0);
39092 }
39093 return sjcl.bitArray.clamp(out, len*4);
39094 }
39095 };
39096
39097
39098 //// sha512.js
39099
39100 /** @fileOverview Javascript SHA-512 implementation.
39101 *
39102 * This implementation was written for CryptoJS by Jeff Mott and adapted for
39103 * SJCL by Stefan Thomas.
39104 *
39105 * CryptoJS (c) 20092012 by Jeff Mott. All rights reserved.
39106 * Released with New BSD License
39107 *
39108 * @author Emily Stark
39109 * @author Mike Hamburg
39110 * @author Dan Boneh
39111 * @author Jeff Mott
39112 * @author Stefan Thomas
39113 */
39114
39115 /**
39116 * Context for a SHA-512 operation in progress.
39117 * @constructor
39118 * @class Secure Hash Algorithm, 512 bits.
39119 */
39120 sjcl.hash.sha512 = function (hash) {
39121 if (!this._key[0]) { this._precompute(); }
39122 if (hash) {
39123 this._h = hash._h.slice(0);
39124 this._buffer = hash._buffer.slice(0);
39125 this._length = hash._length;
39126 } else {
39127 this.reset();
39128 }
39129 };
39130
39131 /**
39132 * Hash a string or an array of words.
39133 * @static
39134 * @param {bitArray|String} data the data to hash.
39135 * @return {bitArray} The hash value, an array of 16 big-endian words.
39136 */
39137 sjcl.hash.sha512.hash = function (data) {
39138 return (new sjcl.hash.sha512()).update(data).finalize();
39139 };
39140
39141 sjcl.hash.sha512.prototype = {
39142 /**
39143 * The hash's block size, in bits.
39144 * @constant
39145 */
39146 blockSize: 1024,
39147
39148 /**
39149 * Reset the hash state.
39150 * @return this
39151 */
39152 reset:function () {
39153 this._h = this._init.slice(0);
39154 this._buffer = [];
39155 this._length = 0;
39156 return this;
39157 },
39158
39159 /**
39160 * Input several words to the hash.
39161 * @param {bitArray|String} data the data to hash.
39162 * @return this
39163 */
39164 update: function (data) {
39165 if (typeof data === "string") {
39166 data = sjcl.codec.utf8String.toBits(data);
39167 }
39168 var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data),
39169 ol = this._length,
39170 nl = this._length = ol + sjcl.bitArray.bitLength(data);
39171 for (i = 1024+ol & -1024; i <= nl; i+= 1024) {
39172 this._block(b.splice(0,32));
39173 }
39174 return this;
39175 },
39176
39177 /**
39178 * Complete hashing and output the hash value.
39179 * @return {bitArray} The hash value, an array of 16 big-endian words.
39180 */
39181 finalize:function () {
39182 var i, b = this._buffer, h = this._h;
39183
39184 // Round out and push the buffer
39185 b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1,1)]);
39186
39187 // Round out the buffer to a multiple of 32 words, less the 4 length words.
39188 for (i = b.length + 4; i & 31; i++) {
39189 b.push(0);
39190 }
39191
39192 // append the length
39193 b.push(0);
39194 b.push(0);
39195 b.push(Math.floor(this._length / 0x100000000));
39196 b.push(this._length | 0);
39197
39198 while (b.length) {
39199 this._block(b.splice(0,32));
39200 }
39201
39202 this.reset();
39203 return h;
39204 },
39205
39206 /**
39207 * The SHA-512 initialization vector, to be precomputed.
39208 * @private
39209 */
39210 _init:[],
39211
39212 /**
39213 * Least significant 24 bits of SHA512 initialization values.
39214 *
39215 * Javascript only has 53 bits of precision, so we compute the 40 most
39216 * significant bits and add the remaining 24 bits as constants.
39217 *
39218 * @private
39219 */
39220 _initr: [ 0xbcc908, 0xcaa73b, 0x94f82b, 0x1d36f1, 0xe682d1, 0x3e6c1f, 0x41bd6b, 0x7e2179 ],
39221
39222 /*
39223 _init:
39224 [0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,
39225 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179],
39226 */
39227
39228 /**
39229 * The SHA-512 hash key, to be precomputed.
39230 * @private
39231 */
39232 _key:[],
39233
39234 /**
39235 * Least significant 24 bits of SHA512 key values.
39236 * @private
39237 */
39238 _keyr:
39239 [0x28ae22, 0xef65cd, 0x4d3b2f, 0x89dbbc, 0x48b538, 0x05d019, 0x194f9b, 0x6d8118,
39240 0x030242, 0x706fbe, 0xe4b28c, 0xffb4e2, 0x7b896f, 0x1696b1, 0xc71235, 0x692694,
39241 0xf14ad2, 0x4f25e3, 0x8cd5b5, 0xac9c65, 0x2b0275, 0xa6e483, 0x41fbd4, 0x1153b5,
39242 0x66dfab, 0xb43210, 0xfb213f, 0xef0ee4, 0xa88fc2, 0x0aa725, 0x03826f, 0x0e6e70,
39243 0xd22ffc, 0x26c926, 0xc42aed, 0x95b3df, 0xaf63de, 0x77b2a8, 0xedaee6, 0x82353b,
39244 0xf10364, 0x423001, 0xf89791, 0x54be30, 0xef5218, 0x65a910, 0x71202a, 0xbbd1b8,
39245 0xd2d0c8, 0x41ab53, 0x8eeb99, 0x9b48a8, 0xc95a63, 0x418acb, 0x63e373, 0xb2b8a3,
39246 0xefb2fc, 0x172f60, 0xf0ab72, 0x6439ec, 0x631e28, 0x82bde9, 0xc67915, 0x72532b,
39247 0x26619c, 0xc0c207, 0xe0eb1e, 0x6ed178, 0x176fba, 0xc898a6, 0xf90dae, 0x1c471b,
39248 0x047d84, 0xc72493, 0xc9bebc, 0x100d4c, 0x3e42b6, 0x657e2a, 0xd6faec, 0x475817],
39249
39250 /*
39251 _key:
39252 [0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
39253 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
39254 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
39255 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
39256 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
39257 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
39258 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
39259 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
39260 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
39261 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
39262 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
39263 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
39264 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
39265 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
39266 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
39267 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
39268 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
39269 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
39270 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
39271 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817],
39272 */
39273
39274 /**
39275 * Function to precompute _init and _key.
39276 * @private
39277 */
39278 _precompute: function () {
39279 // XXX: This code is for precomputing the SHA256 constants, change for
39280 // SHA512 and re-enable.
39281 var i = 0, prime = 2, factor;
39282
39283 function frac(x) { return (x-Math.floor(x)) * 0x100000000 | 0; }
39284 function frac2(x) { return (x-Math.floor(x)) * 0x10000000000 & 0xff; }
39285
39286 outer: for (; i<80; prime++) {
39287 for (factor=2; factor*factor <= prime; factor++) {
39288 if (prime % factor === 0) {
39289 // not a prime
39290 continue outer;
39291 }
39292 }
39293
39294 if (i<8) {
39295 this._init[i*2] = frac(Math.pow(prime, 1/2));
39296 this._init[i*2+1] = (frac2(Math.pow(prime, 1/2)) << 24) | this._initr[i];
39297 }
39298 this._key[i*2] = frac(Math.pow(prime, 1/3));
39299 this._key[i*2+1] = (frac2(Math.pow(prime, 1/3)) << 24) | this._keyr[i];
39300 i++;
39301 }
39302 },
39303
39304 /**
39305 * Perform one cycle of SHA-512.
39306 * @param {bitArray} words one block of words.
39307 * @private
39308 */
39309 _block:function (words) {
39310 var i, wrh, wrl,
39311 w = words.slice(0),
39312 h = this._h,
39313 k = this._key,
39314 h0h = h[ 0], h0l = h[ 1], h1h = h[ 2], h1l = h[ 3],
39315 h2h = h[ 4], h2l = h[ 5], h3h = h[ 6], h3l = h[ 7],
39316 h4h = h[ 8], h4l = h[ 9], h5h = h[10], h5l = h[11],
39317 h6h = h[12], h6l = h[13], h7h = h[14], h7l = h[15];
39318
39319 // Working variables
39320 var ah = h0h, al = h0l, bh = h1h, bl = h1l,
39321 ch = h2h, cl = h2l, dh = h3h, dl = h3l,
39322 eh = h4h, el = h4l, fh = h5h, fl = h5l,
39323 gh = h6h, gl = h6l, hh = h7h, hl = h7l;
39324
39325 for (i=0; i<80; i++) {
39326 // load up the input word for this round
39327 if (i<16) {
39328 wrh = w[i * 2];
39329 wrl = w[i * 2 + 1];
39330 } else {
39331 // Gamma0
39332 var gamma0xh = w[(i-15) * 2];
39333 var gamma0xl = w[(i-15) * 2 + 1];
39334 var gamma0h =
39335 ((gamma0xl << 31) | (gamma0xh >>> 1)) ^
39336 ((gamma0xl << 24) | (gamma0xh >>> 8)) ^
39337 (gamma0xh >>> 7);
39338 var gamma0l =
39339 ((gamma0xh << 31) | (gamma0xl >>> 1)) ^
39340 ((gamma0xh << 24) | (gamma0xl >>> 8)) ^
39341 ((gamma0xh << 25) | (gamma0xl >>> 7));
39342
39343 // Gamma1
39344 var gamma1xh = w[(i-2) * 2];
39345 var gamma1xl = w[(i-2) * 2 + 1];
39346 var gamma1h =
39347 ((gamma1xl << 13) | (gamma1xh >>> 19)) ^
39348 ((gamma1xh << 3) | (gamma1xl >>> 29)) ^
39349 (gamma1xh >>> 6);
39350 var gamma1l =
39351 ((gamma1xh << 13) | (gamma1xl >>> 19)) ^
39352 ((gamma1xl << 3) | (gamma1xh >>> 29)) ^
39353 ((gamma1xh << 26) | (gamma1xl >>> 6));
39354
39355 // Shortcuts
39356 var wr7h = w[(i-7) * 2];
39357 var wr7l = w[(i-7) * 2 + 1];
39358
39359 var wr16h = w[(i-16) * 2];
39360 var wr16l = w[(i-16) * 2 + 1];
39361
39362 // W(round) = gamma0 + W(round - 7) + gamma1 + W(round - 16)
39363 wrl = gamma0l + wr7l;
39364 wrh = gamma0h + wr7h + ((wrl >>> 0) < (gamma0l >>> 0) ? 1 : 0);
39365 wrl += gamma1l;
39366 wrh += gamma1h + ((wrl >>> 0) < (gamma1l >>> 0) ? 1 : 0);
39367 wrl += wr16l;
39368 wrh += wr16h + ((wrl >>> 0) < (wr16l >>> 0) ? 1 : 0);
39369 }
39370
39371 w[i*2] = wrh |= 0;
39372 w[i*2 + 1] = wrl |= 0;
39373
39374 // Ch
39375 var chh = (eh & fh) ^ (~eh & gh);
39376 var chl = (el & fl) ^ (~el & gl);
39377
39378 // Maj
39379 var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);
39380 var majl = (al & bl) ^ (al & cl) ^ (bl & cl);
39381
39382 // Sigma0
39383 var sigma0h = ((al << 4) | (ah >>> 28)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));
39384 var sigma0l = ((ah << 4) | (al >>> 28)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));
39385
39386 // Sigma1
39387 var sigma1h = ((el << 18) | (eh >>> 14)) ^ ((el << 14) | (eh >>> 18)) ^ ((eh << 23) | (el >>> 9));
39388 var sigma1l = ((eh << 18) | (el >>> 14)) ^ ((eh << 14) | (el >>> 18)) ^ ((el << 23) | (eh >>> 9));
39389
39390 // K(round)
39391 var krh = k[i*2];
39392 var krl = k[i*2+1];
39393
39394 // t1 = h + sigma1 + ch + K(round) + W(round)
39395 var t1l = hl + sigma1l;
39396 var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);
39397 t1l += chl;
39398 t1h += chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);
39399 t1l += krl;
39400 t1h += krh + ((t1l >>> 0) < (krl >>> 0) ? 1 : 0);
39401 t1l = t1l + wrl|0; // FF32..FF34 perf issue https://bugzilla.mozilla.org/show_bug.cgi?id=1054972
39402 t1h += wrh + ((t1l >>> 0) < (wrl >>> 0) ? 1 : 0);
39403
39404 // t2 = sigma0 + maj
39405 var t2l = sigma0l + majl;
39406 var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);
39407
39408 // Update working variables
39409 hh = gh;
39410 hl = gl;
39411 gh = fh;
39412 gl = fl;
39413 fh = eh;
39414 fl = el;
39415 el = (dl + t1l) | 0;
39416 eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;
39417 dh = ch;
39418 dl = cl;
39419 ch = bh;
39420 cl = bl;
39421 bh = ah;
39422 bl = al;
39423 al = (t1l + t2l) | 0;
39424 ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;
39425 }
39426
39427 // Intermediate hash
39428 h0l = h[1] = (h0l + al) | 0;
39429 h[0] = (h0h + ah + ((h0l >>> 0) < (al >>> 0) ? 1 : 0)) | 0;
39430 h1l = h[3] = (h1l + bl) | 0;
39431 h[2] = (h1h + bh + ((h1l >>> 0) < (bl >>> 0) ? 1 : 0)) | 0;
39432 h2l = h[5] = (h2l + cl) | 0;
39433 h[4] = (h2h + ch + ((h2l >>> 0) < (cl >>> 0) ? 1 : 0)) | 0;
39434 h3l = h[7] = (h3l + dl) | 0;
39435 h[6] = (h3h + dh + ((h3l >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;
39436 h4l = h[9] = (h4l + el) | 0;
39437 h[8] = (h4h + eh + ((h4l >>> 0) < (el >>> 0) ? 1 : 0)) | 0;
39438 h5l = h[11] = (h5l + fl) | 0;
39439 h[10] = (h5h + fh + ((h5l >>> 0) < (fl >>> 0) ? 1 : 0)) | 0;
39440 h6l = h[13] = (h6l + gl) | 0;
39441 h[12] = (h6h + gh + ((h6l >>> 0) < (gl >>> 0) ? 1 : 0)) | 0;
39442 h7l = h[15] = (h7l + hl) | 0;
39443 h[14] = (h7h + hh + ((h7l >>> 0) < (hl >>> 0) ? 1 : 0)) | 0;
39444 }
39445 };
39446
39447
39448 //// hmac.js
39449
39450 /** @fileOverview HMAC implementation.
39451 *
39452 * @author Emily Stark
39453 * @author Mike Hamburg
39454 * @author Dan Boneh
39455 */
39456
39457 /** HMAC with the specified hash function.
39458 * @constructor
39459 * @param {bitArray} key the key for HMAC.
39460 * @param {Object} [hash=sjcl.hash.sha256] The hash function to use.
39461 */
39462 sjcl.misc.hmac = function (key, Hash) {
39463 this._hash = Hash = Hash || sjcl.hash.sha256;
39464 var exKey = [[],[]], i,
39465 bs = Hash.prototype.blockSize / 32;
39466 this._baseHash = [new Hash(), new Hash()];
39467
39468 if (key.length > bs) {
39469 key = Hash.hash(key);
39470 }
39471
39472 for (i=0; i<bs; i++) {
39473 exKey[0][i] = key[i]^0x36363636;
39474 exKey[1][i] = key[i]^0x5C5C5C5C;
39475 }
39476
39477 this._baseHash[0].update(exKey[0]);
39478 this._baseHash[1].update(exKey[1]);
39479 this._resultHash = new Hash(this._baseHash[0]);
39480 };
39481
39482 /** HMAC with the specified hash function. Also called encrypt since it's a prf.
39483 * @param {bitArray|String} data The data to mac.
39484 */
39485 sjcl.misc.hmac.prototype.encrypt = sjcl.misc.hmac.prototype.mac = function (data) {
39486 if (!this._updated) {
39487 this.update(data);
39488 return this.digest(data);
39489 } else {
39490 throw new sjcl.exception.invalid("encrypt on already updated hmac called!");
39491 }
39492 };
39493
39494 sjcl.misc.hmac.prototype.reset = function () {
39495 this._resultHash = new this._hash(this._baseHash[0]);
39496 this._updated = false;
39497 };
39498
39499 sjcl.misc.hmac.prototype.update = function (data) {
39500 this._updated = true;
39501 this._resultHash.update(data);
39502 };
39503
39504 sjcl.misc.hmac.prototype.digest = function () {
39505 var w = this._resultHash.finalize(), result = new (this._hash)(this._baseHash[1]).update(w).finalize();
39506
39507 this.reset();
39508
39509 return result;
39510 };
39511
39512
39513 //// pbkdf2.js
39514
39515
39516 /** @fileOverview Password-based key-derivation function, version 2.0.
39517 *
39518 * @author Emily Stark
39519 * @author Mike Hamburg
39520 * @author Dan Boneh
39521 */
39522
39523 /** Password-Based Key-Derivation Function, version 2.0.
39524 *
39525 * Generate keys from passwords using PBKDF2-HMAC-SHA256.
39526 *
39527 * This is the method specified by RSA's PKCS #5 standard.
39528 *
39529 * @param {bitArray|String} password The password.
39530 * @param {bitArray|String} salt The salt. Should have lots of entropy.
39531 * @param {Number} [count=1000] The number of iterations. Higher numbers make the function slower but more secure.
39532 * @param {Number} [length] The length of the derived key. Defaults to the
39533 output size of the hash function.
39534 * @param {Object} [Prff=sjcl.misc.hmac] The pseudorandom function family.
39535 * @return {bitArray} the derived key.
39536 */
39537 sjcl.misc.pbkdf2 = function (password, salt, count, length, Prff) {
39538 count = count || 1000;
39539
39540 if (length < 0 || count < 0) {
39541 throw sjcl.exception.invalid("invalid params to pbkdf2");
39542 }
39543
39544 if (typeof password === "string") {
39545 password = sjcl.codec.utf8String.toBits(password);
39546 }
39547
39548 if (typeof salt === "string") {
39549 salt = sjcl.codec.utf8String.toBits(salt);
39550 }
39551
39552 Prff = Prff || sjcl.misc.hmac;
39553
39554 var prf = new Prff(password),
39555 u, ui, i, j, k, out = [], b = sjcl.bitArray;
39556
39557 for (k = 1; 32 * out.length < (length || 1); k++) {
39558 u = ui = prf.encrypt(b.concat(salt,[k]));
39559
39560 for (i=1; i<count; i++) {
39561 ui = prf.encrypt(ui);
39562 for (j=0; j<ui.length; j++) {
39563 u[j] ^= ui[j];
39564 }
39565 }
39566
39567 out = out.concat(u);
39568 }
39569
39570 if (length) { out = b.clamp(out, length); }
39571
39572 return out;
39573 };
39574
39575
39576 //// sha256.js
39577
39578 /** @fileOverview Javascript SHA-256 implementation.
39579 *
39580 * An older version of this implementation is available in the public
39581 * domain, but this one is (c) Emily Stark, Mike Hamburg, Dan Boneh,
39582 * Stanford University 2008-2010 and BSD-licensed for liability
39583 * reasons.
39584 *
39585 * Special thanks to Aldo Cortesi for pointing out several bugs in
39586 * this code.
39587 *
39588 * @author Emily Stark
39589 * @author Mike Hamburg
39590 * @author Dan Boneh
39591 */
39592
39593 /**
39594 * Context for a SHA-256 operation in progress.
39595 * @constructor
39596 * @class Secure Hash Algorithm, 256 bits.
39597 */
39598 sjcl.hash.sha256 = function (hash) {
39599 if (!this._key[0]) { this._precompute(); }
39600 if (hash) {
39601 this._h = hash._h.slice(0);
39602 this._buffer = hash._buffer.slice(0);
39603 this._length = hash._length;
39604 } else {
39605 this.reset();
39606 }
39607 };
39608
39609 /**
39610 * Hash a string or an array of words.
39611 * @static
39612 * @param {bitArray|String} data the data to hash.
39613 * @return {bitArray} The hash value, an array of 16 big-endian words.
39614 */
39615 sjcl.hash.sha256.hash = function (data) {
39616 return (new sjcl.hash.sha256()).update(data).finalize();
39617 };
39618
39619 sjcl.hash.sha256.prototype = {
39620 /**
39621 * The hash's block size, in bits.
39622 * @constant
39623 */
39624 blockSize: 512,
39625
39626 /**
39627 * Reset the hash state.
39628 * @return this
39629 */
39630 reset:function () {
39631 this._h = this._init.slice(0);
39632 this._buffer = [];
39633 this._length = 0;
39634 return this;
39635 },
39636
39637 /**
39638 * Input several words to the hash.
39639 * @param {bitArray|String} data the data to hash.
39640 * @return this
39641 */
39642 update: function (data) {
39643 if (typeof data === "string") {
39644 data = sjcl.codec.utf8String.toBits(data);
39645 }
39646 var i, b = this._buffer = sjcl.bitArray.concat(this._buffer, data),
39647 ol = this._length,
39648 nl = this._length = ol + sjcl.bitArray.bitLength(data);
39649 for (i = 512+ol & -512; i <= nl; i+= 512) {
39650 this._block(b.splice(0,16));
39651 }
39652 return this;
39653 },
39654
39655 /**
39656 * Complete hashing and output the hash value.
39657 * @return {bitArray} The hash value, an array of 8 big-endian words.
39658 */
39659 finalize:function () {
39660 var i, b = this._buffer, h = this._h;
39661
39662 // Round out and push the buffer
39663 b = sjcl.bitArray.concat(b, [sjcl.bitArray.partial(1,1)]);
39664
39665 // Round out the buffer to a multiple of 16 words, less the 2 length words.
39666 for (i = b.length + 2; i & 15; i++) {
39667 b.push(0);
39668 }
39669
39670 // append the length
39671 b.push(Math.floor(this._length / 0x100000000));
39672 b.push(this._length | 0);
39673
39674 while (b.length) {
39675 this._block(b.splice(0,16));
39676 }
39677
39678 this.reset();
39679 return h;
39680 },
39681
39682 /**
39683 * The SHA-256 initialization vector, to be precomputed.
39684 * @private
39685 */
39686 _init:[],
39687 /*
39688 _init:[0x6a09e667,0xbb67ae85,0x3c6ef372,0xa54ff53a,0x510e527f,0x9b05688c,0x1f83d9ab,0x5be0cd19],
39689 */
39690
39691 /**
39692 * The SHA-256 hash key, to be precomputed.
39693 * @private
39694 */
39695 _key:[],
39696 /*
39697 _key:
39698 [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
39699 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
39700 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
39701 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
39702 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
39703 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
39704 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
39705 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2],
39706 */
39707
39708
39709 /**
39710 * Function to precompute _init and _key.
39711 * @private
39712 */
39713 _precompute: function () {
39714 var i = 0, prime = 2, factor;
39715
39716 function frac(x) { return (x-Math.floor(x)) * 0x100000000 | 0; }
39717
39718 outer: for (; i<64; prime++) {
39719 for (factor=2; factor*factor <= prime; factor++) {
39720 if (prime % factor === 0) {
39721 // not a prime
39722 continue outer;
39723 }
39724 }
39725
39726 if (i<8) {
39727 this._init[i] = frac(Math.pow(prime, 1/2));
39728 }
39729 this._key[i] = frac(Math.pow(prime, 1/3));
39730 i++;
39731 }
39732 },
39733
39734 /**
39735 * Perform one cycle of SHA-256.
39736 * @param {bitArray} words one block of words.
39737 * @private
39738 */
39739 _block:function (words) {
39740 var i, tmp, a, b,
39741 w = words.slice(0),
39742 h = this._h,
39743 k = this._key,
39744 h0 = h[0], h1 = h[1], h2 = h[2], h3 = h[3],
39745 h4 = h[4], h5 = h[5], h6 = h[6], h7 = h[7];
39746
39747 /* Rationale for placement of |0 :
39748 * If a value can overflow is original 32 bits by a factor of more than a few
39749 * million (2^23 ish), there is a possibility that it might overflow the
39750 * 53-bit mantissa and lose precision.
39751 *
39752 * To avoid this, we clamp back to 32 bits by |'ing with 0 on any value that
39753 * propagates around the loop, and on the hash state h[]. I don't believe
39754 * that the clamps on h4 and on h0 are strictly necessary, but it's close
39755 * (for h4 anyway), and better safe than sorry.
39756 *
39757 * The clamps on h[] are necessary for the output to be correct even in the
39758 * common case and for short inputs.
39759 */
39760 for (i=0; i<64; i++) {
39761 // load up the input word for this round
39762 if (i<16) {
39763 tmp = w[i];
39764 } else {
39765 a = w[(i+1 ) & 15];
39766 b = w[(i+14) & 15];
39767 tmp = w[i&15] = ((a>>>7 ^ a>>>18 ^ a>>>3 ^ a<<25 ^ a<<14) +
39768 (b>>>17 ^ b>>>19 ^ b>>>10 ^ b<<15 ^ b<<13) +
39769 w[i&15] + w[(i+9) & 15]) | 0;
39770 }
39771
39772 tmp = (tmp + h7 + (h4>>>6 ^ h4>>>11 ^ h4>>>25 ^ h4<<26 ^ h4<<21 ^ h4<<7) + (h6 ^ h4&(h5^h6)) + k[i]); // | 0;
39773
39774 // shift register
39775 h7 = h6; h6 = h5; h5 = h4;
39776 h4 = h3 + tmp | 0;
39777 h3 = h2; h2 = h1; h1 = h0;
39778
39779 h0 = (tmp + ((h1&h2) ^ (h3&(h1^h2))) + (h1>>>2 ^ h1>>>13 ^ h1>>>22 ^ h1<<30 ^ h1<<19 ^ h1<<10)) | 0;
39780 }
39781
39782 h[0] = h[0]+h0 | 0;
39783 h[1] = h[1]+h1 | 0;
39784 h[2] = h[2]+h2 | 0;
39785 h[3] = h[3]+h3 | 0;
39786 h[4] = h[4]+h4 | 0;
39787 h[5] = h[5]+h5 | 0;
39788 h[6] = h[6]+h6 | 0;
39789 h[7] = h[7]+h7 | 0;
39790 }
39791 };
39792 </script>
39793 <script>// An extremely basic translation library
39794 //
39795 // Example usage:
39796 //
39797 // Set some html to be translated. Do this using the 'data-translate' attribute:
39798 //
39799 // <div data-translate>Test</div>
39800 // <div data-translate-html><em>keep em tag</em></div>
39801 // <input data-translate-placeholder placeholder="Example placeholder">
39802 // <span data-translate-title title="Example title"></span>
39803 //
39804 // Obtain all the phrases to be translated via js debug console:
39805 //
39806 // Translate.phrasesAsJson();
39807 //
39808 // Use that template to translate the phrases into another language.
39809 // Leave the key the same. Change the value to the new language.
39810 //
39811 // Create a js file to load the new phrases. In this example for Spanish,
39812 // es.js will contain the following code:
39813 //
39814 // Translate.loadForeignPhrases("es", {
39815 // "Test": "Test in Spanish",
39816 // "<em>keep em tag</em>": "<em>keep em tag in Spanish</em>",
39817 // "Example placeholder": "Example placeholder in Spanish"
39818 // "Example title": "Example title in Spanish"
39819 // });
39820 //
39821 // In your UI put a listener for clicking on the Spanish button:
39822 //
39823 // mySpanishButton.addEventListener("click", function() {
39824 // Translate.setLanguage("es");
39825 // });
39826 // myEnglishButton.addEventListener("click", function() {
39827 // Translate.setLanguage("en");
39828 // });
39829
39830 Translate = new (function() {
39831
39832 var defaultLanguage = "en";
39833
39834 var allPhrases = {};
39835 allPhrases[defaultLanguage] = {};
39836
39837 // Node types
39838
39839 var text = {
39840 selector: "[data-translate]",
39841 getKey: function() {
39842 return this.textContent.trim().replace(/\s+/g, " ");
39843 },
39844 setPhrase: function(p) {
39845 this.textContent = p;
39846 },
39847 }
39848
39849 var html = {
39850 selector: "[data-translate-html]",
39851 getKey: function() {
39852 return this.innerHTML.trim().replace(/\s+/g, " ");
39853 },
39854 setPhrase: function(p) {
39855 this.innerHTML = p;
39856 },
39857 }
39858
39859 var placeholder = {
39860 selector: "[data-translate-placeholder]",
39861 getKey: function() {
39862 return this.getAttribute("placeholder").trim().replace(/\s+/g, " ");
39863 },
39864 setPhrase: function(p) {
39865 this.setAttribute("placeholder", p);
39866 },
39867 }
39868
39869 var title = {
39870 selector: "[data-translate-title]",
39871 getKey: function() {
39872 return this.getAttribute("title").trim().replace(/\s+/g, " ");
39873 },
39874 setPhrase: function(p) {
39875 this.setAttribute("title", p);
39876 },
39877 }
39878
39879 // Get elements to be translated
39880 var allEls = getEls(text)
39881 .concat(getEls(html))
39882 .concat(getEls(placeholder))
39883 .concat(getEls(title));
39884
39885 // Provides access to phrases from a non-default language.
39886 // See phrases_en.js for example usage.
39887 this.loadForeignPhrases = function(language, phrases) {
39888 allPhrases[language] = phrases;
39889 }
39890
39891 // Displays a different language, eg "en" or "fr"
39892 this.setLanguage = function(language) {
39893 for (var i=0; i<allEls.length; i++) {
39894 var el = allEls[i];
39895 var key = el.key;
39896 if (!(language in allPhrases)) {
39897 console.log(language + " not in allPhrases");
39898 return;
39899 }
39900 if (!(key in allPhrases[language])) {
39901 console.log(language + " does not contain phrase: " + key);
39902 return;
39903 }
39904 var phrase = allPhrases[language][key];
39905 el.setPhrase(phrase);
39906 }
39907 }
39908
39909 // Converts the phrases to a key-pair json file.
39910 // This is a good way to export phrases for use in translation tools.
39911 this.phrasesAsJson = function(language) {
39912 var keys = [];
39913 for (var i=0; i<allEls.length; i++) {
39914 var el = allEls[i];
39915 var key = el.key;
39916 keys.push(key);
39917 }
39918 keys.sort();
39919 var output = {};
39920 for (var i=0; i<keys.length; i++) {
39921 var key = keys[i];
39922 var translated = "";
39923 if (language in allPhrases && key in allPhrases[language]) {
39924 translated = allPhrases[language][key];
39925 }
39926 output[key] = translated;
39927 }
39928 return JSON.stringify(output, null, 2);
39929 }
39930
39931 function getEls(nodeType) {
39932 var nodes = document.querySelectorAll(nodeType.selector);
39933 var els = [];
39934 for (var i=0; i<nodes.length; i++) {
39935 var node = nodes[i];
39936 node.getKey = nodeType.getKey;
39937 node.setPhrase = nodeType.setPhrase;
39938 node.key = node.getKey();
39939 allPhrases[defaultLanguage][node.key] = node.key;
39940 els.push(node);
39941 }
39942 return els;
39943 }
39944
39945 })();
39946 </script>
39947 <script>Translate.loadForeignPhrases("en",
39948 {
39949 "<code>m/44'/0'/0'/0</code> generates public addresses": "<code>m/44'/0'/0'/0</code> generates public addresses",
39950 "<code>m/44'/0'/0'/1</code> generates change addresses": "<code>m/44'/0'/0'/1</code> generates change addresses",
39951 "<code>m/44'/0'/0'</code> generates extended keys for import / export": "<code>m/44'/0'/0'</code> generates extended keys for import / export",
39952 "<code>m/44'/0'/1'</code> for the next account. Continue incrementing for more accounts (most use a single account).": "<code>m/44'/0'/1'</code> for the next account. Continue incrementing for more accounts (most use a single account).",
39953 "Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards": "Accepts binary, base 6, 6-sided dice, base 10, hexadecimal, cards",
39954 "Account": "Account",
39955 "Address": "Address",
39956 "Alternatively, download the file from the repository": "Alternatively, download the file from the repository",
39957 "BIP32 Derivation Path": "BIP32 Derivation Path",
39958 "BIP32 Extended Key": "BIP32 Extended Key",
39959 "BIP32 Extended Key (addresses only)": "BIP32 Extended Key (addresses only)",
39960 "BIP32 Root Key": "BIP32 Root Key",
39961 "BIP39 Mnemonic": "BIP39 Mnemonic",
39962 "BIP39 Passphrase (optional)": "BIP39 Passphrase (optional)",
39963 "BIP39 Seed": "BIP39 Seed",
39964 "Base 10": "Base 10",
39965 "Base 6": "Base 6",
39966 "Be careful - it can be easy to make mistakes if you don't know what you're doing.": "Be careful - it can be easy to make mistakes if you don't know what you're doing.",
39967 "Binary": "Binary",
39968 "Bitcoin Core": "Bitcoin Core",
39969 "Bits Per Event": "Bits Per Event",
39970 "Block Explorers": "Block Explorers",
39971 "Can be used with": "Can be used with",
39972 "Card": "Card",
39973 "Coin": "Coin",
39974 "Dice": "Dice",
39975 "Do <strong>NOT</strong> use phrases from books, lyrics from songs, your birthday or steet address, keyboard mashing, or anything you <i>think</i> is random, because chances are overwhelming it isn't random enough for the needs of this tool.": "Do <strong>NOT</strong> use phrases from books, lyrics from songs, your birthday or steet address, keyboard mashing, or anything you <i>think</i> is random, because chances are overwhelming it isn't random enough for the needs of this tool.",
39976 "Double-click that file to open it in a browser on any offline computer.": "Double-click that file to open it in a browser on any offline computer.",
39977 "Entropy": "Entropy",
39978 "Entropy Type": "Entropy Type",
39979 "Entropy is an advanced feature. Your mnemonic may be insecure if this feature is used incorrectly.": "Entropy is an advanced feature. Your mnemonic may be insecure if this feature is used incorrectly.",
39980 "Entropy values must be sourced from a <a href=\"https://en.wikipedia.org/wiki/Random_number_generation\" target=\"_blank\">strong source of randomness</a>.": "Entropy values must be sourced from a <a href=\"https://en.wikipedia.org/wiki/Random_number_generation\" target=\"_blank\">strong source of randomness</a>.",
39981 "Event Count": "Event Count",
39982 "External / Internal": "External / Internal",
39983 "Filtered Entropy": "Filtered Entropy",
39984 "For more info see the <a href=\"http://www.mycelium.com/\" target=\"_blank\">Mycelium Wallet homepage</a>": "For more info see the <a href=\"http://www.mycelium.com/\" target=\"_blank\">Mycelium Wallet homepage</a>",
39985 "For more info see the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\" target=\"_blank\">BIP39 spec</a>.": "For more info see the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\" target=\"_blank\">BIP39 spec</a>.",
39986 "For more info see the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki\" target=\"_blank\">BIP44 spec</a>.": "For more info see the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki\" target=\"_blank\">BIP44 spec</a>.",
39987 "For more info see the <a href=\"https://github.com/bitcoin/bitcoin/pull/8035\" target=\"_blank\">Bitcoin Core BIP32 implementation</a>": "For more info see the <a href=\"https://github.com/bitcoin/bitcoin/pull/8035\" target=\"_blank\">Bitcoin Core BIP32 implementation</a>",
39988 "For more info see the BIP32 spec": "For more info see the BIP32 spec",
39989 "From entropy length (3 words per 32 bits)": "From entropy length (3 words per 32 bits)",
39990 "Generate a random mnemonic, or enter your own below": "Generate a random mnemonic, or enter your own below",
39991 "Get the source code from the repository": "Get the source code from the repository",
39992 "Hex": "Hex",
39993 "Hierarchical Deterministic Wallets": "Hierarchical Deterministic Wallets",
39994 "If cryptographic randomness isn't available in your browser, this page will show a warning and the generate button will not work.": "If cryptographic randomness isn't available in your browser, this page will show a warning and the generate button will not work.",
39995 "In that case you might choose to use your own source of entropy.": "In that case you might choose to use your own source of entropy.",
39996 "In your browser, select file save-as, and save this page as a file.": "In your browser, select file save-as, and save this page as a file.",
39997 "Libraries": "Libraries",
39998 "Mnemonic Language": "Mnemonic Language",
39999 "Mnemonic Length": "Mnemonic Length",
40000 "Mnemonic code for generating deterministic keys": "Mnemonic code for generating deterministic keys",
40001 "More info": "More info",
40002 "Multi-Account Hierarchy for Deterministic Wallets": "Multi-Account Hierarchy for Deterministic Wallets",
40003 "Mycelium Wallet": "Mycelium Wallet",
40004 "Note these addreses are derived from the BIP32 Extended Key": "Note these addreses are derived from the BIP32 Extended Key",
40005 "Offline Usage": "Offline Usage",
40006 "Only enter the <code>xpub</code> extended key into block explorer search fields, never the <code>xprv</code> key.": "Only enter the <code>xpub</code> extended key into block explorer search fields, never the <code>xprv</code> key.",
40007 "Path": "Path",
40008 "Private Key": "Private Key",
40009 "Private Keys": "Private Keys",
40010 "Public Key": "Public Key",
40011 "Purpose": "Purpose",
40012 "Raw Binary": "Raw Binary",
40013 "Read more": "Read more",
40014 "Read more at the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki\" target=\"_blank\">official BIP32 spec</a>": "Read more at the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki\" target=\"_blank\">official BIP32 spec</a>",
40015 "Read more at the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\">official BIP39 spec</a>": "Read more at the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\">official BIP39 spec</a>",
40016 "Read more at the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki\" target=\"_blank\">official BIP44 spec</a>": "Read more at the <a href=\"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki\" target=\"_blank\">official BIP44 spec</a>",
40017 "See the demo at <a href=\"http://bip32.org/\" target=\"_blank\">bip32.org</a>": "See the demo at <a href=\"http://bip32.org/\" target=\"_blank\">bip32.org</a>",
40018 "Show": "Show",
40019 "Show more rows": "Show more rows",
40020 "Strength": "Strength",
40021 "Supply my own source of entropy": "Supply my own source of entropy",
40022 "The built in random generator can generally be trusted more than your own intuition about randomness.": "The built in random generator can generally be trusted more than your own intuition about randomness.",
40023 "The random mnemonic generator on this page uses a <a href=\"https://developer.mozilla.org/en-US/docs/Web/API/RandomSource/getRandomValues\" target=\"_blank\">cryptographically secure random number generator</a>.": "The random mnemonic generator on this page uses a <a href=\"https://developer.mozilla.org/en-US/docs/Web/API/RandomSource/getRandomValues\" target=\"_blank\">cryptographically secure random number generator</a>.",
40024 "This means flipping a fair coin, rolling a fair dice, noise measurements etc.": "This means flipping a fair coin, rolling a fair dice, noise measurements etc.",
40025 "This project is 100% open-source code": "This project is 100% open-source code",
40026 "Toggle": "Toggle",
40027 "Total Bits": "Total Bits",
40028 "Use hardened addresses": "Use hardened addresses",
40029 "Use path <code>m/0'/0'</code> with hardened addresses.": "Use path <code>m/0'/0'</code> with hardened addresses.",
40030 "Use path <code>m/44'/0'/0'</code>.": "Use path <code>m/44'/0'/0'</code>.",
40031 "Use private keys at <a href=\"https://web.archive.org/web/20150707020924/https://brainwallet.org/\" target=\"_blank\">brainwallet.org</a>.": "Use private keys at <a href=\"https://web.archive.org/web/20150707020924/https://brainwallet.org/\" target=\"_blank\">brainwallet.org</a>.",
40032 "Valid entropy values include:": "Valid entropy values include:",
40033 "Warning": "Warning",
40034 "Word Count": "Word Count",
40035 "You are not a good source of entropy.": "You are not a good source of entropy.",
40036 "You can enter an existing BIP39 mnemonic, or generate a new random one. Typing your own twelve words will probably not work how you expect, since the words require a particular structure (the last word is a checksum).": "You can enter an existing BIP39 mnemonic, or generate a new random one. Typing your own twelve words will probably not work how you expect, since the words require a particular structure (the last word is a checksum).",
40037 "You can use this tool without having to be online.": "You can use this tool without having to be online.",
40038 "words": "words"
40039 }
40040 );
40041 </script>
40042 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
40043 WORDLISTS["english"] = [
40044 "abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse",
40045 "access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act",
40046 "action","actor","actress","actual","adapt","add","addict","address","adjust","admit",
40047 "adult","advance","advice","aerobic","affair","afford","afraid","again","age","agent",
40048 "agree","ahead","aim","air","airport","aisle","alarm","album","alcohol","alert",
40049 "alien","all","alley","allow","almost","alone","alpha","already","also","alter",
40050 "always","amateur","amazing","among","amount","amused","analyst","anchor","ancient","anger",
40051 "angle","angry","animal","ankle","announce","annual","another","answer","antenna","antique",
40052 "anxiety","any","apart","apology","appear","apple","approve","april","arch","arctic",
40053 "area","arena","argue","arm","armed","armor","army","around","arrange","arrest",
40054 "arrive","arrow","art","artefact","artist","artwork","ask","aspect","assault","asset",
40055 "assist","assume","asthma","athlete","atom","attack","attend","attitude","attract","auction",
40056 "audit","august","aunt","author","auto","autumn","average","avocado","avoid","awake",
40057 "aware","away","awesome","awful","awkward","axis","baby","bachelor","bacon","badge",
40058 "bag","balance","balcony","ball","bamboo","banana","banner","bar","barely","bargain",
40059 "barrel","base","basic","basket","battle","beach","bean","beauty","because","become",
40060 "beef","before","begin","behave","behind","believe","below","belt","bench","benefit",
40061 "best","betray","better","between","beyond","bicycle","bid","bike","bind","biology",
40062 "bird","birth","bitter","black","blade","blame","blanket","blast","bleak","bless",
40063 "blind","blood","blossom","blouse","blue","blur","blush","board","boat","body",
40064 "boil","bomb","bone","bonus","book","boost","border","boring","borrow","boss",
40065 "bottom","bounce","box","boy","bracket","brain","brand","brass","brave","bread",
40066 "breeze","brick","bridge","brief","bright","bring","brisk","broccoli","broken","bronze",
40067 "broom","brother","brown","brush","bubble","buddy","budget","buffalo","build","bulb",
40068 "bulk","bullet","bundle","bunker","burden","burger","burst","bus","business","busy",
40069 "butter","buyer","buzz","cabbage","cabin","cable","cactus","cage","cake","call",
40070 "calm","camera","camp","can","canal","cancel","candy","cannon","canoe","canvas",
40071 "canyon","capable","capital","captain","car","carbon","card","cargo","carpet","carry",
40072 "cart","case","cash","casino","castle","casual","cat","catalog","catch","category",
40073 "cattle","caught","cause","caution","cave","ceiling","celery","cement","census","century",
40074 "cereal","certain","chair","chalk","champion","change","chaos","chapter","charge","chase",
40075 "chat","cheap","check","cheese","chef","cherry","chest","chicken","chief","child",
40076 "chimney","choice","choose","chronic","chuckle","chunk","churn","cigar","cinnamon","circle",
40077 "citizen","city","civil","claim","clap","clarify","claw","clay","clean","clerk",
40078 "clever","click","client","cliff","climb","clinic","clip","clock","clog","close",
40079 "cloth","cloud","clown","club","clump","cluster","clutch","coach","coast","coconut",
40080 "code","coffee","coil","coin","collect","color","column","combine","come","comfort",
40081 "comic","common","company","concert","conduct","confirm","congress","connect","consider","control",
40082 "convince","cook","cool","copper","copy","coral","core","corn","correct","cost",
40083 "cotton","couch","country","couple","course","cousin","cover","coyote","crack","cradle",
40084 "craft","cram","crane","crash","crater","crawl","crazy","cream","credit","creek",
40085 "crew","cricket","crime","crisp","critic","crop","cross","crouch","crowd","crucial",
40086 "cruel","cruise","crumble","crunch","crush","cry","crystal","cube","culture","cup",
40087 "cupboard","curious","current","curtain","curve","cushion","custom","cute","cycle","dad",
40088 "damage","damp","dance","danger","daring","dash","daughter","dawn","day","deal",
40089 "debate","debris","decade","december","decide","decline","decorate","decrease","deer","defense",
40090 "define","defy","degree","delay","deliver","demand","demise","denial","dentist","deny",
40091 "depart","depend","deposit","depth","deputy","derive","describe","desert","design","desk",
40092 "despair","destroy","detail","detect","develop","device","devote","diagram","dial","diamond",
40093 "diary","dice","diesel","diet","differ","digital","dignity","dilemma","dinner","dinosaur",
40094 "direct","dirt","disagree","discover","disease","dish","dismiss","disorder","display","distance",
40095 "divert","divide","divorce","dizzy","doctor","document","dog","doll","dolphin","domain",
40096 "donate","donkey","donor","door","dose","double","dove","draft","dragon","drama",
40097 "drastic","draw","dream","dress","drift","drill","drink","drip","drive","drop",
40098 "drum","dry","duck","dumb","dune","during","dust","dutch","duty","dwarf",
40099 "dynamic","eager","eagle","early","earn","earth","easily","east","easy","echo",
40100 "ecology","economy","edge","edit","educate","effort","egg","eight","either","elbow",
40101 "elder","electric","elegant","element","elephant","elevator","elite","else","embark","embody",
40102 "embrace","emerge","emotion","employ","empower","empty","enable","enact","end","endless",
40103 "endorse","enemy","energy","enforce","engage","engine","enhance","enjoy","enlist","enough",
40104 "enrich","enroll","ensure","enter","entire","entry","envelope","episode","equal","equip",
40105 "era","erase","erode","erosion","error","erupt","escape","essay","essence","estate",
40106 "eternal","ethics","evidence","evil","evoke","evolve","exact","example","excess","exchange",
40107 "excite","exclude","excuse","execute","exercise","exhaust","exhibit","exile","exist","exit",
40108 "exotic","expand","expect","expire","explain","expose","express","extend","extra","eye",
40109 "eyebrow","fabric","face","faculty","fade","faint","faith","fall","false","fame",
40110 "family","famous","fan","fancy","fantasy","farm","fashion","fat","fatal","father",
40111 "fatigue","fault","favorite","feature","february","federal","fee","feed","feel","female",
40112 "fence","festival","fetch","fever","few","fiber","fiction","field","figure","file",
40113 "film","filter","final","find","fine","finger","finish","fire","firm","first",
40114 "fiscal","fish","fit","fitness","fix","flag","flame","flash","flat","flavor",
40115 "flee","flight","flip","float","flock","floor","flower","fluid","flush","fly",
40116 "foam","focus","fog","foil","fold","follow","food","foot","force","forest",
40117 "forget","fork","fortune","forum","forward","fossil","foster","found","fox","fragile",
40118 "frame","frequent","fresh","friend","fringe","frog","front","frost","frown","frozen",
40119 "fruit","fuel","fun","funny","furnace","fury","future","gadget","gain","galaxy",
40120 "gallery","game","gap","garage","garbage","garden","garlic","garment","gas","gasp",
40121 "gate","gather","gauge","gaze","general","genius","genre","gentle","genuine","gesture",
40122 "ghost","giant","gift","giggle","ginger","giraffe","girl","give","glad","glance",
40123 "glare","glass","glide","glimpse","globe","gloom","glory","glove","glow","glue",
40124 "goat","goddess","gold","good","goose","gorilla","gospel","gossip","govern","gown",
40125 "grab","grace","grain","grant","grape","grass","gravity","great","green","grid",
40126 "grief","grit","grocery","group","grow","grunt","guard","guess","guide","guilt",
40127 "guitar","gun","gym","habit","hair","half","hammer","hamster","hand","happy",
40128 "harbor","hard","harsh","harvest","hat","have","hawk","hazard","head","health",
40129 "heart","heavy","hedgehog","height","hello","helmet","help","hen","hero","hidden",
40130 "high","hill","hint","hip","hire","history","hobby","hockey","hold","hole",
40131 "holiday","hollow","home","honey","hood","hope","horn","horror","horse","hospital",
40132 "host","hotel","hour","hover","hub","huge","human","humble","humor","hundred",
40133 "hungry","hunt","hurdle","hurry","hurt","husband","hybrid","ice","icon","idea",
40134 "identify","idle","ignore","ill","illegal","illness","image","imitate","immense","immune",
40135 "impact","impose","improve","impulse","inch","include","income","increase","index","indicate",
40136 "indoor","industry","infant","inflict","inform","inhale","inherit","initial","inject","injury",
40137 "inmate","inner","innocent","input","inquiry","insane","insect","inside","inspire","install",
40138 "intact","interest","into","invest","invite","involve","iron","island","isolate","issue",
40139 "item","ivory","jacket","jaguar","jar","jazz","jealous","jeans","jelly","jewel",
40140 "job","join","joke","journey","joy","judge","juice","jump","jungle","junior",
40141 "junk","just","kangaroo","keen","keep","ketchup","key","kick","kid","kidney",
40142 "kind","kingdom","kiss","kit","kitchen","kite","kitten","kiwi","knee","knife",
40143 "knock","know","lab","label","labor","ladder","lady","lake","lamp","language",
40144 "laptop","large","later","latin","laugh","laundry","lava","law","lawn","lawsuit",
40145 "layer","lazy","leader","leaf","learn","leave","lecture","left","leg","legal",
40146 "legend","leisure","lemon","lend","length","lens","leopard","lesson","letter","level",
40147 "liar","liberty","library","license","life","lift","light","like","limb","limit",
40148 "link","lion","liquid","list","little","live","lizard","load","loan","lobster",
40149 "local","lock","logic","lonely","long","loop","lottery","loud","lounge","love",
40150 "loyal","lucky","luggage","lumber","lunar","lunch","luxury","lyrics","machine","mad",
40151 "magic","magnet","maid","mail","main","major","make","mammal","man","manage",
40152 "mandate","mango","mansion","manual","maple","marble","march","margin","marine","market",
40153 "marriage","mask","mass","master","match","material","math","matrix","matter","maximum",
40154 "maze","meadow","mean","measure","meat","mechanic","medal","media","melody","melt",
40155 "member","memory","mention","menu","mercy","merge","merit","merry","mesh","message",
40156 "metal","method","middle","midnight","milk","million","mimic","mind","minimum","minor",
40157 "minute","miracle","mirror","misery","miss","mistake","mix","mixed","mixture","mobile",
40158 "model","modify","mom","moment","monitor","monkey","monster","month","moon","moral",
40159 "more","morning","mosquito","mother","motion","motor","mountain","mouse","move","movie",
40160 "much","muffin","mule","multiply","muscle","museum","mushroom","music","must","mutual",
40161 "myself","mystery","myth","naive","name","napkin","narrow","nasty","nation","nature",
40162 "near","neck","need","negative","neglect","neither","nephew","nerve","nest","net",
40163 "network","neutral","never","news","next","nice","night","noble","noise","nominee",
40164 "noodle","normal","north","nose","notable","note","nothing","notice","novel","now",
40165 "nuclear","number","nurse","nut","oak","obey","object","oblige","obscure","observe",
40166 "obtain","obvious","occur","ocean","october","odor","off","offer","office","often",
40167 "oil","okay","old","olive","olympic","omit","once","one","onion","online",
40168 "only","open","opera","opinion","oppose","option","orange","orbit","orchard","order",
40169 "ordinary","organ","orient","original","orphan","ostrich","other","outdoor","outer","output",
40170 "outside","oval","oven","over","own","owner","oxygen","oyster","ozone","pact",
40171 "paddle","page","pair","palace","palm","panda","panel","panic","panther","paper",
40172 "parade","parent","park","parrot","party","pass","patch","path","patient","patrol",
40173 "pattern","pause","pave","payment","peace","peanut","pear","peasant","pelican","pen",
40174 "penalty","pencil","people","pepper","perfect","permit","person","pet","phone","photo",
40175 "phrase","physical","piano","picnic","picture","piece","pig","pigeon","pill","pilot",
40176 "pink","pioneer","pipe","pistol","pitch","pizza","place","planet","plastic","plate",
40177 "play","please","pledge","pluck","plug","plunge","poem","poet","point","polar",
40178 "pole","police","pond","pony","pool","popular","portion","position","possible","post",
40179 "potato","pottery","poverty","powder","power","practice","praise","predict","prefer","prepare",
40180 "present","pretty","prevent","price","pride","primary","print","priority","prison","private",
40181 "prize","problem","process","produce","profit","program","project","promote","proof","property",
40182 "prosper","protect","proud","provide","public","pudding","pull","pulp","pulse","pumpkin",
40183 "punch","pupil","puppy","purchase","purity","purpose","purse","push","put","puzzle",
40184 "pyramid","quality","quantum","quarter","question","quick","quit","quiz","quote","rabbit",
40185 "raccoon","race","rack","radar","radio","rail","rain","raise","rally","ramp",
40186 "ranch","random","range","rapid","rare","rate","rather","raven","raw","razor",
40187 "ready","real","reason","rebel","rebuild","recall","receive","recipe","record","recycle",
40188 "reduce","reflect","reform","refuse","region","regret","regular","reject","relax","release",
40189 "relief","rely","remain","remember","remind","remove","render","renew","rent","reopen",
40190 "repair","repeat","replace","report","require","rescue","resemble","resist","resource","response",
40191 "result","retire","retreat","return","reunion","reveal","review","reward","rhythm","rib",
40192 "ribbon","rice","rich","ride","ridge","rifle","right","rigid","ring","riot",
40193 "ripple","risk","ritual","rival","river","road","roast","robot","robust","rocket",
40194 "romance","roof","rookie","room","rose","rotate","rough","round","route","royal",
40195 "rubber","rude","rug","rule","run","runway","rural","sad","saddle","sadness",
40196 "safe","sail","salad","salmon","salon","salt","salute","same","sample","sand",
40197 "satisfy","satoshi","sauce","sausage","save","say","scale","scan","scare","scatter",
40198 "scene","scheme","school","science","scissors","scorpion","scout","scrap","screen","script",
40199 "scrub","sea","search","season","seat","second","secret","section","security","seed",
40200 "seek","segment","select","sell","seminar","senior","sense","sentence","series","service",
40201 "session","settle","setup","seven","shadow","shaft","shallow","share","shed","shell",
40202 "sheriff","shield","shift","shine","ship","shiver","shock","shoe","shoot","shop",
40203 "short","shoulder","shove","shrimp","shrug","shuffle","shy","sibling","sick","side",
40204 "siege","sight","sign","silent","silk","silly","silver","similar","simple","since",
40205 "sing","siren","sister","situate","six","size","skate","sketch","ski","skill",
40206 "skin","skirt","skull","slab","slam","sleep","slender","slice","slide","slight",
40207 "slim","slogan","slot","slow","slush","small","smart","smile","smoke","smooth",
40208 "snack","snake","snap","sniff","snow","soap","soccer","social","sock","soda",
40209 "soft","solar","soldier","solid","solution","solve","someone","song","soon","sorry",
40210 "sort","soul","sound","soup","source","south","space","spare","spatial","spawn",
40211 "speak","special","speed","spell","spend","sphere","spice","spider","spike","spin",
40212 "spirit","split","spoil","sponsor","spoon","sport","spot","spray","spread","spring",
40213 "spy","square","squeeze","squirrel","stable","stadium","staff","stage","stairs","stamp",
40214 "stand","start","state","stay","steak","steel","stem","step","stereo","stick",
40215 "still","sting","stock","stomach","stone","stool","story","stove","strategy","street",
40216 "strike","strong","struggle","student","stuff","stumble","style","subject","submit","subway",
40217 "success","such","sudden","suffer","sugar","suggest","suit","summer","sun","sunny",
40218 "sunset","super","supply","supreme","sure","surface","surge","surprise","surround","survey",
40219 "suspect","sustain","swallow","swamp","swap","swarm","swear","sweet","swift","swim",
40220 "swing","switch","sword","symbol","symptom","syrup","system","table","tackle","tag",
40221 "tail","talent","talk","tank","tape","target","task","taste","tattoo","taxi",
40222 "teach","team","tell","ten","tenant","tennis","tent","term","test","text",
40223 "thank","that","theme","then","theory","there","they","thing","this","thought",
40224 "three","thrive","throw","thumb","thunder","ticket","tide","tiger","tilt","timber",
40225 "time","tiny","tip","tired","tissue","title","toast","tobacco","today","toddler",
40226 "toe","together","toilet","token","tomato","tomorrow","tone","tongue","tonight","tool",
40227 "tooth","top","topic","topple","torch","tornado","tortoise","toss","total","tourist",
40228 "toward","tower","town","toy","track","trade","traffic","tragic","train","transfer",
40229 "trap","trash","travel","tray","treat","tree","trend","trial","tribe","trick",
40230 "trigger","trim","trip","trophy","trouble","truck","true","truly","trumpet","trust",
40231 "truth","try","tube","tuition","tumble","tuna","tunnel","turkey","turn","turtle",
40232 "twelve","twenty","twice","twin","twist","two","type","typical","ugly","umbrella",
40233 "unable","unaware","uncle","uncover","under","undo","unfair","unfold","unhappy","uniform",
40234 "unique","unit","universe","unknown","unlock","until","unusual","unveil","update","upgrade",
40235 "uphold","upon","upper","upset","urban","urge","usage","use","used","useful",
40236 "useless","usual","utility","vacant","vacuum","vague","valid","valley","valve","van",
40237 "vanish","vapor","various","vast","vault","vehicle","velvet","vendor","venture","venue",
40238 "verb","verify","version","very","vessel","veteran","viable","vibrant","vicious","victory",
40239 "video","view","village","vintage","violin","virtual","virus","visa","visit","visual",
40240 "vital","vivid","vocal","voice","void","volcano","volume","vote","voyage","wage",
40241 "wagon","wait","walk","wall","walnut","want","warfare","warm","warrior","wash",
40242 "wasp","waste","water","wave","way","wealth","weapon","wear","weasel","weather",
40243 "web","wedding","weekend","weird","welcome","west","wet","whale","what","wheat",
40244 "wheel","when","where","whip","whisper","wide","width","wife","wild","will",
40245 "win","window","wine","wing","wink","winner","winter","wire","wisdom","wise",
40246 "wish","witness","wolf","woman","wonder","wood","wool","word","work","world",
40247 "worry","worth","wrap","wreck","wrestle","wrist","write","wrong","yard","year",
40248 "yellow","you","young","youth","zebra","zero","zone","zoo"]
40249 </script>
40250 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
40251 WORDLISTS["japanese"] = [
40252 "あいこくしん", "あいさつ", "あいだ", "あおぞら", "あかちゃん", "あきる", "あけがた", "あける", "あこがれる", "あさい",
40253 "あさひ", "あしあと", "あじわう", "あずかる", "あずき", "あそぶ", "あたえる", "あたためる", "あたりまえ", "あたる",
40254 "あつい", "あつかう", "あっしゅく", "あつまり", "あつめる", "あてな", "あてはまる", "あひる", "あぶら", "あぶる",
40255 "あふれる", "あまい", "あまど", "あまやかす", "あまり", "あみもの", "あめりか", "あやまる", "あゆむ", "あらいぐま",
40256 "あらし", "あらすじ", "あらためる", "あらゆる", "あらわす", "ありがとう", "あわせる", "あわてる", "あんい", "あんがい",
40257 "あんこ", "あんぜん", "あんてい", "あんない", "あんまり", "いいだす", "いおん", "いがい", "いがく", "いきおい",
40258 "いきなり", "いきもの", "いきる", "いくじ", "いくぶん", "いけばな", "いけん", "いこう", "いこく", "いこつ",
40259 "いさましい", "いさん", "いしき", "いじゅう", "いじょう", "いじわる", "いずみ", "いずれ", "いせい", "いせえび",
40260 "いせかい", "いせき", "いぜん", "いそうろう", "いそがしい", "いだい", "いだく", "いたずら", "いたみ", "いたりあ",
40261 "いちおう", "いちじ", "いちど", "いちば", "いちぶ", "いちりゅう", "いつか", "いっしゅん", "いっせい", "いっそう",
40262 "いったん", "いっち", "いってい", "いっぽう", "いてざ", "いてん", "いどう", "いとこ", "いない", "いなか",
40263 "いねむり", "いのち", "いのる", "いはつ", "いばる", "いはん", "いびき", "いひん", "いふく", "いへん",
40264 "いほう", "いみん", "いもうと", "いもたれ", "いもり", "いやがる", "いやす", "いよかん", "いよく", "いらい",
40265 "いらすと", "いりぐち", "いりょう", "いれい", "いれもの", "いれる", "いろえんぴつ", "いわい", "いわう", "いわかん",
40266 "いわば", "いわゆる", "いんげんまめ", "いんさつ", "いんしょう", "いんよう", "うえき", "うえる", "うおざ", "うがい",
40267 "うかぶ", "うかべる", "うきわ", "うくらいな", "うくれれ", "うけたまわる", "うけつけ", "うけとる", "うけもつ", "うける",
40268 "うごかす", "うごく", "うこん", "うさぎ", "うしなう", "うしろがみ", "うすい", "うすぎ", "うすぐらい", "うすめる",
40269 "うせつ", "うちあわせ", "うちがわ", "うちき", "うちゅう", "うっかり", "うつくしい", "うったえる", "うつる", "うどん",
40270 "うなぎ", "うなじ", "うなずく", "うなる", "うねる", "うのう", "うぶげ", "うぶごえ", "うまれる", "うめる",
40271 "うもう", "うやまう", "うよく", "うらがえす", "うらぐち", "うらない", "うりあげ", "うりきれ", "うるさい", "うれしい",
40272 "うれゆき", "うれる", "うろこ", "うわき", "うわさ", "うんこう", "うんちん", "うんてん", "うんどう", "えいえん",
40273 "えいが", "えいきょう", "えいご", "えいせい", "えいぶん", "えいよう", "えいわ", "えおり", "えがお", "えがく",
40274 "えきたい", "えくせる", "えしゃく", "えすて", "えつらん", "えのぐ", "えほうまき", "えほん", "えまき", "えもじ",
40275 "えもの", "えらい", "えらぶ", "えりあ", "えんえん", "えんかい", "えんぎ", "えんげき", "えんしゅう", "えんぜつ",
40276 "えんそく", "えんちょう", "えんとつ", "おいかける", "おいこす", "おいしい", "おいつく", "おうえん", "おうさま", "おうじ",
40277 "おうせつ", "おうたい", "おうふく", "おうべい", "おうよう", "おえる", "おおい", "おおう", "おおどおり", "おおや",
40278 "おおよそ", "おかえり", "おかず", "おがむ", "おかわり", "おぎなう", "おきる", "おくさま", "おくじょう", "おくりがな",
40279 "おくる", "おくれる", "おこす", "おこなう", "おこる", "おさえる", "おさない", "おさめる", "おしいれ", "おしえる",
40280 "おじぎ", "おじさん", "おしゃれ", "おそらく", "おそわる", "おたがい", "おたく", "おだやか", "おちつく", "おっと",
40281 "おつり", "おでかけ", "おとしもの", "おとなしい", "おどり", "おどろかす", "おばさん", "おまいり", "おめでとう", "おもいで",
40282 "おもう", "おもたい", "おもちゃ", "おやつ", "おやゆび", "およぼす", "おらんだ", "おろす", "おんがく", "おんけい",
40283 "おんしゃ", "おんせん", "おんだん", "おんちゅう", "おんどけい", "かあつ", "かいが", "がいき", "がいけん", "がいこう",
40284 "かいさつ", "かいしゃ", "かいすいよく", "かいぜん", "かいぞうど", "かいつう", "かいてん", "かいとう", "かいふく", "がいへき",
40285 "かいほう", "かいよう", "がいらい", "かいわ", "かえる", "かおり", "かかえる", "かがく", "かがし", "かがみ",
40286 "かくご", "かくとく", "かざる", "がぞう", "かたい", "かたち", "がちょう", "がっきゅう", "がっこう", "がっさん",
40287 "がっしょう", "かなざわし", "かのう", "がはく", "かぶか", "かほう", "かほご", "かまう", "かまぼこ", "かめれおん",
40288 "かゆい", "かようび", "からい", "かるい", "かろう", "かわく", "かわら", "がんか", "かんけい", "かんこう",
40289 "かんしゃ", "かんそう", "かんたん", "かんち", "がんばる", "きあい", "きあつ", "きいろ", "ぎいん", "きうい",
40290 "きうん", "きえる", "きおう", "きおく", "きおち", "きおん", "きかい", "きかく", "きかんしゃ", "ききて",
40291 "きくばり", "きくらげ", "きけんせい", "きこう", "きこえる", "きこく", "きさい", "きさく", "きさま", "きさらぎ",
40292 "ぎじかがく", "ぎしき", "ぎじたいけん", "ぎじにってい", "ぎじゅつしゃ", "きすう", "きせい", "きせき", "きせつ", "きそう",
40293 "きぞく", "きぞん", "きたえる", "きちょう", "きつえん", "ぎっちり", "きつつき", "きつね", "きてい", "きどう",
40294 "きどく", "きない", "きなが", "きなこ", "きぬごし", "きねん", "きのう", "きのした", "きはく", "きびしい",
40295 "きひん", "きふく", "きぶん", "きぼう", "きほん", "きまる", "きみつ", "きむずかしい", "きめる", "きもだめし",
40296 "きもち", "きもの", "きゃく", "きやく", "ぎゅうにく", "きよう", "きょうりゅう", "きらい", "きらく", "きりん",
40297 "きれい", "きれつ", "きろく", "ぎろん", "きわめる", "ぎんいろ", "きんかくじ", "きんじょ", "きんようび", "ぐあい",
40298 "くいず", "くうかん", "くうき", "くうぐん", "くうこう", "ぐうせい", "くうそう", "ぐうたら", "くうふく", "くうぼ",
40299 "くかん", "くきょう", "くげん", "ぐこう", "くさい", "くさき", "くさばな", "くさる", "くしゃみ", "くしょう",
40300 "くすのき", "くすりゆび", "くせげ", "くせん", "ぐたいてき", "くださる", "くたびれる", "くちこみ", "くちさき", "くつした",
40301 "ぐっすり", "くつろぐ", "くとうてん", "くどく", "くなん", "くねくね", "くのう", "くふう", "くみあわせ", "くみたてる",
40302 "くめる", "くやくしょ", "くらす", "くらべる", "くるま", "くれる", "くろう", "くわしい", "ぐんかん", "ぐんしょく",
40303 "ぐんたい", "ぐんて", "けあな", "けいかく", "けいけん", "けいこ", "けいさつ", "げいじゅつ", "けいたい", "げいのうじん",
40304 "けいれき", "けいろ", "けおとす", "けおりもの", "げきか", "げきげん", "げきだん", "げきちん", "げきとつ", "げきは",
40305 "げきやく", "げこう", "げこくじょう", "げざい", "けさき", "げざん", "けしき", "けしごむ", "けしょう", "げすと",
40306 "けたば", "けちゃっぷ", "けちらす", "けつあつ", "けつい", "けつえき", "けっこん", "けつじょ", "けっせき", "けってい",
40307 "けつまつ", "げつようび", "げつれい", "けつろん", "げどく", "けとばす", "けとる", "けなげ", "けなす", "けなみ",
40308 "けぬき", "げねつ", "けねん", "けはい", "げひん", "けぶかい", "げぼく", "けまり", "けみかる", "けむし",
40309 "けむり", "けもの", "けらい", "けろけろ", "けわしい", "けんい", "けんえつ", "けんお", "けんか", "げんき",
40310 "けんげん", "けんこう", "けんさく", "けんしゅう", "けんすう", "げんそう", "けんちく", "けんてい", "けんとう", "けんない",
40311 "けんにん", "げんぶつ", "けんま", "けんみん", "けんめい", "けんらん", "けんり", "こあくま", "こいぬ", "こいびと",
40312 "ごうい", "こうえん", "こうおん", "こうかん", "ごうきゅう", "ごうけい", "こうこう", "こうさい", "こうじ", "こうすい",
40313 "ごうせい", "こうそく", "こうたい", "こうちゃ", "こうつう", "こうてい", "こうどう", "こうない", "こうはい", "ごうほう",
40314 "ごうまん", "こうもく", "こうりつ", "こえる", "こおり", "ごかい", "ごがつ", "ごかん", "こくご", "こくさい",
40315 "こくとう", "こくない", "こくはく", "こぐま", "こけい", "こける", "ここのか", "こころ", "こさめ", "こしつ",
40316 "こすう", "こせい", "こせき", "こぜん", "こそだて", "こたい", "こたえる", "こたつ", "こちょう", "こっか",
40317 "こつこつ", "こつばん", "こつぶ", "こてい", "こてん", "ことがら", "ことし", "ことば", "ことり", "こなごな",
40318 "こねこね", "このまま", "このみ", "このよ", "ごはん", "こひつじ", "こふう", "こふん", "こぼれる", "ごまあぶら",
40319 "こまかい", "ごますり", "こまつな", "こまる", "こむぎこ", "こもじ", "こもち", "こもの", "こもん", "こやく",
40320 "こやま", "こゆう", "こゆび", "こよい", "こよう", "こりる", "これくしょん", "ころっけ", "こわもて", "こわれる",
40321 "こんいん", "こんかい", "こんき", "こんしゅう", "こんすい", "こんだて", "こんとん", "こんなん", "こんびに", "こんぽん",
40322 "こんまけ", "こんや", "こんれい", "こんわく", "ざいえき", "さいかい", "さいきん", "ざいげん", "ざいこ", "さいしょ",
40323 "さいせい", "ざいたく", "ざいちゅう", "さいてき", "ざいりょう", "さうな", "さかいし", "さがす", "さかな", "さかみち",
40324 "さがる", "さぎょう", "さくし", "さくひん", "さくら", "さこく", "さこつ", "さずかる", "ざせき", "さたん",
40325 "さつえい", "ざつおん", "ざっか", "ざつがく", "さっきょく", "ざっし", "さつじん", "ざっそう", "さつたば", "さつまいも",
40326 "さてい", "さといも", "さとう", "さとおや", "さとし", "さとる", "さのう", "さばく", "さびしい", "さべつ",
40327 "さほう", "さほど", "さます", "さみしい", "さみだれ", "さむけ", "さめる", "さやえんどう", "さゆう", "さよう",
40328 "さよく", "さらだ", "ざるそば", "さわやか", "さわる", "さんいん", "さんか", "さんきゃく", "さんこう", "さんさい",
40329 "ざんしょ", "さんすう", "さんせい", "さんそ", "さんち", "さんま", "さんみ", "さんらん", "しあい", "しあげ",
40330 "しあさって", "しあわせ", "しいく", "しいん", "しうち", "しえい", "しおけ", "しかい", "しかく", "じかん",
40331 "しごと", "しすう", "じだい", "したうけ", "したぎ", "したて", "したみ", "しちょう", "しちりん", "しっかり",
40332 "しつじ", "しつもん", "してい", "してき", "してつ", "じてん", "じどう", "しなぎれ", "しなもの", "しなん",
40333 "しねま", "しねん", "しのぐ", "しのぶ", "しはい", "しばかり", "しはつ", "しはらい", "しはん", "しひょう",
40334 "しふく", "じぶん", "しへい", "しほう", "しほん", "しまう", "しまる", "しみん", "しむける", "じむしょ",
40335 "しめい", "しめる", "しもん", "しゃいん", "しゃうん", "しゃおん", "じゃがいも", "しやくしょ", "しゃくほう", "しゃけん",
40336 "しゃこ", "しゃざい", "しゃしん", "しゃせん", "しゃそう", "しゃたい", "しゃちょう", "しゃっきん", "じゃま", "しゃりん",
40337 "しゃれい", "じゆう", "じゅうしょ", "しゅくはく", "じゅしん", "しゅっせき", "しゅみ", "しゅらば", "じゅんばん", "しょうかい",
40338 "しょくたく", "しょっけん", "しょどう", "しょもつ", "しらせる", "しらべる", "しんか", "しんこう", "じんじゃ", "しんせいじ",
40339 "しんちく", "しんりん", "すあげ", "すあし", "すあな", "ずあん", "すいえい", "すいか", "すいとう", "ずいぶん",
40340 "すいようび", "すうがく", "すうじつ", "すうせん", "すおどり", "すきま", "すくう", "すくない", "すける", "すごい",
40341 "すこし", "ずさん", "すずしい", "すすむ", "すすめる", "すっかり", "ずっしり", "ずっと", "すてき", "すてる",
40342 "すねる", "すのこ", "すはだ", "すばらしい", "ずひょう", "ずぶぬれ", "すぶり", "すふれ", "すべて", "すべる",
40343 "ずほう", "すぼん", "すまい", "すめし", "すもう", "すやき", "すらすら", "するめ", "すれちがう", "すろっと",
40344 "すわる", "すんぜん", "すんぽう", "せあぶら", "せいかつ", "せいげん", "せいじ", "せいよう", "せおう", "せかいかん",
40345 "せきにん", "せきむ", "せきゆ", "せきらんうん", "せけん", "せこう", "せすじ", "せたい", "せたけ", "せっかく",
40346 "せっきゃく", "ぜっく", "せっけん", "せっこつ", "せっさたくま", "せつぞく", "せつだん", "せつでん", "せっぱん", "せつび",
40347 "せつぶん", "せつめい", "せつりつ", "せなか", "せのび", "せはば", "せびろ", "せぼね", "せまい", "せまる",
40348 "せめる", "せもたれ", "せりふ", "ぜんあく", "せんい", "せんえい", "せんか", "せんきょ", "せんく", "せんげん",
40349 "ぜんご", "せんさい", "せんしゅ", "せんすい", "せんせい", "せんぞ", "せんたく", "せんちょう", "せんてい", "せんとう",
40350 "せんぬき", "せんねん", "せんぱい", "ぜんぶ", "ぜんぽう", "せんむ", "せんめんじょ", "せんもん", "せんやく", "せんゆう",
40351 "せんよう", "ぜんら", "ぜんりゃく", "せんれい", "せんろ", "そあく", "そいとげる", "そいね", "そうがんきょう", "そうき",
40352 "そうご", "そうしん", "そうだん", "そうなん", "そうび", "そうめん", "そうり", "そえもの", "そえん", "そがい",
40353 "そげき", "そこう", "そこそこ", "そざい", "そしな", "そせい", "そせん", "そそぐ", "そだてる", "そつう",
40354 "そつえん", "そっかん", "そつぎょう", "そっけつ", "そっこう", "そっせん", "そっと", "そとがわ", "そとづら", "そなえる",
40355 "そなた", "そふぼ", "そぼく", "そぼろ", "そまつ", "そまる", "そむく", "そむりえ", "そめる", "そもそも",
40356 "そよかぜ", "そらまめ", "そろう", "そんかい", "そんけい", "そんざい", "そんしつ", "そんぞく", "そんちょう", "ぞんび",
40357 "ぞんぶん", "そんみん", "たあい", "たいいん", "たいうん", "たいえき", "たいおう", "だいがく", "たいき", "たいぐう",
40358 "たいけん", "たいこ", "たいざい", "だいじょうぶ", "だいすき", "たいせつ", "たいそう", "だいたい", "たいちょう", "たいてい",
40359 "だいどころ", "たいない", "たいねつ", "たいのう", "たいはん", "だいひょう", "たいふう", "たいへん", "たいほ", "たいまつばな",
40360 "たいみんぐ", "たいむ", "たいめん", "たいやき", "たいよう", "たいら", "たいりょく", "たいる", "たいわん", "たうえ",
40361 "たえる", "たおす", "たおる", "たおれる", "たかい", "たかね", "たきび", "たくさん", "たこく", "たこやき",
40362 "たさい", "たしざん", "だじゃれ", "たすける", "たずさわる", "たそがれ", "たたかう", "たたく", "ただしい", "たたみ",
40363 "たちばな", "だっかい", "だっきゃく", "だっこ", "だっしゅつ", "だったい", "たてる", "たとえる", "たなばた", "たにん",
40364 "たぬき", "たのしみ", "たはつ", "たぶん", "たべる", "たぼう", "たまご", "たまる", "だむる", "ためいき",
40365 "ためす", "ためる", "たもつ", "たやすい", "たよる", "たらす", "たりきほんがん", "たりょう", "たりる", "たると",
40366 "たれる", "たれんと", "たろっと", "たわむれる", "だんあつ", "たんい", "たんおん", "たんか", "たんき", "たんけん",
40367 "たんご", "たんさん", "たんじょうび", "だんせい", "たんそく", "たんたい", "だんち", "たんてい", "たんとう", "だんな",
40368 "たんにん", "だんねつ", "たんのう", "たんぴん", "だんぼう", "たんまつ", "たんめい", "だんれつ", "だんろ", "だんわ",
40369 "ちあい", "ちあん", "ちいき", "ちいさい", "ちえん", "ちかい", "ちから", "ちきゅう", "ちきん", "ちけいず",
40370 "ちけん", "ちこく", "ちさい", "ちしき", "ちしりょう", "ちせい", "ちそう", "ちたい", "ちたん", "ちちおや",
40371 "ちつじょ", "ちてき", "ちてん", "ちぬき", "ちぬり", "ちのう", "ちひょう", "ちへいせん", "ちほう", "ちまた",
40372 "ちみつ", "ちみどろ", "ちめいど", "ちゃんこなべ", "ちゅうい", "ちゆりょく", "ちょうし", "ちょさくけん", "ちらし", "ちらみ",
40373 "ちりがみ", "ちりょう", "ちるど", "ちわわ", "ちんたい", "ちんもく", "ついか", "ついたち", "つうか", "つうじょう",
40374 "つうはん", "つうわ", "つかう", "つかれる", "つくね", "つくる", "つけね", "つける", "つごう", "つたえる",
40375 "つづく", "つつじ", "つつむ", "つとめる", "つながる", "つなみ", "つねづね", "つのる", "つぶす", "つまらない",
40376 "つまる", "つみき", "つめたい", "つもり", "つもる", "つよい", "つるぼ", "つるみく", "つわもの", "つわり",
40377 "てあし", "てあて", "てあみ", "ていおん", "ていか", "ていき", "ていけい", "ていこく", "ていさつ", "ていし",
40378 "ていせい", "ていたい", "ていど", "ていねい", "ていひょう", "ていへん", "ていぼう", "てうち", "ておくれ", "てきとう",
40379 "てくび", "でこぼこ", "てさぎょう", "てさげ", "てすり", "てそう", "てちがい", "てちょう", "てつがく", "てつづき",
40380 "でっぱ", "てつぼう", "てつや", "でぬかえ", "てぬき", "てぬぐい", "てのひら", "てはい", "てぶくろ", "てふだ",
40381 "てほどき", "てほん", "てまえ", "てまきずし", "てみじか", "てみやげ", "てらす", "てれび", "てわけ", "てわたし",
40382 "でんあつ", "てんいん", "てんかい", "てんき", "てんぐ", "てんけん", "てんごく", "てんさい", "てんし", "てんすう",
40383 "でんち", "てんてき", "てんとう", "てんない", "てんぷら", "てんぼうだい", "てんめつ", "てんらんかい", "でんりょく", "でんわ",
40384 "どあい", "といれ", "どうかん", "とうきゅう", "どうぐ", "とうし", "とうむぎ", "とおい", "とおか", "とおく",
40385 "とおす", "とおる", "とかい", "とかす", "ときおり", "ときどき", "とくい", "とくしゅう", "とくてん", "とくに",
40386 "とくべつ", "とけい", "とける", "とこや", "とさか", "としょかん", "とそう", "とたん", "とちゅう", "とっきゅう",
40387 "とっくん", "とつぜん", "とつにゅう", "とどける", "ととのえる", "とない", "となえる", "となり", "とのさま", "とばす",
40388 "どぶがわ", "とほう", "とまる", "とめる", "ともだち", "ともる", "どようび", "とらえる", "とんかつ", "どんぶり",
40389 "ないかく", "ないこう", "ないしょ", "ないす", "ないせん", "ないそう", "なおす", "ながい", "なくす", "なげる",
40390 "なこうど", "なさけ", "なたでここ", "なっとう", "なつやすみ", "ななおし", "なにごと", "なにもの", "なにわ", "なのか",
40391 "なふだ", "なまいき", "なまえ", "なまみ", "なみだ", "なめらか", "なめる", "なやむ", "ならう", "ならび",
40392 "ならぶ", "なれる", "なわとび", "なわばり", "にあう", "にいがた", "にうけ", "におい", "にかい", "にがて",
40393 "にきび", "にくしみ", "にくまん", "にげる", "にさんかたんそ", "にしき", "にせもの", "にちじょう", "にちようび", "にっか",
40394 "にっき", "にっけい", "にっこう", "にっさん", "にっしょく", "にっすう", "にっせき", "にってい", "になう", "にほん",
40395 "にまめ", "にもつ", "にやり", "にゅういん", "にりんしゃ", "にわとり", "にんい", "にんか", "にんき", "にんげん",
40396 "にんしき", "にんずう", "にんそう", "にんたい", "にんち", "にんてい", "にんにく", "にんぷ", "にんまり", "にんむ",
40397 "にんめい", "にんよう", "ぬいくぎ", "ぬかす", "ぬぐいとる", "ぬぐう", "ぬくもり", "ぬすむ", "ぬまえび", "ぬめり",
40398 "ぬらす", "ぬんちゃく", "ねあげ", "ねいき", "ねいる", "ねいろ", "ねぐせ", "ねくたい", "ねくら", "ねこぜ",
40399 "ねこむ", "ねさげ", "ねすごす", "ねそべる", "ねだん", "ねつい", "ねっしん", "ねつぞう", "ねったいぎょ", "ねぶそく",
40400 "ねふだ", "ねぼう", "ねほりはほり", "ねまき", "ねまわし", "ねみみ", "ねむい", "ねむたい", "ねもと", "ねらう",
40401 "ねわざ", "ねんいり", "ねんおし", "ねんかん", "ねんきん", "ねんぐ", "ねんざ", "ねんし", "ねんちゃく", "ねんど",
40402 "ねんぴ", "ねんぶつ", "ねんまつ", "ねんりょう", "ねんれい", "のいず", "のおづま", "のがす", "のきなみ", "のこぎり",
40403 "のこす", "のこる", "のせる", "のぞく", "のぞむ", "のたまう", "のちほど", "のっく", "のばす", "のはら",
40404 "のべる", "のぼる", "のみもの", "のやま", "のらいぬ", "のらねこ", "のりもの", "のりゆき", "のれん", "のんき",
40405 "ばあい", "はあく", "ばあさん", "ばいか", "ばいく", "はいけん", "はいご", "はいしん", "はいすい", "はいせん",
40406 "はいそう", "はいち", "ばいばい", "はいれつ", "はえる", "はおる", "はかい", "ばかり", "はかる", "はくしゅ",
40407 "はけん", "はこぶ", "はさみ", "はさん", "はしご", "ばしょ", "はしる", "はせる", "ぱそこん", "はそん",
40408 "はたん", "はちみつ", "はつおん", "はっかく", "はづき", "はっきり", "はっくつ", "はっけん", "はっこう", "はっさん",
40409 "はっしん", "はったつ", "はっちゅう", "はってん", "はっぴょう", "はっぽう", "はなす", "はなび", "はにかむ", "はぶらし",
40410 "はみがき", "はむかう", "はめつ", "はやい", "はやし", "はらう", "はろうぃん", "はわい", "はんい", "はんえい",
40411 "はんおん", "はんかく", "はんきょう", "ばんぐみ", "はんこ", "はんしゃ", "はんすう", "はんだん", "ぱんち", "ぱんつ",
40412 "はんてい", "はんとし", "はんのう", "はんぱ", "はんぶん", "はんぺん", "はんぼうき", "はんめい", "はんらん", "はんろん",
40413 "ひいき", "ひうん", "ひえる", "ひかく", "ひかり", "ひかる", "ひかん", "ひくい", "ひけつ", "ひこうき",
40414 "ひこく", "ひさい", "ひさしぶり", "ひさん", "びじゅつかん", "ひしょ", "ひそか", "ひそむ", "ひたむき", "ひだり",
40415 "ひたる", "ひつぎ", "ひっこし", "ひっし", "ひつじゅひん", "ひっす", "ひつぜん", "ぴったり", "ぴっちり", "ひつよう",
40416 "ひてい", "ひとごみ", "ひなまつり", "ひなん", "ひねる", "ひはん", "ひびく", "ひひょう", "ひほう", "ひまわり",
40417 "ひまん", "ひみつ", "ひめい", "ひめじし", "ひやけ", "ひやす", "ひよう", "びょうき", "ひらがな", "ひらく",
40418 "ひりつ", "ひりょう", "ひるま", "ひるやすみ", "ひれい", "ひろい", "ひろう", "ひろき", "ひろゆき", "ひんかく",
40419 "ひんけつ", "ひんこん", "ひんしゅ", "ひんそう", "ぴんち", "ひんぱん", "びんぼう", "ふあん", "ふいうち", "ふうけい",
40420 "ふうせん", "ぷうたろう", "ふうとう", "ふうふ", "ふえる", "ふおん", "ふかい", "ふきん", "ふくざつ", "ふくぶくろ",
40421 "ふこう", "ふさい", "ふしぎ", "ふじみ", "ふすま", "ふせい", "ふせぐ", "ふそく", "ぶたにく", "ふたん",
40422 "ふちょう", "ふつう", "ふつか", "ふっかつ", "ふっき", "ふっこく", "ぶどう", "ふとる", "ふとん", "ふのう",
40423 "ふはい", "ふひょう", "ふへん", "ふまん", "ふみん", "ふめつ", "ふめん", "ふよう", "ふりこ", "ふりる",
40424 "ふるい", "ふんいき", "ぶんがく", "ぶんぐ", "ふんしつ", "ぶんせき", "ふんそう", "ぶんぽう", "へいあん", "へいおん",
40425 "へいがい", "へいき", "へいげん", "へいこう", "へいさ", "へいしゃ", "へいせつ", "へいそ", "へいたく", "へいてん",
40426 "へいねつ", "へいわ", "へきが", "へこむ", "べにいろ", "べにしょうが", "へらす", "へんかん", "べんきょう", "べんごし",
40427 "へんさい", "へんたい", "べんり", "ほあん", "ほいく", "ぼうぎょ", "ほうこく", "ほうそう", "ほうほう", "ほうもん",
40428 "ほうりつ", "ほえる", "ほおん", "ほかん", "ほきょう", "ぼきん", "ほくろ", "ほけつ", "ほけん", "ほこう",
40429 "ほこる", "ほしい", "ほしつ", "ほしゅ", "ほしょう", "ほせい", "ほそい", "ほそく", "ほたて", "ほたる",
40430 "ぽちぶくろ", "ほっきょく", "ほっさ", "ほったん", "ほとんど", "ほめる", "ほんい", "ほんき", "ほんけ", "ほんしつ",
40431 "ほんやく", "まいにち", "まかい", "まかせる", "まがる", "まける", "まこと", "まさつ", "まじめ", "ますく",
40432 "まぜる", "まつり", "まとめ", "まなぶ", "まぬけ", "まねく", "まほう", "まもる", "まゆげ", "まよう",
40433 "まろやか", "まわす", "まわり", "まわる", "まんが", "まんきつ", "まんぞく", "まんなか", "みいら", "みうち",
40434 "みえる", "みがく", "みかた", "みかん", "みけん", "みこん", "みじかい", "みすい", "みすえる", "みせる",
40435 "みっか", "みつかる", "みつける", "みてい", "みとめる", "みなと", "みなみかさい", "みねらる", "みのう", "みのがす",
40436 "みほん", "みもと", "みやげ", "みらい", "みりょく", "みわく", "みんか", "みんぞく", "むいか", "むえき",
40437 "むえん", "むかい", "むかう", "むかえ", "むかし", "むぎちゃ", "むける", "むげん", "むさぼる", "むしあつい",
40438 "むしば", "むじゅん", "むしろ", "むすう", "むすこ", "むすぶ", "むすめ", "むせる", "むせん", "むちゅう",
40439 "むなしい", "むのう", "むやみ", "むよう", "むらさき", "むりょう", "むろん", "めいあん", "めいうん", "めいえん",
40440 "めいかく", "めいきょく", "めいさい", "めいし", "めいそう", "めいぶつ", "めいれい", "めいわく", "めぐまれる", "めざす",
40441 "めした", "めずらしい", "めだつ", "めまい", "めやす", "めんきょ", "めんせき", "めんどう", "もうしあげる", "もうどうけん",
40442 "もえる", "もくし", "もくてき", "もくようび", "もちろん", "もどる", "もらう", "もんく", "もんだい", "やおや",
40443 "やける", "やさい", "やさしい", "やすい", "やすたろう", "やすみ", "やせる", "やそう", "やたい", "やちん",
40444 "やっと", "やっぱり", "やぶる", "やめる", "ややこしい", "やよい", "やわらかい", "ゆうき", "ゆうびんきょく", "ゆうべ",
40445 "ゆうめい", "ゆけつ", "ゆしゅつ", "ゆせん", "ゆそう", "ゆたか", "ゆちゃく", "ゆでる", "ゆにゅう", "ゆびわ",
40446 "ゆらい", "ゆれる", "ようい", "ようか", "ようきゅう", "ようじ", "ようす", "ようちえん", "よかぜ", "よかん",
40447 "よきん", "よくせい", "よくぼう", "よけい", "よごれる", "よさん", "よしゅう", "よそう", "よそく", "よっか",
40448 "よてい", "よどがわく", "よねつ", "よやく", "よゆう", "よろこぶ", "よろしい", "らいう", "らくがき", "らくご",
40449 "らくさつ", "らくだ", "らしんばん", "らせん", "らぞく", "らたい", "らっか", "られつ", "りえき", "りかい",
40450 "りきさく", "りきせつ", "りくぐん", "りくつ", "りけん", "りこう", "りせい", "りそう", "りそく", "りてん",
40451 "りねん", "りゆう", "りゅうがく", "りよう", "りょうり", "りょかん", "りょくちゃ", "りょこう", "りりく", "りれき",
40452 "りろん", "りんご", "るいけい", "るいさい", "るいじ", "るいせき", "るすばん", "るりがわら", "れいかん", "れいぎ",
40453 "れいせい", "れいぞうこ", "れいとう", "れいぼう", "れきし", "れきだい", "れんあい", "れんけい", "れんこん", "れんさい",
40454 "れんしゅう", "れんぞく", "れんらく", "ろうか", "ろうご", "ろうじん", "ろうそく", "ろくが", "ろこつ", "ろじうら",
40455 "ろしゅつ", "ろせん", "ろてん", "ろめん", "ろれつ", "ろんぎ", "ろんぱ", "ろんぶん", "ろんり", "わかす",
40456 "わかめ", "わかやま", "わかれる", "わしつ", "わじまし", "わすれもの", "わらう", "われる"]
40457 </script>
40458 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
40459 WORDLISTS["spanish"] = [
40460 "ábaco", "abdomen", "abeja", "abierto", "abogado", "abono", "aborto", "abrazo", "abrir", "abuelo",
40461 "abuso", "acabar", "academia", "acceso", "acción", "aceite", "acelga", "acento", "aceptar", "ácido",
40462 "aclarar", "acné", "acoger", "acoso", "activo", "acto", "actriz", "actuar", "acudir", "acuerdo",
40463 "acusar", "adicto", "admitir", "adoptar", "adorno", "aduana", "adulto", "aéreo", "afectar", "afición",
40464 "afinar", "afirmar", "ágil", "agitar", "agonía", "agosto", "agotar", "agregar", "agrio", "agua",
40465 "agudo", "águila", "aguja", "ahogo", "ahorro", "aire", "aislar", "ajedrez", "ajeno", "ajuste",
40466 "alacrán", "alambre", "alarma", "alba", "álbum", "alcalde", "aldea", "alegre", "alejar", "alerta",
40467 "aleta", "alfiler", "alga", "algodón", "aliado", "aliento", "alivio", "alma", "almeja", "almíbar",
40468 "altar", "alteza", "altivo", "alto", "altura", "alumno", "alzar", "amable", "amante", "amapola",
40469 "amargo", "amasar", "ámbar", "ámbito", "ameno", "amigo", "amistad", "amor", "amparo", "amplio",
40470 "ancho", "anciano", "ancla", "andar", "andén", "anemia", "ángulo", "anillo", "ánimo", "anís",
40471 "anotar", "antena", "antiguo", "antojo", "anual", "anular", "anuncio", "añadir", "añejo", "año",
40472 "apagar", "aparato", "apetito", "apio", "aplicar", "apodo", "aporte", "apoyo", "aprender", "aprobar",
40473 "apuesta", "apuro", "arado", "araña", "arar", "árbitro", "árbol", "arbusto", "archivo", "arco",
40474 "arder", "ardilla", "arduo", "área", "árido", "aries", "armonía", "arnés", "aroma", "arpa",
40475 "arpón", "arreglo", "arroz", "arruga", "arte", "artista", "asa", "asado", "asalto", "ascenso",
40476 "asegurar", "aseo", "asesor", "asiento", "asilo", "asistir", "asno", "asombro", "áspero", "astilla",
40477 "astro", "astuto", "asumir", "asunto", "atajo", "ataque", "atar", "atento", "ateo", "ático",
40478 "atleta", "átomo", "atraer", "atroz", "atún", "audaz", "audio", "auge", "aula", "aumento",
40479 "ausente", "autor", "aval", "avance", "avaro", "ave", "avellana", "avena", "avestruz", "avión",
40480 "aviso", "ayer", "ayuda", "ayuno", "azafrán", "azar", "azote", "azúcar", "azufre", "azul",
40481 "baba", "babor", "bache", "bahía", "baile", "bajar", "balanza", "balcón", "balde", "bambú",
40482 "banco", "banda", "baño", "barba", "barco", "barniz", "barro", "báscula", "bastón", "basura",
40483 "batalla", "batería", "batir", "batuta", "baúl", "bazar", "bebé", "bebida", "bello", "besar",
40484 "beso", "bestia", "bicho", "bien", "bingo", "blanco", "bloque", "blusa", "boa", "bobina",
40485 "bobo", "boca", "bocina", "boda", "bodega", "boina", "bola", "bolero", "bolsa", "bomba",
40486 "bondad", "bonito", "bono", "bonsái", "borde", "borrar", "bosque", "bote", "botín", "bóveda",
40487 "bozal", "bravo", "brazo", "brecha", "breve", "brillo", "brinco", "brisa", "broca", "broma",
40488 "bronce", "brote", "bruja", "brusco", "bruto", "buceo", "bucle", "bueno", "buey", "bufanda",
40489 "bufón", "búho", "buitre", "bulto", "burbuja", "burla", "burro", "buscar", "butaca", "buzón",
40490 "caballo", "cabeza", "cabina", "cabra", "cacao", "cadáver", "cadena", "caer", "café", "caída",
40491 "caimán", "caja", "cajón", "cal", "calamar", "calcio", "caldo", "calidad", "calle", "calma",
40492 "calor", "calvo", "cama", "cambio", "camello", "camino", "campo", "cáncer", "candil", "canela",
40493 "canguro", "canica", "canto", "caña", "cañón", "caoba", "caos", "capaz", "capitán", "capote",
40494 "captar", "capucha", "cara", "carbón", "cárcel", "careta", "carga", "cariño", "carne", "carpeta",
40495 "carro", "carta", "casa", "casco", "casero", "caspa", "castor", "catorce", "catre", "caudal",
40496 "causa", "cazo", "cebolla", "ceder", "cedro", "celda", "célebre", "celoso", "célula", "cemento",
40497 "ceniza", "centro", "cerca", "cerdo", "cereza", "cero", "cerrar", "certeza", "césped", "cetro",
40498 "chacal", "chaleco", "champú", "chancla", "chapa", "charla", "chico", "chiste", "chivo", "choque",
40499 "choza", "chuleta", "chupar", "ciclón", "ciego", "cielo", "cien", "cierto", "cifra", "cigarro",
40500 "cima", "cinco", "cine", "cinta", "ciprés", "circo", "ciruela", "cisne", "cita", "ciudad",
40501 "clamor", "clan", "claro", "clase", "clave", "cliente", "clima", "clínica", "cobre", "cocción",
40502 "cochino", "cocina", "coco", "código", "codo", "cofre", "coger", "cohete", "cojín", "cojo",
40503 "cola", "colcha", "colegio", "colgar", "colina", "collar", "colmo", "columna", "combate", "comer",
40504 "comida", "cómodo", "compra", "conde", "conejo", "conga", "conocer", "consejo", "contar", "copa",
40505 "copia", "corazón", "corbata", "corcho", "cordón", "corona", "correr", "coser", "cosmos", "costa",
40506 "cráneo", "cráter", "crear", "crecer", "creído", "crema", "cría", "crimen", "cripta", "crisis",
40507 "cromo", "crónica", "croqueta", "crudo", "cruz", "cuadro", "cuarto", "cuatro", "cubo", "cubrir",
40508 "cuchara", "cuello", "cuento", "cuerda", "cuesta", "cueva", "cuidar", "culebra", "culpa", "culto",
40509 "cumbre", "cumplir", "cuna", "cuneta", "cuota", "cupón", "cúpula", "curar", "curioso", "curso",
40510 "curva", "cutis", "dama", "danza", "dar", "dardo", "dátil", "deber", "débil", "década",
40511 "decir", "dedo", "defensa", "definir", "dejar", "delfín", "delgado", "delito", "demora", "denso",
40512 "dental", "deporte", "derecho", "derrota", "desayuno", "deseo", "desfile", "desnudo", "destino", "desvío",
40513 "detalle", "detener", "deuda", "día", "diablo", "diadema", "diamante", "diana", "diario", "dibujo",
40514 "dictar", "diente", "dieta", "diez", "difícil", "digno", "dilema", "diluir", "dinero", "directo",
40515 "dirigir", "disco", "diseño", "disfraz", "diva", "divino", "doble", "doce", "dolor", "domingo",
40516 "don", "donar", "dorado", "dormir", "dorso", "dos", "dosis", "dragón", "droga", "ducha",
40517 "duda", "duelo", "dueño", "dulce", "dúo", "duque", "durar", "dureza", "duro", "ébano",
40518 "ebrio", "echar", "eco", "ecuador", "edad", "edición", "edificio", "editor", "educar", "efecto",
40519 "eficaz", "eje", "ejemplo", "elefante", "elegir", "elemento", "elevar", "elipse", "élite", "elixir",
40520 "elogio", "eludir", "embudo", "emitir", "emoción", "empate", "empeño", "empleo", "empresa", "enano",
40521 "encargo", "enchufe", "encía", "enemigo", "enero", "enfado", "enfermo", "engaño", "enigma", "enlace",
40522 "enorme", "enredo", "ensayo", "enseñar", "entero", "entrar", "envase", "envío", "época", "equipo",
40523 "erizo", "escala", "escena", "escolar", "escribir", "escudo", "esencia", "esfera", "esfuerzo", "espada",
40524 "espejo", "espía", "esposa", "espuma", "esquí", "estar", "este", "estilo", "estufa", "etapa",
40525 "eterno", "ética", "etnia", "evadir", "evaluar", "evento", "evitar", "exacto", "examen", "exceso",
40526 "excusa", "exento", "exigir", "exilio", "existir", "éxito", "experto", "explicar", "exponer", "extremo",
40527 "fábrica", "fábula", "fachada", "fácil", "factor", "faena", "faja", "falda", "fallo", "falso",
40528 "faltar", "fama", "familia", "famoso", "faraón", "farmacia", "farol", "farsa", "fase", "fatiga",
40529 "fauna", "favor", "fax", "febrero", "fecha", "feliz", "feo", "feria", "feroz", "fértil",
40530 "fervor", "festín", "fiable", "fianza", "fiar", "fibra", "ficción", "ficha", "fideo", "fiebre",
40531 "fiel", "fiera", "fiesta", "figura", "fijar", "fijo", "fila", "filete", "filial", "filtro",
40532 "fin", "finca", "fingir", "finito", "firma", "flaco", "flauta", "flecha", "flor", "flota",
40533 "fluir", "flujo", "flúor", "fobia", "foca", "fogata", "fogón", "folio", "folleto", "fondo",
40534 "forma", "forro", "fortuna", "forzar", "fosa", "foto", "fracaso", "frágil", "franja", "frase",
40535 "fraude", "freír", "freno", "fresa", "frío", "frito", "fruta", "fuego", "fuente", "fuerza",
40536 "fuga", "fumar", "función", "funda", "furgón", "furia", "fusil", "fútbol", "futuro", "gacela",
40537 "gafas", "gaita", "gajo", "gala", "galería", "gallo", "gamba", "ganar", "gancho", "ganga",
40538 "ganso", "garaje", "garza", "gasolina", "gastar", "gato", "gavilán", "gemelo", "gemir", "gen",
40539 "género", "genio", "gente", "geranio", "gerente", "germen", "gesto", "gigante", "gimnasio", "girar",
40540 "giro", "glaciar", "globo", "gloria", "gol", "golfo", "goloso", "golpe", "goma", "gordo",
40541 "gorila", "gorra", "gota", "goteo", "gozar", "grada", "gráfico", "grano", "grasa", "gratis",
40542 "grave", "grieta", "grillo", "gripe", "gris", "grito", "grosor", "grúa", "grueso", "grumo",
40543 "grupo", "guante", "guapo", "guardia", "guerra", "guía", "guiño", "guion", "guiso", "guitarra",
40544 "gusano", "gustar", "haber", "hábil", "hablar", "hacer", "hacha", "hada", "hallar", "hamaca",
40545 "harina", "haz", "hazaña", "hebilla", "hebra", "hecho", "helado", "helio", "hembra", "herir",
40546 "hermano", "héroe", "hervir", "hielo", "hierro", "hígado", "higiene", "hijo", "himno", "historia",
40547 "hocico", "hogar", "hoguera", "hoja", "hombre", "hongo", "honor", "honra", "hora", "hormiga",
40548 "horno", "hostil", "hoyo", "hueco", "huelga", "huerta", "hueso", "huevo", "huida", "huir",
40549 "humano", "húmedo", "humilde", "humo", "hundir", "huracán", "hurto", "icono", "ideal", "idioma",
40550 "ídolo", "iglesia", "iglú", "igual", "ilegal", "ilusión", "imagen", "imán", "imitar", "impar",
40551 "imperio", "imponer", "impulso", "incapaz", "índice", "inerte", "infiel", "informe", "ingenio", "inicio",
40552 "inmenso", "inmune", "innato", "insecto", "instante", "interés", "íntimo", "intuir", "inútil", "invierno",
40553 "ira", "iris", "ironía", "isla", "islote", "jabalí", "jabón", "jamón", "jarabe", "jardín",
40554 "jarra", "jaula", "jazmín", "jefe", "jeringa", "jinete", "jornada", "joroba", "joven", "joya",
40555 "juerga", "jueves", "juez", "jugador", "jugo", "juguete", "juicio", "junco", "jungla", "junio",
40556 "juntar", "júpiter", "jurar", "justo", "juvenil", "juzgar", "kilo", "koala", "labio", "lacio",
40557 "lacra", "lado", "ladrón", "lagarto", "lágrima", "laguna", "laico", "lamer", "lámina", "lámpara",
40558 "lana", "lancha", "langosta", "lanza", "lápiz", "largo", "larva", "lástima", "lata", "látex",
40559 "latir", "laurel", "lavar", "lazo", "leal", "lección", "leche", "lector", "leer", "legión",
40560 "legumbre", "lejano", "lengua", "lento", "leña", "león", "leopardo", "lesión", "letal", "letra",
40561 "leve", "leyenda", "libertad", "libro", "licor", "líder", "lidiar", "lienzo", "liga", "ligero",
40562 "lima", "límite", "limón", "limpio", "lince", "lindo", "línea", "lingote", "lino", "linterna",
40563 "líquido", "liso", "lista", "litera", "litio", "litro", "llaga", "llama", "llanto", "llave",
40564 "llegar", "llenar", "llevar", "llorar", "llover", "lluvia", "lobo", "loción", "loco", "locura",
40565 "lógica", "logro", "lombriz", "lomo", "lonja", "lote", "lucha", "lucir", "lugar", "lujo",
40566 "luna", "lunes", "lupa", "lustro", "luto", "luz", "maceta", "macho", "madera", "madre",
40567 "maduro", "maestro", "mafia", "magia", "mago", "maíz", "maldad", "maleta", "malla", "malo",
40568 "mamá", "mambo", "mamut", "manco", "mando", "manejar", "manga", "maniquí", "manjar", "mano",
40569 "manso", "manta", "mañana", "mapa", "máquina", "mar", "marco", "marea", "marfil", "margen",
40570 "marido", "mármol", "marrón", "martes", "marzo", "masa", "máscara", "masivo", "matar", "materia",
40571 "matiz", "matriz", "máximo", "mayor", "mazorca", "mecha", "medalla", "medio", "médula", "mejilla",
40572 "mejor", "melena", "melón", "memoria", "menor", "mensaje", "mente", "menú", "mercado", "merengue",
40573 "mérito", "mes", "mesón", "meta", "meter", "método", "metro", "mezcla", "miedo", "miel",
40574 "miembro", "miga", "mil", "milagro", "militar", "millón", "mimo", "mina", "minero", "mínimo",
40575 "minuto", "miope", "mirar", "misa", "miseria", "misil", "mismo", "mitad", "mito", "mochila",
40576 "moción", "moda", "modelo", "moho", "mojar", "molde", "moler", "molino", "momento", "momia",
40577 "monarca", "moneda", "monja", "monto", "moño", "morada", "morder", "moreno", "morir", "morro",
40578 "morsa", "mortal", "mosca", "mostrar", "motivo", "mover", "móvil", "mozo", "mucho", "mudar",
40579 "mueble", "muela", "muerte", "muestra", "mugre", "mujer", "mula", "muleta", "multa", "mundo",
40580 "muñeca", "mural", "muro", "músculo", "museo", "musgo", "música", "muslo", "nácar", "nación",
40581 "nadar", "naipe", "naranja", "nariz", "narrar", "nasal", "natal", "nativo", "natural", "náusea",
40582 "naval", "nave", "navidad", "necio", "néctar", "negar", "negocio", "negro", "neón", "nervio",
40583 "neto", "neutro", "nevar", "nevera", "nicho", "nido", "niebla", "nieto", "niñez", "niño",
40584 "nítido", "nivel", "nobleza", "noche", "nómina", "noria", "norma", "norte", "nota", "noticia",
40585 "novato", "novela", "novio", "nube", "nuca", "núcleo", "nudillo", "nudo", "nuera", "nueve",
40586 "nuez", "nulo", "número", "nutria", "oasis", "obeso", "obispo", "objeto", "obra", "obrero",
40587 "observar", "obtener", "obvio", "oca", "ocaso", "océano", "ochenta", "ocho", "ocio", "ocre",
40588 "octavo", "octubre", "oculto", "ocupar", "ocurrir", "odiar", "odio", "odisea", "oeste", "ofensa",
40589 "oferta", "oficio", "ofrecer", "ogro", "oído", "oír", "ojo", "ola", "oleada", "olfato",
40590 "olivo", "olla", "olmo", "olor", "olvido", "ombligo", "onda", "onza", "opaco", "opción",
40591 "ópera", "opinar", "oponer", "optar", "óptica", "opuesto", "oración", "orador", "oral", "órbita",
40592 "orca", "orden", "oreja", "órgano", "orgía", "orgullo", "oriente", "origen", "orilla", "oro",
40593 "orquesta", "oruga", "osadía", "oscuro", "osezno", "oso", "ostra", "otoño", "otro", "oveja",
40594 "óvulo", "óxido", "oxígeno", "oyente", "ozono", "pacto", "padre", "paella", "página", "pago",
40595 "país", "pájaro", "palabra", "palco", "paleta", "pálido", "palma", "paloma", "palpar", "pan",
40596 "panal", "pánico", "pantera", "pañuelo", "papá", "papel", "papilla", "paquete", "parar", "parcela",
40597 "pared", "parir", "paro", "párpado", "parque", "párrafo", "parte", "pasar", "paseo", "pasión",
40598 "paso", "pasta", "pata", "patio", "patria", "pausa", "pauta", "pavo", "payaso", "peatón",
40599 "pecado", "pecera", "pecho", "pedal", "pedir", "pegar", "peine", "pelar", "peldaño", "pelea",
40600 "peligro", "pellejo", "pelo", "peluca", "pena", "pensar", "peñón", "peón", "peor", "pepino",
40601 "pequeño", "pera", "percha", "perder", "pereza", "perfil", "perico", "perla", "permiso", "perro",
40602 "persona", "pesa", "pesca", "pésimo", "pestaña", "pétalo", "petróleo", "pez", "pezuña", "picar",
40603 "pichón", "pie", "piedra", "pierna", "pieza", "pijama", "pilar", "piloto", "pimienta", "pino",
40604 "pintor", "pinza", "piña", "piojo", "pipa", "pirata", "pisar", "piscina", "piso", "pista",
40605 "pitón", "pizca", "placa", "plan", "plata", "playa", "plaza", "pleito", "pleno", "plomo",
40606 "pluma", "plural", "pobre", "poco", "poder", "podio", "poema", "poesía", "poeta", "polen",
40607 "policía", "pollo", "polvo", "pomada", "pomelo", "pomo", "pompa", "poner", "porción", "portal",
40608 "posada", "poseer", "posible", "poste", "potencia", "potro", "pozo", "prado", "precoz", "pregunta",
40609 "premio", "prensa", "preso", "previo", "primo", "príncipe", "prisión", "privar", "proa", "probar",
40610 "proceso", "producto", "proeza", "profesor", "programa", "prole", "promesa", "pronto", "propio", "próximo",
40611 "prueba", "público", "puchero", "pudor", "pueblo", "puerta", "puesto", "pulga", "pulir", "pulmón",
40612 "pulpo", "pulso", "puma", "punto", "puñal", "puño", "pupa", "pupila", "puré", "quedar",
40613 "queja", "quemar", "querer", "queso", "quieto", "química", "quince", "quitar", "rábano", "rabia",
40614 "rabo", "ración", "radical", "raíz", "rama", "rampa", "rancho", "rango", "rapaz", "rápido",
40615 "rapto", "rasgo", "raspa", "rato", "rayo", "raza", "razón", "reacción", "realidad", "rebaño",
40616 "rebote", "recaer", "receta", "rechazo", "recoger", "recreo", "recto", "recurso", "red", "redondo",
40617 "reducir", "reflejo", "reforma", "refrán", "refugio", "regalo", "regir", "regla", "regreso", "rehén",
40618 "reino", "reír", "reja", "relato", "relevo", "relieve", "relleno", "reloj", "remar", "remedio",
40619 "remo", "rencor", "rendir", "renta", "reparto", "repetir", "reposo", "reptil", "res", "rescate",
40620 "resina", "respeto", "resto", "resumen", "retiro", "retorno", "retrato", "reunir", "revés", "revista",
40621 "rey", "rezar", "rico", "riego", "rienda", "riesgo", "rifa", "rígido", "rigor", "rincón",
40622 "riñón", "río", "riqueza", "risa", "ritmo", "rito", "rizo", "roble", "roce", "rociar",
40623 "rodar", "rodeo", "rodilla", "roer", "rojizo", "rojo", "romero", "romper", "ron", "ronco",
40624 "ronda", "ropa", "ropero", "rosa", "rosca", "rostro", "rotar", "rubí", "rubor", "rudo",
40625 "rueda", "rugir", "ruido", "ruina", "ruleta", "rulo", "rumbo", "rumor", "ruptura", "ruta",
40626 "rutina", "sábado", "saber", "sabio", "sable", "sacar", "sagaz", "sagrado", "sala", "saldo",
40627 "salero", "salir", "salmón", "salón", "salsa", "salto", "salud", "salvar", "samba", "sanción",
40628 "sandía", "sanear", "sangre", "sanidad", "sano", "santo", "sapo", "saque", "sardina", "sartén",
40629 "sastre", "satán", "sauna", "saxofón", "sección", "seco", "secreto", "secta", "sed", "seguir",
40630 "seis", "sello", "selva", "semana", "semilla", "senda", "sensor", "señal", "señor", "separar",
40631 "sepia", "sequía", "ser", "serie", "sermón", "servir", "sesenta", "sesión", "seta", "setenta",
40632 "severo", "sexo", "sexto", "sidra", "siesta", "siete", "siglo", "signo", "sílaba", "silbar",
40633 "silencio", "silla", "símbolo", "simio", "sirena", "sistema", "sitio", "situar", "sobre", "socio",
40634 "sodio", "sol", "solapa", "soldado", "soledad", "sólido", "soltar", "solución", "sombra", "sondeo",
40635 "sonido", "sonoro", "sonrisa", "sopa", "soplar", "soporte", "sordo", "sorpresa", "sorteo", "sostén",
40636 "sótano", "suave", "subir", "suceso", "sudor", "suegra", "suelo", "sueño", "suerte", "sufrir",
40637 "sujeto", "sultán", "sumar", "superar", "suplir", "suponer", "supremo", "sur", "surco", "sureño",
40638 "surgir", "susto", "sutil", "tabaco", "tabique", "tabla", "tabú", "taco", "tacto", "tajo",
40639 "talar", "talco", "talento", "talla", "talón", "tamaño", "tambor", "tango", "tanque", "tapa",
40640 "tapete", "tapia", "tapón", "taquilla", "tarde", "tarea", "tarifa", "tarjeta", "tarot", "tarro",
40641 "tarta", "tatuaje", "tauro", "taza", "tazón", "teatro", "techo", "tecla", "técnica", "tejado",
40642 "tejer", "tejido", "tela", "teléfono", "tema", "temor", "templo", "tenaz", "tender", "tener",
40643 "tenis", "tenso", "teoría", "terapia", "terco", "término", "ternura", "terror", "tesis", "tesoro",
40644 "testigo", "tetera", "texto", "tez", "tibio", "tiburón", "tiempo", "tienda", "tierra", "tieso",
40645 "tigre", "tijera", "tilde", "timbre", "tímido", "timo", "tinta", "tío", "típico", "tipo",
40646 "tira", "tirón", "titán", "títere", "título", "tiza", "toalla", "tobillo", "tocar", "tocino",
40647 "todo", "toga", "toldo", "tomar", "tono", "tonto", "topar", "tope", "toque", "tórax",
40648 "torero", "tormenta", "torneo", "toro", "torpedo", "torre", "torso", "tortuga", "tos", "tosco",
40649 "toser", "tóxico", "trabajo", "tractor", "traer", "tráfico", "trago", "traje", "tramo", "trance",
40650 "trato", "trauma", "trazar", "trébol", "tregua", "treinta", "tren", "trepar", "tres", "tribu",
40651 "trigo", "tripa", "triste", "triunfo", "trofeo", "trompa", "tronco", "tropa", "trote", "trozo",
40652 "truco", "trueno", "trufa", "tubería", "tubo", "tuerto", "tumba", "tumor", "túnel", "túnica",
40653 "turbina", "turismo", "turno", "tutor", "ubicar", "úlcera", "umbral", "unidad", "unir", "universo",
40654 "uno", "untar", "uña", "urbano", "urbe", "urgente", "urna", "usar", "usuario", "útil",
40655 "utopía", "uva", "vaca", "vacío", "vacuna", "vagar", "vago", "vaina", "vajilla", "vale",
40656 "válido", "valle", "valor", "válvula", "vampiro", "vara", "variar", "varón", "vaso", "vecino",
40657 "vector", "vehículo", "veinte", "vejez", "vela", "velero", "veloz", "vena", "vencer", "venda",
40658 "veneno", "vengar", "venir", "venta", "venus", "ver", "verano", "verbo", "verde", "vereda",
40659 "verja", "verso", "verter", "vía", "viaje", "vibrar", "vicio", "víctima", "vida", "vídeo",
40660 "vidrio", "viejo", "viernes", "vigor", "vil", "villa", "vinagre", "vino", "viñedo", "violín",
40661 "viral", "virgo", "virtud", "visor", "víspera", "vista", "vitamina", "viudo", "vivaz", "vivero",
40662 "vivir", "vivo", "volcán", "volumen", "volver", "voraz", "votar", "voto", "voz", "vuelo",
40663 "vulgar", "yacer", "yate", "yegua", "yema", "yerno", "yeso", "yodo", "yoga", "yogur",
40664 "zafiro", "zanja", "zapato", "zarza", "zona", "zorro", "zumo", "zurdo"]
40665 </script>
40666 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
40667 WORDLISTS["chinese_simplified"] = [
40668 "的", "一", "是", "在", "不", "了", "有", "和", "人", "这",
40669 "中", "大", "为", "上", "个", "国", "我", "以", "要", "他",
40670 "时", "来", "用", "们", "生", "到", "作", "地", "于", "出",
40671 "就", "分", "对", "成", "会", "可", "主", "发", "年", "动",
40672 "同", "工", "也", "能", "下", "过", "子", "说", "产", "种",
40673 "面", "而", "方", "后", "多", "定", "行", "学", "法", "所",
40674 "民", "得", "经", "十", "三", "之", "进", "着", "等", "部",
40675 "度", "家", "电", "力", "里", "如", "水", "化", "高", "自",
40676 "二", "理", "起", "小", "物", "现", "实", "加", "量", "都",
40677 "两", "体", "制", "机", "当", "使", "点", "从", "业", "本",
40678 "去", "把", "性", "好", "应", "开", "它", "合", "还", "因",
40679 "由", "其", "些", "然", "前", "外", "天", "政", "四", "日",
40680 "那", "社", "义", "事", "平", "形", "相", "全", "表", "间",
40681 "样", "与", "关", "各", "重", "新", "线", "内", "数", "正",
40682 "心", "反", "你", "明", "看", "原", "又", "么", "利", "比",
40683 "或", "但", "质", "气", "第", "向", "道", "命", "此", "变",
40684 "条", "只", "没", "结", "解", "问", "意", "建", "月", "公",
40685 "无", "系", "军", "很", "情", "者", "最", "立", "代", "想",
40686 "已", "通", "并", "提", "直", "题", "党", "程", "展", "五",
40687 "果", "料", "象", "员", "革", "位", "入", "常", "文", "总",
40688 "次", "品", "式", "活", "设", "及", "管", "特", "件", "长",
40689 "求", "老", "头", "基", "资", "边", "流", "路", "级", "少",
40690 "图", "山", "统", "接", "知", "较", "将", "组", "见", "计",
40691 "别", "她", "手", "角", "期", "根", "论", "运", "农", "指",
40692 "几", "九", "区", "强", "放", "决", "西", "被", "干", "做",
40693 "必", "战", "先", "回", "则", "任", "取", "据", "处", "队",
40694 "南", "给", "色", "光", "门", "即", "保", "治", "北", "造",
40695 "百", "规", "热", "领", "七", "海", "口", "东", "导", "器",
40696 "压", "志", "世", "金", "增", "争", "济", "阶", "油", "思",
40697 "术", "极", "交", "受", "联", "什", "认", "六", "共", "权",
40698 "收", "证", "改", "清", "美", "再", "采", "转", "更", "单",
40699 "风", "切", "打", "白", "教", "速", "花", "带", "安", "场",
40700 "身", "车", "例", "真", "务", "具", "万", "每", "目", "至",
40701 "达", "走", "积", "示", "议", "声", "报", "斗", "完", "类",
40702 "八", "离", "华", "名", "确", "才", "科", "张", "信", "马",
40703 "节", "话", "米", "整", "空", "元", "况", "今", "集", "温",
40704 "传", "土", "许", "步", "群", "广", "石", "记", "需", "段",
40705 "研", "界", "拉", "林", "律", "叫", "且", "究", "观", "越",
40706 "织", "装", "影", "算", "低", "持", "音", "众", "书", "布",
40707 "复", "容", "儿", "须", "际", "商", "非", "验", "连", "断",
40708 "深", "难", "近", "矿", "千", "周", "委", "素", "技", "备",
40709 "半", "办", "青", "省", "列", "习", "响", "约", "支", "般",
40710 "史", "感", "劳", "便", "团", "往", "酸", "历", "市", "克",
40711 "何", "除", "消", "构", "府", "称", "太", "准", "精", "值",
40712 "号", "率", "族", "维", "划", "选", "标", "写", "存", "候",
40713 "毛", "亲", "快", "效", "斯", "院", "查", "江", "型", "眼",
40714 "王", "按", "格", "养", "易", "置", "派", "层", "片", "始",
40715 "却", "专", "状", "育", "厂", "京", "识", "适", "属", "圆",
40716 "包", "火", "住", "调", "满", "县", "局", "照", "参", "红",
40717 "细", "引", "听", "该", "铁", "价", "严", "首", "底", "液",
40718 "官", "德", "随", "病", "苏", "失", "尔", "死", "讲", "配",
40719 "女", "黄", "推", "显", "谈", "罪", "神", "艺", "呢", "席",
40720 "含", "企", "望", "密", "批", "营", "项", "防", "举", "球",
40721 "英", "氧", "势", "告", "李", "台", "落", "木", "帮", "轮",
40722 "破", "亚", "师", "围", "注", "远", "字", "材", "排", "供",
40723 "河", "态", "封", "另", "施", "减", "树", "溶", "怎", "止",
40724 "案", "言", "士", "均", "武", "固", "叶", "鱼", "波", "视",
40725 "仅", "费", "紧", "爱", "左", "章", "早", "朝", "害", "续",
40726 "轻", "服", "试", "食", "充", "兵", "源", "判", "护", "司",
40727 "足", "某", "练", "差", "致", "板", "田", "降", "黑", "犯",
40728 "负", "击", "范", "继", "兴", "似", "余", "坚", "曲", "输",
40729 "修", "故", "城", "夫", "够", "送", "笔", "船", "占", "右",
40730 "财", "吃", "富", "春", "职", "觉", "汉", "画", "功", "巴",
40731 "跟", "虽", "杂", "飞", "检", "吸", "助", "升", "阳", "互",
40732 "初", "创", "抗", "考", "投", "坏", "策", "古", "径", "换",
40733 "未", "跑", "留", "钢", "曾", "端", "责", "站", "简", "述",
40734 "钱", "副", "尽", "帝", "射", "草", "冲", "承", "独", "令",
40735 "限", "阿", "宣", "环", "双", "请", "超", "微", "让", "控",
40736 "州", "良", "轴", "找", "否", "纪", "益", "依", "优", "顶",
40737 "础", "载", "倒", "房", "突", "坐", "粉", "敌", "略", "客",
40738 "袁", "冷", "胜", "绝", "析", "块", "剂", "测", "丝", "协",
40739 "诉", "念", "陈", "仍", "罗", "盐", "友", "洋", "错", "苦",
40740 "夜", "刑", "移", "频", "逐", "靠", "混", "母", "短", "皮",
40741 "终", "聚", "汽", "村", "云", "哪", "既", "距", "卫", "停",
40742 "烈", "央", "察", "烧", "迅", "境", "若", "印", "洲", "刻",
40743 "括", "激", "孔", "搞", "甚", "室", "待", "核", "校", "散",
40744 "侵", "吧", "甲", "游", "久", "菜", "味", "旧", "模", "湖",
40745 "货", "损", "预", "阻", "毫", "普", "稳", "乙", "妈", "植",
40746 "息", "扩", "银", "语", "挥", "酒", "守", "拿", "序", "纸",
40747 "医", "缺", "雨", "吗", "针", "刘", "啊", "急", "唱", "误",
40748 "训", "愿", "审", "附", "获", "茶", "鲜", "粮", "斤", "孩",
40749 "脱", "硫", "肥", "善", "龙", "演", "父", "渐", "血", "欢",
40750 "械", "掌", "歌", "沙", "刚", "攻", "谓", "盾", "讨", "晚",
40751 "粒", "乱", "燃", "矛", "乎", "杀", "药", "宁", "鲁", "贵",
40752 "钟", "煤", "读", "班", "伯", "香", "介", "迫", "句", "丰",
40753 "培", "握", "兰", "担", "弦", "蛋", "沉", "假", "穿", "执",
40754 "答", "乐", "谁", "顺", "烟", "缩", "征", "脸", "喜", "松",
40755 "脚", "困", "异", "免", "背", "星", "福", "买", "染", "井",
40756 "概", "慢", "怕", "磁", "倍", "祖", "皇", "促", "静", "补",
40757 "评", "翻", "肉", "践", "尼", "衣", "宽", "扬", "棉", "希",
40758 "伤", "操", "垂", "秋", "宜", "氢", "套", "督", "振", "架",
40759 "亮", "末", "宪", "庆", "编", "牛", "触", "映", "雷", "销",
40760 "诗", "座", "居", "抓", "裂", "胞", "呼", "娘", "景", "威",
40761 "绿", "晶", "厚", "盟", "衡", "鸡", "孙", "延", "危", "胶",
40762 "屋", "乡", "临", "陆", "顾", "掉", "呀", "灯", "岁", "措",
40763 "束", "耐", "剧", "玉", "赵", "跳", "哥", "季", "课", "凯",
40764 "胡", "额", "款", "绍", "卷", "齐", "伟", "蒸", "殖", "永",
40765 "宗", "苗", "川", "炉", "岩", "弱", "零", "杨", "奏", "沿",
40766 "露", "杆", "探", "滑", "镇", "饭", "浓", "航", "怀", "赶",
40767 "库", "夺", "伊", "灵", "税", "途", "灭", "赛", "归", "召",
40768 "鼓", "播", "盘", "裁", "险", "康", "唯", "录", "菌", "纯",
40769 "借", "糖", "盖", "横", "符", "私", "努", "堂", "域", "枪",
40770 "润", "幅", "哈", "竟", "熟", "虫", "泽", "脑", "壤", "碳",
40771 "欧", "遍", "侧", "寨", "敢", "彻", "虑", "斜", "薄", "庭",
40772 "纳", "弹", "饲", "伸", "折", "麦", "湿", "暗", "荷", "瓦",
40773 "塞", "床", "筑", "恶", "户", "访", "塔", "奇", "透", "梁",
40774 "刀", "旋", "迹", "卡", "氯", "遇", "份", "毒", "泥", "退",
40775 "洗", "摆", "灰", "彩", "卖", "耗", "夏", "择", "忙", "铜",
40776 "献", "硬", "予", "繁", "圈", "雪", "函", "亦", "抽", "篇",
40777 "阵", "阴", "丁", "尺", "追", "堆", "雄", "迎", "泛", "爸",
40778 "楼", "避", "谋", "吨", "野", "猪", "旗", "累", "偏", "典",
40779 "馆", "索", "秦", "脂", "潮", "爷", "豆", "忽", "托", "惊",
40780 "塑", "遗", "愈", "朱", "替", "纤", "粗", "倾", "尚", "痛",
40781 "楚", "谢", "奋", "购", "磨", "君", "池", "旁", "碎", "骨",
40782 "监", "捕", "弟", "暴", "割", "贯", "殊", "释", "词", "亡",
40783 "壁", "顿", "宝", "午", "尘", "闻", "揭", "炮", "残", "冬",
40784 "桥", "妇", "警", "综", "招", "吴", "付", "浮", "遭", "徐",
40785 "您", "摇", "谷", "赞", "箱", "隔", "订", "男", "吹", "园",
40786 "纷", "唐", "败", "宋", "玻", "巨", "耕", "坦", "荣", "闭",
40787 "湾", "键", "凡", "驻", "锅", "救", "恩", "剥", "凝", "碱",
40788 "齿", "截", "炼", "麻", "纺", "禁", "废", "盛", "版", "缓",
40789 "净", "睛", "昌", "婚", "涉", "筒", "嘴", "插", "岸", "朗",
40790 "庄", "街", "藏", "姑", "贸", "腐", "奴", "啦", "惯", "乘",
40791 "伙", "恢", "匀", "纱", "扎", "辩", "耳", "彪", "臣", "亿",
40792 "璃", "抵", "脉", "秀", "萨", "俄", "网", "舞", "店", "喷",
40793 "纵", "寸", "汗", "挂", "洪", "贺", "闪", "柬", "爆", "烯",
40794 "津", "稻", "墙", "软", "勇", "像", "滚", "厘", "蒙", "芳",
40795 "肯", "坡", "柱", "荡", "腿", "仪", "旅", "尾", "轧", "冰",
40796 "贡", "登", "黎", "削", "钻", "勒", "逃", "障", "氨", "郭",
40797 "峰", "币", "港", "伏", "轨", "亩", "毕", "擦", "莫", "刺",
40798 "浪", "秘", "援", "株", "健", "售", "股", "岛", "甘", "泡",
40799 "睡", "童", "铸", "汤", "阀", "休", "汇", "舍", "牧", "绕",
40800 "炸", "哲", "磷", "绩", "朋", "淡", "尖", "启", "陷", "柴",
40801 "呈", "徒", "颜", "泪", "稍", "忘", "泵", "蓝", "拖", "洞",
40802 "授", "镜", "辛", "壮", "锋", "贫", "虚", "弯", "摩", "泰",
40803 "幼", "廷", "尊", "窗", "纲", "弄", "隶", "疑", "氏", "宫",
40804 "姐", "震", "瑞", "怪", "尤", "琴", "循", "描", "膜", "违",
40805 "夹", "腰", "缘", "珠", "穷", "森", "枝", "竹", "沟", "催",
40806 "绳", "忆", "邦", "剩", "幸", "浆", "栏", "拥", "牙", "贮",
40807 "礼", "滤", "钠", "纹", "罢", "拍", "咱", "喊", "袖", "埃",
40808 "勤", "罚", "焦", "潜", "伍", "墨", "欲", "缝", "姓", "刊",
40809 "饱", "仿", "奖", "铝", "鬼", "丽", "跨", "默", "挖", "链",
40810 "扫", "喝", "袋", "炭", "污", "幕", "诸", "弧", "励", "梅",
40811 "奶", "洁", "灾", "舟", "鉴", "苯", "讼", "抱", "毁", "懂",
40812 "寒", "智", "埔", "寄", "届", "跃", "渡", "挑", "丹", "艰",
40813 "贝", "碰", "拔", "爹", "戴", "码", "梦", "芽", "熔", "赤",
40814 "渔", "哭", "敬", "颗", "奔", "铅", "仲", "虎", "稀", "妹",
40815 "乏", "珍", "申", "桌", "遵", "允", "隆", "螺", "仓", "魏",
40816 "锐", "晓", "氮", "兼", "隐", "碍", "赫", "拨", "忠", "肃",
40817 "缸", "牵", "抢", "博", "巧", "壳", "兄", "杜", "讯", "诚",
40818 "碧", "祥", "柯", "页", "巡", "矩", "悲", "灌", "龄", "伦",
40819 "票", "寻", "桂", "铺", "圣", "恐", "恰", "郑", "趣", "抬",
40820 "荒", "腾", "贴", "柔", "滴", "猛", "阔", "辆", "妻", "填",
40821 "撤", "储", "签", "闹", "扰", "紫", "砂", "递", "戏", "吊",
40822 "陶", "伐", "喂", "疗", "瓶", "婆", "抚", "臂", "摸", "忍",
40823 "虾", "蜡", "邻", "胸", "巩", "挤", "偶", "弃", "槽", "劲",
40824 "乳", "邓", "吉", "仁", "烂", "砖", "租", "乌", "舰", "伴",
40825 "瓜", "浅", "丙", "暂", "燥", "橡", "柳", "迷", "暖", "牌",
40826 "秧", "胆", "详", "簧", "踏", "瓷", "谱", "呆", "宾", "糊",
40827 "洛", "辉", "愤", "竞", "隙", "怒", "粘", "乃", "绪", "肩",
40828 "籍", "敏", "涂", "熙", "皆", "侦", "悬", "掘", "享", "纠",
40829 "醒", "狂", "锁", "淀", "恨", "牲", "霸", "爬", "赏", "逆",
40830 "玩", "陵", "祝", "秒", "浙", "貌", "役", "彼", "悉", "鸭",
40831 "趋", "凤", "晨", "畜", "辈", "秩", "卵", "署", "梯", "炎",
40832 "滩", "棋", "驱", "筛", "峡", "冒", "啥", "寿", "译", "浸",
40833 "泉", "帽", "迟", "硅", "疆", "贷", "漏", "稿", "冠", "嫩",
40834 "胁", "芯", "牢", "叛", "蚀", "奥", "鸣", "岭", "羊", "凭",
40835 "串", "塘", "绘", "酵", "融", "盆", "锡", "庙", "筹", "冻",
40836 "辅", "摄", "袭", "筋", "拒", "僚", "旱", "钾", "鸟", "漆",
40837 "沈", "眉", "疏", "添", "棒", "穗", "硝", "韩", "逼", "扭",
40838 "侨", "凉", "挺", "碗", "栽", "炒", "杯", "患", "馏", "劝",
40839 "豪", "辽", "勃", "鸿", "旦", "吏", "拜", "狗", "埋", "辊",
40840 "掩", "饮", "搬", "骂", "辞", "勾", "扣", "估", "蒋", "绒",
40841 "雾", "丈", "朵", "姆", "拟", "宇", "辑", "陕", "雕", "偿",
40842 "蓄", "崇", "剪", "倡", "厅", "咬", "驶", "薯", "刷", "斥",
40843 "番", "赋", "奉", "佛", "浇", "漫", "曼", "扇", "钙", "桃",
40844 "扶", "仔", "返", "俗", "亏", "腔", "鞋", "棱", "覆", "框",
40845 "悄", "叔", "撞", "骗", "勘", "旺", "沸", "孤", "吐", "孟",
40846 "渠", "屈", "疾", "妙", "惜", "仰", "狠", "胀", "谐", "抛",
40847 "霉", "桑", "岗", "嘛", "衰", "盗", "渗", "脏", "赖", "涌",
40848 "甜", "曹", "阅", "肌", "哩", "厉", "烃", "纬", "毅", "昨",
40849 "伪", "症", "煮", "叹", "钉", "搭", "茎", "笼", "酷", "偷",
40850 "弓", "锥", "恒", "杰", "坑", "鼻", "翼", "纶", "叙", "狱",
40851 "逮", "罐", "络", "棚", "抑", "膨", "蔬", "寺", "骤", "穆",
40852 "冶", "枯", "册", "尸", "凸", "绅", "坯", "牺", "焰", "轰",
40853 "欣", "晋", "瘦", "御", "锭", "锦", "丧", "旬", "锻", "垄",
40854 "搜", "扑", "邀", "亭", "酯", "迈", "舒", "脆", "酶", "闲",
40855 "忧", "酚", "顽", "羽", "涨", "卸", "仗", "陪", "辟", "惩",
40856 "杭", "姚", "肚", "捉", "飘", "漂", "昆", "欺", "吾", "郎",
40857 "烷", "汁", "呵", "饰", "萧", "雅", "邮", "迁", "燕", "撒",
40858 "姻", "赴", "宴", "烦", "债", "帐", "斑", "铃", "旨", "醇",
40859 "董", "饼", "雏", "姿", "拌", "傅", "腹", "妥", "揉", "贤",
40860 "拆", "歪", "葡", "胺", "丢", "浩", "徽", "昂", "垫", "挡",
40861 "览", "贪", "慰", "缴", "汪", "慌", "冯", "诺", "姜", "谊",
40862 "凶", "劣", "诬", "耀", "昏", "躺", "盈", "骑", "乔", "溪",
40863 "丛", "卢", "抹", "闷", "咨", "刮", "驾", "缆", "悟", "摘",
40864 "铒", "掷", "颇", "幻", "柄", "惠", "惨", "佳", "仇", "腊",
40865 "窝", "涤", "剑", "瞧", "堡", "泼", "葱", "罩", "霍", "捞",
40866 "胎", "苍", "滨", "俩", "捅", "湘", "砍", "霞", "邵", "萄",
40867 "疯", "淮", "遂", "熊", "粪", "烘", "宿", "档", "戈", "驳",
40868 "嫂", "裕", "徙", "箭", "捐", "肠", "撑", "晒", "辨", "殿",
40869 "莲", "摊", "搅", "酱", "屏", "疫", "哀", "蔡", "堵", "沫",
40870 "皱", "畅", "叠", "阁", "莱", "敲", "辖", "钩", "痕", "坝",
40871 "巷", "饿", "祸", "丘", "玄", "溜", "曰", "逻", "彭", "尝",
40872 "卿", "妨", "艇", "吞", "韦", "怨", "矮", "歇" ]
40873 </script>
40874 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
40875 WORDLISTS["chinese_traditional"] = [
40876 "的", "一", "是", "在", "不", "了", "有", "和", "人", "這",
40877 "中", "大", "為", "上", "個", "國", "我", "以", "要", "他",
40878 "時", "來", "用", "們", "生", "到", "作", "地", "於", "出",
40879 "就", "分", "對", "成", "會", "可", "主", "發", "年", "動",
40880 "同", "工", "也", "能", "下", "過", "子", "說", "產", "種",
40881 "面", "而", "方", "後", "多", "定", "行", "學", "法", "所",
40882 "民", "得", "經", "十", "三", "之", "進", "著", "等", "部",
40883 "度", "家", "電", "力", "裡", "如", "水", "化", "高", "自",
40884 "二", "理", "起", "小", "物", "現", "實", "加", "量", "都",
40885 "兩", "體", "制", "機", "當", "使", "點", "從", "業", "本",
40886 "去", "把", "性", "好", "應", "開", "它", "合", "還", "因",
40887 "由", "其", "些", "然", "前", "外", "天", "政", "四", "日",
40888 "那", "社", "義", "事", "平", "形", "相", "全", "表", "間",
40889 "樣", "與", "關", "各", "重", "新", "線", "內", "數", "正",
40890 "心", "反", "你", "明", "看", "原", "又", "麼", "利", "比",
40891 "或", "但", "質", "氣", "第", "向", "道", "命", "此", "變",
40892 "條", "只", "沒", "結", "解", "問", "意", "建", "月", "公",
40893 "無", "系", "軍", "很", "情", "者", "最", "立", "代", "想",
40894 "已", "通", "並", "提", "直", "題", "黨", "程", "展", "五",
40895 "果", "料", "象", "員", "革", "位", "入", "常", "文", "總",
40896 "次", "品", "式", "活", "設", "及", "管", "特", "件", "長",
40897 "求", "老", "頭", "基", "資", "邊", "流", "路", "級", "少",
40898 "圖", "山", "統", "接", "知", "較", "將", "組", "見", "計",
40899 "別", "她", "手", "角", "期", "根", "論", "運", "農", "指",
40900 "幾", "九", "區", "強", "放", "決", "西", "被", "幹", "做",
40901 "必", "戰", "先", "回", "則", "任", "取", "據", "處", "隊",
40902 "南", "給", "色", "光", "門", "即", "保", "治", "北", "造",
40903 "百", "規", "熱", "領", "七", "海", "口", "東", "導", "器",
40904 "壓", "志", "世", "金", "增", "爭", "濟", "階", "油", "思",
40905 "術", "極", "交", "受", "聯", "什", "認", "六", "共", "權",
40906 "收", "證", "改", "清", "美", "再", "採", "轉", "更", "單",
40907 "風", "切", "打", "白", "教", "速", "花", "帶", "安", "場",
40908 "身", "車", "例", "真", "務", "具", "萬", "每", "目", "至",
40909 "達", "走", "積", "示", "議", "聲", "報", "鬥", "完", "類",
40910 "八", "離", "華", "名", "確", "才", "科", "張", "信", "馬",
40911 "節", "話", "米", "整", "空", "元", "況", "今", "集", "溫",
40912 "傳", "土", "許", "步", "群", "廣", "石", "記", "需", "段",
40913 "研", "界", "拉", "林", "律", "叫", "且", "究", "觀", "越",
40914 "織", "裝", "影", "算", "低", "持", "音", "眾", "書", "布",
40915 "复", "容", "兒", "須", "際", "商", "非", "驗", "連", "斷",
40916 "深", "難", "近", "礦", "千", "週", "委", "素", "技", "備",
40917 "半", "辦", "青", "省", "列", "習", "響", "約", "支", "般",
40918 "史", "感", "勞", "便", "團", "往", "酸", "歷", "市", "克",
40919 "何", "除", "消", "構", "府", "稱", "太", "準", "精", "值",
40920 "號", "率", "族", "維", "劃", "選", "標", "寫", "存", "候",
40921 "毛", "親", "快", "效", "斯", "院", "查", "江", "型", "眼",
40922 "王", "按", "格", "養", "易", "置", "派", "層", "片", "始",
40923 "卻", "專", "狀", "育", "廠", "京", "識", "適", "屬", "圓",
40924 "包", "火", "住", "調", "滿", "縣", "局", "照", "參", "紅",
40925 "細", "引", "聽", "該", "鐵", "價", "嚴", "首", "底", "液",
40926 "官", "德", "隨", "病", "蘇", "失", "爾", "死", "講", "配",
40927 "女", "黃", "推", "顯", "談", "罪", "神", "藝", "呢", "席",
40928 "含", "企", "望", "密", "批", "營", "項", "防", "舉", "球",
40929 "英", "氧", "勢", "告", "李", "台", "落", "木", "幫", "輪",
40930 "破", "亞", "師", "圍", "注", "遠", "字", "材", "排", "供",
40931 "河", "態", "封", "另", "施", "減", "樹", "溶", "怎", "止",
40932 "案", "言", "士", "均", "武", "固", "葉", "魚", "波", "視",
40933 "僅", "費", "緊", "愛", "左", "章", "早", "朝", "害", "續",
40934 "輕", "服", "試", "食", "充", "兵", "源", "判", "護", "司",
40935 "足", "某", "練", "差", "致", "板", "田", "降", "黑", "犯",
40936 "負", "擊", "范", "繼", "興", "似", "餘", "堅", "曲", "輸",
40937 "修", "故", "城", "夫", "夠", "送", "筆", "船", "佔", "右",
40938 "財", "吃", "富", "春", "職", "覺", "漢", "畫", "功", "巴",
40939 "跟", "雖", "雜", "飛", "檢", "吸", "助", "昇", "陽", "互",
40940 "初", "創", "抗", "考", "投", "壞", "策", "古", "徑", "換",
40941 "未", "跑", "留", "鋼", "曾", "端", "責", "站", "簡", "述",
40942 "錢", "副", "盡", "帝", "射", "草", "衝", "承", "獨", "令",
40943 "限", "阿", "宣", "環", "雙", "請", "超", "微", "讓", "控",
40944 "州", "良", "軸", "找", "否", "紀", "益", "依", "優", "頂",
40945 "礎", "載", "倒", "房", "突", "坐", "粉", "敵", "略", "客",
40946 "袁", "冷", "勝", "絕", "析", "塊", "劑", "測", "絲", "協",
40947 "訴", "念", "陳", "仍", "羅", "鹽", "友", "洋", "錯", "苦",
40948 "夜", "刑", "移", "頻", "逐", "靠", "混", "母", "短", "皮",
40949 "終", "聚", "汽", "村", "雲", "哪", "既", "距", "衛", "停",
40950 "烈", "央", "察", "燒", "迅", "境", "若", "印", "洲", "刻",
40951 "括", "激", "孔", "搞", "甚", "室", "待", "核", "校", "散",
40952 "侵", "吧", "甲", "遊", "久", "菜", "味", "舊", "模", "湖",
40953 "貨", "損", "預", "阻", "毫", "普", "穩", "乙", "媽", "植",
40954 "息", "擴", "銀", "語", "揮", "酒", "守", "拿", "序", "紙",
40955 "醫", "缺", "雨", "嗎", "針", "劉", "啊", "急", "唱", "誤",
40956 "訓", "願", "審", "附", "獲", "茶", "鮮", "糧", "斤", "孩",
40957 "脫", "硫", "肥", "善", "龍", "演", "父", "漸", "血", "歡",
40958 "械", "掌", "歌", "沙", "剛", "攻", "謂", "盾", "討", "晚",
40959 "粒", "亂", "燃", "矛", "乎", "殺", "藥", "寧", "魯", "貴",
40960 "鐘", "煤", "讀", "班", "伯", "香", "介", "迫", "句", "豐",
40961 "培", "握", "蘭", "擔", "弦", "蛋", "沉", "假", "穿", "執",
40962 "答", "樂", "誰", "順", "煙", "縮", "徵", "臉", "喜", "松",
40963 "腳", "困", "異", "免", "背", "星", "福", "買", "染", "井",
40964 "概", "慢", "怕", "磁", "倍", "祖", "皇", "促", "靜", "補",
40965 "評", "翻", "肉", "踐", "尼", "衣", "寬", "揚", "棉", "希",
40966 "傷", "操", "垂", "秋", "宜", "氫", "套", "督", "振", "架",
40967 "亮", "末", "憲", "慶", "編", "牛", "觸", "映", "雷", "銷",
40968 "詩", "座", "居", "抓", "裂", "胞", "呼", "娘", "景", "威",
40969 "綠", "晶", "厚", "盟", "衡", "雞", "孫", "延", "危", "膠",
40970 "屋", "鄉", "臨", "陸", "顧", "掉", "呀", "燈", "歲", "措",
40971 "束", "耐", "劇", "玉", "趙", "跳", "哥", "季", "課", "凱",
40972 "胡", "額", "款", "紹", "卷", "齊", "偉", "蒸", "殖", "永",
40973 "宗", "苗", "川", "爐", "岩", "弱", "零", "楊", "奏", "沿",
40974 "露", "桿", "探", "滑", "鎮", "飯", "濃", "航", "懷", "趕",
40975 "庫", "奪", "伊", "靈", "稅", "途", "滅", "賽", "歸", "召",
40976 "鼓", "播", "盤", "裁", "險", "康", "唯", "錄", "菌", "純",
40977 "借", "糖", "蓋", "橫", "符", "私", "努", "堂", "域", "槍",
40978 "潤", "幅", "哈", "竟", "熟", "蟲", "澤", "腦", "壤", "碳",
40979 "歐", "遍", "側", "寨", "敢", "徹", "慮", "斜", "薄", "庭",
40980 "納", "彈", "飼", "伸", "折", "麥", "濕", "暗", "荷", "瓦",
40981 "塞", "床", "築", "惡", "戶", "訪", "塔", "奇", "透", "梁",
40982 "刀", "旋", "跡", "卡", "氯", "遇", "份", "毒", "泥", "退",
40983 "洗", "擺", "灰", "彩", "賣", "耗", "夏", "擇", "忙", "銅",
40984 "獻", "硬", "予", "繁", "圈", "雪", "函", "亦", "抽", "篇",
40985 "陣", "陰", "丁", "尺", "追", "堆", "雄", "迎", "泛", "爸",
40986 "樓", "避", "謀", "噸", "野", "豬", "旗", "累", "偏", "典",
40987 "館", "索", "秦", "脂", "潮", "爺", "豆", "忽", "托", "驚",
40988 "塑", "遺", "愈", "朱", "替", "纖", "粗", "傾", "尚", "痛",
40989 "楚", "謝", "奮", "購", "磨", "君", "池", "旁", "碎", "骨",
40990 "監", "捕", "弟", "暴", "割", "貫", "殊", "釋", "詞", "亡",
40991 "壁", "頓", "寶", "午", "塵", "聞", "揭", "炮", "殘", "冬",
40992 "橋", "婦", "警", "綜", "招", "吳", "付", "浮", "遭", "徐",
40993 "您", "搖", "谷", "贊", "箱", "隔", "訂", "男", "吹", "園",
40994 "紛", "唐", "敗", "宋", "玻", "巨", "耕", "坦", "榮", "閉",
40995 "灣", "鍵", "凡", "駐", "鍋", "救", "恩", "剝", "凝", "鹼",
40996 "齒", "截", "煉", "麻", "紡", "禁", "廢", "盛", "版", "緩",
40997 "淨", "睛", "昌", "婚", "涉", "筒", "嘴", "插", "岸", "朗",
40998 "莊", "街", "藏", "姑", "貿", "腐", "奴", "啦", "慣", "乘",
40999 "夥", "恢", "勻", "紗", "扎", "辯", "耳", "彪", "臣", "億",
41000 "璃", "抵", "脈", "秀", "薩", "俄", "網", "舞", "店", "噴",
41001 "縱", "寸", "汗", "掛", "洪", "賀", "閃", "柬", "爆", "烯",
41002 "津", "稻", "牆", "軟", "勇", "像", "滾", "厘", "蒙", "芳",
41003 "肯", "坡", "柱", "盪", "腿", "儀", "旅", "尾", "軋", "冰",
41004 "貢", "登", "黎", "削", "鑽", "勒", "逃", "障", "氨", "郭",
41005 "峰", "幣", "港", "伏", "軌", "畝", "畢", "擦", "莫", "刺",
41006 "浪", "秘", "援", "株", "健", "售", "股", "島", "甘", "泡",
41007 "睡", "童", "鑄", "湯", "閥", "休", "匯", "舍", "牧", "繞",
41008 "炸", "哲", "磷", "績", "朋", "淡", "尖", "啟", "陷", "柴",
41009 "呈", "徒", "顏", "淚", "稍", "忘", "泵", "藍", "拖", "洞",
41010 "授", "鏡", "辛", "壯", "鋒", "貧", "虛", "彎", "摩", "泰",
41011 "幼", "廷", "尊", "窗", "綱", "弄", "隸", "疑", "氏", "宮",
41012 "姐", "震", "瑞", "怪", "尤", "琴", "循", "描", "膜", "違",
41013 "夾", "腰", "緣", "珠", "窮", "森", "枝", "竹", "溝", "催",
41014 "繩", "憶", "邦", "剩", "幸", "漿", "欄", "擁", "牙", "貯",
41015 "禮", "濾", "鈉", "紋", "罷", "拍", "咱", "喊", "袖", "埃",
41016 "勤", "罰", "焦", "潛", "伍", "墨", "欲", "縫", "姓", "刊",
41017 "飽", "仿", "獎", "鋁", "鬼", "麗", "跨", "默", "挖", "鏈",
41018 "掃", "喝", "袋", "炭", "污", "幕", "諸", "弧", "勵", "梅",
41019 "奶", "潔", "災", "舟", "鑑", "苯", "訟", "抱", "毀", "懂",
41020 "寒", "智", "埔", "寄", "屆", "躍", "渡", "挑", "丹", "艱",
41021 "貝", "碰", "拔", "爹", "戴", "碼", "夢", "芽", "熔", "赤",
41022 "漁", "哭", "敬", "顆", "奔", "鉛", "仲", "虎", "稀", "妹",
41023 "乏", "珍", "申", "桌", "遵", "允", "隆", "螺", "倉", "魏",
41024 "銳", "曉", "氮", "兼", "隱", "礙", "赫", "撥", "忠", "肅",
41025 "缸", "牽", "搶", "博", "巧", "殼", "兄", "杜", "訊", "誠",
41026 "碧", "祥", "柯", "頁", "巡", "矩", "悲", "灌", "齡", "倫",
41027 "票", "尋", "桂", "鋪", "聖", "恐", "恰", "鄭", "趣", "抬",
41028 "荒", "騰", "貼", "柔", "滴", "猛", "闊", "輛", "妻", "填",
41029 "撤", "儲", "簽", "鬧", "擾", "紫", "砂", "遞", "戲", "吊",
41030 "陶", "伐", "餵", "療", "瓶", "婆", "撫", "臂", "摸", "忍",
41031 "蝦", "蠟", "鄰", "胸", "鞏", "擠", "偶", "棄", "槽", "勁",
41032 "乳", "鄧", "吉", "仁", "爛", "磚", "租", "烏", "艦", "伴",
41033 "瓜", "淺", "丙", "暫", "燥", "橡", "柳", "迷", "暖", "牌",
41034 "秧", "膽", "詳", "簧", "踏", "瓷", "譜", "呆", "賓", "糊",
41035 "洛", "輝", "憤", "競", "隙", "怒", "粘", "乃", "緒", "肩",
41036 "籍", "敏", "塗", "熙", "皆", "偵", "懸", "掘", "享", "糾",
41037 "醒", "狂", "鎖", "淀", "恨", "牲", "霸", "爬", "賞", "逆",
41038 "玩", "陵", "祝", "秒", "浙", "貌", "役", "彼", "悉", "鴨",
41039 "趨", "鳳", "晨", "畜", "輩", "秩", "卵", "署", "梯", "炎",
41040 "灘", "棋", "驅", "篩", "峽", "冒", "啥", "壽", "譯", "浸",
41041 "泉", "帽", "遲", "矽", "疆", "貸", "漏", "稿", "冠", "嫩",
41042 "脅", "芯", "牢", "叛", "蝕", "奧", "鳴", "嶺", "羊", "憑",
41043 "串", "塘", "繪", "酵", "融", "盆", "錫", "廟", "籌", "凍",
41044 "輔", "攝", "襲", "筋", "拒", "僚", "旱", "鉀", "鳥", "漆",
41045 "沈", "眉", "疏", "添", "棒", "穗", "硝", "韓", "逼", "扭",
41046 "僑", "涼", "挺", "碗", "栽", "炒", "杯", "患", "餾", "勸",
41047 "豪", "遼", "勃", "鴻", "旦", "吏", "拜", "狗", "埋", "輥",
41048 "掩", "飲", "搬", "罵", "辭", "勾", "扣", "估", "蔣", "絨",
41049 "霧", "丈", "朵", "姆", "擬", "宇", "輯", "陝", "雕", "償",
41050 "蓄", "崇", "剪", "倡", "廳", "咬", "駛", "薯", "刷", "斥",
41051 "番", "賦", "奉", "佛", "澆", "漫", "曼", "扇", "鈣", "桃",
41052 "扶", "仔", "返", "俗", "虧", "腔", "鞋", "棱", "覆", "框",
41053 "悄", "叔", "撞", "騙", "勘", "旺", "沸", "孤", "吐", "孟",
41054 "渠", "屈", "疾", "妙", "惜", "仰", "狠", "脹", "諧", "拋",
41055 "黴", "桑", "崗", "嘛", "衰", "盜", "滲", "臟", "賴", "湧",
41056 "甜", "曹", "閱", "肌", "哩", "厲", "烴", "緯", "毅", "昨",
41057 "偽", "症", "煮", "嘆", "釘", "搭", "莖", "籠", "酷", "偷",
41058 "弓", "錐", "恆", "傑", "坑", "鼻", "翼", "綸", "敘", "獄",
41059 "逮", "罐", "絡", "棚", "抑", "膨", "蔬", "寺", "驟", "穆",
41060 "冶", "枯", "冊", "屍", "凸", "紳", "坯", "犧", "焰", "轟",
41061 "欣", "晉", "瘦", "禦", "錠", "錦", "喪", "旬", "鍛", "壟",
41062 "搜", "撲", "邀", "亭", "酯", "邁", "舒", "脆", "酶", "閒",
41063 "憂", "酚", "頑", "羽", "漲", "卸", "仗", "陪", "闢", "懲",
41064 "杭", "姚", "肚", "捉", "飄", "漂", "昆", "欺", "吾", "郎",
41065 "烷", "汁", "呵", "飾", "蕭", "雅", "郵", "遷", "燕", "撒",
41066 "姻", "赴", "宴", "煩", "債", "帳", "斑", "鈴", "旨", "醇",
41067 "董", "餅", "雛", "姿", "拌", "傅", "腹", "妥", "揉", "賢",
41068 "拆", "歪", "葡", "胺", "丟", "浩", "徽", "昂", "墊", "擋",
41069 "覽", "貪", "慰", "繳", "汪", "慌", "馮", "諾", "姜", "誼",
41070 "兇", "劣", "誣", "耀", "昏", "躺", "盈", "騎", "喬", "溪",
41071 "叢", "盧", "抹", "悶", "諮", "刮", "駕", "纜", "悟", "摘",
41072 "鉺", "擲", "頗", "幻", "柄", "惠", "慘", "佳", "仇", "臘",
41073 "窩", "滌", "劍", "瞧", "堡", "潑", "蔥", "罩", "霍", "撈",
41074 "胎", "蒼", "濱", "倆", "捅", "湘", "砍", "霞", "邵", "萄",
41075 "瘋", "淮", "遂", "熊", "糞", "烘", "宿", "檔", "戈", "駁",
41076 "嫂", "裕", "徙", "箭", "捐", "腸", "撐", "曬", "辨", "殿",
41077 "蓮", "攤", "攪", "醬", "屏", "疫", "哀", "蔡", "堵", "沫",
41078 "皺", "暢", "疊", "閣", "萊", "敲", "轄", "鉤", "痕", "壩",
41079 "巷", "餓", "禍", "丘", "玄", "溜", "曰", "邏", "彭", "嘗",
41080 "卿", "妨", "艇", "吞", "韋", "怨", "矮", "歇" ]
41081 </script>
41082 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
41083 WORDLISTS["french"] = [
41084 "abaisser", "abandon", "abdiquer", "abeille", "abolir", "aborder", "aboutir", "aboyer", "abrasif", "abreuver",
41085 "abriter", "abroger", "abrupt", "absence", "absolu", "absurde", "abusif", "abyssal", "académie", "acajou",
41086 "acarien", "accabler", "accepter", "acclamer", "accolade", "accroche", "accuser", "acerbe", "achat", "acheter",
41087 "aciduler", "acier", "acompte", "acquérir", "acronyme", "acteur", "actif", "actuel", "adepte", "adéquat",
41088 "adhésif", "adjectif", "adjuger", "admettre", "admirer", "adopter", "adorer", "adoucir", "adresse", "adroit",
41089 "adulte", "adverbe", "aérer", "aéronef", "affaire", "affecter", "affiche", "affreux", "affubler", "agacer",
41090 "agencer", "agile", "agiter", "agrafer", "agréable", "agrume", "aider", "aiguille", "ailier", "aimable",
41091 "aisance", "ajouter", "ajuster", "alarmer", "alchimie", "alerte", "algèbre", "algue", "aliéner", "aliment",
41092 "alléger", "alliage", "allouer", "allumer", "alourdir", "alpaga", "altesse", "alvéole", "amateur", "ambigu",
41093 "ambre", "aménager", "amertume", "amidon", "amiral", "amorcer", "amour", "amovible", "amphibie", "ampleur",
41094 "amusant", "analyse", "anaphore", "anarchie", "anatomie", "ancien", "anéantir", "angle", "angoisse", "anguleux",
41095 "animal", "annexer", "annonce", "annuel", "anodin", "anomalie", "anonyme", "anormal", "antenne", "antidote",
41096 "anxieux", "apaiser", "apéritif", "aplanir", "apologie", "appareil", "appeler", "apporter", "appuyer", "aquarium",
41097 "aqueduc", "arbitre", "arbuste", "ardeur", "ardoise", "argent", "arlequin", "armature", "armement", "armoire",
41098 "armure", "arpenter", "arracher", "arriver", "arroser", "arsenic", "artériel", "article", "aspect", "asphalte",
41099 "aspirer", "assaut", "asservir", "assiette", "associer", "assurer", "asticot", "astre", "astuce", "atelier",
41100 "atome", "atrium", "atroce", "attaque", "attentif", "attirer", "attraper", "aubaine", "auberge", "audace",
41101 "audible", "augurer", "aurore", "automne", "autruche", "avaler", "avancer", "avarice", "avenir", "averse",
41102 "aveugle", "aviateur", "avide", "avion", "aviser", "avoine", "avouer", "avril", "axial", "axiome",
41103 "badge", "bafouer", "bagage", "baguette", "baignade", "balancer", "balcon", "baleine", "balisage", "bambin",
41104 "bancaire", "bandage", "banlieue", "bannière", "banquier", "barbier", "baril", "baron", "barque", "barrage",
41105 "bassin", "bastion", "bataille", "bateau", "batterie", "baudrier", "bavarder", "belette", "bélier", "belote",
41106 "bénéfice", "berceau", "berger", "berline", "bermuda", "besace", "besogne", "bétail", "beurre", "biberon",
41107 "bicycle", "bidule", "bijou", "bilan", "bilingue", "billard", "binaire", "biologie", "biopsie", "biotype",
41108 "biscuit", "bison", "bistouri", "bitume", "bizarre", "blafard", "blague", "blanchir", "blessant", "blinder",
41109 "blond", "bloquer", "blouson", "bobard", "bobine", "boire", "boiser", "bolide", "bonbon", "bondir",
41110 "bonheur", "bonifier", "bonus", "bordure", "borne", "botte", "boucle", "boueux", "bougie", "boulon",
41111 "bouquin", "bourse", "boussole", "boutique", "boxeur", "branche", "brasier", "brave", "brebis", "brèche",
41112 "breuvage", "bricoler", "brigade", "brillant", "brioche", "brique", "brochure", "broder", "bronzer", "brousse",
41113 "broyeur", "brume", "brusque", "brutal", "bruyant", "buffle", "buisson", "bulletin", "bureau", "burin",
41114 "bustier", "butiner", "butoir", "buvable", "buvette", "cabanon", "cabine", "cachette", "cadeau", "cadre",
41115 "caféine", "caillou", "caisson", "calculer", "calepin", "calibre", "calmer", "calomnie", "calvaire", "camarade",
41116 "caméra", "camion", "campagne", "canal", "caneton", "canon", "cantine", "canular", "capable", "caporal",
41117 "caprice", "capsule", "capter", "capuche", "carabine", "carbone", "caresser", "caribou", "carnage", "carotte",
41118 "carreau", "carton", "cascade", "casier", "casque", "cassure", "causer", "caution", "cavalier", "caverne",
41119 "caviar", "cédille", "ceinture", "céleste", "cellule", "cendrier", "censurer", "central", "cercle", "cérébral",
41120 "cerise", "cerner", "cerveau", "cesser", "chagrin", "chaise", "chaleur", "chambre", "chance", "chapitre",
41121 "charbon", "chasseur", "chaton", "chausson", "chavirer", "chemise", "chenille", "chéquier", "chercher", "cheval",
41122 "chien", "chiffre", "chignon", "chimère", "chiot", "chlorure", "chocolat", "choisir", "chose", "chouette",
41123 "chrome", "chute", "cigare", "cigogne", "cimenter", "cinéma", "cintrer", "circuler", "cirer", "cirque",
41124 "citerne", "citoyen", "citron", "civil", "clairon", "clameur", "claquer", "classe", "clavier", "client",
41125 "cligner", "climat", "clivage", "cloche", "clonage", "cloporte", "cobalt", "cobra", "cocasse", "cocotier",
41126 "coder", "codifier", "coffre", "cogner", "cohésion", "coiffer", "coincer", "colère", "colibri", "colline",
41127 "colmater", "colonel", "combat", "comédie", "commande", "compact", "concert", "conduire", "confier", "congeler",
41128 "connoter", "consonne", "contact", "convexe", "copain", "copie", "corail", "corbeau", "cordage", "corniche",
41129 "corpus", "correct", "cortège", "cosmique", "costume", "coton", "coude", "coupure", "courage", "couteau",
41130 "couvrir", "coyote", "crabe", "crainte", "cravate", "crayon", "créature", "créditer", "crémeux", "creuser",
41131 "crevette", "cribler", "crier", "cristal", "critère", "croire", "croquer", "crotale", "crucial", "cruel",
41132 "crypter", "cubique", "cueillir", "cuillère", "cuisine", "cuivre", "culminer", "cultiver", "cumuler", "cupide",
41133 "curatif", "curseur", "cyanure", "cycle", "cylindre", "cynique", "daigner", "damier", "danger", "danseur",
41134 "dauphin", "débattre", "débiter", "déborder", "débrider", "débutant", "décaler", "décembre", "déchirer", "décider",
41135 "déclarer", "décorer", "décrire", "décupler", "dédale", "déductif", "déesse", "défensif", "défiler", "défrayer",
41136 "dégager", "dégivrer", "déglutir", "dégrafer", "déjeuner", "délice", "déloger", "demander", "demeurer", "démolir",
41137 "dénicher", "dénouer", "dentelle", "dénuder", "départ", "dépenser", "déphaser", "déplacer", "déposer", "déranger",
41138 "dérober", "désastre", "descente", "désert", "désigner", "désobéir", "dessiner", "destrier", "détacher", "détester",
41139 "détourer", "détresse", "devancer", "devenir", "deviner", "devoir", "diable", "dialogue", "diamant", "dicter",
41140 "différer", "digérer", "digital", "digne", "diluer", "dimanche", "diminuer", "dioxyde", "directif", "diriger",
41141 "discuter", "disposer", "dissiper", "distance", "divertir", "diviser", "docile", "docteur", "dogme", "doigt",
41142 "domaine", "domicile", "dompter", "donateur", "donjon", "donner", "dopamine", "dortoir", "dorure", "dosage",
41143 "doseur", "dossier", "dotation", "douanier", "double", "douceur", "douter", "doyen", "dragon", "draper",
41144 "dresser", "dribbler", "droiture", "duperie", "duplexe", "durable", "durcir", "dynastie", "éblouir", "écarter",
41145 "écharpe", "échelle", "éclairer", "éclipse", "éclore", "écluse", "école", "économie", "écorce", "écouter",
41146 "écraser", "écrémer", "écrivain", "écrou", "écume", "écureuil", "édifier", "éduquer", "effacer", "effectif",
41147 "effigie", "effort", "effrayer", "effusion", "égaliser", "égarer", "éjecter", "élaborer", "élargir", "électron",
41148 "élégant", "éléphant", "élève", "éligible", "élitisme", "éloge", "élucider", "éluder", "emballer", "embellir",
41149 "embryon", "émeraude", "émission", "emmener", "émotion", "émouvoir", "empereur", "employer", "emporter", "emprise",
41150 "émulsion", "encadrer", "enchère", "enclave", "encoche", "endiguer", "endosser", "endroit", "enduire", "énergie",
41151 "enfance", "enfermer", "enfouir", "engager", "engin", "englober", "énigme", "enjamber", "enjeu", "enlever",
41152 "ennemi", "ennuyeux", "enrichir", "enrobage", "enseigne", "entasser", "entendre", "entier", "entourer", "entraver",
41153 "énumérer", "envahir", "enviable", "envoyer", "enzyme", "éolien", "épaissir", "épargne", "épatant", "épaule",
41154 "épicerie", "épidémie", "épier", "épilogue", "épine", "épisode", "épitaphe", "époque", "épreuve", "éprouver",
41155 "épuisant", "équerre", "équipe", "ériger", "érosion", "erreur", "éruption", "escalier", "espadon", "espèce",
41156 "espiègle", "espoir", "esprit", "esquiver", "essayer", "essence", "essieu", "essorer", "estime", "estomac",
41157 "estrade", "étagère", "étaler", "étanche", "étatique", "éteindre", "étendoir", "éternel", "éthanol", "éthique",
41158 "ethnie", "étirer", "étoffer", "étoile", "étonnant", "étourdir", "étrange", "étroit", "étude", "euphorie",
41159 "évaluer", "évasion", "éventail", "évidence", "éviter", "évolutif", "évoquer", "exact", "exagérer", "exaucer",
41160 "exceller", "excitant", "exclusif", "excuse", "exécuter", "exemple", "exercer", "exhaler", "exhorter", "exigence",
41161 "exiler", "exister", "exotique", "expédier", "explorer", "exposer", "exprimer", "exquis", "extensif", "extraire",
41162 "exulter", "fable", "fabuleux", "facette", "facile", "facture", "faiblir", "falaise", "fameux", "famille",
41163 "farceur", "farfelu", "farine", "farouche", "fasciner", "fatal", "fatigue", "faucon", "fautif", "faveur",
41164 "favori", "fébrile", "féconder", "fédérer", "félin", "femme", "fémur", "fendoir", "féodal", "fermer",
41165 "féroce", "ferveur", "festival", "feuille", "feutre", "février", "fiasco", "ficeler", "fictif", "fidèle",
41166 "figure", "filature", "filetage", "filière", "filleul", "filmer", "filou", "filtrer", "financer", "finir",
41167 "fiole", "firme", "fissure", "fixer", "flairer", "flamme", "flasque", "flatteur", "fléau", "flèche",
41168 "fleur", "flexion", "flocon", "flore", "fluctuer", "fluide", "fluvial", "folie", "fonderie", "fongible",
41169 "fontaine", "forcer", "forgeron", "formuler", "fortune", "fossile", "foudre", "fougère", "fouiller", "foulure",
41170 "fourmi", "fragile", "fraise", "franchir", "frapper", "frayeur", "frégate", "freiner", "frelon", "frémir",
41171 "frénésie", "frère", "friable", "friction", "frisson", "frivole", "froid", "fromage", "frontal", "frotter",
41172 "fruit", "fugitif", "fuite", "fureur", "furieux", "furtif", "fusion", "futur", "gagner", "galaxie",
41173 "galerie", "gambader", "garantir", "gardien", "garnir", "garrigue", "gazelle", "gazon", "géant", "gélatine",
41174 "gélule", "gendarme", "général", "génie", "genou", "gentil", "géologie", "géomètre", "géranium", "germe",
41175 "gestuel", "geyser", "gibier", "gicler", "girafe", "givre", "glace", "glaive", "glisser", "globe",
41176 "gloire", "glorieux", "golfeur", "gomme", "gonfler", "gorge", "gorille", "goudron", "gouffre", "goulot",
41177 "goupille", "gourmand", "goutte", "graduel", "graffiti", "graine", "grand", "grappin", "gratuit", "gravir",
41178 "grenat", "griffure", "griller", "grimper", "grogner", "gronder", "grotte", "groupe", "gruger", "grutier",
41179 "gruyère", "guépard", "guerrier", "guide", "guimauve", "guitare", "gustatif", "gymnaste", "gyrostat", "habitude",
41180 "hachoir", "halte", "hameau", "hangar", "hanneton", "haricot", "harmonie", "harpon", "hasard", "hélium",
41181 "hématome", "herbe", "hérisson", "hermine", "héron", "hésiter", "heureux", "hiberner", "hibou", "hilarant",
41182 "histoire", "hiver", "homard", "hommage", "homogène", "honneur", "honorer", "honteux", "horde", "horizon",
41183 "horloge", "hormone", "horrible", "houleux", "housse", "hublot", "huileux", "humain", "humble", "humide",
41184 "humour", "hurler", "hydromel", "hygiène", "hymne", "hypnose", "idylle", "ignorer", "iguane", "illicite",
41185 "illusion", "image", "imbiber", "imiter", "immense", "immobile", "immuable", "impact", "impérial", "implorer",
41186 "imposer", "imprimer", "imputer", "incarner", "incendie", "incident", "incliner", "incolore", "indexer", "indice",
41187 "inductif", "inédit", "ineptie", "inexact", "infini", "infliger", "informer", "infusion", "ingérer", "inhaler",
41188 "inhiber", "injecter", "injure", "innocent", "inoculer", "inonder", "inscrire", "insecte", "insigne", "insolite",
41189 "inspirer", "instinct", "insulter", "intact", "intense", "intime", "intrigue", "intuitif", "inutile", "invasion",
41190 "inventer", "inviter", "invoquer", "ironique", "irradier", "irréel", "irriter", "isoler", "ivoire", "ivresse",
41191 "jaguar", "jaillir", "jambe", "janvier", "jardin", "jauger", "jaune", "javelot", "jetable", "jeton",
41192 "jeudi", "jeunesse", "joindre", "joncher", "jongler", "joueur", "jouissif", "journal", "jovial", "joyau",
41193 "joyeux", "jubiler", "jugement", "junior", "jupon", "juriste", "justice", "juteux", "juvénile", "kayak",
41194 "kimono", "kiosque", "label", "labial", "labourer", "lacérer", "lactose", "lagune", "laine", "laisser",
41195 "laitier", "lambeau", "lamelle", "lampe", "lanceur", "langage", "lanterne", "lapin", "largeur", "larme",
41196 "laurier", "lavabo", "lavoir", "lecture", "légal", "léger", "légume", "lessive", "lettre", "levier",
41197 "lexique", "lézard", "liasse", "libérer", "libre", "licence", "licorne", "liège", "lièvre", "ligature",
41198 "ligoter", "ligue", "limer", "limite", "limonade", "limpide", "linéaire", "lingot", "lionceau", "liquide",
41199 "lisière", "lister", "lithium", "litige", "littoral", "livreur", "logique", "lointain", "loisir", "lombric",
41200 "loterie", "louer", "lourd", "loutre", "louve", "loyal", "lubie", "lucide", "lucratif", "lueur",
41201 "lugubre", "luisant", "lumière", "lunaire", "lundi", "luron", "lutter", "luxueux", "machine", "magasin",
41202 "magenta", "magique", "maigre", "maillon", "maintien", "mairie", "maison", "majorer", "malaxer", "maléfice",
41203 "malheur", "malice", "mallette", "mammouth", "mandater", "maniable", "manquant", "manteau", "manuel", "marathon",
41204 "marbre", "marchand", "mardi", "maritime", "marqueur", "marron", "marteler", "mascotte", "massif", "matériel",
41205 "matière", "matraque", "maudire", "maussade", "mauve", "maximal", "méchant", "méconnu", "médaille", "médecin",
41206 "méditer", "méduse", "meilleur", "mélange", "mélodie", "membre", "mémoire", "menacer", "mener", "menhir",
41207 "mensonge", "mentor", "mercredi", "mérite", "merle", "messager", "mesure", "métal", "météore", "méthode",
41208 "métier", "meuble", "miauler", "microbe", "miette", "mignon", "migrer", "milieu", "million", "mimique",
41209 "mince", "minéral", "minimal", "minorer", "minute", "miracle", "miroiter", "missile", "mixte", "mobile",
41210 "moderne", "moelleux", "mondial", "moniteur", "monnaie", "monotone", "monstre", "montagne", "monument", "moqueur",
41211 "morceau", "morsure", "mortier", "moteur", "motif", "mouche", "moufle", "moulin", "mousson", "mouton",
41212 "mouvant", "multiple", "munition", "muraille", "murène", "murmure", "muscle", "muséum", "musicien", "mutation",
41213 "muter", "mutuel", "myriade", "myrtille", "mystère", "mythique", "nageur", "nappe", "narquois", "narrer",
41214 "natation", "nation", "nature", "naufrage", "nautique", "navire", "nébuleux", "nectar", "néfaste", "négation",
41215 "négliger", "négocier", "neige", "nerveux", "nettoyer", "neurone", "neutron", "neveu", "niche", "nickel",
41216 "nitrate", "niveau", "noble", "nocif", "nocturne", "noirceur", "noisette", "nomade", "nombreux", "nommer",
41217 "normatif", "notable", "notifier", "notoire", "nourrir", "nouveau", "novateur", "novembre", "novice", "nuage",
41218 "nuancer", "nuire", "nuisible", "numéro", "nuptial", "nuque", "nutritif", "obéir", "objectif", "obliger",
41219 "obscur", "observer", "obstacle", "obtenir", "obturer", "occasion", "occuper", "océan", "octobre", "octroyer",
41220 "octupler", "oculaire", "odeur", "odorant", "offenser", "officier", "offrir", "ogive", "oiseau", "oisillon",
41221 "olfactif", "olivier", "ombrage", "omettre", "onctueux", "onduler", "onéreux", "onirique", "opale", "opaque",
41222 "opérer", "opinion", "opportun", "opprimer", "opter", "optique", "orageux", "orange", "orbite", "ordonner",
41223 "oreille", "organe", "orgueil", "orifice", "ornement", "orque", "ortie", "osciller", "osmose", "ossature",
41224 "otarie", "ouragan", "ourson", "outil", "outrager", "ouvrage", "ovation", "oxyde", "oxygène", "ozone",
41225 "paisible", "palace", "palmarès", "palourde", "palper", "panache", "panda", "pangolin", "paniquer", "panneau",
41226 "panorama", "pantalon", "papaye", "papier", "papoter", "papyrus", "paradoxe", "parcelle", "paresse", "parfumer",
41227 "parler", "parole", "parrain", "parsemer", "partager", "parure", "parvenir", "passion", "pastèque", "paternel",
41228 "patience", "patron", "pavillon", "pavoiser", "payer", "paysage", "peigne", "peintre", "pelage", "pélican",
41229 "pelle", "pelouse", "peluche", "pendule", "pénétrer", "pénible", "pensif", "pénurie", "pépite", "péplum",
41230 "perdrix", "perforer", "période", "permuter", "perplexe", "persil", "perte", "peser", "pétale", "petit",
41231 "pétrir", "peuple", "pharaon", "phobie", "phoque", "photon", "phrase", "physique", "piano", "pictural",
41232 "pièce", "pierre", "pieuvre", "pilote", "pinceau", "pipette", "piquer", "pirogue", "piscine", "piston",
41233 "pivoter", "pixel", "pizza", "placard", "plafond", "plaisir", "planer", "plaque", "plastron", "plateau",
41234 "pleurer", "plexus", "pliage", "plomb", "plonger", "pluie", "plumage", "pochette", "poésie", "poète",
41235 "pointe", "poirier", "poisson", "poivre", "polaire", "policier", "pollen", "polygone", "pommade", "pompier",
41236 "ponctuel", "pondérer", "poney", "portique", "position", "posséder", "posture", "potager", "poteau", "potion",
41237 "pouce", "poulain", "poumon", "pourpre", "poussin", "pouvoir", "prairie", "pratique", "précieux", "prédire",
41238 "préfixe", "prélude", "prénom", "présence", "prétexte", "prévoir", "primitif", "prince", "prison", "priver",
41239 "problème", "procéder", "prodige", "profond", "progrès", "proie", "projeter", "prologue", "promener", "propre",
41240 "prospère", "protéger", "prouesse", "proverbe", "prudence", "pruneau", "psychose", "public", "puceron", "puiser",
41241 "pulpe", "pulsar", "punaise", "punitif", "pupitre", "purifier", "puzzle", "pyramide", "quasar", "querelle",
41242 "question", "quiétude", "quitter", "quotient", "racine", "raconter", "radieux", "ragondin", "raideur", "raisin",
41243 "ralentir", "rallonge", "ramasser", "rapide", "rasage", "ratisser", "ravager", "ravin", "rayonner", "réactif",
41244 "réagir", "réaliser", "réanimer", "recevoir", "réciter", "réclamer", "récolter", "recruter", "reculer", "recycler",
41245 "rédiger", "redouter", "refaire", "réflexe", "réformer", "refrain", "refuge", "régalien", "région", "réglage",
41246 "régulier", "réitérer", "rejeter", "rejouer", "relatif", "relever", "relief", "remarque", "remède", "remise",
41247 "remonter", "remplir", "remuer", "renard", "renfort", "renifler", "renoncer", "rentrer", "renvoi", "replier",
41248 "reporter", "reprise", "reptile", "requin", "réserve", "résineux", "résoudre", "respect", "rester", "résultat",
41249 "rétablir", "retenir", "réticule", "retomber", "retracer", "réunion", "réussir", "revanche", "revivre", "révolte",
41250 "révulsif", "richesse", "rideau", "rieur", "rigide", "rigoler", "rincer", "riposter", "risible", "risque",
41251 "rituel", "rival", "rivière", "rocheux", "romance", "rompre", "ronce", "rondin", "roseau", "rosier",
41252 "rotatif", "rotor", "rotule", "rouge", "rouille", "rouleau", "routine", "royaume", "ruban", "rubis",
41253 "ruche", "ruelle", "rugueux", "ruiner", "ruisseau", "ruser", "rustique", "rythme", "sabler", "saboter",
41254 "sabre", "sacoche", "safari", "sagesse", "saisir", "salade", "salive", "salon", "saluer", "samedi",
41255 "sanction", "sanglier", "sarcasme", "sardine", "saturer", "saugrenu", "saumon", "sauter", "sauvage", "savant",
41256 "savonner", "scalpel", "scandale", "scélérat", "scénario", "sceptre", "schéma", "science", "scinder", "score",
41257 "scrutin", "sculpter", "séance", "sécable", "sécher", "secouer", "sécréter", "sédatif", "séduire", "seigneur",
41258 "séjour", "sélectif", "semaine", "sembler", "semence", "séminal", "sénateur", "sensible", "sentence", "séparer",
41259 "séquence", "serein", "sergent", "sérieux", "serrure", "sérum", "service", "sésame", "sévir", "sevrage",
41260 "sextuple", "sidéral", "siècle", "siéger", "siffler", "sigle", "signal", "silence", "silicium", "simple",
41261 "sincère", "sinistre", "siphon", "sirop", "sismique", "situer", "skier", "social", "socle", "sodium",
41262 "soigneux", "soldat", "soleil", "solitude", "soluble", "sombre", "sommeil", "somnoler", "sonde", "songeur",
41263 "sonnette", "sonore", "sorcier", "sortir", "sosie", "sottise", "soucieux", "soudure", "souffle", "soulever",
41264 "soupape", "source", "soutirer", "souvenir", "spacieux", "spatial", "spécial", "sphère", "spiral", "stable",
41265 "station", "sternum", "stimulus", "stipuler", "strict", "studieux", "stupeur", "styliste", "sublime", "substrat",
41266 "subtil", "subvenir", "succès", "sucre", "suffixe", "suggérer", "suiveur", "sulfate", "superbe", "supplier",
41267 "surface", "suricate", "surmener", "surprise", "sursaut", "survie", "suspect", "syllabe", "symbole", "symétrie",
41268 "synapse", "syntaxe", "système", "tabac", "tablier", "tactile", "tailler", "talent", "talisman", "talonner",
41269 "tambour", "tamiser", "tangible", "tapis", "taquiner", "tarder", "tarif", "tartine", "tasse", "tatami",
41270 "tatouage", "taupe", "taureau", "taxer", "témoin", "temporel", "tenaille", "tendre", "teneur", "tenir",
41271 "tension", "terminer", "terne", "terrible", "tétine", "texte", "thème", "théorie", "thérapie", "thorax",
41272 "tibia", "tiède", "timide", "tirelire", "tiroir", "tissu", "titane", "titre", "tituber", "toboggan",
41273 "tolérant", "tomate", "tonique", "tonneau", "toponyme", "torche", "tordre", "tornade", "torpille", "torrent",
41274 "torse", "tortue", "totem", "toucher", "tournage", "tousser", "toxine", "traction", "trafic", "tragique",
41275 "trahir", "train", "trancher", "travail", "trèfle", "tremper", "trésor", "treuil", "triage", "tribunal",
41276 "tricoter", "trilogie", "triomphe", "tripler", "triturer", "trivial", "trombone", "tronc", "tropical", "troupeau",
41277 "tuile", "tulipe", "tumulte", "tunnel", "turbine", "tuteur", "tutoyer", "tuyau", "tympan", "typhon",
41278 "typique", "tyran", "ubuesque", "ultime", "ultrason", "unanime", "unifier", "union", "unique", "unitaire",
41279 "univers", "uranium", "urbain", "urticant", "usage", "usine", "usuel", "usure", "utile", "utopie",
41280 "vacarme", "vaccin", "vagabond", "vague", "vaillant", "vaincre", "vaisseau", "valable", "valise", "vallon",
41281 "valve", "vampire", "vanille", "vapeur", "varier", "vaseux", "vassal", "vaste", "vecteur", "vedette",
41282 "végétal", "véhicule", "veinard", "véloce", "vendredi", "vénérer", "venger", "venimeux", "ventouse", "verdure",
41283 "vérin", "vernir", "verrou", "verser", "vertu", "veston", "vétéran", "vétuste", "vexant", "vexer",
41284 "viaduc", "viande", "victoire", "vidange", "vidéo", "vignette", "vigueur", "vilain", "village", "vinaigre",
41285 "violon", "vipère", "virement", "virtuose", "virus", "visage", "viseur", "vision", "visqueux", "visuel",
41286 "vital", "vitesse", "viticole", "vitrine", "vivace", "vivipare", "vocation", "voguer", "voile", "voisin",
41287 "voiture", "volaille", "volcan", "voltiger", "volume", "vorace", "vortex", "voter", "vouloir", "voyage",
41288 "voyelle", "wagon", "xénon", "yacht", "zèbre", "zénith", "zeste", "zoologie"]
41289 </script>
41290 <script>WORDLISTS = typeof WORDLISTS == "undefined" ? {} : WORDLISTS;
41291 WORDLISTS["italian"] = [
41292 "abaco", "abbaglio", "abbinato", "abete", "abisso", "abolire", "abrasivo", "abrogato", "accadere", "accenno",
41293 "accusato", "acetone", "achille", "acido", "acqua", "acre", "acrilico", "acrobata", "acuto", "adagio",
41294 "addebito", "addome", "adeguato", "aderire", "adipe", "adottare", "adulare", "affabile", "affetto", "affisso",
41295 "affranto", "aforisma", "afoso", "africano", "agave", "agente", "agevole", "aggancio", "agire", "agitare",
41296 "agonismo", "agricolo", "agrumeto", "aguzzo", "alabarda", "alato", "albatro", "alberato", "albo", "albume",
41297 "alce", "alcolico", "alettone", "alfa", "algebra", "aliante", "alibi", "alimento", "allagato", "allegro",
41298 "allievo", "allodola", "allusivo", "almeno", "alogeno", "alpaca", "alpestre", "altalena", "alterno", "alticcio",
41299 "altrove", "alunno", "alveolo", "alzare", "amalgama", "amanita", "amarena", "ambito", "ambrato", "ameba",
41300 "america", "ametista", "amico", "ammasso", "ammenda", "ammirare", "ammonito", "amore", "ampio", "ampliare",
41301 "amuleto", "anacardo", "anagrafe", "analista", "anarchia", "anatra", "anca", "ancella", "ancora", "andare",
41302 "andrea", "anello", "angelo", "angolare", "angusto", "anima", "annegare", "annidato", "anno", "annuncio",
41303 "anonimo", "anticipo", "anzi", "apatico", "apertura", "apode", "apparire", "appetito", "appoggio", "approdo",
41304 "appunto", "aprile", "arabica", "arachide", "aragosta", "araldica", "arancio", "aratura", "arazzo", "arbitro",
41305 "archivio", "ardito", "arenile", "argento", "argine", "arguto", "aria", "armonia", "arnese", "arredato",
41306 "arringa", "arrosto", "arsenico", "arso", "artefice", "arzillo", "asciutto", "ascolto", "asepsi", "asettico",
41307 "asfalto", "asino", "asola", "aspirato", "aspro", "assaggio", "asse", "assoluto", "assurdo", "asta",
41308 "astenuto", "astice", "astratto", "atavico", "ateismo", "atomico", "atono", "attesa", "attivare", "attorno",
41309 "attrito", "attuale", "ausilio", "austria", "autista", "autonomo", "autunno", "avanzato", "avere", "avvenire",
41310 "avviso", "avvolgere", "azione", "azoto", "azzimo", "azzurro", "babele", "baccano", "bacino", "baco",
41311 "badessa", "badilata", "bagnato", "baita", "balcone", "baldo", "balena", "ballata", "balzano", "bambino",
41312 "bandire", "baraonda", "barbaro", "barca", "baritono", "barlume", "barocco", "basilico", "basso", "batosta",
41313 "battuto", "baule", "bava", "bavosa", "becco", "beffa", "belgio", "belva", "benda", "benevole",
41314 "benigno", "benzina", "bere", "berlina", "beta", "bibita", "bici", "bidone", "bifido", "biga",
41315 "bilancia", "bimbo", "binocolo", "biologo", "bipede", "bipolare", "birbante", "birra", "biscotto", "bisesto",
41316 "bisnonno", "bisonte", "bisturi", "bizzarro", "blando", "blatta", "bollito", "bonifico", "bordo", "bosco",
41317 "botanico", "bottino", "bozzolo", "braccio", "bradipo", "brama", "branca", "bravura", "bretella", "brevetto",
41318 "brezza", "briglia", "brillante", "brindare", "broccolo", "brodo", "bronzina", "brullo", "bruno", "bubbone",
41319 "buca", "budino", "buffone", "buio", "bulbo", "buono", "burlone", "burrasca", "bussola", "busta",
41320 "cadetto", "caduco", "calamaro", "calcolo", "calesse", "calibro", "calmo", "caloria", "cambusa", "camerata",
41321 "camicia", "cammino", "camola", "campale", "canapa", "candela", "cane", "canino", "canotto", "cantina",
41322 "capace", "capello", "capitolo", "capogiro", "cappero", "capra", "capsula", "carapace", "carcassa", "cardo",
41323 "carisma", "carovana", "carretto", "cartolina", "casaccio", "cascata", "caserma", "caso", "cassone", "castello",
41324 "casuale", "catasta", "catena", "catrame", "cauto", "cavillo", "cedibile", "cedrata", "cefalo", "celebre",
41325 "cellulare", "cena", "cenone", "centesimo", "ceramica", "cercare", "certo", "cerume", "cervello", "cesoia",
41326 "cespo", "ceto", "chela", "chiaro", "chicca", "chiedere", "chimera", "china", "chirurgo", "chitarra",
41327 "ciao", "ciclismo", "cifrare", "cigno", "cilindro", "ciottolo", "circa", "cirrosi", "citrico", "cittadino",
41328 "ciuffo", "civetta", "civile", "classico", "clinica", "cloro", "cocco", "codardo", "codice", "coerente",
41329 "cognome", "collare", "colmato", "colore", "colposo", "coltivato", "colza", "coma", "cometa", "commando",
41330 "comodo", "computer", "comune", "conciso", "condurre", "conferma", "congelare", "coniuge", "connesso", "conoscere",
41331 "consumo", "continuo", "convegno", "coperto", "copione", "coppia", "copricapo", "corazza", "cordata", "coricato",
41332 "cornice", "corolla", "corpo", "corredo", "corsia", "cortese", "cosmico", "costante", "cottura", "covato",
41333 "cratere", "cravatta", "creato", "credere", "cremoso", "crescita", "creta", "criceto", "crinale", "crisi",
41334 "critico", "croce", "cronaca", "crostata", "cruciale", "crusca", "cucire", "cuculo", "cugino", "cullato",
41335 "cupola", "curatore", "cursore", "curvo", "cuscino", "custode", "dado", "daino", "dalmata", "damerino",
41336 "daniela", "dannoso", "danzare", "datato", "davanti", "davvero", "debutto", "decennio", "deciso", "declino",
41337 "decollo", "decreto", "dedicato", "definito", "deforme", "degno", "delegare", "delfino", "delirio", "delta",
41338 "demenza", "denotato", "dentro", "deposito", "derapata", "derivare", "deroga", "descritto", "deserto", "desiderio",
41339 "desumere", "detersivo", "devoto", "diametro", "dicembre", "diedro", "difeso", "diffuso", "digerire", "digitale",
41340 "diluvio", "dinamico", "dinnanzi", "dipinto", "diploma", "dipolo", "diradare", "dire", "dirotto", "dirupo",
41341 "disagio", "discreto", "disfare", "disgelo", "disposto", "distanza", "disumano", "dito", "divano", "divelto",
41342 "dividere", "divorato", "doblone", "docente", "doganale", "dogma", "dolce", "domato", "domenica", "dominare",
41343 "dondolo", "dono", "dormire", "dote", "dottore", "dovuto", "dozzina", "drago", "druido", "dubbio",
41344 "dubitare", "ducale", "duna", "duomo", "duplice", "duraturo", "ebano", "eccesso", "ecco", "eclissi",
41345 "economia", "edera", "edicola", "edile", "editoria", "educare", "egemonia", "egli", "egoismo", "egregio",
41346 "elaborato", "elargire", "elegante", "elencato", "eletto", "elevare", "elfico", "elica", "elmo", "elsa",
41347 "eluso", "emanato", "emblema", "emesso", "emiro", "emotivo", "emozione", "empirico", "emulo", "endemico",
41348 "enduro", "energia", "enfasi", "enoteca", "entrare", "enzima", "epatite", "epilogo", "episodio", "epocale",
41349 "eppure", "equatore", "erario", "erba", "erboso", "erede", "eremita", "erigere", "ermetico", "eroe",
41350 "erosivo", "errante", "esagono", "esame", "esanime", "esaudire", "esca", "esempio", "esercito", "esibito",
41351 "esigente", "esistere", "esito", "esofago", "esortato", "esoso", "espanso", "espresso", "essenza", "esso",
41352 "esteso", "estimare", "estonia", "estroso", "esultare", "etilico", "etnico", "etrusco", "etto", "euclideo",
41353 "europa", "evaso", "evidenza", "evitato", "evoluto", "evviva", "fabbrica", "faccenda", "fachiro", "falco",
41354 "famiglia", "fanale", "fanfara", "fango", "fantasma", "fare", "farfalla", "farinoso", "farmaco", "fascia",
41355 "fastoso", "fasullo", "faticare", "fato", "favoloso", "febbre", "fecola", "fede", "fegato", "felpa",
41356 "feltro", "femmina", "fendere", "fenomeno", "fermento", "ferro", "fertile", "fessura", "festivo", "fetta",
41357 "feudo", "fiaba", "fiducia", "fifa", "figurato", "filo", "finanza", "finestra", "finire", "fiore",
41358 "fiscale", "fisico", "fiume", "flacone", "flamenco", "flebo", "flemma", "florido", "fluente", "fluoro",
41359 "fobico", "focaccia", "focoso", "foderato", "foglio", "folata", "folclore", "folgore", "fondente", "fonetico",
41360 "fonia", "fontana", "forbito", "forchetta", "foresta", "formica", "fornaio", "foro", "fortezza", "forzare",
41361 "fosfato", "fosso", "fracasso", "frana", "frassino", "fratello", "freccetta", "frenata", "fresco", "frigo",
41362 "frollino", "fronde", "frugale", "frutta", "fucilata", "fucsia", "fuggente", "fulmine", "fulvo", "fumante",
41363 "fumetto", "fumoso", "fune", "funzione", "fuoco", "furbo", "furgone", "furore", "fuso", "futile",
41364 "gabbiano", "gaffe", "galateo", "gallina", "galoppo", "gambero", "gamma", "garanzia", "garbo", "garofano",
41365 "garzone", "gasdotto", "gasolio", "gastrico", "gatto", "gaudio", "gazebo", "gazzella", "geco", "gelatina",
41366 "gelso", "gemello", "gemmato", "gene", "genitore", "gennaio", "genotipo", "gergo", "ghepardo", "ghiaccio",
41367 "ghisa", "giallo", "gilda", "ginepro", "giocare", "gioiello", "giorno", "giove", "girato", "girone",
41368 "gittata", "giudizio", "giurato", "giusto", "globulo", "glutine", "gnomo", "gobba", "golf", "gomito",
41369 "gommone", "gonfio", "gonna", "governo", "gracile", "grado", "grafico", "grammo", "grande", "grattare",
41370 "gravoso", "grazia", "greca", "gregge", "grifone", "grigio", "grinza", "grotta", "gruppo", "guadagno",
41371 "guaio", "guanto", "guardare", "gufo", "guidare", "ibernato", "icona", "identico", "idillio", "idolo",
41372 "idra", "idrico", "idrogeno", "igiene", "ignaro", "ignorato", "ilare", "illeso", "illogico", "illudere",
41373 "imballo", "imbevuto", "imbocco", "imbuto", "immane", "immerso", "immolato", "impacco", "impeto", "impiego",
41374 "importo", "impronta", "inalare", "inarcare", "inattivo", "incanto", "incendio", "inchino", "incisivo", "incluso",
41375 "incontro", "incrocio", "incubo", "indagine", "india", "indole", "inedito", "infatti", "infilare", "inflitto",
41376 "ingaggio", "ingegno", "inglese", "ingordo", "ingrosso", "innesco", "inodore", "inoltrare", "inondato", "insano",
41377 "insetto", "insieme", "insonnia", "insulina", "intasato", "intero", "intonaco", "intuito", "inumidire", "invalido",
41378 "invece", "invito", "iperbole", "ipnotico", "ipotesi", "ippica", "iride", "irlanda", "ironico", "irrigato",
41379 "irrorare", "isolato", "isotopo", "isterico", "istituto", "istrice", "italia", "iterare", "labbro", "labirinto",
41380 "lacca", "lacerato", "lacrima", "lacuna", "laddove", "lago", "lampo", "lancetta", "lanterna", "lardoso",
41381 "larga", "laringe", "lastra", "latenza", "latino", "lattuga", "lavagna", "lavoro", "legale", "leggero",
41382 "lembo", "lentezza", "lenza", "leone", "lepre", "lesivo", "lessato", "lesto", "letterale", "leva",
41383 "levigato", "libero", "lido", "lievito", "lilla", "limatura", "limitare", "limpido", "lineare", "lingua",
41384 "liquido", "lira", "lirica", "lisca", "lite", "litigio", "livrea", "locanda", "lode", "logica",
41385 "lombare", "londra", "longevo", "loquace", "lorenzo", "loto", "lotteria", "luce", "lucidato", "lumaca",
41386 "luminoso", "lungo", "lupo", "luppolo", "lusinga", "lusso", "lutto", "macabro", "macchina", "macero",
41387 "macinato", "madama", "magico", "maglia", "magnete", "magro", "maiolica", "malafede", "malgrado", "malinteso",
41388 "malsano", "malto", "malumore", "mana", "mancia", "mandorla", "mangiare", "manifesto", "mannaro", "manovra",
41389 "mansarda", "mantide", "manubrio", "mappa", "maratona", "marcire", "maretta", "marmo", "marsupio", "maschera",
41390 "massaia", "mastino", "materasso", "matricola", "mattone", "maturo", "mazurca", "meandro", "meccanico", "mecenate",
41391 "medesimo", "meditare", "mega", "melassa", "melis", "melodia", "meninge", "meno", "mensola", "mercurio",
41392 "merenda", "merlo", "meschino", "mese", "messere", "mestolo", "metallo", "metodo", "mettere", "miagolare",
41393 "mica", "micelio", "michele", "microbo", "midollo", "miele", "migliore", "milano", "milite", "mimosa",
41394 "minerale", "mini", "minore", "mirino", "mirtillo", "miscela", "missiva", "misto", "misurare", "mitezza",
41395 "mitigare", "mitra", "mittente", "mnemonico", "modello", "modifica", "modulo", "mogano", "mogio", "mole",
41396 "molosso", "monastero", "monco", "mondina", "monetario", "monile", "monotono", "monsone", "montato", "monviso",
41397 "mora", "mordere", "morsicato", "mostro", "motivato", "motosega", "motto", "movenza", "movimento", "mozzo",
41398 "mucca", "mucosa", "muffa", "mughetto", "mugnaio", "mulatto", "mulinello", "multiplo", "mummia", "munto",
41399 "muovere", "murale", "musa", "muscolo", "musica", "mutevole", "muto", "nababbo", "nafta", "nanometro",
41400 "narciso", "narice", "narrato", "nascere", "nastrare", "naturale", "nautica", "naviglio", "nebulosa", "necrosi",
41401 "negativo", "negozio", "nemmeno", "neofita", "neretto", "nervo", "nessuno", "nettuno", "neutrale", "neve",
41402 "nevrotico", "nicchia", "ninfa", "nitido", "nobile", "nocivo", "nodo", "nome", "nomina", "nordico",
41403 "normale", "norvegese", "nostrano", "notare", "notizia", "notturno", "novella", "nucleo", "nulla", "numero",
41404 "nuovo", "nutrire", "nuvola", "nuziale", "oasi", "obbedire", "obbligo", "obelisco", "oblio", "obolo",
41405 "obsoleto", "occasione", "occhio", "occidente", "occorrere", "occultare", "ocra", "oculato", "odierno", "odorare",
41406 "offerta", "offrire", "offuscato", "oggetto", "oggi", "ognuno", "olandese", "olfatto", "oliato", "oliva",
41407 "ologramma", "oltre", "omaggio", "ombelico", "ombra", "omega", "omissione", "ondoso", "onere", "onice",
41408 "onnivoro", "onorevole", "onta", "operato", "opinione", "opposto", "oracolo", "orafo", "ordine", "orecchino",
41409 "orefice", "orfano", "organico", "origine", "orizzonte", "orma", "ormeggio", "ornativo", "orologio", "orrendo",
41410 "orribile", "ortensia", "ortica", "orzata", "orzo", "osare", "oscurare", "osmosi", "ospedale", "ospite",
41411 "ossa", "ossidare", "ostacolo", "oste", "otite", "otre", "ottagono", "ottimo", "ottobre", "ovale",
41412 "ovest", "ovino", "oviparo", "ovocito", "ovunque", "ovviare", "ozio", "pacchetto", "pace", "pacifico",
41413 "padella", "padrone", "paese", "paga", "pagina", "palazzina", "palesare", "pallido", "palo", "palude",
41414 "pandoro", "pannello", "paolo", "paonazzo", "paprica", "parabola", "parcella", "parere", "pargolo", "pari",
41415 "parlato", "parola", "partire", "parvenza", "parziale", "passivo", "pasticca", "patacca", "patologia", "pattume",
41416 "pavone", "peccato", "pedalare", "pedonale", "peggio", "peloso", "penare", "pendice", "penisola", "pennuto",
41417 "penombra", "pensare", "pentola", "pepe", "pepita", "perbene", "percorso", "perdonato", "perforare", "pergamena",
41418 "periodo", "permesso", "perno", "perplesso", "persuaso", "pertugio", "pervaso", "pesatore", "pesista", "peso",
41419 "pestifero", "petalo", "pettine", "petulante", "pezzo", "piacere", "pianta", "piattino", "piccino", "picozza",
41420 "piega", "pietra", "piffero", "pigiama", "pigolio", "pigro", "pila", "pilifero", "pillola", "pilota",
41421 "pimpante", "pineta", "pinna", "pinolo", "pioggia", "piombo", "piramide", "piretico", "pirite", "pirolisi",
41422 "pitone", "pizzico", "placebo", "planare", "plasma", "platano", "plenario", "pochezza", "poderoso", "podismo",
41423 "poesia", "poggiare", "polenta", "poligono", "pollice", "polmonite", "polpetta", "polso", "poltrona", "polvere",
41424 "pomice", "pomodoro", "ponte", "popoloso", "porfido", "poroso", "porpora", "porre", "portata", "posa",
41425 "positivo", "possesso", "postulato", "potassio", "potere", "pranzo", "prassi", "pratica", "precluso", "predica",
41426 "prefisso", "pregiato", "prelievo", "premere", "prenotare", "preparato", "presenza", "pretesto", "prevalso", "prima",
41427 "principe", "privato", "problema", "procura", "produrre", "profumo", "progetto", "prolunga", "promessa", "pronome",
41428 "proposta", "proroga", "proteso", "prova", "prudente", "prugna", "prurito", "psiche", "pubblico", "pudica",
41429 "pugilato", "pugno", "pulce", "pulito", "pulsante", "puntare", "pupazzo", "pupilla", "puro", "quadro",
41430 "qualcosa", "quasi", "querela", "quota", "raccolto", "raddoppio", "radicale", "radunato", "raffica", "ragazzo",
41431 "ragione", "ragno", "ramarro", "ramingo", "ramo", "randagio", "rantolare", "rapato", "rapina", "rappreso",
41432 "rasatura", "raschiato", "rasente", "rassegna", "rastrello", "rata", "ravveduto", "reale", "recepire", "recinto",
41433 "recluta", "recondito", "recupero", "reddito", "redimere", "regalato", "registro", "regola", "regresso", "relazione",
41434 "remare", "remoto", "renna", "replica", "reprimere", "reputare", "resa", "residente", "responso", "restauro",
41435 "rete", "retina", "retorica", "rettifica", "revocato", "riassunto", "ribadire", "ribelle", "ribrezzo", "ricarica",
41436 "ricco", "ricevere", "riciclato", "ricordo", "ricreduto", "ridicolo", "ridurre", "rifasare", "riflesso", "riforma",
41437 "rifugio", "rigare", "rigettato", "righello", "rilassato", "rilevato", "rimanere", "rimbalzo", "rimedio", "rimorchio",
41438 "rinascita", "rincaro", "rinforzo", "rinnovo", "rinomato", "rinsavito", "rintocco", "rinuncia", "rinvenire", "riparato",
41439 "ripetuto", "ripieno", "riportare", "ripresa", "ripulire", "risata", "rischio", "riserva", "risibile", "riso",
41440 "rispetto", "ristoro", "risultato", "risvolto", "ritardo", "ritegno", "ritmico", "ritrovo", "riunione", "riva",
41441 "riverso", "rivincita", "rivolto", "rizoma", "roba", "robotico", "robusto", "roccia", "roco", "rodaggio",
41442 "rodere", "roditore", "rogito", "rollio", "romantico", "rompere", "ronzio", "rosolare", "rospo", "rotante",
41443 "rotondo", "rotula", "rovescio", "rubizzo", "rubrica", "ruga", "rullino", "rumine", "rumoroso", "ruolo",
41444 "rupe", "russare", "rustico", "sabato", "sabbiare", "sabotato", "sagoma", "salasso", "saldatura", "salgemma",
41445 "salivare", "salmone", "salone", "saltare", "saluto", "salvo", "sapere", "sapido", "saporito", "saraceno",
41446 "sarcasmo", "sarto", "sassoso", "satellite", "satira", "satollo", "saturno", "savana", "savio", "saziato",
41447 "sbadiglio", "sbalzo", "sbancato", "sbarra", "sbattere", "sbavare", "sbendare", "sbirciare", "sbloccato", "sbocciato",
41448 "sbrinare", "sbruffone", "sbuffare", "scabroso", "scadenza", "scala", "scambiare", "scandalo", "scapola", "scarso",
41449 "scatenare", "scavato", "scelto", "scenico", "scettro", "scheda", "schiena", "sciarpa", "scienza", "scindere",
41450 "scippo", "sciroppo", "scivolo", "sclerare", "scodella", "scolpito", "scomparto", "sconforto", "scoprire", "scorta",
41451 "scossone", "scozzese", "scriba", "scrollare", "scrutinio", "scuderia", "scultore", "scuola", "scuro", "scusare",
41452 "sdebitare", "sdoganare", "seccatura", "secondo", "sedano", "seggiola", "segnalato", "segregato", "seguito", "selciato",
41453 "selettivo", "sella", "selvaggio", "semaforo", "sembrare", "seme", "seminato", "sempre", "senso", "sentire",
41454 "sepolto", "sequenza", "serata", "serbato", "sereno", "serio", "serpente", "serraglio", "servire", "sestina",
41455 "setola", "settimana", "sfacelo", "sfaldare", "sfamato", "sfarzoso", "sfaticato", "sfera", "sfida", "sfilato",
41456 "sfinge", "sfocato", "sfoderare", "sfogo", "sfoltire", "sforzato", "sfratto", "sfruttato", "sfuggito", "sfumare",
41457 "sfuso", "sgabello", "sgarbato", "sgonfiare", "sgorbio", "sgrassato", "sguardo", "sibilo", "siccome", "sierra",
41458 "sigla", "signore", "silenzio", "sillaba", "simbolo", "simpatico", "simulato", "sinfonia", "singolo", "sinistro",
41459 "sino", "sintesi", "sinusoide", "sipario", "sisma", "sistole", "situato", "slitta", "slogatura", "sloveno",
41460 "smarrito", "smemorato", "smentito", "smeraldo", "smilzo", "smontare", "smottato", "smussato", "snellire", "snervato",
41461 "snodo", "sobbalzo", "sobrio", "soccorso", "sociale", "sodale", "soffitto", "sogno", "soldato", "solenne",
41462 "solido", "sollazzo", "solo", "solubile", "solvente", "somatico", "somma", "sonda", "sonetto", "sonnifero",
41463 "sopire", "soppeso", "sopra", "sorgere", "sorpasso", "sorriso", "sorso", "sorteggio", "sorvolato", "sospiro",
41464 "sosta", "sottile", "spada", "spalla", "spargere", "spatola", "spavento", "spazzola", "specie", "spedire",
41465 "spegnere", "spelatura", "speranza", "spessore", "spettrale", "spezzato", "spia", "spigoloso", "spillato", "spinoso",
41466 "spirale", "splendido", "sportivo", "sposo", "spranga", "sprecare", "spronato", "spruzzo", "spuntino", "squillo",
41467 "sradicare", "srotolato", "stabile", "stacco", "staffa", "stagnare", "stampato", "stantio", "starnuto", "stasera",
41468 "statuto", "stelo", "steppa", "sterzo", "stiletto", "stima", "stirpe", "stivale", "stizzoso", "stonato",
41469 "storico", "strappo", "stregato", "stridulo", "strozzare", "strutto", "stuccare", "stufo", "stupendo", "subentro",
41470 "succoso", "sudore", "suggerito", "sugo", "sultano", "suonare", "superbo", "supporto", "surgelato", "surrogato",
41471 "sussurro", "sutura", "svagare", "svedese", "sveglio", "svelare", "svenuto", "svezia", "sviluppo", "svista",
41472 "svizzera", "svolta", "svuotare", "tabacco", "tabulato", "tacciare", "taciturno", "tale", "talismano", "tampone",
41473 "tannino", "tara", "tardivo", "targato", "tariffa", "tarpare", "tartaruga", "tasto", "tattico", "taverna",
41474 "tavolata", "tazza", "teca", "tecnico", "telefono", "temerario", "tempo", "temuto", "tendone", "tenero",
41475 "tensione", "tentacolo", "teorema", "terme", "terrazzo", "terzetto", "tesi", "tesserato", "testato", "tetro",
41476 "tettoia", "tifare", "tigella", "timbro", "tinto", "tipico", "tipografo", "tiraggio", "tiro", "titanio",
41477 "titolo", "titubante", "tizio", "tizzone", "toccare", "tollerare", "tolto", "tombola", "tomo", "tonfo",
41478 "tonsilla", "topazio", "topologia", "toppa", "torba", "tornare", "torrone", "tortora", "toscano", "tossire",
41479 "tostatura", "totano", "trabocco", "trachea", "trafila", "tragedia", "tralcio", "tramonto", "transito", "trapano",
41480 "trarre", "trasloco", "trattato", "trave", "treccia", "tremolio", "trespolo", "tributo", "tricheco", "trifoglio",
41481 "trillo", "trincea", "trio", "tristezza", "triturato", "trivella", "tromba", "trono", "troppo", "trottola",
41482 "trovare", "truccato", "tubatura", "tuffato", "tulipano", "tumulto", "tunisia", "turbare", "turchino", "tuta",
41483 "tutela", "ubicato", "uccello", "uccisore", "udire", "uditivo", "uffa", "ufficio", "uguale", "ulisse",
41484 "ultimato", "umano", "umile", "umorismo", "uncinetto", "ungere", "ungherese", "unicorno", "unificato", "unisono",
41485 "unitario", "unte", "uovo", "upupa", "uragano", "urgenza", "urlo", "usanza", "usato", "uscito",
41486 "usignolo", "usuraio", "utensile", "utilizzo", "utopia", "vacante", "vaccinato", "vagabondo", "vagliato", "valanga",
41487 "valgo", "valico", "valletta", "valoroso", "valutare", "valvola", "vampata", "vangare", "vanitoso", "vano",
41488 "vantaggio", "vanvera", "vapore", "varano", "varcato", "variante", "vasca", "vedetta", "vedova", "veduto",
41489 "vegetale", "veicolo", "velcro", "velina", "velluto", "veloce", "venato", "vendemmia", "vento", "verace",
41490 "verbale", "vergogna", "verifica", "vero", "verruca", "verticale", "vescica", "vessillo", "vestale", "veterano",
41491 "vetrina", "vetusto", "viandante", "vibrante", "vicenda", "vichingo", "vicinanza", "vidimare", "vigilia", "vigneto",
41492 "vigore", "vile", "villano", "vimini", "vincitore", "viola", "vipera", "virgola", "virologo", "virulento",
41493 "viscoso", "visione", "vispo", "vissuto", "visura", "vita", "vitello", "vittima", "vivanda", "vivido",
41494 "viziare", "voce", "voga", "volatile", "volere", "volpe", "voragine", "vulcano", "zampogna", "zanna",
41495 "zappato", "zattera", "zavorra", "zefiro", "zelante", "zelo", "zenzero", "zerbino", "zibetto", "zinco",
41496 "zircone", "zitto", "zolla", "zotico", "zucchero", "zufolo", "zulu", "zuppa"]
41497 </script>
41498 <script>/*
41499 * Copyright (c) 2013 Pavol Rusnak
41500 *
41501 * Permission is hereby granted, free of charge, to any person obtaining a copy of
41502 * this software and associated documentation files (the "Software"), to deal in
41503 * the Software without restriction, including without limitation the rights to
41504 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
41505 * of the Software, and to permit persons to whom the Software is furnished to do
41506 * so, subject to the following conditions:
41507 *
41508 * The above copyright notice and this permission notice shall be included in all
41509 * copies or substantial portions of the Software.
41510 *
41511 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
41512 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
41513 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
41514 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
41515 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
41516 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
41517 */
41518
41519 /*
41520 * Javascript port from python by Ian Coleman
41521 *
41522 * Requires code from sjcl
41523 * https://github.com/bitwiseshiftleft/sjcl
41524 */
41525
41526 var Mnemonic = function(language) {
41527
41528 var PBKDF2_ROUNDS = 2048;
41529 var RADIX = 2048;
41530
41531 var self = this;
41532 var wordlist = [];
41533
41534 var hmacSHA512 = function(key) {
41535 var hasher = new sjcl.misc.hmac(key, sjcl.hash.sha512);
41536 this.encrypt = function() {
41537 return hasher.encrypt.apply(hasher, arguments);
41538 };
41539 };
41540
41541 function init() {
41542 wordlist = WORDLISTS[language];
41543 if (wordlist.length != RADIX) {
41544 err = 'Wordlist should contain ' + RADIX + ' words, but it contains ' + wordlist.length + ' words.';
41545 throw err;
41546 }
41547 }
41548
41549 self.generate = function(strength) {
41550 strength = strength || 128;
41551 var r = strength % 32;
41552 if (r > 0) {
41553 throw 'Strength should be divisible by 32, but it is not (' + r + ').';
41554 }
41555 var hasStrongCrypto = 'crypto' in window && window['crypto'] !== null;
41556 if (!hasStrongCrypto) {
41557 throw 'Mnemonic should be generated with strong randomness, but crypto.getRandomValues is unavailable';
41558 }
41559 var buffer = new Uint8Array(strength / 8);
41560 var data = crypto.getRandomValues(buffer);
41561 return self.toMnemonic(data);
41562 }
41563
41564 self.toMnemonic = function(byteArray) {
41565 if (byteArray.length % 4 > 0) {
41566 throw 'Data length in bits should be divisible by 32, but it is not (' + byteArray.length + ' bytes = ' + byteArray.length*8 + ' bits).'
41567 }
41568
41569 //h = hashlib.sha256(data).hexdigest()
41570 var data = byteArrayToWordArray(byteArray);
41571 var hash = sjcl.hash.sha256.hash(data);
41572 var h = sjcl.codec.hex.fromBits(hash);
41573
41574 // b is a binary string, eg '00111010101100...'
41575 //b = bin(int(binascii.hexlify(data), 16))[2:].zfill(len(data) * 8) + \
41576 // bin(int(h, 16))[2:].zfill(256)[:len(data) * 8 / 32]
41577 //
41578 // a = bin(int(binascii.hexlify(data), 16))[2:].zfill(len(data) * 8)
41579 // c = bin(int(h, 16))[2:].zfill(256)
41580 // d = c[:len(data) * 8 / 32]
41581 var a = byteArrayToBinaryString(byteArray);
41582 var c = zfill(hexStringToBinaryString(h), 256);
41583 var d = c.substring(0, byteArray.length * 8 / 32);
41584 // b = line1 + line2
41585 var b = a + d;
41586
41587 var result = [];
41588 var blen = b.length / 11;
41589 for (var i=0; i<blen; i++) {
41590 var idx = parseInt(b.substring(i * 11, (i + 1) * 11), 2);
41591 result.push(wordlist[idx]);
41592 }
41593 return self.joinWords(result);
41594 }
41595
41596 self.check = function(mnemonic) {
41597 var mnemonic = self.splitWords(mnemonic);
41598 if (mnemonic.length == 0 || mnemonic.length % 3 > 0) {
41599 return false
41600 }
41601 // idx = map(lambda x: bin(self.wordlist.index(x))[2:].zfill(11), mnemonic)
41602 var idx = [];
41603 for (var i=0; i<mnemonic.length; i++) {
41604 var word = mnemonic[i];
41605 var wordIndex = wordlist.indexOf(word);
41606 if (wordIndex == -1) {
41607 return false;
41608 }
41609 var binaryIndex = zfill(wordIndex.toString(2), 11);
41610 idx.push(binaryIndex);
41611 }
41612 var b = idx.join('');
41613 var l = b.length;
41614 //d = b[:l / 33 * 32]
41615 //h = b[-l / 33:]
41616 var d = b.substring(0, l / 33 * 32);
41617 var h = b.substring(l - l / 33, l);
41618 //nd = binascii.unhexlify(hex(int(d, 2))[2:].rstrip('L').zfill(l / 33 * 8))
41619 var nd = binaryStringToWordArray(d);
41620 //nh = bin(int(hashlib.sha256(nd).hexdigest(), 16))[2:].zfill(256)[:l / 33]
41621 var ndHash = sjcl.hash.sha256.hash(nd);
41622 var ndHex = sjcl.codec.hex.fromBits(ndHash);
41623 var ndBstr = zfill(hexStringToBinaryString(ndHex), 256);
41624 var nh = ndBstr.substring(0,l/33);
41625 return h == nh;
41626 }
41627
41628 self.toSeed = function(mnemonic, passphrase) {
41629 passphrase = passphrase || '';
41630 mnemonic = self.joinWords(self.splitWords(mnemonic)); // removes duplicate blanks
41631 var mnemonicNormalized = self.normalizeString(mnemonic);
41632 passphrase = self.normalizeString(passphrase)
41633 passphrase = "mnemonic" + passphrase;
41634 var mnemonicBits = sjcl.codec.utf8String.toBits(mnemonicNormalized);
41635 var passphraseBits = sjcl.codec.utf8String.toBits(passphrase);
41636 var result = sjcl.misc.pbkdf2(mnemonicBits, passphraseBits, PBKDF2_ROUNDS, 512, hmacSHA512);
41637 var hashHex = sjcl.codec.hex.fromBits(result);
41638 return hashHex;
41639 }
41640
41641 self.splitWords = function(mnemonic) {
41642 return mnemonic.split(/\s/g).filter(function(x) { return x.length; });
41643 }
41644
41645 self.joinWords = function(words) {
41646 // Set space correctly depending on the language
41647 // see https://github.com/bitcoin/bips/blob/master/bip-0039/bip-0039-wordlists.md#japanese
41648 var space = " ";
41649 if (language == "japanese") {
41650 space = "\u3000"; // ideographic space
41651 }
41652 return words.join(space);
41653 }
41654
41655 self.normalizeString = function(str) {
41656 if (typeof str.normalize == "function") {
41657 return str.normalize("NFKD");
41658 }
41659 else {
41660 // TODO decide how to handle this in the future.
41661 // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize
41662 return str;
41663 }
41664 }
41665
41666 function byteArrayToWordArray(data) {
41667 var a = [];
41668 for (var i=0; i<data.length/4; i++) {
41669 v = 0;
41670 v += data[i*4 + 0] << 8 * 3;
41671 v += data[i*4 + 1] << 8 * 2;
41672 v += data[i*4 + 2] << 8 * 1;
41673 v += data[i*4 + 3] << 8 * 0;
41674 a.push(v);
41675 }
41676 return a;
41677 }
41678
41679 function byteArrayToBinaryString(data) {
41680 var bin = "";
41681 for (var i=0; i<data.length; i++) {
41682 bin += zfill(data[i].toString(2), 8);
41683 }
41684 return bin;
41685 }
41686
41687 function hexStringToBinaryString(hexString) {
41688 binaryString = "";
41689 for (var i=0; i<hexString.length; i++) {
41690 binaryString += zfill(parseInt(hexString[i], 16).toString(2),4);
41691 }
41692 return binaryString;
41693 }
41694
41695 function binaryStringToWordArray(binary) {
41696 var aLen = binary.length / 32;
41697 var a = [];
41698 for (var i=0; i<aLen; i++) {
41699 var valueStr = binary.substring(0,32);
41700 var value = parseInt(valueStr, 2);
41701 a.push(value);
41702 binary = binary.slice(32);
41703 }
41704 return a;
41705 }
41706
41707 // Pad a numeric string on the left with zero digits until the given width
41708 // is reached.
41709 // Note this differs to the python implementation because it does not
41710 // handle numbers starting with a sign.
41711 function zfill(source, length) {
41712 source = source.toString();
41713 while (source.length < length) {
41714 source = '0' + source;
41715 }
41716 return source;
41717 }
41718
41719 init();
41720
41721 }
41722 </script>
41723 <script>/*
41724 JavaScript BigInteger library version 0.9.1
41725 http://silentmatt.com/biginteger/
41726
41727 Copyright (c) 2009 Matthew Crumley <email@matthewcrumley.com>
41728 Copyright (c) 2010,2011 by John Tobey <John.Tobey@gmail.com>
41729 Licensed under the MIT license.
41730
41731 Support for arbitrary internal representation base was added by
41732 Vitaly Magerya.
41733 */
41734
41735 /*
41736 File: biginteger.js
41737
41738 Exports:
41739
41740 <BigInteger>
41741 */
41742 (function(exports) {
41743 "use strict";
41744 /*
41745 Class: BigInteger
41746 An arbitrarily-large integer.
41747
41748 <BigInteger> objects should be considered immutable. None of the "built-in"
41749 methods modify *this* or their arguments. All properties should be
41750 considered private.
41751
41752 All the methods of <BigInteger> instances can be called "statically". The
41753 static versions are convenient if you don't already have a <BigInteger>
41754 object.
41755
41756 As an example, these calls are equivalent.
41757
41758 > BigInteger(4).multiply(5); // returns BigInteger(20);
41759 > BigInteger.multiply(4, 5); // returns BigInteger(20);
41760
41761 > var a = 42;
41762 > var a = BigInteger.toJSValue("0b101010"); // Not completely useless...
41763 */
41764
41765 var CONSTRUCT = {}; // Unique token to call "private" version of constructor
41766
41767 /*
41768 Constructor: BigInteger()
41769 Convert a value to a <BigInteger>.
41770
41771 Although <BigInteger()> is the constructor for <BigInteger> objects, it is
41772 best not to call it as a constructor. If *n* is a <BigInteger> object, it is
41773 simply returned as-is. Otherwise, <BigInteger()> is equivalent to <parse>
41774 without a radix argument.
41775
41776 > var n0 = BigInteger(); // Same as <BigInteger.ZERO>
41777 > var n1 = BigInteger("123"); // Create a new <BigInteger> with value 123
41778 > var n2 = BigInteger(123); // Create a new <BigInteger> with value 123
41779 > var n3 = BigInteger(n2); // Return n2, unchanged
41780
41781 The constructor form only takes an array and a sign. *n* must be an
41782 array of numbers in little-endian order, where each digit is between 0
41783 and BigInteger.base. The second parameter sets the sign: -1 for
41784 negative, +1 for positive, or 0 for zero. The array is *not copied and
41785 may be modified*. If the array contains only zeros, the sign parameter
41786 is ignored and is forced to zero.
41787
41788 > new BigInteger([5], -1): create a new BigInteger with value -5
41789
41790 Parameters:
41791
41792 n - Value to convert to a <BigInteger>.
41793
41794 Returns:
41795
41796 A <BigInteger> value.
41797
41798 See Also:
41799
41800 <parse>, <BigInteger>
41801 */
41802 function BigInteger(n, s, token) {
41803 if (token !== CONSTRUCT) {
41804 if (n instanceof BigInteger) {
41805 return n;
41806 }
41807 else if (typeof n === "undefined") {
41808 return ZERO;
41809 }
41810 return BigInteger.parse(n);
41811 }
41812
41813 n = n || []; // Provide the nullary constructor for subclasses.
41814 while (n.length && !n[n.length - 1]) {
41815 --n.length;
41816 }
41817 this._d = n;
41818 this._s = n.length ? (s || 1) : 0;
41819 }
41820
41821 BigInteger._construct = function(n, s) {
41822 return new BigInteger(n, s, CONSTRUCT);
41823 };
41824
41825 // Base-10 speedup hacks in parse, toString, exp10 and log functions
41826 // require base to be a power of 10. 10^7 is the largest such power
41827 // that won't cause a precision loss when digits are multiplied.
41828 var BigInteger_base = 10000000;
41829 var BigInteger_base_log10 = 7;
41830
41831 BigInteger.base = BigInteger_base;
41832 BigInteger.base_log10 = BigInteger_base_log10;
41833
41834 var ZERO = new BigInteger([], 0, CONSTRUCT);
41835 // Constant: ZERO
41836 // <BigInteger> 0.
41837 BigInteger.ZERO = ZERO;
41838
41839 var ONE = new BigInteger([1], 1, CONSTRUCT);
41840 // Constant: ONE
41841 // <BigInteger> 1.
41842 BigInteger.ONE = ONE;
41843
41844 var M_ONE = new BigInteger(ONE._d, -1, CONSTRUCT);
41845 // Constant: M_ONE
41846 // <BigInteger> -1.
41847 BigInteger.M_ONE = M_ONE;
41848
41849 // Constant: _0
41850 // Shortcut for <ZERO>.
41851 BigInteger._0 = ZERO;
41852
41853 // Constant: _1
41854 // Shortcut for <ONE>.
41855 BigInteger._1 = ONE;
41856
41857 /*
41858 Constant: small
41859 Array of <BigIntegers> from 0 to 36.
41860
41861 These are used internally for parsing, but useful when you need a "small"
41862 <BigInteger>.
41863
41864 See Also:
41865
41866 <ZERO>, <ONE>, <_0>, <_1>
41867 */
41868 BigInteger.small = [
41869 ZERO,
41870 ONE,
41871 /* Assuming BigInteger_base > 36 */
41872 new BigInteger( [2], 1, CONSTRUCT),
41873 new BigInteger( [3], 1, CONSTRUCT),
41874 new BigInteger( [4], 1, CONSTRUCT),
41875 new BigInteger( [5], 1, CONSTRUCT),
41876 new BigInteger( [6], 1, CONSTRUCT),
41877 new BigInteger( [7], 1, CONSTRUCT),
41878 new BigInteger( [8], 1, CONSTRUCT),
41879 new BigInteger( [9], 1, CONSTRUCT),
41880 new BigInteger([10], 1, CONSTRUCT),
41881 new BigInteger([11], 1, CONSTRUCT),
41882 new BigInteger([12], 1, CONSTRUCT),
41883 new BigInteger([13], 1, CONSTRUCT),
41884 new BigInteger([14], 1, CONSTRUCT),
41885 new BigInteger([15], 1, CONSTRUCT),
41886 new BigInteger([16], 1, CONSTRUCT),
41887 new BigInteger([17], 1, CONSTRUCT),
41888 new BigInteger([18], 1, CONSTRUCT),
41889 new BigInteger([19], 1, CONSTRUCT),
41890 new BigInteger([20], 1, CONSTRUCT),
41891 new BigInteger([21], 1, CONSTRUCT),
41892 new BigInteger([22], 1, CONSTRUCT),
41893 new BigInteger([23], 1, CONSTRUCT),
41894 new BigInteger([24], 1, CONSTRUCT),
41895 new BigInteger([25], 1, CONSTRUCT),
41896 new BigInteger([26], 1, CONSTRUCT),
41897 new BigInteger([27], 1, CONSTRUCT),
41898 new BigInteger([28], 1, CONSTRUCT),
41899 new BigInteger([29], 1, CONSTRUCT),
41900 new BigInteger([30], 1, CONSTRUCT),
41901 new BigInteger([31], 1, CONSTRUCT),
41902 new BigInteger([32], 1, CONSTRUCT),
41903 new BigInteger([33], 1, CONSTRUCT),
41904 new BigInteger([34], 1, CONSTRUCT),
41905 new BigInteger([35], 1, CONSTRUCT),
41906 new BigInteger([36], 1, CONSTRUCT)
41907 ];
41908
41909 // Used for parsing/radix conversion
41910 BigInteger.digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");
41911
41912 /*
41913 Method: toString
41914 Convert a <BigInteger> to a string.
41915
41916 When *base* is greater than 10, letters are upper case.
41917
41918 Parameters:
41919
41920 base - Optional base to represent the number in (default is base 10).
41921 Must be between 2 and 36 inclusive, or an Error will be thrown.
41922
41923 Returns:
41924
41925 The string representation of the <BigInteger>.
41926 */
41927 BigInteger.prototype.toString = function(base) {
41928 base = +base || 10;
41929 if (base < 2 || base > 36) {
41930 throw new Error("illegal radix " + base + ".");
41931 }
41932 if (this._s === 0) {
41933 return "0";
41934 }
41935 if (base === 10) {
41936 var str = this._s < 0 ? "-" : "";
41937 str += this._d[this._d.length - 1].toString();
41938 for (var i = this._d.length - 2; i >= 0; i--) {
41939 var group = this._d[i].toString();
41940 while (group.length < BigInteger_base_log10) group = '0' + group;
41941 str += group;
41942 }
41943 return str;
41944 }
41945 else {
41946 var numerals = BigInteger.digits;
41947 base = BigInteger.small[base];
41948 var sign = this._s;
41949
41950 var n = this.abs();
41951 var digits = [];
41952 var digit;
41953
41954 while (n._s !== 0) {
41955 var divmod = n.divRem(base);
41956 n = divmod[0];
41957 digit = divmod[1];
41958 // TODO: This could be changed to unshift instead of reversing at the end.
41959 // Benchmark both to compare speeds.
41960 digits.push(numerals[digit.valueOf()]);
41961 }
41962 return (sign < 0 ? "-" : "") + digits.reverse().join("");
41963 }
41964 };
41965
41966 // Verify strings for parsing
41967 BigInteger.radixRegex = [
41968 /^$/,
41969 /^$/,
41970 /^[01]*$/,
41971 /^[012]*$/,
41972 /^[0-3]*$/,
41973 /^[0-4]*$/,
41974 /^[0-5]*$/,
41975 /^[0-6]*$/,
41976 /^[0-7]*$/,
41977 /^[0-8]*$/,
41978 /^[0-9]*$/,
41979 /^[0-9aA]*$/,
41980 /^[0-9abAB]*$/,
41981 /^[0-9abcABC]*$/,
41982 /^[0-9a-dA-D]*$/,
41983 /^[0-9a-eA-E]*$/,
41984 /^[0-9a-fA-F]*$/,
41985 /^[0-9a-gA-G]*$/,
41986 /^[0-9a-hA-H]*$/,
41987 /^[0-9a-iA-I]*$/,
41988 /^[0-9a-jA-J]*$/,
41989 /^[0-9a-kA-K]*$/,
41990 /^[0-9a-lA-L]*$/,
41991 /^[0-9a-mA-M]*$/,
41992 /^[0-9a-nA-N]*$/,
41993 /^[0-9a-oA-O]*$/,
41994 /^[0-9a-pA-P]*$/,
41995 /^[0-9a-qA-Q]*$/,
41996 /^[0-9a-rA-R]*$/,
41997 /^[0-9a-sA-S]*$/,
41998 /^[0-9a-tA-T]*$/,
41999 /^[0-9a-uA-U]*$/,
42000 /^[0-9a-vA-V]*$/,
42001 /^[0-9a-wA-W]*$/,
42002 /^[0-9a-xA-X]*$/,
42003 /^[0-9a-yA-Y]*$/,
42004 /^[0-9a-zA-Z]*$/
42005 ];
42006
42007 /*
42008 Function: parse
42009 Parse a string into a <BigInteger>.
42010
42011 *base* is optional but, if provided, must be from 2 to 36 inclusive. If
42012 *base* is not provided, it will be guessed based on the leading characters
42013 of *s* as follows:
42014
42015 - "0x" or "0X": *base* = 16
42016 - "0c" or "0C": *base* = 8
42017 - "0b" or "0B": *base* = 2
42018 - else: *base* = 10
42019
42020 If no base is provided, or *base* is 10, the number can be in exponential
42021 form. For example, these are all valid:
42022
42023 > BigInteger.parse("1e9"); // Same as "1000000000"
42024 > BigInteger.parse("1.234*10^3"); // Same as 1234
42025 > BigInteger.parse("56789 * 10 ** -2"); // Same as 567
42026
42027 If any characters fall outside the range defined by the radix, an exception
42028 will be thrown.
42029
42030 Parameters:
42031
42032 s - The string to parse.
42033 base - Optional radix (default is to guess based on *s*).
42034
42035 Returns:
42036
42037 a <BigInteger> instance.
42038 */
42039 BigInteger.parse = function(s, base) {
42040 // Expands a number in exponential form to decimal form.
42041 // expandExponential("-13.441*10^5") === "1344100";
42042 // expandExponential("1.12300e-1") === "0.112300";
42043 // expandExponential(1000000000000000000000000000000) === "1000000000000000000000000000000";
42044 function expandExponential(str) {
42045 str = str.replace(/\s*[*xX]\s*10\s*(\^|\*\*)\s*/, "e");
42046
42047 return str.replace(/^([+\-])?(\d+)\.?(\d*)[eE]([+\-]?\d+)$/, function(x, s, n, f, c) {
42048 c = +c;
42049 var l = c < 0;
42050 var i = n.length + c;
42051 x = (l ? n : f).length;
42052 c = ((c = Math.abs(c)) >= x ? c - x + l : 0);
42053 var z = (new Array(c + 1)).join("0");
42054 var r = n + f;
42055 return (s || "") + (l ? r = z + r : r += z).substr(0, i += l ? z.length : 0) + (i < r.length ? "." + r.substr(i) : "");
42056 });
42057 }
42058
42059 s = s.toString();
42060 if (typeof base === "undefined" || +base === 10) {
42061 s = expandExponential(s);
42062 }
42063
42064 var prefixRE;
42065 if (typeof base === "undefined") {
42066 prefixRE = '0[xcb]';
42067 }
42068 else if (base == 16) {
42069 prefixRE = '0x';
42070 }
42071 else if (base == 8) {
42072 prefixRE = '0c';
42073 }
42074 else if (base == 2) {
42075 prefixRE = '0b';
42076 }
42077 else {
42078 prefixRE = '';
42079 }
42080 var parts = new RegExp('^([+\\-]?)(' + prefixRE + ')?([0-9a-z]*)(?:\\.\\d*)?$', 'i').exec(s);
42081 if (parts) {
42082 var sign = parts[1] || "+";
42083 var baseSection = parts[2] || "";
42084 var digits = parts[3] || "";
42085
42086 if (typeof base === "undefined") {
42087 // Guess base
42088 if (baseSection === "0x" || baseSection === "0X") { // Hex
42089 base = 16;
42090 }
42091 else if (baseSection === "0c" || baseSection === "0C") { // Octal
42092 base = 8;
42093 }
42094 else if (baseSection === "0b" || baseSection === "0B") { // Binary
42095 base = 2;
42096 }
42097 else {
42098 base = 10;
42099 }
42100 }
42101 else if (base < 2 || base > 36) {
42102 throw new Error("Illegal radix " + base + ".");
42103 }
42104
42105 base = +base;
42106
42107 // Check for digits outside the range
42108 if (!(BigInteger.radixRegex[base].test(digits))) {
42109 throw new Error("Bad digit for radix " + base);
42110 }
42111
42112 // Strip leading zeros, and convert to array
42113 digits = digits.replace(/^0+/, "").split("");
42114 if (digits.length === 0) {
42115 return ZERO;
42116 }
42117
42118 // Get the sign (we know it's not zero)
42119 sign = (sign === "-") ? -1 : 1;
42120
42121 // Optimize 10
42122 if (base == 10) {
42123 var d = [];
42124 while (digits.length >= BigInteger_base_log10) {
42125 d.push(parseInt(digits.splice(digits.length-BigInteger.base_log10, BigInteger.base_log10).join(''), 10));
42126 }
42127 d.push(parseInt(digits.join(''), 10));
42128 return new BigInteger(d, sign, CONSTRUCT);
42129 }
42130
42131 // Do the conversion
42132 var d = ZERO;
42133 base = BigInteger.small[base];
42134 var small = BigInteger.small;
42135 for (var i = 0; i < digits.length; i++) {
42136 d = d.multiply(base).add(small[parseInt(digits[i], 36)]);
42137 }
42138 return new BigInteger(d._d, sign, CONSTRUCT);
42139 }
42140 else {
42141 throw new Error("Invalid BigInteger format: " + s);
42142 }
42143 };
42144
42145 /*
42146 Function: add
42147 Add two <BigIntegers>.
42148
42149 Parameters:
42150
42151 n - The number to add to *this*. Will be converted to a <BigInteger>.
42152
42153 Returns:
42154
42155 The numbers added together.
42156
42157 See Also:
42158
42159 <subtract>, <multiply>, <quotient>, <next>
42160 */
42161 BigInteger.prototype.add = function(n) {
42162 if (this._s === 0) {
42163 return BigInteger(n);
42164 }
42165
42166 n = BigInteger(n);
42167 if (n._s === 0) {
42168 return this;
42169 }
42170 if (this._s !== n._s) {
42171 n = n.negate();
42172 return this.subtract(n);
42173 }
42174
42175 var a = this._d;
42176 var b = n._d;
42177 var al = a.length;
42178 var bl = b.length;
42179 var sum = new Array(Math.max(al, bl) + 1);
42180 var size = Math.min(al, bl);
42181 var carry = 0;
42182 var digit;
42183
42184 for (var i = 0; i < size; i++) {
42185 digit = a[i] + b[i] + carry;
42186 sum[i] = digit % BigInteger_base;
42187 carry = (digit / BigInteger_base) | 0;
42188 }
42189 if (bl > al) {
42190 a = b;
42191 al = bl;
42192 }
42193 for (i = size; carry && i < al; i++) {
42194 digit = a[i] + carry;
42195 sum[i] = digit % BigInteger_base;
42196 carry = (digit / BigInteger_base) | 0;
42197 }
42198 if (carry) {
42199 sum[i] = carry;
42200 }
42201
42202 for ( ; i < al; i++) {
42203 sum[i] = a[i];
42204 }
42205
42206 return new BigInteger(sum, this._s, CONSTRUCT);
42207 };
42208
42209 /*
42210 Function: negate
42211 Get the additive inverse of a <BigInteger>.
42212
42213 Returns:
42214
42215 A <BigInteger> with the same magnatude, but with the opposite sign.
42216
42217 See Also:
42218
42219 <abs>
42220 */
42221 BigInteger.prototype.negate = function() {
42222 return new BigInteger(this._d, (-this._s) | 0, CONSTRUCT);
42223 };
42224
42225 /*
42226 Function: abs
42227 Get the absolute value of a <BigInteger>.
42228
42229 Returns:
42230
42231 A <BigInteger> with the same magnatude, but always positive (or zero).
42232
42233 See Also:
42234
42235 <negate>
42236 */
42237 BigInteger.prototype.abs = function() {
42238 return (this._s < 0) ? this.negate() : this;
42239 };
42240
42241 /*
42242 Function: subtract
42243 Subtract two <BigIntegers>.
42244
42245 Parameters:
42246
42247 n - The number to subtract from *this*. Will be converted to a <BigInteger>.
42248
42249 Returns:
42250
42251 The *n* subtracted from *this*.
42252
42253 See Also:
42254
42255 <add>, <multiply>, <quotient>, <prev>
42256 */
42257 BigInteger.prototype.subtract = function(n) {
42258 if (this._s === 0) {
42259 return BigInteger(n).negate();
42260 }
42261
42262 n = BigInteger(n);
42263 if (n._s === 0) {
42264 return this;
42265 }
42266 if (this._s !== n._s) {
42267 n = n.negate();
42268 return this.add(n);
42269 }
42270
42271 var m = this;
42272 // negative - negative => -|a| - -|b| => -|a| + |b| => |b| - |a|
42273 if (this._s < 0) {
42274 m = new BigInteger(n._d, 1, CONSTRUCT);
42275 n = new BigInteger(this._d, 1, CONSTRUCT);
42276 }
42277
42278 // Both are positive => a - b
42279 var sign = m.compareAbs(n);
42280 if (sign === 0) {
42281 return ZERO;
42282 }
42283 else if (sign < 0) {
42284 // swap m and n
42285 var t = n;
42286 n = m;
42287 m = t;
42288 }
42289
42290 // a > b
42291 var a = m._d;
42292 var b = n._d;
42293 var al = a.length;
42294 var bl = b.length;
42295 var diff = new Array(al); // al >= bl since a > b
42296 var borrow = 0;
42297 var i;
42298 var digit;
42299
42300 for (i = 0; i < bl; i++) {
42301 digit = a[i] - borrow - b[i];
42302 if (digit < 0) {
42303 digit += BigInteger_base;
42304 borrow = 1;
42305 }
42306 else {
42307 borrow = 0;
42308 }
42309 diff[i] = digit;
42310 }
42311 for (i = bl; i < al; i++) {
42312 digit = a[i] - borrow;
42313 if (digit < 0) {
42314 digit += BigInteger_base;
42315 }
42316 else {
42317 diff[i++] = digit;
42318 break;
42319 }
42320 diff[i] = digit;
42321 }
42322 for ( ; i < al; i++) {
42323 diff[i] = a[i];
42324 }
42325
42326 return new BigInteger(diff, sign, CONSTRUCT);
42327 };
42328
42329 (function() {
42330 function addOne(n, sign) {
42331 var a = n._d;
42332 var sum = a.slice();
42333 var carry = true;
42334 var i = 0;
42335
42336 while (true) {
42337 var digit = (a[i] || 0) + 1;
42338 sum[i] = digit % BigInteger_base;
42339 if (digit <= BigInteger_base - 1) {
42340 break;
42341 }
42342 ++i;
42343 }
42344
42345 return new BigInteger(sum, sign, CONSTRUCT);
42346 }
42347
42348 function subtractOne(n, sign) {
42349 var a = n._d;
42350 var sum = a.slice();
42351 var borrow = true;
42352 var i = 0;
42353
42354 while (true) {
42355 var digit = (a[i] || 0) - 1;
42356 if (digit < 0) {
42357 sum[i] = digit + BigInteger_base;
42358 }
42359 else {
42360 sum[i] = digit;
42361 break;
42362 }
42363 ++i;
42364 }
42365
42366 return new BigInteger(sum, sign, CONSTRUCT);
42367 }
42368
42369 /*
42370 Function: next
42371 Get the next <BigInteger> (add one).
42372
42373 Returns:
42374
42375 *this* + 1.
42376
42377 See Also:
42378
42379 <add>, <prev>
42380 */
42381 BigInteger.prototype.next = function() {
42382 switch (this._s) {
42383 case 0:
42384 return ONE;
42385 case -1:
42386 return subtractOne(this, -1);
42387 // case 1:
42388 default:
42389 return addOne(this, 1);
42390 }
42391 };
42392
42393 /*
42394 Function: prev
42395 Get the previous <BigInteger> (subtract one).
42396
42397 Returns:
42398
42399 *this* - 1.
42400
42401 See Also:
42402
42403 <next>, <subtract>
42404 */
42405 BigInteger.prototype.prev = function() {
42406 switch (this._s) {
42407 case 0:
42408 return M_ONE;
42409 case -1:
42410 return addOne(this, -1);
42411 // case 1:
42412 default:
42413 return subtractOne(this, 1);
42414 }
42415 };
42416 })();
42417
42418 /*
42419 Function: compareAbs
42420 Compare the absolute value of two <BigIntegers>.
42421
42422 Calling <compareAbs> is faster than calling <abs> twice, then <compare>.
42423
42424 Parameters:
42425
42426 n - The number to compare to *this*. Will be converted to a <BigInteger>.
42427
42428 Returns:
42429
42430 -1, 0, or +1 if *|this|* is less than, equal to, or greater than *|n|*.
42431
42432 See Also:
42433
42434 <compare>, <abs>
42435 */
42436 BigInteger.prototype.compareAbs = function(n) {
42437 if (this === n) {
42438 return 0;
42439 }
42440
42441 if (!(n instanceof BigInteger)) {
42442 if (!isFinite(n)) {
42443 return(isNaN(n) ? n : -1);
42444 }
42445 n = BigInteger(n);
42446 }
42447
42448 if (this._s === 0) {
42449 return (n._s !== 0) ? -1 : 0;
42450 }
42451 if (n._s === 0) {
42452 return 1;
42453 }
42454
42455 var l = this._d.length;
42456 var nl = n._d.length;
42457 if (l < nl) {
42458 return -1;
42459 }
42460 else if (l > nl) {
42461 return 1;
42462 }
42463
42464 var a = this._d;
42465 var b = n._d;
42466 for (var i = l-1; i >= 0; i--) {
42467 if (a[i] !== b[i]) {
42468 return a[i] < b[i] ? -1 : 1;
42469 }
42470 }
42471
42472 return 0;
42473 };
42474
42475 /*
42476 Function: compare
42477 Compare two <BigIntegers>.
42478
42479 Parameters:
42480
42481 n - The number to compare to *this*. Will be converted to a <BigInteger>.
42482
42483 Returns:
42484
42485 -1, 0, or +1 if *this* is less than, equal to, or greater than *n*.
42486
42487 See Also:
42488
42489 <compareAbs>, <isPositive>, <isNegative>, <isUnit>
42490 */
42491 BigInteger.prototype.compare = function(n) {
42492 if (this === n) {
42493 return 0;
42494 }
42495
42496 n = BigInteger(n);
42497
42498 if (this._s === 0) {
42499 return -n._s;
42500 }
42501
42502 if (this._s === n._s) { // both positive or both negative
42503 var cmp = this.compareAbs(n);
42504 return cmp * this._s;
42505 }
42506 else {
42507 return this._s;
42508 }
42509 };
42510
42511 /*
42512 Function: isUnit
42513 Return true iff *this* is either 1 or -1.
42514
42515 Returns:
42516
42517 true if *this* compares equal to <BigInteger.ONE> or <BigInteger.M_ONE>.
42518
42519 See Also:
42520
42521 <isZero>, <isNegative>, <isPositive>, <compareAbs>, <compare>,
42522 <BigInteger.ONE>, <BigInteger.M_ONE>
42523 */
42524 BigInteger.prototype.isUnit = function() {
42525 return this === ONE ||
42526 this === M_ONE ||
42527 (this._d.length === 1 && this._d[0] === 1);
42528 };
42529
42530 /*
42531 Function: multiply
42532 Multiply two <BigIntegers>.
42533
42534 Parameters:
42535
42536 n - The number to multiply *this* by. Will be converted to a
42537 <BigInteger>.
42538
42539 Returns:
42540
42541 The numbers multiplied together.
42542
42543 See Also:
42544
42545 <add>, <subtract>, <quotient>, <square>
42546 */
42547 BigInteger.prototype.multiply = function(n) {
42548 // TODO: Consider adding Karatsuba multiplication for large numbers
42549 if (this._s === 0) {
42550 return ZERO;
42551 }
42552
42553 n = BigInteger(n);
42554 if (n._s === 0) {
42555 return ZERO;
42556 }
42557 if (this.isUnit()) {
42558 if (this._s < 0) {
42559 return n.negate();
42560 }
42561 return n;
42562 }
42563 if (n.isUnit()) {
42564 if (n._s < 0) {
42565 return this.negate();
42566 }
42567 return this;
42568 }
42569 if (this === n) {
42570 return this.square();
42571 }
42572
42573 var r = (this._d.length >= n._d.length);
42574 var a = (r ? this : n)._d; // a will be longer than b
42575 var b = (r ? n : this)._d;
42576 var al = a.length;
42577 var bl = b.length;
42578
42579 var pl = al + bl;
42580 var partial = new Array(pl);
42581 var i;
42582 for (i = 0; i < pl; i++) {
42583 partial[i] = 0;
42584 }
42585
42586 for (i = 0; i < bl; i++) {
42587 var carry = 0;
42588 var bi = b[i];
42589 var jlimit = al + i;
42590 var digit;
42591 for (var j = i; j < jlimit; j++) {
42592 digit = partial[j] + bi * a[j - i] + carry;
42593 carry = (digit / BigInteger_base) | 0;
42594 partial[j] = (digit % BigInteger_base) | 0;
42595 }
42596 if (carry) {
42597 digit = partial[j] + carry;
42598 carry = (digit / BigInteger_base) | 0;
42599 partial[j] = digit % BigInteger_base;
42600 }
42601 }
42602 return new BigInteger(partial, this._s * n._s, CONSTRUCT);
42603 };
42604
42605 // Multiply a BigInteger by a single-digit native number
42606 // Assumes that this and n are >= 0
42607 // This is not really intended to be used outside the library itself
42608 BigInteger.prototype.multiplySingleDigit = function(n) {
42609 if (n === 0 || this._s === 0) {
42610 return ZERO;
42611 }
42612 if (n === 1) {
42613 return this;
42614 }
42615
42616 var digit;
42617 if (this._d.length === 1) {
42618 digit = this._d[0] * n;
42619 if (digit >= BigInteger_base) {
42620 return new BigInteger([(digit % BigInteger_base)|0,
42621 (digit / BigInteger_base)|0], 1, CONSTRUCT);
42622 }
42623 return new BigInteger([digit], 1, CONSTRUCT);
42624 }
42625
42626 if (n === 2) {
42627 return this.add(this);
42628 }
42629 if (this.isUnit()) {
42630 return new BigInteger([n], 1, CONSTRUCT);
42631 }
42632
42633 var a = this._d;
42634 var al = a.length;
42635
42636 var pl = al + 1;
42637 var partial = new Array(pl);
42638 for (var i = 0; i < pl; i++) {
42639 partial[i] = 0;
42640 }
42641
42642 var carry = 0;
42643 for (var j = 0; j < al; j++) {
42644 digit = n * a[j] + carry;
42645 carry = (digit / BigInteger_base) | 0;
42646 partial[j] = (digit % BigInteger_base) | 0;
42647 }
42648 if (carry) {
42649 partial[j] = carry;
42650 }
42651
42652 return new BigInteger(partial, 1, CONSTRUCT);
42653 };
42654
42655 /*
42656 Function: square
42657 Multiply a <BigInteger> by itself.
42658
42659 This is slightly faster than regular multiplication, since it removes the
42660 duplicated multiplcations.
42661
42662 Returns:
42663
42664 > this.multiply(this)
42665
42666 See Also:
42667 <multiply>
42668 */
42669 BigInteger.prototype.square = function() {
42670 // Normally, squaring a 10-digit number would take 100 multiplications.
42671 // Of these 10 are unique diagonals, of the remaining 90 (100-10), 45 are repeated.
42672 // This procedure saves (N*(N-1))/2 multiplications, (e.g., 45 of 100 multiplies).
42673 // Based on code by Gary Darby, Intellitech Systems Inc., www.DelphiForFun.org
42674
42675 if (this._s === 0) {
42676 return ZERO;
42677 }
42678 if (this.isUnit()) {
42679 return ONE;
42680 }
42681
42682 var digits = this._d;
42683 var length = digits.length;
42684 var imult1 = new Array(length + length + 1);
42685 var product, carry, k;
42686 var i;
42687
42688 // Calculate diagonal
42689 for (i = 0; i < length; i++) {
42690 k = i * 2;
42691 product = digits[i] * digits[i];
42692 carry = (product / BigInteger_base) | 0;
42693 imult1[k] = product % BigInteger_base;
42694 imult1[k + 1] = carry;
42695 }
42696
42697 // Calculate repeating part
42698 for (i = 0; i < length; i++) {
42699 carry = 0;
42700 k = i * 2 + 1;
42701 for (var j = i + 1; j < length; j++, k++) {
42702 product = digits[j] * digits[i] * 2 + imult1[k] + carry;
42703 carry = (product / BigInteger_base) | 0;
42704 imult1[k] = product % BigInteger_base;
42705 }
42706 k = length + i;
42707 var digit = carry + imult1[k];
42708 carry = (digit / BigInteger_base) | 0;
42709 imult1[k] = digit % BigInteger_base;
42710 imult1[k + 1] += carry;
42711 }
42712
42713 return new BigInteger(imult1, 1, CONSTRUCT);
42714 };
42715
42716 /*
42717 Function: quotient
42718 Divide two <BigIntegers> and truncate towards zero.
42719
42720 <quotient> throws an exception if *n* is zero.
42721
42722 Parameters:
42723
42724 n - The number to divide *this* by. Will be converted to a <BigInteger>.
42725
42726 Returns:
42727
42728 The *this* / *n*, truncated to an integer.
42729
42730 See Also:
42731
42732 <add>, <subtract>, <multiply>, <divRem>, <remainder>
42733 */
42734 BigInteger.prototype.quotient = function(n) {
42735 return this.divRem(n)[0];
42736 };
42737
42738 /*
42739 Function: divide
42740 Deprecated synonym for <quotient>.
42741 */
42742 BigInteger.prototype.divide = BigInteger.prototype.quotient;
42743
42744 /*
42745 Function: remainder
42746 Calculate the remainder of two <BigIntegers>.
42747
42748 <remainder> throws an exception if *n* is zero.
42749
42750 Parameters:
42751
42752 n - The remainder after *this* is divided *this* by *n*. Will be
42753 converted to a <BigInteger>.
42754
42755 Returns:
42756
42757 *this* % *n*.
42758
42759 See Also:
42760
42761 <divRem>, <quotient>
42762 */
42763 BigInteger.prototype.remainder = function(n) {
42764 return this.divRem(n)[1];
42765 };
42766
42767 /*
42768 Function: divRem
42769 Calculate the integer quotient and remainder of two <BigIntegers>.
42770
42771 <divRem> throws an exception if *n* is zero.
42772
42773 Parameters:
42774
42775 n - The number to divide *this* by. Will be converted to a <BigInteger>.
42776
42777 Returns:
42778
42779 A two-element array containing the quotient and the remainder.
42780
42781 > a.divRem(b)
42782
42783 is exactly equivalent to
42784
42785 > [a.quotient(b), a.remainder(b)]
42786
42787 except it is faster, because they are calculated at the same time.
42788
42789 See Also:
42790
42791 <quotient>, <remainder>
42792 */
42793 BigInteger.prototype.divRem = function(n) {
42794 n = BigInteger(n);
42795 if (n._s === 0) {
42796 throw new Error("Divide by zero");
42797 }
42798 if (this._s === 0) {
42799 return [ZERO, ZERO];
42800 }
42801 if (n._d.length === 1) {
42802 return this.divRemSmall(n._s * n._d[0]);
42803 }
42804
42805 // Test for easy cases -- |n1| <= |n2|
42806 switch (this.compareAbs(n)) {
42807 case 0: // n1 == n2
42808 return [this._s === n._s ? ONE : M_ONE, ZERO];
42809 case -1: // |n1| < |n2|
42810 return [ZERO, this];
42811 }
42812
42813 var sign = this._s * n._s;
42814 var a = n.abs();
42815 var b_digits = this._d;
42816 var b_index = b_digits.length;
42817 var digits = n._d.length;
42818 var quot = [];
42819 var guess;
42820
42821 var part = new BigInteger([], 0, CONSTRUCT);
42822
42823 while (b_index) {
42824 part._d.unshift(b_digits[--b_index]);
42825 part = new BigInteger(part._d, 1, CONSTRUCT);
42826
42827 if (part.compareAbs(n) < 0) {
42828 quot.push(0);
42829 continue;
42830 }
42831 if (part._s === 0) {
42832 guess = 0;
42833 }
42834 else {
42835 var xlen = part._d.length, ylen = a._d.length;
42836 var highx = part._d[xlen-1]*BigInteger_base + part._d[xlen-2];
42837 var highy = a._d[ylen-1]*BigInteger_base + a._d[ylen-2];
42838 if (part._d.length > a._d.length) {
42839 // The length of part._d can either match a._d length,
42840 // or exceed it by one.
42841 highx = (highx+1)*BigInteger_base;
42842 }
42843 guess = Math.ceil(highx/highy);
42844 }
42845 do {
42846 var check = a.multiplySingleDigit(guess);
42847 if (check.compareAbs(part) <= 0) {
42848 break;
42849 }
42850 guess--;
42851 } while (guess);
42852
42853 quot.push(guess);
42854 if (!guess) {
42855 continue;
42856 }
42857 var diff = part.subtract(check);
42858 part._d = diff._d.slice();
42859 }
42860
42861 return [new BigInteger(quot.reverse(), sign, CONSTRUCT),
42862 new BigInteger(part._d, this._s, CONSTRUCT)];
42863 };
42864
42865 // Throws an exception if n is outside of (-BigInteger.base, -1] or
42866 // [1, BigInteger.base). It's not necessary to call this, since the
42867 // other division functions will call it if they are able to.
42868 BigInteger.prototype.divRemSmall = function(n) {
42869 var r;
42870 n = +n;
42871 if (n === 0) {
42872 throw new Error("Divide by zero");
42873 }
42874
42875 var n_s = n < 0 ? -1 : 1;
42876 var sign = this._s * n_s;
42877 n = Math.abs(n);
42878
42879 if (n < 1 || n >= BigInteger_base) {
42880 throw new Error("Argument out of range");
42881 }
42882
42883 if (this._s === 0) {
42884 return [ZERO, ZERO];
42885 }
42886
42887 if (n === 1 || n === -1) {
42888 return [(sign === 1) ? this.abs() : new BigInteger(this._d, sign, CONSTRUCT), ZERO];
42889 }
42890
42891 // 2 <= n < BigInteger_base
42892
42893 // divide a single digit by a single digit
42894 if (this._d.length === 1) {
42895 var q = new BigInteger([(this._d[0] / n) | 0], 1, CONSTRUCT);
42896 r = new BigInteger([(this._d[0] % n) | 0], 1, CONSTRUCT);
42897 if (sign < 0) {
42898 q = q.negate();
42899 }
42900 if (this._s < 0) {
42901 r = r.negate();
42902 }
42903 return [q, r];
42904 }
42905
42906 var digits = this._d.slice();
42907 var quot = new Array(digits.length);
42908 var part = 0;
42909 var diff = 0;
42910 var i = 0;
42911 var guess;
42912
42913 while (digits.length) {
42914 part = part * BigInteger_base + digits[digits.length - 1];
42915 if (part < n) {
42916 quot[i++] = 0;
42917 digits.pop();
42918 diff = BigInteger_base * diff + part;
42919 continue;
42920 }
42921 if (part === 0) {
42922 guess = 0;
42923 }
42924 else {
42925 guess = (part / n) | 0;
42926 }
42927
42928 var check = n * guess;
42929 diff = part - check;
42930 quot[i++] = guess;
42931 if (!guess) {
42932 digits.pop();
42933 continue;
42934 }
42935
42936 digits.pop();
42937 part = diff;
42938 }
42939
42940 r = new BigInteger([diff], 1, CONSTRUCT);
42941 if (this._s < 0) {
42942 r = r.negate();
42943 }
42944 return [new BigInteger(quot.reverse(), sign, CONSTRUCT), r];
42945 };
42946
42947 /*
42948 Function: isEven
42949 Return true iff *this* is divisible by two.
42950
42951 Note that <BigInteger.ZERO> is even.
42952
42953 Returns:
42954
42955 true if *this* is even, false otherwise.
42956
42957 See Also:
42958
42959 <isOdd>
42960 */
42961 BigInteger.prototype.isEven = function() {
42962 var digits = this._d;
42963 return this._s === 0 || digits.length === 0 || (digits[0] % 2) === 0;
42964 };
42965
42966 /*
42967 Function: isOdd
42968 Return true iff *this* is not divisible by two.
42969
42970 Returns:
42971
42972 true if *this* is odd, false otherwise.
42973
42974 See Also:
42975
42976 <isEven>
42977 */
42978 BigInteger.prototype.isOdd = function() {
42979 return !this.isEven();
42980 };
42981
42982 /*
42983 Function: sign
42984 Get the sign of a <BigInteger>.
42985
42986 Returns:
42987
42988 * -1 if *this* < 0
42989 * 0 if *this* == 0
42990 * +1 if *this* > 0
42991
42992 See Also:
42993
42994 <isZero>, <isPositive>, <isNegative>, <compare>, <BigInteger.ZERO>
42995 */
42996 BigInteger.prototype.sign = function() {
42997 return this._s;
42998 };
42999
43000 /*
43001 Function: isPositive
43002 Return true iff *this* > 0.
43003
43004 Returns:
43005
43006 true if *this*.compare(<BigInteger.ZERO>) == 1.
43007
43008 See Also:
43009
43010 <sign>, <isZero>, <isNegative>, <isUnit>, <compare>, <BigInteger.ZERO>
43011 */
43012 BigInteger.prototype.isPositive = function() {
43013 return this._s > 0;
43014 };
43015
43016 /*
43017 Function: isNegative
43018 Return true iff *this* < 0.
43019
43020 Returns:
43021
43022 true if *this*.compare(<BigInteger.ZERO>) == -1.
43023
43024 See Also:
43025
43026 <sign>, <isPositive>, <isZero>, <isUnit>, <compare>, <BigInteger.ZERO>
43027 */
43028 BigInteger.prototype.isNegative = function() {
43029 return this._s < 0;
43030 };
43031
43032 /*
43033 Function: isZero
43034 Return true iff *this* == 0.
43035
43036 Returns:
43037
43038 true if *this*.compare(<BigInteger.ZERO>) == 0.
43039
43040 See Also:
43041
43042 <sign>, <isPositive>, <isNegative>, <isUnit>, <BigInteger.ZERO>
43043 */
43044 BigInteger.prototype.isZero = function() {
43045 return this._s === 0;
43046 };
43047
43048 /*
43049 Function: exp10
43050 Multiply a <BigInteger> by a power of 10.
43051
43052 This is equivalent to, but faster than
43053
43054 > if (n >= 0) {
43055 > return this.multiply(BigInteger("1e" + n));
43056 > }
43057 > else { // n <= 0
43058 > return this.quotient(BigInteger("1e" + -n));
43059 > }
43060
43061 Parameters:
43062
43063 n - The power of 10 to multiply *this* by. *n* is converted to a
43064 javascipt number and must be no greater than <BigInteger.MAX_EXP>
43065 (0x7FFFFFFF), or an exception will be thrown.
43066
43067 Returns:
43068
43069 *this* * (10 ** *n*), truncated to an integer if necessary.
43070
43071 See Also:
43072
43073 <pow>, <multiply>
43074 */
43075 BigInteger.prototype.exp10 = function(n) {
43076 n = +n;
43077 if (n === 0) {
43078 return this;
43079 }
43080 if (Math.abs(n) > Number(MAX_EXP)) {
43081 throw new Error("exponent too large in BigInteger.exp10");
43082 }
43083 // Optimization for this == 0. This also keeps us from having to trim zeros in the positive n case
43084 if (this._s === 0) {
43085 return ZERO;
43086 }
43087 if (n > 0) {
43088 var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
43089
43090 for (; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {
43091 k._d.unshift(0);
43092 }
43093 if (n == 0)
43094 return k;
43095 k._s = 1;
43096 k = k.multiplySingleDigit(Math.pow(10, n));
43097 return (this._s < 0 ? k.negate() : k);
43098 } else if (-n >= this._d.length*BigInteger_base_log10) {
43099 return ZERO;
43100 } else {
43101 var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
43102
43103 for (n = -n; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {
43104 k._d.shift();
43105 }
43106 return (n == 0) ? k : k.divRemSmall(Math.pow(10, n))[0];
43107 }
43108 };
43109
43110 /*
43111 Function: pow
43112 Raise a <BigInteger> to a power.
43113
43114 In this implementation, 0**0 is 1.
43115
43116 Parameters:
43117
43118 n - The exponent to raise *this* by. *n* must be no greater than
43119 <BigInteger.MAX_EXP> (0x7FFFFFFF), or an exception will be thrown.
43120
43121 Returns:
43122
43123 *this* raised to the *nth* power.
43124
43125 See Also:
43126
43127 <modPow>
43128 */
43129 BigInteger.prototype.pow = function(n) {
43130 if (this.isUnit()) {
43131 if (this._s > 0) {
43132 return this;
43133 }
43134 else {
43135 return BigInteger(n).isOdd() ? this : this.negate();
43136 }
43137 }
43138
43139 n = BigInteger(n);
43140 if (n._s === 0) {
43141 return ONE;
43142 }
43143 else if (n._s < 0) {
43144 if (this._s === 0) {
43145 throw new Error("Divide by zero");
43146 }
43147 else {
43148 return ZERO;
43149 }
43150 }
43151 if (this._s === 0) {
43152 return ZERO;
43153 }
43154 if (n.isUnit()) {
43155 return this;
43156 }
43157
43158 if (n.compareAbs(MAX_EXP) > 0) {
43159 throw new Error("exponent too large in BigInteger.pow");
43160 }
43161 var x = this;
43162 var aux = ONE;
43163 var two = BigInteger.small[2];
43164
43165 while (n.isPositive()) {
43166 if (n.isOdd()) {
43167 aux = aux.multiply(x);
43168 if (n.isUnit()) {
43169 return aux;
43170 }
43171 }
43172 x = x.square();
43173 n = n.quotient(two);
43174 }
43175
43176 return aux;
43177 };
43178
43179 /*
43180 Function: modPow
43181 Raise a <BigInteger> to a power (mod m).
43182
43183 Because it is reduced by a modulus, <modPow> is not limited by
43184 <BigInteger.MAX_EXP> like <pow>.
43185
43186 Parameters:
43187
43188 exponent - The exponent to raise *this* by. Must be positive.
43189 modulus - The modulus.
43190
43191 Returns:
43192
43193 *this* ^ *exponent* (mod *modulus*).
43194
43195 See Also:
43196
43197 <pow>, <mod>
43198 */
43199 BigInteger.prototype.modPow = function(exponent, modulus) {
43200 var result = ONE;
43201 var base = this;
43202
43203 while (exponent.isPositive()) {
43204 if (exponent.isOdd()) {
43205 result = result.multiply(base).remainder(modulus);
43206 }
43207
43208 exponent = exponent.quotient(BigInteger.small[2]);
43209 if (exponent.isPositive()) {
43210 base = base.square().remainder(modulus);
43211 }
43212 }
43213
43214 return result;
43215 };
43216
43217 /*
43218 Function: log
43219 Get the natural logarithm of a <BigInteger> as a native JavaScript number.
43220
43221 This is equivalent to
43222
43223 > Math.log(this.toJSValue())
43224
43225 but handles values outside of the native number range.
43226
43227 Returns:
43228
43229 log( *this* )
43230
43231 See Also:
43232
43233 <toJSValue>
43234 */
43235 BigInteger.prototype.log = function() {
43236 switch (this._s) {
43237 case 0: return -Infinity;
43238 case -1: return NaN;
43239 default: // Fall through.
43240 }
43241
43242 var l = this._d.length;
43243
43244 if (l*BigInteger_base_log10 < 30) {
43245 return Math.log(this.valueOf());
43246 }
43247
43248 var N = Math.ceil(30/BigInteger_base_log10);
43249 var firstNdigits = this._d.slice(l - N);
43250 return Math.log((new BigInteger(firstNdigits, 1, CONSTRUCT)).valueOf()) + (l - N) * Math.log(BigInteger_base);
43251 };
43252
43253 /*
43254 Function: valueOf
43255 Convert a <BigInteger> to a native JavaScript integer.
43256
43257 This is called automatically by JavaScipt to convert a <BigInteger> to a
43258 native value.
43259
43260 Returns:
43261
43262 > parseInt(this.toString(), 10)
43263
43264 See Also:
43265
43266 <toString>, <toJSValue>
43267 */
43268 BigInteger.prototype.valueOf = function() {
43269 return parseInt(this.toString(), 10);
43270 };
43271
43272 /*
43273 Function: toJSValue
43274 Convert a <BigInteger> to a native JavaScript integer.
43275
43276 This is the same as valueOf, but more explicitly named.
43277
43278 Returns:
43279
43280 > parseInt(this.toString(), 10)
43281
43282 See Also:
43283
43284 <toString>, <valueOf>
43285 */
43286 BigInteger.prototype.toJSValue = function() {
43287 return parseInt(this.toString(), 10);
43288 };
43289
43290 var MAX_EXP = BigInteger(0x7FFFFFFF);
43291 // Constant: MAX_EXP
43292 // The largest exponent allowed in <pow> and <exp10> (0x7FFFFFFF or 2147483647).
43293 BigInteger.MAX_EXP = MAX_EXP;
43294
43295 (function() {
43296 function makeUnary(fn) {
43297 return function(a) {
43298 return fn.call(BigInteger(a));
43299 };
43300 }
43301
43302 function makeBinary(fn) {
43303 return function(a, b) {
43304 return fn.call(BigInteger(a), BigInteger(b));
43305 };
43306 }
43307
43308 function makeTrinary(fn) {
43309 return function(a, b, c) {
43310 return fn.call(BigInteger(a), BigInteger(b), BigInteger(c));
43311 };
43312 }
43313
43314 (function() {
43315 var i, fn;
43316 var unary = "toJSValue,isEven,isOdd,sign,isZero,isNegative,abs,isUnit,square,negate,isPositive,toString,next,prev,log".split(",");
43317 var binary = "compare,remainder,divRem,subtract,add,quotient,divide,multiply,pow,compareAbs".split(",");
43318 var trinary = ["modPow"];
43319
43320 for (i = 0; i < unary.length; i++) {
43321 fn = unary[i];
43322 BigInteger[fn] = makeUnary(BigInteger.prototype[fn]);
43323 }
43324
43325 for (i = 0; i < binary.length; i++) {
43326 fn = binary[i];
43327 BigInteger[fn] = makeBinary(BigInteger.prototype[fn]);
43328 }
43329
43330 for (i = 0; i < trinary.length; i++) {
43331 fn = trinary[i];
43332 BigInteger[fn] = makeTrinary(BigInteger.prototype[fn]);
43333 }
43334
43335 BigInteger.exp10 = function(x, n) {
43336 return BigInteger(x).exp10(n);
43337 };
43338 })();
43339 })();
43340
43341 exports.BigInteger = BigInteger;
43342 })(typeof exports !== 'undefined' ? exports : this);
43343 </script>
43344 <script>(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.zxcvbn = f()}})(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);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.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(require,module,exports){
43345 var adjacency_graphs;adjacency_graphs={qwerty:{"!":["`~",null,null,"2@","qQ",null],'"':[";:","[{","]}",null,null,"/?"],"#":["2@",null,null,"4$","eE","wW"],$:["3#",null,null,"5%","rR","eE"],"%":["4$",null,null,"6^","tT","rR"],"&":["6^",null,null,"8*","uU","yY"],"'":[";:","[{","]}",null,null,"/?"],"(":["8*",null,null,"0)","oO","iI"],")":["9(",null,null,"-_","pP","oO"],"*":["7&",null,null,"9(","iI","uU"],"+":["-_",null,null,null,"]}","[{"],",":["mM","kK","lL",".>",null,null],"-":["0)",null,null,"=+","[{","pP"],".":[",<","lL",";:","/?",null,null],"/":[".>",";:","'\"",null,null,null],0:["9(",null,null,"-_","pP","oO"],1:["`~",null,null,"2@","qQ",null],2:["1!",null,null,"3#","wW","qQ"],3:["2@",null,null,"4$","eE","wW"],4:["3#",null,null,"5%","rR","eE"],5:["4$",null,null,"6^","tT","rR"],6:["5%",null,null,"7&","yY","tT"],7:["6^",null,null,"8*","uU","yY"],8:["7&",null,null,"9(","iI","uU"],9:["8*",null,null,"0)","oO","iI"],":":["lL","pP","[{","'\"","/?",".>"],";":["lL","pP","[{","'\"","/?",".>"],"<":["mM","kK","lL",".>",null,null],"=":["-_",null,null,null,"]}","[{"],">":[",<","lL",";:","/?",null,null],"?":[".>",";:","'\"",null,null,null],"@":["1!",null,null,"3#","wW","qQ"],A:[null,"qQ","wW","sS","zZ",null],B:["vV","gG","hH","nN",null,null],C:["xX","dD","fF","vV",null,null],D:["sS","eE","rR","fF","cC","xX"],E:["wW","3#","4$","rR","dD","sS"],F:["dD","rR","tT","gG","vV","cC"],G:["fF","tT","yY","hH","bB","vV"],H:["gG","yY","uU","jJ","nN","bB"],I:["uU","8*","9(","oO","kK","jJ"],J:["hH","uU","iI","kK","mM","nN"],K:["jJ","iI","oO","lL",",<","mM"],L:["kK","oO","pP",";:",".>",",<"],M:["nN","jJ","kK",",<",null,null],N:["bB","hH","jJ","mM",null,null],O:["iI","9(","0)","pP","lL","kK"],P:["oO","0)","-_","[{",";:","lL"],Q:[null,"1!","2@","wW","aA",null],R:["eE","4$","5%","tT","fF","dD"],S:["aA","wW","eE","dD","xX","zZ"],T:["rR","5%","6^","yY","gG","fF"],U:["yY","7&","8*","iI","jJ","hH"],V:["cC","fF","gG","bB",null,null],W:["qQ","2@","3#","eE","sS","aA"],X:["zZ","sS","dD","cC",null,null],Y:["tT","6^","7&","uU","hH","gG"],Z:[null,"aA","sS","xX",null,null],"[":["pP","-_","=+","]}","'\"",";:"],"\\":["]}",null,null,null,null,null],"]":["[{","=+",null,"\\|",null,"'\""],"^":["5%",null,null,"7&","yY","tT"],_:["0)",null,null,"=+","[{","pP"],"`":[null,null,null,"1!",null,null],a:[null,"qQ","wW","sS","zZ",null],b:["vV","gG","hH","nN",null,null],c:["xX","dD","fF","vV",null,null],d:["sS","eE","rR","fF","cC","xX"],e:["wW","3#","4$","rR","dD","sS"],f:["dD","rR","tT","gG","vV","cC"],g:["fF","tT","yY","hH","bB","vV"],h:["gG","yY","uU","jJ","nN","bB"],i:["uU","8*","9(","oO","kK","jJ"],j:["hH","uU","iI","kK","mM","nN"],k:["jJ","iI","oO","lL",",<","mM"],l:["kK","oO","pP",";:",".>",",<"],m:["nN","jJ","kK",",<",null,null],n:["bB","hH","jJ","mM",null,null],o:["iI","9(","0)","pP","lL","kK"],p:["oO","0)","-_","[{",";:","lL"],q:[null,"1!","2@","wW","aA",null],r:["eE","4$","5%","tT","fF","dD"],s:["aA","wW","eE","dD","xX","zZ"],t:["rR","5%","6^","yY","gG","fF"],u:["yY","7&","8*","iI","jJ","hH"],v:["cC","fF","gG","bB",null,null],w:["qQ","2@","3#","eE","sS","aA"],x:["zZ","sS","dD","cC",null,null],y:["tT","6^","7&","uU","hH","gG"],z:[null,"aA","sS","xX",null,null],"{":["pP","-_","=+","]}","'\"",";:"],"|":["]}",null,null,null,null,null],"}":["[{","=+",null,"\\|",null,"'\""],"~":[null,null,null,"1!",null,null]},dvorak:{"!":["`~",null,null,"2@","'\"",null],'"':[null,"1!","2@",",<","aA",null],"#":["2@",null,null,"4$",".>",",<"],$:["3#",null,null,"5%","pP",".>"],"%":["4$",null,null,"6^","yY","pP"],"&":["6^",null,null,"8*","gG","fF"],"'":[null,"1!","2@",",<","aA",null],"(":["8*",null,null,"0)","rR","cC"],")":["9(",null,null,"[{","lL","rR"],"*":["7&",null,null,"9(","cC","gG"],"+":["/?","]}",null,"\\|",null,"-_"],",":["'\"","2@","3#",".>","oO","aA"],"-":["sS","/?","=+",null,null,"zZ"],".":[",<","3#","4$","pP","eE","oO"],"/":["lL","[{","]}","=+","-_","sS"],0:["9(",null,null,"[{","lL","rR"],1:["`~",null,null,"2@","'\"",null],2:["1!",null,null,"3#",",<","'\""],3:["2@",null,null,"4$",".>",",<"],4:["3#",null,null,"5%","pP",".>"],5:["4$",null,null,"6^","yY","pP"],6:["5%",null,null,"7&","fF","yY"],7:["6^",null,null,"8*","gG","fF"],8:["7&",null,null,"9(","cC","gG"],9:["8*",null,null,"0)","rR","cC"],":":[null,"aA","oO","qQ",null,null],";":[null,"aA","oO","qQ",null,null],"<":["'\"","2@","3#",".>","oO","aA"],"=":["/?","]}",null,"\\|",null,"-_"],">":[",<","3#","4$","pP","eE","oO"],"?":["lL","[{","]}","=+","-_","sS"],"@":["1!",null,null,"3#",",<","'\""],A:[null,"'\"",",<","oO",";:",null],B:["xX","dD","hH","mM",null,null],C:["gG","8*","9(","rR","tT","hH"],D:["iI","fF","gG","hH","bB","xX"],E:["oO",".>","pP","uU","jJ","qQ"],F:["yY","6^","7&","gG","dD","iI"],G:["fF","7&","8*","cC","hH","dD"],H:["dD","gG","cC","tT","mM","bB"],I:["uU","yY","fF","dD","xX","kK"],J:["qQ","eE","uU","kK",null,null],K:["jJ","uU","iI","xX",null,null],L:["rR","0)","[{","/?","sS","nN"],M:["bB","hH","tT","wW",null,null],N:["tT","rR","lL","sS","vV","wW"],O:["aA",",<",".>","eE","qQ",";:"],P:[".>","4$","5%","yY","uU","eE"],Q:[";:","oO","eE","jJ",null,null],R:["cC","9(","0)","lL","nN","tT"],S:["nN","lL","/?","-_","zZ","vV"],T:["hH","cC","rR","nN","wW","mM"],U:["eE","pP","yY","iI","kK","jJ"],V:["wW","nN","sS","zZ",null,null],W:["mM","tT","nN","vV",null,null],X:["kK","iI","dD","bB",null,null],Y:["pP","5%","6^","fF","iI","uU"],Z:["vV","sS","-_",null,null,null],"[":["0)",null,null,"]}","/?","lL"],"\\":["=+",null,null,null,null,null],"]":["[{",null,null,null,"=+","/?"],"^":["5%",null,null,"7&","fF","yY"],_:["sS","/?","=+",null,null,"zZ"],"`":[null,null,null,"1!",null,null],a:[null,"'\"",",<","oO",";:",null],b:["xX","dD","hH","mM",null,null],c:["gG","8*","9(","rR","tT","hH"],d:["iI","fF","gG","hH","bB","xX"],e:["oO",".>","pP","uU","jJ","qQ"],f:["yY","6^","7&","gG","dD","iI"],g:["fF","7&","8*","cC","hH","dD"],h:["dD","gG","cC","tT","mM","bB"],i:["uU","yY","fF","dD","xX","kK"],j:["qQ","eE","uU","kK",null,null],k:["jJ","uU","iI","xX",null,null],l:["rR","0)","[{","/?","sS","nN"],m:["bB","hH","tT","wW",null,null],n:["tT","rR","lL","sS","vV","wW"],o:["aA",",<",".>","eE","qQ",";:"],p:[".>","4$","5%","yY","uU","eE"],q:[";:","oO","eE","jJ",null,null],r:["cC","9(","0)","lL","nN","tT"],s:["nN","lL","/?","-_","zZ","vV"],t:["hH","cC","rR","nN","wW","mM"],u:["eE","pP","yY","iI","kK","jJ"],v:["wW","nN","sS","zZ",null,null],w:["mM","tT","nN","vV",null,null],x:["kK","iI","dD","bB",null,null],y:["pP","5%","6^","fF","iI","uU"],z:["vV","sS","-_",null,null,null],"{":["0)",null,null,"]}","/?","lL"],"|":["=+",null,null,null,null,null],"}":["[{",null,null,null,"=+","/?"],"~":[null,null,null,"1!",null,null]},keypad:{"*":["/",null,null,null,"-","+","9","8"],"+":["9","*","-",null,null,null,null,"6"],"-":["*",null,null,null,null,null,"+","9"],".":["0","2","3",null,null,null,null,null],"/":[null,null,null,null,"*","9","8","7"],0:[null,"1","2","3",".",null,null,null],1:[null,null,"4","5","2","0",null,null],2:["1","4","5","6","3",".","0",null],3:["2","5","6",null,null,null,".","0"],4:[null,null,"7","8","5","2","1",null],5:["4","7","8","9","6","3","2","1"],6:["5","8","9","+",null,null,"3","2"],7:[null,null,null,"/","8","5","4",null],8:["7",null,"/","*","9","6","5","4"],9:["8","/","*","-","+",null,"6","5"]},mac_keypad:{"*":["/",null,null,null,null,null,"-","9"],"+":["6","9","-",null,null,null,null,"3"],"-":["9","/","*",null,null,null,"+","6"],".":["0","2","3",null,null,null,null,null],"/":["=",null,null,null,"*","-","9","8"],0:[null,"1","2","3",".",null,null,null],1:[null,null,"4","5","2","0",null,null],2:["1","4","5","6","3",".","0",null],3:["2","5","6","+",null,null,".","0"],4:[null,null,"7","8","5","2","1",null],5:["4","7","8","9","6","3","2","1"],6:["5","8","9","-","+",null,"3","2"],7:[null,null,null,"=","8","5","4",null],8:["7",null,"=","/","9","6","5","4"],9:["8","=","/","*","-","+","6","5"],"=":[null,null,null,null,"/","9","8","7"]}},module.exports=adjacency_graphs;
43346
43347 },{}],2:[function(require,module,exports){
43348 var feedback,scoring;scoring=require("./scoring"),feedback={default_feedback:{warning:"",suggestions:["Use a few words, avoid common phrases","No need for symbols, digits, or uppercase letters"]},get_feedback:function(e,s){var a,t,r,n,o,i;if(0===s.length)return this.default_feedback;if(e>2)return{warning:"",suggestions:[]};for(n=s[0],i=s.slice(1),t=0,r=i.length;t<r;t++)o=i[t],o.token.length>n.token.length&&(n=o);return feedback=this.get_match_feedback(n,1===s.length),a="Add another word or two. Uncommon words are better.",null!=feedback?(feedback.suggestions.unshift(a),null==feedback.warning&&(feedback.warning="")):feedback={warning:"",suggestions:[a]},feedback},get_match_feedback:function(e,s){var a,t;switch(e.pattern){case"dictionary":return this.get_dictionary_match_feedback(e,s);case"spatial":return a=e.graph.toUpperCase(),t=1===e.turns?"Straight rows of keys are easy to guess":"Short keyboard patterns are easy to guess",{warning:t,suggestions:["Use a longer keyboard pattern with more turns"]};case"repeat":return t=1===e.base_token.length?'Repeats like "aaa" are easy to guess':'Repeats like "abcabcabc" are only slightly harder to guess than "abc"',{warning:t,suggestions:["Avoid repeated words and characters"]};case"sequence":return{warning:"Sequences like abc or 6543 are easy to guess",suggestions:["Avoid sequences"]};case"regex":if("recent_year"===e.regex_name)return{warning:"Recent years are easy to guess",suggestions:["Avoid recent years","Avoid years that are associated with you"]};break;case"date":return{warning:"Dates are often easy to guess",suggestions:["Avoid dates and years that are associated with you"]}}},get_dictionary_match_feedback:function(e,s){var a,t,r,n,o;return n="passwords"===e.dictionary_name?!s||e.l33t||e.reversed?e.guesses_log10<=4?"This is similar to a commonly used password":void 0:e.rank<=10?"This is a top-10 common password":e.rank<=100?"This is a top-100 common password":"This is a very common password":"english"===e.dictionary_name?s?"A word by itself is easy to guess":void 0:"surnames"===(a=e.dictionary_name)||"male_names"===a||"female_names"===a?s?"Names and surnames by themselves are easy to guess":"Common names and surnames are easy to guess":"",r=[],o=e.token,o.match(scoring.START_UPPER)?r.push("Capitalization doesn't help very much"):o.match(scoring.ALL_UPPER)&&o.toLowerCase()!==o&&r.push("All-uppercase is almost as easy to guess as all-lowercase"),e.reversed&&e.token.length>=4&&r.push("Reversed words aren't much harder to guess"),e.l33t&&r.push("Predictable substitutions like '@' instead of 'a' don't help very much"),t={warning:n,suggestions:r}}},module.exports=feedback;
43349
43350 },{"./scoring":6}],3:[function(require,module,exports){
43351 var frequency_lists;frequency_lists={passwords:"123456,password,12345678,qwerty,123456789,12345,1234,111111,1234567,dragon,123123,baseball,abc123,football,monkey,letmein,shadow,master,696969,mustang,666666,qwertyuiop,123321,1234567890,pussy,superman,654321,1qaz2wsx,7777777,fuckyou,qazwsx,jordan,123qwe,000000,killer,trustno1,hunter,harley,zxcvbnm,asdfgh,buster,batman,soccer,tigger,charlie,sunshine,iloveyou,fuckme,ranger,hockey,computer,starwars,asshole,pepper,klaster,112233,zxcvbn,freedom,princess,maggie,pass,ginger,11111111,131313,fuck,love,cheese,159753,summer,chelsea,dallas,biteme,matrix,yankees,6969,corvette,austin,access,thunder,merlin,secret,diamond,hello,hammer,fucker,1234qwer,silver,gfhjkm,internet,samantha,golfer,scooter,test,orange,cookie,q1w2e3r4t5,maverick,sparky,phoenix,mickey,bigdog,snoopy,guitar,whatever,chicken,camaro,mercedes,peanut,ferrari,falcon,cowboy,welcome,sexy,samsung,steelers,smokey,dakota,arsenal,boomer,eagles,tigers,marina,nascar,booboo,gateway,yellow,porsche,monster,spider,diablo,hannah,bulldog,junior,london,purple,compaq,lakers,iceman,qwer1234,hardcore,cowboys,money,banana,ncc1701,boston,tennis,q1w2e3r4,coffee,scooby,123654,nikita,yamaha,mother,barney,brandy,chester,fuckoff,oliver,player,forever,rangers,midnight,chicago,bigdaddy,redsox,angel,badboy,fender,jasper,slayer,rabbit,natasha,marine,bigdick,wizard,marlboro,raiders,prince,casper,fishing,flower,jasmine,iwantu,panties,adidas,winter,winner,gandalf,password1,enter,ghbdtn,1q2w3e4r,golden,cocacola,jordan23,winston,madison,angels,panther,blowme,sexsex,bigtits,spanky,bitch,sophie,asdfasdf,horny,thx1138,toyota,tiger,dick,canada,12344321,blowjob,8675309,muffin,liverpoo,apples,qwerty123,passw0rd,abcd1234,pokemon,123abc,slipknot,qazxsw,123456a,scorpion,qwaszx,butter,startrek,rainbow,asdfghjkl,razz,newyork,redskins,gemini,cameron,qazwsxedc,florida,liverpool,turtle,sierra,viking,booger,butthead,doctor,rocket,159357,dolphins,captain,bandit,jaguar,packers,pookie,peaches,789456,asdf,dolphin,helpme,blue,theman,maxwell,qwertyui,shithead,lovers,maddog,giants,nirvana,metallic,hotdog,rosebud,mountain,warrior,stupid,elephant,suckit,success,bond007,jackass,alexis,porn,lucky,scorpio,samson,q1w2e3,azerty,rush2112,driver,freddy,1q2w3e4r5t,sydney,gators,dexter,red123,123456q,12345a,bubba,creative,voodoo,golf,trouble,america,nissan,gunner,garfield,bullshit,asdfghjk,5150,fucking,apollo,1qazxsw2,2112,eminem,legend,airborne,bear,beavis,apple,brooklyn,godzilla,skippy,4815162342,buddy,qwert,kitten,magic,shelby,beaver,phantom,asdasd,xavier,braves,darkness,blink182,copper,platinum,qweqwe,tomcat,01012011,girls,bigboy,102030,animal,police,online,11223344,voyager,lifehack,12qwaszx,fish,sniper,315475,trinity,blazer,heaven,lover,snowball,playboy,loveme,bubbles,hooters,cricket,willow,donkey,topgun,nintendo,saturn,destiny,pakistan,pumpkin,digital,sergey,redwings,explorer,tits,private,runner,therock,guinness,lasvegas,beatles,789456123,fire,cassie,christin,qwerty1,celtic,asdf1234,andrey,broncos,007007,babygirl,eclipse,fluffy,cartman,michigan,carolina,testing,alexande,birdie,pantera,cherry,vampire,mexico,dickhead,buffalo,genius,montana,beer,minecraft,maximus,flyers,lovely,stalker,metallica,doggie,snickers,speedy,bronco,lol123,paradise,yankee,horses,magnum,dreams,147258369,lacrosse,ou812,goober,enigma,qwertyu,scotty,pimpin,bollocks,surfer,cock,poohbear,genesis,star,asd123,qweasdzxc,racing,hello1,hawaii,eagle1,viper,poopoo,einstein,boobies,12345q,bitches,drowssap,simple,badger,alaska,action,jester,drummer,111222,spitfire,forest,maryjane,champion,diesel,svetlana,friday,hotrod,147258,chevy,lucky1,westside,security,google,badass,tester,shorty,thumper,hitman,mozart,zaq12wsx,boobs,reddog,010203,lizard,a123456,123456789a,ruslan,eagle,1232323q,scarface,qwerty12,147852,a12345,buddha,porno,420420,spirit,money1,stargate,qwe123,naruto,mercury,liberty,12345qwert,semperfi,suzuki,popcorn,spooky,marley,scotland,kitty,cherokee,vikings,simpsons,rascal,qweasd,hummer,loveyou,michael1,patches,russia,jupiter,penguin,passion,cumshot,vfhbyf,honda,vladimir,sandman,passport,raider,bastard,123789,infinity,assman,bulldogs,fantasy,sucker,1234554321,horney,domino,budlight,disney,ironman,usuckballz1,softball,brutus,redrum,bigred,mnbvcxz,fktrcfylh,karina,marines,digger,kawasaki,cougar,fireman,oksana,monday,cunt,justice,nigger,super,wildcats,tinker,logitech,dancer,swordfis,avalon,everton,alexandr,motorola,patriots,hentai,madonna,pussy1,ducati,colorado,connor,juventus,galore,smooth,freeuser,warcraft,boogie,titanic,wolverin,elizabet,arizona,valentin,saints,asdfg,accord,test123,password123,christ,yfnfif,stinky,slut,spiderma,naughty,chopper,hello123,ncc1701d,extreme,skyline,poop,zombie,pearljam,123qweasd,froggy,awesome,vision,pirate,fylhtq,dreamer,bullet,predator,empire,123123a,kirill,charlie1,panthers,penis,skipper,nemesis,rasdzv3,peekaboo,rolltide,cardinal,psycho,danger,mookie,happy1,wanker,chevelle,manutd,goblue,9379992,hobbes,vegeta,fyfcnfcbz,852456,picard,159951,windows,loverboy,victory,vfrcbv,bambam,serega,123654789,turkey,tweety,galina,hiphop,rooster,changeme,berlin,taurus,suckme,polina,electric,avatar,134679,maksim,raptor,alpha1,hendrix,newport,bigcock,brazil,spring,a1b2c3,madmax,alpha,britney,sublime,darkside,bigman,wolfpack,classic,hercules,ronaldo,letmein1,1q2w3e,741852963,spiderman,blizzard,123456789q,cheyenne,cjkysirj,tiger1,wombat,bubba1,pandora,zxc123,holiday,wildcat,devils,horse,alabama,147852369,caesar,12312,buddy1,bondage,pussycat,pickle,shaggy,catch22,leather,chronic,a1b2c3d4,admin,qqq111,qaz123,airplane,kodiak,freepass,billybob,sunset,katana,phpbb,chocolat,snowman,angel1,stingray,firebird,wolves,zeppelin,detroit,pontiac,gundam,panzer,vagina,outlaw,redhead,tarheels,greenday,nastya,01011980,hardon,engineer,dragon1,hellfire,serenity,cobra,fireball,lickme,darkstar,1029384756,01011,mustang1,flash,124578,strike,beauty,pavilion,01012000,bobafett,dbrnjhbz,bigmac,bowling,chris1,ytrewq,natali,pyramid,rulez,welcome1,dodgers,apache,swimming,whynot,teens,trooper,fuckit,defender,precious,135790,packard,weasel,popeye,lucifer,cancer,icecream,142536,raven,swordfish,presario,viktor,rockstar,blonde,james1,wutang,spike,pimp,atlanta,airforce,thailand,casino,lennon,mouse,741852,hacker,bluebird,hawkeye,456123,theone,catfish,sailor,goldfish,nfnmzyf,tattoo,pervert,barbie,maxima,nipples,machine,trucks,wrangler,rocks,tornado,lights,cadillac,bubble,pegasus,madman,longhorn,browns,target,666999,eatme,qazwsx123,microsoft,dilbert,christia,baller,lesbian,shooter,xfiles,seattle,qazqaz,cthutq,amateur,prelude,corona,freaky,malibu,123qweasdzxc,assassin,246810,atlantis,integra,pussies,iloveu,lonewolf,dragons,monkey1,unicorn,software,bobcat,stealth,peewee,openup,753951,srinivas,zaqwsx,valentina,shotgun,trigger,veronika,bruins,coyote,babydoll,joker,dollar,lestat,rocky1,hottie,random,butterfly,wordpass,smiley,sweety,snake,chipper,woody,samurai,devildog,gizmo,maddie,soso123aljg,mistress,freedom1,flipper,express,hjvfirf,moose,cessna,piglet,polaris,teacher,montreal,cookies,wolfgang,scully,fatboy,wicked,balls,tickle,bunny,dfvgbh,foobar,transam,pepsi,fetish,oicu812,basketba,toshiba,hotstuff,sunday,booty,gambit,31415926,impala,stephani,jessica1,hooker,lancer,knicks,shamrock,fuckyou2,stinger,314159,redneck,deftones,squirt,siemens,blaster,trucker,subaru,renegade,ibanez,manson,swinger,reaper,blondie,mylove,galaxy,blahblah,enterpri,travel,1234abcd,babylon5,indiana,skeeter,master1,sugar,ficken,smoke,bigone,sweetpea,fucked,trfnthbyf,marino,escort,smitty,bigfoot,babes,larisa,trumpet,spartan,valera,babylon,asdfghj,yankees1,bigboobs,stormy,mister,hamlet,aardvark,butterfl,marathon,paladin,cavalier,manchester,skater,indigo,hornet,buckeyes,01011990,indians,karate,hesoyam,toronto,diamonds,chiefs,buckeye,1qaz2wsx3edc,highland,hotsex,charger,redman,passwor,maiden,drpepper,storm,pornstar,garden,12345678910,pencil,sherlock,timber,thuglife,insane,pizza,jungle,jesus1,aragorn,1a2b3c,hamster,david1,triumph,techno,lollol,pioneer,catdog,321654,fktrctq,morpheus,141627,pascal,shadow1,hobbit,wetpussy,erotic,consumer,blabla,justme,stones,chrissy,spartak,goforit,burger,pitbull,adgjmptw,italia,barcelona,hunting,colors,kissme,virgin,overlord,pebbles,sundance,emerald,doggy,racecar,irina,element,1478963,zipper,alpine,basket,goddess,poison,nipple,sakura,chichi,huskers,13579,pussys,q12345,ultimate,ncc1701e,blackie,nicola,rommel,matthew1,caserta,omega,geronimo,sammy1,trojan,123qwe123,philips,nugget,tarzan,chicks,aleksandr,bassman,trixie,portugal,anakin,dodger,bomber,superfly,madness,q1w2e3r4t5y6,loser,123asd,fatcat,ybrbnf,soldier,warlock,wrinkle1,desire,sexual,babe,seminole,alejandr,951753,11235813,westham,andrei,concrete,access14,weed,letmein2,ladybug,naked,christop,trombone,tintin,bluesky,rhbcnbyf,qazxswedc,onelove,cdtnkfyf,whore,vfvjxrf,titans,stallion,truck,hansolo,blue22,smiles,beagle,panama,kingkong,flatron,inferno,mongoose,connect,poiuyt,snatch,qawsed,juice,blessed,rocker,snakes,turbo,bluemoon,sex4me,finger,jamaica,a1234567,mulder,beetle,fuckyou1,passat,immortal,plastic,123454321,anthony1,whiskey,dietcoke,suck,spunky,magic1,monitor,cactus,exigen,planet,ripper,teen,spyder,apple1,nolimit,hollywoo,sluts,sticky,trunks,1234321,14789632,pickles,sailing,bonehead,ghbdtnbr,delta,charlott,rubber,911911,112358,molly1,yomama,hongkong,jumper,william1,ilovesex,faster,unreal,cumming,memphis,1123581321,nylons,legion,sebastia,shalom,pentium,geheim,werewolf,funtime,ferret,orion,curious,555666,niners,cantona,sprite,philly,pirates,abgrtyu,lollipop,eternity,boeing,super123,sweets,cooldude,tottenha,green1,jackoff,stocking,7895123,moomoo,martini,biscuit,drizzt,colt45,fossil,makaveli,snapper,satan666,maniac,salmon,patriot,verbatim,nasty,shasta,asdzxc,shaved,blackcat,raistlin,qwerty12345,punkrock,cjkywt,01012010,4128,waterloo,crimson,twister,oxford,musicman,seinfeld,biggie,condor,ravens,megadeth,wolfman,cosmos,sharks,banshee,keeper,foxtrot,gn56gn56,skywalke,velvet,black1,sesame,dogs,squirrel,privet,sunrise,wolverine,sucks,legolas,grendel,ghost,cats,carrot,frosty,lvbnhbq,blades,stardust,frog,qazwsxed,121314,coolio,brownie,groovy,twilight,daytona,vanhalen,pikachu,peanuts,licker,hershey,jericho,intrepid,ninja,1234567a,zaq123,lobster,goblin,punisher,strider,shogun,kansas,amadeus,seven7,jason1,neptune,showtime,muscle,oldman,ekaterina,rfrfirf,getsome,showme,111222333,obiwan,skittles,danni,tanker,maestro,tarheel,anubis,hannibal,anal,newlife,gothic,shark,fighter,blue123,blues,123456z,princes,slick,chaos,thunder1,sabine,1q2w3e4r5t6y,python,test1,mirage,devil,clover,tequila,chelsea1,surfing,delete,potato,chubby,panasonic,sandiego,portland,baggins,fusion,sooners,blackdog,buttons,californ,moscow,playtime,mature,1a2b3c4d,dagger,dima,stimpy,asdf123,gangster,warriors,iverson,chargers,byteme,swallow,liquid,lucky7,dingdong,nymets,cracker,mushroom,456852,crusader,bigguy,miami,dkflbvbh,bugger,nimrod,tazman,stranger,newpass,doodle,powder,gotcha,guardian,dublin,slapshot,septembe,147896325,pepsi1,milano,grizzly,woody1,knights,photos,2468,nookie,charly,rammstein,brasil,123321123,scruffy,munchkin,poopie,123098,kittycat,latino,walnut,1701,thegame,viper1,1passwor,kolobok,picasso,robert1,barcelon,bananas,trance,auburn,coltrane,eatshit,goodluck,starcraft,wheels,parrot,postal,blade,wisdom,pink,gorilla,katerina,pass123,andrew1,shaney14,dumbass,osiris,fuck_inside,oakland,discover,ranger1,spanking,lonestar,bingo,meridian,ping,heather1,dookie,stonecol,megaman,192837465,rjntyjr,ledzep,lowrider,25802580,richard1,firefly,griffey,racerx,paradox,ghjcnj,gangsta,zaq1xsw2,tacobell,weezer,sirius,halflife,buffett,shiloh,123698745,vertigo,sergei,aliens,sobaka,keyboard,kangaroo,sinner,soccer1,0.0.000,bonjour,socrates,chucky,hotboy,sprint,0007,sarah1,scarlet,celica,shazam,formula1,sommer,trebor,qwerasdf,jeep,mailcreated5240,bollox,asshole1,fuckface,honda1,rebels,vacation,lexmark,penguins,12369874,ragnarok,formula,258456,tempest,vfhecz,tacoma,qwertz,colombia,flames,rockon,duck,prodigy,wookie,dodgeram,mustangs,123qaz,sithlord,smoker,server,bang,incubus,scoobydo,oblivion,molson,kitkat,titleist,rescue,zxcv1234,carpet,1122,bigballs,tardis,jimbob,xanadu,blueeyes,shaman,mersedes,pooper,pussy69,golfing,hearts,mallard,12312312,kenwood,patrick1,dogg,cowboys1,oracle,123zxc,nuttertools,102938,topper,1122334455,shemale,sleepy,gremlin,yourmom,123987,gateway1,printer,monkeys,peterpan,mikey,kingston,cooler,analsex,jimbo,pa55word,asterix,freckles,birdman,frank1,defiant,aussie,stud,blondes,tatyana,445566,aspirine,mariners,jackal,deadhead,katrin,anime,rootbeer,frogger,polo,scooter1,hallo,noodles,thomas1,parola,shaolin,celine,11112222,plymouth,creampie,justdoit,ohyeah,fatass,assfuck,amazon,1234567q,kisses,magnus,camel,nopass,bosco,987456,6751520,harley1,putter,champs,massive,spidey,lightnin,camelot,letsgo,gizmodo,aezakmi,bones,caliente,12121,goodtime,thankyou,raiders1,brucelee,redalert,aquarius,456654,catherin,smokin,pooh,mypass,astros,roller,porkchop,sapphire,qwert123,kevin1,a1s2d3f4,beckham,atomic,rusty1,vanilla,qazwsxedcrfv,hunter1,kaktus,cxfcnmt,blacky,753159,elvis1,aggies,blackjac,bangkok,scream,123321q,iforgot,power1,kasper,abc12,buster1,slappy,shitty,veritas,chevrole,amber1,01012001,vader,amsterdam,jammer,primus,spectrum,eduard,granny,horny1,sasha1,clancy,usa123,satan,diamond1,hitler,avenger,1221,spankme,123456qwerty,simba,smudge,scrappy,labrador,john316,syracuse,front242,falcons,husker,candyman,commando,gator,pacman,delta1,pancho,krishna,fatman,clitoris,pineappl,lesbians,8j4ye3uz,barkley,vulcan,punkin,boner,celtics,monopoly,flyboy,romashka,hamburg,123456aa,lick,gangbang,223344,area51,spartans,aaa111,tricky,snuggles,drago,homerun,vectra,homer1,hermes,topcat,cuddles,infiniti,1234567890q,cosworth,goose,phoenix1,killer1,ivanov,bossman,qawsedrf,peugeot,exigent,doberman,durango,brandon1,plumber,telefon,horndog,laguna,rbhbkk,dawg,webmaster,breeze,beast,porsche9,beefcake,leopard,redbull,oscar1,topdog,godsmack,theking,pics,omega1,speaker,viktoria,fuckers,bowler,starbuck,gjkbyf,valhalla,anarchy,blacks,herbie,kingpin,starfish,nokia,loveit,achilles,906090,labtec,ncc1701a,fitness,jordan1,brando,arsenal1,bull,kicker,napass,desert,sailboat,bohica,tractor,hidden,muppet,jackson1,jimmy1,terminator,phillies,pa55w0rd,terror,farside,swingers,legacy,frontier,butthole,doughboy,jrcfyf,tuesday,sabbath,daniel1,nebraska,homers,qwertyuio,azamat,fallen,agent007,striker,camels,iguana,looker,pinkfloy,moloko,qwerty123456,dannyboy,luckydog,789654,pistol,whocares,charmed,skiing,select,franky,puppy,daniil,vladik,vette,vfrcbvrf,ihateyou,nevada,moneys,vkontakte,mandingo,puppies,666777,mystic,zidane,kotenok,dilligaf,budman,bunghole,zvezda,123457,triton,golfball,technics,trojans,panda,laptop,rookie,01011991,15426378,aberdeen,gustav,jethro,enterprise,igor,stripper,filter,hurrican,rfnthbyf,lespaul,gizmo1,butch,132435,dthjybrf,1366613,excalibu,963852,nofear,momoney,possum,cutter,oilers,moocow,cupcake,gbpltw,batman1,splash,svetik,super1,soleil,bogdan,melissa1,vipers,babyboy,tdutybq,lancelot,ccbill,keystone,passwort,flamingo,firefox,dogman,vortex,rebel,noodle,raven1,zaphod,killme,pokemon1,coolman,danila,designer,skinny,kamikaze,deadman,gopher,doobie,warhammer,deeznuts,freaks,engage,chevy1,steve1,apollo13,poncho,hammers,azsxdc,dracula,000007,sassy,bitch1,boots,deskjet,12332,macdaddy,mighty,rangers1,manchest,sterlin,casey1,meatball,mailman,sinatra,cthulhu,summer1,bubbas,cartoon,bicycle,eatpussy,truelove,sentinel,tolkien,breast,capone,lickit,summit,123456k,peter1,daisy1,kitty1,123456789z,crazy1,jamesbon,texas1,sexygirl,362436,sonic,billyboy,redhot,microsof,microlab,daddy1,rockets,iloveyo,fernand,gordon24,danie,cutlass,polska,star69,titties,pantyhos,01011985,thekid,aikido,gofish,mayday,1234qwe,coke,anfield,sony,lansing,smut,scotch,sexx,catman,73501505,hustler,saun,dfkthbz,passwor1,jenny1,azsxdcfv,cheers,irish1,gabrie,tinman,orioles,1225,charlton,fortuna,01011970,airbus,rustam,xtreme,bigmoney,zxcasd,retard,grumpy,huskies,boxing,4runner,kelly1,ultima,warlord,fordf150,oranges,rotten,asdfjkl,superstar,denali,sultan,bikini,saratoga,thor,figaro,sixers,wildfire,vladislav,128500,sparta,mayhem,greenbay,chewie,music1,number1,cancun,fabie,mellon,poiuytrewq,cloud9,crunch,bigtime,chicken1,piccolo,bigbird,321654987,billy1,mojo,01011981,maradona,sandro,chester1,bizkit,rjirfrgbde,789123,rightnow,jasmine1,hyperion,treasure,meatloaf,armani,rovers,jarhead,01011986,cruise,coconut,dragoon,utopia,davids,cosmo,rfhbyf,reebok,1066,charli,giorgi,sticks,sayang,pass1234,exodus,anaconda,zaqxsw,illini,woofwoof,emily1,sandy1,packer,poontang,govols,jedi,tomato,beaner,cooter,creamy,lionking,happy123,albatros,poodle,kenworth,dinosaur,greens,goku,happyday,eeyore,tsunami,cabbage,holyshit,turkey50,memorex,chaser,bogart,orgasm,tommy1,volley,whisper,knopka,ericsson,walleye,321123,pepper1,katie1,chickens,tyler1,corrado,twisted,100000,zorro,clemson,zxcasdqwe,tootsie,milana,zenith,fktrcfylhf,shania,frisco,polniypizdec0211,crazybab,junebug,fugazi,rereirf,vfvekz,1001,sausage,vfczyz,koshka,clapton,justin1,anhyeuem,condom,fubar,hardrock,skywalker,tundra,cocks,gringo,150781,canon,vitalik,aspire,stocks,samsung1,applepie,abc12345,arjay,gandalf1,boob,pillow,sparkle,gmoney,rockhard,lucky13,samiam,everest,hellyeah,bigsexy,skorpion,rfrnec,hedgehog,australi,candle,slacker,dicks,voyeur,jazzman,america1,bobby1,br0d3r,wolfie,vfksirf,1qa2ws3ed,13243546,fright,yosemite,temp,karolina,fart,barsik,surf,cheetah,baddog,deniska,starship,bootie,milena,hithere,kume,greatone,dildo,50cent,0.0.0.000,albion,amanda1,midget,lion,maxell,football1,cyclone,freeporn,nikola,bonsai,kenshin,slider,balloon,roadkill,killbill,222333,jerkoff,78945612,dinamo,tekken,rambler,goliath,cinnamon,malaka,backdoor,fiesta,packers1,rastaman,fletch,sojdlg123aljg,stefano,artemis,calico,nyjets,damnit,robotech,duchess,rctybz,hooter,keywest,18436572,hal9000,mechanic,pingpong,operator,presto,sword,rasputin,spank,bristol,faggot,shado,963852741,amsterda,321456,wibble,carrera,alibaba,majestic,ramses,duster,route66,trident,clipper,steeler,wrestlin,divine,kipper,gotohell,kingfish,snake1,passwords,buttman,pompey,viagra,zxcvbnm1,spurs,332211,slutty,lineage2,oleg,macross,pooter,brian1,qwert1,charles1,slave,jokers,yzerman,swimmer,ne1469,nwo4life,solnce,seamus,lolipop,pupsik,moose1,ivanova,secret1,matador,love69,420247,ktyjxrf,subway,cinder,vermont,pussie,chico,florian,magick,guiness,allsop,ghetto,flash1,a123456789,typhoon,dfkthf,depeche,skydive,dammit,seeker,fuckthis,crysis,kcj9wx5n,umbrella,r2d2c3po,123123q,snoopdog,critter,theboss,ding,162534,splinter,kinky,cyclops,jayhawk,456321,caramel,qwer123,underdog,caveman,onlyme,grapes,feather,hotshot,fuckher,renault,george1,sex123,pippen,000001,789987,floppy,cunts,megapass,1000,pornos,usmc,kickass,great1,quattro,135246,wassup,helloo,p0015123,nicole1,chivas,shannon1,bullseye,java,fishes,blackhaw,jamesbond,tunafish,juggalo,dkflbckfd,123789456,dallas1,translator,122333,beanie,alucard,gfhjkm123,supersta,magicman,ashley1,cohiba,xbox360,caligula,12131415,facial,7753191,dfktynbyf,cobra1,cigars,fang,klingon,bob123,safari,looser,10203,deepthroat,malina,200000,tazmania,gonzo,goalie,jacob1,monaco,cruiser,misfit,vh5150,tommyboy,marino13,yousuck,sharky,vfhufhbnf,horizon,absolut,brighton,123456r,death1,kungfu,maxx,forfun,mamapapa,enter1,budweise,banker,getmoney,kostya,qazwsx12,bigbear,vector,fallout,nudist,gunners,royals,chainsaw,scania,trader,blueboy,walrus,eastside,kahuna,qwerty1234,love123,steph,01011989,cypress,champ,undertaker,ybrjkfq,europa,snowboar,sabres,moneyman,chrisbln,minime,nipper,groucho,whitey,viewsonic,penthous,wolf359,fabric,flounder,coolguy,whitesox,passme,smegma,skidoo,thanatos,fucku2,snapple,dalejr,mondeo,thesims,mybaby,panasoni,sinbad,thecat,topher,frodo,sneakers,q123456,z1x2c3,alfa,chicago1,taylor1,ghjcnjnfr,cat123,olivier,cyber,titanium,0420,madison1,jabroni,dang,hambone,intruder,holly1,gargoyle,sadie1,static,poseidon,studly,newcastl,sexxxx,poppy,johannes,danzig,beastie,musica,buckshot,sunnyday,adonis,bluedog,bonkers,2128506,chrono,compute,spawn,01011988,turbo1,smelly,wapbbs,goldstar,ferrari1,778899,quantum,pisces,boomboom,gunnar,1024,test1234,florida1,nike,superman1,multiplelo,custom,motherlode,1qwerty,westwood,usnavy,apple123,daewoo,korn,stereo,sasuke,sunflowe,watcher,dharma,555777,mouse1,assholes,babyblue,123qwerty,marius,walmart,snoop,starfire,tigger1,paintbal,knickers,aaliyah,lokomotiv,theend,winston1,sapper,rover,erotica,scanner,racer,zeus,sexy69,doogie,bayern,joshua1,newbie,scott1,losers,droopy,outkast,martin1,dodge1,wasser,ufkbyf,rjycnfynby,thirteen,12345z,112211,hotred,deejay,hotpussy,192837,jessic,philippe,scout,panther1,cubbies,havefun,magpie,fghtkm,avalanch,newyork1,pudding,leonid,harry1,cbr600,audia4,bimmer,fucku,01011984,idontknow,vfvfgfgf,1357,aleksey,builder,01011987,zerocool,godfather,mylife,donuts,allmine,redfish,777888,sascha,nitram,bounce,333666,smokes,1x2zkg8w,rodman,stunner,zxasqw12,hoosier,hairy,beretta,insert,123456s,rtyuehe,francesc,tights,cheese1,micron,quartz,hockey1,gegcbr,searay,jewels,bogey,paintball,celeron,padres,bing,syncmaster,ziggy,simon1,beaches,prissy,diehard,orange1,mittens,aleksandra,queens,02071986,biggles,thongs,southpark,artur,twinkle,gretzky,rabota,cambiami,monalisa,gollum,chuckles,spike1,gladiator,whisky,spongebob,sexy1,03082006,mazafaka,meathead,4121,ou8122,barefoot,12345678q,cfitymrf,bigass,a1s2d3,kosmos,blessing,titty,clevelan,terrapin,ginger1,johnboy,maggot,clarinet,deeznutz,336699,stumpy,stoney,footbal,traveler,volvo,bucket,snapon,pianoman,hawkeyes,futbol,casanova,tango,goodboy,scuba,honey1,sexyman,warthog,mustard,abc1234,nickel,10203040,meowmeow,1012,boricua,prophet,sauron,12qwas,reefer,andromeda,crystal1,joker1,90210,goofy,loco,lovesex,triangle,whatsup,mellow,bengals,monster1,maste,01011910,lover1,love1,123aaa,sunshin,smeghead,hokies,sting,welder,rambo,cerberus,bunny1,rockford,monke,1q2w3e4r5,goldwing,gabriell,buzzard,crjhgbjy,james007,rainman,groove,tiberius,purdue,nokia6300,hayabusa,shou,jagger,diver,zigzag,poochie,usarmy,phish,redwood,redwing,12345679,salamander,silver1,abcd123,sputnik,boobie,ripple,eternal,12qw34er,thegreat,allstar,slinky,gesperrt,mishka,whiskers,pinhead,overkill,sweet1,rhfcjnrf,montgom240,sersolution,jamie1,starman,proxy,swords,nikolay,bacardi,rasta,badgirl,rebecca1,wildman,penny1,spaceman,1007,10101,logan1,hacked,bulldog1,helmet,windsor,buffy1,runescape,trapper,123451,banane,dbrnjh,ripken,12345qwe,frisky,shun,fester,oasis,lightning,ib6ub9,cicero,kool,pony,thedog,784512,01011992,megatron,illusion,edward1,napster,11223,squash,roadking,woohoo,19411945,hoosiers,01091989,tracker,bagira,midway,leavemealone,br549,14725836,235689,menace,rachel1,feng,laser,stoned,realmadrid,787898,balloons,tinkerbell,5551212,maria1,pobeda,heineken,sonics,moonlight,optimus,comet,orchid,02071982,jaybird,kashmir,12345678a,chuang,chunky,peach,mortgage,rulezzz,saleen,chuckie,zippy,fishing1,gsxr750,doghouse,maxim,reader,shai,buddah,benfica,chou,salomon,meister,eraser,blackbir,bigmike,starter,pissing,angus,deluxe,eagles1,hardcock,135792468,mian,seahawks,godfathe,bookworm,gregor,intel,talisman,blackjack,babyface,hawaiian,dogfood,zhong,01011975,sancho,ludmila,medusa,mortimer,123456654321,roadrunn,just4me,stalin,01011993,handyman,alphabet,pizzas,calgary,clouds,password2,cgfhnfr,f**k,cubswin,gong,lexus,max123,xxx123,digital1,gfhjkm1,7779311,missy1,michae,beautifu,gator1,1005,pacers,buddie,chinook,heckfy,dutchess,sally1,breasts,beowulf,darkman,jenn,tiffany1,zhei,quan,qazwsx1,satana,shang,idontkno,smiths,puddin,nasty1,teddybea,valkyrie,passwd,chao,boxster,killers,yoda,cheater,inuyasha,beast1,wareagle,foryou,dragonball,mermaid,bhbirf,teddy1,dolphin1,misty1,delphi,gromit,sponge,qazzaq,fytxrf,gameover,diao,sergi,beamer,beemer,kittykat,rancid,manowar,adam12,diggler,assword,austin1,wishbone,gonavy,sparky1,fisting,thedude,sinister,1213,venera,novell,salsero,jayden,fuckoff1,linda1,vedder,02021987,1pussy,redline,lust,jktymrf,02011985,dfcbkbq,dragon12,chrome,gamecube,titten,cong,bella1,leng,02081988,eureka,bitchass,147369,banner,lakota,123321a,mustafa,preacher,hotbox,02041986,z1x2c3v4,playstation,01011977,claymore,electra,checkers,zheng,qing,armagedon,02051986,wrestle,svoboda,bulls,nimbus,alenka,madina,newpass6,onetime,aa123456,bartman,02091987,silverad,electron,12345t,devil666,oliver1,skylar,rhtdtlrj,gobucks,johann,12011987,milkman,02101985,camper,thunderb,bigbutt,jammin,davide,cheeks,goaway,lighter,claudi,thumbs,pissoff,ghostrider,cocaine,teng,squall,lotus,hootie,blackout,doitnow,subzero,02031986,marine1,02021988,pothead,123456qw,skate,1369,peng,antoni,neng,miao,bcfields,1492,marika,794613,musashi,tulips,nong,piao,chai,ruan,southpar,02061985,nude,mandarin,654123,ninjas,cannabis,jetski,xerxes,zhuang,kleopatra,dickie,bilbo,pinky,morgan1,1020,1017,dieter,baseball1,tottenham,quest,yfnfkmz,dirtbike,1234567890a,mango,jackson5,ipswich,iamgod,02011987,tdutybz,modena,qiao,slippery,qweasd123,bluefish,samtron,toon,111333,iscool,02091986,petrov,fuzzy,zhou,1357924680,mollydog,deng,02021986,1236987,pheonix,zhun,ghblehjr,othello,starcraf,000111,sanfran,a11111,cameltoe,badman,vasilisa,jiang,1qaz2ws,luan,sveta,12qw12,akira,chuai,369963,cheech,beatle,pickup,paloma,01011983,caravan,elizaveta,gawker,banzai,pussey,mullet,seng,bingo1,bearcat,flexible,farscape,borussia,zhuai,templar,guitar1,toolman,yfcntymrf,chloe1,xiang,slave1,guai,nuggets,02081984,mantis,slim,scorpio1,fyutkbyf,thedoors,02081987,02061986,123qq123,zappa,fergie,7ugd5hip2j,huai,asdfzxcv,sunflower,pussyman,deadpool,bigtit,01011982,love12,lassie,skyler,gatorade,carpedie,jockey,mancity,spectre,02021984,cameron1,artemka,reng,02031984,iomega,jing,moritz,spice,rhino,spinner,heater,zhai,hover,talon,grease,qiong,corleone,ltybcrf,tian,cowboy1,hippie,chimera,ting,alex123,02021985,mickey1,corsair,sonoma,aaron1,xxxpass,bacchus,webmaste,chuo,xyz123,chrysler,spurs1,artem,shei,cosmic,01020304,deutsch,gabriel1,123455,oceans,987456321,binladen,latinas,a12345678,speedo,buttercu,02081989,21031988,merlot,millwall,ceng,kotaku,jiong,dragonba,2580,stonecold,snuffy,01011999,02011986,hellos,blaze,maggie1,slapper,istanbul,bonjovi,babylove,mazda,bullfrog,phoeni,meng,porsche1,nomore,02061989,bobdylan,capslock,orion1,zaraza,teddybear,ntktajy,myname,rong,wraith,mets,niao,02041984,smokie,chevrolet,dialog,gfhjkmgfhjkm,dotcom,vadim,monarch,athlon,mikey1,hamish,pian,liang,coolness,chui,thoma,ramones,ciccio,chippy,eddie1,house1,ning,marker,cougars,jackpot,barbados,reds,pdtplf,knockers,cobalt,amateurs,dipshit,napoli,kilroy,pulsar,jayhawks,daemon,alexey,weng,shuang,9293709b13,shiner,eldorado,soulmate,mclaren,golfer1,andromed,duan,50spanks,sexyboy,dogshit,02021983,shuo,kakashka,syzygy,111111a,yeahbaby,qiang,netscape,fulham,120676,gooner,zhui,rainbow6,laurent,dog123,halifax,freeway,carlitos,147963,eastwood,microphone,monkey12,1123,persik,coldbeer,geng,nuan,danny1,fgtkmcby,entropy,gadget,just4fun,sophi,baggio,carlito,1234567891,02021989,02041983,specialk,piramida,suan,bigblue,salasana,hopeful,mephisto,bailey1,hack,annie1,generic,violetta,spencer1,arcadia,02051983,hondas,9562876,trainer,jones1,smashing,liao,159632,iceberg,rebel1,snooker,temp123,zang,matteo,fastball,q2w3e4r5,bamboo,fuckyo,shutup,astro,buddyboy,nikitos,redbird,maxxxx,shitface,02031987,kuai,kissmyass,sahara,radiohea,1234asdf,wildcard,maxwell1,patric,plasma,heynow,bruno1,shao,bigfish,misfits,sassy1,sheng,02011988,02081986,testpass,nanook,cygnus,licking,slavik,pringles,xing,1022,ninja1,submit,dundee,tiburon,pinkfloyd,yummy,shuai,guang,chopin,obelix,insomnia,stroker,1a2s3d4f,1223,playboy1,lazarus,jorda,spider1,homerj,sleeper,02041982,darklord,cang,02041988,02041987,tripod,magician,jelly,telephon,15975,vsjasnel12,pasword,iverson3,pavlov,homeboy,gamecock,amigo,brodie,budapest,yjdsqgfhjkm,reckless,02011980,pang,tiger123,2469,mason1,orient,01011979,zong,cdtnbr,maksimka,1011,bushido,taxman,giorgio,sphinx,kazantip,02101984,concorde,verizon,lovebug,georg,sam123,seadoo,qazwsxedc123,jiao,jezebel,pharmacy,abnormal,jellybea,maxime,puffy,islander,bunnies,jiggaman,drakon,010180,pluto,zhjckfd,12365,classics,crusher,mordor,hooligan,strawberry,02081985,scrabble,hawaii50,1224,wg8e3wjf,cthtuf,premium,arrow,123456qwe,mazda626,ramrod,tootie,rhjrjlbk,ghost1,1211,bounty,niang,02071984,goat,killer12,sweetnes,porno1,masamune,426hemi,corolla,mariposa,hjccbz,doomsday,bummer,blue12,zhao,bird33,excalibur,samsun,kirsty,buttfuck,kfhbcf,zhuo,marcello,ozzy,02021982,dynamite,655321,master12,123465,lollypop,stepan,1qa2ws,spiker,goirish,callum,michael2,moonbeam,attila,henry1,lindros,andrea1,sporty,lantern,12365478,nextel,violin,volcom,998877,water1,imation,inspiron,dynamo,citadel,placebo,clowns,tiao,02061988,tripper,dabears,haggis,merlin1,02031985,anthrax,amerika,iloveme,vsegda,burrito,bombers,snowboard,forsaken,katarina,a1a2a3,woofer,tigger2,fullmoon,tiger2,spock,hannah1,snoopy1,sexxxy,sausages,stanislav,cobain,robotics,exotic,green123,mobydick,senators,pumpkins,fergus,asddsa,147741,258852,windsurf,reddevil,vfitymrf,nevermind,nang,woodland,4417,mick,shui,q1q2q3,wingman,69696,superb,zuan,ganesh,pecker,zephyr,anastasiya,icu812,larry1,02081982,broker,zalupa,mihail,vfibyf,dogger,7007,paddle,varvara,schalke,1z2x3c,presiden,yankees2,tuning,poopy,02051982,concord,vanguard,stiffy,rjhjktdf,felix1,wrench,firewall,boxer,bubba69,popper,02011984,temppass,gobears,cuan,tipper,fuckme1,kamila,thong,puss,bigcat,drummer1,02031982,sowhat,digimon,tigers1,rang,jingle,bian,uranus,soprano,mandy1,dusty1,fandango,aloha,pumpkin1,postman,02061980,dogcat,bombay,pussy123,onetwo,highheel,pippo,julie1,laura1,pepito,beng,smokey1,stylus,stratus,reload,duckie,karen1,jimbo1,225588,369258,krusty,snappy,asdf12,electro,111qqq,kuang,fishin,clit,abstr,christma,qqqqq1,1234560,carnage,guyver,boxers,kittens,zeng,1000000,qwerty11,toaster,cramps,yugioh,02061987,icehouse,zxcvbnm123,pineapple,namaste,harrypotter,mygirl,falcon1,earnhard,fender1,spikes,nutmeg,01081989,dogboy,02091983,369852,softail,mypassword,prowler,bigboss,1112,harvest,heng,jubilee,killjoy,basset,keng,zaqxswcde,redsox1,biao,titan,misfit99,robot,wifey,kidrock,02101987,gameboy,enrico,1z2x3c4v,broncos1,arrows,havana,banger,cookie1,chriss,123qw,platypus,cindy1,lumber,pinball,foxy,london1,1023,05051987,02041985,password12,superma,longbow,radiohead,nigga,12051988,spongebo,qwert12345,abrakadabra,dodgers1,02101989,chillin,niceguy,pistons,hookup,santafe,bigben,jets,1013,vikings1,mankind,viktoriya,beardog,hammer1,02071980,reddwarf,magelan,longjohn,jennife,gilles,carmex2,02071987,stasik,bumper,doofus,slamdunk,pixies,garion,steffi,alessandro,beerman,niceass,warrior1,honolulu,134679852,visa,johndeer,mother1,windmill,boozer,oatmeal,aptiva,busty,delight,tasty,slick1,bergkamp,badgers,guitars,puffin,02091981,nikki1,irishman,miller1,zildjian,123000,airwolf,magnet,anai,install,02041981,02061983,astra,romans,megan1,mudvayne,freebird,muscles,dogbert,02091980,02091984,snowflak,01011900,mang,joseph1,nygiants,playstat,junior1,vjcrdf,qwer12,webhompas,giraffe,pelican,jefferso,comanche,bruiser,monkeybo,kjkszpj,123456l,micro,albany,02051987,angel123,epsilon,aladin,death666,hounddog,josephin,altima,chilly,02071988,78945,ultra,02041979,gasman,thisisit,pavel,idunno,kimmie,05051985,paulie,ballin,medion,moondog,manolo,pallmall,climber,fishbone,genesis1,153624,toffee,tbone,clippers,krypton,jerry1,picturs,compass,111111q,02051988,1121,02081977,sairam,getout,333777,cobras,22041987,bigblock,severin,booster,norwich,whiteout,ctrhtn,123456m,02061984,hewlett,shocker,fuckinside,02031981,chase1,white1,versace,123456789s,basebal,iloveyou2,bluebell,08031986,anthon,stubby,foreve,undertak,werder,saiyan,mama123,medic,chipmunk,mike123,mazdarx7,qwe123qwe,bowwow,kjrjvjnbd,celeb,choochoo,demo,lovelife,02051984,colnago,lithium,02051989,15051981,zzzxxx,welcom,anastasi,fidelio,franc,26061987,roadster,stone55,drifter,hookem,hellboy,1234qw,cbr900rr,sinned,good123654,storm1,gypsy,zebra,zachary1,toejam,buceta,02021979,testing1,redfox,lineage,mike1,highbury,koroleva,nathan1,washingt,02061982,02091985,vintage,redbaron,dalshe,mykids,11051987,macbeth,julien,james123,krasotka,111000,10011986,987123,pipeline,tatarin,sensei,codered,komodo,frogman,7894561230,nascar24,juicy,01031988,redrose,mydick,pigeon,tkbpfdtnf,smirnoff,1215,spam,winner1,flyfish,moskva,81fukkc,21031987,olesya,starligh,summer99,13041988,fishhead,freesex,super12,06061986,azazel,scoobydoo,02021981,cabron,yogibear,sheba1,konstantin,tranny,chilli,terminat,ghbywtccf,slowhand,soccer12,cricket1,fuckhead,1002,seagull,achtung,blam,bigbob,bdsm,nostromo,survivor,cnfybckfd,lemonade,boomer1,rainbow1,rober,irinka,cocksuck,peaches1,itsme,sugar1,zodiac,upyours,dinara,135791,sunny1,chiara,johnson1,02041989,solitude,habibi,sushi,markiz,smoke1,rockies,catwoman,johnny1,qwerty7,bearcats,username,01011978,wanderer,ohshit,02101986,sigma,stephen1,paradigm,02011989,flanker,sanity,jsbach,spotty,bologna,fantasia,chevys,borabora,cocker,74108520,123ewq,12021988,01061990,gtnhjdbx,02071981,01011960,sundevil,3000gt,mustang6,gagging,maggi,armstron,yfnfkb,13041987,revolver,02021976,trouble1,madcat,jeremy1,jackass1,volkswag,30051985,corndog,pool6123,marines1,03041991,pizza1,piggy,sissy,02031979,sunfire,angelus,undead,24061986,14061991,wildbill,shinobi,45m2do5bs,123qwer,21011989,cleopatr,lasvega,hornets,amorcit,11081989,coventry,nirvana1,destin,sidekick,20061988,02081983,gbhfvblf,sneaky,bmw325,22021989,nfytxrf,sekret,kalina,zanzibar,hotone,qazws,wasabi,heidi1,highlander,blues1,hitachi,paolo,23041987,slayer1,simba1,02011981,tinkerbe,kieran,01121986,172839,boiler,1125,bluesman,waffle,asdfgh01,threesom,conan,1102,reflex,18011987,nautilus,everlast,fatty,vader1,01071986,cyborg,ghbdtn123,birddog,rubble,02071983,suckers,02021973,skyhawk,12qw12qw,dakota1,joebob,nokia6233,woodie,longdong,lamer,troll,ghjcnjgfhjkm,420000,boating,nitro,armada,messiah,1031,penguin1,02091989,americ,02071989,redeye,asdqwe123,07071987,monty1,goten,spikey,sonata,635241,tokiohotel,sonyericsson,citroen,compaq1,1812,umpire,belmont,jonny,pantera1,nudes,palmtree,14111986,fenway,bighead,razor,gryphon,andyod22,aaaaa1,taco,10031988,enterme,malachi,dogface,reptile,01041985,dindom,handball,marseille,candy1,19101987,torino,tigge,matthias,viewsoni,13031987,stinker,evangelion,24011985,123456123,rampage,sandrine,02081980,thecrow,astral,28041987,sprinter,private1,seabee,shibby,02101988,25081988,fearless,junkie,01091987,aramis,antelope,draven,fuck1,mazda6,eggman,02021990,barselona,buddy123,19061987,fyfnjkbq,nancy1,12121990,10071987,sluggo,kille,hotties,irishka,zxcasdqwe123,shamus,fairlane,honeybee,soccer10,13061986,fantomas,17051988,10051987,20111986,gladiato,karachi,gambler,gordo,01011995,biatch,matthe,25800852,papito,excite,buffalo1,bobdole,cheshire,player1,28021992,thewho,10101986,pinky1,mentor,tomahawk,brown1,03041986,bismillah,bigpoppa,ijrjkfl,01121988,runaway,08121986,skibum,studman,helper,squeak,holycow,manfred,harlem,glock,gideon,987321,14021985,yellow1,wizard1,margarit,success1,medved,sf49ers,lambda,pasadena,johngalt,quasar,1776,02031980,coldplay,amand,playa,bigpimp,04041991,capricorn,elefant,sweetness,bruce1,luca,dominik,10011990,biker,09051945,datsun,elcamino,trinitro,malice,audi,voyager1,02101983,joe123,carpente,spartan1,mario1,glamour,diaper,12121985,22011988,winter1,asimov,callisto,nikolai,pebble,02101981,vendetta,david123,boytoy,11061985,02031989,iloveyou1,stupid1,cayman,casper1,zippo,yamahar1,wildwood,foxylady,calibra,02041980,27061988,dungeon,leedsutd,30041986,11051990,bestbuy,antares,dominion,24680,01061986,skillet,enforcer,derparol,01041988,196969,29071983,f00tball,purple1,mingus,25031987,21031990,remingto,giggles,klaste,3x7pxr,01011994,coolcat,29051989,megane,20031987,02051980,04041988,synergy,0000007,macman,iforget,adgjmp,vjqgfhjkm,28011987,rfvfcenhf,16051989,25121987,16051987,rogue,mamamia,08051990,20091991,1210,carnival,bolitas,paris1,dmitriy,dimas,05051989,papillon,knuckles,29011985,hola,tophat,28021990,100500,cutiepie,devo,415263,ducks,ghjuhfvvf,asdqwe,22021986,freefall,parol,02011983,zarina,buste,vitamin,warez,bigones,17061988,baritone,jamess,twiggy,mischief,bitchy,hetfield,1003,dontknow,grinch,sasha_007,18061990,12031985,12031987,calimero,224466,letmei,15011987,acmilan,alexandre,02031977,08081988,whiteboy,21051991,barney1,02071978,money123,18091985,bigdawg,02031988,cygnusx1,zoloto,31011987,firefigh,blowfish,screamer,lfybbk,20051988,chelse,11121986,01031989,harddick,sexylady,30031988,02041974,auditt,pizdec,kojak,kfgjxrf,20091988,123456ru,wp2003wp,1204,15051990,slugger,kordell1,03031986,swinging,01011974,02071979,rockie,dimples,1234123,1dragon,trucking,rusty2,roger1,marijuana,kerouac,02051978,08031985,paco,thecure,keepout,kernel,noname123,13121985,francisc,bozo,02011982,22071986,02101979,obsidian,12345qw,spud,tabasco,02051985,jaguars,dfktynby,kokomo,popova,notused,sevens,4200,magneto,02051976,roswell,15101986,21101986,lakeside,bigbang,aspen,little1,14021986,loki,suckmydick,strawber,carlos1,nokian73,dirty1,joshu,25091987,16121987,02041975,advent,17011987,slimshady,whistler,10101990,stryker,22031984,15021985,01031985,blueball,26031988,ksusha,bahamut,robocop,w_pass,chris123,impreza,prozac,bookie,bricks,13021990,alice1,cassandr,11111q,john123,4ever,korova,02051973,142857,25041988,paramedi,eclipse1,salope,07091990,1124,darkangel,23021986,999666,nomad,02051981,smackdow,01021990,yoyoma,argentin,moonligh,57chevy,bootys,hardone,capricor,galant,spanker,dkflbr,24111989,magpies,krolik,21051988,cevthrb,cheddar,22041988,bigbooty,scuba1,qwedsa,duffman,bukkake,acura,johncena,sexxy,p@ssw0rd,258369,cherries,12345s,asgard,leopold,fuck123,mopar,lalakers,dogpound,matrix1,crusty,spanner,kestrel,fenris,universa,peachy,assasin,lemmein,eggplant,hejsan,canucks,wendy1,doggy1,aikman,tupac,turnip,godlike,fussball,golden1,19283746,april1,django,petrova,captain1,vincent1,ratman,taekwondo,chocha,serpent,perfect1,capetown,vampir,amore,gymnast,timeout,nbvjatq,blue32,ksenia,k.lvbkf,nazgul,budweiser,clutch,mariya,sylveste,02051972,beaker,cartman1,q11111,sexxx,forever1,loser1,marseill,magellan,vehpbr,sexgod,jktxrf,hallo123,132456,liverpool1,southpaw,seneca,camden,357159,camero,tenchi,johndoe,145236,roofer,741963,vlad,02041978,fktyrf,zxcv123,wingnut,wolfpac,notebook,pufunga7782,brandy1,biteme1,goodgirl,redhat,02031978,challeng,millenium,hoops,maveric,noname,angus1,gaell,onion,olympus,sabrina1,ricard,sixpack,gratis,gagged,camaross,hotgirls,flasher,02051977,bubba123,goldfing,moonshin,gerrard,volkov,sonyfuck,mandrake,258963,tracer,lakers1,asians,susan1,money12,helmut,boater,diablo2,1234zxcv,dogwood,bubbles1,happy2,randy1,aries,beach1,marcius2,navigator,goodie,hellokitty,fkbyjxrf,earthlink,lookout,jumbo,opendoor,stanley1,marie1,12345m,07071977,ashle,wormix,murzik,02081976,lakewood,bluejays,loveya,commande,gateway2,peppe,01011976,7896321,goth,oreo,slammer,rasmus,faith1,knight1,stone1,redskin,ironmaiden,gotmilk,destiny1,dejavu,1master,midnite,timosha,espresso,delfin,toriamos,oberon,ceasar,markie,1a2s3d,ghhh47hj7649,vjkjrj,daddyo,dougie,disco,auggie,lekker,therock1,ou8123,start1,noway,p4ssw0rd,shadow12,333444,saigon,2fast4u,capecod,23skidoo,qazxcv,beater,bremen,aaasss,roadrunner,peace1,12345qwer,02071975,platon,bordeaux,vbkfirf,135798642,test12,supernov,beatles1,qwert40,optimist,vanessa1,prince1,ilovegod,nightwish,natasha1,alchemy,bimbo,blue99,patches1,gsxr1000,richar,hattrick,hott,solaris,proton,nevets,enternow,beavis1,amigos,159357a,ambers,lenochka,147896,suckdick,shag,intercourse,blue1234,spiral,02061977,tosser,ilove,02031975,cowgirl,canuck,q2w3e4,munch,spoons,waterboy,123567,evgeniy,savior,zasada,redcar,mamacita,terefon,globus,doggies,htubcnhfwbz,1008,cuervo,suslik,azertyui,limewire,houston1,stratfor,steaua,coors,tennis1,12345qwerty,stigmata,derf,klondike,patrici,marijuan,hardball,odyssey,nineinch,boston1,pass1,beezer,sandr,charon,power123,a1234,vauxhall,875421,awesome1,reggae,boulder,funstuff,iriska,krokodil,rfntymrf,sterva,champ1,bball,peeper,m123456,toolbox,cabernet,sheepdog,magic32,pigpen,02041977,holein1,lhfrjy,banan,dabomb,natalie1,jennaj,montana1,joecool,funky,steven1,ringo,junio,sammy123,qqqwww,baltimor,footjob,geezer,357951,mash4077,cashmone,pancake,monic,grandam,bongo,yessir,gocubs,nastia,vancouve,barley,dragon69,watford,ilikepie,02071976,laddie,123456789m,hairball,toonarmy,pimpdadd,cvthnm,hunte,davinci,lback,sophie1,firenze,q1234567,admin1,bonanza,elway7,daman,strap,azert,wxcvbn,afrika,theforce,123456t,idefix,wolfen,houdini,scheisse,default,beech,maserati,02061976,sigmachi,dylan1,bigdicks,eskimo,mizzou,02101976,riccardo,egghead,111777,kronos,ghbrjk,chaos1,jomama,rfhnjirf,rodeo,dolemite,cafc91,nittany,pathfind,mikael,password9,vqsablpzla,purpl,gabber,modelsne,myxworld,hellsing,punker,rocknrol,fishon,fuck69,02041976,lolol,twinkie,tripleh,cirrus,redbone,killer123,biggun,allegro,gthcbr,smith1,wanking,bootsy,barry1,mohawk,koolaid,5329,futurama,samoht,klizma,996633,lobo,honeys,peanut1,556677,zxasqw,joemama,javelin,samm,223322,sandra1,flicks,montag,nataly,3006,tasha1,1235789,dogbone,poker1,p0o9i8u7,goodday,smoothie,toocool,max333,metroid,archange,vagabond,billabon,22061941,tyson1,02031973,darkange,skateboard,evolutio,morrowind,wizards,frodo1,rockin,cumslut,plastics,zaqwsxcde,5201314,doit,outback,bumble,dominiqu,persona,nevermore,alinka,02021971,forgetit,sexo,all4one,c2h5oh,petunia,sheeba,kenny1,elisabet,aolsucks,woodstoc,pumper,02011975,fabio,granada,scrapper,123459,minimoni,q123456789,breaker,1004,02091976,ncc74656,slimshad,friendster,austin31,wiseguy,donner,dilbert1,132465,blackbird,buffet,jellybean,barfly,behappy,01011971,carebear,fireblad,02051975,boxcar,cheeky,kiteboy,hello12,panda1,elvisp,opennow,doktor,alex12,02101977,pornking,flamengo,02091975,snowbird,lonesome,robin1,11111a,weed420,baracuda,bleach,12345abc,nokia1,metall,singapor,mariner,herewego,dingo,tycoon,cubs,blunts,proview,123456789d,kamasutra,lagnaf,vipergts,navyseal,starwar,masterbate,wildone,peterbil,cucumber,butkus,123qwert,climax,deniro,gotribe,cement,scooby1,summer69,harrier,shodan,newyear,02091977,starwars1,romeo1,sedona,harald,doubled,sasha123,bigguns,salami,awnyce,kiwi,homemade,pimping,azzer,bradley1,warhamme,linkin,dudeman,qwe321,pinnacle,maxdog,flipflop,lfitymrf,fucker1,acidburn,esquire,sperma,fellatio,jeepster,thedon,sexybitch,pookey,spliff,widget,vfntvfnbrf,trinity1,mutant,samuel1,meliss,gohome,1q2q3q,mercede,comein,grin,cartoons,paragon,henrik,rainyday,pacino,senna,bigdog1,alleycat,12345qaz,narnia,mustang2,tanya1,gianni,apollo11,wetter,clovis,escalade,rainbows,freddy1,smart1,daisydog,s123456,cocksucker,pushkin,lefty,sambo,fyutkjxtr,hiziad,boyz,whiplash,orchard,newark,adrenalin,1598753,bootsie,chelle,trustme,chewy,golfgti,tuscl,ambrosia,5wr2i7h8,penetration,shonuf,jughead,payday,stickman,gotham,kolokol,johnny5,kolbasa,stang,puppydog,charisma,gators1,mone,jakarta,draco,nightmar,01011973,inlove,laetitia,02091973,tarpon,nautica,meadow,0192837465,luckyone,14881488,chessie,goldeney,tarakan,69camaro,bungle,wordup,interne,fuckme2,515000,dragonfl,sprout,02081974,gerbil,bandit1,02071971,melanie1,phialpha,camber,kathy1,adriano,gonzo1,10293847,bigjohn,bismarck,7777777a,scamper,12348765,rabbits,222777,bynthytn,dima123,alexander1,mallorca,dragster,favorite6,beethove,burner,cooper1,fosters,hello2,normandy,777999,sebring,1michael,lauren1,blake1,killa,02091971,nounours,trumpet1,thumper1,playball,xantia,rugby1,rocknroll,guillaum,angela1,strelok,prosper,buttercup,masterp,dbnfkbr,cambridg,venom,treefrog,lumina,1234566,supra,sexybabe,freee,shen,frogs,driller,pavement,grace1,dicky,checker,smackdown,pandas,cannibal,asdffdsa,blue42,zyjxrf,nthvbyfnjh,melrose,neon,jabber,gamma,369258147,aprilia,atticus,benessere,catcher,skipper1,azertyuiop,sixty9,thierry,treetop,jello,melons,123456789qwe,tantra,buzzer,catnip,bouncer,computer1,sexyone,ananas,young1,olenka,sexman,mooses,kittys,sephiroth,contra,hallowee,skylark,sparkles,777333,1qazxsw23edc,lucas1,q1w2e3r,gofast,hannes,amethyst,ploppy,flower2,hotass,amatory,volleyba,dixie1,bettyboo,ticklish,02061974,frenchy,phish1,murphy1,trustno,02061972,leinad,mynameis,spooge,jupiter1,hyundai,frosch,junkmail,abacab,marbles,32167,casio,sunshine1,wayne1,longhair,caster,snicker,02101973,gannibal,skinhead,hansol,gatsby,segblue2,montecar,plato,gumby,kaboom,matty,bosco1,888999,jazzy,panter,jesus123,charlie2,giulia,candyass,sex69,travis1,farmboy,special1,02041973,letsdoit,password01,allison1,abcdefg1,notredam,ilikeit,789654123,liberty1,rugger,uptown,alcatraz,123456w,airman,007bond,navajo,kenobi,terrier,stayout,grisha,frankie1,fluff,1qazzaq1,1234561,virginie,1234568,tango1,werdna,octopus,fitter,dfcbkbcf,blacklab,115599,montrose,allen1,supernova,frederik,ilovepussy,justice1,radeon,playboy2,blubber,sliver,swoosh,motocros,lockdown,pearls,thebear,istheman,pinetree,biit,1234rewq,rustydog,tampabay,titts,babycake,jehovah,vampire1,streaming,collie,camil,fidelity,calvin1,stitch,gatit,restart,puppy1,budgie,grunt,capitals,hiking,dreamcas,zorro1,321678,riffraff,makaka,playmate,napalm,rollin,amstel,zxcvb123,samanth,rumble,fuckme69,jimmys,951357,pizzaman,1234567899,tralala,delpiero,alexi,yamato,itisme,1million,vfndtq,kahlua,londo,wonderboy,carrots,tazz,ratboy,rfgecnf,02081973,nico,fujitsu,tujhrf,sergbest,blobby,02051970,sonic1,1357911,smirnov,video1,panhead,bucky,02031974,44332211,duffer,cashmoney,left4dead,bagpuss,salman,01011972,titfuck,66613666,england1,malish,dresden,lemans,darina,zapper,123456as,123456qqq,met2002,02041972,redstar,blue23,1234509876,pajero,booyah,please1,tetsuo,semper,finder,hanuman,sunlight,123456n,02061971,treble,cupoi,password99,dimitri,3ip76k2,popcorn1,lol12345,stellar,nympho,shark1,keith1,saskia,bigtruck,revoluti,rambo1,asd222,feelgood,phat,gogators,bismark,cola,puck,furball,burnout,slonik,bowtie,mommy1,icecube,fabienn,mouser,papamama,rolex,giants1,blue11,trooper1,momdad,iklo,morten,rhubarb,gareth,123456d,blitz,canada1,r2d2,brest,tigercat,usmarine,lilbit,benny1,azrael,lebowski,12345r,madagaskar,begemot,loverman,dragonballz,italiano,mazda3,naughty1,onions,diver1,cyrano,capcom,asdfg123,forlife,fisherman,weare138,requiem,mufasa,alpha123,piercing,hellas,abracadabra,duckman,caracas,macintos,02011971,jordan2,crescent,fduecn,hogtied,eatmenow,ramjet,18121812,kicksass,whatthe,discus,rfhfvtkmrf,rufus1,sqdwfe,mantle,vegitto,trek,dan123,paladin1,rudeboy,liliya,lunchbox,riversid,acapulco,libero,dnsadm,maison,toomuch,boobear,hemlock,sextoy,pugsley,misiek,athome,migue,altoids,marcin,123450,rhfcfdbwf,jeter2,rhinos,rjhjkm,mercury1,ronaldinho,shampoo,makayla,kamilla,masterbating,tennesse,holger,john1,matchbox,hores,poptart,parlament,goodyear,asdfgh1,02081970,hardwood,alain,erection,hfytnrb,highlife,implants,benjami,dipper,jeeper,bendover,supersonic,babybear,laserjet,gotenks,bama,natedogg,aol123,pokemo,rabbit1,raduga,sopranos,cashflow,menthol,pharao,hacking,334455,ghjcnbnenrf,lizzy,muffin1,pooky,penis1,flyer,gramma,dipset,becca,ireland1,diana1,donjuan,pong,ziggy1,alterego,simple1,cbr900,logger,111555,claudia1,cantona7,matisse,ljxtymrf,victori,harle,mamas,encore,mangos,iceman1,diamon,alexxx,tiamat,5000,desktop,mafia,smurf,princesa,shojou,blueberr,welkom,maximka,123890,123q123,tammy1,bobmarley,clips,demon666,ismail,termite,laser1,missie,altair,donna1,bauhaus,trinitron,mogwai,flyers88,juniper,nokia5800,boroda,jingles,qwerasdfzxcv,shakur,777666,legos,mallrats,1qazxsw,goldeneye,tamerlan,julia1,backbone,spleen,49ers,shady,darkone,medic1,justi,giggle,cloudy,aisan,douche,parkour,bluejay,huskers1,redwine,1qw23er4,satchmo,1231234,nineball,stewart1,ballsack,probes,kappa,amiga,flipper1,dortmund,963258,trigun,1237895,homepage,blinky,screwy,gizzmo,belkin,chemist,coolhand,chachi,braves1,thebest,greedisgood,pro100,banana1,101091m,123456g,wonderfu,barefeet,8inches,1111qqqq,kcchiefs,qweasdzxc123,metal1,jennifer1,xian,asdasd123,pollux,cheerleaers,fruity,mustang5,turbos,shopper,photon,espana,hillbill,oyster,macaroni,gigabyte,jesper,motown,tuxedo,buster12,triplex,cyclones,estrell,mortis,holla,456987,fiddle,sapphic,jurassic,thebeast,ghjcnjq,baura,spock1,metallica1,karaoke,nemrac58,love1234,02031970,flvbybcnhfnjh,frisbee,diva,ajax,feathers,flower1,soccer11,allday,mierda,pearl1,amature,marauder,333555,redheads,womans,egorka,godbless,159263,nimitz,aaaa1111,sashka,madcow,socce,greywolf,baboon,pimpdaddy,123456789r,reloaded,lancia,rfhfylfi,dicker,placid,grimace,22446688,olemiss,whores,culinary,wannabe,maxi,1234567aa,amelie,riley1,trample,phantom1,baberuth,bramble,asdfqwer,vides,4you,abc123456,taichi,aztnm,smother,outsider,hakr,blackhawk,bigblack,girlie,spook,valeriya,gianluca,freedo,1q2q3q4q,handbag,lavalamp,cumm,pertinant,whatup,nokia123,redlight,patrik,111aaa,poppy1,dfytxrf,aviator,sweeps,kristin1,cypher,elway,yinyang,access1,poophead,tucson,noles1,monterey,waterfal,dank,dougal,918273,suede,minnesot,legman,bukowski,ganja,mammoth,riverrat,asswipe,daredevi,lian,arizona1,kamikadze,alex1234,smile1,angel2,55bgates,bellagio,0001,wanrltw,stiletto,lipton,arsena,biohazard,bbking,chappy,tetris,as123456,darthvad,lilwayne,nopassword,7412369,123456789987654321,natchez,glitter,14785236,mytime,rubicon,moto,pyon,wazzup,tbird,shane1,nightowl,getoff,beckham7,trueblue,hotgirl,nevermin,deathnote,13131,taffy,bigal,copenhag,apricot,gallaries,dtkjcbgtl,totoro,onlyone,civicsi,jesse1,baby123,sierra1,festus,abacus,sickboy,fishtank,fungus,charle,golfpro,teensex,mario66,seaside,aleksei,rosewood,blackberry,1020304050,bedlam,schumi,deerhunt,contour,darkelf,surveyor,deltas,pitchers,741258963,dipstick,funny1,lizzard,112233445566,jupiter2,softtail,titman,greenman,z1x2c3v4b5,smartass,12345677,notnow,myworld,nascar1,chewbacc,nosferatu,downhill,dallas22,kuan,blazers,whales,soldat,craving,powerman,yfcntyf,hotrats,cfvceyu,qweasdzx,princess1,feline,qqwwee,chitown,1234qaz,mastermind,114477,dingbat,care1839,standby,kismet,atreides,dogmeat,icarus,monkeyboy,alex1,mouses,nicetits,sealteam,chopper1,crispy,winter99,rrpass1,myporn,myspace1,corazo,topolino,ass123,lawman,muffy,orgy,1love,passord,hooyah,ekmzyf,pretzel,amonra,nestle,01011950,jimbeam,happyman,z12345,stonewal,helios,manunited,harcore,dick1,gaymen,2hot4u,light1,qwerty13,kakashi,pjkjnj,alcatel,taylo,allah,buddydog,ltkmaby,mongo,blonds,start123,audia6,123456v,civilwar,bellaco,turtles,mustan,deadspin,aaa123,fynjirf,lucky123,tortoise,amor,summe,waterski,zulu,drag0n,dtxyjcnm,gizmos,strife,interacial,pusyy,goose1,bear1,equinox,matri,jaguar1,tobydog,sammys,nachos,traktor,bryan1,morgoth,444555,dasani,miami1,mashka,xxxxxx1,ownage,nightwin,hotlips,passmast,cool123,skolko,eldiablo,manu,1357908642,screwyou,badabing,foreplay,hydro,kubrick,seductive,demon1,comeon,galileo,aladdin,metoo,happines,902100,mizuno,caddy,bizzare,girls1,redone,ohmygod,sable,bonovox,girlies,hamper,opus,gizmodo1,aaabbb,pizzahut,999888,rocky2,anton1,kikimora,peavey,ocelot,a1a2a3a4,2wsx3edc,jackie1,solace,sprocket,galary,chuck1,volvo1,shurik,poop123,locutus,virago,wdtnjxtr,tequier,bisexual,doodles,makeitso,fishy,789632145,nothing1,fishcake,sentry,libertad,oaktree,fivestar,adidas1,vegitta,mississi,spiffy,carme,neutron,vantage,agassi,boners,123456789v,hilltop,taipan,barrage,kenneth1,fister,martian,willem,lfybkf,bluestar,moonman,ntktdbpjh,paperino,bikers,daffy,benji,quake,dragonfly,suckcock,danilka,lapochka,belinea,calypso,asshol,camero1,abraxas,mike1234,womam,q1q2q3q4q5,youknow,maxpower,pic's,audi80,sonora,raymond1,tickler,tadpole,belair,crazyman,finalfantasy,999000,jonatha,paisley,kissmyas,morgana,monste,mantra,spunk,magic123,jonesy,mark1,alessand,741258,baddest,ghbdtnrfrltkf,zxccxz,tictac,augustin,racers,7grout,foxfire,99762000,openit,nathanie,1z2x3c4v5b,seadog,gangbanged,lovehate,hondacbr,harpoon,mamochka,fisherma,bismilla,locust,wally1,spiderman1,saffron,utjhubq,123456987,20spanks,safeway,pisser,bdfyjd,kristen1,bigdick1,magenta,vfhujif,anfisa,friday13,qaz123wsx,0987654321q,tyrant,guan,meggie,kontol,nurlan,ayanami,rocket1,yaroslav,websol76,mutley,hugoboss,websolutions,elpaso,gagarin,badboys,sephirot,918273645,newuser,qian,edcrfv,booger1,852258,lockout,timoxa94,mazda323,firedog,sokolova,skydiver,jesus777,1234567890z,soulfly,canary,malinka,guillerm,hookers,dogfart,surfer1,osprey,india123,rhjkbr,stoppedby,nokia5530,123456789o,blue1,werter,divers,3000,123456f,alpina,cali,whoknows,godspeed,986532,foreskin,fuzzy1,heyyou,didier,slapnuts,fresno,rosebud1,sandman1,bears1,blade1,honeybun,queen1,baronn,pakista,philipp,9111961,topsecret,sniper1,214365,slipper,letsfuck,pippen33,godawgs,mousey,qw123456,scrotum,loveis,lighthou,bp2002,nancy123,jeffrey1,susieq,buddy2,ralphie,trout1,willi,antonov,sluttey,rehbwf,marty1,darian,losangeles,letme1n,12345d,pusssy,godiva,ender,golfnut,leonidas,a1b2c3d4e5,puffer,general1,wizzard,lehjxrf,racer1,bigbucks,cool12,buddys,zinger,esprit,vbienrf,josep,tickling,froggie,987654321a,895623,daddys,crumbs,gucci,mikkel,opiate,tracy1,christophe,came11,777555,petrovich,humbug,dirtydog,allstate,horatio,wachtwoord,creepers,squirts,rotary,bigd,georgia1,fujifilm,2sweet,dasha,yorkie,slimjim,wiccan,kenzie,system1,skunk,b12345,getit,pommes,daredevil,sugars,bucker,piston,lionheart,1bitch,515051,catfight,recon,icecold,fantom,vodafone,kontakt,boris1,vfcnth,canine,01011961,valleywa,faraon,chickenwing101,qq123456,livewire,livelife,roosters,jeepers,ilya1234,coochie,pavlik,dewalt,dfhdfhf,architec,blackops,1qaz2wsx3edc4rfv,rhfcjnf,wsxedc,teaser,sebora,25252,rhino1,ankara,swifty,decimal,redleg,shanno,nermal,candies,smirnova,dragon01,photo1,ranetki,a1s2d3f4g5,axio,wertzu,maurizio,6uldv8,zxcvasdf,punkass,flowe,graywolf,peddler,3rjs1la7qe,mpegs,seawolf,ladyboy,pianos,piggies,vixen,alexus,orpheus,gdtrfb,z123456,macgyver,hugetits,ralph1,flathead,maurici,mailru,goofball,nissan1,nikon,stopit,odin,big1,smooch,reboot,famil,bullit,anthony7,gerhard,methos,124038,morena,eagle2,jessica2,zebras,getlost,gfynthf,123581321,sarajevo,indon,comets,tatjana,rfgbnjirf,joystick,batman12,123456c,sabre,beerme,victory1,kitties,1475369,badboy1,booboo1,comcast,slava,squid,saxophon,lionhear,qaywsx,bustle,nastena,roadway,loader,hillside,starlight,24681012,niggers,access99,bazooka,molly123,blackice,bandi,cocacol,nfhfrfy,timur,muschi,horse1,quant4307s,squerting,oscars,mygirls,flashman,tangerin,goofy1,p0o9i8,housewifes,newness,monkey69,escorpio,password11,hippo,warcraft3,qazxsw123,qpalzm,ribbit,ghbdtndctv,bogota,star123,258000,lincoln1,bigjim,lacoste,firestorm,legenda,indain,ludacris,milamber,1009,evangeli,letmesee,a111111,hooters1,bigred1,shaker,husky,a4tech,cnfkrth,argyle,rjhjdf,nataha,0o9i8u7y,gibson1,sooners1,glendale,archery,hoochie,stooge,aaaaaa1,scorpions,school1,vegas1,rapier,mike23,bassoon,groupd2013,macaco,baker1,labia,freewill,santiag,silverado,butch1,vflfufcrfh,monica1,rugrat,cornhole,aerosmit,bionicle,gfgfvfvf,daniel12,virgo,fmale,favorite2,detroit1,pokey,shredder,baggies,wednesda,cosmo1,mimosa,sparhawk,firehawk,romario,911turbo,funtimes,fhntvrf,nexus6,159753456,timothy1,bajingan,terry1,frenchie,raiden,1mustang,babemagnet,74123698,nadejda,truffles,rapture,douglas1,lamborghini,motocross,rjcvjc,748596,skeeter1,dante1,angel666,telecom,carsten,pietro,bmw318,astro1,carpediem,samir,orang,helium,scirocco,fuzzball,rushmore,rebelz,hotspur,lacrimosa,chevys10,madonna1,domenico,yfnfirf,jachin,shelby1,bloke,dawgs,dunhill,atlanta1,service1,mikado,devilman,angelit,reznor,euphoria,lesbain,checkmat,browndog,phreak,blaze1,crash1,farida,mutter,luckyme,horsemen,vgirl,jediknig,asdas,cesare,allnight,rockey,starlite,truck1,passfan,close-up,samue,cazzo,wrinkles,homely,eatme1,sexpot,snapshot,dima1995,asthma,thetruth,ducky,blender,priyanka,gaucho,dutchman,sizzle,kakarot,651550,passcode,justinbieber,666333,elodie,sanjay,110442,alex01,lotus1,2300mj,lakshmi,zoomer,quake3,12349876,teapot,12345687,ramada,pennywis,striper,pilot1,chingon,optima,nudity,ethan1,euclid,beeline,loyola,biguns,zaq12345,bravo1,disney1,buffa,assmunch,vivid,6661313,wellingt,aqwzsx,madala11,9874123,sigmar,pictere,tiptop,bettyboop,dinero,tahiti,gregory1,bionic,speed1,fubar1,lexus1,denis1,hawthorn,saxman,suntzu,bernhard,dominika,camaro1,hunter12,balboa,bmw2002,seville,diablo1,vfhbyjxrf,1234abc,carling,lockerroom,punani,darth,baron1,vaness,1password,libido,picher,232425,karamba,futyn007,daydream,11001001,dragon123,friends1,bopper,rocky123,chooch,asslover,shimmer,riddler,openme,tugboat,sexy123,midori,gulnara,christo,swatch,laker,offroad,puddles,hackers,mannheim,manager1,horseman,roman1,dancer1,komputer,pictuers,nokia5130,ejaculation,lioness,123456y,evilone,nastenka,pushok,javie,lilman,3141592,mjolnir,toulouse,pussy2,bigworm,smoke420,fullback,extensa,dreamcast,belize,delboy,willie1,casablanca,csyjxtr,ricky1,bonghit,salvator,basher,pussylover,rosie1,963258741,vivitron,cobra427,meonly,armageddon,myfriend,zardoz,qwedsazxc,kraken,fzappa,starfox,333999,illmatic,capoeira,weenie,ramzes,freedom2,toasty,pupkin,shinigami,fhvfutljy,nocturne,churchil,thumbnils,tailgate,neworder,sexymama,goarmy,cerebus,michelle1,vbifyz,surfsup,earthlin,dabulls,basketbal,aligator,mojojojo,saibaba,welcome2,wifes,wdtnjr,12345w,slasher,papabear,terran,footman,hocke,153759,texans,tom123,sfgiants,billabong,aassdd,monolith,xxx777,l3tm31n,ticktock,newone,hellno,japanees,contortionist,admin123,scout1,alabama1,divx1,rochard,privat,radar1,bigdad,fhctybq,tortuga,citrus,avanti,fantasy1,woodstock,s12345,fireman1,embalmer,woodwork,bonzai,konyor,newstart,jigga,panorama,goats,smithy,rugrats,hotmama,daedalus,nonstop,fruitbat,lisenok,quaker,violator,12345123,my3sons,cajun,fraggle,gayboy,oldfart,vulva,knickerless,orgasms,undertow,binky,litle,kfcnjxrf,masturbation,bunnie,alexis1,planner,transexual,sparty,leeloo,monies,fozzie,stinger1,landrove,anakonda,scoobie,yamaha1,henti,star12,rfhlbyfk,beyonce,catfood,cjytxrf,zealots,strat,fordtruc,archangel,silvi,sativa,boogers,miles1,bigjoe,tulip,petite,greentea,shitter,jonboy,voltron,morticia,evanescence,3edc4rfv,longshot,windows1,serge,aabbcc,starbucks,sinful,drywall,prelude1,www123,camel1,homebrew,marlins,123412,letmeinn,domini,swampy,plokij,fordf350,webcam,michele1,bolivi,27731828,wingzero,qawsedrftg,shinji,sverige,jasper1,piper1,cummer,iiyama,gocats,amour,alfarome,jumanji,mike69,fantasti,1monkey,w00t88,shawn1,lorien,1a2s3d4f5g,koleso,murph,natascha,sunkist,kennwort,emine,grinder,m12345,q1q2q3q4,cheeba,money2,qazwsxedc1,diamante,prosto,pdiddy,stinky1,gabby1,luckys,franci,pornographic,moochie,gfhjdjp,samdog,empire1,comicbookdb,emili,motdepasse,iphone,braveheart,reeses,nebula,sanjose,bubba2,kickflip,arcangel,superbow,porsche911,xyzzy,nigger1,dagobert,devil1,alatam,monkey2,barbara1,12345v,vfpfafrf,alessio,babemagn,aceman,arrakis,kavkaz,987789,jasons,berserk,sublime1,rogue1,myspace,buckwhea,csyekz,pussy4me,vette1,boots1,boingo,arnaud,budlite,redstorm,paramore,becky1,imtheman,chango,marley1,milkyway,666555,giveme,mahalo,lux2000,lucian,paddy,praxis,shimano,bigpenis,creeper,newproject2004,rammstei,j3qq4h7h2v,hfljcnm,lambchop,anthony2,bugman,gfhjkm12,dreamer1,stooges,cybersex,diamant,cowboyup,maximus1,sentra,615243,goethe,manhatta,fastcar,selmer,1213141516,yfnfitymrf,denni,chewey,yankee1,elektra,123456789p,trousers,fishface,topspin,orwell,vorona,sodapop,motherfu,ibilltes,forall,kookie,ronald1,balrog,maximilian,mypasswo,sonny1,zzxxcc,tkfkdg,magoo,mdogg,heeled,gitara,lesbos,marajade,tippy,morozova,enter123,lesbean,pounded,asd456,fialka,scarab,sharpie,spanky1,gstring,sachin,12345asd,princeto,hellohel,ursitesux,billows,1234kekc,kombat,cashew,duracell,kseniya,sevenof9,kostik,arthur1,corvet07,rdfhnbhf,songoku,tiberian,needforspeed,1qwert,dropkick,kevin123,panache,libra,a123456a,kjiflm,vfhnsirf,cntgfy,iamcool,narut,buffer,sk8ordie,urlaub,fireblade,blanked,marishka,gemini1,altec,gorillaz,chief1,revival47,ironman1,space1,ramstein,doorknob,devilmaycry,nemesis1,sosiska,pennstat,monday1,pioner,shevchenko,detectiv,evildead,blessed1,aggie,coffees,tical,scotts,bullwink,marsel,krypto,adrock,rjitxrf,asmodeus,rapunzel,theboys,hotdogs,deepthro,maxpayne,veronic,fyyeirf,otter,cheste,abbey1,thanos,bedrock,bartok,google1,xxxzzz,rodent,montecarlo,hernande,mikayla,123456789l,bravehea,12locked,ltymub,pegasus1,ameteur,saltydog,faisal,milfnew,momsuck,everques,ytngfhjkz,m0nkey,businessbabe,cooki,custard,123456ab,lbvjxrf,outlaws,753357,qwerty78,udacha,insider,chees,fuckmehard,shotokan,katya,seahorse,vtldtlm,turtle1,mike12,beebop,heathe,everton1,darknes,barnie,rbcekz,alisher,toohot,theduke,555222,reddog1,breezy,bulldawg,monkeyman,baylee,losangel,mastermi,apollo1,aurelie,zxcvb12345,cayenne,bastet,wsxzaq,geibcnbr,yello,fucmy69,redwall,ladybird,bitchs,cccccc1,rktjgfnhf,ghjdthrf,quest1,oedipus,linus,impalass,fartman,12345k,fokker,159753a,optiplex,bbbbbb1,realtor,slipkno,santacru,rowdy,jelena,smeller,3984240,ddddd1,sexyme,janet1,3698741,eatme69,cazzone,today1,poobear,ignatius,master123,newpass1,heather2,snoopdogg,blondinka,pass12,honeydew,fuckthat,890098890,lovem,goldrush,gecko,biker1,llama,pendejo,avalanche,fremont,snowman1,gandolf,chowder,1a2b3c4d5e,flyguy,magadan,1fuck,pingvin,nokia5230,ab1234,lothar,lasers,bignuts,renee1,royboy,skynet,12340987,1122334,dragrace,lovely1,22334455,booter,12345612,corvett,123456qq,capital1,videoes,funtik,wyvern,flange,sammydog,hulkster,13245768,not4you,vorlon,omegared,l58jkdjp!,filippo,123mudar,samadams,petrus,chris12,charlie123,123456789123,icetea,sunderla,adrian1,123qweas,kazanova,aslan,monkey123,fktyeirf,goodsex,123ab,lbtest,banaan,bluenose,837519,asd12345,waffenss,whateve,1a2a3a4a,trailers,vfhbirf,bhbcrf,klaatu,turk182,monsoon,beachbum,sunbeam,succes,clyde1,viking1,rawhide,bubblegum,princ,mackenzi,hershey1,222555,dima55,niggaz,manatee,aquila,anechka,pamel,bugsbunn,lovel,sestra,newport1,althor,hornyman,wakeup,zzz111,phishy,cerber,torrent,thething,solnishko,babel,buckeye1,peanu,ethernet,uncencored,baraka,665544,chris2,rb26dett,willy1,choppers,texaco,biggirl,123456b,anna2614,sukebe,caralho,callofduty,rt6ytere,jesus7,angel12,1money,timelord,allblack,pavlova,romanov,tequiero,yitbos,lookup,bulls23,snowflake,dickweed,barks,lever,irisha,firestar,fred1234,ghjnjnbg,danman,gatito,betty1,milhouse,kbctyjr,masterbaiting,delsol,papit,doggys,123698741,bdfyjdf,invictus,bloods,kayla1,yourmama,apple2,angelok,bigboy1,pontiac1,verygood,yeshua,twins2,porn4me,141516,rasta69,james2,bosshog,candys,adventur,stripe,djkjlz,dokken,austin316,skins,hogwarts,vbhevbh,navigato,desperado,xxx666,cneltyn,vasiliy,hazmat,daytek,eightbal,fred1,four20,74227422,fabia,aerosmith,manue,wingchun,boohoo,hombre,sanity72,goatboy,fuckm,partizan,avrora,utahjazz,submarin,pussyeat,heinlein,control1,costaric,smarty,chuan,triplets,snowy,snafu,teacher1,vangogh,vandal,evergree,cochise,qwerty99,pyramid1,saab900,sniffer,qaz741,lebron23,mark123,wolvie,blackbelt,yoshi,feeder,janeway,nutella,fuking,asscock,deepak,poppie,bigshow,housewife,grils,tonto,cynthia1,temptress,irakli,belle1,russell1,manders,frank123,seabass,gforce,songbird,zippy1,naught,brenda1,chewy1,hotshit,topaz,43046721,girfriend,marinka,jakester,thatsme,planeta,falstaff,patrizia,reborn,riptide,cherry1,shuan,nogard,chino,oasis1,qwaszx12,goodlife,davis1,1911a1,harrys,shitfuck,12345678900,russian7,007700,bulls1,porshe,danil,dolphi,river1,sabaka,gobigred,deborah1,volkswagen,miamo,alkaline,muffdive,1letmein,fkbyrf,goodguy,hallo1,nirvan,ozzie,cannonda,cvbhyjdf,marmite,germany1,joeblow,radio1,love11,raindrop,159852,jacko,newday,fathead,elvis123,caspe,citibank,sports1,deuce,boxter,fakepass,golfman,snowdog,birthday4,nonmembe,niklas,parsifal,krasota,theshit,1235813,maganda,nikita1,omicron,cassie1,columbo,buick,sigma1,thistle,bassin,rickster,apteka,sienna,skulls,miamor,coolgirl,gravis,1qazxc,virgini,hunter2,akasha,batma,motorcyc,bambino,tenerife,fordf250,zhuan,iloveporn,markiza,hotbabes,becool,fynjybyf,wapapapa,forme,mamont,pizda,dragonz,sharon1,scrooge,mrbill,pfloyd,leeroy,natedog,ishmael,777111,tecumseh,carajo,nfy.irf,0000000000o,blackcock,fedorov,antigone,feanor,novikova,bobert,peregrin,spartan117,pumkin,rayman,manuals,tooltime,555333,bonethug,marina1,bonnie1,tonyhawk,laracroft,mahalkita,18273645,terriers,gamer,hoser,littlema,molotok,glennwei,lemon1,caboose,tater,12345654321,brians,fritz1,mistral,jigsaw,fuckshit,hornyguy,southside,edthom,antonio1,bobmarle,pitures,ilikesex,crafty,nexus,boarder,fulcrum,astonvil,yanks1,yngwie,account1,zooropa,hotlegs,sammi,gumbo,rover1,perkele,maurolarastefy,lampard,357753,barracud,dmband,abcxyz,pathfinder,335577,yuliya,micky,jayman,asdfg12345,1596321,halcyon,rerfhtre,feniks,zaxscd,gotyoass,jaycee,samson1,jamesb,vibrate,grandpri,camino,colossus,davidb,mamo4ka,nicky1,homer123,pinguin,watermelon,shadow01,lasttime,glider,823762,helen1,pyramids,tulane,osama,rostov,john12,scoote,bhbyrf,gohan,galeries,joyful,bigpussy,tonka,mowgli,astalavista,zzz123,leafs,dalejr8,unicorn1,777000,primal,bigmama,okmijn,killzone,qaz12345,snookie,zxcvvcxz,davidc,epson,rockman,ceaser,beanbag,katten,3151020,duckhunt,segreto,matros,ragnar,699669,sexsexse,123123z,fuckyeah,bigbutts,gbcmrf,element1,marketin,saratov,elbereth,blaster1,yamahar6,grime,masha,juneau,1230123,pappy,lindsay1,mooner,seattle1,katzen,lucent,polly1,lagwagon,pixie,misiaczek,666666a,smokedog,lakers24,eyeball,ironhors,ametuer,volkodav,vepsrf,kimmy,gumby1,poi098,ovation,1q2w3,drinker,penetrating,summertime,1dallas,prima,modles,takamine,hardwork,macintosh,tahoe,passthie,chiks,sundown,flowers1,boromir,music123,phaedrus,albert1,joung,malakas,gulliver,parker1,balder,sonne,jessie1,domainlock2005,express1,vfkbyf,youandme,raketa,koala,dhjnvytyjub,nhfrnjh,testibil,ybrbnjc,987654321q,axeman,pintail,pokemon123,dogggg,shandy,thesaint,11122233,x72jhhu3z,theclash,raptors,zappa1,djdjxrf,hell666,friday1,vivaldi,pluto1,lance1,guesswho,jeadmi,corgan,skillz,skippy1,mango1,gymnastic,satori,362514,theedge,cxfcnkbdfz,sparkey,deicide,bagels,lololol,lemmings,r4e3w2q1,silve,staind,schnuffi,dazzle,basebal1,leroy1,bilbo1,luckie,qwerty2,goodfell,hermione,peaceout,davidoff,yesterda,killah,flippy,chrisb,zelda1,headless,muttley,fuckof,tittys,catdaddy,photog,beeker,reaver,ram1500,yorktown,bolero,tryagain,arman,chicco,learjet,alexei,jenna1,go2hell,12s3t4p55,momsanaladventure,mustang9,protoss,rooter,ginola,dingo1,mojave,erica1,1qazse4,marvin1,redwolf,sunbird,dangerou,maciek,girsl,hawks1,packard1,excellen,dashka,soleda,toonces,acetate,nacked,jbond007,alligator,debbie1,wellhung,monkeyma,supers,rigger,larsson,vaseline,rjnzhf,maripos,123456asd,cbr600rr,doggydog,cronic,jason123,trekker,flipmode,druid,sonyvaio,dodges,mayfair,mystuff,fun4me,samanta,sofiya,magics,1ranger,arcane,sixtynin,222444,omerta,luscious,gbyudby,bobcats,envision,chance1,seaweed,holdem,tomate,mensch,slicer,acura1,goochi,qweewq,punter,repoman,tomboy,never1,cortina,gomets,147896321,369852147,dogma,bhjxrf,loglatin,eragon,strato,gazelle,growler,885522,klaudia,payton34,fuckem,butchie,scorpi,lugano,123456789k,nichola,chipper1,spide,uhbujhbq,rsalinas,vfylfhby,longhorns,bugatti,everquest,!qaz2wsx,blackass,999111,snakeman,p455w0rd,fanatic,family1,pfqxbr,777vlad,mysecret,marat,phoenix2,october1,genghis,panties1,cooker,citron,ace123,1234569,gramps,blackcoc,kodiak1,hickory,ivanhoe,blackboy,escher,sincity,beaks,meandyou,spaniel,canon1,timmy1,lancaste,polaroid,edinburg,fuckedup,hotman,cueball,golfclub,gopack,bookcase,worldcup,dkflbvbhjdbx,twostep,17171717aa,letsplay,zolushka,stella1,pfkegf,kingtut,67camaro,barracuda,wiggles,gjhjkm,prancer,patata,kjifhf,theman1,romanova,sexyass,copper1,dobber,sokolov,pomidor,algernon,cadman,amoremio,william2,silly1,bobbys,hercule,hd764nw5d7e1vb1,defcon,deutschland,robinhood,alfalfa,machoman,lesbens,pandora1,easypay,tomservo,nadezhda,goonies,saab9000,jordyn,f15eagle,dbrecz,12qwerty,greatsex,thrawn,blunted,baywatch,doggystyle,loloxx,chevy2,january1,kodak,bushel,78963214,ub6ib9,zz8807zpl,briefs,hawker,224488,first1,bonzo,brent1,erasure,69213124,sidewind,soccer13,622521,mentos,kolibri,onepiece,united1,ponyboy,keksa12,wayer,mypussy,andrej,mischa,mille,bruno123,garter,bigpun,talgat,familia,jazzy1,mustang8,newjob,747400,bobber,blackbel,hatteras,ginge,asdfjkl;,camelot1,blue44,rebbyt34,ebony1,vegas123,myboys,aleksander,ijrjkflrf,lopata,pilsner,lotus123,m0nk3y,andreev,freiheit,balls1,drjynfrnt,mazda1,waterpolo,shibumi,852963,123bbb,cezer121,blondie1,volkova,rattler,kleenex,ben123,sanane,happydog,satellit,qazplm,qazwsxedcrfvtgb,meowmix,badguy,facefuck,spice1,blondy,major1,25000,anna123,654321a,sober1,deathrow,patterso,china1,naruto1,hawkeye1,waldo1,butchy,crayon,5tgb6yhn,klopik,crocodil,mothra,imhorny,pookie1,splatter,slippy,lizard1,router,buratino,yahweh,123698,dragon11,123qwe456,peepers,trucker1,ganjaman,1hxboqg2,cheyanne,storys,sebastie,zztop,maddison,4rfv3edc,darthvader,jeffro,iloveit,victor1,hotty,delphin,lifeisgood,gooseman,shifty,insertions,dude123,abrupt,123masha,boogaloo,chronos,stamford,pimpster,kthjxrf,getmein,amidala,flubber,fettish,grapeape,dantes,oralsex,jack1,foxcg33,winchest,francis1,getin,archon,cliffy,blueman,1basebal,sport1,emmitt22,porn123,bignasty,morga,123hfjdk147,ferrar,juanito,fabiol,caseydog,steveo,peternorth,paroll,kimchi,bootleg,gaijin,secre,acacia,eatme2,amarillo,monkey11,rfhfgep,tylers,a1a2a3a4a5,sweetass,blower,rodina,babushka,camilo,cimbom,tiffan,vfnbkmlf,ohbaby,gotigers,lindsey1,dragon13,romulus,qazxsw12,zxcvbn1,dropdead,hitman47,snuggle,eleven11,bloopers,357mag,avangard,bmw320,ginscoot,dshade,masterkey,voodoo1,rootedit,caramba,leahcim,hannover,8phrowz622,tim123,cassius,000000a,angelito,zzzzz1,badkarma,star1,malaga,glenwood,footlove,golf1,summer12,helpme1,fastcars,titan1,police1,polinka,k.jdm,marusya,augusto,shiraz,pantyhose,donald1,blaise,arabella,brigada,c3por2d2,peter01,marco1,hellow,dillweed,uzumymw,geraldin,loveyou2,toyota1,088011,gophers,indy500,slainte,5hsu75kpot,teejay,renat,racoon,sabrin,angie1,shiznit,harpua,sexyred,latex,tucker1,alexandru,wahoo,teamwork,deepblue,goodison,rundmc,r2d2c3p0,puppys,samba,ayrton,boobed,999777,topsecre,blowme1,123321z,loudog,random1,pantie,drevil,mandolin,121212q,hottub,brother1,failsafe,spade1,matvey,open1234,carmen1,priscill,schatzi,kajak,gooddog,trojans1,gordon1,kayak,calamity,argent,ufhvjybz,seviyi,penfold,assface,dildos,hawkwind,crowbar,yanks,ruffles,rastus,luv2epus,open123,aquafina,dawns,jared1,teufel,12345c,vwgolf,pepsi123,amores,passwerd,01478520,boliva,smutty,headshot,password3,davidd,zydfhm,gbgbcmrf,pornpass,insertion,ceckbr,test2,car123,checkit,dbnfkbq,niggas,nyyankee,muskrat,nbuhtyjr,gunner1,ocean1,fabienne,chrissy1,wendys,loveme89,batgirl,cerveza,igorek,steel1,ragman,boris123,novifarm,sexy12,qwerty777,mike01,giveitup,123456abc,fuckall,crevice,hackerz,gspot,eight8,assassins,texass,swallows,123458,baldur,moonshine,labatt,modem,sydney1,voland,dbnfkz,hotchick,jacker,princessa,dawgs1,holiday1,booper,reliant,miranda1,jamaica1,andre1,badnaamhere,barnaby,tiger7,david12,margaux,corsica,085tzzqi,universi,thewall,nevermor,martin6,qwerty77,cipher,apples1,0102030405,seraphim,black123,imzadi,gandon,ducati99,1shadow,dkflbvbhjdyf,44magnum,bigbad,feedme,samantha1,ultraman,redneck1,jackdog,usmc0311,fresh1,monique1,tigre,alphaman,cool1,greyhoun,indycar,crunchy,55chevy,carefree,willow1,063dyjuy,xrated,assclown,federica,hilfiger,trivia,bronco1,mamita,100200300,simcity,lexingky,akatsuki,retsam,johndeere,abudfv,raster,elgato,businka,satanas,mattingl,redwing1,shamil,patate,mannn,moonstar,evil666,b123456,bowl300,tanechka,34523452,carthage,babygir,santino,bondarenko,jesuss,chico1,numlock,shyguy,sound1,kirby1,needit,mostwanted,427900,funky1,steve123,passions,anduril,kermit1,prospero,lusty,barakuda,dream1,broodwar,porky,christy1,mahal,yyyyyy1,allan1,1sexy,flintsto,capri,cumeater,heretic,robert2,hippos,blindax,marykay,collecti,kasumi,1qaz!qaz,112233q,123258,chemistr,coolboy,0o9i8u,kabuki,righton,tigress,nessie,sergej,andrew12,yfafyz,ytrhjvfyn,angel7,victo,mobbdeep,lemming,transfor,1725782,myhouse,aeynbr,muskie,leno4ka,westham1,cvbhyjd,daffodil,pussylicker,pamela1,stuffer,warehous,tinker1,2w3e4r,pluton,louise1,polarbea,253634,prime1,anatoliy,januar,wysiwyg,cobraya,ralphy,whaler,xterra,cableguy,112233a,porn69,jamesd,aqualung,jimmy123,lumpy,luckyman,kingsize,golfing1,alpha7,leeds1,marigold,lol1234,teabag,alex11,10sne1,saopaulo,shanny,roland1,basser,3216732167,carol1,year2005,morozov,saturn1,joseluis,bushed,redrock,memnoch,lalaland,indiana1,lovegod,gulnaz,buffalos,loveyou1,anteater,pattaya,jaydee,redshift,bartek,summerti,coffee1,ricochet,incest,schastie,rakkaus,h2opolo,suikoden,perro,dance1,loveme1,whoopass,vladvlad,boober,flyers1,alessia,gfcgjhn,pipers,papaya,gunsling,coolone,blackie1,gonads,gfhjkzytn,foxhound,qwert12,gangrel,ghjvtntq,bluedevi,mywife,summer01,hangman,licorice,patter,vfr750,thorsten,515253,ninguna,dakine,strange1,mexic,vergeten,12345432,8phrowz624,stampede,floyd1,sailfish,raziel,ananda,giacomo,freeme,crfprf,74185296,allstars,master01,solrac,gfnhbjn,bayliner,bmw525,3465xxx,catter,single1,michael3,pentium4,nitrox,mapet123456,halibut,killroy,xxxxx1,phillip1,poopsie,arsenalfc,buffys,kosova,all4me,32165498,arslan,opensesame,brutis,charles2,pochta,nadegda,backspac,mustang0,invis,gogeta,654321q,adam25,niceday,truckin,gfdkbr,biceps,sceptre,bigdave,lauras,user345,sandys,shabba,ratdog,cristiano,natha,march13,gumball,getsdown,wasdwasd,redhead1,dddddd1,longlegs,13572468,starsky,ducksoup,bunnys,omsairam,whoami,fred123,danmark,flapper,swanky,lakings,yfhenj,asterios,rainier,searcher,dapper,ltdjxrf,horsey,seahawk,shroom,tkfkdgo,aquaman,tashkent,number9,messi10,1asshole,milenium,illumina,vegita,jodeci,buster01,bareback,goldfinger,fire1,33rjhjds,sabian,thinkpad,smooth1,sully,bonghits,sushi1,magnavox,colombi,voiture,limpone,oldone,aruba,rooster1,zhenya,nomar5,touchdow,limpbizkit,rhfcfdxbr,baphomet,afrodita,bball1,madiso,ladles,lovefeet,matthew2,theworld,thunderbird,dolly1,123rrr,forklift,alfons,berkut,speedy1,saphire,oilman,creatine,pussylov,bastard1,456258,wicked1,filimon,skyline1,fucing,yfnfkbz,hot123,abdulla,nippon,nolimits,billiard,booty1,buttplug,westlife,coolbean,aloha1,lopas,asasin,1212121,october2,whodat,good4u,d12345,kostas,ilya1992,regal,pioneer1,volodya,focus1,bastos,nbvjif,fenix,anita1,vadimka,nickle,jesusc,123321456,teste,christ1,essendon,evgenii,celticfc,adam1,forumwp,lovesme,26exkp,chillout,burly,thelast1,marcus1,metalgear,test11,ronaldo7,socrate,world1,franki,mommie,vicecity,postov1000,charlie3,oldschool,333221,legoland,antoshka,counterstrike,buggy,mustang3,123454,qwertzui,toons,chesty,bigtoe,tigger12,limpopo,rerehepf,diddle,nokia3250,solidsnake,conan1,rockroll,963369,titanic1,qwezxc,cloggy,prashant,katharin,maxfli,takashi,cumonme,michael9,mymother,pennstate,khalid,48151623,fightclub,showboat,mateusz,elrond,teenie,arrow1,mammamia,dustydog,dominator,erasmus,zxcvb1,1a2a3a,bones1,dennis1,galaxie,pleaseme,whatever1,junkyard,galadriel,charlies,2wsxzaq1,crimson1,behemoth,teres,master11,fairway,shady1,pass99,1batman,joshua12,baraban,apelsin,mousepad,melon,twodogs,123321qwe,metalica,ryjgrf,pipiska,rerfhfxf,lugnut,cretin,iloveu2,powerade,aaaaaaa1,omanko,kovalenko,isabe,chobits,151nxjmt,shadow11,zcxfcnkbdf,gy3yt2rgls,vfhbyrf,159753123,bladerunner,goodone,wonton,doodie,333666999,fuckyou123,kitty123,chisox,orlando1,skateboa,red12345,destroye,snoogans,satan1,juancarlo,goheels,jetson,scottt,fuckup,aleksa,gfhfljrc,passfind,oscar123,derrick1,hateme,viper123,pieman,audi100,tuffy,andover,shooter1,10000,makarov,grant1,nighthaw,13576479,browneye,batigol,nfvfhf,chocolate1,7hrdnw23,petter,bantam,morlii,jediknight,brenden,argonaut,goodstuf,wisconsi,315920,abigail1,dirtbag,splurge,k123456,lucky777,valdepen,gsxr600,322223,ghjnjrjk,zaq1xsw2cde3,schwanz,walter1,letmein22,nomads,124356,codeblue,nokian70,fucke,footbal1,agyvorc,aztecs,passw0r,smuggles,femmes,ballgag,krasnodar,tamuna,schule,sixtynine,empires,erfolg,dvader,ladygaga,elite1,venezuel,nitrous,kochamcie,olivia1,trustn01,arioch,sting1,131415,tristar,555000,maroon,135799,marsik,555556,fomoco,natalka,cwoui,tartan,davecole,nosferat,hotsauce,dmitry,horus,dimasik,skazka,boss302,bluebear,vesper,ultras,tarantul,asd123asd,azteca,theflash,8ball,1footbal,titlover,lucas123,number6,sampson1,789852,party1,dragon99,adonai,carwash,metropol,psychnau,vthctltc,hounds,firework,blink18,145632,wildcat1,satchel,rice80,ghtktcnm,sailor1,cubano,anderso,rocks1,mike11,famili,dfghjc,besiktas,roygbiv,nikko,bethan,minotaur,rakesh,orange12,hfleuf,jackel,myangel,favorite7,1478520,asssss,agnieszka,haley1,raisin,htubyf,1buster,cfiekz,derevo,1a2a3a4a5a,baltika,raffles,scruffy1,clitlick,louis1,buddha1,fy.nrf,walker1,makoto,shadow2,redbeard,vfvfvskfhfve,mycock,sandydog,lineman,network1,favorite8,longdick,mustangg,mavericks,indica,1killer,cisco1,angelofwar,blue69,brianna1,bubbaa,slayer666,level42,baldrick,brutus1,lowdown,haribo,lovesexy,500000,thissuck,picker,stephy,1fuckme,characte,telecast,1bigdog,repytwjdf,thematrix,hammerhe,chucha,ganesha,gunsmoke,georgi,sheltie,1harley,knulla,sallas,westie,dragon7,conker,crappie,margosha,lisboa,3e2w1q,shrike,grifter,ghjcnjghjcnj,asdfg1,mnbvcxz1,myszka,posture,boggie,rocketman,flhtyfkby,twiztid,vostok,pi314159,force1,televizor,gtkmvtym,samhain,imcool,jadzia,dreamers,strannik,k2trix,steelhea,nikitin,commodor,brian123,chocobo,whopper,ibilljpf,megafon,ararat,thomas12,ghbrjkbcn,q1234567890,hibernia,kings1,jim123,redfive,68camaro,iawgk2,xavier1,1234567u,d123456,ndirish,airborn,halfmoon,fluffy1,ranchero,sneaker,soccer2,passion1,cowman,birthday1,johnn,razzle,glock17,wsxqaz,nubian,lucky2,jelly1,henderso,eric1,123123e,boscoe01,fuck0ff,simpson1,sassie,rjyjgkz,nascar3,watashi,loredana,janus,wilso,conman,david2,mothe,iloveher,snikers,davidj,fkmnthyfnbdf,mettss,ratfink,123456h,lostsoul,sweet16,brabus,wobble,petra1,fuckfest,otters,sable1,svetka,spartacu,bigstick,milashka,1lover,pasport,champagn,papichul,hrvatska,hondacivic,kevins,tacit,moneybag,gohogs,rasta1,246813579,ytyfdbcnm,gubber,darkmoon,vitaliy,233223,playboys,tristan1,joyce1,oriflame,mugwump,access2,autocad,thematri,qweqwe123,lolwut,ibill01,multisyn,1233211,pelikan,rob123,chacal,1234432,griffon,pooch,dagestan,geisha,satriani,anjali,rocketma,gixxer,pendrago,vincen,hellokit,killyou,ruger,doodah,bumblebe,badlands,galactic,emachines,foghorn,jackso,jerem,avgust,frontera,123369,daisymae,hornyboy,welcome123,tigger01,diabl,angel13,interex,iwantsex,rockydog,kukolka,sawdust,online1,3234412,bigpapa,jewboy,3263827,dave123,riches,333222,tony1,toggle,farter,124816,tities,balle,brasilia,southsid,micke,ghbdtn12,patit,ctdfcnjgjkm,olds442,zzzzzz1,nelso,gremlins,gypsy1,carter1,slut69,farcry,7415963,michael8,birdie1,charl,123456789abc,100001,aztec,sinjin,bigpimpi,closeup,atlas1,nvidia,doggone,classic1,manana,malcolm1,rfkbyf,hotbabe,rajesh,dimebag,ganjubas,rodion,jagr68,seren,syrinx,funnyman,karapuz,123456789n,bloomin,admin18533362,biggdogg,ocarina,poopy1,hellome,internet1,booties,blowjobs,matt1,donkey1,swede,1jennife,evgeniya,lfhbyf,coach1,444777,green12,patryk,pinewood,justin12,271828,89600506779,notredame,tuborg,lemond,sk8ter,million1,wowser,pablo1,st0n3,jeeves,funhouse,hiroshi,gobucs,angeleye,bereza,winter12,catalin,qazedc,andros,ramazan,vampyre,sweethea,imperium,murat,jamest,flossy,sandeep,morgen,salamandra,bigdogg,stroller,njdevils,nutsack,vittorio,%%passwo,playful,rjyatnrf,tookie,ubnfhf,michi,777444,shadow13,devils1,radiance,toshiba1,beluga,amormi,dandfa,trust1,killemall,smallville,polgara,billyb,landscap,steves,exploite,zamboni,damage11,dzxtckfd,trader12,pokey1,kobe08,damager,egorov,dragon88,ckfdbr,lisa69,blade2,audis4,nelson1,nibbles,23176djivanfros,mutabor,artofwar,matvei,metal666,hrfzlz,schwinn,poohbea,seven77,thinker,123456789qwerty,sobriety,jakers,karamelka,vbkfyf,volodin,iddqd,dale03,roberto1,lizaveta,qqqqqq1,cathy1,08154711,davidm,quixote,bluenote,tazdevil,katrina1,bigfoot1,bublik,marma,olechka,fatpussy,marduk,arina,nonrev67,qqqq1111,camill,wtpfhm,truffle,fairview,mashina,voltaire,qazxswedcvfr,dickface,grassy,lapdance,bosstone,crazy8,yackwin,mobil,danielit,mounta1n,player69,bluegill,mewtwo,reverb,cnthdf,pablito,a123321,elena1,warcraft1,orland,ilovemyself,rfntyjr,joyride,schoo,dthjxrf,thetachi,goodtimes,blacksun,humpty,chewbacca,guyute,123xyz,lexicon,blue45,qwe789,galatasaray,centrino,hendrix1,deimos,saturn5,craig1,vlad1996,sarah123,tupelo,ljrnjh,hotwife,bingos,1231231,nicholas1,flamer,pusher,1233210,heart1,hun999,jiggy,giddyup,oktober,123456zxc,budda,galahad,glamur,samwise,oneton,bugsbunny,dominic1,scooby2,freetime,internat,159753852,sc00ter,wantit,mazinger,inflames,laracrof,greedo,014789,godofwar,repytwjd,water123,fishnet,venus1,wallace1,tenpin,paula1,1475963,mania,novikov,qwertyasdfgh,goldmine,homies,777888999,8balls,holeinon,paper1,samael,013579,mansur,nikit,ak1234,blueline,polska1,hotcock,laredo,windstar,vbkbwbz,raider1,newworld,lfybkrf,catfish1,shorty1,piranha,treacle,royale,2234562,smurfs,minion,cadence,flapjack,123456p,sydne,135531,robinhoo,nasdaq,decatur,cyberonline,newage,gemstone,jabba,touchme,hooch,pigdog,indahous,fonzie,zebra1,juggle,patrick2,nihongo,hitomi,oldnavy,qwerfdsa,ukraina,shakti,allure,kingrich,diane1,canad,piramide,hottie1,clarion,college1,5641110,connect1,therion,clubber,velcro,dave1,astra1,13579-,astroboy,skittle,isgreat,photoes,cvzefh1gkc,001100,2cool4u,7555545,ginger12,2wsxcde3,camaro69,invader,domenow,asd1234,colgate,qwertasdfg,jack123,pass01,maxman,bronte,whkzyc,peter123,bogie,yecgaa,abc321,1qay2wsx,enfield,camaroz2,trashman,bonefish,system32,azsxdcfvgb,peterose,iwantyou,dick69,temp1234,blastoff,capa200,connie1,blazin,12233445,sexybaby,123456j,brentfor,pheasant,hommer,jerryg,thunders,august1,lager,kapusta,boobs1,nokia5300,rocco1,xytfu7,stars1,tugger,123sas,blingbling,1bubba,0wnsyo0,1george,baile,richard2,habana,1diamond,sensatio,1golfer,maverick1,1chris,clinton1,michael7,dragons1,sunrise1,pissant,fatim,mopar1,levani,rostik,pizzapie,987412365,oceans11,748159263,cum4me,palmetto,4r3e2w1q,paige1,muncher,arsehole,kratos,gaffer,banderas,billys,prakash,crabby,bungie,silver12,caddis,spawn1,xboxlive,sylvania,littlebi,524645,futura,valdemar,isacs155,prettygirl,big123,555444,slimer,chicke,newstyle,skypilot,sailormoon,fatluvr69,jetaime,sitruc,jesuschrist,sameer,bear12,hellion,yendor,country1,etnies,conejo,jedimast,darkknight,toobad,yxcvbn,snooks,porn4life,calvary,alfaromeo,ghostman,yannick,fnkfynblf,vatoloco,homebase,5550666,barret,1111111111zz,odysseus,edwardss,favre4,jerrys,crybaby,xsw21qaz,firestor,spanks,indians1,squish,kingair,babycakes,haters,sarahs,212223,teddyb,xfactor,cumload,rhapsody,death123,three3,raccoon,thomas2,slayer66,1q2q3q4q5q,thebes,mysterio,thirdeye,orkiox.,nodoubt,bugsy,schweiz,dima1996,angels1,darkwing,jeronimo,moonpie,ronaldo9,peaches2,mack10,manish,denise1,fellowes,carioca,taylor12,epaulson,makemoney,oc247ngucz,kochanie,3edcvfr4,vulture,1qw23e,1234567z,munchie,picard1,xthtgfirf,sportste,psycho1,tahoe1,creativ,perils,slurred,hermit,scoob,diesel1,cards1,wipeout,weeble,integra1,out3xf,powerpc,chrism,kalle,ariadne,kailua,phatty,dexter1,fordman,bungalow,paul123,compa,train1,thejoker,jys6wz,pussyeater,eatmee,sludge,dominus,denisa,tagheuer,yxcvbnm,bill1,ghfdlf,300zx,nikita123,carcass,semaj,ramone,muenchen,animal1,greeny,annemari,dbrf134,jeepcj7,mollys,garten,sashok,ironmaid,coyotes,astoria,george12,westcoast,primetim,123456o,panchito,rafae,japan1,framer,auralo,tooshort,egorova,qwerty22,callme,medicina,warhawk,w1w2w3w4,cristia,merli,alex22,kawaii,chatte,wargames,utvols,muaddib,trinket,andreas1,jjjjj1,cleric,scooters,cuntlick,gggggg1,slipknot1,235711,handcuff,stussy,guess1,leiceste,ppppp1,passe,lovegun,chevyman,hugecock,driver1,buttsex,psychnaut1,cyber1,black2,alpha12,melbourn,man123,metalman,yjdsqujl,blondi,bungee,freak1,stomper,caitlin1,nikitina,flyaway,prikol,begood,desperad,aurelius,john1234,whosyourdaddy,slimed123,bretagne,den123,hotwheel,king123,roodypoo,izzicam,save13tx,warpten,nokia3310,samolet,ready1,coopers,scott123,bonito,1aaaaa,yomomma,dawg1,rache,itworks,asecret,fencer,451236,polka,olivetti,sysadmin,zepplin,sanjuan,479373,lickem,hondacrx,pulamea,future1,naked1,sexyguy,w4g8at,lollol1,declan,runner1,rumple,daddy123,4snz9g,grandprix,calcio,whatthefuck,nagrom,asslick,pennst,negrit,squiggy,1223334444,police22,giovann,toronto1,tweet,yardbird,seagate,truckers,554455,scimitar,pescator,slydog,gaysex,dogfish,fuck777,12332112,qazxswed,morkovka,daniela1,imback,horny69,789123456,123456789w,jimmy2,bagger,ilove69,nikolaus,atdhfkm,rebirth,1111aaaa,pervasive,gjgeufq,dte4uw,gfhnbpfy,skeletor,whitney1,walkman,delorean,disco1,555888,as1234,ishikawa,fuck12,reaper1,dmitrii,bigshot,morrisse,purgen,qwer4321,itachi,willys,123123qwe,kisska,roma123,trafford,sk84life,326159487,pedros,idiom,plover,bebop,159875321,jailbird,arrowhea,qwaszx123,zaxscdvf,catlover,bakers,13579246,bones69,vermont1,helloyou,simeon,chevyz71,funguy,stargaze,parolparol,steph1,bubby,apathy,poppet,laxman,kelly123,goodnews,741236,boner1,gaetano,astonvilla,virtua,luckyboy,rocheste,hello2u,elohim,trigger1,cstrike,pepsicola,miroslav,96385274,fistfuck,cheval,magyar,svetlanka,lbfyjxrf,mamedov,123123123q,ronaldo1,scotty1,1nicole,pittbull,fredd,bbbbb1,dagwood,gfhkfvtyn,ghblehrb,logan5,1jordan,sexbomb,omega2,montauk,258741,dtythf,gibbon,winamp,thebomb,millerli,852654,gemin,baldy,halflife2,dragon22,mulberry,morrigan,hotel6,zorglub,surfin,951159,excell,arhangel,emachine,moses1,968574,reklama,bulldog2,cuties,barca,twingo,saber,elite11,redtruck,casablan,ashish,moneyy,pepper12,cnhtktw,rjcnbr,arschloch,phenix,cachorro,sunita,madoka,joselui,adams1,mymoney,hemicuda,fyutkjr,jake12,chicas,eeeee1,sonnyboy,smarties,birdy,kitten1,cnfcbr,island1,kurosaki,taekwond,konfetka,bennett1,omega3,jackson2,fresca,minako,octavian,kban667,feyenoord,muaythai,jakedog,fktrcfylhjdyf,1357911q,phuket,sexslave,fktrcfylhjdbx,asdfjk,89015173454,qwerty00,kindbud,eltoro,sex6969,nyknicks,12344321q,caballo,evenflow,hoddle,love22,metro1,mahalko,lawdog,tightass,manitou,buckie,whiskey1,anton123,335533,password4,primo,ramair,timbo,brayden,stewie,pedro1,yorkshir,ganster,hellothe,tippy1,direwolf,genesi,rodrig,enkeli,vaz21099,sorcerer,winky,oneshot,boggle,serebro,badger1,japanes,comicbook,kamehame,alcat,denis123,echo45,sexboy,gr8ful,hondo,voetbal,blue33,2112rush,geneviev,danni1,moosey,polkmn,matthew7,ironhead,hot2trot,ashley12,sweeper,imogen,blue21,retep,stealth1,guitarra,bernard1,tatian,frankfur,vfnhbwf,slacking,haha123,963741,asdasdas,katenok,airforce1,123456789qaz,shotgun1,12qwasz,reggie1,sharo,976431,pacifica,dhip6a,neptun,kardon,spooky1,beaut,555555a,toosweet,tiedup,11121314,startac,lover69,rediska,pirata,vfhrbp,1234qwerty,energize,hansolo1,playbo,larry123,oemdlg,cnjvfnjkju,a123123,alexan,gohawks,antonius,fcbayern,mambo,yummy1,kremlin,ellen1,tremere,vfiekz,bellevue,charlie9,izabella,malishka,fermat,rotterda,dawggy,becket,chasey,kramer1,21125150,lolit,cabrio,schlong,arisha,verity,3some,favorit,maricon,travelle,hotpants,red1234,garrett1,home123,knarf,seven777,figment,asdewq,canseco,good2go,warhol,thomas01,pionee,al9agd,panacea,chevy454,brazzers,oriole,azerty123,finalfan,patricio,northsta,rebelde,bulldo,stallone,boogie1,7uftyx,cfhfnjd,compusa,cornholi,config,deere,hoopster,sepultura,grasshop,babygurl,lesbo,diceman,proverbs,reddragon,nurbek,tigerwoo,superdup,buzzsaw,kakaroto,golgo13,edwar,123qaz123,butter1,sssss1,texas2,respekt,ou812ic,123456qaz,55555a,doctor1,mcgwire,maria123,aol999,cinders,aa1234,joness,ghbrjkmyj,makemone,sammyboy,567765,380zliki,theraven,testme,mylene,elvira26,indiglo,tiramisu,shannara,baby1,123666,gfhreh,papercut,johnmish,orange8,bogey1,mustang7,bagpipes,dimarik,vsijyjr,4637324,ravage,cogito,seven11,natashka,warzone,hr3ytm,4free,bigdee,000006,243462536,bigboi,123333,trouts,sandy123,szevasz,monica2,guderian,newlife1,ratchet,r12345,razorbac,12345i,piazza31,oddjob,beauty1,fffff1,anklet,nodrog,pepit,olivi,puravida,robert12,transam1,portman,bubbadog,steelers1,wilson1,eightball,mexico1,superboy,4rfv5tgb,mzepab,samurai1,fuckslut,colleen1,girdle,vfrcbvec,q1w2e3r4t,soldier1,19844891,alyssa1,a12345a,fidelis,skelter,nolove,mickeymouse,frehley,password69,watermel,aliska,soccer15,12345e,ladybug1,abulafia,adagio,tigerlil,takehana,hecate,bootneck,junfan,arigato,wonkette,bobby123,trustnoone,phantasm,132465798,brianjo,w12345,t34vfrc1991,deadeye,1robert,1daddy,adida,check1,grimlock,muffi,airwalk,prizrak,onclick,longbeac,ernie1,eadgbe,moore1,geniu,shadow123,bugaga,jonathan1,cjrjkjdf,orlova,buldog,talon1,westport,aenima,541233432442,barsuk,chicago2,kellys,hellbent,toughguy,iskander,skoal,whatisit,jake123,scooter2,fgjrfkbgcbc,ghandi,love13,adelphia,vjhrjdrf,adrenali,niunia,jemoeder,rainbo,all4u8,anime1,freedom7,seraph,789321,tommys,antman,firetruc,neogeo,natas,bmwm3,froggy1,paul1,mamit,bayview,gateways,kusanagi,ihateu,frederi,rock1,centurion,grizli,biggin,fish1,stalker1,3girls,ilovepor,klootzak,lollo,redsox04,kirill123,jake1,pampers,vasya,hammers1,teacup,towing,celtic1,ishtar,yingyang,4904s677075,dahc1,patriot1,patrick9,redbirds,doremi,rebecc,yoohoo,makarova,epiphone,rfgbnfy,milesd,blister,chelseafc,katana1,blackrose,1james,primrose,shock5,hard1,scooby12,c6h12o6,dustoff,boing,chisel,kamil,1william,defiant1,tyvugq,mp8o6d,aaa340,nafets,sonnet,flyhigh,242526,crewcom,love23,strike1,stairway,katusha,salamand,cupcake1,password0,007james,sunnie,multisync,harley01,tequila1,fred12,driver8,q8zo8wzq,hunter01,mozzer,temporar,eatmeraw,mrbrownxx,kailey,sycamore,flogger,tincup,rahasia,ganymede,bandera,slinger,1111122222,vander,woodys,1cowboy,khaled,jamies,london12,babyboo,tzpvaw,diogenes,budice,mavrick,135797531,cheeta,macros,squonk,blackber,topfuel,apache1,falcon16,darkjedi,cheeze,vfhvtkfl,sparco,change1,gfhfif,freestyl,kukuruza,loveme2,12345f,kozlov,sherpa,marbella,44445555,bocephus,1winner,alvar,hollydog,gonefish,iwantin,barman,godislove,amanda18,rfpfynbg,eugen,abcdef1,redhawk,thelema,spoonman,baller1,harry123,475869,tigerman,cdtnjxrf,marillio,scribble,elnino,carguy,hardhead,l2g7k3,troopers,selen,dragon76,antigua,ewtosi,ulysse,astana,paroli,cristo,carmex,marjan,bassfish,letitbe,kasparov,jay123,19933991,blue13,eyecandy,scribe,mylord,ukflbjkec,ellie1,beaver1,destro,neuken,halfpint,ameli,lilly1,satanic,xngwoj,12345trewq,asdf1,bulldogg,asakura,jesucrist,flipside,packers4,biggy,kadett,biteme69,bobdog,silverfo,saint1,bobbo,packman,knowledg,foolio,fussbal,12345g,kozerog,westcoas,minidisc,nbvcxw,martini1,alastair,rasengan,superbee,memento,porker,lena123,florenc,kakadu,bmw123,getalife,bigsky,monkee,people1,schlampe,red321,memyself,0147896325,12345678900987654321,soccer14,realdeal,gfgjxrf,bella123,juggs,doritos,celtics1,peterbilt,ghbdtnbrb,gnusmas,xcountry,ghbdtn1,batman99,deusex,gtnhjdf,blablabl,juster,marimba,love2,rerjkrf,alhambra,micros,siemens1,assmaste,moonie,dashadasha,atybrc,eeeeee1,wildrose,blue55,davidl,xrp23q,skyblue,leo123,ggggg1,bestfriend,franny,1234rmvb,fun123,rules1,sebastien,chester2,hakeem,winston2,fartripper,atlant,07831505,iluvsex,q1a2z3,larrys,009900,ghjkju,capitan,rider1,qazxsw21,belochka,andy123,hellya,chicca,maximal,juergen,password1234,howard1,quetzal,daniel123,qpwoeiruty,123555,bharat,ferrari3,numbnuts,savant,ladydog,phipsi,lovepussy,etoile,power2,mitten,britneys,chilidog,08522580,2fchbg,kinky1,bluerose,loulo,ricardo1,doqvq3,kswbdu,013cpfza,timoha,ghbdtnghbdtn,3stooges,gearhead,browns1,g00ber,super7,greenbud,kitty2,pootie,toolshed,gamers,coffe,ibill123,freelove,anasazi,sister1,jigger,natash,stacy1,weronika,luzern,soccer7,hoopla,dmoney,valerie1,canes,razdvatri,washere,greenwoo,rfhjkbyf,anselm,pkxe62,maribe,daniel2,maxim1,faceoff,carbine,xtkjdtr,buddy12,stratos,jumpman,buttocks,aqswdefr,pepsis,sonechka,steeler1,lanman,nietzsch,ballz,biscuit1,wrxsti,goodfood,juventu,federic,mattman,vika123,strelec,jledfyxbr,sideshow,4life,fredderf,bigwilly,12347890,12345671,sharik,bmw325i,fylhtqrf,dannon4,marky,mrhappy,drdoom,maddog1,pompier,cerbera,goobers,howler,jenny69,evely,letitrid,cthuttdyf,felip,shizzle,golf12,t123456,yamah,bluearmy,squishy,roxan,10inches,dollface,babygirl1,blacksta,kaneda,lexingto,canadien,222888,kukushka,sistema,224422,shadow69,ppspankp,mellons,barbie1,free4all,alfa156,lostone,2w3e4r5t,painkiller,robbie1,binger,8dihc6,jaspe,rellik,quark,sogood,hoopstar,number2,snowy1,dad2ownu,cresta,qwe123asd,hjvfyjdf,gibsonsg,qbg26i,dockers,grunge,duckling,lfiekz,cuntsoup,kasia1,1tigger,woaini,reksio,tmoney,firefighter,neuron,audia3,woogie,powerboo,powermac,fatcock,12345666,upnfmc,lustful,porn1,gotlove,amylee,kbytqrf,11924704,25251325,sarasota,sexme,ozzie1,berliner,nigga1,guatemal,seagulls,iloveyou!,chicken2,qwerty21,010203040506,1pillow,libby1,vodoley,backlash,piglets,teiubesc,019283,vonnegut,perico,thunde,buckey,gtxtymrf,manunite,iiiii1,lost4815162342,madonn,270873_,britney1,kevlar,piano1,boondock,colt1911,salamat,doma77ns,anuradha,cnhjqrf,rottweil,newmoon,topgun1,mauser,fightclu,birthday21,reviewpa,herons,aassddff,lakers32,melissa2,vredina,jiujitsu,mgoblue,shakey,moss84,12345zxcvb,funsex,benji1,garci,113322,chipie,windex,nokia5310,pwxd5x,bluemax,cosita,chalupa,trotsky,new123,g3ujwg,newguy,canabis,gnaget,happydays,felixx,1patrick,cumface,sparkie,kozlova,123234,newports,broncos7,golf18,recycle,hahah,harrypot,cachondo,open4me,miria,guessit,pepsione,knocker,usmc1775,countach,playe,wiking,landrover,cracksevi,drumline,a7777777,smile123,manzana,panty,liberta,pimp69,dolfan,quality1,schnee,superson,elaine22,webhompass,mrbrownx,deepsea,4wheel,mamasita,rockport,rollie,myhome,jordan12,kfvgjxrf,hockey12,seagrave,ford1,chelsea2,samsara,marissa1,lamesa,mobil1,piotrek,tommygun,yyyyy1,wesley1,billy123,homersim,julies,amanda12,shaka,maldini,suzenet,springst,iiiiii1,yakuza,111111aa,westwind,helpdesk,annamari,bringit,hopefull,hhhhhhh1,saywhat,mazdarx8,bulova,jennife1,baikal,gfhjkmxbr,victoria1,gizmo123,alex99,defjam,2girls,sandrock,positivo,shingo,syncmast,opensesa,silicone,fuckina,senna1,karlos,duffbeer,montagne,gehrig,thetick,pepino,hamburge,paramedic,scamp,smokeweed,fabregas,phantoms,venom121293,2583458,badone,porno69,manwhore,vfvf123,notagain,vbktyf,rfnthbyrf,wildblue,kelly001,dragon66,camell,curtis1,frolova,1212123,dothedew,tyler123,reddrago,planetx,promethe,gigolo,1001001,thisone,eugeni,blackshe,cruzazul,incognito,puller,joonas,quick1,spirit1,gazza,zealot,gordito,hotrod1,mitch1,pollito,hellcat,mythos,duluth,383pdjvl,easy123,hermos,binkie,its420,lovecraf,darien,romina,doraemon,19877891,syclone,hadoken,transpor,ichiro,intell,gargamel,dragon2,wavpzt,557744,rjw7x4,jennys,kickit,rjynfrn,likeit,555111,corvus,nec3520,133113,mookie1,bochum,samsung2,locoman0,154ugeiu,vfvfbgfgf,135792,[start],tenni,20001,vestax,hufmqw,neveragain,wizkid,kjgfnf,nokia6303,tristen,saltanat,louie1,gandalf2,sinfonia,alpha3,tolstoy,ford150,f00bar,1hello,alici,lol12,riker1,hellou,333888,1hunter,qw1234,vibrator,mets86,43211234,gonzale,cookies1,sissy1,john11,bubber,blue01,cup2006,gtkmvtyb,nazareth,heybaby,suresh,teddie,mozilla,rodeo1,madhouse,gamera,123123321,naresh,dominos,foxtrot1,taras,powerup,kipling,jasonb,fidget,galena,meatman,alpacino,bookmark,farting,humper,titsnass,gorgon,castaway,dianka,anutka,gecko1,fucklove,connery,wings1,erika1,peoria,moneymaker,ichabod,heaven1,paperboy,phaser,breakers,nurse1,westbrom,alex13,brendan1,123asd123,almera,grubber,clarkie,thisisme,welkom01,51051051051,crypto,freenet,pflybwf,black12,testme2,changeit,autobahn,attica,chaoss,denver1,tercel,gnasher23,master2,vasilii,sherman1,gomer,bigbuck,derek1,qwerzxcv,jumble,dragon23,art131313,numark,beasty,cxfcnmttcnm,updown,starion,glist,sxhq65,ranger99,monkey7,shifter,wolves1,4r5t6y,phone1,favorite5,skytommy,abracada,1martin,102030405060,gatech,giulio,blacktop,cheer1,africa1,grizzly1,inkjet,shemales,durango1,booner,11223344q,supergirl,vanyarespekt,dickless,srilanka,weaponx,6string,nashvill,spicey,boxer1,fabien,2sexy2ho,bowhunt,jerrylee,acrobat,tawnee,ulisse,nolimit8,l8g3bkde,pershing,gordo1,allover,gobrowns,123432,123444,321456987,spoon1,hhhhh1,sailing1,gardenia,teache,sexmachine,tratata,pirate1,niceone,jimbos,314159265,qsdfgh,bobbyy,ccccc1,carla1,vjkjltw,savana,biotech,frigid,123456789g,dragon10,yesiam,alpha06,oakwood,tooter,winsto,radioman,vavilon,asnaeb,google123,nariman,kellyb,dthyjcnm,password6,parol1,golf72,skate1,lthtdj,1234567890s,kennet,rossia,lindas,nataliya,perfecto,eminem1,kitana,aragorn1,rexona,arsenalf,planot,coope,testing123,timex,blackbox,bullhead,barbarian,dreamon,polaris1,cfvjktn,frdfhbev,gametime,slipknot666,nomad1,hfgcjlbz,happy69,fiddler,brazil1,joeboy,indianali,113355,obelisk,telemark,ghostrid,preston1,anonim,wellcome,verizon1,sayangku,censor,timeport,dummies,adult1,nbnfybr,donger,thales,iamgay,sexy1234,deadlift,pidaras,doroga,123qwe321,portuga,asdfgh12,happys,cadr14nu,pi3141,maksik,dribble,cortland,darken,stepanova,bommel,tropic,sochi2014,bluegras,shahid,merhaba,nacho,2580456,orange44,kongen,3cudjz,78girl,my3kids,marcopol,deadmeat,gabbie,saruman,jeepman,freddie1,katie123,master99,ronal,ballbag,centauri,killer7,xqgann,pinecone,jdeere,geirby,aceshigh,55832811,pepsimax,rayden,razor1,tallyho,ewelina,coldfire,florid,glotest,999333,sevenup,bluefin,limaperu,apostol,bobbins,charmed1,michelin,sundin,centaur,alphaone,christof,trial1,lions1,45645,just4you,starflee,vicki1,cougar1,green2,jellyfis,batman69,games1,hihje863,crazyzil,w0rm1,oklick,dogbite,yssup,sunstar,paprika,postov10,124578963,x24ik3,kanada,buckster,iloveamy,bear123,smiler,nx74205,ohiostat,spacey,bigbill,doudo,nikolaeva,hcleeb,sex666,mindy1,buster11,deacons,boness,njkcnsq,candy2,cracker1,turkey1,qwertyu1,gogreen,tazzzz,edgewise,ranger01,qwerty6,blazer1,arian,letmeinnow,cigar1,jjjjjj1,grigio,frien,tenchu,f9lmwd,imissyou,filipp,heathers,coolie,salem1,woodduck,scubadiv,123kat,raffaele,nikolaev,dapzu455,skooter,9inches,lthgfhjkm,gr8one,ffffff1,zujlrf,amanda69,gldmeo,m5wkqf,rfrltkf,televisi,bonjou,paleale,stuff1,cumalot,fuckmenow,climb7,mark1234,t26gn4,oneeye,george2,utyyflbq,hunting1,tracy71,ready2go,hotguy,accessno,charger1,rudedog,kmfdm,goober1,sweetie1,wtpmjgda,dimensio,ollie1,pickles1,hellraiser,mustdie,123zzz,99887766,stepanov,verdun,tokenbad,anatol,bartende,cidkid86,onkelz,timmie,mooseman,patch1,12345678c,marta1,dummy1,bethany1,myfamily,history1,178500,lsutiger,phydeaux,moren,dbrnjhjdbx,gnbxrf,uniden,drummers,abpbrf,godboy,daisy123,hogan1,ratpack,irland,tangerine,greddy,flore,sqrunch,billyjoe,q55555,clemson1,98745632,marios,ishot,angelin,access12,naruto12,lolly,scxakv,austin12,sallad,cool99,rockit,mongo1,mark22,ghbynth,ariadna,senha,docto,tyler2,mobius,hammarby,192168,anna12,claire1,pxx3eftp,secreto,greeneye,stjabn,baguvix,satana666,rhbcnbyjxrf,dallastx,garfiel,michaelj,1summer,montan,1234ab,filbert,squids,fastback,lyudmila,chucho,eagleone,kimberle,ar3yuk3,jake01,nokids,soccer22,1066ad,ballon,cheeto,review69,madeira,taylor2,sunny123,chubbs,lakeland,striker1,porche,qwertyu8,digiview,go1234,ferari,lovetits,aditya,minnow,green3,matman,cellphon,fortytwo,minni,pucara,69a20a,roman123,fuente,12e3e456,paul12,jacky,demian,littleman,jadakiss,vlad1997,franca,282860,midian,nunzio,xaccess2,colibri,jessica0,revilo,654456,harvey1,wolf1,macarena,corey1,husky1,arsen,milleniu,852147,crowes,redcat,combat123654,hugger,psalms,quixtar,ilovemom,toyot,ballss,ilovekim,serdar,james23,avenger1,serendip,malamute,nalgas,teflon,shagger,letmein6,vyjujnjxbt,assa1234,student1,dixiedog,gznybwf13,fuckass,aq1sw2de3,robroy,hosehead,sosa21,123345,ias100,teddy123,poppin,dgl70460,zanoza,farhan,quicksilver,1701d,tajmahal,depechemode,paulchen,angler,tommy2,recoil,megamanx,scarecro,nicole2,152535,rfvtgb,skunky,fatty1,saturno,wormwood,milwauke,udbwsk,sexlover,stefa,7bgiqk,gfnhbr,omar10,bratan,lbyfvj,slyfox,forest1,jambo,william3,tempus,solitari,lucydog,murzilka,qweasdzxc1,vehpbkrf,12312345,fixit,woobie,andre123,123456789x,lifter,zinaida,soccer17,andone,foxbat,torsten,apple12,teleport,123456i,leglover,bigcocks,vologda,dodger1,martyn,d6o8pm,naciona,eagleeye,maria6,rimshot,bentley1,octagon,barbos,masaki,gremio,siemen,s1107d,mujeres,bigtits1,cherr,saints1,mrpink,simran,ghzybr,ferrari2,secret12,tornado1,kocham,picolo,deneme,onelove1,rolan,fenster,1fuckyou,cabbie,pegaso,nastyboy,password5,aidana,mine2306,mike13,wetone,tigger69,ytreza,bondage1,myass,golova,tolik,happyboy,poilkj,nimda2k,rammer,rubies,hardcore1,jetset,hoops1,jlaudio,misskitt,1charlie,google12,theone1,phred,porsch,aalborg,luft4,charlie5,password7,gnosis,djgabbab,1daniel,vinny,borris,cumulus,member1,trogdor,darthmau,andrew2,ktjybl,relisys,kriste,rasta220,chgobndg,weener,qwerty66,fritter,followme,freeman1,ballen,blood1,peache,mariso,trevor1,biotch,gtfullam,chamonix,friendste,alligato,misha1,1soccer,18821221,venkat,superd,molotov,bongos,mpower,acun3t1x,dfcmrf,h4x3d,rfhfufylf,tigran,booyaa,plastic1,monstr,rfnhby,lookatme,anabolic,tiesto,simon123,soulman,canes1,skyking,tomcat1,madona,bassline,dasha123,tarheel1,dutch1,xsw23edc,qwerty123456789,imperator,slaveboy,bateau,paypal,house123,pentax,wolf666,drgonzo,perros,digger1,juninho,hellomoto,bladerun,zzzzzzz1,keebler,take8422,fffffff1,ginuwine,israe,caesar1,crack1,precious1,garand,magda1,zigazaga,321ewq,johnpaul,mama1234,iceman69,sanjeev,treeman,elric,rebell,1thunder,cochon,deamon,zoltan,straycat,uhbyuj,luvfur,mugsy,primer,wonder1,teetime,candycan,pfchfytw,fromage,gitler,salvatio,piggy1,23049307,zafira,chicky,sergeev,katze,bangers,andriy,jailbait,vaz2107,ghbhjlf,dbjktnnf,aqswde,zaratustra,asroma,1pepper,alyss,kkkkk1,ryan1,radish,cozumel,waterpol,pentium1,rosebowl,farmall,steinway,dbrekz,baranov,jkmuf,another1,chinacat,qqqqqqq1,hadrian,devilmaycry4,ratbag,teddy2,love21,pullings,packrat,robyn1,boobo,qw12er34,tribe1,rosey,celestia,nikkie,fortune12,olga123,danthema,gameon,vfrfhjys,dilshod,henry14,jenova,redblue,chimaera,pennywise,sokrates,danimal,qqaazz,fuaqz4,killer2,198200,tbone1,kolyan,wabbit,lewis1,maxtor,egoist,asdfas,spyglass,omegas,jack12,nikitka,esperanz,doozer,matematika,wwwww1,ssssss1,poiu0987,suchka,courtney1,gungho,alpha2,fktyjxrf,summer06,bud420,devildriver,heavyd,saracen,foucault,choclate,rjdfktyrj,goblue1,monaro,jmoney,dcpugh,efbcapa201,qqh92r,pepsicol,bbb747,ch5nmk,honeyb,beszoptad,tweeter,intheass,iseedeadpeople,123dan,89231243658s,farside1,findme,smiley1,55556666,sartre,ytcnjh,kacper,costarica,134679258,mikeys,nolimit9,vova123,withyou,5rxypn,love143,freebie,rescue1,203040,michael6,12monkey,redgreen,steff,itstime,naveen,good12345,acidrain,1dawg,miramar,playas,daddio,orion2,852741,studmuff,kobe24,senha123,stephe,mehmet,allalone,scarface1,helloworld,smith123,blueyes,vitali,memphis1,mybitch,colin1,159874,1dick,podaria,d6wnro,brahms,f3gh65,dfcbkmtd,xxxman,corran,ugejvp,qcfmtz,marusia,totem,arachnid,matrix2,antonell,fgntrf,zemfira,christos,surfing1,naruto123,plato1,56qhxs,madzia,vanille,043aaa,asq321,mutton,ohiostate,golde,cdznjckfd,rhfcysq,green5,elephan,superdog,jacqueli,bollock,lolitas,nick12,1orange,maplelea,july23,argento,waldorf,wolfer,pokemon12,zxcvbnmm,flicka,drexel,outlawz,harrie,atrain,juice2,falcons1,charlie6,19391945,tower1,dragon21,hotdamn,dirtyboy,love4ever,1ginger,thunder2,virgo1,alien1,bubblegu,4wwvte,123456789qqq,realtime,studio54,passss,vasilek,awsome,giorgia,bigbass,2002tii,sunghile,mosdef,simbas,count0,uwrl7c,summer05,lhepmz,ranger21,sugarbea,principe,5550123,tatanka,9638v,cheerios,majere,nomercy,jamesbond007,bh90210,7550055,jobber,karaganda,pongo,trickle,defamer,6chid8,1q2a3z,tuscan,nick123,.adgjm,loveyo,hobbes1,note1234,shootme,171819,loveporn,9788960,monty123,fabrice,macduff,monkey13,shadowfa,tweeker,hanna1,madball,telnet,loveu2,qwedcxzas,thatsit,vfhcbr,ptfe3xxp,gblfhfcs,ddddddd1,hakkinen,liverune,deathsta,misty123,suka123,recon1,inferno1,232629,polecat,sanibel,grouch,hitech,hamradio,rkfdbfnehf,vandam,nadin,fastlane,shlong,iddqdidkfa,ledzeppelin,sexyfeet,098123,stacey1,negras,roofing,lucifer1,ikarus,tgbyhn,melnik,barbaria,montego,twisted1,bigal1,jiggle,darkwolf,acerview,silvio,treetops,bishop1,iwanna,pornsite,happyme,gfccdjhl,114411,veritech,batterse,casey123,yhntgb,mailto,milli,guster,q12345678,coronet,sleuth,fuckmeha,armadill,kroshka,geordie,lastochka,pynchon,killall,tommy123,sasha1996,godslove,hikaru,clticic,cornbrea,vfkmdbyf,passmaster,123123123a,souris,nailer,diabolo,skipjack,martin12,hinata,mof6681,brookie,dogfight,johnso,karpov,326598,rfvbrflpt,travesti,caballer,galaxy1,wotan,antoha,art123,xakep1234,ricflair,pervert1,p00kie,ambulanc,santosh,berserker,larry33,bitch123,a987654321,dogstar,angel22,cjcbcrf,redhouse,toodles,gold123,hotspot,kennedy1,glock21,chosen1,schneide,mainman,taffy1,3ki42x,4zqauf,ranger2,4meonly,year2000,121212a,kfylsi,netzwerk,diese,picasso1,rerecz,225522,dastan,swimmer1,brooke1,blackbea,oneway,ruslana,dont4get,phidelt,chrisp,gjyxbr,xwing,kickme,shimmy,kimmy1,4815162342lost,qwerty5,fcporto,jazzbo,mierd,252627,basses,sr20det,00133,florin,howdy1,kryten,goshen,koufax,cichlid,imhotep,andyman,wrest666,saveme,dutchy,anonymou,semprini,siempre,mocha1,forest11,wildroid,aspen1,sesam,kfgekz,cbhbec,a55555,sigmanu,slash1,giggs11,vatech,marias,candy123,jericho1,kingme,123a123,drakula,cdjkjxm,mercur,oneman,hoseman,plumper,ilovehim,lancers,sergey1,takeshi,goodtogo,cranberr,ghjcnj123,harvick,qazxs,1972chev,horsesho,freedom3,letmein7,saitek,anguss,vfvfgfgfz,300000,elektro,toonporn,999111999q,mamuka,q9umoz,edelweis,subwoofer,bayside,disturbe,volition,lucky3,12345678z,3mpz4r,march1,atlantida,strekoza,seagrams,090909t,yy5rbfsc,jack1234,sammy12,sampras,mark12,eintrach,chaucer,lllll1,nochance,whitepower,197000,lbvekz,passer,torana,12345as,pallas,koolio,12qw34,nokia8800,findout,1thomas,mmmmm1,654987,mihaela,chinaman,superduper,donnas,ringo1,jeroen,gfdkjdf,professo,cdtnrf,tranmere,tanstaaf,himera,ukflbfnjh,667788,alex32,joschi,w123456,okidoki,flatline,papercli,super8,doris1,2good4u,4z34l0ts,pedigree,freeride,gsxr1100,wulfgar,benjie,ferdinan,king1,charlie7,djdxbr,fhntvbq,ripcurl,2wsx1qaz,kingsx,desade,sn00py,loveboat,rottie,evgesha,4money,dolittle,adgjmpt,buzzers,brett1,makita,123123qweqwe,rusalka,sluts1,123456e,jameson1,bigbaby,1z2z3z,ckjybr,love4u,fucker69,erhfbyf,jeanluc,farhad,fishfood,merkin,giant1,golf69,rfnfcnhjaf,camera1,stromb,smoothy,774411,nylon,juice1,rfn.irf,newyor,123456789t,marmot,star11,jennyff,jester1,hisashi,kumquat,alex777,helicopt,merkur,dehpye,cummin,zsmj2v,kristjan,april12,englan,honeypot,badgirls,uzumaki,keines,p12345,guita,quake1,duncan1,juicer,milkbone,hurtme,123456789b,qq123456789,schwein,p3wqaw,54132442,qwertyytrewq,andreeva,ruffryde,punkie,abfkrf,kristinka,anna1987,ooooo1,335533aa,umberto,amber123,456123789,456789123,beelch,manta,peeker,1112131415,3141592654,gipper,wrinkle5,katies,asd123456,james11,78n3s5af,michael0,daboss,jimmyb,hotdog1,david69,852123,blazed,sickan,eljefe,2n6wvq,gobills,rfhfcm,squeaker,cabowabo,luebri,karups,test01,melkor,angel777,smallvil,modano,olorin,4rkpkt,leslie1,koffie,shadows1,littleon,amiga1,topeka,summer20,asterix1,pitstop,aloysius,k12345,magazin,joker69,panocha,pass1word,1233214,ironpony,368ejhih,88keys,pizza123,sonali,57np39,quake2,1234567890qw,1020304,sword1,fynjif,abcde123,dfktyjr,rockys,grendel1,harley12,kokakola,super2,azathoth,lisa123,shelley1,girlss,ibragim,seven1,jeff24,1bigdick,dragan,autobot,t4nvp7,omega123,900000,hecnfv,889988,nitro1,doggie1,fatjoe,811pahc,tommyt,savage1,pallino,smitty1,jg3h4hfn,jamielee,1qazwsx,zx123456,machine1,asdfgh123,guinnes,789520,sharkman,jochen,legend1,sonic2,extreme1,dima12,photoman,123459876,nokian95,775533,vaz2109,april10,becks,repmvf,pooker,qwer12345,themaster,nabeel,monkey10,gogetit,hockey99,bbbbbbb1,zinedine,dolphin2,anelka,1superma,winter01,muggsy,horny2,669966,kuleshov,jesusis,calavera,bullet1,87t5hdf,sleepers,winkie,vespa,lightsab,carine,magister,1spider,shitbird,salavat,becca1,wc18c2,shirak,galactus,zaskar,barkley1,reshma,dogbreat,fullsail,asasa,boeder,12345ta,zxcvbnm12,lepton,elfquest,tony123,vkaxcs,savatage,sevilia1,badkitty,munkey,pebbles1,diciembr,qapmoc,gabriel2,1qa2ws3e,cbcmrb,welldone,nfyufh,kaizen,jack11,manisha,grommit,g12345,maverik,chessman,heythere,mixail,jjjjjjj1,sylvia1,fairmont,harve,skully,global1,youwish,pikachu1,badcat,zombie1,49527843,ultra1,redrider,offsprin,lovebird,153426,stymie,aq1sw2,sorrento,0000001,r3ady41t,webster1,95175,adam123,coonass,159487,slut1,gerasim,monkey99,slutwife,159963,1pass1page,hobiecat,bigtymer,all4you,maggie2,olamide,comcast1,infinit,bailee,vasileva,.ktxrf,asdfghjkl1,12345678912,setter,fuckyou7,nnagqx,lifesuck,draken,austi,feb2000,cable1,1234qwerasdf,hax0red,zxcv12,vlad7788,nosaj,lenovo,underpar,huskies1,lovegirl,feynman,suerte,babaloo,alskdjfhg,oldsmobi,bomber1,redrover,pupuce,methodman,phenom,cutegirl,countyli,gretsch,godisgood,bysunsu,hardhat,mironova,123qwe456rty,rusty123,salut,187211,555666777,11111z,mahesh,rjntyjxtr,br00klyn,dunce1,timebomb,bovine,makelove,littlee,shaven,rizwan,patrick7,42042042,bobbijo,rustem,buttmunc,dongle,tiger69,bluecat,blackhol,shirin,peaces,cherub,cubase,longwood,lotus7,gwju3g,bruin,pzaiu8,green11,uyxnyd,seventee,dragon5,tinkerbel,bluess,bomba,fedorova,joshua2,bodyshop,peluche,gbpacker,shelly1,d1i2m3a4,ghtpbltyn,talons,sergeevna,misato,chrisc,sexmeup,brend,olddog,davros,hazelnut,bridget1,hzze929b,readme,brethart,wild1,ghbdtnbr1,nortel,kinger,royal1,bucky1,allah1,drakkar,emyeuanh,gallaghe,hardtime,jocker,tanman,flavio,abcdef123,leviatha,squid1,skeet,sexse,123456x,mom4u4mm,lilred,djljktq,ocean11,cadaver,baxter1,808state,fighton,primavera,1andrew,moogle,limabean,goddess1,vitalya,blue56,258025,bullride,cicci,1234567d,connor1,gsxr11,oliveoil,leonard1,legsex,gavrik,rjnjgtc,mexicano,2bad4u,goodfellas,ornw6d,mancheste,hawkmoon,zlzfrh,schorsch,g9zns4,bashful,rossi46,stephie,rfhfntkm,sellout,123fuck,stewar1,solnze,00007,thor5200,compaq12,didit,bigdeal,hjlbyf,zebulon,wpf8eu,kamran,emanuele,197500,carvin,ozlq6qwm,3syqo15hil,pennys,epvjb6,asdfghjkl123,198000,nfbcbz,jazzer,asfnhg66,zoloft,albundy,aeiou,getlaid,planet1,gjkbyjxrf,alex2000,brianb,moveon,maggie11,eieio,vcradq,shaggy1,novartis,cocoloco,dunamis,554uzpad,sundrop,1qwertyu,alfie,feliks,briand,123www,red456,addams,fhntv1998,goodhead,theway,javaman,angel01,stratoca,lonsdale,15987532,bigpimpin,skater1,issue43,muffie,yasmina,slowride,crm114,sanity729,himmel,carolcox,bustanut,parabola,masterlo,computador,crackhea,dynastar,rockbott,doggysty,wantsome,bigten,gaelle,juicy1,alaska1,etower,sixnine,suntan,froggies,nokia7610,hunter11,njnets,alicante,buttons1,diosesamo,elizabeth1,chiron,trustnoo,amatuers,tinytim,mechta,sammy2,cthulu,trs8f7,poonam,m6cjy69u35,cookie12,blue25,jordans,santa1,kalinka,mikey123,lebedeva,12345689,kissss,queenbee,vjybnjh,ghostdog,cuckold,bearshare,rjcntyrj,alinochka,ghjcnjrdfibyj,aggie1,teens1,3qvqod,dauren,tonino,hpk2qc,iqzzt580,bears85,nascar88,theboy,njqcw4,masyanya,pn5jvw,intranet,lollone,shadow99,00096462,techie,cvtifhbrb,redeemed,gocanes,62717315,topman,intj3a,cobrajet,antivirus,whyme,berserke,ikilz083,airedale,brandon2,hopkig,johanna1,danil8098,gojira,arthu,vision1,pendragon,milen,chrissie,vampiro,mudder,chris22,blowme69,omega7,surfers,goterps,italy1,baseba11,diego1,gnatsum,birdies,semenov,joker123,zenit2011,wojtek,cab4ma99,watchmen,damia,forgotte,fdm7ed,strummer,freelanc,cingular,orange77,mcdonalds,vjhjpjdf,kariya,tombston,starlet,hawaii1,dantheman,megabyte,nbvjirf,anjing,ybrjkftdbx,hotmom,kazbek,pacific1,sashimi,asd12,coorslig,yvtte545,kitte,elysium,klimenko,cobblers,kamehameha,only4me,redriver,triforce,sidorov,vittoria,fredi,dank420,m1234567,fallout2,989244342a,crazy123,crapola,servus,volvos,1scooter,griffin1,autopass,ownzyou,deviant,george01,2kgwai,boeing74,simhrq,hermosa,hardcor,griffy,rolex1,hackme,cuddles1,master3,bujhtr,aaron123,popolo,blader,1sexyred,gerry1,cronos,ffvdj474,yeehaw,bob1234,carlos2,mike77,buckwheat,ramesh,acls2h,monster2,montess,11qq22ww,lazer,zx123456789,chimpy,masterch,sargon,lochness,archana,1234qwert,hbxfhl,sarahb,altoid,zxcvbn12,dakot,caterham,dolomite,chazz,r29hqq,longone,pericles,grand1,sherbert,eagle3,pudge,irontree,synapse,boome,nogood,summer2,pooki,gangsta1,mahalkit,elenka,lbhtrnjh,dukedog,19922991,hopkins1,evgenia,domino1,x123456,manny1,tabbycat,drake1,jerico,drahcir,kelly2,708090a,facesit,11c645df,mac123,boodog,kalani,hiphop1,critters,hellothere,tbirds,valerka,551scasi,love777,paloalto,mrbrown,duke3d,killa1,arcturus,spider12,dizzy1,smudger,goddog,75395,spammy,1357997531,78678,datalife,zxcvbn123,1122112211,london22,23dp4x,rxmtkp,biggirls,ownsu,lzbs2twz,sharps,geryfe,237081a,golakers,nemesi,sasha1995,pretty1,mittens1,d1lakiss,speedrac,gfhjkmm,sabbat,hellrais,159753258,qwertyuiop123,playgirl,crippler,salma,strat1,celest,hello5,omega5,cheese12,ndeyl5,edward12,soccer3,cheerio,davido,vfrcbr,gjhjctyjr,boscoe,inessa,shithole,ibill,qwepoi,201jedlz,asdlkj,davidk,spawn2,ariel1,michael4,jamie123,romantik,micro1,pittsbur,canibus,katja,muhtar,thomas123,studboy,masahiro,rebrov,patrick8,hotboys,sarge1,1hammer,nnnnn1,eistee,datalore,jackdani,sasha2010,mwq6qlzo,cmfnpu,klausi,cnhjbntkm,andrzej,ilovejen,lindaa,hunter123,vvvvv1,novembe,hamster1,x35v8l,lacey1,1silver,iluvporn,valter,herson,alexsandr,cojones,backhoe,womens,777angel,beatit,klingon1,ta8g4w,luisito,benedikt,maxwel,inspecto,zaq12ws,wladimir,bobbyd,peterj,asdfg12,hellspawn,bitch69,nick1234,golfer23,sony123,jello1,killie,chubby1,kodaira52,yanochka,buckfast,morris1,roaddogg,snakeeye,sex1234,mike22,mmouse,fucker11,dantist,brittan,vfrfhjdf,doc123,plokijuh,emerald1,batman01,serafim,elementa,soccer9,footlong,cthuttdbx,hapkido,eagle123,getsmart,getiton,batman2,masons,mastiff,098890,cfvfhf,james7,azalea,sherif,saun24865709,123red,cnhtrjpf,martina1,pupper,michael5,alan12,shakir,devin1,ha8fyp,palom,mamulya,trippy,deerhunter,happyone,monkey77,3mta3,123456789f,crownvic,teodor,natusik,0137485,vovchik,strutter,triumph1,cvetok,moremone,sonnen,screwbal,akira1,sexnow,pernille,independ,poopies,samapi,kbcbxrf,master22,swetlana,urchin,viper2,magica,slurpee,postit,gilgames,kissarmy,clubpenguin,limpbizk,timber1,celin,lilkim,fuckhard,lonely1,mom123,goodwood,extasy,sdsadee23,foxglove,malibog,clark1,casey2,shell1,odense,balefire,dcunited,cubbie,pierr,solei,161718,bowling1,areyukesc,batboy,r123456,1pionee,marmelad,maynard1,cn42qj,cfvehfq,heathrow,qazxcvbn,connecti,secret123,newfie,xzsawq21,tubitzen,nikusha,enigma1,yfcnz123,1austin,michaelc,splunge,wanger,phantom2,jason2,pain4me,primetime21,babes1,liberte,sugarray,undergro,zonker,labatts,djhjyf,watch1,eagle5,madison2,cntgfirf,sasha2,masterca,fiction7,slick50,bruins1,sagitari,12481632,peniss,insuranc,2b8riedt,12346789,mrclean,ssptx452,tissot,q1w2e3r4t5y6u7,avatar1,comet1,spacer,vbrjkf,pass11,wanker1,14vbqk9p,noshit,money4me,sayana,fish1234,seaways,pipper,romeo123,karens,wardog,ab123456,gorilla1,andrey123,lifesucks,jamesr,4wcqjn,bearman,glock22,matt11,dflbvrf,barbi,maine1,dima1997,sunnyboy,6bjvpe,bangkok1,666666q,rafiki,letmein0,0raziel0,dalla,london99,wildthin,patrycja,skydog,qcactw,tmjxn151,yqlgr667,jimmyd,stripclub,deadwood,863abgsg,horses1,qn632o,scatman,sonia1,subrosa,woland,kolya,charlie4,moleman,j12345,summer11,angel11,blasen,sandal,mynewpas,retlaw,cambria,mustang4,nohack04,kimber45,fatdog,maiden1,bigload,necron,dupont24,ghost123,turbo2,.ktymrf,radagast,balzac,vsevolod,pankaj,argentum,2bigtits,mamabear,bumblebee,mercury7,maddie1,chomper,jq24nc,snooky,pussylic,1lovers,taltos,warchild,diablo66,jojo12,sumerki,aventura,gagger,annelies,drumset,cumshots,azimut,123580,clambake,bmw540,birthday54,psswrd,paganini,wildwest,filibert,teaseme,1test,scampi,thunder5,antosha,purple12,supersex,hhhhhh1,brujah,111222333a,13579a,bvgthfnjh,4506802a,killians,choco,qqqwwweee,raygun,1grand,koetsu13,sharp1,mimi92139,fastfood,idontcare,bluered,chochoz,4z3al0ts,target1,sheffiel,labrat,stalingrad,147123,cubfan,corvett1,holden1,snapper1,4071505,amadeo,pollo,desperados,lovestory,marcopolo,mumbles,familyguy,kimchee,marcio,support1,tekila,shygirl1,trekkie,submissi,ilaria,salam,loveu,wildstar,master69,sales1,netware,homer2,arseniy,gerrity1,raspberr,atreyu,stick1,aldric,tennis12,matahari,alohomora,dicanio,michae1,michaeld,666111,luvbug,boyscout,esmerald,mjordan,admiral1,steamboa,616913,ybhdfyf,557711,555999,sunray,apokalipsis,theroc,bmw330,buzzy,chicos,lenusik,shadowma,eagles05,444222,peartree,qqq123,sandmann,spring1,430799,phatass,andi03,binky1,arsch,bamba,kenny123,fabolous,loser123,poop12,maman,phobos,tecate,myxworld4,metros,cocorico,nokia6120,johnny69,hater,spanked,313233,markos,love2011,mozart1,viktoriy,reccos,331234,hornyone,vitesse,1um83z,55555q,proline,v12345,skaven,alizee,bimini,fenerbahce,543216,zaqqaz,poi123,stabilo,brownie1,1qwerty1,dinesh,baggins1,1234567t,davidkin,friend1,lietuva,octopuss,spooks,12345qq,myshit,buttface,paradoxx,pop123,golfin,sweet69,rfghbp,sambuca,kayak1,bogus1,girlz,dallas12,millers,123456zx,operatio,pravda,eternal1,chase123,moroni,proust,blueduck,harris1,redbarch,996699,1010101,mouche,millenni,1123456,score1,1234565,1234576,eae21157,dave12,pussyy,gfif1991,1598741,hoppy,darrian,snoogins,fartface,ichbins,vfkbyrf,rusrap,2741001,fyfrjylf,aprils,favre,thisis,bannana,serval,wiggum,satsuma,matt123,ivan123,gulmira,123zxc123,oscar2,acces,annie2,dragon0,emiliano,allthat,pajaro,amandine,rawiswar,sinead,tassie,karma1,piggys,nokias,orions,origami,type40,mondo,ferrets,monker,biteme2,gauntlet,arkham,ascona,ingram01,klem1,quicksil,bingo123,blue66,plazma,onfire,shortie,spjfet,123963,thered,fire777,lobito,vball,1chicken,moosehea,elefante,babe23,jesus12,parallax,elfstone,number5,shrooms,freya,hacker1,roxette,snoops,number7,fellini,dtlmvf,chigger,mission1,mitsubis,kannan,whitedog,james01,ghjgecr,rfnfgekmnf,everythi,getnaked,prettybo,sylvan,chiller,carrera4,cowbo,biochem,azbuka,qwertyuiop1,midnight1,informat,audio1,alfred1,0range,sucker1,scott2,russland,1eagle,torben,djkrjlfd,rocky6,maddy1,bonobo,portos,chrissi,xjznq5,dexte,vdlxuc,teardrop,pktmxr,iamtheone,danijela,eyphed,suzuki1,etvww4,redtail,ranger11,mowerman,asshole2,coolkid,adriana1,bootcamp,longcut,evets,npyxr5,bighurt,bassman1,stryder,giblet,nastja,blackadd,topflite,wizar,cumnow,technolo,bassboat,bullitt,kugm7b,maksimus,wankers,mine12,sunfish,pimpin1,shearer9,user1,vjzgjxnf,tycobb,80070633pc,stanly,vitaly,shirley1,cinzia,carolyn1,angeliqu,teamo,qdarcv,aa123321,ragdoll,bonit,ladyluck,wiggly,vitara,jetbalance,12345600,ozzman,dima12345,mybuddy,shilo,satan66,erebus,warrio,090808qwe,stupi,bigdan,paul1234,chiapet,brooks1,philly1,dually,gowest,farmer1,1qa2ws3ed4rf,alberto1,beachboy,barne,aa12345,aliyah,radman,benson1,dfkthbq,highball,bonou2,i81u812,workit,darter,redhook,csfbr5yy,buttlove,episode1,ewyuza,porthos,lalal,abcd12,papero,toosexy,keeper1,silver7,jujitsu,corset,pilot123,simonsay,pinggolf,katerinka,kender,drunk1,fylhjvtlf,rashmi,nighthawk,maggy,juggernaut,larryb,cabibble,fyabcf,247365,gangstar,jaybee,verycool,123456789qw,forbidde,prufrock,12345zxc,malaika,blackbur,docker,filipe,koshechka,gemma1,djamaal,dfcbkmtdf,gangst,9988aa,ducks1,pthrfkj,puertorico,muppets,griffins,whippet,sauber,timofey,larinso,123456789zxc,quicken,qsefth,liteon,headcase,bigdadd,zxc321,maniak,jamesc,bassmast,bigdogs,1girls,123xxx,trajan,lerochka,noggin,mtndew,04975756,domin,wer123,fumanchu,lambada,thankgod,june22,kayaking,patchy,summer10,timepass,poiu1234,kondor,kakka,lament,zidane10,686xqxfg,l8v53x,caveman1,nfvthkfy,holymoly,pepita,alex1996,mifune,fighter1,asslicker,jack22,abc123abc,zaxxon,midnigh,winni,psalm23,punky,monkey22,password13,mymusic,justyna,annushka,lucky5,briann,495rus19,withlove,almaz,supergir,miata,bingbong,bradpitt,kamasutr,yfgjktjy,vanman,pegleg,amsterdam1,123a321,letmein9,shivan,korona,bmw520,annette1,scotsman,gandal,welcome12,sc00by,qpwoei,fred69,m1sf1t,hamburg1,1access,dfkmrbhbz,excalibe,boobies1,fuckhole,karamel,starfuck,star99,breakfas,georgiy,ywvxpz,smasher,fatcat1,allanon,12345n,coondog,whacko,avalon1,scythe,saab93,timon,khorne,atlast,nemisis,brady12,blenheim,52678677,mick7278,9skw5g,fleetwoo,ruger1,kissass,pussy7,scruff,12345l,bigfun,vpmfsz,yxkck878,evgeny,55667788,lickher,foothill,alesis,poppies,77777778,californi,mannie,bartjek,qhxbij,thehulk,xirt2k,angelo4ek,rfkmrekznjh,tinhorse,1david,sparky12,night1,luojianhua,bobble,nederland,rosemari,travi,minou,ciscokid,beehive,565hlgqo,alpine1,samsung123,trainman,xpress,logistic,vw198m2n,hanter,zaqwsx123,qwasz,mariachi,paska,kmg365,kaulitz,sasha12,north1,polarbear,mighty1,makeksa11,123456781,one4all,gladston,notoriou,polniypizdec110211,gosia,grandad,xholes,timofei,invalidp,speaker1,zaharov,maggiema,loislane,gonoles,br5499,discgolf,kaskad,snooper,newman1,belial,demigod,vicky1,pridurok,alex1990,tardis1,cruzer,hornie,sacramen,babycat,burunduk,mark69,oakland1,me1234,gmctruck,extacy,sexdog,putang,poppen,billyd,1qaz2w,loveable,gimlet,azwebitalia,ragtop,198500,qweas,mirela,rock123,11bravo,sprewell,tigrenok,jaredleto,vfhbif,blue2,rimjob,catwalk,sigsauer,loqse,doromich,jack01,lasombra,jonny5,newpassword,profesor,garcia1,123as123,croucher,demeter,4_life,rfhfvtkm,superman2,rogues,assword1,russia1,jeff1,mydream,z123456789,rascal1,darre,kimberl,pickle1,ztmfcq,ponchik,lovesporn,hikari,gsgba368,pornoman,chbjun,choppy,diggity,nightwolf,viktori,camar,vfhecmrf,alisa1,minstrel,wishmaster,mulder1,aleks,gogirl,gracelan,8womys,highwind,solstice,dbrnjhjdyf,nightman,pimmel,beertje,ms6nud,wwfwcw,fx3tuo,poopface,asshat,dirtyd,jiminy,luv2fuck,ptybnxtvgbjy,dragnet,pornogra,10inch,scarlet1,guido1,raintree,v123456,1aaaaaaa,maxim1935,hotwater,gadzooks,playaz,harri,brando1,defcon1,ivanna,123654a,arsenal2,candela,nt5d27,jaime1,duke1,burton1,allstar1,dragos,newpoint,albacore,1236987z,verygoodbot,1wildcat,fishy1,ptktysq,chris11,puschel,itdxtyrj,7kbe9d,serpico,jazzie,1zzzzz,kindbuds,wenef45313,1compute,tatung,sardor,gfyfcjybr,test99,toucan,meteora,lysander,asscrack,jowgnx,hevnm4,suckthis,masha123,karinka,marit,oqglh565,dragon00,vvvbbb,cheburashka,vfrfrf,downlow,unforgiven,p3e85tr,kim123,sillyboy,gold1,golfvr6,quicksan,irochka,froglegs,shortsto,caleb1,tishka,bigtitts,smurfy,bosto,dropzone,nocode,jazzbass,digdug,green7,saltlake,therat,dmitriev,lunita,deaddog,summer0,1212qq,bobbyg,mty3rh,isaac1,gusher,helloman,sugarbear,corvair,extrem,teatime,tujazopi,titanik,efyreg,jo9k2jw2,counchac,tivoli,utjvtnhbz,bebit,jacob6,clayton1,incubus1,flash123,squirter,dima2010,cock1,rawks,komatsu,forty2,98741236,cajun1,madelein,mudhoney,magomed,q111111,qaswed,consense,12345b,bakayaro,silencer,zoinks,bigdic,werwolf,pinkpuss,96321478,alfie1,ali123,sarit,minette,musics,chato,iaapptfcor,cobaka,strumpf,datnigga,sonic123,yfnecbr,vjzctvmz,pasta1,tribbles,crasher,htlbcrf,1tiger,shock123,bearshar,syphon,a654321,cubbies1,jlhanes,eyespy,fucktheworld,carrie1,bmw325is,suzuk,mander,dorina,mithril,hondo1,vfhnbyb,sachem,newton1,12345x,7777755102q,230857z,xxxsex,scubapro,hayastan,spankit,delasoul,searock6,fallout3,nilrem,24681357,pashka,voluntee,pharoh,willo,india1,badboy69,roflmao,gunslinger,lovergir,mama12,melange,640xwfkv,chaton,darkknig,bigman1,aabbccdd,harleyd,birdhouse,giggsy,hiawatha,tiberium,joker7,hello1234,sloopy,tm371855,greendog,solar1,bignose,djohn11,espanol,oswego,iridium,kavitha,pavell,mirjam,cyjdsvujljv,alpha5,deluge,hamme,luntik,turismo,stasya,kjkbnf,caeser,schnecke,tweety1,tralfaz,lambrett,prodigy1,trstno1,pimpshit,werty1,karman,bigboob,pastel,blackmen,matthew8,moomin,q1w2e,gilly,primaver,jimmyg,house2,elviss,15975321,1jessica,monaliza,salt55,vfylfhbyrf,harley11,tickleme,murder1,nurgle,kickass1,theresa1,fordtruck,pargolf,managua,inkognito,sherry1,gotit,friedric,metro2033,slk230,freeport,cigarett,492529,vfhctkm,thebeach,twocats,bakugan,yzerman1,charlieb,motoko,skiman,1234567w,pussy3,love77,asenna,buffie,260zntpc,kinkos,access20,mallard1,fuckyou69,monami,rrrrr1,bigdog69,mikola,1boomer,godzila,ginger2,dima2000,skorpion39,dima1234,hawkdog79,warrior2,ltleirf,supra1,jerusale,monkey01,333z333,666888,kelsey1,w8gkz2x1,fdfnfh,msnxbi,qwe123rty,mach1,monkey3,123456789qq,c123456,nezabudka,barclays,nisse,dasha1,12345678987654321,dima1993,oldspice,frank2,rabbitt,prettyboy,ov3ajy,iamthema,kawasak,banjo1,gtivr6,collants,gondor,hibees,cowboys2,codfish,buster2,purzel,rubyred,kayaker,bikerboy,qguvyt,masher,sseexx,kenshiro,moonglow,semenova,rosari,eduard1,deltaforce,grouper,bongo1,tempgod,1taylor,goldsink,qazxsw1,1jesus,m69fg2w,maximili,marysia,husker1,kokanee,sideout,googl,south1,plumber1,trillian,00001,1357900,farkle,1xxxxx,pascha,emanuela,bagheera,hound1,mylov,newjersey,swampfox,sakic19,torey,geforce,wu4etd,conrail,pigman,martin2,ber02,nascar2,angel69,barty,kitsune,cornet,yes90125,goomba,daking,anthea,sivart,weather1,ndaswf,scoubidou,masterchief,rectum,3364068,oranges1,copter,1samanth,eddies,mimoza,ahfywbz,celtic88,86mets,applemac,amanda11,taliesin,1angel,imhere,london11,bandit12,killer666,beer1,06225930,psylocke,james69,schumach,24pnz6kc,endymion,wookie1,poiu123,birdland,smoochie,lastone,rclaki,olive1,pirat,thunder7,chris69,rocko,151617,djg4bb4b,lapper,ajcuivd289,colole57,shadow7,dallas21,ajtdmw,executiv,dickies,omegaman,jason12,newhaven,aaaaaas,pmdmscts,s456123789,beatri,applesauce,levelone,strapon,benladen,creaven,ttttt1,saab95,f123456,pitbul,54321a,sex12345,robert3,atilla,mevefalkcakk,1johnny,veedub,lilleke,nitsuj,5t6y7u8i,teddys,bluefox,nascar20,vwjetta,buffy123,playstation3,loverr,qweasd12,lover2,telekom,benjamin1,alemania,neutrino,rockz,valjean,testicle,trinity3,realty,firestarter,794613852,ardvark,guadalup,philmont,arnold1,holas,zw6syj,birthday299,dover1,sexxy1,gojets,741236985,cance,blue77,xzibit,qwerty88,komarova,qweszxc,footer,rainger,silverst,ghjcnb,catmando,tatooine,31217221027711,amalgam,69dude,qwerty321,roscoe1,74185,cubby,alfa147,perry1,darock,katmandu,darknight,knicks1,freestuff,45454,kidman,4tlved,axlrose,cutie1,quantum1,joseph10,ichigo,pentium3,rfhectkm,rowdy1,woodsink,justforfun,sveta123,pornografia,mrbean,bigpig,tujheirf,delta9,portsmou,hotbod,kartal,10111213,fkbyf001,pavel1,pistons1,necromancer,verga,c7lrwu,doober,thegame1,hatesyou,sexisfun,1melissa,tuczno18,bowhunte,gobama,scorch,campeon,bruce2,fudge1,herpderp,bacon1,redsky,blackeye,19966991,19992000,ripken8,masturba,34524815,primax,paulina1,vp6y38,427cobra,4dwvjj,dracon,fkg7h4f3v6,longview,arakis,panama1,honda2,lkjhgfdsaz,razors,steels,fqkw5m,dionysus,mariajos,soroka,enriqu,nissa,barolo,king1234,hshfd4n279,holland1,flyer1,tbones,343104ky,modems,tk421,ybrbnrf,pikapp,sureshot,wooddoor,florida2,mrbungle,vecmrf,catsdogs,axolotl,nowayout,francoi,chris21,toenail,hartland,asdjkl,nikkii,onlyyou,buckskin,fnord,flutie,holen1,rincewind,lefty1,ducky1,199000,fvthbrf,redskin1,ryno23,lostlove,19mtpgam19,abercrom,benhur,jordan11,roflcopter,ranma,phillesh,avondale,igromania,p4ssword,jenny123,tttttt1,spycams,cardigan,2112yyz,sleepy1,paris123,mopars,lakers34,hustler1,james99,matrix3,popimp,12pack,eggbert,medvedev,testit,performa,logitec,marija,sexybeast,supermanboy,iwantit,rjktcj,jeffer,svarog,halo123,whdbtp,nokia3230,heyjoe,marilyn1,speeder,ibxnsm,prostock,bennyboy,charmin,codydog,parol999,ford9402,jimmer,crayola,159357258,alex77,joey1,cayuga,phish420,poligon,specops,tarasova,caramelo,draconis,dimon,cyzkhw,june29,getbent,1guitar,jimjam,dictiona,shammy,flotsam,0okm9ijn,crapper,technic,fwsadn,rhfdxtyrj,zaq11qaz,anfield1,159753q,curious1,hip-hop,1iiiii,gfhjkm2,cocteau,liveevil,friskie,crackhead,b1afra,elektrik,lancer1,b0ll0cks,jasond,z1234567,tempest1,alakazam,asdfasd,duffy1,oneday,dinkle,qazedctgb,kasimir,happy7,salama,hondaciv,nadezda,andretti,cannondale,sparticu,znbvjd,blueice,money01,finster,eldar,moosie,pappa,delta123,neruda,bmw330ci,jeanpaul,malibu1,alevtina,sobeit,travolta,fullmetal,enamorad,mausi,boston12,greggy,smurf1,ratrace,ichiban,ilovepus,davidg,wolf69,villa1,cocopuff,football12,starfury,zxc12345,forfree,fairfiel,dreams1,tayson,mike2,dogday,hej123,oldtimer,sanpedro,clicker,mollycat,roadstar,golfe,lvbnhbq1,topdevice,a1b2c,sevastopol,calli,milosc,fire911,pink123,team3x,nolimit5,snickers1,annies,09877890,jewel1,steve69,justin11,autechre,killerbe,browncow,slava1,christer,fantomen,redcloud,elenberg,beautiful1,passw0rd1,nazira,advantag,cockring,chaka,rjpzdrf,99941,az123456,biohazar,energie,bubble1,bmw323,tellme,printer1,glavine,1starwar,coolbeans,april17,carly1,quagmire,admin2,djkujuhfl,pontoon,texmex,carlos12,thermo,vaz2106,nougat,bob666,1hockey,1john,cricke,qwerty10,twinz,totalwar,underwoo,tijger,lildevil,123q321,germania,freddd,1scott,beefy,5t4r3e2w1q,fishbait,nobby,hogger,dnstuff,jimmyc,redknapp,flame1,tinfloor,balla,nfnfhby,yukon1,vixens,batata,danny123,1zxcvbnm,gaetan,homewood,greats,tester1,green99,1fucker,sc0tland,starss,glori,arnhem,goatman,1234asd,supertra,bill123,elguapo,sexylegs,jackryan,usmc69,innow,roaddog,alukard,winter11,crawler,gogiants,rvd420,alessandr,homegrow,gobbler,esteba,valeriy,happy12,1joshua,hawking,sicnarf,waynes,iamhappy,bayadera,august2,sashas,gotti,dragonfire,pencil1,halogen,borisov,bassingw,15975346,zachar,sweetp,soccer99,sky123,flipyou,spots3,xakepy,cyclops1,dragon77,rattolo58,motorhea,piligrim,helloween,dmb2010,supermen,shad0w,eatcum,sandokan,pinga,ufkfrnbrf,roksana,amista,pusser,sony1234,azerty1,1qasw2,ghbdt,q1w2e3r4t5y6u7i8,ktutylf,brehznev,zaebali,shitass,creosote,gjrtvjy,14938685,naughtyboy,pedro123,21crack,maurice1,joesakic,nicolas1,matthew9,lbyfhf,elocin,hfcgbplzq,pepper123,tiktak,mycroft,ryan11,firefly1,arriva,cyecvevhbr,loreal,peedee,jessica8,lisa01,anamari,pionex,ipanema,airbag,frfltvbz,123456789aa,epwr49,casper12,sweethear,sanandreas,wuschel,cocodog,france1,119911,redroses,erevan,xtvgbjy,bigfella,geneve,volvo850,evermore,amy123,moxie,celebs,geeman,underwor,haslo1,joy123,hallow,chelsea0,12435687,abarth,12332145,tazman1,roshan,yummie,genius1,chrisd,ilovelife,seventy7,qaz1wsx2,rocket88,gaurav,bobbyboy,tauchen,roberts1,locksmit,masterof,www111,d9ungl,volvos40,asdasd1,golfers,jillian1,7xm5rq,arwpls4u,gbhcf2,elloco,football2,muerte,bob101,sabbath1,strider1,killer66,notyou,lawnboy,de7mdf,johnnyb,voodoo2,sashaa,homedepo,bravos,nihao123,braindea,weedhead,rajeev,artem1,camille1,rockss,bobbyb,aniston,frnhbcf,oakridge,biscayne,cxfcnm,dressage,jesus3,kellyann,king69,juillet,holliste,h00ters,ripoff,123645,1999ar,eric12,123777,tommi,dick12,bilder,chris99,rulezz,getpaid,chicubs,ender1,byajhvfnbrf,milkshak,sk8board,freakshow,antonella,monolit,shelb,hannah01,masters1,pitbull1,1matthew,luvpussy,agbdlcid,panther2,alphas,euskadi,8318131,ronnie1,7558795,sweetgirl,cookie59,sequoia,5552555,ktyxbr,4500455,money7,severus,shinobu,dbityrf,phisig,rogue2,fractal,redfred,sebastian1,nelli,b00mer,cyberman,zqjphsyf6ctifgu,oldsmobile,redeemer,pimpi,lovehurts,1slayer,black13,rtynfdh,airmax,g00gle,1panther,artemon,nopasswo,fuck1234,luke1,trinit,666000,ziadma,oscardog,davex,hazel1,isgood,demond,james5,construc,555551,january2,m1911a1,flameboy,merda,nathan12,nicklaus,dukester,hello99,scorpio7,leviathan,dfcbktr,pourquoi,vfrcbv123,shlomo,rfcgth,rocky3,ignatz,ajhneyf,roger123,squeek,4815162342a,biskit,mossimo,soccer21,gridlock,lunker,popstar,ghhh47hj764,chutney,nitehawk,vortec,gamma1,codeman,dragula,kappasig,rainbow2,milehigh,blueballs,ou8124me,rulesyou,collingw,mystere,aster,astrovan,firetruck,fische,crawfish,hornydog,morebeer,tigerpaw,radost,144000,1chance,1234567890qwe,gracie1,myopia,oxnard,seminoles,evgeni,edvard,partytim,domani,tuffy1,jaimatadi,blackmag,kzueirf,peternor,mathew1,maggie12,henrys,k1234567,fasted,pozitiv,cfdtkbq,jessica7,goleafs,bandito,girl78,sharingan,skyhigh,bigrob,zorros,poopers,oldschoo,pentium2,gripper,norcal,kimba,artiller,moneymak,00197400,272829,shadow1212,thebull,handbags,all4u2c,bigman2,civics,godisgoo,section8,bandaid,suzanne1,zorba,159123,racecars,i62gbq,rambo123,ironroad,johnson2,knobby,twinboys,sausage1,kelly69,enter2,rhjirf,yessss,james12,anguilla,boutit,iggypop,vovochka,06060,budwiser,romuald,meditate,good1,sandrin,herkules,lakers8,honeybea,11111111a,miche,rangers9,lobster1,seiko,belova,midcon,mackdadd,bigdaddy1,daddie,sepultur,freddy12,damon1,stormy1,hockey2,bailey12,hedimaptfcor,dcowboys,sadiedog,thuggin,horny123,josie1,nikki2,beaver69,peewee1,mateus,viktorija,barrys,cubswin1,matt1234,timoxa,rileydog,sicilia,luckycat,candybar,julian1,abc456,pussylip,phase1,acadia,catty,246800,evertonf,bojangle,qzwxec,nikolaj,fabrizi,kagome,noncapa0,marle,popol,hahaha1,cossie,carla10,diggers,spankey,sangeeta,cucciolo,breezer,starwar1,cornholio,rastafari,spring99,yyyyyyy1,webstar,72d5tn,sasha1234,inhouse,gobuffs,civic1,redstone,234523,minnie1,rivaldo,angel5,sti2000,xenocide,11qq11,1phoenix,herman1,holly123,tallguy,sharks1,madri,superbad,ronin,jalal123,hardbody,1234567r,assman1,vivahate,buddylee,38972091,bonds25,40028922,qrhmis,wp2005,ceejay,pepper01,51842543,redrum1,renton,varadero,tvxtjk7r,vetteman,djhvbrc,curly1,fruitcak,jessicas,maduro,popmart,acuari,dirkpitt,buick1,bergerac,golfcart,pdtpljxrf,hooch1,dudelove,d9ebk7,123452000,afdjhbn,greener,123455432,parachut,mookie12,123456780,jeepcj5,potatoe,sanya,qwerty2010,waqw3p,gotika,freaky1,chihuahu,buccanee,ecstacy,crazyboy,slickric,blue88,fktdnbyf,2004rj,delta4,333222111,calient,ptbdhw,1bailey,blitz1,sheila1,master23,hoagie,pyf8ah,orbita,daveyboy,prono1,delta2,heman,1horny,tyrik123,ostrov,md2020,herve,rockfish,el546218,rfhbyjxrf,chessmaster,redmoon,lenny1,215487,tomat,guppy,amekpass,amoeba,my3girls,nottingh,kavita,natalia1,puccini,fabiana,8letters,romeos,netgear,casper2,taters,gowings,iforgot1,pokesmot,pollit,lawrun,petey1,rosebuds,007jr,gthtcnhjqrf,k9dls02a,neener,azertyu,duke11,manyak,tiger01,petros,supermar,mangas,twisty,spotter,takagi,dlanod,qcmfd454,tusymo,zz123456,chach,navyblue,gilbert1,2kash6zq,avemaria,1hxboqg2s,viviane,lhbjkjubz2957704,nowwowtg,1a2b3c4,m0rn3,kqigb7,superpuper,juehtw,gethigh,theclown,makeme,pradeep,sergik,deion21,nurik,devo2706,nbvibt,roman222,kalima,nevaeh,martin7,anathema,florian1,tamwsn3sja,dinmamma,133159,123654q,slicks,pnp0c08,yojimbo,skipp,kiran,pussyfuck,teengirl,apples12,myballs,angeli,1234a,125678,opelastra,blind1,armagedd,fish123,pitufo,chelseaf,thedevil,nugget1,cunt69,beetle1,carter15,apolon,collant,password00,fishboy,djkrjdf,deftone,celti,three11,cyrus1,lefthand,skoal1,ferndale,aries1,fred01,roberta1,chucks,cornbread,lloyd1,icecrea,cisco123,newjerse,vfhrbpf,passio,volcom1,rikimaru,yeah11,djembe,facile,a1l2e3x4,batman7,nurbol,lorenzo1,monica69,blowjob1,998899,spank1,233391,n123456,1bear,bellsout,999998,celtic67,sabre1,putas,y9enkj,alfabeta,heatwave,honey123,hard4u,insane1,xthysq,magnum1,lightsaber,123qweqwe,fisher1,pixie1,precios,benfic,thegirls,bootsman,4321rewq,nabokov,hightime,djghjc,1chelsea,junglist,august16,t3fkvkmj,1232123,lsdlsd12,chuckie1,pescado,granit,toogood,cathouse,natedawg,bmw530,123kid,hajime,198400,engine1,wessonnn,kingdom1,novembre,1rocks,kingfisher,qwerty89,jordan22,zasranec,megat,sucess,installutil,fetish01,yanshi1982,1313666,1314520,clemence,wargod,time1,newzealand,snaker,13324124,cfrehf,hepcat,mazahaka,bigjay,denisov,eastwest,1yellow,mistydog,cheetos,1596357,ginger11,mavrik,bubby1,bhbyf,pyramide,giusepp,luthien,honda250,andrewjackie,kentavr,lampoon,zaq123wsx,sonicx,davidh,1ccccc,gorodok,windsong,programm,blunt420,vlad1995,zxcvfdsa,tarasov,mrskin,sachas,mercedes1,koteczek,rawdog,honeybear,stuart1,kaktys,richard7,55555n,azalia,hockey10,scouter,francy,1xxxxxx,julie456,tequilla,penis123,schmoe,tigerwoods,1ferrari,popov,snowdrop,matthieu,smolensk,cornflak,jordan01,love2000,23wesdxc,kswiss,anna2000,geniusnet,baby2000,33ds5x,waverly,onlyone4,networkingpe,raven123,blesse,gocards,wow123,pjflkork,juicey,poorboy,freeee,billybo,shaheen,zxcvbnm.,berlit,truth1,gepard,ludovic,gunther1,bobby2,bob12345,sunmoon,septembr,bigmac1,bcnjhbz,seaking,all4u,12qw34er56ty,bassie,nokia5228,7355608,sylwia,charvel,billgate,davion,chablis,catsmeow,kjiflrf,amylynn,rfvbkkf,mizredhe,handjob,jasper12,erbol,solara,bagpipe,biffer,notime,erlan,8543852,sugaree,oshkosh,fedora,bangbus,5lyedn,longball,teresa1,bootyman,aleksand,qazwsxedc12,nujbhc,tifosi,zpxvwy,lights1,slowpoke,tiger12,kstate,password10,alex69,collins1,9632147,doglover,baseball2,security1,grunts,orange2,godloves,213qwe879,julieb,1qazxsw23edcvfr4,noidea,8uiazp,betsy1,junior2,parol123,123456zz,piehonkii,kanker,bunky,hingis,reese1,qaz123456,sidewinder,tonedup,footsie,blackpoo,jalapeno,mummy1,always1,josh1,rockyboy,plucky,chicag,nadroj,blarney,blood123,wheaties,packer1,ravens1,mrjones,gfhjkm007,anna2010,awatar,guitar12,hashish,scale1,tomwaits,amrita,fantasma,rfpfym,pass2,tigris,bigair,slicker,sylvi,shilpa,cindylou,archie1,bitches1,poppys,ontime,horney1,camaroz28,alladin,bujhm,cq2kph,alina1,wvj5np,1211123a,tetons,scorelan,concordi,morgan2,awacs,shanty,tomcat14,andrew123,bear69,vitae,fred99,chingy,octane,belgario,fatdaddy,rhodan,password23,sexxes,boomtown,joshua01,war3demo,my2kids,buck1,hot4you,monamour,12345aa,yumiko,parool,carlton1,neverland,rose12,right1,sociald,grouse,brandon0,cat222,alex00,civicex,bintang,malkav,arschloc,dodgeviper,qwerty666,goduke,dante123,boss1,ontheroc,corpsman,love14,uiegu451,hardtail,irondoor,ghjrehfnehf,36460341,konijn,h2slca,kondom25,123456ss,cfytxrf,btnjey,nando,freemail,comander,natas666,siouxsie,hummer1,biomed,dimsum,yankees0,diablo666,lesbian1,pot420,jasonm,glock23,jennyb,itsmine,lena2010,whattheh,beandip,abaddon,kishore,signup,apogee,biteme12,suzieq,vgfun4,iseeyou,rifleman,qwerta,4pussy,hawkman,guest1,june17,dicksuck,bootay,cash12,bassale,ktybyuhfl,leetch,nescafe,7ovtgimc,clapton1,auror,boonie,tracker1,john69,bellas,cabinboy,yonkers,silky1,ladyffesta,drache,kamil1,davidp,bad123,snoopy12,sanche,werthvfy,achille,nefertiti,gerald1,slage33,warszawa,macsan26,mason123,kotopes,welcome8,nascar99,kiril,77778888,hairy1,monito,comicsans,81726354,killabee,arclight,yuo67,feelme,86753099,nnssnn,monday12,88351132,88889999,websters,subito,asdf12345,vaz2108,zvbxrpl,159753456852,rezeda,multimed,noaccess,henrique,tascam,captiva,zadrot,hateyou,sophie12,123123456,snoop1,charlie8,birmingh,hardline,libert,azsxdcf,89172735872,rjpthju,bondar,philips1,olegnaruto,myword,yakman,stardog,banana12,1234567890w,farout,annick,duke01,rfj422,billard,glock19,shaolin1,master10,cinderel,deltaone,manning1,biggreen,sidney1,patty1,goforit1,766rglqy,sevendus,aristotl,armagedo,blumen,gfhfyjz,kazakov,lekbyxxx,accord1,idiota,soccer16,texas123,victoire,ololo,chris01,bobbbb,299792458,eeeeeee1,confiden,07070,clarks,techno1,kayley,stang1,wwwwww1,uuuuu1,neverdie,jasonr,cavscout,481516234,mylove1,shaitan,1qazxcvb,barbaros,123456782000,123wer,thissucks,7seven,227722,faerie,hayduke,dbacks,snorkel,zmxncbv,tiger99,unknown1,melmac,polo1234,sssssss1,1fire,369147,bandung,bluejean,nivram,stanle,ctcnhf,soccer20,blingbli,dirtball,alex2112,183461,skylin,boobman,geronto,brittany1,yyz2112,gizmo69,ktrcec,dakota12,chiken,sexy11,vg08k714,bernadet,1bulldog,beachs,hollyb,maryjoy,margo1,danielle1,chakra,alexand,hullcity,matrix12,sarenna,pablos,antler,supercar,chomsky,german1,airjordan,545ettvy,camaron,flight1,netvideo,tootall,valheru,481516,1234as,skimmer,redcross,inuyash,uthvfy,1012nw,edoardo,bjhgfi,golf11,9379992a,lagarto,socball,boopie,krazy,.adgjmptw,gaydar,kovalev,geddylee,firstone,turbodog,loveee,135711,badbo,trapdoor,opopop11,danny2,max2000,526452,kerry1,leapfrog,daisy2,134kzbip,1andrea,playa1,peekab00,heskey,pirrello,gsewfmck,dimon4ik,puppie,chelios,554433,hypnodanny,fantik,yhwnqc,ghbdtngjrf,anchorag,buffett1,fanta,sappho,024680,vialli,chiva,lucylu,hashem,exbntkm,thema,23jordan,jake11,wildside,smartie,emerica,2wj2k9oj,ventrue,timoth,lamers,baerchen,suspende,boobis,denman85,1adam12,otello,king12,dzakuni,qsawbbs,isgay,porno123,jam123,daytona1,tazzie,bunny123,amaterasu,jeffre,crocus,mastercard,bitchedup,chicago7,aynrand,intel1,tamila,alianza,mulch,merlin12,rose123,alcapone,mircea,loveher,joseph12,chelsea6,dorothy1,wolfgar,unlimite,arturik,qwerty3,paddy1,piramid,linda123,cooool,millie1,warlock1,forgotit,tort02,ilikeyou,avensis,loveislife,dumbass1,clint1,2110se,drlove,olesia,kalinina,sergey123,123423,alicia1,markova,tri5a3,media1,willia1,xxxxxxx1,beercan,smk7366,jesusislord,motherfuck,smacker,birthday5,jbaby,harley2,hyper1,a9387670a,honey2,corvet,gjmptw,rjhjkmbien,apollon,madhuri,3a5irt,cessna17,saluki,digweed,tamia1,yja3vo,cfvlehfr,1111111q,martyna,stimpy1,anjana,yankeemp,jupiler,idkfa,1blue,fromv,afric,3xbobobo,liverp00l,nikon1,amadeus1,acer123,napoleo,david7,vbhjckfdf,mojo69,percy1,pirates1,grunt1,alenushka,finbar,zsxdcf,mandy123,1fred,timewarp,747bbb,druids,julia123,123321qq,spacebar,dreads,fcbarcelona,angela12,anima,christopher1,stargazer,123123s,hockey11,brewski,marlbor,blinker,motorhead,damngood,werthrf,letmein3,moremoney,killer99,anneke,eatit,pilatus,andrew01,fiona1,maitai,blucher,zxgdqn,e5pftu,nagual,panic1,andron,openwide,alphabeta,alison1,chelsea8,fende,mmm666,1shot2,a19l1980,123456@,1black,m1chael,vagner,realgood,maxxx,vekmnbr,stifler,2509mmh,tarkan,sherzod,1234567b,gunners1,artem2010,shooby,sammie1,p123456,piggie,abcde12345,nokia6230,moldir,piter,1qaz3edc,frequenc,acuransx,1star,nikeair,alex21,dapimp,ranjan,ilovegirls,anastasiy,berbatov,manso,21436587,leafs1,106666,angelochek,ingodwetrust,123456aaa,deano,korsar,pipetka,thunder9,minka,himura,installdevic,1qqqqq,digitalprodu,suckmeoff,plonker,headers,vlasov,ktr1996,windsor1,mishanya,garfield1,korvin,littlebit,azaz09,vandamme,scripto,s4114d,passward,britt1,r1chard,ferrari5,running1,7xswzaq,falcon2,pepper76,trademan,ea53g5,graham1,volvos80,reanimator,micasa,1234554321q,kairat,escorpion,sanek94,karolina1,kolovrat,karen2,1qaz@wsx,racing1,splooge,sarah2,deadman1,creed1,nooner,minicoop,oceane,room112,charme,12345ab,summer00,wetcunt,drewman,nastyman,redfire,appels,merlin69,dolfin,bornfree,diskette,ohwell,12345678qwe,jasont,madcap,cobra2,dolemit1,whatthehell,juanit,voldemar,rocke,bianc,elendil,vtufgjkbc,hotwheels,spanis,sukram,pokerface,k1ller,freakout,dontae,realmadri,drumss,gorams,258789,snakey,jasonn,whitewolf,befree,johnny99,pooka,theghost,kennys,vfvektxrf,toby1,jumpman23,deadlock,barbwire,stellina,alexa1,dalamar,mustanggt,northwes,tesoro,chameleo,sigtau,satoshi,george11,hotcum,cornell1,golfer12,geek01d,trololo,kellym,megapolis,pepsi2,hea666,monkfish,blue52,sarajane,bowler1,skeets,ddgirls,hfccbz,bailey01,isabella1,dreday,moose123,baobab,crushme,000009,veryhot,roadie,meanone,mike18,henriett,dohcvtec,moulin,gulnur,adastra,angel9,western1,natura,sweetpe,dtnfkm,marsbar,daisys,frogger1,virus1,redwood1,streetball,fridolin,d78unhxq,midas,michelob,cantik,sk2000,kikker,macanudo,rambone,fizzle,20000,peanuts1,cowpie,stone32,astaroth,dakota01,redso,mustard1,sexylove,giantess,teaparty,bobbin,beerbong,monet1,charles3,anniedog,anna1988,cameleon,longbeach,tamere,qpful542,mesquite,waldemar,12345zx,iamhere,lowboy,canard,granp,daisymay,love33,moosejaw,nivek,ninjaman,shrike01,aaa777,88002000600,vodolei,bambush,falcor,harley69,alphaomega,severine,grappler,bosox,twogirls,gatorman,vettes,buttmunch,chyna,excelsio,crayfish,birillo,megumi,lsia9dnb9y,littlebo,stevek,hiroyuki,firehous,master5,briley2,gangste,chrisk,camaleon,bulle,troyboy,froinlaven,mybutt,sandhya,rapala,jagged,crazycat,lucky12,jetman,wavmanuk,1heather,beegee,negril,mario123,funtime1,conehead,abigai,mhorgan,patagoni,travel1,backspace,frenchfr,mudcat,dashenka,baseball3,rustys,741852kk,dickme,baller23,griffey1,suckmycock,fuhrfzgc,jenny2,spuds,berlin1,justfun,icewind,bumerang,pavlusha,minecraft123,shasta1,ranger12,123400,twisters,buthead,miked,finance1,dignity7,hello9,lvjdp383,jgthfnjh,dalmatio,paparoach,miller31,2bornot2b,fathe,monterre,theblues,satans,schaap,jasmine2,sibelius,manon,heslo,jcnhjd,shane123,natasha2,pierrot,bluecar,iloveass,harriso,red12,london20,job314,beholder,reddawg,fuckyou!,pussylick,bologna1,austintx,ole4ka,blotto,onering,jearly,balbes,lightbul,bighorn,crossfir,lee123,prapor,1ashley,gfhjkm22,wwe123,09090,sexsite,marina123,jagua,witch1,schmoo,parkview,dragon3,chilango,ultimo,abramova,nautique,2bornot2,duende,1arthur,nightwing,surfboar,quant4307,15s9pu03,karina1,shitball,walleye1,wildman1,whytesha,1morgan,my2girls,polic,baranova,berezuckiy,kkkkkk1,forzima,fornow,qwerty02,gokart,suckit69,davidlee,whatnow,edgard,tits1,bayshore,36987412,ghbphfr,daddyy,explore1,zoidberg,5qnzjx,morgane,danilov,blacksex,mickey12,balsam,83y6pv,sarahc,slaye,all4u2,slayer69,nadia1,rlzwp503,4cranker,kaylie,numberon,teremok,wolf12,deeppurple,goodbeer,aaa555,66669999,whatif,harmony1,ue8fpw,3tmnej,254xtpss,dusty197,wcksdypk,zerkalo,dfnheirf,motorol,digita,whoareyou,darksoul,manics,rounders,killer11,d2000lb,cegthgfhjkm,catdog1,beograd,pepsico,julius1,123654987,softbal,killer23,weasel1,lifeson,q123456q,444555666,bunches,andy1,darby1,service01,bear11,jordan123,amega,duncan21,yensid,lerxst,rassvet,bronco2,fortis,pornlove,paiste,198900,asdflkjh,1236547890,futur,eugene1,winnipeg261,fk8bhydb,seanjohn,brimston,matthe1,bitchedu,crisco,302731,roxydog,woodlawn,volgograd,ace1210,boy4u2ownnyc,laura123,pronger,parker12,z123456z,andrew13,longlife,sarang,drogba,gobruins,soccer4,holida,espace,almira,murmansk,green22,safina,wm00022,1chevy,schlumpf,doroth,ulises,golf99,hellyes,detlef,mydog,erkina,bastardo,mashenka,sucram,wehttam,generic1,195000,spaceboy,lopas123,scammer,skynyrd,daddy2,titani,ficker,cr250r,kbnthfnehf,takedown,sticky1,davidruiz,desant,nremtp,painter1,bogies,agamemno,kansas1,smallfry,archi,2b4dnvsx,1player,saddie,peapod,6458zn7a,qvw6n2,gfxqx686,twice2,sh4d0w3d,mayfly,375125,phitau,yqmbevgk,89211375759,kumar1,pfhfpf,toyboy,way2go,7pvn4t,pass69,chipster,spoony,buddycat,diamond3,rincewin,hobie,david01,billbo,hxp4life,matild,pokemon2,dimochka,clown1,148888,jenmt3,cuxldv,cqnwhy,cde34rfv,simone1,verynice,toobig,pasha123,mike00,maria2,lolpop,firewire,dragon9,martesana,a1234567890,birthday3,providen,kiska,pitbulls,556655,misawa,damned69,martin11,goldorak,gunship,glory1,winxclub,sixgun,splodge,agent1,splitter,dome69,ifghjb,eliza1,snaiper,wutang36,phoenix7,666425,arshavin,paulaner,namron,m69fg1w,qwert1234,terrys,zesyrmvu,joeman,scoots,dwml9f,625vrobg,sally123,gostoso,symow8,pelota,c43qpul5rz,majinbuu,lithium1,bigstuff,horndog1,kipelov,kringle,1beavis,loshara,octobe,jmzacf,12342000,qw12qw,runescape1,chargers1,krokus,piknik,jessy,778811,gjvbljh,474jdvff,pleaser,misskitty,breaker1,7f4df451,dayan,twinky,yakumo,chippers,matia,tanith,len2ski1,manni,nichol1,f00b4r,nokia3110,standart,123456789i,shami,steffie,larrywn,chucker,john99,chamois,jjjkkk,penmouse,ktnj2010,gooners,hemmelig,rodney1,merlin01,bearcat1,1yyyyy,159753z,1fffff,1ddddd,thomas11,gjkbyrf,ivanka,f1f2f3,petrovna,phunky,conair,brian2,creative1,klipsch,vbitymrf,freek,breitlin,cecili,westwing,gohabsgo,tippmann,1steve,quattro6,fatbob,sp00ky,rastas,1123581,redsea,rfnmrf,jerky1,1aaaaaa,spk666,simba123,qwert54321,123abcd,beavis69,fyfyfc,starr1,1236547,peanutbutter,sintra,12345abcde,1357246,abcde1,climbon,755dfx,mermaids,monte1,serkan,geilesau,777win,jasonc,parkside,imagine1,rockhead,producti,playhard,principa,spammer,gagher,escada,tsv1860,dbyjuhfl,cruiser1,kennyg,montgome,2481632,pompano,cum123,angel6,sooty,bear01,april6,bodyhamm,pugsly,getrich,mikes,pelusa,fosgate,jasonp,rostislav,kimberly1,128mo,dallas11,gooner1,manuel1,cocacola1,imesh,5782790,password8,daboys,1jones,intheend,e3w2q1,whisper1,madone,pjcgujrat,1p2o3i,jamesp,felicida,nemrac,phikap,firecat,jrcfyjxrf,matt12,bigfan,doedel,005500,jasonx,1234567k,badfish,goosey,utjuhfabz,wilco,artem123,igor123,spike123,jor23dan,dga9la,v2jmsz,morgan12,avery1,dogstyle,natasa,221195ws,twopac,oktober7,karthik,poop1,mightymo,davidr,zermatt,jehova,aezakmi1,dimwit,monkey5,serega123,qwerty111,blabl,casey22,boy123,1clutch,asdfjkl1,hariom,bruce10,jeep95,1smith,sm9934,karishma,bazzzz,aristo,669e53e1,nesterov,kill666,fihdfv,1abc2,anna1,silver11,mojoman,telefono,goeagles,sd3lpgdr,rfhfynby,melinda1,llcoolj,idteul,bigchief,rocky13,timberwo,ballers,gatekeep,kashif,hardass,anastasija,max777,vfuyjkbz,riesling,agent99,kappas,dalglish,tincan,orange3,turtoise,abkbvjy,mike24,hugedick,alabala,geolog,aziza,devilboy,habanero,waheguru,funboy,freedom5,natwest,seashore,impaler,qwaszx1,pastas,bmw535,tecktonik,mika00,jobsearc,pinche,puntang,aw96b6,1corvett,skorpio,foundati,zzr1100,gembird,vfnhjcrby,soccer18,vaz2110,peterp,archer1,cross1,samedi,dima1992,hunter99,lipper,hotbody,zhjckfdf,ducati1,trailer1,04325956,cheryl1,benetton,kononenko,sloneczko,rfgtkmrf,nashua,balalaika,ampere,eliston,dorsai,digge,flyrod,oxymoron,minolta,ironmike,majortom,karimov,fortun,putaria,an83546921an13,blade123,franchis,mxaigtg5,dynxyu,devlt4,brasi,terces,wqmfuh,nqdgxz,dale88,minchia,seeyou,housepen,1apple,1buddy,mariusz,bighouse,tango2,flimflam,nicola1,qwertyasd,tomek1,shumaher,kartoshka,bassss,canaries,redman1,123456789as,preciosa,allblacks,navidad,tommaso,beaudog,forrest1,green23,ryjgjxrf,go4it,ironman2,badnews,butterba,1grizzly,isaeva,rembrand,toront,1richard,bigjon,yfltymrf,1kitty,4ng62t,littlejo,wolfdog,ctvtyjd,spain1,megryan,tatertot,raven69,4809594q,tapout,stuntman,a131313,lagers,hotstuf,lfdbl11,stanley2,advokat,boloto,7894561,dooker,adxel187,cleodog,4play,0p9o8i,masterb,bimota,charlee,toystory,6820055,6666667,crevette,6031769,corsa,bingoo,dima1990,tennis11,samuri,avocado,melissa6,unicor,habari,metart,needsex,cockman,hernan,3891576,3334444,amigo1,gobuffs2,mike21,allianz,2835493,179355,midgard,joey123,oneluv,ellis1,towncar,shonuff,scouse,tool69,thomas19,chorizo,jblaze,lisa1,dima1999,sophia1,anna1989,vfvekbxrf,krasavica,redlegs,jason25,tbontb,katrine,eumesmo,vfhufhbnrf,1654321,asdfghj1,motdepas,booga,doogle,1453145,byron1,158272,kardinal,tanne,fallen1,abcd12345,ufyljy,n12345,kucing,burberry,bodger,1234578,februar,1234512,nekkid,prober,harrison1,idlewild,rfnz90,foiegras,pussy21,bigstud,denzel,tiffany2,bigwill,1234567890zzz,hello69,compute1,viper9,hellspaw,trythis,gococks,dogballs,delfi,lupine,millenia,newdelhi,charlest,basspro,1mike,joeblack,975310,1rosebud,batman11,misterio,fucknut,charlie0,august11,juancho,ilonka,jigei743ks,adam1234,889900,goonie,alicat,ggggggg1,1zzzzzzz,sexywife,northstar,chris23,888111,containe,trojan1,jason5,graikos,1ggggg,1eeeee,tigers01,indigo1,hotmale,jacob123,mishima,richard3,cjxb2014,coco123,meagain,thaman,wallst,edgewood,bundas,1power,matilda1,maradon,hookedup,jemima,r3vi3wpass,2004-10-,mudman,taz123,xswzaq,emerson1,anna21,warlord1,toering,pelle,tgwdvu,masterb8,wallstre,moppel,priora,ghjcnjrdfif,yoland,12332100,1j9e7f6f,jazzzz,yesman,brianm,42qwerty42,12345698,darkmanx,nirmal,john31,bb123456,neuspeed,billgates,moguls,fj1200,hbhlair,shaun1,ghbdfn,305pwzlr,nbu3cd,susanb,pimpdad,mangust6403,joedog,dawidek,gigante,708090,703751,700007,ikalcr,tbivbn,697769,marvi,iyaayas,karen123,jimmyboy,dozer1,e6z8jh,bigtime1,getdown,kevin12,brookly,zjduc3,nolan1,cobber,yr8wdxcq,liebe,m1garand,blah123,616879,action1,600000,sumitomo,albcaz,asian1,557799,dave69,556699,sasa123,streaker,michel1,karate1,buddy7,daulet,koks888,roadtrip,wapiti,oldguy,illini1,1234qq,mrspock,kwiatek,buterfly,august31,jibxhq,jackin,taxicab,tristram,talisker,446655,444666,chrisa,freespace,vfhbfyyf,chevell,444333,notyours,442244,christian1,seemore,sniper12,marlin1,joker666,multik,devilish,crf450,cdfoli,eastern1,asshead,duhast,voyager2,cyberia,1wizard,cybernet,iloveme1,veterok,karandash,392781,looksee,diddy,diabolic,foofight,missey,herbert1,bmw318i,premier1,zsfmpv,eric1234,dun6sm,fuck11,345543,spudman,lurker,bitem,lizzy1,ironsink,minami,339311,s7fhs127,sterne,332233,plankton,galax,azuywe,changepa,august25,mouse123,sikici,killer69,xswqaz,quovadis,gnomik,033028pw,777777a,barrakuda,spawn666,goodgod,slurp,morbius,yelnats,cujo31,norman1,fastone,earwig,aureli,wordlife,bnfkbz,yasmi,austin123,timberla,missy2,legalize,netcom,liljon,takeit,georgin,987654321z,warbird,vitalina,all4u3,mmmmmm1,bichon,ellobo,wahoos,fcazmj,aksarben,lodoss,satnam,vasili,197800,maarten,sam138989,0u812,ankita,walte,prince12,anvils,bestia,hoschi,198300,univer,jack10,ktyecbr,gr00vy,hokie,wolfman1,fuckwit,geyser,emmanue,ybrjkftd,qwerty33,karat,dblock,avocat,bobbym,womersle,1please,nostra,dayana,billyray,alternat,iloveu1,qwerty69,rammstein1,mystikal,winne,drawde,executor,craxxxs,ghjcnjnf,999888777,welshman,access123,963214785,951753852,babe69,fvcnthlfv,****me,666999666,testing2,199200,nintendo64,oscarr,guido8,zhanna,gumshoe,jbird,159357456,pasca,123452345,satan6,mithrand,fhbirf,aa1111aa,viggen,ficktjuv,radial9,davids1,rainbow7,futuro,hipho,platin,poppy123,rhenjq,fulle,rosit,chicano,scrumpy,lumpy1,seifer,uvmrysez,autumn1,xenon,susie1,7u8i9o0p,gamer1,sirene,muffy1,monkeys1,kalinin,olcrackmaster,hotmove,uconn,gshock,merson,lthtdyz,pizzaboy,peggy1,pistache,pinto1,fishka,ladydi,pandor,baileys,hungwell,redboy,rookie1,amanda01,passwrd,clean1,matty1,tarkus,jabba1,bobster,beer30,solomon1,moneymon,sesamo,fred11,sunnysid,jasmine5,thebears,putamadre,workhard,flashbac,counter1,liefde,magnat,corky1,green6,abramov,lordik,univers,shortys,david3,vip123,gnarly,1234567s,billy2,honkey,deathstar,grimmy,govinda,direktor,12345678s,linus1,shoppin,rekbrjdf,santeria,prett,berty75,mohican,daftpunk,uekmyfhf,chupa,strats,ironbird,giants56,salisbur,koldun,summer04,pondscum,jimmyj,miata1,george3,redshoes,weezie,bartman1,0p9o8i7u,s1lver,dorkus,125478,omega9,sexisgood,mancow,patric1,jetta1,074401,ghjuhtcc,gfhjk,bibble,terry2,123213,medicin,rebel2,hen3ry,4freedom,aldrin,lovesyou,browny,renwod,winnie1,belladon,1house,tyghbn,blessme,rfhfrfnbwf,haylee,deepdive,booya,phantasy,gansta,cock69,4mnveh,gazza1,redapple,structur,anakin1,manolito,steve01,poolman,chloe123,vlad1998,qazwsxe,pushit,random123,ontherocks,o236nq,brain1,dimedrol,agape,rovnogod,1balls,knigh,alliso,love01,wolf01,flintstone,beernuts,tuffguy,isengard,highfive,alex23,casper99,rubina,getreal,chinita,italian1,airsoft,qwerty23,muffdiver,willi1,grace123,orioles1,redbull1,chino1,ziggy123,breadman,estefan,ljcneg,gotoit,logan123,wideglid,mancity1,treess,qwe123456,kazumi,qweasdqwe,oddworld,naveed,protos,towson,a801016,godislov,at_asp,bambam1,soccer5,dark123,67vette,carlos123,hoser1,scouser,wesdxc,pelus,dragon25,pflhjn,abdula,1freedom,policema,tarkin,eduardo1,mackdad,gfhjkm11,lfplhfgthvf,adilet,zzzzxxxx,childre,samarkand,cegthgegth,shama,fresher,silvestr,greaser,allout,plmokn,sexdrive,nintendo1,fantasy7,oleander,fe126fd,crumpet,pingzing,dionis,hipster,yfcnz,requin,calliope,jerome1,housecat,abc123456789,doghot,snake123,augus,brillig,chronic1,gfhjkbot,expediti,noisette,master7,caliban,whitetai,favorite3,lisamari,educatio,ghjhjr,saber1,zcegth,1958proman,vtkrbq,milkdud,imajica,thehip,bailey10,hockey19,dkflbdjcnjr,j123456,bernar,aeiouy,gamlet,deltachi,endzone,conni,bcgfybz,brandi1,auckland2010,7653ajl1,mardigra,testuser,bunko18,camaro67,36936,greenie,454dfmcq,6xe8j2z4,mrgreen,ranger5,headhunt,banshee1,moonunit,zyltrc,hello3,pussyboy,stoopid,tigger11,yellow12,drums1,blue02,kils123,junkman,banyan,jimmyjam,tbbucs,sportster,badass1,joshie,braves10,lajolla,1amanda,antani,78787,antero,19216801,chich,rhett32,sarahm,beloit,sucker69,corkey,nicosnn,rccola,caracol,daffyduc,bunny2,mantas,monkies,hedonist,cacapipi,ashton1,sid123,19899891,patche,greekgod,cbr1000,leader1,19977991,ettore,chongo,113311,picass,cfif123,rhtfnbd,frances1,andy12,minnette,bigboy12,green69,alices,babcia,partyboy,javabean,freehand,qawsed123,xxx111,harold1,passwo,jonny1,kappa1,w2dlww3v5p,1merlin,222999,tomjones,jakeman,franken,markhegarty,john01,carole1,daveman,caseys,apeman,mookey,moon123,claret,titans1,residentevil,campari,curitiba,dovetail,aerostar,jackdaniels,basenji,zaq12w,glencoe,biglove,goober12,ncc170,far7766,monkey21,eclipse9,1234567v,vanechka,aristote,grumble,belgorod,abhishek,neworleans,pazzword,dummie,sashadog,diablo11,mst3000,koala1,maureen1,jake99,isaiah1,funkster,gillian1,ekaterina20,chibears,astra123,4me2no,winte,skippe,necro,windows9,vinograd,demolay,vika2010,quiksilver,19371ayj,dollar1,shecky,qzwxecrv,butterfly1,merrill1,scoreland,1crazy,megastar,mandragora,track1,dedhed,jacob2,newhope,qawsedrftgyh,shack1,samvel,gatita,shyster,clara1,telstar,office1,crickett,truls,nirmala,joselito,chrisl,lesnik,aaaabbbb,austin01,leto2010,bubbie,aaa12345,widder,234432,salinger,mrsmith,qazsedcft,newshoes,skunks,yt1300,bmw316,arbeit,smoove,123321qweewq,123qazwsx,22221111,seesaw,0987654321a,peach1,1029384756q,sereda,gerrard8,shit123,batcave,energy1,peterb,mytruck,peter12,alesya,tomato1,spirou,laputaxx,magoo1,omgkremidia,knight12,norton1,vladislava,shaddy,austin11,jlbyjxrf,kbdthgekm,punheta,fetish69,exploiter,roger2,manstein,gtnhjd,32615948worms,dogbreath,ujkjdjkjvrf,vodka1,ripcord,fatrat,kotek1,tiziana,larrybir,thunder3,nbvfnb,9kyq6fge,remembe,likemike,gavin1,shinigam,yfcnfcmz,13245678,jabbar,vampyr,ane4ka,lollipo,ashwin,scuderia,limpdick,deagle,3247562,vishenka,fdhjhf,alex02,volvov70,mandys,bioshock,caraca,tombraider,matrix69,jeff123,13579135,parazit,black3,noway1,diablos,hitmen,garden1,aminor,decembe,august12,b00ger,006900,452073t,schach,hitman1,mariner1,vbnmrf,paint1,742617000027,bitchboy,pfqxjyjr,5681392,marryher,sinnet,malik1,muffin12,aninha,piolin,lady12,traffic1,cbvjyf,6345789,june21,ivan2010,ryan123,honda99,gunny,coorslight,asd321,hunter69,7224763,sonofgod,dolphins1,1dolphin,pavlenko,woodwind,lovelov,pinkpant,gblfhfcbyf,hotel1,justinbiebe,vinter,jeff1234,mydogs,1pizza,boats1,parrothe,shawshan,brooklyn1,cbrown,1rocky,hemi426,dragon64,redwings1,porsches,ghostly,hubbahub,buttnut,b929ezzh,sorokina,flashg,fritos,b7mguk,metatron,treehous,vorpal,8902792,marcu,free123,labamba,chiefs1,zxc123zxc,keli_14,hotti,1steeler,money4,rakker,foxwoods,free1,ahjkjd,sidorova,snowwhit,neptune1,mrlover,trader1,nudelamb,baloo,power7,deltasig,bills1,trevo,7gorwell,nokia6630,nokia5320,madhatte,1cowboys,manga1,namtab,sanjar,fanny1,birdman1,adv12775,carlo1,dude1998,babyhuey,nicole11,madmike,ubvyfpbz,qawsedr,lifetec,skyhook,stalker123,toolong,robertso,ripazha,zippy123,1111111a,manol,dirtyman,analslut,jason3,dutches,minhasenha,cerise,fenrir,jayjay1,flatbush,franka,bhbyjxrf,26429vadim,lawntrax,198700,fritzy,nikhil,ripper1,harami,truckman,nemvxyheqdd5oqxyxyzi,gkfytnf,bugaboo,cableman,hairpie,xplorer,movado,hotsex69,mordred,ohyeah1,patrick3,frolov,katieh,4311111q,mochaj,presari,bigdo,753951852,freedom4,kapitan,tomas1,135795,sweet123,pokers,shagme,tane4ka,sentinal,ufgyndmv,jonnyb,skate123,123456798,123456788,very1,gerrit,damocles,dollarbi,caroline1,lloyds,pizdets,flatland,92702689,dave13,meoff,ajnjuhfabz,achmed,madison9,744744z,amonte,avrillavigne,elaine1,norma1,asseater,everlong,buddy23,cmgang1,trash1,mitsu,flyman,ulugbek,june27,magistr,fittan,sebora64,dingos,sleipnir,caterpil,cindys,212121qaz,partys,dialer,gjytltkmybr,qweqaz,janvier,rocawear,lostboy,aileron,sweety1,everest1,pornman,boombox,potter1,blackdic,44448888,eric123,112233aa,2502557i,novass,nanotech,yourname,x12345,indian1,15975300,1234567l,carla51,chicago0,coleta,cxzdsaewq,qqwweerr,marwan,deltic,hollys,qwerasd,pon32029,rainmake,nathan0,matveeva,legioner,kevink,riven,tombraid,blitzen,a54321,jackyl,chinese1,shalimar,oleg1995,beaches1,tommylee,eknock,berli,monkey23,badbob,pugwash,likewhoa,jesus2,yujyd360,belmar,shadow22,utfp5e,angelo1,minimax,pooder,cocoa1,moresex,tortue,lesbia,panthe,snoopy2,drumnbass,alway,gmcz71,6jhwmqku,leppard,dinsdale,blair1,boriqua,money111,virtuagirl,267605,rattlesn,1sunshin,monica12,veritas1,newmexic,millertime,turandot,rfvxfnrf,jaydog,kakawka,bowhunter,booboo12,deerpark,erreway,taylorma,rfkbybyf,wooglin,weegee,rexdog,iamhorny,cazzo1,vhou812,bacardi1,dctktyyfz,godpasi,peanut12,bertha1,fuckyoubitch,ghosty,altavista,jertoot,smokeit,ghjcnbvtyz,fhnehxbr,rolsen,qazxcdews,maddmaxx,redrocke,qazokm,spencer2,thekiller,asdf11,123sex,tupac1,p1234567,dbrown,1biteme,tgo4466,316769,sunghi,shakespe,frosty1,gucci1,arcana,bandit01,lyubov,poochy,dartmout,magpies1,sunnyd,mouseman,summer07,chester7,shalini,danbury,pigboy,dave99,deniss,harryb,ashley11,pppppp1,01081988m,balloon1,tkachenko,bucks1,master77,pussyca,tricky1,zzxxccvv,zoulou,doomer,mukesh,iluv69,supermax,todays,thefox,don123,dontask,diplom,piglett,shiney,fahbrf,qaz12wsx,temitope,reggin,project1,buffy2,inside1,lbpfqyth,vanilla1,lovecock,u4slpwra,fylh.irf,123211,7ertu3ds,necroman,chalky,artist1,simpso,4x7wjr,chaos666,lazyacres,harley99,ch33s3,marusa,eagle7,dilligas,computadora,lucky69,denwer,nissan350z,unforgiv,oddball,schalke0,aztec1,borisova,branden1,parkave,marie123,germa,lafayett,878kckxy,405060,cheeseca,bigwave,fred22,andreea,poulet,mercutio,psycholo,andrew88,o4izdmxu,sanctuar,newhome,milion,suckmydi,rjvgm.nth,warior,goodgame,1qwertyuiop,6339cndh,scorpio2,macker,southbay,crabcake,toadie,paperclip,fatkid,maddo,cliff1,rastafar,maries,twins1,geujdrf,anjela,wc4fun,dolina,mpetroff,rollout,zydeco,shadow3,pumpki,steeda,volvo240,terras,blowjo,blue2000,incognit,badmojo,gambit1,zhukov,station1,aaronb,graci,duke123,clipper1,qazxsw2,ledzeppe,kukareku,sexkitte,cinco,007008,lakers12,a1234b,acmilan1,afhfjy,starrr,slutty3,phoneman,kostyan,bonzo1,sintesi07,ersatz,cloud1,nephilim,nascar03,rey619,kairos,123456789e,hardon1,boeing1,juliya,hfccdtn,vgfun8,polizei,456838,keithb,minouche,ariston,savag,213141,clarkken,microwav,london2,santacla,campeo,qr5mx7,464811,mynuts,bombo,1mickey,lucky8,danger1,ironside,carter12,wyatt1,borntorun,iloveyou123,jose1,pancake1,tadmichaels,monsta,jugger,hunnie,triste,heat7777,ilovejesus,queeny,luckycharm,lieben,gordolee85,jtkirk,forever21,jetlag,skylane,taucher,neworlea,holera,000005,anhnhoem,melissa7,mumdad,massimiliano,dima1994,nigel1,madison3,slicky,shokolad,serenit,jmh1978,soccer123,chris3,drwho,rfpzdrf,1qasw23ed,free4me,wonka,sasquatc,sanan,maytag,verochka,bankone,molly12,monopoli,xfqybr,lamborgini,gondolin,candycane,needsome,jb007,scottie1,brigit,0147258369,kalamazo,lololyo123,bill1234,ilovejes,lol123123,popkorn,april13,567rntvm,downunde,charle1,angelbab,guildwars,homeworld,qazxcvbnm,superma1,dupa123,kryptoni,happyy,artyom,stormie,cool11,calvin69,saphir,konovalov,jansport,october8,liebling,druuna,susans,megans,tujhjdf,wmegrfux,jumbo1,ljb4dt7n,012345678910,kolesnik,speculum,at4gftlw,kurgan,93pn75,cahek0980,dallas01,godswill,fhifdby,chelsea4,jump23,barsoom,catinhat,urlacher,angel99,vidadi1,678910,lickme69,topaz1,westend,loveone,c12345,gold12,alex1959,mamon,barney12,1maggie,alex12345,lp2568cskt,s1234567,gjikbdctyf,anthony0,browns99,chips1,sunking,widespre,lalala1,tdutif,fucklife,master00,alino4ka,stakan,blonde1,phoebus,tenore,bvgthbz,brunos,suzjv8,uvdwgt,revenant,1banana,veroniqu,sexfun,sp1der,4g3izhox,isakov,shiva1,scooba,bluefire,wizard12,dimitris,funbags,perseus,hoodoo,keving,malboro,157953,a32tv8ls,latics,animate,mossad,yejntb,karting,qmpq39zr,busdrive,jtuac3my,jkne9y,sr20dett,4gxrzemq,keylargo,741147,rfktylfhm,toast1,skins1,xcalibur,gattone,seether,kameron,glock9mm,julio1,delenn,gameday,tommyd,str8edge,bulls123,66699,carlsberg,woodbird,adnama,45auto,codyman,truck2,1w2w3w4w,pvjegu,method1,luetdi,41d8cd98f00b,bankai,5432112345,94rwpe,reneee,chrisx,melvins,775577,sam2000,scrappy1,rachid,grizzley,margare,morgan01,winstons,gevorg,gonzal,crawdad,gfhfdjp,babilon,noneya,pussy11,barbell,easyride,c00li0,777771,311music,karla1,golions,19866891,peejay,leadfoot,hfvbkm,kr9z40sy,cobra123,isotwe,grizz,sallys,****you,aaa123a,dembel,foxs14,hillcres,webman,mudshark,alfredo1,weeded,lester1,hovepark,ratface,000777fffa,huskie,wildthing,elbarto,waikiki,masami,call911,goose2,regin,dovajb,agricola,cjytxrj,andy11,penny123,family01,a121212,1braves,upupa68,happy100,824655,cjlove,firsttim,kalel,redhair,dfhtymt,sliders,bananna,loverbo,fifa2008,crouton,chevy350,panties2,kolya1,alyona,hagrid,spagetti,q2w3e4r,867530,narkoman,nhfdvfnjkju123,1ccccccc,napolean,0072563,allay,w8sted,wigwam,jamesk,state1,parovoz,beach69,kevinb,rossella,logitech1,celula,gnocca,canucks1,loginova,marlboro1,aaaa1,kalleanka,mester,mishutka,milenko,alibek,jersey1,peterc,1mouse,nedved,blackone,ghfplybr,682regkh,beejay,newburgh,ruffian,clarets,noreaga,xenophon,hummerh2,tenshi,smeagol,soloyo,vfhnby,ereiamjh,ewq321,goomie,sportin,cellphone,sonnie,jetblack,saudan,gblfhfc,matheus,uhfvjnf,alicja,jayman1,devon1,hexagon,bailey2,vtufajy,yankees7,salty1,908070,killemal,gammas,eurocard,sydney12,tuesday1,antietam,wayfarer,beast666,19952009sa,aq12ws,eveli,hockey21,haloreach,dontcare,xxxx1,andrea11,karlmarx,jelszo,tylerb,protools,timberwolf,ruffneck,pololo,1bbbbb,waleed,sasami,twinss,fairlady,illuminati,alex007,sucks1,homerjay,scooter7,tarbaby,barmaley,amistad,vanes,randers,tigers12,dreamer2,goleafsg,googie,bernie1,as12345,godeep,james3,phanto,gwbush,cumlover,2196dc,studioworks,995511,golf56,titova,kaleka,itali,socks1,kurwamac,daisuke,hevonen,woody123,daisie,wouter,henry123,gostosa,guppie,porpoise,iamsexy,276115,paula123,1020315,38gjgeuftd,rjrfrjkf,knotty,idiot1,sasha12345,matrix13,securit,radical1,ag764ks,jsmith,coolguy1,secretar,juanas,sasha1988,itout,00000001,tiger11,1butthea,putain,cavalo,basia1,kobebryant,1232323,12345asdfg,sunsh1ne,cyfqgth,tomkat,dorota,dashit,pelmen,5t6y7u,whipit,smokeone,helloall,bonjour1,snowshoe,nilknarf,x1x2x3,lammas,1234599,lol123456,atombomb,ironchef,noclue,alekseev,gwbush1,silver2,12345678m,yesican,fahjlbnf,chapstic,alex95,open1,tiger200,lisichka,pogiako,cbr929,searchin,tanya123,alex1973,phil413,alex1991,dominati,geckos,freddi,silenthill,egroeg,vorobey,antoxa,dark666,shkola,apple22,rebellio,shamanking,7f8srt,cumsucker,partagas,bill99,22223333,arnster55,fucknuts,proxima,silversi,goblues,parcells,vfrcbvjdf,piloto,avocet,emily2,1597530,miniskir,himitsu,pepper2,juiceman,venom1,bogdana,jujube,quatro,botafogo,mama2010,junior12,derrickh,asdfrewq,miller2,chitarra,silverfox,napol,prestigio,devil123,mm111qm,ara123,max33484,sex2000,primo1,sephan,anyuta,alena2010,viborg,verysexy,hibiscus,terps,josefin,oxcart,spooker,speciali,raffaello,partyon,vfhvtkflrf,strela,a123456z,worksuck,glasss,lomonosov,dusty123,dukeblue,1winter,sergeeva,lala123,john22,cmc09,sobolev,bettylou,dannyb,gjkrjdybr,hagakure,iecnhbr,awsedr,pmdmsctsk,costco,alekseeva,fktrcttd,bazuka,flyingv,garuda,buffy16,gutierre,beer12,stomatolog,ernies,palmeiras,golf123,love269,n.kmgfy,gjkysqgbpltw,youare,joeboo,baksik,lifeguar,111a111,nascar8,mindgame,dude1,neopets,frdfkfyu,june24,phoenix8,penelopa,merlin99,mercenar,badluck,mishel,bookert,deadsexy,power9,chinchil,1234567m,alex10,skunk1,rfhkcjy,sammycat,wright1,randy2,marakesh,temppassword,elmer251,mooki,patrick0,bonoedge,1tits,chiar,kylie1,graffix,milkman1,cornel,mrkitty,nicole12,ticketmaster,beatles4,number20,ffff1,terps1,superfre,yfdbufnjh,jake1234,flblfc,1111qq,zanuda,jmol01,wpoolejr,polopol,nicolett,omega13,cannonba,123456789.,sandy69,ribeye,bo243ns,marilena,bogdan123,milla,redskins1,19733791,alias1,movie1,ducat,marzena,shadowru,56565,coolman1,pornlover,teepee,spiff,nafanya,gateway3,fuckyou0,hasher,34778,booboo69,staticx,hang10,qq12345,garnier,bosco123,1234567qw,carson1,samso,1xrg4kcq,cbr929rr,allan123,motorbik,andrew22,pussy101,miroslava,cytujdbr,camp0017,cobweb,snusmumrik,salmon1,cindy2,aliya,serendipity,co437at,tincouch,timmy123,hunter22,st1100,vvvvvv1,blanka,krondor,sweeti,nenit,kuzmich,gustavo1,bmw320i,alex2010,trees1,kyliem,essayons,april26,kumari,sprin,fajita,appletre,fghbjhb,1green,katieb,steven2,corrado1,satelite,1michell,123456789c,cfkfvfylhf,acurarsx,slut543,inhere,bob2000,pouncer,k123456789,fishie,aliso,audia8,bluetick,soccer69,jordan99,fromhell,mammoth1,fighting54,mike25,pepper11,extra1,worldwid,chaise,vfr800,sordfish,almat,nofate,listopad,hellgate,dctvghbdf,jeremia,qantas,lokiju,honker,sprint1,maral,triniti,compaq3,sixsix6,married1,loveman,juggalo1,repvtyrj,zxcasdqw,123445,whore1,123678,monkey6,west123,warcraf,pwnage,mystery1,creamyou,ant123,rehjgfnrf,corona1,coleman1,steve121,alderaan,barnaul,celeste1,junebug1,bombshel,gretzky9,tankist,targa,cachou,vaz2101,playgolf,boneyard,strateg,romawka,iforgotit,pullup,garbage1,irock,archmage,shaft1,oceano,sadies,alvin1,135135ab,psalm69,lmfao,ranger02,zaharova,33334444,perkman,realman,salguod,cmoney,astonmartin,glock1,greyfox,viper99,helpm,blackdick,46775575,family5,shazbot,dewey1,qwertyas,shivani,black22,mailman1,greenday1,57392632,red007,stanky,sanchez1,tysons,daruma,altosax,krayzie,85852008,1forever,98798798,irock.,123456654,142536789,ford22,brick1,michela,preciou,crazy4u,01telemike01,nolife,concac,safety1,annie123,brunswic,destini,123456qwer,madison0,snowball1,137946,1133557799,jarule,scout2,songohan,thedead,00009999,murphy01,spycam,hirsute,aurinko,associat,1miller,baklan,hermes1,2183rm,martie,kangoo,shweta,yvonne1,westsid,jackpot1,rotciv,maratik,fabrika,claude1,nursultan,noentry,ytnhjufnm,electra1,ghjcnjnfr1,puneet,smokey01,integrit,bugeye,trouble2,14071789,paul01,omgwtf,dmh415,ekilpool,yourmom1,moimeme,sparky11,boludo,ruslan123,kissme1,demetrio,appelsin,asshole3,raiders2,bunns,fynjybj,billygoa,p030710p$e4o,macdonal,248ujnfk,acorns,schmidt1,sparrow1,vinbylrj,weasle,jerom,ycwvrxxh,skywalk,gerlinde,solidus,postal1,poochie1,1charles,rhianna,terorist,rehnrf,omgwtfbbq,assfucke,deadend,zidan,jimboy,vengence,maroon5,7452tr,dalejr88,sombra,anatole,elodi,amazonas,147789,q12345q,gawker1,juanma,kassidy,greek1,bruces,bilbob,mike44,0o9i8u7y6t,kaligula,agentx,familie,anders1,pimpjuice,0128um,birthday10,lawncare,hownow,grandorgue,juggerna,scarfac,kensai,swatteam,123four,motorbike,repytxbr,other1,celicagt,pleomax,gen0303,godisgreat,icepick,lucifer666,heavy1,tea4two,forsure,02020,shortdog,webhead,chris13,palenque,3techsrl,knights1,orenburg,prong,nomarg,wutang1,80637852730,laika,iamfree,12345670,pillow1,12343412,bigears,peterg,stunna,rocky5,12123434,damir,feuerwehr,7418529630,danone,yanina,valenci,andy69,111222q,silvia1,1jjjjj,loveforever,passwo1,stratocaster,8928190a,motorolla,lateralu,ujujkm,chubba,ujkjdf,signon,123456789zx,serdce,stevo,wifey200,ololo123,popeye1,1pass,central1,melena,luxor,nemezida,poker123,ilovemusic,qaz1234,noodles1,lakeshow,amarill,ginseng,billiam,trento,321cba,fatback,soccer33,master13,marie2,newcar,bigtop,dark1,camron,nosgoth,155555,biglou,redbud,jordan7,159789,diversio,actros,dazed,drizzit,hjcnjd,wiktoria,justic,gooses,luzifer,darren1,chynna,tanuki,11335577,icculus,boobss,biggi,firstson,ceisi123,gatewa,hrothgar,jarhead1,happyjoy,felipe1,bebop1,medman,athena1,boneman,keiths,djljgfl,dicklick,russ120,mylady,zxcdsa,rock12,bluesea,kayaks,provista,luckies,smile4me,bootycal,enduro,123123f,heartbre,ern3sto,apple13,bigpappa,fy.njxrf,bigtom,cool69,perrito,quiet1,puszek,cious,cruella,temp1,david26,alemap,aa123123,teddies,tricolor,smokey12,kikiriki,mickey01,robert01,super5,ranman,stevenso,deliciou,money777,degauss,mozar,susanne1,asdasd12,shitbag,mommy123,wrestle1,imfree,fuckyou12,barbaris,florent,ujhijr,f8yruxoj,tefjps,anemone,toltec,2gether,left4dead2,ximen,gfkmvf,dunca,emilys,diana123,16473a,mark01,bigbro,annarbor,nikita2000,11aa11,tigres,llllll1,loser2,fbi11213,jupite,qwaszxqw,macabre,123ert,rev2000,mooooo,klapaucius,bagel1,chiquit,iyaoyas,bear101,irocz28,vfktymrfz,smokey2,love99,rfhnbyf,dracul,keith123,slicko,peacock1,orgasmic,thesnake,solder,wetass,doofer,david5,rhfcyjlfh,swanny,tammys,turkiye,tubaman,estefani,firehose,funnyguy,servo,grace17,pippa1,arbiter,jimmy69,nfymrf,asdf67nm,rjcnzy,demon123,thicknes,sexysex,kristall,michail,encarta,banderos,minty,marchenko,de1987ma,mo5kva,aircav,naomi1,bonni,tatoo,cronaldo,49ers1,mama1963,1truck,telecaster,punksnotdead,erotik,1eagles,1fender,luv269,acdeehan,tanner1,freema,1q3e5t7u,linksys,tiger6,megaman1,neophyte,australia1,mydaddy,1jeffrey,fgdfgdfg,gfgekz,1986irachka,keyman,m0b1l3,dfcz123,mikeyg,playstation2,abc125,slacker1,110491g,lordsoth,bhavani,ssecca,dctvghbdtn,niblick,hondacar,baby01,worldcom,4034407,51094didi,3657549,3630000,3578951,sweetpussy,majick,supercoo,robert11,abacabb,panda123,gfhjkm13,ford4x4,zippo1,lapin,1726354,lovesong,dude11,moebius,paravoz,1357642,matkhau,solnyshko,daniel4,multiplelog,starik,martusia,iamtheman,greentre,jetblue,motorrad,vfrcbvev,redoak,dogma1,gnorman,komlos,tonka1,1010220,666satan,losenord,lateralus,absinthe,command1,jigga1,iiiiiii1,pants1,jungfrau,926337,ufhhbgjnnth,yamakasi,888555,sunny7,gemini69,alone1,zxcvbnmz,cabezon,skyblues,zxc1234,456123a,zero00,caseih,azzurra,legolas1,menudo,murcielago,785612,779977,benidorm,viperman,dima1985,piglet1,hemligt,hotfeet,7elephants,hardup,gamess,a000000,267ksyjf,kaitlynn,sharkie,sisyphus,yellow22,667766,redvette,666420,mets69,ac2zxdty,hxxrvwcy,cdavis,alan1,noddy,579300,druss,eatshit1,555123,appleseed,simpleplan,kazak,526282,fynfyfyfhbde,birthday6,dragon6,1pookie,bluedevils,omg123,hj8z6e,x5dxwp,455445,batman23,termin,chrisbrown,animals1,lucky9,443322,kzktxrf,takayuki,fermer,assembler,zomu9q,sissyboy,sergant,felina,nokia6230i,eminem12,croco,hunt4red,festina,darknigh,cptnz062,ndshnx4s,twizzler,wnmaz7sd,aamaax,gfhfcjkmrf,alabama123,barrynov,happy5,punt0it,durandal,8xuuobe4,cmu9ggzh,bruno12,316497,crazyfrog,vfvfktyf,apple3,kasey1,mackdaddy,anthon1,sunnys,angel3,cribbage,moon1,donal,bryce1,pandabear,mwss474,whitesta,freaker,197100,bitche,p2ssw0rd,turnb,tiktonik,moonlite,ferret1,jackas,ferrum,bearclaw,liberty2,1diablo,caribe,snakeeyes,janbam,azonic,rainmaker,vetalik,bigeasy,baby1234,sureno13,blink1,kluivert,calbears,lavanda,198600,dhtlbyf,medvedeva,fox123,whirling,bonscott,freedom9,october3,manoman,segredo,cerulean,robinso,bsmith,flatus,dannon,password21,rrrrrr1,callista,romai,rainman1,trantor,mickeymo,bulldog7,g123456,pavlin,pass22,snowie,hookah,7ofnine,bubba22,cabible,nicerack,moomoo1,summer98,yoyo123,milan1,lieve27,mustang69,jackster,exocet,nadege,qaz12,bahama,watson1,libras,eclipse2,bahram,bapezm,up9x8rww,ghjcnjz,themaste,deflep27,ghost16,gattaca,fotograf,junior123,gilber,gbjyth,8vjzus,rosco1,begonia,aldebara,flower12,novastar,buzzman,manchild,lopez1,mama11,william7,yfcnz1,blackstar,spurs123,moom4242,1amber,iownyou,tightend,07931505,paquito,1johnson,smokepot,pi31415,snowmass,ayacdc,jessicam,giuliana,5tgbnhy6,harlee,giuli,bigwig,tentacle,scoubidou2,benelli,vasilina,nimda,284655,jaihind,lero4ka,1tommy,reggi,ididit,jlbyjxtcndj,mike26,qbert,wweraw,lukasz,loosee123,palantir,flint1,mapper,baldie,saturne,virgin1,meeeee,elkcit,iloveme2,blue15,themoon,radmir,number3,shyanne,missle,hannelor,jasmina,karin1,lewie622,ghjcnjqgfhjkm,blasters,oiseau,sheela,grinders,panget,rapido,positiv,twink,fltkbyf,kzsfj874,daniel01,enjoyit,nofags,doodad,rustler,squealer,fortunat,peace123,khushi,devils2,7inches,candlebo,topdawg,armen,soundman,zxcqweasd,april7,gazeta,netman,hoppers,bear99,ghbjhbntn,mantle7,bigbo,harpo,jgordon,bullshi,vinny1,krishn,star22,thunderc,galinka,phish123,tintable,nightcrawler,tigerboy,rbhgbx,messi,basilisk,masha1998,nina123,yomamma,kayla123,geemoney,0000000000d,motoman,a3jtni,ser123,owen10,italien,vintelok,12345rewq,nightime,jeepin,ch1tt1ck,mxyzptlk,bandido,ohboy,doctorj,hussar,superted,parfilev,grundle,1jack,livestrong,chrisj,matthew3,access22,moikka,fatone,miguelit,trivium,glenn1,smooches,heiko,dezember,spaghett,stason,molokai,bossdog,guitarma,waderh,boriska,photosho,path13,hfrtnf,audre,junior24,monkey24,silke,vaz21093,bigblue1,trident1,candide,arcanum,klinker,orange99,bengals1,rosebu,mjujuj,nallepuh,mtwapa1a,ranger69,level1,bissjop,leica,1tiffany,rutabega,elvis77,kellie1,sameas,barada,karabas,frank12,queenb,toutoune,surfcity,samanth1,monitor1,littledo,kazakova,fodase,mistral1,april22,carlit,shakal,batman123,fuckoff2,alpha01,5544332211,buddy3,towtruck,kenwood1,vfiekmrf,jkl123,pypsik,ranger75,sitges,toyman,bartek1,ladygirl,booman,boeing77,installsqlst,222666,gosling,bigmack,223311,bogos,kevin2,gomez1,xohzi3g4,kfnju842,klubnika,cubalibr,123456789101,kenpo,0147852369,raptor1,tallulah,boobys,jjones,1q2s3c,moogie,vid2600,almas,wombat1,extra300,xfiles1,green77,sexsex1,heyjude,sammyy,missy123,maiyeuem,nccpl25282,thicluv,sissie,raven3,fldjrfn,buster22,broncos2,laurab,letmein4,harrydog,solovey,fishlips,asdf4321,ford123,superjet,norwegen,movieman,psw333333,intoit,postbank,deepwate,ola123,geolog323,murphys,eshort,a3eilm2s2y,kimota,belous,saurus,123321qaz,i81b4u,aaa12,monkey20,buckwild,byabybnb,mapleleafs,yfcnzyfcnz,baby69,summer03,twista,246890,246824,ltcnhjth,z1z2z3,monika1,sad123,uto29321,bathory,villan,funkey,poptarts,spam967888,705499fh,sebast,porn1234,earn381,1porsche,whatthef,123456789y,polo12,brillo,soreilly,waters1,eudora,allochka,is_a_bot,winter00,bassplay,531879fiz,onemore,bjarne,red911,kot123,artur1,qazxdr,c0rvette,diamond7,matematica,klesko,beaver12,2enter,seashell,panam,chaching,edward2,browni,xenogear,cornfed,aniram,chicco22,darwin1,ancella2,sophie2,vika1998,anneli,shawn41,babie,resolute,pandora2,william8,twoone,coors1,jesusis1,teh012,cheerlea,renfield,tessa1,anna1986,madness1,bkmlfh,19719870,liebherr,ck6znp42,gary123,123654z,alsscan,eyedoc,matrix7,metalgea,chinito,4iter,falcon11,7jokx7b9du,bigfeet,tassadar,retnuh,muscle1,klimova,darion,batistuta,bigsur,1herbier,noonie,ghjrehjh,karimova,faustus,snowwhite,1manager,dasboot,michael12,analfuck,inbed,dwdrums,jaysoncj,maranell,bsheep75,164379,rolodex,166666,rrrrrrr1,almaz666,167943,russel1,negrito,alianz,goodpussy,veronik,1w2q3r4e,efremov,emb377,sdpass,william6,alanfahy,nastya1995,panther5,automag,123qwe12,vfvf2011,fishe,1peanut,speedie,qazwsx1234,pass999,171204j,ketamine,sheena1,energizer,usethis1,123abc123,buster21,thechamp,flvbhfk,frank69,chane,hopeful1,claybird,pander,anusha,bigmaxxx,faktor,housebed,dimidrol,bigball,shashi,derby1,fredy,dervish,bootycall,80988218126,killerb,cheese2,pariss,mymail,dell123,catbert,christa1,chevytru,gjgjdf,00998877,overdriv,ratten,golf01,nyyanks,dinamite,bloembol,gismo,magnus1,march2,twinkles,ryan22,duckey,118a105b,kitcat,brielle,poussin,lanzarot,youngone,ssvegeta,hero63,battle1,kiler,fktrcfylh1,newera,vika1996,dynomite,oooppp,beer4me,foodie,ljhjuf,sonshine,godess,doug1,constanc,thinkbig,steve2,damnyou,autogod,www333,kyle1,ranger7,roller1,harry2,dustin1,hopalong,tkachuk,b00bies,bill2,deep111,stuffit,fire69,redfish1,andrei123,graphix,1fishing,kimbo1,mlesp31,ifufkbyf,gurkan,44556,emily123,busman,and123,8546404,paladine,1world,bulgakov,4294967296,bball23,1wwwww,mycats,elain,delta6,36363,emilyb,color1,6060842,cdtnkfyrf,hedonism,gfgfrfhkj,5551298,scubad,gostate,sillyme,hdbiker,beardown,fishers,sektor,00000007,newbaby,rapid1,braves95,gator2,nigge,anthony3,sammmy,oou812,heffer,phishin,roxanne1,yourass,hornet1,albator,2521659,underwat,tanusha,dianas,3f3fpht7op,dragon20,bilbobag,cheroke,radiatio,dwarf1,majik,33st33,dochka,garibald,robinh,sham69,temp01,wakeboar,violet1,1w2w3w,registr,tonite,maranello,1593570,parolamea,galatasara,loranthos,1472583,asmodean,1362840,scylla,doneit,jokerr,porkypig,kungen,mercator,koolhaas,come2me,debbie69,calbear,liverpoolfc,yankees4,12344321a,kennyb,madma,85200258,dustin23,thomas13,tooling,mikasa,mistic,crfnbyf,112233445,sofia1,heinz57,colts1,price1,snowey,joakim,mark11,963147,cnhfcnm,kzinti,1bbbbbbb,rubberdu,donthate,rupert1,sasha1992,regis1,nbuhbwf,fanboy,sundial,sooner1,wayout,vjnjhjkf,deskpro,arkangel,willie12,mikeyb,celtic1888,luis1,buddy01,duane1,grandma1,aolcom,weeman,172839456,basshead,hornball,magnu,pagedown,molly2,131517,rfvtgbyhn,astonmar,mistery,madalina,cash1,1happy,shenlong,matrix01,nazarova,369874125,800500,webguy,rse2540,ashley2,briank,789551,786110,chunli,j0nathan,greshnik,courtne,suckmyco,mjollnir,789632147,asdfg1234,754321,odelay,ranma12,zebedee,artem777,bmw318is,butt1,rambler1,yankees9,alabam,5w76rnqp,rosies,mafioso,studio1,babyruth,tranzit,magical123,gfhjkm135,12345$,soboleva,709394,ubique,drizzt1,elmers,teamster,pokemons,1472583690,1597532486,shockers,merckx,melanie2,ttocs,clarisse,earth1,dennys,slobber,flagman,farfalla,troika,4fa82hyx,hakan,x4ww5qdr,cumsuck,leather1,forum1,july20,barbel,zodiak,samuel12,ford01,rushfan,bugsy1,invest1,tumadre,screwme,a666666,money5,henry8,tiddles,sailaway,starburs,100years,killer01,comando,hiromi,ranetka,thordog,blackhole,palmeira,verboten,solidsna,q1w1e1,humme,kevinc,gbrfxe,gevaudan,hannah11,peter2,vangar,sharky7,talktome,jesse123,chuchi,pammy,!qazxsw2,siesta,twenty1,wetwilly,477041,natural1,sun123,daniel3,intersta,shithead1,hellyea,bonethugs,solitair,bubbles2,father1,nick01,444000,adidas12,dripik,cameron2,442200,a7nz8546,respublika,fkojn6gb,428054,snoppy,rulez1,haslo,rachael1,purple01,zldej102,ab12cd34,cytuehjxrf,madhu,astroman,preteen,handsoff,mrblonde,biggio,testin,vfdhif,twolves,unclesam,asmara,kpydskcw,lg2wmgvr,grolsch,biarritz,feather1,williamm,s62i93,bone1,penske,337733,336633,taurus1,334433,billet,diamondd,333000,nukem,fishhook,godogs,thehun,lena1982,blue00,smelly1,unb4g9ty,65pjv22,applegat,mikehunt,giancarlo,krillin,felix123,december1,soapy,46doris,nicole23,bigsexy1,justin10,pingu,bambou,falcon12,dgthtl,1surfer,qwerty01,estrellit,nfqcjy,easygo,konica,qazqwe,1234567890m,stingers,nonrev,3e4r5t,champio,bbbbbb99,196400,allen123,seppel,simba2,rockme,zebra3,tekken3,endgame,sandy2,197300,fitte,monkey00,eldritch,littleone,rfyfgkz,1member,66chevy,oohrah,cormac,hpmrbm41,197600,grayfox,elvis69,celebrit,maxwell7,rodders,krist,1camaro,broken1,kendall1,silkcut,katenka,angrick,maruni,17071994a,tktyf,kruemel,snuffles,iro4ka,baby12,alexis01,marryme,vlad1994,forward1,culero,badaboom,malvin,hardtoon,hatelove,molley,knopo4ka,duchess1,mensuck,cba321,kickbutt,zastava,wayner,fuckyou6,eddie123,cjkysir,john33,dragonfi,cody1,jabell,cjhjrf,badseed,sweden1,marihuana,brownlov,elland,nike1234,kwiettie,jonnyboy,togepi,billyk,robert123,bb334,florenci,ssgoku,198910,bristol1,bob007,allister,yjdujhjl,gauloise,198920,bellaboo,9lives,aguilas,wltfg4ta,foxyroxy,rocket69,fifty50,babalu,master21,malinois,kaluga,gogosox,obsessio,yeahrigh,panthers1,capstan,liza2000,leigh1,paintball1,blueskie,cbr600f3,bagdad,jose98,mandreki,shark01,wonderbo,muledeer,xsvnd4b2,hangten,200001,grenden,anaell,apa195,model1,245lufpq,zip100,ghjcgtrn,wert1234,misty2,charro,juanjose,fkbcrf,frostbit,badminto,buddyy,1doctor,vanya,archibal,parviz,spunky1,footboy,dm6tzsgp,legola,samadhi,poopee,ytdxz2ca,hallowboy,dposton,gautie,theworm,guilherme,dopehead,iluvtits,bobbob1,ranger6,worldwar,lowkey,chewbaca,oooooo99,ducttape,dedalus,celular,8i9o0p,borisenko,taylor01,111111z,arlingto,p3nnywiz,rdgpl3ds,boobless,kcmfwesg,blacksab,mother2,markus1,leachim,secret2,s123456789,1derful,espero,russell2,tazzer,marykate,freakme,mollyb,lindros8,james00,gofaster,stokrotka,kilbosik,aquamann,pawel1,shedevil,mousie,slot2009,october6,146969,mm259up,brewcrew,choucho,uliana,sexfiend,fktirf,pantss,vladimi,starz,sheeps,12341234q,bigun,tiggers,crjhjcnm,libtech,pudge1,home12,zircon,klaus1,jerry2,pink1,lingus,monkey66,dumass,polopolo09,feuerweh,rjyatnf,chessy,beefer,shamen,poohbear1,4jjcho,bennevis,fatgirls,ujnbrf,cdexswzaq,9noize9,rich123,nomoney,racecar1,hacke,clahay,acuario,getsum,hondacrv,william0,cheyenn,techdeck,atljhjdf,wtcacq,suger,fallenangel,bammer,tranquil,carla123,relayer,lespaul1,portvale,idontno,bycnbnen,trooper2,gennadiy,pompon,billbob,amazonka,akitas,chinatow,atkbrc,busters,fitness1,cateye,selfok2013,1murphy,fullhous,mucker,bajskorv,nectarin,littlebitch,love24,feyenoor,bigal37,lambo1,pussybitch,icecube1,biged,kyocera,ltybcjdf,boodle,theking1,gotrice,sunset1,abm1224,fromme,sexsells,inheat,kenya1,swinger1,aphrodit,kurtcobain,rhind101,poidog,poiulkjh,kuzmina,beantown,tony88,stuttgar,drumer,joaqui,messenge,motorman,amber2,nicegirl,rachel69,andreia,faith123,studmuffin,jaiden,red111,vtkmybr,gamecocks,gumper,bosshogg,4me2know,tokyo1,kleaner,roadhog,fuckmeno,phoenix3,seeme,buttnutt,boner69,andreyka,myheart,katerin,rugburn,jvtuepip,dc3ubn,chile1,ashley69,happy99,swissair,balls2,fylhttdf,jimboo,55555d,mickey11,voronin,m7hsqstm,stufff,merete,weihnachte,dowjones,baloo1,freeones,bears34,auburn1,beverl,timberland,1elvis,guinness1,bombadil,flatron1,logging7,telefoon,merl1n,masha1,andrei1,cowabung,yousuck1,1matrix,peopl,asd123qwe,sweett,mirror1,torrente,joker12,diamond6,jackaroo,00000a,millerlite,ironhorse,2twins,stryke,gggg1,zzzxxxccc,roosevel,8363eddy,angel21,depeche1,d0ct0r,blue14,areyou,veloce,grendal,frederiksberg,cbcntvf,cb207sl,sasha2000,was.here,fritzz,rosedale,spinoza,cokeisit,gandalf3,skidmark,ashley01,12345j,1234567890qaz,sexxxxxx,beagles,lennart,12345789,pass10,politic,max007,gcheckou,12345611,tiffy,lightman,mushin,velosiped,brucewayne,gauthie,elena123,greenegg,h2oski,clocker,nitemare,123321s,megiddo,cassidy1,david13,boywonde,flori,peggy12,pgszt6md,batterie,redlands,scooter6,bckhere,trueno,bailey11,maxwell2,bandana,timoth1,startnow,ducati74,tiern,maxine1,blackmetal,suzyq,balla007,phatfarm,kirsten1,titmouse,benhogan,culito,forbin,chess1,warren1,panman,mickey7,24lover,dascha,speed2,redlion,andrew10,johnwayn,nike23,chacha1,bendog,bullyboy,goldtree,spookie,tigger99,1cookie,poutine,cyclone1,woodpony,camaleun,bluesky1,dfadan,eagles20,lovergirl,peepshow,mine1,dima1989,rjdfkmxer,11111aaaaa,machina,august17,1hhhhh,0773417k,1monster,freaksho,jazzmin,davidw,kurupt,chumly,huggies,sashenka,ccccccc1,bridge1,giggalo,cincinna,pistol1,hello22,david77,lightfoo,lucky6,jimmy12,261397,lisa12,tabaluga,mysite,belo4ka,greenn,eagle99,punkrawk,salvado,slick123,wichsen,knight99,dummys,fefolico,contrera,kalle1,anna1984,delray,robert99,garena,pretende,racefan,alons,serenada,ludmilla,cnhtkjr,l0swf9gx,hankster,dfktynbyrf,sheep1,john23,cv141ab,kalyani,944turbo,crystal2,blackfly,zrjdktdf,eus1sue1,mario5,riverplate,harddriv,melissa3,elliott1,sexybitc,cnhfyybr,jimdavis,bollix,beta1,amberlee,skywalk1,natala,1blood,brattax,shitty1,gb15kv99,ronjon,rothmans,thedoc,joey21,hotboi,firedawg,bimbo38,jibber,aftermat,nomar,01478963,phishing,domodo,anna13,materia,martha1,budman1,gunblade,exclusiv,sasha1997,anastas,rebecca2,fackyou,kallisti,fuckmyass,norseman,ipswich1,151500,1edward,intelinside,darcy1,bcrich,yjdjcnbf,failte,buzzzz,cream1,tatiana1,7eleven,green8,153351,1a2s3d4f5g6h,154263,milano1,bambi1,bruins77,rugby2,jamal1,bolita,sundaypunch,bubba12,realmadr,vfyxtcnth,iwojima,notlob,black666,valkiria,nexus1,millerti,birthday100,swiss1,appollo,gefest,greeneyes,celebrat,tigerr,slava123,izumrud,bubbabub,legoman,joesmith,katya123,sweetdream,john44,wwwwwww1,oooooo1,socal,lovespor,s5r8ed67s,258147,heidis,cowboy22,wachovia,michaelb,qwe1234567,i12345,255225,goldie1,alfa155,45colt,safeu851,antonova,longtong,1sparky,gfvznm,busen,hjlbjy,whateva,rocky4,cokeman,joshua3,kekskek1,sirocco,jagman,123456qwert,phinupi,thomas10,loller,sakur,vika2011,fullred,mariska,azucar,ncstate,glenn74,halima,aleshka,ilovemylife,verlaat,baggie,scoubidou6,phatboy,jbruton,scoop1,barney11,blindman,def456,maximus2,master55,nestea,11223355,diego123,sexpistols,sniffy,philip1,f12345,prisonbreak,nokia2700,ajnjuhfa,yankees3,colfax,ak470000,mtnman,bdfyeirf,fotball,ichbin,trebla,ilusha,riobravo,beaner1,thoradin,polkaudi,kurosawa,honda123,ladybu,valerik,poltava,saviola,fuckyouguys,754740g0,anallove,microlab1,juris01,ncc1864,garfild,shania1,qagsud,makarenko,cindy69,lebedev,andrew11,johnnybo,groovy1,booster1,sanders1,tommyb,johnson4,kd189nlcih,hondaman,vlasova,chick1,sokada,sevisgur,bear2327,chacho,sexmania,roma1993,hjcnbckfd,valley1,howdie,tuppence,jimandanne,strike3,y4kuz4,nhfnfnf,tsubasa,19955991,scabby,quincunx,dima1998,uuuuuu1,logica,skinner1,pinguino,lisa1234,xpressmusic,getfucked,qqqq1,bbbb1,matulino,ulyana,upsman,johnsmith,123579,co2000,spanner1,todiefor,mangoes,isabel1,123852,negra,snowdon,nikki123,bronx1,booom,ram2500,chuck123,fireboy,creek1,batman13,princesse,az12345,maksat,1knight,28infern,241455,r7112s,muselman,mets1986,katydid,vlad777,playme,kmfdm1,asssex,1prince,iop890,bigbroth,mollymoo,waitron,lizottes,125412,juggler,quinta,0sister0,zanardi,nata123,heckfyxbr,22q04w90e,engine2,nikita95,zamira,hammer22,lutscher,carolina1,zz6319,sanman,vfuflfy,buster99,rossco,kourniko,aggarwal,tattoo1,janice1,finger1,125521,19911992,shdwlnds,rudenko,vfvfgfgf123,galatea,monkeybu,juhani,premiumcash,classact,devilmay,helpme2,knuddel,hardpack,ramil,perrit,basil1,zombie13,stockcar,tos8217,honeypie,nowayman,alphadog,melon1,talula,125689,tiribon12,tornike,haribol,telefone,tiger22,sucka,lfytxrf,chicken123,muggins,a23456,b1234567,lytdybr,otter1,pippa,vasilisk,cooking1,helter,78978,bestboy,viper7,ahmed1,whitewol,mommys,apple5,shazam1,chelsea7,kumiko,masterma,rallye,bushmast,jkz123,entrar,andrew6,nathan01,alaric,tavasz,heimdall,gravy1,jimmy99,cthlwt,powerr,gthtrhtcnjr,canesfan,sasha11,ybrbnf_25,august9,brucie,artichok,arnie1,superdude,tarelka,mickey22,dooper,luners,holeshot,good123,gettysbu,bicho,hammer99,divine5,1zxcvbn,stronzo,q22222,disne,bmw750il,godhead,hallodu,aerith,nastik,differen,cestmoi,amber69,5string,pornosta,dirtygirl,ginger123,formel1,scott12,honda200,hotspurs,johnatha,firstone123,lexmark1,msconfig,karlmasc,l123456,123qweasdzx,baldman,sungod,furka,retsub,9811020,ryder1,tcglyued,astron,lbvfcbr,minddoc,dirt49,baseball12,tbear,simpl,schuey,artimus,bikman,plat1num,quantex,gotyou,hailey1,justin01,ellada,8481068,000002,manimal,dthjybxrf,buck123,dick123,6969696,nospam,strong1,kodeord,bama12,123321w,superman123,gladiolus,nintend,5792076,dreamgirl,spankme1,gautam,arianna1,titti,tetas,cool1234,belladog,importan,4206969,87e5nclizry,teufelo7,doller,yfl.irf,quaresma,3440172,melis,bradle,nnmaster,fast1,iverso,blargh,lucas12,chrisg,iamsam,123321az,tomjerry,kawika,2597174,standrew,billyg,muskan,gizmodo2,rz93qpmq,870621345,sathya,qmezrxg4,januari,marthe,moom4261,cum2me,hkger286,lou1988,suckit1,croaker,klaudia1,753951456,aidan1,fsunoles,romanenko,abbydog,isthebes,akshay,corgi,fuck666,walkman555,ranger98,scorpian,hardwareid,bluedragon,fastman,2305822q,iddqdiddqd,1597532,gopokes,zvfrfcb,w1234567,sputnik1,tr1993,pa$$w0rd,2i5fdruv,havvoc,1357913,1313131,bnm123,cowd00d,flexscan,thesims2,boogiema,bigsexxy,powerstr,ngc4565,joshman,babyboy1,123jlb,funfunfu,qwe456,honor1,puttana,bobbyj,daniel21,pussy12,shmuck,1232580,123578951,maxthedo,hithere1,bond0007,gehenna,nomames,blueone,r1234567,bwana,gatinho,1011111,torrents,cinta,123451234,tiger25,money69,edibey,pointman,mmcm19,wales1,caffreys,phaedra,bloodlus,321ret32,rufuss,tarbit,joanna1,102030405,stickboy,lotrfotr34,jamshid,mclarenf1,ataman,99ford,yarrak,logan2,ironlung,pushistik,dragoon1,unclebob,tigereye,pinokio,tylerj,mermaid1,stevie1,jaylen,888777,ramana,roman777,brandon7,17711771s,thiago,luigi1,edgar1,brucey,videogam,classi,birder,faramir,twiddle,cubalibre,grizzy,fucky,jjvwd4,august15,idinahui,ranita,nikita1998,123342,w1w2w3,78621323,4cancel,789963,(null,vassago,jaydog472,123452,timt42,canada99,123589,rebenok,htyfnf,785001,osipov,maks123,neverwinter,love2010,777222,67390436,eleanor1,bykemo,aquemini,frogg,roboto,thorny,shipmate,logcabin,66005918,nokian,gonzos,louisian,1abcdefg,triathlo,ilovemar,couger,letmeino,supera,runvs,fibonacci,muttly,58565254,5thgbqi,vfnehsv,electr,jose12,artemis1,newlove,thd1shr,hawkey,grigoryan,saisha,tosca,redder,lifesux,temple1,bunnyman,thekids,sabbeth,tarzan1,182838,158uefas,dell50,1super,666222,47ds8x,jackhamm,mineonly,rfnfhbyf,048ro,665259,kristina1,bombero,52545856,secure1,bigloser,peterk,alex2,51525354,anarchy1,superx,teenslut,money23,sigmapi,sanfrancisco,acme34,private5,eclips,qwerttrewq,axelle,kokain,hardguy,peter69,jesuschr,dyanna,dude69,sarah69,toyota91,amberr,45645645,bugmenot,bigted,44556677,556644,wwr8x9pu,alphaome,harley13,kolia123,wejrpfpu,revelati,nairda,sodoff,cityboy,pinkpussy,dkalis,miami305,wow12345,triplet,tannenbau,asdfasdf1,darkhors,527952,retired1,soxfan,nfyz123,37583867,goddes,515069,gxlmxbewym,1warrior,36925814,dmb2011,topten,karpova,89876065093rax,naturals,gateway9,cepseoun,turbot,493949,cock22,italia1,sasafras,gopnik,stalke,1qazxdr5,wm2006,ace1062,alieva,blue28,aracel,sandia,motoguzz,terri1,emmajane,conej,recoba,alex1995,jerkyboy,cowboy12,arenrone,precisio,31415927,scsa316,panzer1,studly1,powerhou,bensam,mashoutq,billee,eeyore1,reape,thebeatl,rul3z,montesa,doodle1,cvzefh1gk,424365,a159753,zimmerma,gumdrop,ashaman,grimreap,icandoit,borodina,branca,dima2009,keywest1,vaders,bubluk,diavolo,assss,goleta,eatass,napster1,382436,369741,5411pimo,lenchik,pikach,gilgamesh,kalimera,singer1,gordon2,rjycnbnewbz,maulwurf,joker13,2much4u,bond00,alice123,robotec,fuckgirl,zgjybz,redhorse,margaret1,brady1,pumpkin2,chinky,fourplay,1booger,roisin,1brandon,sandan,blackheart,cheez,blackfin,cntgfyjdf,mymoney1,09080706,goodboss,sebring1,rose1,kensingt,bigboner,marcus12,ym3cautj,struppi,thestone,lovebugs,stater,silver99,forest99,qazwsx12345,vasile,longboar,mkonji,huligan,rhfcbdfz,airmail,porn11,1ooooo,sofun,snake2,msouthwa,dougla,1iceman,shahrukh,sharona,dragon666,france98,196800,196820,ps253535,zjses9evpa,sniper01,design1,konfeta,jack99,drum66,good4you,station2,brucew,regedit,school12,mvtnr765,pub113,fantas,tiburon1,king99,ghjcnjgbpltw,checkito,308win,1ladybug,corneliu,svetasveta,197430,icicle,imaccess,ou81269,jjjdsl,brandon6,bimbo1,smokee,piccolo1,3611jcmg,children2,cookie2,conor1,darth1,margera,aoi856,paully,ou812345,sklave,eklhigcz,30624700,amazing1,wahooo,seau55,1beer,apples2,chulo,dolphin9,heather6,198206,198207,hergood,miracle1,njhyflj,4real,milka,silverfi,fabfive,spring12,ermine,mammy,jumpjet,adilbek,toscana,caustic,hotlove,sammy69,lolita1,byoung,whipme,barney01,mistys,tree1,buster3,kaylin,gfccgjhn,132333,aishiteru,pangaea,fathead1,smurph,198701,ryslan,gasto,xexeylhf,anisimov,chevyss,saskatoo,brandy12,tweaker,irish123,music2,denny1,palpatin,outlaw1,lovesuck,woman1,mrpibb,diadora,hfnfneq,poulette,harlock,mclaren1,cooper12,newpass3,bobby12,rfgecnfcerf,alskdjfh,mini14,dukers,raffael,199103,cleo123,1234567qwertyu,mossberg,scoopy,dctulf,starline,hjvjxrf,misfits1,rangers2,bilbos,blackhea,pappnase,atwork,purple2,daywalker,summoner,1jjjjjjj,swansong,chris10,laluna,12345qqq,charly1,lionsden,money99,silver33,hoghead,bdaddy,199430,saisg002,nosaints,tirpitz,1gggggg,jason13,kingss,ernest1,0cdh0v99ue,pkunzip,arowana,spiri,deskjet1,armine,lances,magic2,thetaxi,14159265,cacique,14142135,orange10,richard0,backdraf,255ooo,humtum,kohsamui,c43dae874d,wrestling1,cbhtym,sorento,megha,pepsiman,qweqwe12,bliss7,mario64,korolev,balls123,schlange,gordit,optiquest,fatdick,fish99,richy,nottoday,dianne1,armyof1,1234qwerasdfzxcv,bbonds,aekara,lidiya,baddog1,yellow5,funkie,ryan01,greentree,gcheckout,marshal1,liliput,000000z,rfhbyrf,gtogto43,rumpole,tarado,marcelit,aqwzsxedc,kenshin1,sassydog,system12,belly1,zilla,kissfan,tools1,desember,donsdad,nick11,scorpio6,poopoo1,toto99,steph123,dogfuck,rocket21,thx113,dude12,sanek,sommar,smacky,pimpsta,letmego,k1200rs,lytghjgtnhjdcr,abigale,buddog,deles,baseball9,roofus,carlsbad,hamzah,hereiam,genial,schoolgirlie,yfz450,breads,piesek,washear,chimay,apocalyp,nicole18,gfgf1234,gobulls,dnevnik,wonderwall,beer1234,1moose,beer69,maryann1,adpass,mike34,birdcage,hottuna,gigant,penquin,praveen,donna123,123lol123,thesame,fregat,adidas11,selrahc,pandoras,test3,chasmo,111222333000,pecos,daniel11,ingersol,shana1,mama12345,cessna15,myhero,1simpson,nazarenko,cognit,seattle2,irina1,azfpc310,rfycthdf,hardy1,jazmyn,sl1200,hotlanta,jason22,kumar123,sujatha,fsd9shtyu,highjump,changer,entertai,kolding,mrbig,sayuri,eagle21,qwertzu,jorge1,0101dd,bigdong,ou812a,sinatra1,htcnjhfy,oleg123,videoman,pbyfblf,tv612se,bigbird1,kenaidog,gunite,silverma,ardmore,123123qq,hotbot,cascada,cbr600f4,harakiri,chico123,boscos,aaron12,glasgow1,kmn5hc,lanfear,1light,liveoak,fizika,ybrjkftdyf,surfside,intermilan,multipas,redcard,72chevy,balata,coolio1,schroede,kanat,testerer,camion,kierra,hejmeddig,antonio2,tornados,isidor,pinkey,n8skfswa,ginny1,houndog,1bill,chris25,hastur,1marine,greatdan,french1,hatman,123qqq,z1z2z3z4,kicker1,katiedog,usopen,smith22,mrmagoo,1234512i,assa123,7seven7,monster7,june12,bpvtyf,149521,guenter,alex1985,voronina,mbkugegs,zaqwsxcderfv,rusty5,mystic1,master0,abcdef12,jndfkb,r4zpm3,cheesey,skripka,blackwhite,sharon69,dro8smwq,lektor,techman,boognish,deidara,heckfyf,quietkey,authcode,monkey4,jayboy,pinkerto,merengue,chulita,bushwick,turambar,kittykit,joseph2,dad123,kristo,pepote,scheiss,hambone1,bigballa,restaura,tequil,111luzer,euro2000,motox,denhaag,chelsi,flaco1,preeti,lillo,1001sin,passw,august24,beatoff,555555d,willis1,kissthis,qwertyz,rvgmw2gl,iloveboobies,timati,kimbo,msinfo,dewdrop,sdbaker,fcc5nky2,messiah1,catboy,small1,chode,beastie1,star77,hvidovre,short1,xavie,dagobah,alex1987,papageno,dakota2,toonami,fuerte,jesus33,lawina,souppp,dirtybir,chrish,naturist,channel1,peyote,flibble,gutentag,lactate,killem,zucchero,robinho,ditka,grumpy1,avr7000,boxxer,topcop,berry1,mypass1,beverly1,deuce1,9638527410,cthuttdf,kzkmrf,lovethem,band1t,cantona1,purple11,apples123,wonderwo,123a456,fuzzie,lucky99,dancer2,hoddling,rockcity,winner12,spooty,mansfiel,aimee1,287hf71h,rudiger,culebra,god123,agent86,daniel0,bunky1,notmine,9ball,goofus,puffy1,xyh28af4,kulikov,bankshot,vurdf5i2,kevinm,ercole,sexygirls,razvan,october7,goater,lollie,raissa,thefrog,mdmaiwa3,mascha,jesussaves,union1,anthony9,crossroa,brother2,areyuke,rodman91,toonsex,dopeman,gericom,vaz2115,cockgobbler,12356789,12345699,signatur,alexandra1,coolwhip,erwin1,awdrgyjilp,pens66,ghjrjgtyrj,linkinpark,emergenc,psych0,blood666,bootmort,wetworks,piroca,johnd,iamthe1,supermario,homer69,flameon,image1,bebert,fylhtq1,annapoli,apple11,hockey22,10048,indahouse,mykiss,1penguin,markp,misha123,foghat,march11,hank1,santorin,defcon4,tampico,vbnhjafy,robert22,bunkie,athlon64,sex777,nextdoor,koskesh,lolnoob,seemnemaailm,black23,march15,yeehaa,chiqui,teagan,siegheil,monday2,cornhusk,mamusia,chilis,sthgrtst,feldspar,scottm,pugdog,rfghjy,micmac,gtnhjdyf,terminato,1jackson,kakosja,bogomol,123321aa,rkbvtyrj,tresor,tigertig,fuckitall,vbkkbjy,caramon,zxc12,balin,dildo1,soccer09,avata,abby123,cheetah1,marquise,jennyc,hondavfr,tinti,anna1985,dennis2,jorel,mayflowe,icema,hal2000,nikkis,bigmouth,greenery,nurjan,leonov,liberty7,fafnir,larionov,sat321321,byteme1,nausicaa,hjvfynbrf,everto,zebra123,sergio1,titone,wisdom1,kahala,104328q,marcin1,salima,pcitra,1nnnnn,nalini,galvesto,neeraj,rick1,squeeky,agnes1,jitterbu,agshar,maria12,0112358,traxxas,stivone,prophet1,bananza,sommer1,canoneos,hotfun,redsox11,1bigmac,dctdjkjl,legion1,everclea,valenok,black9,danny001,roxie1,1theman,mudslide,july16,lechef,chula,glamis,emilka,canbeef,ioanna,cactus1,rockshox,im2cool,ninja9,thvfrjdf,june28,milo17,missyou,micky1,nbibyf,nokiaa,goldi,mattias,fuckthem,asdzxc123,ironfist,junior01,nesta,crazzy,killswit,hygge,zantac,kazama,melvin1,allston,maandag,hiccup,prototyp,specboot,dwl610,hello6,159456,baldhead,redwhite,calpoly,whitetail,agile1,cousteau,matt01,aust1n,malcolmx,gjlfhjr,semperf1,ferarri,a1b2c3d,vangelis,mkvdari,bettis36,andzia,comand,tazzman,morgaine,pepluv,anna1990,inandout,anetka,anna1997,wallpape,moonrake,huntress,hogtie,cameron7,sammy7,singe11,clownboy,newzeala,wilmar,safrane,rebeld,poopi,granat,hammertime,nermin,11251422,xyzzy1,bogeys,jkmxbr,fktrcfyl,11223311,nfyrbcn,11223300,powerpla,zoedog,ybrbnbyf,zaphod42,tarawa,jxfhjdfirf,dude1234,g5wks9,goobe,czekolada,blackros,amaranth,medical1,thereds,julija,nhecsyfujkjdt,promopas,buddy4,marmalad,weihnachten,tronic,letici,passthief,67mustan,ds7zamnw,morri,w8woord,cheops,pinarell,sonofsam,av473dv,sf161pn,5c92v5h6,purple13,tango123,plant1,1baby,xufrgemw,fitta,1rangers,spawns,kenned,taratata,19944991,11111118,coronas,4ebouux8,roadrash,corvette1,dfyjdf846,marley12,qwaszxerdfcv,68stang,67stang,racin,ellehcim,sofiko,nicetry,seabass1,jazzman1,zaqwsx1,laz2937,uuuuuuu1,vlad123,rafale,j1234567,223366,nnnnnn1,226622,junkfood,asilas,cer980,daddymac,persepho,neelam,00700,shithappens,255555,qwertyy,xbox36,19755791,qweasd1,bearcub,jerryb,a1b1c1,polkaudio,basketball1,456rty,1loveyou,marcus2,mama1961,palace1,transcend,shuriken,sudhakar,teenlove,anabelle,matrix99,pogoda,notme,bartend,jordana,nihaoma,ataris,littlegi,ferraris,redarmy,giallo,fastdraw,accountbloc,peludo,pornostar,pinoyako,cindee,glassjaw,dameon,johnnyd,finnland,saudade,losbravo,slonko,toplay,smalltit,nicksfun,stockhol,penpal,caraj,divedeep,cannibus,poppydog,pass88,viktory,walhalla,arisia,lucozade,goldenbo,tigers11,caball,ownage123,tonna,handy1,johny,capital5,faith2,stillher,brandan,pooky1,antananarivu,hotdick,1justin,lacrimos,goathead,bobrik,cgtwbfkbcn,maywood,kamilek,gbplf123,gulnar,beanhead,vfvjyn,shash,viper69,ttttttt1,hondacr,kanako,muffer,dukies,justin123,agapov58,mushka,bad11bad,muleman,jojo123,andreika,makeit,vanill,boomers,bigals,merlin11,quacker,aurelien,spartak1922,ligeti,diana2,lawnmowe,fortune1,awesom,rockyy,anna1994,oinker,love88,eastbay,ab55484,poker0,ozzy666,papasmurf,antihero,photogra,ktm250,painkill,jegr2d2,p3orion,canman,dextur,qwest123,samboy,yomismo,sierra01,herber,vfrcbvvfrcbv,gloria1,llama1,pie123,bobbyjoe,buzzkill,skidrow,grabber,phili,javier1,9379992q,geroin,oleg1994,sovereig,rollover,zaq12qaz,battery1,killer13,alina123,groucho1,mario12,peter22,butterbean,elise1,lucycat,neo123,ferdi,golfer01,randie,gfhfyjbr,ventura1,chelsea3,pinoy,mtgox,yrrim7,shoeman,mirko,ffggyyo,65mustan,ufdibyjd,john55,suckfuck,greatgoo,fvfnjhb,mmmnnn,love20,1bullshi,sucesso,easy1234,robin123,rockets1,diamondb,wolfee,nothing0,joker777,glasnost,richar1,guille,sayan,koresh,goshawk,alexx,batman21,a123456b,hball,243122,rockandr,coolfool,isaia,mary1,yjdbrjdf,lolopc,cleocat,cimbo,lovehina,8vfhnf,passking,bonapart,diamond2,bigboys,kreator,ctvtyjdf,sassy123,shellac,table54781,nedkelly,philbert,sux2bu,nomis,sparky99,python1,littlebear,numpty,silmaril,sweeet,jamesw,cbufhtnf,peggysue,wodahs,luvsex,wizardry,venom123,love4you,bama1,samat,reviewpass,ned467,cjkjdtq,mamula,gijoe,amersham,devochka,redhill,gisel,preggo,polock,cando,rewster,greenlantern,panasonik,dave1234,mikeee,1carlos,miledi,darkness1,p0o9i8u7y6,kathryn1,happyguy,dcp500,assmaster,sambuka,sailormo,antonio3,logans,18254288,nokiax2,qwertzuiop,zavilov,totti,xenon1,edward11,targa1,something1,tony_t,q1w2e3r4t5y6u7i8o9p0,02551670,vladimir1,monkeybutt,greenda,neel21,craiger,saveliy,dei008,honda450,fylhtq95,spike2,fjnq8915,passwordstandard,vova12345,talonesi,richi,gigemags,pierre1,westin,trevoga,dorothee,bastogne,25563o,brandon3,truegrit,krimml,iamgreat,servis,a112233,paulinka,azimuth,corperfmonsy,358hkyp,homerun1,dogbert1,eatmyass,cottage1,savina,baseball7,bigtex,gimmesum,asdcxz,lennon1,a159357,1bastard,413276191q,pngfilt,pchealth,netsnip,bodiroga,1matt,webtvs,ravers,adapters,siddis,mashamasha,coffee2,myhoney,anna1982,marcia1,fairchil,maniek,iloveluc,batmonh,wildon,bowie1,netnwlnk,fancy1,tom204,olga1976,vfif123,queens1,ajax01,lovess,mockba,icam4usb,triada,odinthor,rstlne,exciter,sundog,anchorat,girls69,nfnmzyrf,soloma,gti16v,shadowman,ottom,rataros,tonchin,vishal,chicken0,pornlo,christiaan,volante,likesit,mariupol,runfast,gbpltw123,missys,villevalo,kbpjxrf,ghibli,calla,cessna172,kinglear,dell11,swift1,walera,1cricket,pussy5,turbo911,tucke,maprchem56458,rosehill,thekiwi1,ygfxbkgt,mandarinka,98xa29,magnit,cjfrf,paswoord,grandam1,shenmue,leedsuni,hatrick,zagadka,angeldog,michaell,dance123,koichi,bballs,29palms,xanth,228822,ppppppp1,1kkkkk,1lllll,mynewbots,spurss,madmax1,224455,city1,mmmmmmm1,nnnnnnn1,biedronka,thebeatles,elessar,f14tomcat,jordan18,bobo123,ayi000,tedbear,86chevyx,user123,bobolink,maktub,elmer1,flyfishi,franco1,gandalf0,traxdata,david21,enlighte,dmitrij,beckys,1giants,flippe,12345678w,jossie,rugbyman,snowcat,rapeme,peanut11,gemeni,udders,techn9ne,armani1,chappie,war123,vakantie,maddawg,sewanee,jake5253,tautt1,anthony5,letterma,jimbo2,kmdtyjr,hextall,jessica6,amiga500,hotcunt,phoenix9,veronda,saqartvelo,scubas,sixer3,williamj,nightfal,shihan,melnikova,kosssss,handily,killer77,jhrl0821,march17,rushman,6gcf636i,metoyou,irina123,mine11,primus1,formatters,matthew5,infotech,gangster1,jordan45,moose69,kompas,motoxxx,greatwhi,cobra12,kirpich,weezer1,hello23,montse,tracy123,connecte,cjymrf,hemingwa,azreal,gundam00,mobila,boxman,slayers1,ravshan,june26,fktrcfylhjd,bermuda1,tylerd,maersk,qazwsx11,eybdthcbntn,ash123,camelo,kat123,backd00r,cheyenne1,1king,jerkin,tnt123,trabant,warhammer40k,rambos,punto,home77,pedrito,1frank,brille,guitarman,george13,rakas,tgbxtcrbq,flute1,bananas1,lovezp1314,thespot,postie,buster69,sexytime,twistys,zacharia,sportage,toccata,denver7,terry123,bogdanova,devil69,higgins1,whatluck,pele10,kkk666,jeffery1,1qayxsw2,riptide1,chevy11,munchy,lazer1,hooker1,ghfgjh,vergesse,playgrou,4077mash,gusev,humpin,oneputt,hydepark,monster9,tiger8,tangsoo,guy123,hesoyam1,uhtqneyu,thanku,lomond,ortezza,kronik,geetha,rabbit66,killas,qazxswe,alabaste,1234567890qwerty,capone1,andrea12,geral,beatbox,slutfuck,booyaka,jasmine7,ostsee,maestro1,beatme,tracey1,buster123,donaldduck,ironfish,happy6,konnichi,gintonic,momoney1,dugan1,today2,enkidu,destiny2,trim7gun,katuha,fractals,morganstanley,polkadot,gotime,prince11,204060,fifa2010,bobbyt,seemee,amanda10,airbrush,bigtitty,heidie,layla1,cotton1,5speed,fyfnjkmtdyf,flynavy,joxury8f,meeko,akuma,dudley1,flyboy1,moondog1,trotters,mariami,signin,chinna,legs11,pussy4,1s1h1e1f1,felici,optimus1,iluvu,marlins1,gavaec,balance1,glock40,london01,kokot,southwes,comfort1,sammy11,rockbottom,brianc,litebeer,homero,chopsuey,greenlan,charit,freecell,hampster,smalldog,viper12,blofeld,1234567890987654321,realsex,romann,cartman2,cjdthitycndj,nelly1,bmw528,zwezda,masterba,jeep99,turtl,america2,sunburst,sanyco,auntjudy,125wm,blue10,qwsazx,cartma,toby12,robbob,red222,ilovecock,losfix16,1explore,helge,vaz2114,whynotme,baba123,mugen,1qazwsxedc,albertjr,0101198,sextime,supras,nicolas2,wantsex,pussy6,checkm8,winam,24gordon,misterme,curlew,gbljhfcs,medtech,franzi,butthea,voivod,blackhat,egoiste,pjkeirf,maddog69,pakalolo,hockey4,igor1234,rouges,snowhite,homefree,sexfreak,acer12,dsmith,blessyou,199410,vfrcbvjd,falco02,belinda1,yaglasph,april21,groundho,jasmin1,nevergiveup,elvir,gborv526,c00kie,emma01,awesome2,larina,mike12345,maximu,anupam,bltynbabrfwbz,tanushka,sukkel,raptor22,josh12,schalke04,cosmodog,fuckyou8,busybee,198800,bijoux,frame1,blackmor,giveit,issmall,bear13,123-123,bladez,littlegirl,ultra123,fletch1,flashnet,loploprock,rkelly,12step,lukas1,littlewhore,cuntfinger,stinkyfinger,laurenc,198020,n7td4bjl,jackie69,camel123,ben1234,1gateway,adelheid,fatmike,thuglove,zzaaqq,chivas1,4815162342q,mamadou,nadano,james22,benwin,andrea99,rjirf,michou,abkbgg,d50gnn,aaazzz,a123654,blankman,booboo11,medicus,bigbone,197200,justine1,bendix,morphius,njhvjp,44mag,zsecyus56,goodbye1,nokiadermo,a333444,waratsea,4rzp8ab7,fevral,brillian,kirbys,minim,erathia,grazia,zxcvb1234,dukey,snaggle,poppi,hymen,1video,dune2000,jpthjdf,cvbn123,zcxfcnkbdfz,astonv,ginnie,316271,engine3,pr1ncess,64chevy,glass1,laotzu,hollyy,comicbooks,assasins,nuaddn9561,scottsda,hfcnfvfy,accobra,7777777z,werty123,metalhead,romanson,redsand,365214,shalo,arsenii,1989cc,sissi,duramax,382563,petera,414243,mamapap,jollymon,field1,fatgirl,janets,trompete,matchbox20,rambo2,nepenthe,441232,qwertyuiop10,bozo123,phezc419hv,romantika,lifestyl,pengui,decembre,demon6,panther6,444888,scanman,ghjcnjabkz,pachanga,buzzword,indianer,spiderman3,tony12,startre,frog1,fyutk,483422,tupacshakur,albert12,1drummer,bmw328i,green17,aerdna,invisibl,summer13,calimer,mustaine,lgnu9d,morefun,hesoyam123,escort1,scrapland,stargat,barabbas,dead13,545645,mexicali,sierr,gfhfpbn,gonchar,moonstafa,searock,counte,foster1,jayhawk1,floren,maremma,nastya2010,softball1,adaptec,halloo,barrabas,zxcasd123,hunny,mariana1,kafedra,freedom0,green420,vlad1234,method7,665566,tooting,hallo12,davinchi,conducto,medias,666444,invernes,madhatter,456asd,12345678i,687887,le33px,spring00,help123,bellybut,billy5,vitalik1,river123,gorila,bendis,power666,747200,footslav,acehigh,qazxswedc123,q1a1z1,richard9,peterburg,tabletop,gavrilov,123qwe1,kolosov,fredrau,run4fun,789056,jkbvgbflf,chitra,87654321q,steve22,wideopen,access88,surfe,tdfyutkbjy,impossib,kevin69,880888,cantina,887766,wxcvb,dontforg,qwer1209,asslicke,mamma123,indig,arkasha,scrapp,morelia,vehxbr,jones2,scratch1,cody11,cassie12,gerbera,dontgotm,underhil,maks2010,hollywood1,hanibal,elena2010,jason11,1010321,stewar,elaman,fireplug,goodby,sacrific,babyphat,bobcat12,bruce123,1233215,tony45,tiburo,love15,bmw750,wallstreet,2h0t4me,1346795,lamerz,munkee,134679q,granvill,1512198,armastus,aiden1,pipeutvj,g1234567,angeleyes,usmc1,102030q,putangina,brandnew,shadowfax,eagles12,1falcon,brianw,lokomoti,2022958,scooper,pegas,jabroni1,2121212,buffal,siffredi,wewiz,twotone,rosebudd,nightwis,carpet1,mickey2,2525252,sleddog,red333,jamesm,2797349,jeff12,onizuka,felixxxx,rf6666,fine1,ohlala,forplay,chicago5,muncho,scooby11,ptichka,johnnn,19851985p,dogphil3650,totenkopf,monitor2,macross7,3816778,dudder,semaj1,bounder,racerx1,5556633,7085506,ofclr278,brody1,7506751,nantucke,hedj2n4q,drew1,aessedai,trekbike,pussykat,samatron,imani,9124852,wiley1,dukenukem,iampurehaha2,9556035,obvious1,mccool24,apache64,kravchenko,justforf,basura,jamese,s0ccer,safado,darksta,surfer69,damian1,gjpbnbd,gunny1,wolley,sananton,zxcvbn123456,odt4p6sv8,sergei1,modem1,mansikka,zzzz1,rifraf,dima777,mary69,looking4,donttell,red100,ninjutsu,uaeuaeman,bigbri,brasco,queenas8151,demetri,angel007,bubbl,kolort,conny,antonia1,avtoritet,kaka22,kailayu,sassy2,wrongway,chevy3,1nascar,patriots1,chrisrey,mike99,sexy22,chkdsk,sd3utre7,padawan,a6pihd,doming,mesohorny,tamada,donatello,emma22,eather,susan69,pinky123,stud69,fatbitch,pilsbury,thc420,lovepuss,1creativ,golf1234,hurryup,1honda,huskerdu,marino1,gowron,girl1,fucktoy,gtnhjpfdjlcr,dkjfghdk,pinkfl,loreli,7777777s,donkeykong,rockytop,staples1,sone4ka,xxxjay,flywheel,toppdogg,bigbubba,aaa123456,2letmein,shavkat,paule,dlanor,adamas,0147852,aassaa,dixon1,bmw328,mother12,ilikepussy,holly2,tsmith,excaliber,fhutynbyf,nicole3,tulipan,emanue,flyvholm,currahee,godsgift,antonioj,torito,dinky1,sanna,yfcnzvjz,june14,anime123,123321456654,hanswurst,bandman,hello101,xxxyyy,chevy69,technica,tagada,arnol,v00d00,lilone,filles,drumandbass,dinamit,a1234a,eatmeat,elway07,inout,james6,dawid1,thewolf,diapason,yodaddy,qscwdv,fuckit1,liljoe,sloeber,simbacat,sascha1,qwe1234,1badger,prisca,angel17,gravedig,jakeyboy,longboard,truskawka,golfer11,pyramid7,highspee,pistola,theriver,hammer69,1packers,dannyd,alfonse,qwertgfdsa,11119999,basket1,ghjtrn,saralee,12inches,paolo1,zse4xdr5,taproot,sophieh6,grizzlie,hockey69,danang,biggums,hotbitch,5alive,beloved1,bluewave,dimon95,koketka,multiscan,littleb,leghorn,poker2,delite,skyfir,bigjake,persona1,amberdog,hannah12,derren,ziffle,1sarah,1assword,sparky01,seymur,tomtom1,123321qw,goskins,soccer19,luvbekki,bumhole,2balls,1muffin,borodin,monkey9,yfeiybrb,1alex,betmen,freder,nigger123,azizbek,gjkzrjdf,lilmike,1bigdadd,1rock,taganrog,snappy1,andrey1,kolonka,bunyan,gomango,vivia,clarkkent,satur,gaudeamus,mantaray,1month,whitehea,fargus,andrew99,ray123,redhawks,liza2009,qw12345,den12345,vfhnsyjdf,147258369a,mazepa,newyorke,1arsenal,hondas2000,demona,fordgt,steve12,birthday2,12457896,dickster,edcwsxqaz,sahalin,pantyman,skinny1,hubertus,cumshot1,chiro,kappaman,mark3434,canada12,lichking,bonkers1,ivan1985,sybase,valmet,doors1,deedlit,kyjelly,bdfysx,ford11,throatfuck,backwood,fylhsq,lalit,boss429,kotova,bricky,steveh,joshua19,kissa,imladris,star1234,lubimka,partyman,crazyd,tobias1,ilike69,imhome,whome,fourstar,scanner1,ujhjl312,anatoli,85bears,jimbo69,5678ytr,potapova,nokia7070,sunday1,kalleank,1996gta,refinnej,july1,molodec,nothanks,enigm,12play,sugardog,nhfkbdfkb,larousse,cannon1,144444,qazxcdew,stimorol,jhereg,spawn7,143000,fearme,hambur,merlin21,dobie,is3yeusc,partner1,dekal,varsha,478jfszk,flavi,hippo1,9hmlpyjd,july21,7imjfstw,lexxus,truelov,nokia5200,carlos6,anais,mudbone,anahit,taylorc,tashas,larkspur,animal2000,nibiru,jan123,miyvarxar,deflep,dolore,communit,ifoptfcor,laura2,anadrol,mamaliga,mitzi1,blue92,april15,matveev,kajlas,wowlook1,1flowers,shadow14,alucard1,1golf,bantha,scotlan,singapur,mark13,manchester1,telus01,superdav,jackoff1,madnes,bullnuts,world123,clitty,palmer1,david10,spider10,sargsyan,rattlers,david4,windows2,sony12,visigoth,qqqaaa,penfloor,cabledog,camilla1,natasha123,eagleman,softcore,bobrov,dietmar,divad,sss123,d1234567,tlbyjhju,1q1q1q1,paraiso,dav123,lfiekmrf,drachen,lzhan16889,tplate,gfghbrf,casio1,123boots1,123test,sys64738,heavymetal,andiamo,meduza,soarer,coco12,negrita,amigas,heavymet,bespin,1asdfghj,wharfrat,wetsex,tight1,janus1,sword123,ladeda,dragon98,austin2,atep1,jungle1,12345abcd,lexus300,pheonix1,alex1974,123qw123,137955,bigtim,shadow88,igor1994,goodjob,arzen,champ123,121ebay,changeme1,brooksie,frogman1,buldozer,morrowin,achim,trish1,lasse,festiva,bubbaman,scottb,kramit,august22,tyson123,passsword,oompah,al123456,fucking1,green45,noodle1,looking1,ashlynn,al1716,stang50,coco11,greese,bob111,brennan1,jasonj,1cherry,1q2345,1xxxxxxx,fifa2011,brondby,zachar1,satyam,easy1,magic7,1rainbow,cheezit,1eeeeeee,ashley123,assass1,amanda123,jerbear,1bbbbbb,azerty12,15975391,654321z,twinturb,onlyone1,denis1988,6846kg3r,jumbos,pennydog,dandelion,haileris,epervier,snoopy69,afrodite,oldpussy,green55,poopypan,verymuch,katyusha,recon7,mine69,tangos,contro,blowme2,jade1,skydive1,fiveiron,dimo4ka,bokser,stargirl,fordfocus,tigers2,platina,baseball11,raque,pimper,jawbreak,buster88,walter34,chucko,penchair,horizon1,thecure1,scc1975,adrianna1,kareta,duke12,krille,dumbfuck,cunt1,aldebaran,laverda,harumi,knopfler,pongo1,pfhbyf,dogman1,rossigno,1hardon,scarlets,nuggets1,ibelieve,akinfeev,xfhkbr,athene,falcon69,happie,billly,nitsua,fiocco,qwerty09,gizmo2,slava2,125690,doggy123,craigs,vader123,silkeborg,124365,peterm,123978,krakatoa,123699,123592,kgvebmqy,pensacol,d1d2d3,snowstor,goldenboy,gfg65h7,ev700,church1,orange11,g0dz1ll4,chester3,acheron,cynthi,hotshot1,jesuschris,motdepass,zymurgy,one2one,fietsbel,harryp,wisper,pookster,nn527hp,dolla,milkmaid,rustyboy,terrell1,epsilon1,lillian1,dale3,crhbgrf,maxsim,selecta,mamada,fatman1,ufkjxrf,shinchan,fuckuall,women1,000008,bossss,greta1,rbhjxrf,mamasboy,purple69,felicidade,sexy21,cathay,hunglow,splatt,kahless,shopping1,1gandalf,themis,delta7,moon69,blue24,parliame,mamma1,miyuki,2500hd,jackmeof,razer,rocker1,juvis123,noremac,boing747,9z5ve9rrcz,icewater,titania,alley1,moparman,christo1,oliver2,vinicius,tigerfan,chevyy,joshua99,doda99,matrixx,ekbnrf,jackfrost,viper01,kasia,cnfhsq,triton1,ssbt8ae2,rugby8,ramman,1lucky,barabash,ghtlfntkm,junaid,apeshit,enfant,kenpo1,shit12,007000,marge1,shadow10,qwerty789,richard8,vbitkm,lostboys,jesus4me,richard4,hifive,kolawole,damilola,prisma,paranoya,prince2,lisaann,happyness,cardss,methodma,supercop,a8kd47v5,gamgee,polly123,irene1,number8,hoyasaxa,1digital,matthew0,dclxvi,lisica,roy123,2468013579,sparda,queball,vaffanculo,pass1wor,repmvbx,999666333,freedom8,botanik,777555333,marcos1,lubimaya,flash2,einstei,08080,123456789j,159951159,159357123,carrot1,alina1995,sanjos,dilara,mustang67,wisteria,jhnjgtl12,98766789,darksun,arxangel,87062134,creativ1,malyshka,fuckthemall,barsic,rocksta,2big4u,5nizza,genesis2,romance1,ofcourse,1horse,latenite,cubana,sactown,789456123a,milliona,61808861,57699434,imperia,bubba11,yellow3,change12,55495746,flappy,jimbo123,19372846,19380018,cutlass1,craig123,klepto,beagle1,solus,51502112,pasha1,19822891,46466452,19855891,petshop,nikolaevna,119966,nokia6131,evenpar,hoosier1,contrasena,jawa350,gonzo123,mouse2,115511,eetfuk,gfhfvgfvgfv,1crystal,sofaking,coyote1,kwiatuszek,fhrflbq,valeria1,anthro,0123654789,alltheway,zoltar,maasikas,wildchil,fredonia,earlgrey,gtnhjczy,matrix123,solid1,slavko,12monkeys,fjdksl,inter1,nokia6500,59382113kevinp,spuddy,cachero,coorslit,password!,kiba1z,karizma,vova1994,chicony,english1,bondra12,1rocket,hunden,jimbob1,zpflhjn1,th0mas,deuce22,meatwad,fatfree,congas,sambora,cooper2,janne,clancy1,stonie,busta,kamaz,speedy2,jasmine3,fahayek,arsenal0,beerss,trixie1,boobs69,luansantana,toadman,control2,ewing33,maxcat,mama1964,diamond4,tabaco,joshua0,piper2,music101,guybrush,reynald,pincher,katiebug,starrs,pimphard,frontosa,alex97,cootie,clockwor,belluno,skyeseth,booty69,chaparra,boochie,green4,bobcat1,havok,saraann,pipeman,aekdb,jumpshot,wintermu,chaika,1chester,rjnjatq,emokid,reset1,regal1,j0shua,134679a,asmodey,sarahh,zapidoo,ciccione,sosexy,beckham23,hornets1,alex1971,delerium,manageme,connor11,1rabbit,sane4ek,caseyboy,cbljhjdf,redsox20,tttttt99,haustool,ander,pantera6,passwd1,journey1,9988776655,blue135,writerspace,xiaoyua123,justice2,niagra,cassis,scorpius,bpgjldsgjldthnf,gamemaster,bloody1,retrac,stabbin,toybox,fight1,ytpyf.,glasha,va2001,taylor11,shameles,ladylove,10078,karmann,rodeos,eintritt,lanesra,tobasco,jnrhjqcz,navyman,pablit,leshka,jessica3,123vika,alena1,platinu,ilford,storm7,undernet,sasha777,1legend,anna2002,kanmax1994,porkpie,thunder0,gundog,pallina,easypass,duck1,supermom,roach1,twincam,14028,tiziano,qwerty32,123654789a,evropa,shampoo1,yfxfkmybr,cubby1,tsunami1,fktrcttdf,yasacrac,17098,happyhap,bullrun,rodder,oaktown,holde,isbest,taylor9,reeper,hammer11,julias,rolltide1,compaq123,fourx4,subzero1,hockey9,7mary3,busines,ybrbnjcbr,wagoneer,danniash,portishead,digitex,alex1981,david11,infidel,1snoopy,free30,jaden,tonto1,redcar27,footie,moskwa,thomas21,hammer12,burzum,cosmo123,50000,burltree,54343,54354,vwpassat,jack5225,cougars1,burlpony,blackhorse,alegna,petert,katemoss,ram123,nels0n,ferrina,angel77,cstock,1christi,dave55,abc123a,alex1975,av626ss,flipoff,folgore,max1998,science1,si711ne,yams7,wifey1,sveiks,cabin1,volodia,ox3ford,cartagen,platini,picture1,sparkle1,tiedomi,service321,wooody,christi1,gnasher,brunob,hammie,iraffert,bot2010,dtcyeirf,1234567890p,cooper11,alcoholi,savchenko,adam01,chelsea5,niewiem,icebear,lllooottt,ilovedick,sweetpus,money8,cookie13,rfnthbyf1988,booboo2,angus123,blockbus,david9,chica1,nazaret,samsung9,smile4u,daystar,skinnass,john10,thegirl,sexybeas,wasdwasd1,sigge1,1qa2ws3ed4rf5tg,czarny,ripley1,chris5,ashley19,anitha,pokerman,prevert,trfnthby,tony69,georgia2,stoppedb,qwertyuiop12345,miniclip,franky1,durdom,cabbages,1234567890o,delta5,liudmila,nhfycajhvths,court1,josiew,abcd1,doghead,diman,masiania,songline,boogle,triston,deepika,sexy4me,grapple,spacebal,ebonee,winter0,smokewee,nargiza,dragonla,sassys,andy2000,menards,yoshio,massive1,suckmy1k,passat99,sexybo,nastya1996,isdead,stratcat,hokuto,infix,pidoras,daffyduck,cumhard,baldeagl,kerberos,yardman,shibainu,guitare,cqub6553,tommyy,bk.irf,bigfoo,hecto,july27,james4,biggus,esbjerg,isgod,1irish,phenmarr,jamaic,roma1990,diamond0,yjdbrjd,girls4me,tampa1,kabuto,vaduz,hanse,spieng,dianochka,csm101,lorna1,ogoshi,plhy6hql,2wsx4rfv,cameron0,adebayo,oleg1996,sharipov,bouboule,hollister1,frogss,yeababy,kablam,adelante,memem,howies,thering,cecilia1,onetwo12,ojp123456,jordan9,msorcloledbr,neveraga,evh5150,redwin,1august,canno,1mercede,moody1,mudbug,chessmas,tiikeri,stickdaddy77,alex15,kvartira,7654321a,lollol123,qwaszxedc,algore,solana,vfhbyfvfhbyf,blue72,misha1111,smoke20,junior13,mogli,threee,shannon2,fuckmylife,kevinh,saransk,karenw,isolde,sekirarr,orion123,thomas0,debra1,laketaho,alondra,curiva,jazz1234,1tigers,jambos,lickme2,suomi,gandalf7,028526,zygote,brett123,br1ttany,supafly,159000,kingrat,luton1,cool-ca,bocman,thomasd,skiller,katter,mama777,chanc,tomass,1rachel,oldno7,rfpfyjdf,bigkev,yelrah,primas,osito,kipper1,msvcr71,bigboy11,thesun,noskcaj,chicc,sonja1,lozinka,mobile1,1vader,ummagumma,waves1,punter12,tubgtn,server1,irina1991,magic69,dak001,pandemonium,dead1,berlingo,cherrypi,1montana,lohotron,chicklet,asdfgh123456,stepside,ikmvw103,icebaby,trillium,1sucks,ukrnet,glock9,ab12345,thepower,robert8,thugstools,hockey13,buffon,livefree,sexpics,dessar,ja0000,rosenrot,james10,1fish,svoloch,mykitty,muffin11,evbukb,shwing,artem1992,andrey1992,sheldon1,passpage,nikita99,fubar123,vannasx,eight888,marial,max2010,express2,violentj,2ykn5ccf,spartan11,brenda69,jackiech,abagail,robin2,grass1,andy76,bell1,taison,superme,vika1995,xtr451,fred20,89032073168,denis1984,2000jeep,weetabix,199020,daxter,tevion,panther8,h9iymxmc,bigrig,kalambur,tsalagi,12213443,racecar02,jeffrey4,nataxa,bigsam,purgator,acuracl,troutbum,potsmoke,jimmyz,manutd1,nytimes,pureevil,bearss,cool22,dragonage,nodnarb,dbrbyu,4seasons,freude,elric1,werule,hockey14,12758698,corkie,yeahright,blademan,tafkap,clave,liziko,hofner,jeffhardy,nurich,runne,stanisla,lucy1,monk3y,forzaroma,eric99,bonaire,blackwoo,fengshui,1qaz0okm,newmoney,pimpin69,07078,anonymer,laptop1,cherry12,ace111,salsa1,wilbur1,doom12,diablo23,jgtxzbhr,under1,honda01,breadfan,megan2,juancarlos,stratus1,ackbar,love5683,happytim,lambert1,cbljhtyrj,komarov,spam69,nfhtkrf,brownn,sarmat,ifiksr,spike69,hoangen,angelz,economia,tanzen,avogadro,1vampire,spanners,mazdarx,queequeg,oriana,hershil,sulaco,joseph11,8seconds,aquariu,cumberla,heather9,anthony8,burton12,crystal0,maria3,qazwsxc,snow123,notgood,198520,raindog,heehaw,consulta,dasein,miller01,cthulhu1,dukenuke,iubire,baytown,hatebree,198505,sistem,lena12,welcome01,maraca,middleto,sindhu,mitsou,phoenix5,vovan,donaldo,dylandog,domovoy,lauren12,byrjuybnj,123llll,stillers,sanchin,tulpan,smallvill,1mmmmm,patti1,folgers,mike31,colts18,123456rrr,njkmrjz,phoenix0,biene,ironcity,kasperok,password22,fitnes,matthew6,spotligh,bujhm123,tommycat,hazel5,guitar11,145678,vfcmrf,compass1,willee,1barney,jack2000,littleminge,shemp,derrek,xxx12345,littlefuck,spuds1,karolinka,camneely,qwertyu123,142500,brandon00,munson15,falcon3,passssap,z3cn2erv,goahead,baggio10,141592,denali1,37kazoo,copernic,123456789asd,orange88,bravada,rush211,197700,pablo123,uptheass,samsam1,demoman,mattylad10,heydude,mister2,werken,13467985,marantz,a22222,f1f2f3f4,fm12mn12,gerasimova,burrito1,sony1,glenny,baldeagle,rmfidd,fenomen,verbati,forgetme,5element,wer138,chanel1,ooicu812,10293847qp,minicooper,chispa,myturn,deisel,vthrehbq,boredboi4u,filatova,anabe,poiuyt1,barmalei,yyyy1,fourkids,naumenko,bangbros,pornclub,okaykk,euclid90,warrior3,kornet,palevo,patatina,gocart,antanta,jed1054,clock1,111111w,dewars,mankind1,peugeot406,liten,tahira,howlin,naumov,rmracing,corone,cunthole,passit,rock69,jaguarxj,bumsen,197101,sweet2,197010,whitecat,sawadee,money100,yfhrjnbrb,andyboy,9085603566,trace1,fagget,robot1,angel20,6yhn7ujm,specialinsta,kareena,newblood,chingada,boobies2,bugger1,squad51,133andre,call06,ashes1,ilovelucy,success2,kotton,cavalla,philou,deebee,theband,nine09,artefact,196100,kkkkkkk1,nikolay9,onelov,basia,emilyann,sadman,fkrjujkbr,teamomuch,david777,padrino,money21,firdaus,orion3,chevy01,albatro,erdfcv,2legit,sarah7,torock,kevinn,holio,soloy,enron714,starfleet,qwer11,neverman,doctorwh,lucy11,dino12,trinity7,seatleon,o123456,pimpman,1asdfgh,snakebit,chancho,prorok,bleacher,ramire,darkseed,warhorse,michael123,1spanky,1hotdog,34erdfcv,n0th1ng,dimanche,repmvbyf,michaeljackson,login1,icequeen,toshiro,sperme,racer2,veget,birthday26,daniel9,lbvekmrf,charlus,bryan123,wspanic,schreibe,1andonly,dgoins,kewell,apollo12,egypt1,fernie,tiger21,aa123456789,blowj,spandau,bisquit,12345678d,deadmau5,fredie,311420,happyface,samant,gruppa,filmstar,andrew17,bakesale,sexy01,justlook,cbarkley,paul11,bloodred,rideme,birdbath,nfkbcvfy,jaxson,sirius1,kristof,virgos,nimrod1,hardc0re,killerbee,1abcdef,pitcher1,justonce,vlada,dakota99,vespucci,wpass,outside1,puertori,rfvbkf,teamlosi,vgfun2,porol777,empire11,20091989q,jasong,webuivalidat,escrima,lakers08,trigger2,addpass,342500,mongini,dfhtybr,horndogg,palermo1,136900,babyblu,alla98,dasha2010,jkelly,kernow,yfnecz,rockhopper,toeman,tlaloc,silver77,dave01,kevinr,1234567887654321,135642,me2you,8096468644q,remmus,spider7,jamesa,jilly,samba1,drongo,770129ji,supercat,juntas,tema1234,esthe,1234567892000,drew11,qazqaz123,beegees,blome,rattrace,howhigh,tallboy,rufus2,sunny2,sou812,miller12,indiana7,irnbru,patch123,letmeon,welcome5,nabisco,9hotpoin,hpvteb,lovinit,stormin,assmonke,trill,atlanti,money1234,cubsfan,mello1,stars2,ueptkm,agate,dannym88,lover123,wordz,worldnet,julemand,chaser1,s12345678,pissword,cinemax,woodchuc,point1,hotchkis,packers2,bananana,kalender,420666,penguin8,awo8rx3wa8t,hoppie,metlife,ilovemyfamily,weihnachtsbau,pudding1,luckystr,scully1,fatboy1,amizade,dedham,jahbless,blaat,surrende,****er,1panties,bigasses,ghjuhfvbcn,asshole123,dfktyrb,likeme,nickers,plastik,hektor,deeman,muchacha,cerebro,santana5,testdrive,dracula1,canalc,l1750sq,savannah1,murena,1inside,pokemon00,1iiiiiii,jordan20,sexual1,mailliw,calipso,014702580369,1zzzzzz,1jjjjjj,break1,15253545,yomama1,katinka,kevin11,1ffffff,martijn,sslazio,daniel5,porno2,nosmas,leolion,jscript,15975312,pundai,kelli1,kkkddd,obafgkm,marmaris,lilmama,london123,rfhfnt,elgordo,talk87,daniel7,thesims3,444111,bishkek,afrika2002,toby22,1speedy,daishi,2children,afroman,qqqqwwww,oldskool,hawai,v55555,syndicat,pukimak,fanatik,tiger5,parker01,bri5kev6,timexx,wartburg,love55,ecosse,yelena03,madinina,highway1,uhfdbwfgf,karuna,buhjvfybz,wallie,46and2,khalif,europ,qaz123wsx456,bobbybob,wolfone,falloutboy,manning18,scuba10,schnuff,ihateyou1,lindam,sara123,popcor,fallengun,divine1,montblanc,qwerty8,rooney10,roadrage,bertie1,latinus,lexusis,rhfvfnjhcr,opelgt,hitme,agatka,1yamaha,dmfxhkju,imaloser,michell1,sb211st,silver22,lockedup,andrew9,monica01,sassycat,dsobwick,tinroof,ctrhtnyj,bultaco,rhfcyjzhcr,aaaassss,14ss88,joanne1,momanddad,ahjkjdf,yelhsa,zipdrive,telescop,500600,1sexsex,facial1,motaro,511647,stoner1,temujin,elephant1,greatman,honey69,kociak,ukqmwhj6,altezza,cumquat,zippos,kontiki,123max,altec1,bibigon,tontos,qazsew,nopasaran,militar,supratt,oglala,kobayash,agathe,yawetag,dogs1,cfiekmrf,megan123,jamesdea,porosenok,tiger23,berger1,hello11,seemann,stunner1,walker2,imissu,jabari,minfd,lollol12,hjvfy,1-oct,stjohns,2278124q,123456789qwer,alex1983,glowworm,chicho,mallards,bluedevil,explorer1,543211,casita,1time,lachesis,alex1982,airborn1,dubesor,changa,lizzie1,captaink,socool,bidule,march23,1861brr,k.ljxrf,watchout,fotze,1brian,keksa2,aaaa1122,matrim,providian,privado,dreame,merry1,aregdone,davidt,nounour,twenty2,play2win,artcast2,zontik,552255,shit1,sluggy,552861,dr8350,brooze,alpha69,thunder6,kamelia2011,caleb123,mmxxmm,jamesh,lfybkjd,125267,125000,124536,bliss1,dddsss,indonesi,bob69,123888,tgkbxfgy,gerar,themack,hijodeputa,good4now,ddd123,clk430,kalash,tolkien1,132forever,blackb,whatis,s1s2s3s4,lolkin09,yamahar,48n25rcc,djtiesto,111222333444555,bigbull,blade55,coolbree,kelse,ichwill,yamaha12,sakic,bebeto,katoom,donke,sahar,wahine,645202,god666,berni,starwood,june15,sonoio,time123,llbean,deadsoul,lazarev,cdtnf,ksyusha,madarchod,technik,jamesy,4speed,tenorsax,legshow,yoshi1,chrisbl,44e3ebda,trafalga,heather7,serafima,favorite4,havefun1,wolve,55555r,james13,nosredna,bodean,jlettier,borracho,mickael,marinus,brutu,sweet666,kiborg,rollrock,jackson6,macross1,ousooner,9085084232,takeme,123qwaszx,firedept,vfrfhjd,jackfros,123456789000,briane,cookie11,baby22,bobby18,gromova,systemofadown,martin01,silver01,pimaou,darthmaul,hijinx,commo,chech,skyman,sunse,2vrd6,vladimirovna,uthvfybz,nicole01,kreker,bobo1,v123456789,erxtgb,meetoo,drakcap,vfvf12,misiek1,butane,network2,flyers99,riogrand,jennyk,e12345,spinne,avalon11,lovejone,studen,maint,porsche2,qwerty100,chamberl,bluedog1,sungam,just4u,andrew23,summer22,ludic,musiclover,aguil,beardog1,libertin,pippo1,joselit,patito,bigberth,digler,sydnee,jockstra,poopo,jas4an,nastya123,profil,fuesse,default1,titan2,mendoz,kpcofgs,anamika,brillo021,bomberman,guitar69,latching,69pussy,blues2,phelge,ninja123,m7n56xo,qwertasd,alex1976,cunningh,estrela,gladbach,marillion,mike2000,258046,bypop,muffinman,kd5396b,zeratul,djkxbwf,john77,sigma2,1linda,selur,reppep,quartz1,teen1,freeclus,spook1,kudos4ever,clitring,sexiness,blumpkin,macbook,tileman,centra,escaflowne,pentable,shant,grappa,zverev,1albert,lommerse,coffee11,777123,polkilo,muppet1,alex74,lkjhgfdsazx,olesica,april14,ba25547,souths,jasmi,arashi,smile2,2401pedro,mybabe,alex111,quintain,pimp1,tdeir8b2,makenna,122333444455555,%e2%82%ac,tootsie1,pass111,zaqxsw123,gkfdfybt,cnfnbcnbrf,usermane,iloveyou12,hard69,osasuna,firegod,arvind,babochka,kiss123,cookie123,julie123,kamakazi,dylan2,223355,tanguy,nbhtqa,tigger13,tubby1,makavel,asdflkj,sambo1,mononoke,mickeys,gayguy,win123,green33,wcrfxtvgbjy,bigsmall,1newlife,clove,babyfac,bigwaves,mama1970,shockwav,1friday,bassey,yarddog,codered1,victory7,bigrick,kracker,gulfstre,chris200,sunbanna,bertuzzi,begemotik,kuolema,pondus,destinee,123456789zz,abiodun,flopsy,amadeusptfcor,geronim,yggdrasi,contex,daniel6,suck1,adonis1,moorea,el345612,f22raptor,moviebuf,raunchy,6043dkf,zxcvbnm123456789,eric11,deadmoin,ratiug,nosliw,fannies,danno,888889,blank1,mikey2,gullit,thor99,mamiya,ollieb,thoth,dagger1,websolutionssu,bonker,prive,1346798520,03038,q1234q,mommy2,contax,zhipo,gwendoli,gothic1,1234562000,lovedick,gibso,digital2,space199,b26354,987654123,golive,serious1,pivkoo,better1,824358553,794613258,nata1980,logout,fishpond,buttss,squidly,good4me,redsox19,jhonny,zse45rdx,matrixxx,honey12,ramina,213546879,motzart,fall99,newspape,killit,gimpy,photowiz,olesja,thebus,marco123,147852963,bedbug,147369258,hellbound,gjgjxrf,123987456,lovehurt,five55,hammer01,1234554321a,alina2011,peppino,ang238,questor,112358132,alina1994,alina1998,money77,bobjones,aigerim,cressida,madalena,420smoke,tinchair,raven13,mooser,mauric,lovebu,adidas69,krypton1,1111112,loveline,divin,voshod,michaelm,cocotte,gbkbuhbv,76689295,kellyj,rhonda1,sweetu70,steamforums,geeque,nothere,124c41,quixotic,steam181,1169900,rfcgthcrbq,rfvbkm,sexstuff,1231230,djctvm,rockstar1,fulhamfc,bhecbr,rfntyf,quiksilv,56836803,jedimaster,pangit,gfhjkm777,tocool,1237654,stella12,55378008,19216811,potte,fender12,mortalkombat,ball1,nudegirl,palace22,rattrap,debeers,lickpussy,jimmy6,not4u2c,wert12,bigjuggs,sadomaso,1357924,312mas,laser123,arminia,branford,coastie,mrmojo,19801982,scott11,banaan123,ingres,300zxtt,hooters6,sweeties,19821983,19831985,19833891,sinnfein,welcome4,winner69,killerman,tachyon,tigre1,nymets1,kangol,martinet,sooty1,19921993,789qwe,harsingh,1597535,thecount,phantom3,36985214,lukas123,117711,pakistan1,madmax11,willow01,19932916,fucker12,flhrci,opelagila,theword,ashley24,tigger3,crazyj,rapide,deadfish,allana,31359092,sasha1993,sanders2,discman,zaq!2wsx,boilerma,mickey69,jamesg,babybo,jackson9,orion7,alina2010,indien,breeze1,atease,warspite,bazongaz,1celtic,asguard,mygal,fitzgera,1secret,duke33,cyklone,dipascuc,potapov,1escobar2,c0l0rad0,kki177hk,1little,macondo,victoriya,peter7,red666,winston6,kl?benhavn,muneca,jackme,jennan,happylife,am4h39d8nh,bodybuil,201980,dutchie,biggame,lapo4ka,rauchen,black10,flaquit,water12,31021364,command2,lainth88,mazdamx5,typhon,colin123,rcfhlfc,qwaszx11,g0away,ramir,diesirae,hacked1,cessna1,woodfish,enigma2,pqnr67w5,odgez8j3,grisou,hiheels,5gtgiaxm,2580258,ohotnik,transits,quackers,serjik,makenzie,mdmgatew,bryana,superman12,melly,lokit,thegod,slickone,fun4all,netpass,penhorse,1cooper,nsync,asdasd22,otherside,honeydog,herbie1,chiphi,proghouse,l0nd0n,shagg,select1,frost1996,casper123,countr,magichat,greatzyo,jyothi,3bears,thefly,nikkita,fgjcnjk,nitros,hornys,san123,lightspe,maslova,kimber1,newyork2,spammm,mikejone,pumpk1n,bruiser1,bacons,prelude9,boodie,dragon4,kenneth2,love98,power5,yodude,pumba,thinline,blue30,sexxybj,2dumb2live,matt21,forsale,1carolin,innova,ilikeporn,rbgtkjd,a1s2d3f,wu9942,ruffus,blackboo,qwerty999,draco1,marcelin,hideki,gendalf,trevon,saraha,cartmen,yjhbkmcr,time2go,fanclub,ladder1,chinni,6942987,united99,lindac,quadra,paolit,mainstre,beano002,lincoln7,bellend,anomie,8520456,bangalor,goodstuff,chernov,stepashka,gulla,mike007,frasse,harley03,omnislash,8538622,maryjan,sasha2011,gineok,8807031,hornier,gopinath,princesit,bdr529,godown,bosslady,hakaone,1qwe2,madman1,joshua11,lovegame,bayamon,jedi01,stupid12,sport123,aaa666,tony44,collect1,charliem,chimaira,cx18ka,trrim777,chuckd,thedream,redsox99,goodmorning,delta88,iloveyou11,newlife2,figvam,chicago3,jasonk,12qwer,9875321,lestat1,satcom,conditio,capri50,sayaka,9933162,trunks1,chinga,snooch,alexand1,findus,poekie,cfdbyf,kevind,mike1969,fire13,leftie,bigtuna,chinnu,silence1,celos1,blackdra,alex24,gfgfif,2boobs,happy8,enolagay,sataniv1993,turner1,dylans,peugeo,sasha1994,hoppel,conno,moonshot,santa234,meister1,008800,hanako,tree123,qweras,gfitymrf,reggie31,august29,supert,joshua10,akademia,gbljhfc,zorro123,nathalia,redsox12,hfpdjl,mishmash,nokiae51,nyyankees,tu190022,strongbo,none1,not4u2no,katie2,popart,harlequi,santan,michal1,1therock,screwu,csyekmrf,olemiss1,tyrese,hoople,sunshin1,cucina,starbase,topshelf,fostex,california1,castle1,symantec,pippolo,babare,turntabl,1angela,moo123,ipvteb,gogolf,alex88,cycle1,maxie1,phase2,selhurst,furnitur,samfox,fromvermine,shaq34,gators96,captain2,delonge,tomatoe,bisous,zxcvbnma,glacius,pineapple1,cannelle,ganibal,mko09ijn,paraklast1974,hobbes12,petty43,artema,junior8,mylover,1234567890d,fatal1ty,prostreet,peruan,10020,nadya,caution1,marocas,chanel5,summer08,metal123,111lox,scrapy,thatguy,eddie666,washingto,yannis,minnesota_hp,lucky4,playboy6,naumova,azzurro,patat,dale33,pa55wd,speedster,zemanova,saraht,newto,tony22,qscesz,arkady,1oliver,death6,vkfwx046,antiflag,stangs,jzf7qf2e,brianp,fozzy,cody123,startrek1,yoda123,murciela,trabajo,lvbnhbtdf,canario,fliper,adroit,henry5,goducks,papirus,alskdj,soccer6,88mike,gogetter,tanelorn,donking,marky1,leedsu,badmofo,al1916,wetdog,akmaral,pallet,april24,killer00,nesterova,rugby123,coffee12,browseui,ralliart,paigow,calgary1,armyman,vtldtltd,frodo2,frxtgb,iambigal,benno,jaytee,2hot4you,askar,bigtee,brentwoo,palladin,eddie2,al1916w,horosho,entrada,ilovetits,venture1,dragon19,jayde,chuvak,jamesl,fzr600,brandon8,vjqvbh,snowbal,snatch1,bg6njokf,pudder,karolin,candoo,pfuflrf,satchel1,manteca,khongbiet,critter1,partridg,skyclad,bigdon,ginger69,brave1,anthony4,spinnake,chinadol,passout,cochino,nipples1,15058,lopesk,sixflags,lloo999,parkhead,breakdance,cia123,fidodido,yuitre12,fooey,artem1995,gayathri,medin,nondriversig,l12345,bravo7,happy13,kazuya,camster,alex1998,luckyy,zipcode,dizzle,boating1,opusone,newpassw,movies23,kamikazi,zapato,bart316,cowboys0,corsair1,kingshit,hotdog12,rolyat,h200svrm,qwerty4,boofer,rhtyltkm,chris999,vaz21074,simferopol,pitboss,love3,britania,tanyshka,brause,123qwerty123,abeille,moscow1,ilkaev,manut,process1,inetcfg,dragon05,fortknox,castill,rynner,mrmike,koalas,jeebus,stockpor,longman,juanpabl,caiman,roleplay,jeremi,26058,prodojo,002200,magical1,black5,bvlgari,doogie1,cbhtqa,mahina,a1s2d3f4g5h6,jblpro,usmc01,bismilah,guitar01,april9,santana1,1234aa,monkey14,sorokin,evan1,doohan,animalsex,pfqxtyjr,dimitry,catchme,chello,silverch,glock45,dogleg,litespee,nirvana9,peyton18,alydar,warhamer,iluvme,sig229,minotavr,lobzik,jack23,bushwack,onlin,football123,joshua5,federov,winter2,bigmax,fufnfrhbcnb,hfpldfnhb,1dakota,f56307,chipmonk,4nick8,praline,vbhjh123,king11,22tango,gemini12,street1,77879,doodlebu,homyak,165432,chuluthu,trixi,karlito,salom,reisen,cdtnkzxjr,pookie11,tremendo,shazaam,welcome0,00000ty,peewee51,pizzle,gilead,bydand,sarvar,upskirt,legends1,freeway1,teenfuck,ranger9,darkfire,dfymrf,hunt0802,justme1,buffy1ma,1harry,671fsa75yt,burrfoot,budster,pa437tu,jimmyp,alina2006,malacon,charlize,elway1,free12,summer02,gadina,manara,gomer1,1cassie,sanja,kisulya,money3,pujols,ford50,midiland,turga,orange6,demetriu,freakboy,orosie1,radio123,open12,vfufpby,mustek,chris33,animes,meiling,nthtvjr,jasmine9,gfdkjd,oligarh,marimar,chicago9,.kzirf,bugssgub,samuraix,jackie01,pimpjuic,macdad,cagiva,vernost,willyboy,fynjyjdf,tabby1,privet123,torres9,retype,blueroom,raven11,q12we3,alex1989,bringiton,ridered,kareltje,ow8jtcs8t,ciccia,goniners,countryb,24688642,covingto,24861793,beyblade,vikin,badboyz,wlafiga,walstib,mirand,needajob,chloes,balaton,kbpfdtnf,freyja,bond9007,gabriel12,stormbri,hollage,love4eve,fenomeno,darknite,dragstar,kyle123,milfhunter,ma123123123,samia,ghislain,enrique1,ferien12,xjy6721,natalie2,reglisse,wilson2,wesker,rosebud7,amazon1,robertr,roykeane,xtcnth,mamatata,crazyc,mikie,savanah,blowjob69,jackie2,forty1,1coffee,fhbyjxrf,bubbah,goteam,hackedit,risky1,logoff,h397pnvr,buck13,robert23,bronc,st123st,godflesh,pornog,iamking,cisco69,septiembr,dale38,zhongguo,tibbar,panther9,buffa1,bigjohn1,mypuppy,vehvfycr,april16,shippo,fire1234,green15,q123123,gungadin,steveg,olivier1,chinaski,magnoli,faithy,storm12,toadfrog,paul99,78791,august20,automati,squirtle,cheezy,positano,burbon,nunya,llebpmac,kimmi,turtle2,alan123,prokuror,violin1,durex,pussygal,visionar,trick1,chicken6,29024,plowboy,rfybreks,imbue,sasha13,wagner1,vitalogy,cfymrf,thepro,26028,gorbunov,dvdcom,letmein5,duder,fastfun,pronin,libra1,conner1,harley20,stinker1,20068,20038,amitech,syoung,dugway,18068,welcome7,jimmypag,anastaci,kafka1,pfhfnecnhf,catsss,campus100,shamal,nacho1,fire12,vikings2,brasil1,rangerover,mohamma,peresvet,14058,cocomo,aliona,14038,qwaser,vikes,cbkmdf,skyblue1,ou81234,goodlove,dfkmltvfh,108888,roamer,pinky2,static1,zxcv4321,barmen,rock22,shelby2,morgans,1junior,pasword1,logjam,fifty5,nhfrnjhbcn,chaddy,philli,nemesis2,ingenier,djkrjd,ranger3,aikman8,knothead,daddy69,love007,vsythb,ford350,tiger00,renrut,owen11,energy12,march14,alena123,robert19,carisma,orange22,murphy11,podarok,prozak,kfgeirf,wolf13,lydia1,shazza,parasha,akimov,tobbie,pilote,heather4,baster,leones,gznfxjr,megama,987654321g,bullgod,boxster1,minkey,wombats,vergil,colegiata,lincol,smoothe,pride1,carwash1,latrell,bowling3,fylhtq123,pickwick,eider,bubblebox,bunnies1,loquit,slipper1,nutsac,purina,xtutdfhf,plokiju,1qazxs,uhjpysq,zxcvbasdfg,enjoy1,1pumpkin,phantom7,mama22,swordsma,wonderbr,dogdays,milker,u23456,silvan,dfkthbr,slagelse,yeahman,twothree,boston11,wolf100,dannyg,troll1,fynjy123,ghbcnfd,bftest,ballsdeep,bobbyorr,alphasig,cccdemo,fire123,norwest,claire2,august10,lth1108,problemas,sapito,alex06,1rusty,maccom,goirish1,ohyes,bxdumb,nabila,boobear1,rabbit69,princip,alexsander,travail,chantal1,dogggy,greenpea,diablo69,alex2009,bergen09,petticoa,classe,ceilidh,vlad2011,kamakiri,lucidity,qaz321,chileno,cexfhf,99ranger,mcitra,estoppel,volvos60,carter80,webpass,temp12,touareg,fcgbhby,bubba8,sunitha,200190ru,bitch2,shadow23,iluvit,nicole0,ruben1,nikki69,butttt,shocker1,souschef,lopotok01,kantot,corsano,cfnfyf,riverat,makalu,swapna,all4u9,cdtnkfy,ntktgepbr,ronaldo99,thomasj,bmw540i,chrisw,boomba,open321,z1x2c3v4b5n6m7,gaviota,iceman44,frosya,chris100,chris24,cosette,clearwat,micael,boogyman,pussy9,camus1,chumpy,heccrbq,konoplya,chester8,scooter5,ghjgfufylf,giotto,koolkat,zero000,bonita1,ckflrbq,j1964,mandog,18n28n24a,renob,head1,shergar,ringo123,tanita,sex4free,johnny12,halberd,reddevils,biolog,dillinge,fatb0y,c00per,hyperlit,wallace2,spears1,vitamine,buheirf,sloboda,alkash,mooman,marion1,arsenal7,sunder,nokia5610,edifier,pippone,fyfnjkmtdbx,fujimo,pepsi12,kulikova,bolat,duetto,daimon,maddog01,timoshka,ezmoney,desdemon,chesters,aiden,hugues,patrick5,aikman08,robert4,roenick,nyranger,writer1,36169544,foxmulder,118801,kutter,shashank,jamjar,118811,119955,aspirina,dinkus,1sailor,nalgene,19891959,snarf,allie1,cracky,resipsa,45678912,kemerovo,19841989,netware1,alhimik,19801984,nicole123,19761977,51501984,malaka1,montella,peachfuz,jethro1,cypress1,henkie,holdon,esmith,55443322,1friend,quique,bandicoot,statistika,great123,death13,ucht36,master4,67899876,bobsmith,nikko1,jr1234,hillary1,78978978,rsturbo,lzlzdfcz,bloodlust,shadow00,skagen,bambina,yummies,88887777,91328378,matthew4,itdoes,98256518,102938475,alina2002,123123789,fubared,dannys,123456321,nikifor,suck69,newmexico,scubaman,rhbcnb,fifnfy,puffdadd,159357852,dtheyxbr,theman22,212009164,prohor,shirle,nji90okm,newmedia,goose5,roma1995,letssee,iceman11,aksana,wirenut,pimpdady,1212312121,tamplier,pelican1,domodedovo,1928374655,fiction6,duckpond,ybrecz,thwack,onetwo34,gunsmith,murphydo,fallout1,spectre1,jabberwo,jgjesq,turbo6,bobo12,redryder,blackpus,elena1971,danilova,antoin,bobo1234,bobob,bobbobbo,dean1,222222a,jesusgod,matt23,musical1,darkmage,loppol,werrew,josepha,rebel12,toshka,gadfly,hawkwood,alina12,dnomyar,sexaddict,dangit,cool23,yocrack,archimed,farouk,nhfkzkz,lindalou,111zzzzz,ghjatccjh,wethepeople,m123456789,wowsers,kbkbxrf,bulldog5,m_roesel,sissinit,yamoon6,123ewqasd,dangel,miruvor79,kaytee,falcon7,bandit11,dotnet,dannii,arsenal9,miatamx5,1trouble,strip4me,dogpile,sexyred1,rjdfktdf,google10,shortman,crystal7,awesome123,cowdog,haruka,birthday28,jitter,diabolik,boomer12,dknight,bluewate,hockey123,crm0624,blueboys,willy123,jumpup,google2,cobra777,llabesab,vicelord,hopper1,gerryber,remmah,j10e5d4,qqqqqqw,agusti,fre_ak8yj,nahlik,redrobin,scott3,epson1,dumpy,bundao,aniolek,hola123,jergens,itsasecret,maxsam,bluelight,mountai1,bongwater,1london,pepper14,freeuse,dereks,qweqw,fordgt40,rfhfdfy,raider12,hunnybun,compac,splicer,megamon,tuffgong,gymnast1,butter11,modaddy,wapbbs_1,dandelio,soccer77,ghjnbdjcnjzybt,123xyi2,fishead,x002tp00,whodaman,555aaa,oussama,brunodog,technici,pmtgjnbl,qcxdw8ry,schweden,redsox3,throbber,collecto,japan10,dbm123dm,hellhoun,tech1,deadzone,kahlan,wolf123,dethklok,xzsawq,bigguy1,cybrthc,chandle,buck01,qq123123,secreta,williams1,c32649135,delta12,flash33,123joker,spacejam,polopo,holycrap,daman1,tummybed,financia,nusrat,euroline,magicone,jimkirk,ameritec,daniel26,sevenn,topazz,kingpins,dima1991,macdog,spencer5,oi812,geoffre,music11,baffle,123569,usagi,cassiope,polla,lilcrowe,thecakeisalie,vbhjndjhtw,vthokies,oldmans,sophie01,ghoster,penny2,129834,locutus1,meesha,magik,jerry69,daddysgirl,irondesk,andrey12,jasmine123,vepsrfyn,likesdick,1accord,jetboat,grafix,tomuch,showit,protozoa,mosias98,taburetka,blaze420,esenin,anal69,zhv84kv,puissant,charles0,aishwarya,babylon6,bitter1,lenina,raleigh1,lechat,access01,kamilka,fynjy,sparkplu,daisy3112,choppe,zootsuit,1234567j,rubyrose,gorilla9,nightshade,alternativa,cghfdjxybr,snuggles1,10121v,vova1992,leonardo1,dave2,matthewd,vfhfnbr,1986mets,nobull,bacall,mexican1,juanjo,mafia1,boomer22,soylent,edwards1,jordan10,blackwid,alex86,gemini13,lunar2,dctvcjcfnm,malaki,plugger,eagles11,snafu2,1shelly,cintaku,hannah22,tbird1,maks5843,irish88,homer22,amarok,fktrcfylhjdf,lincoln2,acess,gre69kik,need4speed,hightech,core2duo,blunt1,ublhjgjybrf,dragon33,1autopas,autopas1,wwww1,15935746,daniel20,2500aa,massim,1ggggggg,96ford,hardcor1,cobra5,blackdragon,vovan_lt,orochimaru,hjlbntkb,qwertyuiop12,tallen,paradoks,frozenfish,ghjuhfvvbcn,gerri1,nuggett,camilit,doright,trans1,serena1,catch2,bkmyeh,fireston,afhvfwtdn,purple3,figure8,fuckya,scamp1,laranja,ontheoutside,louis123,yellow7,moonwalk,mercury2,tolkein,raide,amenra,a13579,dranreb,5150vh,harish,tracksta,sexking,ozzmosis,katiee,alomar,matrix19,headroom,jahlove,ringding,apollo8,132546,132613,12345672000,saretta,135798,136666,thomas7,136913,onetwothree,hockey33,calida,nefertit,bitwise,tailhook,boop4,kfgecbr,bujhmbujhm,metal69,thedark,meteoro,felicia1,house12,tinuviel,istina,vaz2105,pimp13,toolfan,nina1,tuesday2,maxmotives,lgkp500,locksley,treech,darling1,kurama,aminka,ramin,redhed,dazzler,jager1,stpiliot,cardman,rfvtym,cheeser,14314314,paramoun,samcat,plumpy,stiffie,vsajyjr,panatha,qqq777,car12345,098poi,asdzx,keegan1,furelise,kalifornia,vbhjckfd,beast123,zcfvfzkexifz,harry5,1birdie,96328i,escola,extra330,henry12,gfhfyjqz,14u2nv,max1234,templar1,1dave,02588520,catrin,pangolin,marhaba,latin1,amorcito,dave22,escape1,advance1,yasuhiro,grepw,meetme,orange01,ernes,erdna,zsergn,nautica1,justinb,soundwav,miasma,greg78,nadine1,sexmad,lovebaby,promo1,excel1,babys,dragonma,camry1,sonnenschein,farooq,wazzkaprivet,magal,katinas,elvis99,redsox24,rooney1,chiefy,peggys,aliev,pilsung,mudhen,dontdoit,dennis12,supercal,energia,ballsout,funone,claudiu,brown2,amoco,dabl1125,philos,gjdtkbntkm,servette,13571113,whizzer,nollie,13467982,upiter,12string,bluejay1,silkie,william4,kosta1,143333,connor12,sustanon,06068,corporat,ssnake,laurita,king10,tahoes,arsenal123,sapato,charless,jeanmarc,levent,algerie,marine21,jettas,winsome,dctvgbplf,1701ab,xxxp455w0rd5,lllllll1,ooooooo1,monalis,koufax32,anastasya,debugger,sarita2,jason69,ufkxjyjr,gjlcnfdf,1jerry,daniel10,balinor,sexkitten,death2,qwertasdfgzxcvb,s9te949f,vegeta1,sysman,maxxam,dimabilan,mooose,ilovetit,june23,illest,doesit,mamou,abby12,longjump,transalp,moderato,littleguy,magritte,dilnoza,hawaiiguy,winbig,nemiroff,kokaine,admira,myemail,dream2,browneyes,destiny7,dragonss,suckme1,asa123,andranik,suckem,fleshbot,dandie,timmys,scitra,timdog,hasbeen,guesss,smellyfe,arachne,deutschl,harley88,birthday27,nobody1,papasmur,home1,jonass,bunia3,epatb1,embalm,vfvekmrf,apacer,12345656,estreet,weihnachtsbaum,mrwhite,admin12,kristie1,kelebek,yoda69,socken,tima123,bayern1,fktrcfylth,tamiya,99strenght,andy01,denis2011,19delta,stokecit,aotearoa,stalker2,nicnac,conrad1,popey,agusta,bowl36,1bigfish,mossyoak,1stunner,getinnow,jessejames,gkfnjy,drako,1nissan,egor123,hotness,1hawaii,zxc123456,cantstop,1peaches,madlen,west1234,jeter1,markis,judit,attack1,artemi,silver69,153246,crazy2,green9,yoshimi,1vette,chief123,jasper2,1sierra,twentyon,drstrang,aspirant,yannic,jenna123,bongtoke,slurpy,1sugar,civic97,rusty21,shineon,james19,anna12345,wonderwoman,1kevin,karol1,kanabis,wert21,fktif6115,evil1,kakaha,54gv768,826248s,tyrone1,1winston,sugar2,falcon01,adelya,mopar440,zasxcd,leecher,kinkysex,mercede1,travka,11234567,rebon,geekboy".split(","),
43352 english_wikipedia:"the,of,and,in,was,is,for,as,on,with,by,he,at,from,his,an,were,are,which,doc,https,also,or,has,had,first,one,their,its,after,new,who,they,two,her,she,been,other,when,time,during,there,into,school,more,may,years,over,only,year,most,would,world,city,some,where,between,later,three,state,such,then,national,used,made,known,under,many,university,united,while,part,season,team,these,american,than,film,second,born,south,became,states,war,through,being,including,both,before,north,high,however,people,family,early,history,album,area,them,series,against,until,since,district,county,name,work,life,group,music,following,number,company,several,four,called,played,released,career,league,game,government,house,each,based,day,same,won,use,station,club,international,town,located,population,general,college,east,found,age,march,end,september,began,home,public,church,line,june,river,member,system,place,century,band,july,york,january,october,song,august,best,former,british,party,named,held,village,show,local,november,took,service,december,built,another,major,within,along,members,five,single,due,although,small,old,left,final,large,include,building,served,president,received,games,death,february,main,third,set,children,own,order,species,park,law,air,published,road,died,book,men,women,army,often,according,education,central,country,division,english,top,included,development,french,community,among,water,play,side,list,times,near,late,form,original,different,center,power,led,students,german,moved,court,six,land,council,island,u.s.,record,million,research,art,established,award,street,military,television,given,region,support,western,production,non,political,point,cup,period,business,title,started,various,election,using,england,role,produced,become,program,works,field,total,office,class,written,association,radio,union,level,championship,director,few,force,created,department,founded,services,married,though,per,n't,site,open,act,short,society,version,royal,present,northern,worked,professional,full,returned,joined,story,france,european,currently,language,social,california,india,days,design,st.,further,round,australia,wrote,san,project,control,southern,railway,board,popular,continued,free,battle,considered,video,common,position,living,half,playing,recorded,red,post,described,average,records,special,modern,appeared,announced,areas,rock,release,elected,others,example,term,opened,similar,formed,route,census,current,schools,originally,lake,developed,race,himself,forces,addition,information,upon,province,match,event,songs,result,events,win,eastern,track,lead,teams,science,human,construction,minister,germany,awards,available,throughout,training,style,body,museum,australian,health,seven,signed,chief,eventually,appointed,sea,centre,debut,tour,points,media,light,range,character,across,features,families,largest,indian,network,less,performance,players,refer,europe,sold,festival,usually,taken,despite,designed,committee,process,return,official,episode,institute,stage,followed,performed,japanese,personal,thus,arts,space,low,months,includes,china,study,middle,magazine,leading,japan,groups,aircraft,featured,federal,civil,rights,model,coach,canadian,books,remained,eight,type,independent,completed,capital,academy,instead,kingdom,organization,countries,studies,competition,sports,size,above,section,finished,gold,involved,reported,management,systems,industry,directed,market,fourth,movement,technology,bank,ground,campaign,base,lower,sent,rather,added,provided,coast,grand,historic,valley,conference,bridge,winning,approximately,films,chinese,awarded,degree,russian,shows,native,female,replaced,municipality,square,studio,medical,data,african,successful,mid,bay,attack,previous,operations,spanish,theatre,student,republic,beginning,provide,ship,primary,owned,writing,tournament,culture,introduced,texas,related,natural,parts,governor,reached,ireland,units,senior,decided,italian,whose,higher,africa,standard,income,professor,placed,regional,los,buildings,championships,active,novel,energy,generally,interest,via,economic,previously,stated,itself,channel,below,operation,leader,traditional,trade,structure,limited,runs,prior,regular,famous,saint,navy,foreign,listed,artist,catholic,airport,results,parliament,collection,unit,officer,goal,attended,command,staff,commission,lived,location,plays,commercial,places,foundation,significant,older,medal,self,scored,companies,highway,activities,programs,wide,musical,notable,library,numerous,paris,towards,individual,allowed,plant,property,annual,contract,whom,highest,initially,required,earlier,assembly,artists,rural,seat,practice,defeated,ended,soviet,length,spent,manager,press,associated,author,issues,additional,characters,lord,zealand,policy,engine,township,noted,historical,complete,financial,religious,mission,contains,nine,recent,represented,pennsylvania,administration,opening,secretary,lines,report,executive,youth,closed,theory,writer,italy,angeles,appearance,feature,queen,launched,legal,terms,entered,issue,edition,singer,greek,majority,background,source,anti,cultural,complex,changes,recording,stadium,islands,operated,particularly,basketball,month,uses,port,castle,mostly,names,fort,selected,increased,status,earth,subsequently,pacific,cover,variety,certain,goals,remains,upper,congress,becoming,studied,irish,nature,particular,loss,caused,chart,dr.,forced,create,era,retired,material,review,rate,singles,referred,larger,individuals,shown,provides,products,speed,democratic,poland,parish,olympics,cities,themselves,temple,wing,genus,households,serving,cost,wales,stations,passed,supported,view,cases,forms,actor,male,matches,males,stars,tracks,females,administrative,median,effect,biography,train,engineering,camp,offered,chairman,houses,mainly,19th,surface,therefore,nearly,score,ancient,subject,prime,seasons,claimed,experience,specific,jewish,failed,overall,believed,plot,troops,greater,spain,consists,broadcast,heavy,increase,raised,separate,campus,1980s,appears,presented,lies,composed,recently,influence,fifth,nations,creek,references,elections,britain,double,cast,meaning,earned,carried,producer,latter,housing,brothers,attempt,article,response,border,remaining,nearby,direct,ships,value,workers,politician,academic,label,1970s,commander,rule,fellow,residents,authority,editor,transport,dutch,projects,responsible,covered,territory,flight,races,defense,tower,emperor,albums,facilities,daily,stories,assistant,managed,primarily,quality,function,proposed,distribution,conditions,prize,journal,code,vice,newspaper,corps,highly,constructed,mayor,critical,secondary,corporation,rugby,regiment,ohio,appearances,serve,allow,nation,multiple,discovered,directly,scene,levels,growth,elements,acquired,1990s,officers,physical,20th,latin,host,jersey,graduated,arrived,issued,literature,metal,estate,vote,immediately,quickly,asian,competed,extended,produce,urban,1960s,promoted,contemporary,global,formerly,appear,industrial,types,opera,ministry,soldiers,commonly,mass,formation,smaller,typically,drama,shortly,density,senate,effects,iran,polish,prominent,naval,settlement,divided,basis,republican,languages,distance,treatment,continue,product,mile,sources,footballer,format,clubs,leadership,initial,offers,operating,avenue,officially,columbia,grade,squadron,fleet,percent,farm,leaders,agreement,likely,equipment,website,mount,grew,method,transferred,intended,renamed,iron,asia,reserve,capacity,politics,widely,activity,advanced,relations,scottish,dedicated,crew,founder,episodes,lack,amount,build,efforts,concept,follows,ordered,leaves,positive,economy,entertainment,affairs,memorial,ability,illinois,communities,color,text,railroad,scientific,focus,comedy,serves,exchange,environment,cars,direction,organized,firm,description,agency,analysis,purpose,destroyed,reception,planned,revealed,infantry,architecture,growing,featuring,household,candidate,removed,situated,models,knowledge,solo,technical,organizations,assigned,conducted,participated,largely,purchased,register,gained,combined,headquarters,adopted,potential,protection,scale,approach,spread,independence,mountains,titled,geography,applied,safety,mixed,accepted,continues,captured,rail,defeat,principal,recognized,lieutenant,mentioned,semi,owner,joint,liberal,actress,traffic,creation,basic,notes,unique,supreme,declared,simply,plants,sales,massachusetts,designated,parties,jazz,compared,becomes,resources,titles,concert,learning,remain,teaching,versions,content,alongside,revolution,sons,block,premier,impact,champions,districts,generation,estimated,volume,image,sites,account,roles,sport,quarter,providing,zone,yard,scoring,classes,presence,performances,representatives,hosted,split,taught,origin,olympic,claims,critics,facility,occurred,suffered,municipal,damage,defined,resulted,respectively,expanded,platform,draft,opposition,expected,educational,ontario,climate,reports,atlantic,surrounding,performing,reduced,ranked,allows,birth,nominated,younger,newly,kong,positions,theater,philadelphia,heritage,finals,disease,sixth,laws,reviews,constitution,tradition,swedish,theme,fiction,rome,medicine,trains,resulting,existing,deputy,environmental,labour,classical,develop,fans,granted,receive,alternative,begins,nuclear,fame,buried,connected,identified,palace,falls,letters,combat,sciences,effort,villages,inspired,regions,towns,conservative,chosen,animals,labor,attacks,materials,yards,steel,representative,orchestra,peak,entitled,officials,returning,reference,northwest,imperial,convention,examples,ocean,publication,painting,subsequent,frequently,religion,brigade,fully,sides,acts,cemetery,relatively,oldest,suggested,succeeded,achieved,application,programme,cells,votes,promotion,graduate,armed,supply,flying,communist,figures,literary,netherlands,korea,worldwide,citizens,1950s,faculty,draw,stock,seats,occupied,methods,unknown,articles,claim,holds,authorities,audience,sweden,interview,obtained,covers,settled,transfer,marked,allowing,funding,challenge,southeast,unlike,crown,rise,portion,transportation,sector,phase,properties,edge,tropical,standards,institutions,philosophy,legislative,hills,brand,fund,conflict,unable,founding,refused,attempts,metres,permanent,starring,applications,creating,effective,aired,extensive,employed,enemy,expansion,billboard,rank,battalion,multi,vehicle,fought,alliance,category,perform,federation,poetry,bronze,bands,entry,vehicles,bureau,maximum,billion,trees,intelligence,greatest,screen,refers,commissioned,gallery,injury,confirmed,setting,treaty,adult,americans,broadcasting,supporting,pilot,mobile,writers,programming,existence,squad,minnesota,copies,korean,provincial,sets,defence,offices,agricultural,internal,core,northeast,retirement,factory,actions,prevent,communications,ending,weekly,containing,functions,attempted,interior,weight,bowl,recognition,incorporated,increasing,ultimately,documentary,derived,attacked,lyrics,mexican,external,churches,centuries,metropolitan,selling,opposed,personnel,mill,visited,presidential,roads,pieces,norwegian,controlled,18th,rear,influenced,wrestling,weapons,launch,composer,locations,developing,circuit,specifically,studios,shared,canal,wisconsin,publishing,approved,domestic,consisted,determined,comic,establishment,exhibition,southwest,fuel,electronic,cape,converted,educated,melbourne,hits,wins,producing,norway,slightly,occur,surname,identity,represent,constituency,funds,proved,links,structures,athletic,birds,contest,users,poet,institution,display,receiving,rare,contained,guns,motion,piano,temperature,publications,passenger,contributed,toward,cathedral,inhabitants,architect,exist,athletics,muslim,courses,abandoned,signal,successfully,disambiguation,tennessee,dynasty,heavily,maryland,jews,representing,budget,weather,missouri,introduction,faced,pair,chapel,reform,height,vietnam,occurs,motor,cambridge,lands,focused,sought,patients,shape,invasion,chemical,importance,communication,selection,regarding,homes,voivodeship,maintained,borough,failure,aged,passing,agriculture,oregon,teachers,flow,philippines,trail,seventh,portuguese,resistance,reaching,negative,fashion,scheduled,downtown,universities,trained,skills,scenes,views,notably,typical,incident,candidates,engines,decades,composition,commune,chain,inc.,austria,sale,values,employees,chamber,regarded,winners,registered,task,investment,colonial,swiss,user,entirely,flag,stores,closely,entrance,laid,journalist,coal,equal,causes,turkish,quebec,techniques,promote,junction,easily,dates,kentucky,singapore,residence,violence,advance,survey,humans,expressed,passes,streets,distinguished,qualified,folk,establish,egypt,artillery,visual,improved,actual,finishing,medium,protein,switzerland,productions,operate,poverty,neighborhood,organisation,consisting,consecutive,sections,partnership,extension,reaction,factor,costs,bodies,device,ethnic,racial,flat,objects,chapter,improve,musicians,courts,controversy,membership,merged,wars,expedition,interests,arab,comics,gain,describes,mining,bachelor,crisis,joining,decade,1930s,distributed,habitat,routes,arena,cycle,divisions,briefly,vocals,directors,degrees,object,recordings,installed,adjacent,demand,voted,causing,businesses,ruled,grounds,starred,drawn,opposite,stands,formal,operates,persons,counties,compete,wave,israeli,ncaa,resigned,brief,greece,combination,demographics,historian,contain,commonwealth,musician,collected,argued,louisiana,session,cabinet,parliamentary,electoral,loan,profit,regularly,conservation,islamic,purchase,17th,charts,residential,earliest,designs,paintings,survived,moth,items,goods,grey,anniversary,criticism,images,discovery,observed,underground,progress,additionally,participate,thousands,reduce,elementary,owners,stating,iraq,resolution,capture,tank,rooms,hollywood,finance,queensland,reign,maintain,iowa,landing,broad,outstanding,circle,path,manufacturing,assistance,sequence,gmina,crossing,leads,universal,shaped,kings,attached,medieval,ages,metro,colony,affected,scholars,oklahoma,coastal,soundtrack,painted,attend,definition,meanwhile,purposes,trophy,require,marketing,popularity,cable,mathematics,mississippi,represents,scheme,appeal,distinct,factors,acid,subjects,roughly,terminal,economics,senator,diocese,prix,contrast,argentina,czech,wings,relief,stages,duties,16th,novels,accused,whilst,equivalent,charged,measure,documents,couples,request,danish,defensive,guide,devices,statistics,credited,tries,passengers,allied,frame,puerto,peninsula,concluded,instruments,wounded,differences,associate,forests,afterwards,replace,requirements,aviation,solution,offensive,ownership,inner,legislation,hungarian,contributions,actors,translated,denmark,steam,depending,aspects,assumed,injured,severe,admitted,determine,shore,technique,arrival,measures,translation,debuted,delivered,returns,rejected,separated,visitors,damaged,storage,accompanied,markets,industries,losses,gulf,charter,strategy,corporate,socialist,somewhat,significantly,physics,mounted,satellite,experienced,constant,relative,pattern,restored,belgium,connecticut,partners,harvard,retained,networks,protected,mode,artistic,parallel,collaboration,debate,involving,journey,linked,salt,authors,components,context,occupation,requires,occasionally,policies,tamil,ottoman,revolutionary,hungary,poem,versus,gardens,amongst,audio,makeup,frequency,meters,orthodox,continuing,suggests,legislature,coalition,guitarist,eighth,classification,practices,soil,tokyo,instance,limit,coverage,considerable,ranking,colleges,cavalry,centers,daughters,twin,equipped,broadway,narrow,hosts,rates,domain,boundary,arranged,12th,whereas,brazilian,forming,rating,strategic,competitions,trading,covering,baltimore,commissioner,infrastructure,origins,replacement,praised,disc,collections,expression,ukraine,driven,edited,austrian,solar,ensure,premiered,successor,wooden,operational,hispanic,concerns,rapid,prisoners,childhood,meets,influential,tunnel,employment,tribe,qualifying,adapted,temporary,celebrated,appearing,increasingly,depression,adults,cinema,entering,laboratory,script,flows,romania,accounts,fictional,pittsburgh,achieve,monastery,franchise,formally,tools,newspapers,revival,sponsored,processes,vienna,springs,missions,classified,13th,annually,branches,lakes,gender,manner,advertising,normally,maintenance,adding,characteristics,integrated,decline,modified,strongly,critic,victims,malaysia,arkansas,nazi,restoration,powered,monument,hundreds,depth,15th,controversial,admiral,criticized,brick,honorary,initiative,output,visiting,birmingham,progressive,existed,carbon,1920s,credits,colour,rising,hence,defeating,superior,filmed,listing,column,surrounded,orleans,principles,territories,struck,participation,indonesia,movements,index,commerce,conduct,constitutional,spiritual,ambassador,vocal,completion,edinburgh,residing,tourism,finland,bears,medals,resident,themes,visible,indigenous,involvement,basin,electrical,ukrainian,concerts,boats,styles,processing,rival,drawing,vessels,experimental,declined,touring,supporters,compilation,coaching,cited,dated,roots,string,explained,transit,traditionally,poems,minimum,representation,14th,releases,effectively,architectural,triple,indicated,greatly,elevation,clinical,printed,10th,proposal,peaked,producers,romanized,rapidly,stream,innings,meetings,counter,householder,honour,lasted,agencies,document,exists,surviving,experiences,honors,landscape,hurricane,harbor,panel,competing,profile,vessel,farmers,lists,revenue,exception,customers,11th,participants,wildlife,utah,bible,gradually,preserved,replacing,symphony,begun,longest,siege,provinces,mechanical,genre,transmission,agents,executed,videos,benefits,funded,rated,instrumental,ninth,similarly,dominated,destruction,passage,technologies,thereafter,outer,facing,affiliated,opportunities,instrument,governments,scholar,evolution,channels,shares,sessions,widespread,occasions,engineers,scientists,signing,battery,competitive,alleged,eliminated,supplies,judges,hampshire,regime,portrayed,penalty,taiwan,denied,submarine,scholarship,substantial,transition,victorian,http,nevertheless,filed,supports,continental,tribes,ratio,doubles,useful,honours,blocks,principle,retail,departure,ranks,patrol,yorkshire,vancouver,inter,extent,afghanistan,strip,railways,component,organ,symbol,categories,encouraged,abroad,civilian,periods,traveled,writes,struggle,immediate,recommended,adaptation,egyptian,graduating,assault,drums,nomination,historically,voting,allies,detailed,achievement,percentage,arabic,assist,frequent,toured,apply,and/or,intersection,maine,touchdown,throne,produces,contribution,emerged,obtain,archbishop,seek,researchers,remainder,populations,clan,finnish,overseas,fifa,licensed,chemistry,festivals,mediterranean,injuries,animated,seeking,publisher,volumes,limits,venue,jerusalem,generated,trials,islam,youngest,ruling,glasgow,germans,songwriter,persian,municipalities,donated,viewed,belgian,cooperation,posted,tech,dual,volunteer,settlers,commanded,claiming,approval,delhi,usage,terminus,partly,electricity,locally,editions,premiere,absence,belief,traditions,statue,indicate,manor,stable,attributed,possession,managing,viewers,chile,overview,seed,regulations,essential,minority,cargo,segment,endemic,forum,deaths,monthly,playoffs,erected,practical,machines,suburb,relation,mrs.,descent,indoor,continuous,characterized,solutions,caribbean,rebuilt,serbian,summary,contested,psychology,pitch,attending,muhammad,tenure,drivers,diameter,assets,venture,punk,airlines,concentration,athletes,volunteers,pages,mines,influences,sculpture,protest,ferry,behalf,drafted,apparent,furthermore,ranging,romanian,democracy,lanka,significance,linear,d.c.,certified,voters,recovered,tours,demolished,boundaries,assisted,identify,grades,elsewhere,mechanism,1940s,reportedly,aimed,conversion,suspended,photography,departments,beijing,locomotives,publicly,dispute,magazines,resort,conventional,platforms,internationally,capita,settlements,dramatic,derby,establishing,involves,statistical,implementation,immigrants,exposed,diverse,layer,vast,ceased,connections,belonged,interstate,uefa,organised,abuse,deployed,cattle,partially,filming,mainstream,reduction,automatic,rarely,subsidiary,decides,merger,comprehensive,displayed,amendment,guinea,exclusively,manhattan,concerning,commons,radical,serbia,baptist,buses,initiated,portrait,harbour,choir,citizen,sole,unsuccessful,manufactured,enforcement,connecting,increases,patterns,sacred,muslims,clothing,hindu,unincorporated,sentenced,advisory,tanks,campaigns,fled,repeated,remote,rebellion,implemented,texts,fitted,tribute,writings,sufficient,ministers,21st,devoted,jurisdiction,coaches,interpretation,pole,businessman,peru,sporting,prices,cuba,relocated,opponent,arrangement,elite,manufacturer,responded,suitable,distinction,calendar,dominant,tourist,earning,prefecture,ties,preparation,anglo,pursue,worship,archaeological,chancellor,bangladesh,scores,traded,lowest,horror,outdoor,biology,commented,specialized,loop,arriving,farming,housed,historians,'the,patent,pupils,christianity,opponents,athens,northwestern,maps,promoting,reveals,flights,exclusive,lions,norfolk,hebrew,extensively,eldest,shops,acquisition,virtual,renowned,margin,ongoing,essentially,iranian,alternate,sailed,reporting,conclusion,originated,temperatures,exposure,secured,landed,rifle,framework,identical,martial,focuses,topics,ballet,fighters,belonging,wealthy,negotiations,evolved,bases,oriented,acres,democrat,heights,restricted,vary,graduation,aftermath,chess,illness,participating,vertical,collective,immigration,demonstrated,leaf,completing,organic,missile,leeds,eligible,grammar,confederate,improvement,congressional,wealth,cincinnati,spaces,indicates,corresponding,reaches,repair,isolated,taxes,congregation,ratings,leagues,diplomatic,submitted,winds,awareness,photographs,maritime,nigeria,accessible,animation,restaurants,philippine,inaugural,dismissed,armenian,illustrated,reservoir,speakers,programmes,resource,genetic,interviews,camps,regulation,computers,preferred,travelled,comparison,distinctive,recreation,requested,southeastern,dependent,brisbane,breeding,playoff,expand,bonus,gauge,departed,qualification,inspiration,shipping,slaves,variations,shield,theories,munich,recognised,emphasis,favour,variable,seeds,undergraduate,territorial,intellectual,qualify,mini,banned,pointed,democrats,assessment,judicial,examination,attempting,objective,partial,characteristic,hardware,pradesh,execution,ottawa,metre,drum,exhibitions,withdrew,attendance,phrase,journalism,logo,measured,error,christians,trio,protestant,theology,respective,atmosphere,buddhist,substitute,curriculum,fundamental,outbreak,rabbi,intermediate,designation,globe,liberation,simultaneously,diseases,experiments,locomotive,difficulties,mainland,nepal,relegated,contributing,database,developments,veteran,carries,ranges,instruction,lodge,protests,obama,newcastle,experiment,physician,describing,challenges,corruption,delaware,adventures,ensemble,succession,renaissance,tenth,altitude,receives,approached,crosses,syria,croatia,warsaw,professionals,improvements,worn,airline,compound,permitted,preservation,reducing,printing,scientist,activist,comprises,sized,societies,enters,ruler,gospel,earthquake,extend,autonomous,croatian,serial,decorated,relevant,ideal,grows,grass,tier,towers,wider,welfare,columns,alumni,descendants,interface,reserves,banking,colonies,manufacturers,magnetic,closure,pitched,vocalist,preserve,enrolled,cancelled,equation,2000s,nickname,bulgaria,heroes,exile,mathematical,demands,input,structural,tube,stem,approaches,argentine,axis,manuscript,inherited,depicted,targets,visits,veterans,regard,removal,efficiency,organisations,concepts,lebanon,manga,petersburg,rally,supplied,amounts,yale,tournaments,broadcasts,signals,pilots,azerbaijan,architects,enzyme,literacy,declaration,placing,batting,incumbent,bulgarian,consistent,poll,defended,landmark,southwestern,raid,resignation,travels,casualties,prestigious,namely,aims,recipient,warfare,readers,collapse,coached,controls,volleyball,coup,lesser,verse,pairs,exhibited,proteins,molecular,abilities,integration,consist,aspect,advocate,administered,governing,hospitals,commenced,coins,lords,variation,resumed,canton,artificial,elevated,palm,difficulty,civic,efficient,northeastern,inducted,radiation,affiliate,boards,stakes,byzantine,consumption,freight,interaction,oblast,numbered,seminary,contracts,extinct,predecessor,bearing,cultures,functional,neighboring,revised,cylinder,grants,narrative,reforms,athlete,tales,reflect,presidency,compositions,specialist,cricketer,founders,sequel,widow,disbanded,associations,backed,thereby,pitcher,commanding,boulevard,singers,crops,militia,reviewed,centres,waves,consequently,fortress,tributary,portions,bombing,excellence,nest,payment,mars,plaza,unity,victories,scotia,farms,nominations,variant,attacking,suspension,installation,graphics,estates,comments,acoustic,destination,venues,surrender,retreat,libraries,quarterback,customs,berkeley,collaborated,gathered,syndrome,dialogue,recruited,shanghai,neighbouring,psychological,saudi,moderate,exhibit,innovation,depot,binding,brunswick,situations,certificate,actively,shakespeare,editorial,presentation,ports,relay,nationalist,methodist,archives,experts,maintains,collegiate,bishops,maintaining,temporarily,embassy,essex,wellington,connects,reformed,bengal,recalled,inches,doctrine,deemed,legendary,reconstruction,statements,palestinian,meter,achievements,riders,interchange,spots,auto,accurate,chorus,dissolved,missionary,thai,operators,e.g.,generations,failing,delayed,cork,nashville,perceived,venezuela,cult,emerging,tomb,abolished,documented,gaining,canyon,episcopal,stored,assists,compiled,kerala,kilometers,mosque,grammy,theorem,unions,segments,glacier,arrives,theatrical,circulation,conferences,chapters,displays,circular,authored,conductor,fewer,dimensional,nationwide,liga,yugoslavia,peer,vietnamese,fellowship,armies,regardless,relating,dynamic,politicians,mixture,serie,somerset,imprisoned,posts,beliefs,beta,layout,independently,electronics,provisions,fastest,logic,headquartered,creates,challenged,beaten,appeals,plains,protocol,graphic,accommodate,iraqi,midfielder,span,commentary,freestyle,reflected,palestine,lighting,burial,virtually,backing,prague,tribal,heir,identification,prototype,criteria,dame,arch,tissue,footage,extending,procedures,predominantly,updated,rhythm,preliminary,cafe,disorder,prevented,suburbs,discontinued,retiring,oral,followers,extends,massacre,journalists,conquest,larvae,pronounced,behaviour,diversity,sustained,addressed,geographic,restrictions,voiced,milwaukee,dialect,quoted,grid,nationally,nearest,roster,twentieth,separation,indies,manages,citing,intervention,guidance,severely,migration,artwork,focusing,rivals,trustees,varied,enabled,committees,centered,skating,slavery,cardinals,forcing,tasks,auckland,youtube,argues,colored,advisor,mumbai,requiring,theological,registration,refugees,nineteenth,survivors,runners,colleagues,priests,contribute,variants,workshop,concentrated,creator,lectures,temples,exploration,requirement,interactive,navigation,companion,perth,allegedly,releasing,citizenship,observation,stationed,ph.d.,sheep,breed,discovers,encourage,kilometres,journals,performers,isle,saskatchewan,hybrid,hotels,lancashire,dubbed,airfield,anchor,suburban,theoretical,sussex,anglican,stockholm,permanently,upcoming,privately,receiver,optical,highways,congo,colours,aggregate,authorized,repeatedly,varies,fluid,innovative,transformed,praise,convoy,demanded,discography,attraction,export,audiences,ordained,enlisted,occasional,westminster,syrian,heavyweight,bosnia,consultant,eventual,improving,aires,wickets,epic,reactions,scandal,i.e.,discrimination,buenos,patron,investors,conjunction,testament,construct,encountered,celebrity,expanding,georgian,brands,retain,underwent,algorithm,foods,provision,orbit,transformation,associates,tactical,compact,varieties,stability,refuge,gathering,moreover,manila,configuration,gameplay,discipline,entity,comprising,composers,skill,monitoring,ruins,museums,sustainable,aerial,altered,codes,voyage,friedrich,conflicts,storyline,travelling,conducting,merit,indicating,referendum,currency,encounter,particles,automobile,workshops,acclaimed,inhabited,doctorate,cuban,phenomenon,dome,enrollment,tobacco,governance,trend,equally,manufacture,hydrogen,grande,compensation,download,pianist,grain,shifted,neutral,evaluation,define,cycling,seized,array,relatives,motors,firms,varying,automatically,restore,nicknamed,findings,governed,investigate,manitoba,administrator,vital,integral,indonesian,confusion,publishers,enable,geographical,inland,naming,civilians,reconnaissance,indianapolis,lecturer,deer,tourists,exterior,rhode,bassist,symbols,scope,ammunition,yuan,poets,punjab,nursing,cent,developers,estimates,presbyterian,nasa,holdings,generate,renewed,computing,cyprus,arabia,duration,compounds,gastropod,permit,valid,touchdowns,facade,interactions,mineral,practiced,allegations,consequence,goalkeeper,baronet,copyright,uprising,carved,targeted,competitors,mentions,sanctuary,fees,pursued,tampa,chronicle,capabilities,specified,specimens,toll,accounting,limestone,staged,upgraded,philosophical,streams,guild,revolt,rainfall,supporter,princeton,terrain,hometown,probability,assembled,paulo,surrey,voltage,developer,destroyer,floors,lineup,curve,prevention,potentially,onwards,trips,imposed,hosting,striking,strict,admission,apartments,solely,utility,proceeded,observations,euro,incidents,vinyl,profession,haven,distant,expelled,rivalry,runway,torpedo,zones,shrine,dimensions,investigations,lithuania,idaho,pursuit,copenhagen,considerably,locality,wireless,decrease,genes,thermal,deposits,hindi,habitats,withdrawn,biblical,monuments,casting,plateau,thesis,managers,flooding,assassination,acknowledged,interim,inscription,guided,pastor,finale,insects,transported,activists,marshal,intensity,airing,cardiff,proposals,lifestyle,prey,herald,capitol,aboriginal,measuring,lasting,interpreted,occurring,desired,drawings,healthcare,panels,elimination,oslo,ghana,blog,sabha,intent,superintendent,governors,bankruptcy,p.m.,equity,disk,layers,slovenia,prussia,quartet,mechanics,graduates,politically,monks,screenplay,nato,absorbed,topped,petition,bold,morocco,exhibits,canterbury,publish,rankings,crater,dominican,enhanced,planes,lutheran,governmental,joins,collecting,brussels,unified,streak,strategies,flagship,surfaces,oval,archive,etymology,imprisonment,instructor,noting,remix,opposing,servant,rotation,width,trans,maker,synthesis,excess,tactics,snail,ltd.,lighthouse,sequences,cornwall,plantation,mythology,performs,foundations,populated,horizontal,speedway,activated,performer,diving,conceived,edmonton,subtropical,environments,prompted,semifinals,caps,bulk,treasury,recreational,telegraph,continent,portraits,relegation,catholics,graph,velocity,rulers,endangered,secular,observer,learns,inquiry,idol,dictionary,certification,estimate,cluster,armenia,observatory,revived,nadu,consumers,hypothesis,manuscripts,contents,arguments,editing,trails,arctic,essays,belfast,acquire,promotional,undertaken,corridor,proceedings,antarctic,millennium,labels,delegates,vegetation,acclaim,directing,substance,outcome,diploma,philosopher,malta,albanian,vicinity,degc,legends,regiments,consent,terrorist,scattered,presidents,gravity,orientation,deployment,duchy,refuses,estonia,crowned,separately,renovation,rises,wilderness,objectives,agreements,empress,slopes,inclusion,equality,decree,ballot,criticised,rochester,recurring,struggled,disabled,henri,poles,prussian,convert,bacteria,poorly,sudan,geological,wyoming,consistently,minimal,withdrawal,interviewed,proximity,repairs,initiatives,pakistani,republicans,propaganda,viii,abstract,commercially,availability,mechanisms,naples,discussions,underlying,lens,proclaimed,advised,spelling,auxiliary,attract,lithuanian,editors,o'brien,accordance,measurement,novelist,ussr,formats,councils,contestants,indie,facebook,parishes,barrier,battalions,sponsor,consulting,terrorism,implement,uganda,crucial,unclear,notion,distinguish,collector,attractions,filipino,ecology,investments,capability,renovated,iceland,albania,accredited,scouts,armor,sculptor,cognitive,errors,gaming,condemned,successive,consolidated,baroque,entries,regulatory,reserved,treasurer,variables,arose,technological,rounded,provider,rhine,agrees,accuracy,genera,decreased,frankfurt,ecuador,edges,particle,rendered,calculated,careers,faction,rifles,americas,gaelic,portsmouth,resides,merchants,fiscal,premises,coin,draws,presenter,acceptance,ceremonies,pollution,consensus,membrane,brigadier,nonetheless,genres,supervision,predicted,magnitude,finite,differ,ancestry,vale,delegation,removing,proceeds,placement,emigrated,siblings,molecules,payments,considers,demonstration,proportion,newer,valve,achieving,confederation,continuously,luxury,notre,introducing,coordinates,charitable,squadrons,disorders,geometry,winnipeg,ulster,loans,longtime,receptor,preceding,belgrade,mandate,wrestler,neighbourhood,factories,buddhism,imported,sectors,protagonist,steep,elaborate,prohibited,artifacts,prizes,pupil,cooperative,sovereign,subspecies,carriers,allmusic,nationals,settings,autobiography,neighborhoods,analog,facilitate,voluntary,jointly,newfoundland,organizing,raids,exercises,nobel,machinery,baltic,crop,granite,dense,websites,mandatory,seeks,surrendered,anthology,comedian,bombs,slot,synopsis,critically,arcade,marking,equations,halls,indo,inaugurated,embarked,speeds,clause,invention,premiership,likewise,presenting,demonstrate,designers,organize,examined,km/h,bavaria,troop,referee,detection,zurich,prairie,rapper,wingspan,eurovision,luxembourg,slovakia,inception,disputed,mammals,entrepreneur,makers,evangelical,yield,clergy,trademark,defunct,allocated,depicting,volcanic,batted,conquered,sculptures,providers,reflects,armoured,locals,walt,herzegovina,contracted,entities,sponsorship,prominence,flowing,ethiopia,marketed,corporations,withdraw,carnegie,induced,investigated,portfolio,flowering,opinions,viewing,classroom,donations,bounded,perception,leicester,fruits,charleston,academics,statute,complaints,smallest,deceased,petroleum,resolved,commanders,algebra,southampton,modes,cultivation,transmitter,spelled,obtaining,sizes,acre,pageant,bats,abbreviated,correspondence,barracks,feast,tackles,raja,derives,geology,disputes,translations,counted,constantinople,seating,macedonia,preventing,accommodation,homeland,explored,invaded,provisional,transform,sphere,unsuccessfully,missionaries,conservatives,highlights,traces,organisms,openly,dancers,fossils,absent,monarchy,combining,lanes,stint,dynamics,chains,missiles,screening,module,tribune,generating,miners,nottingham,seoul,unofficial,owing,linking,rehabilitation,citation,louisville,mollusk,depicts,differential,zimbabwe,kosovo,recommendations,responses,pottery,scorer,aided,exceptions,dialects,telecommunications,defines,elderly,lunar,coupled,flown,25th,espn,formula_1,bordered,fragments,guidelines,gymnasium,valued,complexity,papal,presumably,maternal,challenging,reunited,advancing,comprised,uncertain,favorable,twelfth,correspondent,nobility,livestock,expressway,chilean,tide,researcher,emissions,profits,lengths,accompanying,witnessed,itunes,drainage,slope,reinforced,feminist,sanskrit,develops,physicians,outlets,isbn,coordinator,averaged,termed,occupy,diagnosed,yearly,humanitarian,prospect,spacecraft,stems,enacted,linux,ancestors,karnataka,constitute,immigrant,thriller,ecclesiastical,generals,celebrations,enhance,heating,advocated,evident,advances,bombardment,watershed,shuttle,wicket,twitter,adds,branded,teaches,schemes,pension,advocacy,conservatory,cairo,varsity,freshwater,providence,seemingly,shells,cuisine,specially,peaks,intensive,publishes,trilogy,skilled,nacional,unemployment,destinations,parameters,verses,trafficking,determination,infinite,savings,alignment,linguistic,countryside,dissolution,measurements,advantages,licence,subfamily,highlands,modest,regent,algeria,crest,teachings,knockout,brewery,combine,conventions,descended,chassis,primitive,fiji,explicitly,cumberland,uruguay,laboratories,bypass,elect,informal,preceded,holocaust,tackle,minneapolis,quantity,securities,console,doctoral,religions,commissioners,expertise,unveiled,precise,diplomat,standings,infant,disciplines,sicily,endorsed,systematic,charted,armored,mild,lateral,townships,hurling,prolific,invested,wartime,compatible,galleries,moist,battlefield,decoration,convent,tubes,terrestrial,nominee,requests,delegate,leased,dubai,polar,applying,addresses,munster,sings,commercials,teamed,dances,eleventh,midland,cedar,flee,sandstone,snails,inspection,divide,asset,themed,comparable,paramount,dairy,archaeology,intact,institutes,rectangular,instances,phases,reflecting,substantially,applies,vacant,lacked,copa,coloured,encounters,sponsors,encoded,possess,revenues,ucla,chaired,a.m.,enabling,playwright,stoke,sociology,tibetan,frames,motto,financing,illustrations,gibraltar,chateau,bolivia,transmitted,enclosed,persuaded,urged,folded,suffolk,regulated,bros.,submarines,myth,oriental,malaysian,effectiveness,narrowly,acute,sunk,replied,utilized,tasmania,consortium,quantities,gains,parkway,enlarged,sided,employers,adequate,accordingly,assumption,ballad,mascot,distances,peaking,saxony,projected,affiliation,limitations,metals,guatemala,scots,theaters,kindergarten,verb,employer,differs,discharge,controller,seasonal,marching,guru,campuses,avoided,vatican,maori,excessive,chartered,modifications,caves,monetary,sacramento,mixing,institutional,celebrities,irrigation,shapes,broadcaster,anthem,attributes,demolition,offshore,specification,surveys,yugoslav,contributor,auditorium,lebanese,capturing,airports,classrooms,chennai,paths,tendency,determining,lacking,upgrade,sailors,detected,kingdoms,sovereignty,freely,decorative,momentum,scholarly,georges,gandhi,speculation,transactions,undertook,interact,similarities,cove,teammate,constituted,painters,tends,madagascar,partnerships,afghan,personalities,attained,rebounds,masses,synagogue,reopened,asylum,embedded,imaging,catalogue,defenders,taxonomy,fiber,afterward,appealed,communists,lisbon,rica,judaism,adviser,batsman,ecological,commands,lgbt,cooling,accessed,wards,shiva,employs,thirds,scenic,worcester,tallest,contestant,humanities,economist,textile,constituencies,motorway,tram,percussion,cloth,leisure,1880s,baden,flags,resemble,riots,coined,sitcom,composite,implies,daytime,tanzania,penalties,optional,competitor,excluded,steering,reversed,autonomy,reviewer,breakthrough,professionally,damages,pomeranian,deputies,valleys,ventures,highlighted,electorate,mapping,shortened,executives,tertiary,specimen,launching,bibliography,sank,pursuing,binary,descendant,marched,natives,ideology,turks,adolf,archdiocese,tribunal,exceptional,nigerian,preference,fails,loading,comeback,vacuum,favored,alter,remnants,consecrated,spectators,trends,patriarch,feedback,paved,sentences,councillor,astronomy,advocates,broader,commentator,commissions,identifying,revealing,theatres,incomplete,enables,constituent,reformation,tract,haiti,atmospheric,screened,explosive,czechoslovakia,acids,symbolic,subdivision,liberals,incorporate,challenger,erie,filmmaker,laps,kazakhstan,organizational,evolutionary,chemicals,dedication,riverside,fauna,moths,maharashtra,annexed,gen.,resembles,underwater,garnered,timeline,remake,suited,educator,hectares,automotive,feared,latvia,finalist,narrator,portable,airways,plaque,designing,villagers,licensing,flank,statues,struggles,deutsche,migrated,cellular,jacksonville,wimbledon,defining,highlight,preparatory,planets,cologne,employ,frequencies,detachment,readily,libya,resign,halt,helicopters,reef,landmarks,collaborative,irregular,retaining,helsinki,folklore,weakened,viscount,interred,professors,memorable,mega,repertoire,rowing,dorsal,albeit,progressed,operative,coronation,liner,telugu,domains,philharmonic,detect,bengali,synthetic,tensions,atlas,dramatically,paralympics,xbox,shire,kiev,lengthy,sued,notorious,seas,screenwriter,transfers,aquatic,pioneers,unesco,radius,abundant,tunnels,syndicated,inventor,accreditation,janeiro,exeter,ceremonial,omaha,cadet,predators,resided,prose,slavic,precision,abbot,deity,engaging,cambodia,estonian,compliance,demonstrations,protesters,reactor,commodore,successes,chronicles,mare,extant,listings,minerals,tonnes,parody,cultivated,traders,pioneering,supplement,slovak,preparations,collision,partnered,vocational,atoms,malayalam,welcomed,documentation,curved,functioning,presently,formations,incorporates,nazis,botanical,nucleus,ethical,greeks,metric,automated,whereby,stance,europeans,duet,disability,purchasing,email,telescope,displaced,sodium,comparative,processor,inning,precipitation,aesthetic,import,coordination,feud,alternatively,mobility,tibet,regained,succeeding,hierarchy,apostolic,catalog,reproduction,inscriptions,vicar,clusters,posthumously,rican,loosely,additions,photographic,nowadays,selective,derivative,keyboards,guides,collectively,affecting,combines,operas,networking,decisive,terminated,continuity,finishes,ancestor,consul,heated,simulation,leipzig,incorporating,georgetown,formula_2,circa,forestry,portrayal,councillors,advancement,complained,forewings,confined,transaction,definitions,reduces,televised,1890s,rapids,phenomena,belarus,alps,landscapes,quarterly,specifications,commemorate,continuation,isolation,antenna,downstream,patents,ensuing,tended,saga,lifelong,columnist,labeled,gymnastics,papua,anticipated,demise,encompasses,madras,antarctica,interval,icon,rams,midlands,ingredients,priory,strengthen,rouge,explicit,gaza,aging,securing,anthropology,listeners,adaptations,underway,vista,malay,fortified,lightweight,violations,concerto,financed,jesuit,observers,trustee,descriptions,nordic,resistant,opted,accepts,prohibition,andhra,inflation,negro,wholly,imagery,spur,instructed,gloucester,cycles,middlesex,destroyers,statewide,evacuated,hyderabad,peasants,mice,shipyard,coordinate,pitching,colombian,exploring,numbering,compression,countess,hiatus,exceed,raced,archipelago,traits,soils,o'connor,vowel,android,facto,angola,amino,holders,logistics,circuits,emergence,kuwait,partition,emeritus,outcomes,submission,promotes,barack,negotiated,loaned,stripped,50th,excavations,treatments,fierce,participant,exports,decommissioned,cameo,remarked,residences,fuselage,mound,undergo,quarry,node,midwest,specializing,occupies,etc.,showcase,molecule,offs,modules,salon,exposition,revision,peers,positioned,hunters,competes,algorithms,reside,zagreb,calcium,uranium,silicon,airs,counterpart,outlet,collectors,sufficiently,canberra,inmates,anatomy,ensuring,curves,aviv,firearms,basque,volcano,thrust,sheikh,extensions,installations,aluminum,darker,sacked,emphasized,aligned,asserted,pseudonym,spanning,decorations,eighteenth,orbital,spatial,subdivided,notation,decay,macedonian,amended,declining,cyclist,feat,unusually,commuter,birthplace,latitude,activation,overhead,30th,finalists,whites,encyclopedia,tenor,qatar,survives,complement,concentrations,uncommon,astronomical,bangalore,pius,genome,memoir,recruit,prosecutor,modification,paired,container,basilica,arlington,displacement,germanic,mongolia,proportional,debates,matched,calcutta,rows,tehran,aerospace,prevalent,arise,lowland,24th,spokesman,supervised,advertisements,clash,tunes,revelation,wanderers,quarterfinals,fisheries,steadily,memoirs,pastoral,renewable,confluence,acquiring,strips,slogan,upstream,scouting,analyst,practitioners,turbine,strengthened,heavier,prehistoric,plural,excluding,isles,persecution,turin,rotating,villain,hemisphere,unaware,arabs,corpus,relied,singular,unanimous,schooling,passive,angles,dominance,instituted,aria,outskirts,balanced,beginnings,financially,structured,parachute,viewer,attitudes,subjected,escapes,derbyshire,erosion,addressing,styled,declaring,originating,colts,adjusted,stained,occurrence,fortifications,baghdad,nitrogen,localities,yemen,galway,debris,lodz,victorious,pharmaceutical,substances,unnamed,dwelling,atop,developmental,activism,voter,refugee,forested,relates,overlooking,genocide,kannada,insufficient,oversaw,partisan,dioxide,recipients,factions,mortality,capped,expeditions,receptors,reorganized,prominently,atom,flooded,flute,orchestral,scripts,mathematician,airplay,detached,rebuilding,dwarf,brotherhood,salvation,expressions,arabian,cameroon,poetic,recruiting,bundesliga,inserted,scrapped,disabilities,evacuation,pasha,undefeated,crafts,rituals,aluminium,norm,pools,submerged,occupying,pathway,exams,prosperity,wrestlers,promotions,basal,permits,nationalism,trim,merge,gazette,tributaries,transcription,caste,porto,emerge,modeled,adjoining,counterparts,paraguay,redevelopment,renewal,unreleased,equilibrium,similarity,minorities,soviets,comprise,nodes,tasked,unrelated,expired,johan,precursor,examinations,electrons,socialism,exiled,admiralty,floods,wigan,nonprofit,lacks,brigades,screens,repaired,hanover,fascist,labs,osaka,delays,judged,statutory,colt,col.,offspring,solving,bred,assisting,retains,somalia,grouped,corresponds,tunisia,chaplain,eminent,chord,22nd,spans,viral,innovations,possessions,mikhail,kolkata,icelandic,implications,introduces,racism,workforce,alto,compulsory,admits,censorship,onset,reluctant,inferior,iconic,progression,liability,turnout,satellites,behavioral,coordinated,exploitation,posterior,averaging,fringe,krakow,mountainous,greenwich,para,plantations,reinforcements,offerings,famed,intervals,constraints,individually,nutrition,1870s,taxation,threshold,tomatoes,fungi,contractor,ethiopian,apprentice,diabetes,wool,gujarat,honduras,norse,bucharest,23rd,arguably,accompany,prone,teammates,perennial,vacancy,polytechnic,deficit,okinawa,functionality,reminiscent,tolerance,transferring,myanmar,concludes,neighbours,hydraulic,economically,slower,plots,charities,synod,investor,catholicism,identifies,bronx,interpretations,adverse,judiciary,hereditary,nominal,sensor,symmetry,cubic,triangular,tenants,divisional,outreach,representations,passages,undergoing,cartridge,testified,exceeded,impacts,limiting,railroads,defeats,regain,rendering,humid,retreated,reliability,governorate,antwerp,infamous,implied,packaging,lahore,trades,billed,extinction,ecole,rejoined,recognizes,projection,qualifications,stripes,forts,socially,lexington,accurately,sexuality,westward,wikipedia,pilgrimage,abolition,choral,stuttgart,nests,expressing,strikeouts,assessed,monasteries,reconstructed,humorous,marxist,fertile,consort,urdu,patronage,peruvian,devised,lyric,baba,nassau,communism,extraction,popularly,markings,inability,litigation,accounted,processed,emirates,tempo,cadets,eponymous,contests,broadly,oxide,courtyard,frigate,directory,apex,outline,regency,chiefly,patrols,secretariat,cliffs,residency,privy,armament,australians,dorset,geometric,genetics,scholarships,fundraising,flats,demographic,multimedia,captained,documentaries,updates,canvas,blockade,guerrilla,songwriting,administrators,intake,drought,implementing,fraction,cannes,refusal,inscribed,meditation,announcing,exported,ballots,formula_3,curator,basel,arches,flour,subordinate,confrontation,gravel,simplified,berkshire,patriotic,tuition,employing,servers,castile,posting,combinations,discharged,miniature,mutations,constellation,incarnation,ideals,necessity,granting,ancestral,crowds,pioneered,mormon,methodology,rama,indirect,complexes,bavarian,patrons,uttar,skeleton,bollywood,flemish,viable,bloc,breeds,triggered,sustainability,tailed,referenced,comply,takeover,latvian,homestead,platoon,communal,nationality,excavated,targeting,sundays,posed,physicist,turret,endowment,marginal,dispatched,commentators,renovations,attachment,collaborations,ridges,barriers,obligations,shareholders,prof.,defenses,presided,rite,backgrounds,arbitrary,affordable,gloucestershire,thirteenth,inlet,miniseries,possesses,detained,pressures,subscription,realism,solidarity,proto,postgraduate,noun,burmese,abundance,homage,reasoning,anterior,robust,fencing,shifting,vowels,garde,profitable,loch,anchored,coastline,samoa,terminology,prostitution,magistrate,venezuelan,speculated,regulate,fixture,colonists,digit,induction,manned,expeditionary,computational,centennial,principally,vein,preserving,engineered,numerical,cancellation,conferred,continually,borne,seeded,advertisement,unanimously,treaties,infections,ions,sensors,lowered,amphibious,lava,fourteenth,bahrain,niagara,nicaragua,squares,congregations,26th,periodic,proprietary,1860s,contributors,seller,overs,emission,procession,presumed,illustrator,zinc,gases,tens,applicable,stretches,reproductive,sixteenth,apparatus,accomplishments,canoe,guam,oppose,recruitment,accumulated,limerick,namibia,staging,remixes,ordnance,uncertainty,pedestrian,temperate,treason,deposited,registry,cerambycidae,attracting,lankan,reprinted,shipbuilding,homosexuality,neurons,eliminating,1900s,resume,ministries,beneficial,blackpool,surplus,northampton,licenses,constructing,announcer,standardized,alternatives,taipei,inadequate,failures,yields,medalist,titular,obsolete,torah,burlington,predecessors,lublin,retailers,castles,depiction,issuing,gubernatorial,propulsion,tiles,damascus,discs,alternating,pomerania,peasant,tavern,redesignated,27th,illustration,focal,mans,codex,specialists,productivity,antiquity,controversies,promoter,pits,companions,behaviors,lyrical,prestige,creativity,swansea,dramas,approximate,feudal,tissues,crude,campaigned,unprecedented,chancel,amendments,surroundings,allegiance,exchanges,align,firmly,optimal,commenting,reigning,landings,obscure,1850s,contemporaries,paternal,devi,endurance,communes,incorporation,denominations,exchanged,routing,resorts,amnesty,slender,explores,suppression,heats,pronunciation,centred,coupe,stirling,freelance,treatise,linguistics,laos,informs,discovering,pillars,encourages,halted,robots,definitive,maturity,tuberculosis,venetian,silesian,unchanged,originates,mali,lincolnshire,quotes,seniors,premise,contingent,distribute,danube,gorge,logging,dams,curling,seventeenth,specializes,wetlands,deities,assess,thickness,rigid,culminated,utilities,substrate,insignia,nile,assam,shri,currents,suffrage,canadians,mortar,asteroid,bosnian,discoveries,enzymes,sanctioned,replica,hymn,investigators,tidal,dominate,derivatives,converting,leinster,verbs,honoured,criticisms,dismissal,discrete,masculine,reorganization,unlimited,wurttemberg,sacks,allocation,bahn,jurisdictions,participates,lagoon,famine,communion,culminating,surveyed,shortage,cables,intersects,cassette,foremost,adopting,solicitor,outright,bihar,reissued,farmland,dissertation,turnpike,baton,photographed,christchurch,kyoto,finances,rails,histories,linebacker,kilkenny,accelerated,dispersed,handicap,absorption,rancho,ceramic,captivity,cites,font,weighed,mater,utilize,bravery,extract,validity,slovenian,seminars,discourse,ranged,duel,ironically,warships,sega,temporal,surpassed,prolonged,recruits,northumberland,greenland,contributes,patented,eligibility,unification,discusses,reply,translates,beirut,relies,torque,northward,reviewers,monastic,accession,neural,tramway,heirs,sikh,subscribers,amenities,taliban,audit,rotterdam,wagons,kurdish,favoured,combustion,meanings,persia,browser,diagnostic,niger,formula_4,denomination,dividing,parameter,branding,badminton,leningrad,sparked,hurricanes,beetles,propeller,mozambique,refined,diagram,exhaust,vacated,readings,markers,reconciliation,determines,concurrent,imprint,primera,organism,demonstrating,filmmakers,vanderbilt,affiliates,traction,evaluated,defendants,megachile,investigative,zambia,assassinated,rewarded,probable,staffordshire,foreigners,directorate,nominees,consolidation,commandant,reddish,differing,unrest,drilling,bohemia,resembling,instrumentation,considerations,haute,promptly,variously,dwellings,clans,tablet,enforced,cockpit,semifinal,hussein,prisons,ceylon,emblem,monumental,phrases,correspond,crossover,outlined,characterised,acceleration,caucus,crusade,protested,composing,rajasthan,habsburg,rhythmic,interception,inherent,cooled,ponds,spokesperson,gradual,consultation,kuala,globally,suppressed,builders,avengers,suffix,integer,enforce,fibers,unionist,proclamation,uncovered,infrared,adapt,eisenhower,utilizing,captains,stretched,observing,assumes,prevents,analyses,saxophone,caucasus,notices,villains,dartmouth,mongol,hostilities,stretching,veterinary,lenses,texture,prompting,overthrow,excavation,islanders,masovian,battleship,biographer,replay,degradation,departing,luftwaffe,fleeing,oversight,immigrated,serbs,fishermen,strengthening,respiratory,italians,denotes,radial,escorted,motif,wiltshire,expresses,accessories,reverted,establishments,inequality,protocols,charting,famously,satirical,entirety,trench,friction,atletico,sampling,subset,weekday,upheld,sharply,correlation,incorrect,mughal,travelers,hasan,earnings,offset,evaluate,specialised,recognizing,flexibility,nagar,postseason,algebraic,capitalism,crystals,melodies,polynomial,racecourse,defences,austro,wembley,attracts,anarchist,resurrection,reviewing,decreasing,prefix,ratified,mutation,displaying,separating,restoring,assemblies,ordinance,priesthood,cruisers,appoint,moldova,imports,directive,epidemic,militant,senegal,signaling,restriction,critique,retrospective,nationalists,undertake,sioux,canals,algerian,redesigned,philanthropist,depict,conceptual,turbines,intellectuals,eastward,applicants,contractors,vendors,undergone,namesake,ensured,tones,substituted,hindwings,arrests,tombs,transitional,principality,reelection,taiwanese,cavity,manifesto,broadcasters,spawned,thoroughbred,identities,generators,proposes,hydroelectric,johannesburg,cortex,scandinavian,killings,aggression,boycott,catalyst,physiology,fifteenth,waterfront,chromosome,organist,costly,calculation,cemeteries,flourished,recognise,juniors,merging,disciples,ashore,workplace,enlightenment,diminished,debated,hailed,podium,educate,mandated,distributor,litre,electromagnetic,flotilla,estuary,peterborough,staircase,selections,melodic,confronts,wholesale,integrate,intercepted,catalonia,unite,immense,palatinate,switches,earthquakes,occupational,successors,praising,concluding,faculties,firstly,overhaul,empirical,metacritic,inauguration,evergreen,laden,winged,philosophers,amalgamated,geoff,centimeters,napoleonic,upright,planting,brewing,fined,sensory,migrants,wherein,inactive,headmaster,warwickshire,siberia,terminals,denounced,academia,divinity,bilateral,clive,omitted,peerage,relics,apartheid,syndicate,fearing,fixtures,desirable,dismantled,ethnicity,valves,biodiversity,aquarium,ideological,visibility,creators,analyzed,tenant,balkan,postwar,supplier,smithsonian,risen,morphology,digits,bohemian,wilmington,vishnu,demonstrates,aforementioned,biographical,mapped,khorasan,phosphate,presentations,ecosystem,processors,calculations,mosaic,clashes,penned,recalls,coding,angular,lattice,macau,accountability,extracted,pollen,therapeutic,overlap,violinist,deposed,candidacy,infants,covenant,bacterial,restructuring,dungeons,ordination,conducts,builds,invasive,customary,concurrently,relocation,cello,statutes,borneo,entrepreneurs,sanctions,packet,rockefeller,piedmont,comparisons,waterfall,receptions,glacial,surge,signatures,alterations,advertised,enduring,somali,botanist,100th,canonical,motifs,longitude,circulated,alloy,indirectly,margins,preserves,internally,besieged,shale,peripheral,drained,baseman,reassigned,tobago,soloist,socio,grazing,contexts,roofs,portraying,ottomans,shrewsbury,noteworthy,lamps,supplying,beams,qualifier,portray,greenhouse,stronghold,hitter,rites,cretaceous,urging,derive,nautical,aiming,fortunes,verde,donors,reliance,exceeding,exclusion,exercised,simultaneous,continents,guiding,pillar,gradient,poznan,eruption,clinics,moroccan,indicator,trams,piers,parallels,fragment,teatro,potassium,satire,compressed,businessmen,influx,seine,perspectives,shelters,decreases,mounting,formula_5,confederacy,equestrian,expulsion,mayors,liberia,resisted,affinity,shrub,unexpectedly,stimulus,amtrak,deported,perpendicular,statesman,wharf,storylines,romanesque,weights,surfaced,interceptions,dhaka,crambidae,orchestras,rwanda,conclude,constitutes,subsidiaries,admissions,prospective,shear,bilingual,campaigning,presiding,domination,commemorative,trailing,confiscated,petrol,acquisitions,polymer,onlyinclude,chloride,elevations,resolutions,hurdles,pledged,likelihood,objected,erect,encoding,databases,aristotle,hindus,marshes,bowled,ministerial,grange,acronym,annexation,squads,ambient,pilgrims,botany,sofla,astronomer,planetary,descending,bestowed,ceramics,diplomacy,metabolism,colonization,potomac,africans,engraved,recycling,commitments,resonance,disciplinary,jamaican,narrated,spectral,tipperary,waterford,stationary,arbitration,transparency,threatens,crossroads,slalom,oversee,centenary,incidence,economies,livery,moisture,newsletter,autobiographical,bhutan,propelled,dependence,moderately,adobe,barrels,subdivisions,outlook,labelled,stratford,arising,diaspora,barony,automobiles,ornamental,slated,norms,primetime,generalized,analysts,vectors,libyan,yielded,certificates,rooted,vernacular,belarusian,marketplace,prediction,fairfax,malawi,viruses,wooded,demos,mauritius,prosperous,coincided,liberties,huddersfield,ascent,warnings,hinduism,glucose,pulitzer,unused,filters,illegitimate,acquitted,protestants,canopy,staple,psychedelic,winding,abbas,pathways,cheltenham,lagos,niche,invaders,proponents,barred,conversely,doncaster,recession,embraced,rematch,concession,emigration,upgrades,bowls,tablets,remixed,loops,kensington,shootout,monarchs,organizers,harmful,punjabi,broadband,exempt,neolithic,profiles,portrays,parma,cyrillic,quasi,attested,regimental,revive,torpedoes,heidelberg,rhythms,spherical,denote,hymns,icons,theologian,qaeda,exceptionally,reinstated,comune,playhouse,lobbying,grossing,viceroy,delivers,visually,armistice,utrecht,syllable,vertices,analogous,annex,refurbished,entrants,knighted,disciple,rhetoric,detailing,inactivated,ballads,algae,intensified,favourable,sanitation,receivers,pornography,commemorated,cannons,entrusted,manifold,photographers,pueblo,textiles,steamer,myths,marquess,onward,liturgical,romney,uzbekistan,consistency,denoted,hertfordshire,convex,hearings,sulfur,universidad,podcast,selecting,emperors,arises,justices,1840s,mongolian,exploited,termination,digitally,infectious,sedan,symmetric,penal,illustrate,formulation,attribute,problematic,modular,inverse,berth,searches,rutgers,leicestershire,enthusiasts,lockheed,upwards,transverse,accolades,backward,archaeologists,crusaders,nuremberg,defects,ferries,vogue,containers,openings,transporting,separates,lumpur,purchases,attain,wichita,topology,woodlands,deleted,periodically,syntax,overturned,musicals,corp.,strasbourg,instability,nationale,prevailing,cache,marathi,versailles,unmarried,grains,straits,antagonist,segregation,assistants,d'etat,contention,dictatorship,unpopular,motorcycles,criterion,analytical,salzburg,militants,hanged,worcestershire,emphasize,paralympic,erupted,convinces,offences,oxidation,nouns,populace,atari,spanned,hazardous,educators,playable,births,baha'i,preseason,generates,invites,meteorological,handbook,foothills,enclosure,diffusion,mirza,convergence,geelong,coefficient,connector,formula_6,cylindrical,disasters,pleaded,knoxville,contamination,compose,libertarian,arrondissement,franciscan,intercontinental,susceptible,initiation,malaria,unbeaten,consonants,waived,saloon,popularized,estadio,pseudo,interdisciplinary,transports,transformers,carriages,bombings,revolves,ceded,collaborator,celestial,exemption,colchester,maltese,oceanic,ligue,crete,shareholder,routed,depictions,ridden,advisors,calculate,lending,guangzhou,simplicity,newscast,scheduling,snout,eliot,undertaking,armenians,nottinghamshire,whitish,consulted,deficiency,salle,cinemas,superseded,rigorous,kerman,convened,landowners,modernization,evenings,pitches,conditional,scandinavia,differed,formulated,cyclists,swami,guyana,dunes,electrified,appalachian,abdomen,scenarios,prototypes,sindh,consonant,adaptive,boroughs,wolverhampton,modelling,cylinders,amounted,minimize,ambassadors,lenin,settler,coincide,approximation,grouping,murals,bullying,registers,rumours,engagements,energetic,vertex,annals,bordering,geologic,yellowish,runoff,converts,allegheny,facilitated,saturdays,colliery,monitored,rainforest,interfaces,geographically,impaired,prevalence,joachim,paperback,slowed,shankar,distinguishing,seminal,categorized,authorised,auspices,bandwidth,asserts,rebranded,balkans,supplemented,seldom,weaving,capsule,apostles,populous,monmouth,payload,symphonic,densely,shoreline,managerial,masonry,antioch,averages,textbooks,royalist,coliseum,tandem,brewers,diocesan,posthumous,walled,incorrectly,distributions,ensued,reasonably,graffiti,propagation,automation,harmonic,augmented,middleweight,limbs,elongated,landfall,comparatively,literal,grossed,koppen,wavelength,1830s,cerebral,boasts,congestion,physiological,practitioner,coasts,cartoonist,undisclosed,frontal,launches,burgundy,qualifiers,imposing,stade,flanked,assyrian,raided,multiplayer,montane,chesapeake,pathology,drains,vineyards,intercollegiate,semiconductor,grassland,convey,citations,predominant,rejects,benefited,yahoo,graphs,busiest,encompassing,hamlets,explorers,suppress,minors,graphical,calculus,sediment,intends,diverted,mainline,unopposed,cottages,initiate,alumnus,towed,autism,forums,darlington,modernist,oxfordshire,lectured,capitalist,suppliers,panchayat,actresses,foundry,southbound,commodity,wesleyan,divides,palestinians,luton,caretaker,nobleman,mutiny,organizer,preferences,nomenclature,splits,unwilling,offenders,timor,relying,halftime,semitic,arithmetic,milestone,jesuits,arctiidae,retrieved,consuming,contender,edged,plagued,inclusive,transforming,khmer,federally,insurgents,distributing,amherst,rendition,prosecutors,viaduct,disqualified,kabul,liturgy,prevailed,reelected,instructors,swimmers,aperture,churchyard,interventions,totals,darts,metropolis,fuels,fluent,northbound,correctional,inflicted,barrister,realms,culturally,aristocratic,collaborating,emphasizes,choreographer,inputs,ensembles,humboldt,practised,endowed,strains,infringement,archaeologist,congregational,magna,relativity,efficiently,proliferation,mixtape,abruptly,regeneration,commissioning,yukon,archaic,reluctantly,retailer,northamptonshire,universally,crossings,boilers,nickelodeon,revue,abbreviation,retaliation,scripture,routinely,medicinal,benedictine,kenyan,retention,deteriorated,glaciers,apprenticeship,coupling,researched,topography,entrances,anaheim,pivotal,compensate,arched,modify,reinforce,dusseldorf,journeys,motorsport,conceded,sumatra,spaniards,quantitative,loire,cinematography,discarded,botswana,morale,engined,zionist,philanthropy,sainte,fatalities,cypriot,motorsports,indicators,pricing,institut,bethlehem,implicated,gravitational,differentiation,rotor,thriving,precedent,ambiguous,concessions,forecast,conserved,fremantle,asphalt,landslide,middlesbrough,formula_7,humidity,overseeing,chronological,diaries,multinational,crimean,turnover,improvised,youths,declares,tasmanian,canadiens,fumble,refinery,weekdays,unconstitutional,upward,guardians,brownish,imminent,hamas,endorsement,naturalist,martyrs,caledonia,chords,yeshiva,reptiles,severity,mitsubishi,fairs,installment,substitution,repertory,keyboardist,interpreter,silesia,noticeable,rhineland,transmit,inconsistent,booklet,academies,epithet,pertaining,progressively,aquatics,scrutiny,prefect,toxicity,rugged,consume,o'donnell,evolve,uniquely,cabaret,mediated,landowner,transgender,palazzo,compilations,albuquerque,induce,sinai,remastered,efficacy,underside,analogue,specify,possessing,advocating,compatibility,liberated,greenville,mecklenburg,header,memorials,sewage,rhodesia,1800s,salaries,atoll,coordinating,partisans,repealed,amidst,subjective,optimization,nectar,evolving,exploits,madhya,styling,accumulation,raion,postage,responds,buccaneers,frontman,brunei,choreography,coated,kinetic,sampled,inflammatory,complementary,eclectic,norte,vijay,a.k.a,mainz,casualty,connectivity,laureate,franchises,yiddish,reputed,unpublished,economical,periodicals,vertically,bicycles,brethren,capacities,unitary,archeological,tehsil,domesday,wehrmacht,justification,angered,mysore,fielded,abuses,nutrients,ambitions,taluk,battleships,symbolism,superiority,neglect,attendees,commentaries,collaborators,predictions,yorker,breeders,investing,libretto,informally,coefficients,memorandum,pounder,collingwood,tightly,envisioned,arbor,mistakenly,captures,nesting,conflicting,enhancing,streetcar,manufactures,buckinghamshire,rewards,commemorating,stony,expenditure,tornadoes,semantic,relocate,weimar,iberian,sighted,intending,ensign,beverages,expectation,differentiate,centro,utilizes,saxophonist,catchment,transylvania,ecosystems,shortest,sediments,socialists,ineffective,kapoor,formidable,heroine,guantanamo,prepares,scattering,pamphlet,verified,elector,barons,totaling,shrubs,pyrenees,amalgamation,mutually,longitudinal,comte,negatively,masonic,envoy,sexes,akbar,mythical,tonga,bishopric,assessments,malaya,warns,interiors,reefs,reflections,neutrality,musically,nomadic,waterways,provence,collaborate,scaled,adulthood,emerges,euros,optics,incentives,overland,periodical,liege,awarding,realization,slang,affirmed,schooner,hokkaido,czechoslovak,protectorate,undrafted,disagreed,commencement,electors,spruce,swindon,fueled,equatorial,inventions,suites,slovene,backdrop,adjunct,energies,remnant,inhabit,alliances,simulcast,reactors,mosques,travellers,outfielder,plumage,migratory,benin,experimented,fibre,projecting,drafting,laude,evidenced,northernmost,indicted,directional,replication,croydon,comedies,jailed,organizes,devotees,reservoirs,turrets,originate,economists,songwriters,junta,trenches,mounds,proportions,comedic,apostle,azerbaijani,farmhouse,resembled,disrupted,playback,mixes,diagonal,relevance,govern,programmer,gdansk,maize,soundtracks,tendencies,mastered,impacted,believers,kilometre,intervene,chairperson,aerodrome,sails,subsidies,ensures,aesthetics,congresses,ratios,sardinia,southernmost,functioned,controllers,downward,randomly,distortion,regents,palatine,disruption,spirituality,vidhan,tracts,compiler,ventilation,anchorage,symposium,assert,pistols,excelled,avenues,convoys,moniker,constructions,proponent,phased,spines,organising,schleswig,policing,campeonato,mined,hourly,croix,lucrative,authenticity,haitian,stimulation,burkina,espionage,midfield,manually,staffed,awakening,metabolic,biographies,entrepreneurship,conspicuous,guangdong,preface,subgroup,mythological,adjutant,feminism,vilnius,oversees,honourable,tripoli,stylized,kinase,societe,notoriety,altitudes,configurations,outward,transmissions,announces,auditor,ethanol,clube,nanjing,mecca,haifa,blogs,postmaster,paramilitary,depart,positioning,potent,recognizable,spire,brackets,remembrance,overlapping,turkic,articulated,scientology,operatic,deploy,readiness,biotechnology,restrict,cinematographer,inverted,synonymous,administratively,westphalia,commodities,replaces,downloads,centralized,munitions,preached,sichuan,fashionable,implementations,matrices,hiv/aids,loyalist,luzon,celebrates,hazards,heiress,mercenaries,synonym,creole,ljubljana,technician,auditioned,technicians,viewpoint,wetland,mongols,princely,sharif,coating,dynasties,southward,doubling,formula_8,mayoral,harvesting,conjecture,goaltender,oceania,spokane,welterweight,bracket,gatherings,weighted,newscasts,mussolini,affiliations,disadvantage,vibrant,spheres,sultanate,distributors,disliked,establishes,marches,drastically,yielding,jewellery,yokohama,vascular,airlift,canons,subcommittee,repression,strengths,graded,outspoken,fused,pembroke,filmography,redundant,fatigue,repeal,threads,reissue,pennant,edible,vapor,corrections,stimuli,commemoration,dictator,anand,secession,amassed,orchards,pontifical,experimentation,greeted,bangor,forwards,decomposition,quran,trolley,chesterfield,traverse,sermons,burials,skier,climbs,consultants,petitioned,reproduce,parted,illuminated,kurdistan,reigned,occupants,packaged,geometridae,woven,regulating,protagonists,crafted,affluent,clergyman,consoles,migrant,supremacy,attackers,caliph,defect,convection,rallies,huron,resin,segunda,quota,warship,overseen,criticizing,shrines,glamorgan,lowering,beaux,hampered,invasions,conductors,collects,bluegrass,surrounds,substrates,perpetual,chronology,pulmonary,executions,crimea,compiling,noctuidae,battled,tumors,minsk,novgorod,serviced,yeast,computation,swamps,theodor,baronetcy,salford,uruguayan,shortages,odisha,siberian,novelty,cinematic,invitational,decks,dowager,oppression,bandits,appellate,state-of-the-art,clade,palaces,signalling,galaxies,industrialist,tensor,learnt,incurred,magistrates,binds,orbits,ciudad,willingness,peninsular,basins,biomedical,shafts,marlborough,bournemouth,withstand,fitzroy,dunedin,variance,steamship,integrating,muscular,fines,akron,bulbophyllum,malmo,disclosed,cornerstone,runways,medicines,twenty20,gettysburg,progresses,frigates,bodied,transformations,transforms,helens,modelled,versatile,regulator,pursuits,legitimacy,amplifier,scriptures,voyages,examines,presenters,octagonal,poultry,formula_9,anatolia,computed,migrate,directorial,hybrids,localized,preferring,guggenheim,persisted,grassroots,inflammation,fishery,otago,vigorous,professions,instructional,inexpensive,insurgency,legislators,sequels,surnames,agrarian,stainless,nairobi,minas,forerunner,aristocracy,transitions,sicilian,showcased,doses,hiroshima,summarized,gearbox,emancipation,limitation,nuclei,seismic,abandonment,dominating,appropriations,occupations,electrification,hilly,contracting,exaggerated,entertainer,kazan,oricon,cartridges,characterization,parcel,maharaja,exceeds,aspiring,obituary,flattened,contrasted,narration,replies,oblique,outpost,fronts,arranger,talmud,keynes,doctrines,endured,confesses,fortification,supervisors,kilometer,academie,jammu,bathurst,piracy,prostitutes,navarre,cumulative,cruises,lifeboat,twinned,radicals,interacting,expenditures,wexford,libre,futsal,curated,clockwise,colloquially,procurement,immaculate,lyricist,enhancement,porcelain,alzheimer,highlighting,judah,disagreements,storytelling,sheltered,wroclaw,vaudeville,contrasts,neoclassical,compares,contrasting,deciduous,francaise,descriptive,cyclic,reactive,antiquities,meiji,repeats,creditors,forcibly,newmarket,picturesque,impending,uneven,bison,raceway,solvent,ecumenical,optic,professorship,harvested,waterway,banjo,pharaoh,geologist,scanning,dissent,recycled,unmanned,retreating,gospels,aqueduct,branched,tallinn,groundbreaking,syllables,hangar,designations,procedural,craters,cabins,encryption,anthropologist,montevideo,outgoing,inverness,chattanooga,fascism,calais,chapels,groundwater,downfall,misleading,robotic,tortricidae,pixel,handel,prohibit,crewe,renaming,reprised,kickoff,leftist,spaced,integers,causeway,pines,authorship,organise,ptolemy,accessibility,virtues,lesions,iroquois,qur'an,atheist,synthesized,biennial,confederates,dietary,skaters,stresses,tariff,koreans,intercity,republics,quintet,baroness,naive,amplitude,insistence,tbilisi,residues,grammatical,diversified,egyptians,accompaniment,vibration,repository,mandal,topological,distinctions,coherent,invariant,batters,nuevo,internationals,implements,follower,bahia,widened,independents,cantonese,totaled,guadalajara,wolverines,befriended,muzzle,surveying,hungarians,medici,deportation,rayon,approx,recounts,attends,clerical,hellenic,furnished,alleging,soluble,systemic,gallantry,bolshevik,intervened,hostel,gunpowder,specialising,stimulate,leiden,removes,thematic,floral,bafta,printers,conglomerate,eroded,analytic,successively,lehigh,thessaloniki,kilda,clauses,ascended,nehru,scripted,tokugawa,competence,diplomats,exclude,consecration,freedoms,assaults,revisions,blacksmith,textual,sparse,concacaf,slain,uploaded,enraged,whaling,guise,stadiums,debuting,dormitory,cardiovascular,yunnan,dioceses,consultancy,notions,lordship,archdeacon,collided,medial,airfields,garment,wrestled,adriatic,reversal,refueling,verification,jakob,horseshoe,intricate,veracruz,sarawak,syndication,synthesizer,anthologies,stature,feasibility,guillaume,narratives,publicized,antrim,intermittent,constituents,grimsby,filmmaking,doping,unlawful,nominally,transmitting,documenting,seater,internationale,ejected,steamboat,alsace,boise,ineligible,geared,vassal,mustered,ville,inline,pairing,eurasian,kyrgyzstan,barnsley,reprise,stereotypes,rushes,conform,firefighters,deportivo,revolutionaries,rabbis,concurrency,charters,sustaining,aspirations,algiers,chichester,falkland,morphological,systematically,volcanoes,designate,artworks,reclaimed,jurist,anglia,resurrected,chaotic,feasible,circulating,simulated,environmentally,confinement,adventist,harrisburg,laborers,ostensibly,universiade,pensions,influenza,bratislava,octave,refurbishment,gothenburg,putin,barangay,annapolis,breaststroke,illustrates,distorted,choreographed,promo,emphasizing,stakeholders,descends,exhibiting,intrinsic,invertebrates,evenly,roundabout,salts,formula_10,strata,inhibition,branching,stylistic,rumored,realises,mitochondrial,commuted,adherents,logos,bloomberg,telenovela,guineas,charcoal,engages,winery,reflective,siena,cambridgeshire,ventral,flashback,installing,engraving,grasses,traveller,rotated,proprietor,nationalities,precedence,sourced,trainers,cambodian,reductions,depleted,saharan,classifications,biochemistry,plaintiffs,arboretum,humanist,fictitious,aleppo,climates,bazaar,his/her,homogeneous,multiplication,moines,indexed,linguist,skeletal,foliage,societal,differentiated,informing,mammal,infancy,archival,cafes,malls,graeme,musee,schizophrenia,fargo,pronouns,derivation,descend,ascending,terminating,deviation,recaptured,confessions,weakening,tajikistan,bahadur,pasture,b/hip,donegal,supervising,sikhs,thinkers,euclidean,reinforcement,friars,portage,fuscous,lucknow,synchronized,assertion,choirs,privatization,corrosion,multitude,skyscraper,royalties,ligament,usable,spores,directs,clashed,stockport,fronted,dependency,contiguous,biologist,backstroke,powerhouse,frescoes,phylogenetic,welding,kildare,gabon,conveyed,augsburg,severn,continuum,sahib,lille,injuring,passeriformesfamily,succeeds,translating,unitarian,startup,turbulent,outlying,philanthropic,stanislaw,idols,claremont,conical,haryana,armagh,blended,implicit,conditioned,modulation,rochdale,labourers,coinage,shortstop,potsdam,gears,obesity,bestseller,advisers,bouts,comedians,jozef,lausanne,taxonomic,correlated,columbian,marne,indications,psychologists,libel,edict,beaufort,disadvantages,renal,finalized,racehorse,unconventional,disturbances,falsely,zoology,adorned,redesign,executing,narrower,commended,appliances,stalls,resurgence,saskatoon,miscellaneous,permitting,epoch,formula_11,cumbria,forefront,vedic,eastenders,disposed,supermarkets,rower,inhibitor,magnesium,colourful,yusuf,harrow,formulas,centrally,balancing,ionic,nocturnal,consolidate,ornate,raiding,charismatic,accelerate,nominate,residual,dhabi,commemorates,attribution,uninhabited,mindanao,atrocities,genealogical,romani,applicant,enactment,abstraction,trough,pulpit,minuscule,misconduct,grenades,timely,supplements,messaging,curvature,ceasefire,telangana,susquehanna,braking,redistribution,shreveport,neighbourhoods,gregorian,widowed,khuzestan,empowerment,scholastic,evangelist,peptide,topical,theorist,historia,thence,sudanese,museo,jurisprudence,masurian,frankish,headlined,recounted,netball,petitions,tolerant,hectare,truncated,southend,methane,captives,reigns,massif,subunit,acidic,weightlifting,footballers,sabah,britannia,tunisian,segregated,sawmill,withdrawing,unpaid,weaponry,somme,perceptions,unicode,alcoholism,durban,wrought,waterfalls,jihad,auschwitz,upland,eastbound,adjective,anhalt,evaluating,regimes,guildford,reproduced,pamphlets,hierarchical,maneuvers,hanoi,fabricated,repetition,enriched,arterial,replacements,tides,globalization,adequately,westbound,satisfactory,fleets,phosphorus,lastly,neuroscience,anchors,xinjiang,membranes,improvisation,shipments,orthodoxy,submissions,bolivian,mahmud,ramps,leyte,pastures,outlines,flees,transmitters,fares,sequential,stimulated,novice,alternately,symmetrical,breakaway,layered,baronets,lizards,blackish,edouard,horsepower,penang,principals,mercantile,maldives,overwhelmingly,hawke,rallied,prostate,conscription,juveniles,maccabi,carvings,strikers,sudbury,spurred,improves,lombardy,macquarie,parisian,elastic,distillery,shetland,humane,brentford,wrexham,warehouses,routines,encompassed,introductory,isfahan,instituto,palais,revolutions,sporadic,impoverished,portico,fellowships,speculative,enroll,dormant,adhere,fundamentally,sculpted,meritorious,template,upgrading,reformer,rectory,uncredited,indicative,creeks,galveston,radically,hezbollah,firearm,educating,prohibits,trondheim,locus,refit,headwaters,screenings,lowlands,wasps,coarse,attaining,sedimentary,perished,pitchfork,interned,cerro,stagecoach,aeronautical,liter,transitioned,haydn,inaccurate,legislatures,bromwich,knesset,spectroscopy,butte,asiatic,degraded,concordia,catastrophic,lobes,wellness,pensacola,periphery,hapoel,theta,horizontally,freiburg,liberalism,pleas,durable,warmian,offenses,mesopotamia,shandong,unsuitable,hospitalized,appropriately,phonetic,encompass,conversions,observes,illnesses,breakout,assigns,crowns,inhibitors,nightly,manifestation,fountains,maximize,alphabetical,sloop,expands,newtown,widening,gaddafi,commencing,camouflage,footprint,tyrol,barangays,universite,highlanders,budgets,query,lobbied,westchester,equator,stipulated,pointe,distinguishes,allotted,embankment,advises,storing,loyalists,fourier,rehearsals,starvation,gland,rihanna,tubular,expressive,baccalaureate,intersections,revered,carbonate,eritrea,craftsmen,cosmopolitan,sequencing,corridors,shortlisted,bangladeshi,persians,mimic,parades,repetitive,recommends,flanks,promoters,incompatible,teaming,ammonia,greyhound,solos,improper,legislator,newsweek,recurrent,vitro,cavendish,eireann,crises,prophets,mandir,strategically,guerrillas,formula_12,ghent,contenders,equivalence,drone,sociological,hamid,castes,statehood,aland,clinched,relaunched,tariffs,simulations,williamsburg,rotate,mediation,smallpox,harmonica,lodges,lavish,restrictive,o'sullivan,detainees,polynomials,echoes,intersecting,learners,elects,charlemagne,defiance,epsom,liszt,facilitating,absorbing,revelations,padua,pieter,pious,penultimate,mammalian,montenegrin,supplementary,widows,aromatic,croats,roanoke,trieste,legions,subdistrict,babylonian,grasslands,volga,violently,sparsely,oldies,telecommunication,respondents,quarries,downloadable,commandos,taxpayer,catalytic,malabar,afforded,copying,declines,nawab,junctions,assessing,filtering,classed,disused,compliant,christoph,gottingen,civilizations,hermitage,caledonian,whereupon,ethnically,springsteen,mobilization,terraces,indus,excel,zoological,enrichment,simulate,guitarists,registrar,cappella,invoked,reused,manchu,configured,uppsala,genealogy,mergers,casts,curricular,rebelled,subcontinent,horticultural,parramatta,orchestrated,dockyard,claudius,decca,prohibiting,turkmenistan,brahmin,clandestine,obligatory,elaborated,parasitic,helix,constraint,spearheaded,rotherham,eviction,adapting,albans,rescues,sociologist,guiana,convicts,occurrences,kamen,antennas,asturias,wheeled,sanitary,deterioration,trier,theorists,baseline,announcements,valea,planners,factual,serialized,serials,bilbao,demoted,fission,jamestown,cholera,alleviate,alteration,indefinite,sulfate,paced,climatic,valuation,artisans,proficiency,aegean,regulators,fledgling,sealing,influencing,servicemen,frequented,cancers,tambon,narayan,bankers,clarified,embodied,engraver,reorganisation,dissatisfied,dictated,supplemental,temperance,ratification,puget,nutrient,pretoria,papyrus,uniting,ascribed,cores,coptic,schoolhouse,barrio,1910s,armory,defected,transatlantic,regulates,ported,artefacts,specifies,boasted,scorers,mollusks,emitted,navigable,quakers,projective,dialogues,reunification,exponential,vastly,banners,unsigned,dissipated,halves,coincidentally,leasing,purported,escorting,estimation,foxes,lifespan,inflorescence,assimilation,showdown,staunch,prologue,ligand,superliga,telescopes,northwards,keynote,heaviest,taunton,redeveloped,vocalists,podlaskie,soyuz,rodents,azores,moravian,outset,parentheses,apparel,domestically,authoritative,polymers,monterrey,inhibit,launcher,jordanian,folds,taxis,mandates,singled,liechtenstein,subsistence,marxism,ousted,governorship,servicing,offseason,modernism,prism,devout,translators,islamist,chromosomes,pitted,bedfordshire,fabrication,authoritarian,javanese,leaflets,transient,substantive,predatory,sigismund,assassinate,diagrams,arrays,rediscovered,reclamation,spawning,fjord,peacekeeping,strands,fabrics,highs,regulars,tirana,ultraviolet,athenian,filly,barnet,naacp,nueva,favourites,terminates,showcases,clones,inherently,interpreting,bjorn,finely,lauded,unspecified,chola,pleistocene,insulation,antilles,donetsk,funnel,nutritional,biennale,reactivated,southport,primate,cavaliers,austrians,interspersed,restarted,suriname,amplifiers,wladyslaw,blockbuster,sportsman,minogue,brightness,benches,bridgeport,initiating,israelis,orbiting,newcomers,externally,scaling,transcribed,impairment,luxurious,longevity,impetus,temperament,ceilings,tchaikovsky,spreads,pantheon,bureaucracy,1820s,heraldic,villas,formula_13,galician,meath,avoidance,corresponded,headlining,connacht,seekers,rappers,solids,monograph,scoreless,opole,isotopes,himalayas,parodies,garments,microscopic,republished,havilland,orkney,demonstrators,pathogen,saturated,hellenistic,facilitates,aerodynamic,relocating,indochina,laval,astronomers,bequeathed,administrations,extracts,nagoya,torquay,demography,medicare,ambiguity,renumbered,pursuant,concave,syriac,electrode,dispersal,henan,bialystok,walsall,crystalline,puebla,janata,illumination,tianjin,enslaved,coloration,championed,defamation,grille,johor,rejoin,caspian,fatally,planck,workings,appointing,institutionalized,wessex,modernized,exemplified,regatta,jacobite,parochial,programmers,blending,eruptions,insurrection,regression,indices,sited,dentistry,mobilized,furnishings,levant,primaries,ardent,nagasaki,conqueror,dorchester,opined,heartland,amman,mortally,wellesley,bowlers,outputs,coveted,orthography,immersion,disrepair,disadvantaged,curate,childless,condensed,codice_1,remodeled,resultant,bolsheviks,superfamily,saxons,2010s,contractual,rivalries,malacca,oaxaca,magnate,vertebrae,quezon,olympiad,yucatan,tyres,macro,specialization,commendation,caliphate,gunnery,exiles,excerpts,fraudulent,adjustable,aramaic,interceptor,drumming,standardization,reciprocal,adolescents,federalist,aeronautics,favorably,enforcing,reintroduced,zhejiang,refining,biplane,banknotes,accordion,intersect,illustrating,summits,classmate,militias,biomass,massacres,epidemiology,reworked,wrestlemania,nantes,auditory,taxon,elliptical,chemotherapy,asserting,avoids,proficient,airmen,yellowstone,multicultural,alloys,utilization,seniority,kuyavian,huntsville,orthogonal,bloomington,cultivars,casimir,internment,repulsed,impedance,revolving,fermentation,parana,shutout,partnering,empowered,islamabad,polled,classify,amphibians,greyish,obedience,4x100,projectile,khyber,halfback,relational,d'ivoire,synonyms,endeavour,padma,customized,mastery,defenceman,berber,purge,interestingly,covent,promulgated,restricting,condemnation,hillsborough,walkers,privateer,intra,captaincy,naturalized,huffington,detecting,hinted,migrating,bayou,counterattack,anatomical,foraging,unsafe,swiftly,outdated,paraguayan,attire,masjid,endeavors,jerseys,triassic,quechua,growers,axial,accumulate,wastewater,cognition,fungal,animator,pagoda,kochi,uniformly,antibody,yerevan,hypotheses,combatants,italianate,draining,fragmentation,snowfall,formative,inversion,kitchener,identifier,additive,lucha,selects,ashland,cambrian,racetrack,trapping,congenital,primates,wavelengths,expansions,yeomanry,harcourt,wealthiest,awaited,punta,intervening,aggressively,vichy,piloted,midtown,tailored,heyday,metadata,guadalcanal,inorganic,hadith,pulses,francais,tangent,scandals,erroneously,tractors,pigment,constabulary,jiangsu,landfill,merton,basalt,astor,forbade,debuts,collisions,exchequer,stadion,roofed,flavour,sculptors,conservancy,dissemination,electrically,undeveloped,existent,surpassing,pentecostal,manifested,amend,formula_14,superhuman,barges,tunis,analytics,argyll,liquids,mechanized,domes,mansions,himalayan,indexing,reuters,nonlinear,purification,exiting,timbers,triangles,decommissioning,departmental,causal,fonts,americana,sept.,seasonally,incomes,razavi,sheds,memorabilia,rotational,terre,sutra,protege,yarmouth,grandmaster,annum,looted,imperialism,variability,liquidation,baptised,isotope,showcasing,milling,rationale,hammersmith,austen,streamlined,acknowledging,contentious,qaleh,breadth,turing,referees,feral,toulon,unofficially,identifiable,standout,labeling,dissatisfaction,jurgen,angrily,featherweight,cantons,constrained,dominates,standalone,relinquished,theologians,markedly,italics,downed,nitrate,likened,gules,craftsman,singaporean,pixels,mandela,moray,parity,departement,antigen,academically,burgh,brahma,arranges,wounding,triathlon,nouveau,vanuatu,banded,acknowledges,unearthed,stemming,authentication,byzantines,converge,nepali,commonplace,deteriorating,recalling,palette,mathematicians,greenish,pictorial,ahmedabad,rouen,validation,u.s.a.,'best,malvern,archers,converter,undergoes,fluorescent,logistical,notification,transvaal,illicit,symphonies,stabilization,worsened,fukuoka,decrees,enthusiast,seychelles,blogger,louvre,dignitaries,burundi,wreckage,signage,pinyin,bursts,federer,polarization,urbana,lazio,schism,nietzsche,venerable,administers,seton,kilograms,invariably,kathmandu,farmed,disqualification,earldom,appropriated,fluctuations,kermanshah,deployments,deformation,wheelbase,maratha,psalm,bytes,methyl,engravings,skirmish,fayette,vaccines,ideally,astrology,breweries,botanic,opposes,harmonies,irregularities,contended,gaulle,prowess,constants,aground,filipinos,fresco,ochreous,jaipur,willamette,quercus,eastwards,mortars,champaign,braille,reforming,horned,hunan,spacious,agitation,draught,specialties,flourishing,greensboro,necessitated,swedes,elemental,whorls,hugely,structurally,plurality,synthesizers,embassies,assad,contradictory,inference,discontent,recreated,inspectors,unicef,commuters,embryo,modifying,stints,numerals,communicated,boosted,trumpeter,brightly,adherence,remade,leases,restrained,eucalyptus,dwellers,planar,grooves,gainesville,daimler,anzac,szczecin,cornerback,prized,peking,mauritania,khalifa,motorized,lodging,instrumentalist,fortresses,cervical,formula_15,passerine,sectarian,researches,apprenticed,reliefs,disclose,gliding,repairing,queue,kyushu,literate,canoeing,sacrament,separatist,calabria,parkland,flowed,investigates,statistically,visionary,commits,dragoons,scrolls,premieres,revisited,subdued,censored,patterned,elective,outlawed,orphaned,leyland,richly,fujian,miniatures,heresy,plaques,countered,nonfiction,exponent,moravia,dispersion,marylebone,midwestern,enclave,ithaca,federated,electronically,handheld,microscopy,tolls,arrivals,climbers,continual,cossacks,moselle,deserts,ubiquitous,gables,forecasts,deforestation,vertebrates,flanking,drilled,superstructure,inspected,consultative,bypassed,ballast,subsidy,socioeconomic,relic,grenada,journalistic,administering,accommodated,collapses,appropriation,reclassified,foreword,porte,assimilated,observance,fragmented,arundel,thuringia,gonzaga,shenzhen,shipyards,sectional,ayrshire,sloping,dependencies,promenade,ecuadorian,mangrove,constructs,goalscorer,heroism,iteration,transistor,omnibus,hampstead,cochin,overshadowed,chieftain,scalar,finishers,ghanaian,abnormalities,monoplane,encyclopaedia,characterize,travancore,baronetage,bearers,biking,distributes,paving,christened,inspections,banco,humber,corinth,quadratic,albanians,lineages,majored,roadside,inaccessible,inclination,darmstadt,fianna,epilepsy,propellers,papacy,montagu,bhutto,sugarcane,optimized,pilasters,contend,batsmen,brabant,housemates,sligo,ascot,aquinas,supervisory,accorded,gerais,echoed,nunavut,conservatoire,carniola,quartermaster,gminas,impeachment,aquitaine,reformers,quarterfinal,karlsruhe,accelerator,coeducational,archduke,gelechiidae,seaplane,dissident,frenchman,palau,depots,hardcover,aachen,darreh,denominational,groningen,parcels,reluctance,drafts,elliptic,counters,decreed,airship,devotional,contradiction,formula_16,undergraduates,qualitative,guatemalan,slavs,southland,blackhawks,detrimental,abolish,chechen,manifestations,arthritis,perch,fated,hebei,peshawar,palin,immensely,havre,totalling,rampant,ferns,concourse,triples,elites,olympian,larva,herds,lipid,karabakh,distal,monotypic,vojvodina,batavia,multiplied,spacing,spellings,pedestrians,parchment,glossy,industrialization,dehydrogenase,patriotism,abolitionist,mentoring,elizabethan,figurative,dysfunction,abyss,constantin,middletown,stigma,mondays,gambia,gaius,israelites,renounced,nepalese,overcoming,buren,sulphur,divergence,predation,looting,iberia,futuristic,shelved,anthropological,innsbruck,escalated,clermont,entrepreneurial,benchmark,mechanically,detachments,populist,apocalyptic,exited,embryonic,stanza,readership,chiba,landlords,expansive,boniface,therapies,perpetrators,whitehall,kassel,masts,carriageway,clinch,pathogens,mazandaran,undesirable,teutonic,miocene,nagpur,juris,cantata,compile,diffuse,dynastic,reopening,comptroller,o'neal,flourish,electing,scientifically,departs,welded,modal,cosmology,fukushima,libertadores,chang'an,asean,generalization,localization,afrikaans,cricketers,accompanies,emigrants,esoteric,southwards,shutdown,prequel,fittings,innate,wrongly,equitable,dictionaries,senatorial,bipolar,flashbacks,semitism,walkway,lyrically,legality,sorbonne,vigorously,durga,samoan,karel,interchanges,patna,decider,registering,electrodes,anarchists,excursion,overthrown,gilan,recited,michelangelo,advertiser,kinship,taboo,cessation,formula_17,premiers,traversed,madurai,poorest,torneo,exerted,replicate,spelt,sporadically,horde,landscaping,razed,hindered,esperanto,manchuria,propellant,jalan,baha'is,sikkim,linguists,pandit,racially,ligands,dowry,francophone,escarpment,behest,magdeburg,mainstay,villiers,yangtze,grupo,conspirators,martyrdom,noticeably,lexical,kazakh,unrestricted,utilised,sired,inhabits,proofs,joseon,pliny,minted,buddhists,cultivate,interconnected,reuse,viability,australasian,derelict,resolving,overlooks,menon,stewardship,playwrights,thwarted,filmfare,disarmament,protections,bundles,sidelined,hypothesized,singer/songwriter,forage,netted,chancery,townshend,restructured,quotation,hyperbolic,succumbed,parliaments,shenandoah,apical,kibbutz,storeys,pastors,lettering,ukrainians,hardships,chihuahua,avail,aisles,taluka,antisemitism,assent,ventured,banksia,seamen,hospice,faroe,fearful,woreda,outfield,chlorine,transformer,tatar,panoramic,pendulum,haarlem,styria,cornice,importing,catalyzes,subunits,enamel,bakersfield,realignment,sorties,subordinates,deanery,townland,gunmen,tutelage,evaluations,allahabad,thrace,veneto,mennonite,sharia,subgenus,satisfies,puritan,unequal,gastrointestinal,ordinances,bacterium,horticulture,argonauts,adjectives,arable,duets,visualization,woolwich,revamped,euroleague,thorax,completes,originality,vasco,freighter,sardar,oratory,sects,extremes,signatories,exporting,arisen,exacerbated,departures,saipan,furlongs,d'italia,goring,dakar,conquests,docked,offshoot,okrug,referencing,disperse,netting,summed,rewritten,articulation,humanoid,spindle,competitiveness,preventive,facades,westinghouse,wycombe,synthase,emulate,fostering,abdel,hexagonal,myriad,caters,arjun,dismay,axiom,psychotherapy,colloquial,complemented,martinique,fractures,culmination,erstwhile,atrium,electronica,anarchism,nadal,montpellier,algebras,submitting,adopts,stemmed,overcame,internacional,asymmetric,gallipoli,gliders,flushing,extermination,hartlepool,tesla,interwar,patriarchal,hitherto,ganges,combatant,marred,philology,glastonbury,reversible,isthmus,undermined,southwark,gateshead,andalusia,remedies,hastily,optimum,smartphone,evade,patrolled,beheaded,dopamine,waivers,ugandan,gujarati,densities,predicting,intestinal,tentative,interstellar,kolonia,soloists,penetrated,rebellions,qeshlaq,prospered,colegio,deficits,konigsberg,deficient,accessing,relays,kurds,politburo,codified,incarnations,occupancy,cossack,metaphysical,deprivation,chopra,piccadilly,formula_18,makeshift,protestantism,alaskan,frontiers,faiths,tendon,dunkirk,durability,autobots,bonuses,coinciding,emails,gunboat,stucco,magma,neutrons,vizier,subscriptions,visuals,envisaged,carpets,smoky,schema,parliamentarian,immersed,domesticated,parishioners,flinders,diminutive,mahabharata,ballarat,falmouth,vacancies,gilded,twigs,mastering,clerics,dalmatia,islington,slogans,compressor,iconography,congolese,sanction,blends,bulgarians,moderator,outflow,textures,safeguard,trafalgar,tramways,skopje,colonialism,chimneys,jazeera,organisers,denoting,motivations,ganga,longstanding,deficiencies,gwynedd,palladium,holistic,fascia,preachers,embargo,sidings,busan,ignited,artificially,clearwater,cemented,northerly,salim,equivalents,crustaceans,oberliga,quadrangle,historiography,romanians,vaults,fiercely,incidental,peacetime,tonal,bhopal,oskar,radha,pesticides,timeslot,westerly,cathedrals,roadways,aldershot,connectors,brahmins,paler,aqueous,gustave,chromatic,linkage,lothian,specialises,aggregation,tributes,insurgent,enact,hampden,ghulam,federations,instigated,lyceum,fredrik,chairmanship,floated,consequent,antagonists,intimidation,patriarchate,warbler,heraldry,entrenched,expectancy,habitation,partitions,widest,launchers,nascent,ethos,wurzburg,lycee,chittagong,mahatma,merseyside,asteroids,yokosuka,cooperatives,quorum,redistricting,bureaucratic,yachts,deploying,rustic,phonology,chorale,cellist,stochastic,crucifixion,surmounted,confucian,portfolios,geothermal,crested,calibre,tropics,deferred,nasir,iqbal,persistence,essayist,chengdu,aborigines,fayetteville,bastion,interchangeable,burlesque,kilmarnock,specificity,tankers,colonels,fijian,quotations,enquiry,quito,palmerston,delle,multidisciplinary,polynesian,iodine,antennae,emphasised,manganese,baptists,galilee,jutland,latent,excursions,skepticism,tectonic,precursors,negligible,musique,misuse,vitoria,expressly,veneration,sulawesi,footed,mubarak,chongqing,chemically,midday,ravaged,facets,varma,yeovil,ethnographic,discounted,physicists,attache,disbanding,essen,shogunate,cooperated,waikato,realising,motherwell,pharmacology,sulfide,inward,expatriate,devoid,cultivar,monde,andean,groupings,goran,unaffected,moldovan,postdoctoral,coleophora,delegated,pronoun,conductivity,coleridge,disapproval,reappeared,microbial,campground,olsztyn,fostered,vaccination,rabbinical,champlain,milestones,viewership,caterpillar,effected,eupithecia,financier,inferred,uzbek,bundled,bandar,balochistan,mysticism,biosphere,holotype,symbolizes,lovecraft,photons,abkhazia,swaziland,subgroups,measurable,falkirk,valparaiso,ashok,discriminatory,rarity,tabernacle,flyweight,jalisco,westernmost,antiquarian,extracellular,margrave,colspan=9,midsummer,digestive,reversing,burgeoning,substitutes,medallist,khrushchev,guerre,folio,detonated,partido,plentiful,aggregator,medallion,infiltration,shaded,santander,fared,auctioned,permian,ramakrishna,andorra,mentors,diffraction,bukit,potentials,translucent,feminists,tiers,protracted,coburg,wreath,guelph,adventurer,he/she,vertebrate,pipelines,celsius,outbreaks,australasia,deccan,garibaldi,unionists,buildup,biochemical,reconstruct,boulders,stringent,barbed,wording,furnaces,pests,befriends,organises,popes,rizal,tentacles,cadre,tallahassee,punishments,occidental,formatted,mitigation,rulings,rubens,cascades,inducing,choctaw,volta,synagogues,movable,altarpiece,mitigate,practise,intermittently,encountering,memberships,earns,signify,retractable,amounting,pragmatic,wilfrid,dissenting,divergent,kanji,reconstituted,devonian,constitutions,levied,hendrik,starch,costal,honduran,ditches,polygon,eindhoven,superstars,salient,argus,punitive,purana,alluvial,flaps,inefficient,retracted,advantageous,quang,andersson,danville,binghamton,symbolize,conclave,shaanxi,silica,interpersonal,adept,frans,pavilions,lubbock,equip,sunken,limburg,activates,prosecutions,corinthian,venerated,shootings,retreats,parapet,orissa,riviere,animations,parodied,offline,metaphysics,bluffs,plume,piety,fruition,subsidized,steeplechase,shanxi,eurasia,angled,forecasting,suffragan,ashram,larval,labyrinth,chronicler,summaries,trailed,merges,thunderstorms,filtered,formula_19,advertisers,alpes,informatics,parti,constituting,undisputed,certifications,javascript,molten,sclerosis,rumoured,boulogne,hmong,lewes,breslau,notts,bantu,ducal,messengers,radars,nightclubs,bantamweight,carnatic,kaunas,fraternal,triggering,controversially,londonderry,visas,scarcity,offaly,uprisings,repelled,corinthians,pretext,kuomintang,kielce,empties,matriculated,pneumatic,expos,agile,treatises,midpoint,prehistory,oncology,subsets,hydra,hypertension,axioms,wabash,reiterated,swapped,achieves,premio,ageing,overture,curricula,challengers,subic,selangor,liners,frontline,shutter,validated,normalized,entertainers,molluscs,maharaj,allegation,youngstown,synth,thoroughfare,regionally,pillai,transcontinental,pedagogical,riemann,colonia,easternmost,tentatively,profiled,herefordshire,nativity,meuse,nucleotide,inhibits,huntingdon,throughput,recorders,conceding,domed,homeowners,centric,gabled,canoes,fringes,breeder,subtitled,fluoride,haplogroup,zionism,izmir,phylogeny,kharkiv,romanticism,adhesion,usaaf,delegations,lorestan,whalers,biathlon,vaulted,mathematically,pesos,skirmishes,heisman,kalamazoo,gesellschaft,launceston,interacts,quadruple,kowloon,psychoanalysis,toothed,ideologies,navigational,valence,induces,lesotho,frieze,rigging,undercarriage,explorations,spoof,eucharist,profitability,virtuoso,recitals,subterranean,sizeable,herodotus,subscriber,huxley,pivot,forewing,warring,boleslaw,bharatiya,suffixes,trois,percussionist,downturn,garrisons,philosophies,chants,mersin,mentored,dramatist,guilds,frameworks,thermodynamic,venomous,mehmed,assembling,rabbinic,hegemony,replicas,enlargement,claimant,retitled,utica,dumfries,metis,deter,assortment,tubing,afflicted,weavers,rupture,ornamentation,transept,salvaged,upkeep,callsign,rajput,stevenage,trimmed,intracellular,synchronization,consular,unfavorable,royalists,goldwyn,fasting,hussars,doppler,obscurity,currencies,amiens,acorn,tagore,townsville,gaussian,migrations,porta,anjou,graphite,seaport,monographs,gladiators,metrics,calligraphy,sculptural,swietokrzyskie,tolombeh,eredivisie,shoals,queries,carts,exempted,fiberglass,mirrored,bazar,progeny,formalized,mukherjee,professed,amazon.com,cathode,moreton,removable,mountaineers,nagano,transplantation,augustinian,steeply,epilogue,adapter,decisively,accelerating,mediaeval,substituting,tasman,devonshire,litres,enhancements,himmler,nephews,bypassing,imperfect,argentinian,reims,integrates,sochi,ascii,licences,niches,surgeries,fables,versatility,indra,footpath,afonso,crore,evaporation,encodes,shelling,conformity,simplify,updating,quotient,overt,firmware,umpires,architectures,eocene,conservatism,secretion,embroidery,f.c..,tuvalu,mosaics,shipwreck,prefectural,cohort,grievances,garnering,centerpiece,apoptosis,djibouti,bethesda,formula_20,shonen,richland,justinian,dormitories,meteorite,reliably,obtains,pedagogy,hardness,cupola,manifolds,amplification,steamers,familial,dumbarton,jerzy,genital,maidstone,salinity,grumman,signifies,presbytery,meteorology,procured,aegis,streamed,deletion,nuestra,mountaineering,accords,neuronal,khanate,grenoble,axles,dispatches,tokens,turku,auctions,propositions,planters,proclaiming,recommissioned,stravinsky,obverse,bombarded,waged,saviour,massacred,reformist,purportedly,resettlement,ravenna,embroiled,minden,revitalization,hikers,bridging,torpedoed,depletion,nizam,affectionately,latitudes,lubeck,spore,polymerase,aarhus,nazism,101st,buyout,galerie,diets,overflow,motivational,renown,brevet,deriving,melee,goddesses,demolish,amplified,tamworth,retake,brokerage,beneficiaries,henceforth,reorganised,silhouette,browsers,pollutants,peron,lichfield,encircled,defends,bulge,dubbing,flamenco,coimbatore,refinement,enshrined,grizzlies,capacitor,usefulness,evansville,interscholastic,rhodesian,bulletins,diamondbacks,rockers,platted,medalists,formosa,transporter,slabs,guadeloupe,disparate,concertos,violins,regaining,mandible,untitled,agnostic,issuance,hamiltonian,brampton,srpska,homology,downgraded,florentine,epitaph,kanye,rallying,analysed,grandstand,infinitely,antitrust,plundered,modernity,colspan=3|total,amphitheatre,doric,motorists,yemeni,carnivorous,probabilities,prelate,struts,scrapping,bydgoszcz,pancreatic,signings,predicts,compendium,ombudsman,apertura,appoints,rebbe,stereotypical,valladolid,clustered,touted,plywood,inertial,kettering,curving,d'honneur,housewives,grenadier,vandals,barbarossa,necked,waltham,reputedly,jharkhand,cistercian,pursues,viscosity,organiser,cloister,islet,stardom,moorish,himachal,strives,scripps,staggered,blasts,westwards,millimeters,angolan,hubei,agility,admirals,mordellistena,coincides,platte,vehicular,cordillera,riffs,schoolteacher,canaan,acoustics,tinged,reinforcing,concentrates,daleks,monza,selectively,musik,polynesia,exporter,reviving,macclesfield,bunkers,ballets,manors,caudal,microbiology,primes,unbroken,outcry,flocks,pakhtunkhwa,abelian,toowoomba,luminous,mould,appraisal,leuven,experimentally,interoperability,hideout,perak,specifying,knighthood,vasily,excerpt,computerized,niels,networked,byzantium,reaffirmed,geographer,obscured,fraternities,mixtures,allusion,accra,lengthened,inquest,panhandle,pigments,revolts,bluetooth,conjugate,overtaken,foray,coils,breech,streaks,impressionist,mendelssohn,intermediary,panned,suggestive,nevis,upazila,rotunda,mersey,linnaeus,anecdotes,gorbachev,viennese,exhaustive,moldavia,arcades,irrespective,orator,diminishing,predictive,cohesion,polarized,montage,avian,alienation,conus,jaffna,urbanization,seawater,extremity,editorials,scrolling,dreyfus,traverses,topographic,gunboats,extratropical,normans,correspondents,recognises,millennia,filtration,ammonium,voicing,complied,prefixes,diplomas,figurines,weakly,gated,oscillator,lucerne,embroidered,outpatient,airframe,fractional,disobedience,quarterbacks,formula_21,shinto,chiapas,epistle,leakage,pacifist,avignon,penrith,renders,mantua,screenplays,gustaf,tesco,alphabetically,rations,discharges,headland,tapestry,manipur,boolean,mediator,ebenezer,subchannel,fable,bestselling,ateneo,trademarks,recurrence,dwarfs,britannica,signifying,vikram,mediate,condensation,censuses,verbandsgemeinde,cartesian,sprang,surat,britons,chelmsford,courtenay,statistic,retina,abortions,liabilities,closures,mississauga,skyscrapers,saginaw,compounded,aristocrat,msnbc,stavanger,septa,interpretive,hinder,visibly,seeding,shutouts,irregularly,quebecois,footbridge,hydroxide,implicitly,lieutenants,simplex,persuades,midshipman,heterogeneous,officiated,crackdown,lends,tartu,altars,fractions,dissidents,tapered,modernisation,scripting,blazon,aquaculture,thermodynamics,sistan,hasidic,bellator,pavia,propagated,theorized,bedouin,transnational,mekong,chronicled,declarations,kickstarter,quotas,runtime,duquesne,broadened,clarendon,brownsville,saturation,tatars,electorates,malayan,replicated,observable,amphitheater,endorsements,referral,allentown,mormons,pantomime,eliminates,typeface,allegorical,varna,conduction,evoke,interviewer,subordinated,uyghur,landscaped,conventionally,ascend,edifice,postulated,hanja,whitewater,embarking,musicologist,tagalog,frontage,paratroopers,hydrocarbons,transliterated,nicolae,viewpoints,surrealist,asheville,falklands,hacienda,glide,opting,zimbabwean,discal,mortgages,nicaraguan,yadav,ghosh,abstracted,castilian,compositional,cartilage,intergovernmental,forfeited,importation,rapping,artes,republika,narayana,condominium,frisian,bradman,duality,marche,extremist,phosphorylation,genomes,allusions,valencian,habeas,ironworks,multiplex,harpsichord,emigrate,alternated,breda,waffen,smartphones,familiarity,regionalliga,herbaceous,piping,dilapidated,carboniferous,xviii,critiques,carcinoma,sagar,chippewa,postmodern,neapolitan,excludes,notoriously,distillation,tungsten,richness,installments,monoxide,chand,privatisation,molded,maths,projectiles,luoyang,epirus,lemma,concentric,incline,erroneous,sideline,gazetted,leopards,fibres,renovate,corrugated,unilateral,repatriation,orchestration,saeed,rockingham,loughborough,formula_22,bandleader,appellation,openness,nanotechnology,massively,tonnage,dunfermline,exposes,moored,ridership,motte,eurobasket,majoring,feats,silla,laterally,playlist,downwards,methodologies,eastbourne,daimyo,cellulose,leyton,norwalk,oblong,hibernian,opaque,insular,allegory,camogie,inactivation,favoring,masterpieces,rinpoche,serotonin,portrayals,waverley,airliner,longford,minimalist,outsourcing,excise,meyrick,qasim,organisational,synaptic,farmington,gorges,scunthorpe,zoned,tohoku,librarians,davao,decor,theatrically,brentwood,pomona,acquires,planter,capacitors,synchronous,skateboarding,coatings,turbocharged,ephraim,capitulation,scoreboard,hebrides,ensues,cereals,ailing,counterpoint,duplication,antisemitic,clique,aichi,oppressive,transcendental,incursions,rename,renumbering,powys,vestry,bitterly,neurology,supplanted,affine,susceptibility,orbiter,activating,overlaps,ecoregion,raman,canoer,darfur,microorganisms,precipitated,protruding,torun,anthropologists,rennes,kangaroos,parliamentarians,edits,littoral,archived,begum,rensselaer,microphones,ypres,empower,etruscan,wisden,montfort,calibration,isomorphic,rioting,kingship,verbally,smyrna,cohesive,canyons,fredericksburg,rahul,relativistic,micropolitan,maroons,industrialized,henchmen,uplift,earthworks,mahdi,disparity,cultured,transliteration,spiny,fragmentary,extinguished,atypical,inventors,biosynthesis,heralded,curacao,anomalies,aeroplane,surya,mangalore,maastricht,ashkenazi,fusiliers,hangzhou,emitting,monmouthshire,schwarzenegger,ramayana,peptides,thiruvananthapuram,alkali,coimbra,budding,reasoned,epithelial,harbors,rudimentary,classically,parque,ealing,crusades,rotations,riparian,pygmy,inertia,revolted,microprocessor,calendars,solvents,kriegsmarine,accademia,cheshmeh,yoruba,ardabil,mitra,genomic,notables,propagate,narrates,univision,outposts,polio,birkenhead,urinary,crocodiles,pectoral,barrymore,deadliest,rupees,chaim,protons,comical,astrophysics,unifying,formula_23,vassals,cortical,audubon,pedals,tenders,resorted,geophysical,lenders,recognising,tackling,lanarkshire,doctrinal,annan,combating,guangxi,estimating,selectors,tribunals,chambered,inhabiting,exemptions,curtailed,abbasid,kandahar,boron,bissau,150th,codenamed,wearer,whorl,adhered,subversive,famer,smelting,inserting,mogadishu,zoologist,mosul,stumps,almanac,olympiacos,stamens,participatory,cults,honeycomb,geologists,dividend,recursive,skiers,reprint,pandemic,liber,percentages,adversely,stoppage,chieftains,tubingen,southerly,overcrowding,unorganized,hangars,fulfil,hails,cantilever,woodbridge,pinus,wiesbaden,fertilization,fluorescence,enhances,plenary,troublesome,episodic,thrissur,kickboxing,allele,staffing,garda,televisions,philatelic,spacetime,bullpen,oxides,leninist,enrolling,inventive,truro,compatriot,ruskin,normative,assay,gotha,murad,illawarra,gendarmerie,strasse,mazraeh,rebounded,fanfare,liaoning,rembrandt,iranians,emirate,governs,latency,waterfowl,chairmen,katowice,aristocrats,eclipsed,sentient,sonatas,interplay,sacking,decepticons,dynamical,arbitrarily,resonant,petar,velocities,alludes,wastes,prefectures,belleville,sensibility,salvadoran,consolidating,medicaid,trainees,vivekananda,molar,porous,upload,youngster,infused,doctorates,wuhan,annihilation,enthusiastically,gamespot,kanpur,accumulating,monorail,operetta,tiling,sapporo,finns,calvinist,hydrocarbon,sparrows,orienteering,cornelis,minster,vuelta,plebiscite,embraces,panchayats,focussed,remediation,brahman,olfactory,reestablished,uniqueness,northumbria,rwandan,predominately,abode,ghats,balances,californian,uptake,bruges,inert,westerns,reprints,cairn,yarra,resurfaced,audible,rossini,regensburg,italiana,fleshy,irrigated,alerts,yahya,varanasi,marginalized,expatriates,cantonment,normandie,sahitya,directives,rounder,hulls,fictionalized,constables,inserts,hipped,potosi,navies,biologists,canteen,husbandry,augment,fortnight,assamese,kampala,o'keefe,paleolithic,bluish,promontory,consecutively,striving,niall,reuniting,dipole,friendlies,disapproved,thrived,netflix,liberian,dielectric,medway,strategist,sankt,pickups,hitters,encode,rerouted,claimants,anglesey,partitioned,cavan,flutes,reared,repainted,armaments,bowed,thoracic,balliol,piero,chaplains,dehestan,sender,junkers,sindhi,sickle,dividends,metallurgy,honorific,berths,namco,springboard,resettled,gansu,copyrighted,criticizes,utopian,bendigo,ovarian,binomial,spaceflight,oratorio,proprietors,supergroup,duplicated,foreground,strongholds,revolved,optimize,layouts,westland,hurler,anthropomorphic,excelsior,merchandising,reeds,vetoed,cryptography,hollyoaks,monash,flooring,ionian,resilience,johnstown,resolves,lawmakers,alegre,wildcards,intolerance,subculture,selector,slums,formulate,bayonet,istvan,restitution,interchangeably,awakens,rostock,serpentine,oscillation,reichstag,phenotype,recessed,piotr,annotated,preparedness,consultations,clausura,preferential,euthanasia,genoese,outcrops,freemasonry,geometrical,genesee,islets,prometheus,panamanian,thunderbolt,terraced,stara,shipwrecks,futebol,faroese,sharqi,aldermen,zeitung,unify,formula_24,humanism,syntactic,earthen,blyth,taxed,rescinded,suleiman,cymru,dwindled,vitality,superieure,resupply,adolphe,ardennes,rajiv,profiling,olympique,gestation,interfaith,milosevic,tagline,funerary,druze,silvery,plough,shrubland,relaunch,disband,nunatak,minimizing,excessively,waned,attaching,luminosity,bugle,encampment,electrostatic,minesweeper,dubrovnik,rufous,greenock,hochschule,assyrians,extracting,malnutrition,priya,attainment,anhui,connotations,predicate,seabirds,deduced,pseudonyms,gopal,plovdiv,refineries,imitated,kwazulu,terracotta,tenets,discourses,brandeis,whigs,dominions,pulmonate,landslides,tutors,determinant,richelieu,farmstead,tubercles,technicolor,hegel,redundancy,greenpeace,shortening,mules,distilled,xxiii,fundamentalist,acrylic,outbuildings,lighted,corals,signaled,transistors,cavite,austerity,76ers,exposures,dionysius,outlining,commutative,permissible,knowledgeable,howrah,assemblage,inhibited,crewmen,mbit/s,pyramidal,aberdeenshire,bering,rotates,atheism,howitzer,saone,lancet,fermented,contradicted,materiel,ofsted,numeric,uniformity,josephus,nazarene,kuwaiti,noblemen,pediment,emergent,campaigner,akademi,murcia,perugia,gallen,allsvenskan,finned,cavities,matriculation,rosters,twickenham,signatory,propel,readable,contends,artisan,flamboyant,reggio,italo,fumbles,widescreen,rectangle,centimetres,collaborates,envoys,rijeka,phonological,thinly,refractive,civilisation,reductase,cognate,dalhousie,monticello,lighthouses,jitsu,luneburg,socialite,fermi,collectible,optioned,marquee,jokingly,architecturally,kabir,concubine,nationalisation,watercolor,wicklow,acharya,pooja,leibniz,rajendra,nationalized,stalemate,bloggers,glutamate,uplands,shivaji,carolingian,bucuresti,dasht,reappears,muscat,functionally,formulations,hinged,hainan,catechism,autosomal,incremental,asahi,coeur,diversification,multilateral,fewest,recombination,finisher,harrogate,hangul,feasts,photovoltaic,paget,liquidity,alluded,incubation,applauded,choruses,malagasy,hispanics,bequest,underparts,cassava,kazimierz,gastric,eradication,mowtowr,tyrosine,archbishopric,e9e9e9,unproductive,uxbridge,hydrolysis,harbours,officio,deterministic,devonport,kanagawa,breaches,freetown,rhinoceros,chandigarh,janos,sanatorium,liberator,inequalities,agonist,hydrophobic,constructors,nagorno,snowboarding,welcomes,subscribed,iloilo,resuming,catalysts,stallions,jawaharlal,harriers,definitively,roughriders,hertford,inhibiting,elgar,randomized,incumbents,episcopate,rainforests,yangon,improperly,kemal,interpreters,diverged,uttarakhand,umayyad,phnom,panathinaikos,shabbat,diode,jiangxi,forbidding,nozzle,artistry,licensee,processions,staffs,decimated,expressionism,shingle,palsy,ontology,mahayana,maribor,sunil,hostels,edwardian,jetty,freehold,overthrew,eukaryotic,schuylkill,rawalpindi,sheath,recessive,ferenc,mandibles,berlusconi,confessor,convergent,ababa,slugging,rentals,sephardic,equivalently,collagen,markov,dynamically,hailing,depressions,sprawling,fairgrounds,indistinguishable,plutarch,pressurized,banff,coldest,braunschweig,mackintosh,sociedad,wittgenstein,tromso,airbase,lecturers,subtitle,attaches,purified,contemplated,dreamworks,telephony,prophetic,rockland,aylesbury,biscay,coherence,aleksandar,judoka,pageants,theses,homelessness,luthor,sitcoms,hinterland,fifths,derwent,privateers,enigmatic,nationalistic,instructs,superimposed,conformation,tricycle,dusan,attributable,unbeknownst,laptops,etching,archbishops,ayatollah,cranial,gharbi,interprets,lackawanna,abingdon,saltwater,tories,lender,minaj,ancillary,ranching,pembrokeshire,topographical,plagiarism,murong,marque,chameleon,assertions,infiltrated,guildhall,reverence,schenectady,formula_25,kollam,notary,mexicana,initiates,abdication,basra,theorems,ionization,dismantling,eared,censors,budgetary,numeral,verlag,excommunicated,distinguishable,quarried,cagliari,hindustan,symbolizing,watertown,descartes,relayed,enclosures,militarily,sault,devolved,dalian,djokovic,filaments,staunton,tumour,curia,villainous,decentralized,galapagos,moncton,quartets,onscreen,necropolis,brasileiro,multipurpose,alamos,comarca,jorgen,concise,mercia,saitama,billiards,entomologist,montserrat,lindbergh,commuting,lethbridge,phoenician,deviations,anaerobic,denouncing,redoubt,fachhochschule,principalities,negros,announcers,seconded,parrots,konami,revivals,approving,devotee,riyadh,overtook,morecambe,lichen,expressionist,waterline,silverstone,geffen,sternites,aspiration,behavioural,grenville,tripura,mediums,genders,pyotr,charlottesville,sacraments,programmable,ps100,shackleton,garonne,sumerian,surpass,authorizing,interlocking,lagoons,voiceless,advert,steeple,boycotted,alouettes,yosef,oxidative,sassanid,benefiting,sayyid,nauru,predetermined,idealism,maxillary,polymerization,semesters,munchen,conor,outfitted,clapham,progenitor,gheorghe,observational,recognitions,numerically,colonized,hazrat,indore,contaminants,fatality,eradicate,assyria,convocation,cameos,skillful,skoda,corfu,confucius,overtly,ramadan,wollongong,placements,d.c..,permutation,contemporaneous,voltages,elegans,universitat,samar,plunder,dwindling,neuter,antonin,sinhala,campania,solidified,stanzas,fibrous,marburg,modernize,sorcery,deutscher,florets,thakur,disruptive,infielder,disintegration,internazionale,vicariate,effigy,tripartite,corrective,klamath,environs,leavenworth,sandhurst,workmen,compagnie,hoseynabad,strabo,palisades,ordovician,sigurd,grandsons,defection,viacom,sinhalese,innovator,uncontrolled,slavonic,indexes,refrigeration,aircrew,superbike,resumption,neustadt,confrontations,arras,hindenburg,ripon,embedding,isomorphism,dwarves,matchup,unison,lofty,argos,louth,constitutionally,transitive,newington,facelift,degeneration,perceptual,aviators,enclosing,igneous,symbolically,academician,constitutionality,iso/iec,sacrificial,maturation,apprentices,enzymology,naturalistic,hajji,arthropods,abbess,vistula,scuttled,gradients,pentathlon,etudes,freedmen,melaleuca,thrice,conductive,sackville,franciscans,stricter,golds,kites,worshiped,monsignor,trios,orally,tiered,primacy,bodywork,castleford,epidemics,alveolar,chapelle,chemists,hillsboro,soulful,warlords,ngati,huguenot,diurnal,remarking,luger,motorways,gauss,jahan,cutoff,proximal,bandai,catchphrase,jonubi,ossetia,codename,codice_2,throated,itinerant,chechnya,riverfront,leela,evoked,entailed,zamboanga,rejoining,circuitry,haymarket,khartoum,feuds,braced,miyazaki,mirren,lubusz,caricature,buttresses,attrition,characterizes,widnes,evanston,materialism,contradictions,marist,midrash,gainsborough,ulithi,turkmen,vidya,escuela,patrician,inspirations,reagent,premierships,humanistic,euphrates,transitioning,belfry,zedong,adaption,kaliningrad,lobos,epics,waiver,coniferous,polydor,inductee,refitted,moraine,unsatisfactory,worsening,polygamy,rajya,nested,subgenre,broadside,stampeders,lingua,incheon,pretender,peloton,persuading,excitation,multan,predates,tonne,brackish,autoimmune,insulated,podcasts,iraqis,bodybuilding,condominiums,midlothian,delft,debtor,asymmetrical,lycaenidae,forcefully,pathogenic,tamaulipas,andaman,intravenous,advancements,senegalese,chronologically,realigned,inquirer,eusebius,dekalb,additives,shortlist,goldwater,hindustani,auditing,caterpillars,pesticide,nakhon,ingestion,lansdowne,traditionalist,northland,thunderbirds,josip,nominating,locale,ventricular,animators,verandah,epistles,surveyors,anthems,dredd,upheaval,passaic,anatolian,svalbard,associative,floodplain,taranaki,estuaries,irreducible,beginners,hammerstein,allocate,coursework,secreted,counteract,handwritten,foundational,passover,discoverer,decoding,wares,bourgeoisie,playgrounds,nazionale,abbreviations,seanad,golan,mishra,godavari,rebranding,attendances,backstory,interrupts,lettered,hasbro,ultralight,hormozgan,armee,moderne,subdue,disuse,improvisational,enrolment,persists,moderated,carinthia,hatchback,inhibitory,capitalized,anatoly,abstracts,albemarle,bergamo,insolvency,sentai,cellars,walloon,joked,kashmiri,dirac,materialized,renomination,homologous,gusts,eighteens,centrifugal,storied,baluchestan,formula_26,poincare,vettel,infuriated,gauges,streetcars,vedanta,stately,liquidated,goguryeo,swifts,accountancy,levee,acadian,hydropower,eustace,comintern,allotment,designating,torsion,molding,irritation,aerobic,halen,concerted,plantings,garrisoned,gramophone,cytoplasm,onslaught,requisitioned,relieving,genitive,centrist,jeong,espanola,dissolving,chatterjee,sparking,connaught,varese,arjuna,carpathian,empowering,meteorologist,decathlon,opioid,hohenzollern,fenced,ibiza,avionics,footscray,scrum,discounts,filament,directories,a.f.c,stiffness,quaternary,adventurers,transmits,harmonious,taizong,radiating,germantown,ejection,projectors,gaseous,nahuatl,vidyalaya,nightlife,redefined,refuted,destitute,arista,potters,disseminated,distanced,jamboree,kaohsiung,tilted,lakeshore,grained,inflicting,kreis,novelists,descendents,mezzanine,recast,fatah,deregulation,ac/dc,australis,kohgiluyeh,boreal,goths,authoring,intoxicated,nonpartisan,theodosius,pyongyang,shree,boyhood,sanfl,plenipotentiary,photosynthesis,presidium,sinaloa,honshu,texan,avenida,transmembrane,malays,acropolis,catalunya,vases,inconsistencies,methodists,quell,suisse,banat,simcoe,cercle,zealanders,discredited,equine,sages,parthian,fascists,interpolation,classifying,spinoff,yehuda,cruised,gypsum,foaled,wallachia,saraswati,imperialist,seabed,footnotes,nakajima,locales,schoolmaster,drosophila,bridgehead,immanuel,courtier,bookseller,niccolo,stylistically,portmanteau,superleague,konkani,millimetres,arboreal,thanjavur,emulation,sounders,decompression,commoners,infusion,methodological,osage,rococo,anchoring,bayreuth,formula_27,abstracting,symbolized,bayonne,electrolyte,rowed,corvettes,traversing,editorship,sampler,presidio,curzon,adirondack,swahili,rearing,bladed,lemur,pashtun,behaviours,bottling,zaire,recognisable,systematics,leeward,formulae,subdistricts,smithfield,vijaya,buoyancy,boosting,cantonal,rishi,airflow,kamakura,adana,emblems,aquifer,clustering,husayn,woolly,wineries,montessori,turntable,exponentially,caverns,espoused,pianists,vorpommern,vicenza,latterly,o'rourke,williamstown,generale,kosice,duisburg,poirot,marshy,mismanagement,mandalay,dagenham,universes,chiral,radiated,stewards,vegan,crankshaft,kyrgyz,amphibian,cymbals,infrequently,offenbach,environmentalist,repatriated,permutations,midshipmen,loudoun,refereed,bamberg,ornamented,nitric,selim,translational,dorsum,annunciation,gippsland,reflector,informational,regia,reactionary,ahmet,weathering,erlewine,legalized,berne,occupant,divas,manifests,analyzes,disproportionate,mitochondria,totalitarian,paulista,interscope,anarcho,correlate,brookfield,elongate,brunel,ordinal,precincts,volatility,equaliser,hittite,somaliland,ticketing,monochrome,ubuntu,chhattisgarh,titleholder,ranches,referendums,blooms,accommodates,merthyr,religiously,ryukyu,tumultuous,checkpoints,anode,mi'kmaq,cannonball,punctuation,remodelled,assassinations,criminology,alternates,yonge,pixar,namibian,piraeus,trondelag,hautes,lifeboats,shoal,atelier,vehemently,sadat,postcode,jainism,lycoming,undisturbed,lutherans,genomics,popmatters,tabriz,isthmian,notched,autistic,horsham,mites,conseil,bloomsbury,seung,cybertron,idris,overhauled,disbandment,idealized,goldfields,worshippers,lobbyist,ailments,paganism,herbarium,athenians,messerschmitt,faraday,entangled,'olya,untreated,criticising,howitzers,parvati,lobed,debussy,atonement,tadeusz,permeability,mueang,sepals,degli,optionally,fuelled,follies,asterisk,pristina,lewiston,congested,overpass,affixed,pleads,telecasts,stanislaus,cryptographic,friesland,hamstring,selkirk,antisubmarine,inundated,overlay,aggregates,fleur,trolleybus,sagan,ibsen,inductees,beltway,tiled,ladders,cadbury,laplace,ascetic,micronesia,conveying,bellingham,cleft,batches,usaid,conjugation,macedon,assisi,reappointed,brine,jinnah,prairies,screenwriting,oxidized,despatches,linearly,fertilizers,brazilians,absorbs,wagga,modernised,scorsese,ashraf,charlestown,esque,habitable,nizhny,lettres,tuscaloosa,esplanade,coalitions,carbohydrates,legate,vermilion,standardised,galleria,psychoanalytic,rearrangement,substation,competency,nationalised,reshuffle,reconstructions,mehdi,bougainville,receivership,contraception,enlistment,conducive,aberystwyth,solicitors,dismisses,fibrosis,montclair,homeowner,surrealism,s.h.i.e.l.d,peregrine,compilers,1790s,parentage,palmas,rzeszow,worldview,eased,svenska,housemate,bundestag,originator,enlisting,outwards,reciprocity,formula_28,carbohydrate,democratically,firefighting,romagna,acknowledgement,khomeini,carbide,quests,vedas,characteristically,guwahati,brixton,unintended,brothels,parietal,namur,sherbrooke,moldavian,baruch,milieu,undulating,laurier,entre,dijon,ethylene,abilene,heracles,paralleling,ceres,dundalk,falun,auspicious,chisinau,polarity,foreclosure,templates,ojibwe,punic,eriksson,biden,bachchan,glaciation,spitfires,norsk,nonviolent,heidegger,algonquin,capacitance,cassettes,balconies,alleles,airdate,conveys,replays,classifies,infrequent,amine,cuttings,rarer,woking,olomouc,amritsar,rockabilly,illyrian,maoist,poignant,tempore,stalinist,segmented,bandmate,mollusc,muhammed,totalled,byrds,tendered,endogenous,kottayam,aisne,oxidase,overhears,illustrators,verve,commercialization,purplish,directv,moulded,lyttelton,baptismal,captors,saracens,georgios,shorten,polity,grids,fitzwilliam,sculls,impurities,confederations,akhtar,intangible,oscillations,parabolic,harlequin,maulana,ovate,tanzanian,singularity,confiscation,qazvin,speyer,phonemes,overgrown,vicarage,gurion,undocumented,niigata,thrones,preamble,stave,interment,liiga,ataturk,aphrodite,groupe,indentured,habsburgs,caption,utilitarian,ozark,slovenes,reproductions,plasticity,serbo,dulwich,castel,barbuda,salons,feuding,lenape,wikileaks,swamy,breuning,shedding,afield,superficially,operationally,lamented,okanagan,hamadan,accolade,furthering,adolphus,fyodor,abridged,cartoonists,pinkish,suharto,cytochrome,methylation,debit,colspan=9|,refine,taoist,signalled,herding,leaved,bayan,fatherland,rampart,sequenced,negation,storyteller,occupiers,barnabas,pelicans,nadir,conscripted,railcars,prerequisite,furthered,columba,carolinas,markup,gwalior,franche,chaco,eglinton,ramparts,rangoon,metabolites,pollination,croat,televisa,holyoke,testimonial,setlist,safavid,sendai,georgians,shakespearean,galleys,regenerative,krzysztof,overtones,estado,barbary,cherbourg,obispo,sayings,composites,sainsbury,deliberation,cosmological,mahalleh,embellished,ascap,biala,pancras,calumet,grands,canvases,antigens,marianas,defenseman,approximated,seedlings,soren,stele,nuncio,immunology,testimonies,glossary,recollections,suitability,tampere,venous,cohomology,methanol,echoing,ivanovich,warmly,sterilization,imran,multiplying,whitechapel,undersea,xuanzong,tacitus,bayesian,roundhouse,correlations,rioters,molds,fiorentina,bandmates,mezzo,thani,guerilla,200th,premiums,tamils,deepwater,chimpanzees,tribesmen,selwyn,globo,turnovers,punctuated,erode,nouvelle,banbury,exponents,abolishing,helical,maimonides,endothelial,goteborg,infield,encroachment,cottonwood,mazowiecki,parable,saarbrucken,reliever,epistemology,artistes,enrich,rationing,formula_29,palmyra,subfamilies,kauai,zoran,fieldwork,arousal,creditor,friuli,celts,comoros,equated,escalation,negev,tallied,inductive,anion,netanyahu,mesoamerican,lepidoptera,aspirated,remit,westmorland,italic,crosse,vaclav,fuego,owain,balmain,venetians,ethnicities,deflected,ticino,apulia,austere,flycatcher,reprising,repressive,hauptbahnhof,subtype,ophthalmology,summarizes,eniwetok,colonisation,subspace,nymphalidae,earmarked,tempe,burnet,crests,abbots,norwegians,enlarge,ashoka,frankfort,livorno,malware,renters,singly,iliad,moresby,rookies,gustavus,affirming,alleges,legume,chekhov,studded,abdicated,suzhou,isidore,townsite,repayment,quintus,yankovic,amorphous,constructor,narrowing,industrialists,tanganyika,capitalization,connective,mughals,rarities,aerodynamics,worthing,antalya,diagnostics,shaftesbury,thracian,obstetrics,benghazi,multiplier,orbitals,livonia,roscommon,intensify,ravel,oaths,overseer,locomotion,necessities,chickasaw,strathclyde,treviso,erfurt,aortic,contemplation,accrington,markazi,predeceased,hippocampus,whitecaps,assemblyman,incursion,ethnography,extraliga,reproducing,directorship,benzene,byway,stupa,taxable,scottsdale,onondaga,favourably,countermeasures,lithuanians,thatched,deflection,tarsus,consuls,annuity,paralleled,contextual,anglian,klang,hoisted,multilingual,enacting,samaj,taoiseach,carthaginian,apologised,hydrology,entrant,seamless,inflorescences,mugabe,westerners,seminaries,wintering,penzance,mitre,sergeants,unoccupied,delimitation,discriminate,upriver,abortive,nihon,bessarabia,calcareous,buffaloes,patil,daegu,streamline,berks,chaparral,laity,conceptions,typified,kiribati,threaded,mattel,eccentricity,signified,patagonia,slavonia,certifying,adnan,astley,sedition,minimally,enumerated,nikos,goalless,walid,narendra,causa,missoula,coolant,dalek,outcrop,hybridization,schoolchildren,peasantry,afghans,confucianism,shahr,gallic,tajik,kierkegaard,sauvignon,commissar,patriarchs,tuskegee,prussians,laois,ricans,talmudic,officiating,aesthetically,baloch,antiochus,separatists,suzerainty,arafat,shading,u.s.c,chancellors,inc..,toolkit,nepenthes,erebidae,solicited,pratap,kabbalah,alchemist,caltech,darjeeling,biopic,spillway,kaiserslautern,nijmegen,bolstered,neath,pahlavi,eugenics,bureaus,retook,northfield,instantaneous,deerfield,humankind,selectivity,putative,boarders,cornhuskers,marathas,raikkonen,aliabad,mangroves,garages,gulch,karzai,poitiers,chernobyl,thane,alexios,belgrano,scion,solubility,urbanized,executable,guizhou,nucleic,tripled,equalled,harare,houseguests,potency,ghazi,repeater,overarching,regrouped,broward,ragtime,d'art,nandi,regalia,campsites,mamluk,plating,wirral,presumption,zenit,archivist,emmerdale,decepticon,carabidae,kagoshima,franconia,guarani,formalism,diagonally,submarginal,denys,walkways,punts,metrolink,hydrographic,droplets,upperside,martyred,hummingbird,antebellum,curiously,mufti,friary,chabad,czechs,shaykh,reactivity,berklee,turbonilla,tongan,sultans,woodville,unlicensed,enmity,dominicans,operculum,quarrying,watercolour,catalyzed,gatwick,'what,mesozoic,auditors,shizuoka,footballing,haldane,telemundo,appended,deducted,disseminate,o'shea,pskov,abrasive,entente,gauteng,calicut,lemurs,elasticity,suffused,scopula,staining,upholding,excesses,shostakovich,loanwords,naidu,championnat,chromatography,boasting,goaltenders,engulfed,salah,kilogram,morristown,shingles,shi'a,labourer,renditions,frantisek,jekyll,zonal,nanda,sheriffs,eigenvalues,divisione,endorsing,ushered,auvergne,cadres,repentance,freemasons,utilising,laureates,diocletian,semiconductors,o'grady,vladivostok,sarkozy,trackage,masculinity,hydroxyl,mervyn,muskets,speculations,gridiron,opportunistic,mascots,aleutian,fillies,sewerage,excommunication,borrowers,capillary,trending,sydenham,synthpop,rajah,cagayan,deportes,kedah,faure,extremism,michoacan,levski,culminates,occitan,bioinformatics,unknowingly,inciting,emulated,footpaths,piacenza,dreadnought,viceroyalty,oceanographic,scouted,combinatorial,ornithologist,cannibalism,mujahideen,independiente,cilicia,hindwing,minimized,odeon,gyorgy,rubles,purchaser,collieries,kickers,interurban,coiled,lynchburg,respondent,plzen,detractors,etchings,centering,intensification,tomography,ranjit,warblers,retelling,reinstatement,cauchy,modulus,redirected,evaluates,beginner,kalateh,perforated,manoeuvre,scrimmage,internships,megawatts,mottled,haakon,tunbridge,kalyan,summarised,sukarno,quetta,canonized,henryk,agglomeration,coahuila,diluted,chiropractic,yogyakarta,talladega,sheik,cation,halting,reprisals,sulfuric,musharraf,sympathizers,publicised,arles,lectionary,fracturing,startups,sangha,latrobe,rideau,ligaments,blockading,cremona,lichens,fabaceae,modulated,evocative,embodies,battersea,indistinct,altai,subsystem,acidity,somatic,formula_30,tariq,rationality,sortie,ashlar,pokal,cytoplasmic,valour,bangla,displacing,hijacking,spectrometry,westmeath,weill,charing,goias,revolvers,individualized,tenured,nawaz,piquet,chanted,discard,bernd,phalanx,reworking,unilaterally,subclass,yitzhak,piloting,circumvent,disregarded,semicircular,viscous,tibetans,endeavours,retaliated,cretan,vienne,workhouse,sufficiency,aurangzeb,legalization,lipids,expanse,eintracht,sanjak,megas,125th,bahraini,yakima,eukaryotes,thwart,affirmation,peloponnese,retailing,carbonyl,chairwoman,macedonians,dentate,rockaway,correctness,wealthier,metamorphic,aragonese,fermanagh,pituitary,schrodinger,evokes,spoiler,chariots,akita,genitalia,combe,confectionery,desegregation,experiential,commodores,persepolis,viejo,restorations,virtualization,hispania,printmaking,stipend,yisrael,theravada,expended,radium,tweeted,polygonal,lippe,charente,leveraged,cutaneous,fallacy,fragrant,bypasses,elaborately,rigidity,majid,majorca,kongo,plasmodium,skits,audiovisual,eerste,staircases,prompts,coulthard,northwestward,riverdale,beatrix,copyrights,prudential,communicates,mated,obscenity,asynchronous,analyse,hansa,searchlight,farnborough,patras,asquith,qarah,contours,fumbled,pasteur,redistributed,almeria,sanctuaries,jewry,israelite,clinicians,koblenz,bookshop,affective,goulburn,panelist,sikorsky,cobham,mimics,ringed,portraiture,probabilistic,girolamo,intelligible,andalusian,jalal,athenaeum,eritrean,auxiliaries,pittsburg,devolution,sangam,isolating,anglers,cronulla,annihilated,kidderminster,synthesize,popularised,theophilus,bandstand,innumerable,chagrin,retroactively,weser,multiples,birdlife,goryeo,pawnee,grosser,grappling,tactile,ahmadinejad,turboprop,erdogan,matchday,proletarian,adhering,complements,austronesian,adverts,luminaries,archeology,impressionism,conifer,sodomy,interracial,platoons,lessen,postings,pejorative,registrations,cookery,persecutions,microbes,audits,idiosyncratic,subsp,suspensions,restricts,colouring,ratify,instrumentals,nucleotides,sulla,posits,bibliotheque,diameters,oceanography,instigation,subsumed,submachine,acceptor,legation,borrows,sedge,discriminated,loaves,insurers,highgate,detectable,abandons,kilns,sportscaster,harwich,iterations,preakness,arduous,tensile,prabhu,shortwave,philologist,shareholding,vegetative,complexities,councilors,distinctively,revitalize,automaton,amassing,montreux,khanh,surabaya,nurnberg,pernambuco,cuisines,charterhouse,firsts,tercera,inhabitant,homophobia,naturalism,einar,powerplant,coruna,entertainments,whedon,rajputs,raton,democracies,arunachal,oeuvre,wallonia,jeddah,trolleybuses,evangelism,vosges,kiowa,minimise,encirclement,undertakes,emigrant,beacons,deepened,grammars,publius,preeminent,seyyed,repechage,crafting,headingley,osteopathic,lithography,hotly,bligh,inshore,betrothed,olympians,formula_31,dissociation,trivandrum,arran,petrovic,stettin,disembarked,simplification,bronzes,philo,acrobatic,jonsson,conjectured,supercharged,kanto,detects,cheeses,correlates,harmonics,lifecycle,sudamericana,reservists,decayed,elitserien,parametric,113th,dusky,hogarth,modulo,symbiotic,monopolies,discontinuation,converges,southerners,tucuman,eclipses,enclaves,emits,famicom,caricatures,artistically,levelled,mussels,erecting,mouthparts,cunard,octaves,crucible,guardia,unusable,lagrangian,droughts,ephemeral,pashto,canis,tapering,sasebo,silurian,metallurgical,outscored,evolves,reissues,sedentary,homotopy,greyhawk,reagents,inheriting,onshore,tilting,rebuffed,reusable,naturalists,basingstoke,insofar,offensives,dravidian,curators,planks,rajan,isoforms,flagstaff,preside,globular,egalitarian,linkages,biographers,goalscorers,molybdenum,centralised,nordland,jurists,ellesmere,rosberg,hideyoshi,restructure,biases,borrower,scathing,redress,tunnelling,workflow,magnates,mahendra,dissenters,plethora,transcriptions,handicrafts,keyword,xi'an,petrograd,unser,prokofiev,90deg,madan,bataan,maronite,kearny,carmarthen,termini,consulates,disallowed,rockville,bowery,fanzine,docklands,bests,prohibitions,yeltsin,selassie,naturalization,realisation,dispensary,tribeca,abdulaziz,pocahontas,stagnation,pamplona,cuneiform,propagating,subsurface,christgau,epithelium,schwerin,lynching,routledge,hanseatic,upanishad,glebe,yugoslavian,complicity,endowments,girona,mynetworktv,entomology,plinth,ba'ath,supercup,torus,akkadian,salted,englewood,commandery,belgaum,prefixed,colorless,dartford,enthroned,caesarea,nominative,sandown,safeguards,hulled,formula_32,leamington,dieppe,spearhead,generalizations,demarcation,llanelli,masque,brickwork,recounting,sufism,strikingly,petrochemical,onslow,monologues,emigrating,anderlecht,sturt,hossein,sakhalin,subduction,novices,deptford,zanjan,airstrikes,coalfield,reintroduction,timbaland,hornby,messianic,stinging,universalist,situational,radiocarbon,strongman,rowling,saloons,traffickers,overran,fribourg,cambrai,gravesend,discretionary,finitely,archetype,assessor,pilipinas,exhumed,invocation,interacted,digitized,timisoara,smelter,teton,sexism,precepts,srinagar,pilsudski,carmelite,hanau,scoreline,hernando,trekking,blogging,fanbase,wielded,vesicles,nationalization,banja,rafts,motoring,luang,takeda,girder,stimulates,histone,sunda,nanoparticles,attains,jumpers,catalogued,alluding,pontus,ancients,examiners,shinkansen,ribbentrop,reimbursement,pharmacological,ramat,stringed,imposes,cheaply,transplanted,taiping,mizoram,looms,wallabies,sideman,kootenay,encased,sportsnet,revolutionized,tangier,benthic,runic,pakistanis,heatseekers,shyam,mishnah,presbyterians,stadt,sutras,straddles,zoroastrian,infer,fueling,gymnasts,ofcom,gunfight,journeyman,tracklist,oshawa,ps500,pa'in,mackinac,xiongnu,mississippian,breckinridge,freemason,bight,autoroute,liberalization,distantly,thrillers,solomons,presumptive,romanization,anecdotal,bohemians,unpaved,milder,concurred,spinners,alphabets,strenuous,rivieres,kerrang,mistreatment,dismounted,intensively,carlist,dancehall,shunting,pluralism,trafficked,brokered,bonaventure,bromide,neckar,designates,malian,reverses,sotheby,sorghum,serine,environmentalists,languedoc,consulship,metering,bankstown,handlers,militiamen,conforming,regularity,pondicherry,armin,capsized,consejo,capitalists,drogheda,granular,purged,acadians,endocrine,intramural,elicit,terns,orientations,miklos,omitting,apocryphal,slapstick,brecon,pliocene,affords,typography,emigre,tsarist,tomasz,beset,nishi,necessitating,encyclical,roleplaying,journeyed,inflow,sprints,progressives,novosibirsk,cameroonian,ephesus,speckled,kinshasa,freiherr,burnaby,dalmatian,torrential,rigor,renegades,bhakti,nurburgring,cosimo,convincingly,reverting,visayas,lewisham,charlottetown,charadriiformesfamily,transferable,jodhpur,converters,deepening,camshaft,underdeveloped,protease,polonia,uterine,quantify,tobruk,dealerships,narasimha,fortran,inactivity,1780s,victors,categorised,naxos,workstation,skink,sardinian,chalice,precede,dammed,sondheim,phineas,tutored,sourcing,uncompromising,placer,tyneside,courtiers,proclaims,pharmacies,hyogo,booksellers,sengoku,kursk,spectrometer,countywide,wielkopolski,bobsleigh,shetty,llywelyn,consistory,heretics,guinean,cliches,individualism,monolithic,imams,usability,bursa,deliberations,railings,torchwood,inconsistency,balearic,stabilizer,demonstrator,facet,radioactivity,outboard,educates,d'oyly,heretical,handover,jurisdictional,shockwave,hispaniola,conceptually,routers,unaffiliated,trentino,formula_33,cypriots,intervenes,neuchatel,formulating,maggiore,delisted,alcohols,thessaly,potable,estimator,suborder,fluency,mimicry,clergymen,infrastructures,rivals.com,baroda,subplot,majlis,plano,clinching,connotation,carinae,savile,intercultural,transcriptional,sandstones,ailerons,annotations,impresario,heinkel,scriptural,intermodal,astrological,ribbed,northeastward,posited,boers,utilise,kalmar,phylum,breakwater,skype,textured,guideline,azeri,rimini,massed,subsidence,anomalous,wolfsburg,polyphonic,accrediting,vodacom,kirov,captaining,kelantan,logie,fervent,eamon,taper,bundeswehr,disproportionately,divination,slobodan,pundits,hispano,kinetics,reunites,makati,ceasing,statistician,amending,chiltern,eparchy,riverine,melanoma,narragansett,pagans,raged,toppled,breaching,zadar,holby,dacian,ochre,velodrome,disparities,amphoe,sedans,webpage,williamsport,lachlan,groton,baring,swastika,heliport,unwillingness,razorbacks,exhibitors,foodstuffs,impacting,tithe,appendages,dermot,subtypes,nurseries,balinese,simulating,stary,remakes,mundi,chautauqua,geologically,stockade,hakka,dilute,kalimantan,pahang,overlapped,fredericton,baha'u'llah,jahangir,damping,benefactors,shomali,triumphal,cieszyn,paradigms,shielded,reggaeton,maharishi,zambian,shearing,golestan,mirroring,partitioning,flyover,songbook,incandescent,merrimack,huguenots,sangeet,vulnerabilities,trademarked,drydock,tantric,honoris,queenstown,labelling,iterative,enlists,statesmen,anglicans,herge,qinghai,burgundian,islami,delineated,zhuge,aggregated,banknote,qatari,suitably,tapestries,asymptotic,charleroi,majorities,pyramidellidae,leanings,climactic,tahir,ramsar,suppressor,revisionist,trawler,ernakulam,penicillium,categorization,slits,entitlement,collegium,earths,benefice,pinochet,puritans,loudspeaker,stockhausen,eurocup,roskilde,alois,jaroslav,rhondda,boutiques,vigor,neurotransmitter,ansar,malden,ferdinando,sported,relented,intercession,camberwell,wettest,thunderbolts,positional,oriel,cloverleaf,penalized,shoshone,rajkumar,completeness,sharjah,chromosomal,belgians,woolen,ultrasonic,sequentially,boleyn,mordella,microsystems,initiator,elachista,mineralogy,rhododendron,integrals,compostela,hamza,sawmills,stadio,berlioz,maidens,stonework,yachting,tappeh,myocardial,laborer,workstations,costumed,nicaea,lanark,roundtable,mashhad,nablus,algonquian,stuyvesant,sarkar,heroines,diwan,laments,intonation,intrigues,almaty,feuded,grandes,algarve,rehabilitate,macrophages,cruciate,dismayed,heuristic,eliezer,kozhikode,covalent,finalised,dimorphism,yaroslavl,overtaking,leverkusen,middlebury,feeders,brookings,speculates,insoluble,lodgings,jozsef,cysteine,shenyang,habilitation,spurious,brainchild,mtdna,comique,albedo,recife,partick,broadening,shahi,orientated,himalaya,swabia,palme,mennonites,spokeswoman,conscripts,sepulchre,chartres,eurozone,scaffold,invertebrate,parishad,bagan,heian,watercolors,basse,supercomputer,commences,tarragona,plainfield,arthurian,functor,identically,murex,chronicling,pressings,burrowing,histoire,guayaquil,goalkeeping,differentiable,warburg,machining,aeneas,kanawha,holocene,ramesses,reprisal,qingdao,avatars,turkestan,cantatas,besieging,repudiated,teamsters,equipping,hydride,ahmadiyya,euston,bottleneck,computations,terengganu,kalinga,stela,rediscovery,'this,azhar,stylised,karelia,polyethylene,kansai,motorised,lounges,normalization,calculators,1700s,goalkeepers,unfolded,commissary,cubism,vignettes,multiverse,heaters,briton,sparingly,childcare,thorium,plock,riksdag,eunuchs,catalysis,limassol,perce,uncensored,whitlam,ulmus,unites,mesopotamian,refraction,biodiesel,forza,fulda,unseated,mountbatten,shahrak,selenium,osijek,mimicking,antimicrobial,axons,simulcasting,donizetti,swabian,sportsmen,hafiz,neared,heraclius,locates,evaded,subcarpathian,bhubaneswar,negeri,jagannath,thaksin,aydin,oromo,lateran,goldsmiths,multiculturalism,cilia,mihai,evangelists,lorient,qajar,polygons,vinod,mechanised,anglophone,prefabricated,mosses,supervillain,airliners,biofuels,iodide,innovators,valais,wilberforce,logarithm,intelligentsia,dissipation,sanctioning,duchies,aymara,porches,simulators,mostar,telepathic,coaxial,caithness,burghs,fourths,stratification,joaquim,scribes,meteorites,monarchist,germination,vries,desiring,replenishment,istria,winemaking,tammany,troupes,hetman,lanceolate,pelagic,triptych,primeira,scant,outbound,hyphae,denser,bentham,basie,normale,executes,ladislaus,kontinental,herat,cruiserweight,activision,customization,manoeuvres,inglewood,northwood,waveform,investiture,inpatient,alignments,kiryat,rabat,archimedes,ustad,monsanto,archetypal,kirkby,sikhism,correspondingly,catskill,overlaid,petrels,widowers,unicameral,federalists,metalcore,gamerankings,mussel,formula_34,lymphocytes,cystic,southgate,vestiges,immortals,kalam,strove,amazons,pocono,sociologists,sopwith,adheres,laurens,caregivers,inspecting,transylvanian,rebroadcast,rhenish,miserables,pyrams,blois,newtonian,carapace,redshirt,gotland,nazir,unilever,distortions,linebackers,federalism,mombasa,lumen,bernoulli,favouring,aligarh,denounce,steamboats,dnieper,stratigraphic,synths,bernese,umass,icebreaker,guanajuato,heisenberg,boldly,diodes,ladakh,dogmatic,scriptwriter,maritimes,battlestar,symposia,adaptable,toluca,bhavan,nanking,ieyasu,picardy,soybean,adalbert,brompton,deutsches,brezhnev,glandular,laotian,hispanicized,ibadan,personification,dalit,yamuna,regio,dispensed,yamagata,zweibrucken,revising,fandom,stances,participle,flavours,khitan,vertebral,crores,mayaguez,dispensation,guntur,undefined,harpercollins,unionism,meena,leveling,philippa,refractory,telstra,judea,attenuation,pylons,elaboration,elegy,edging,gracillariidae,residencies,absentia,reflexive,deportations,dichotomy,stoves,sanremo,shimon,menachem,corneal,conifers,mordellidae,facsimile,diagnoses,cowper,citta,viticulture,divisive,riverview,foals,mystics,polyhedron,plazas,airspeed,redgrave,motherland,impede,multiplicity,barrichello,airships,pharmacists,harvester,clays,payloads,differentiating,popularize,caesars,tunneling,stagnant,circadian,indemnity,sensibilities,musicology,prefects,serfs,metra,lillehammer,carmarthenshire,kiosks,welland,barbican,alkyl,tillandsia,gatherers,asociacion,showings,bharati,brandywine,subversion,scalable,pfizer,dawla,barium,dardanelles,nsdap,konig,ayutthaya,hodgkin,sedimentation,completions,purchasers,sponsorships,maximizing,banked,taoism,minot,enrolls,fructose,aspired,capuchin,outages,artois,carrollton,totality,osceola,pawtucket,fontainebleau,converged,queretaro,competencies,botha,allotments,sheaf,shastri,obliquely,banding,catharines,outwardly,monchengladbach,driest,contemplative,cassini,ranga,pundit,kenilworth,tiananmen,disulfide,formula_35,townlands,codice_3,looping,caravans,rachmaninoff,segmentation,fluorine,anglicised,gnostic,dessau,discern,reconfigured,altrincham,rebounding,battlecruiser,ramblers,1770s,convective,triomphe,miyagi,mourners,instagram,aloft,breastfeeding,courtyards,folkestone,changsha,kumamoto,saarland,grayish,provisionally,appomattox,uncial,classicism,mahindra,elapsed,supremes,monophyletic,cautioned,formula_36,noblewoman,kernels,sucre,swaps,bengaluru,grenfell,epicenter,rockhampton,worshipful,licentiate,metaphorical,malankara,amputated,wattle,palawan,tankobon,nobunaga,polyhedra,transduction,jilin,syrians,affinities,fluently,emanating,anglicized,sportscar,botanists,altona,dravida,chorley,allocations,kunming,luanda,premiering,outlived,mesoamerica,lingual,dissipating,impairments,attenborough,balustrade,emulator,bakhsh,cladding,increments,ascents,workington,qal'eh,winless,categorical,petrel,emphasise,dormer,toros,hijackers,telescopic,solidly,jankovic,cession,gurus,madoff,newry,subsystems,northside,talib,englishmen,farnese,holographic,electives,argonne,scrivener,predated,brugge,nauvoo,catalyses,soared,siddeley,graphically,powerlifting,funicular,sungai,coercive,fusing,uncertainties,locos,acetic,diverge,wedgwood,dressings,tiebreaker,didactic,vyacheslav,acreage,interplanetary,battlecruisers,sunbury,alkaloids,hairpin,automata,wielkie,interdiction,plugins,monkees,nudibranch,esporte,approximations,disabling,powering,characterisation,ecologically,martinsville,termen,perpetuated,lufthansa,ascendancy,motherboard,bolshoi,athanasius,prunus,dilution,invests,nonzero,mendocino,charan,banque,shaheed,counterculture,unita,voivode,hospitalization,vapour,supermarine,resistor,steppes,osnabruck,intermediates,benzodiazepines,sunnyside,privatized,geopolitical,ponta,beersheba,kievan,embody,theoretic,sangh,cartographer,blige,rotors,thruway,battlefields,discernible,demobilized,broodmare,colouration,sagas,policymakers,serialization,augmentation,hoare,frankfurter,transnistria,kinases,detachable,generational,converging,antiaircraft,khaki,bimonthly,coadjutor,arkhangelsk,kannur,buffers,livonian,northwich,enveloped,cysts,yokozuna,herne,beeching,enron,virginian,woollen,excepting,competitively,outtakes,recombinant,hillcrest,clearances,pathe,cumbersome,brasov,u.s.a,likud,christiania,cruciform,hierarchies,wandsworth,lupin,resins,voiceover,sitar,electrochemical,mediacorp,typhus,grenadiers,hepatic,pompeii,weightlifter,bosniak,oxidoreductase,undersecretary,rescuers,ranji,seleucid,analysing,exegesis,tenancy,toure,kristiansand,110th,carillon,minesweepers,poitou,acceded,palladian,redevelop,naismith,rifled,proletariat,shojo,hackensack,harvests,endpoint,kuban,rosenborg,stonehenge,authorisation,jacobean,revocation,compatriots,colliding,undetermined,okayama,acknowledgment,angelou,fresnel,chahar,ethereal,mg/kg,emmet,mobilised,unfavourable,cultura,characterizing,parsonage,skeptics,expressways,rabaul,medea,guardsmen,visakhapatnam,caddo,homophobic,elmwood,encircling,coexistence,contending,seljuk,mycologist,infertility,moliere,insolvent,covenants,underpass,holme,landesliga,workplaces,delinquency,methamphetamine,contrived,tableau,tithes,overlying,usurped,contingents,spares,oligocene,molde,beatification,mordechai,balloting,pampanga,navigators,flowered,debutant,codec,orogeny,newsletters,solon,ambivalent,ubisoft,archdeaconry,harpers,kirkus,jabal,castings,kazhagam,sylhet,yuwen,barnstaple,amidships,causative,isuzu,watchtower,granules,canaveral,remuneration,insurer,payout,horizonte,integrative,attributing,kiwis,skanderbeg,asymmetry,gannett,urbanism,disassembled,unaltered,precluded,melodifestivalen,ascends,plugin,gurkha,bisons,stakeholder,industrialisation,abbotsford,sextet,bustling,uptempo,slavia,choreographers,midwives,haram,javed,gazetteer,subsection,natively,weighting,lysine,meera,redbridge,muchmusic,abruzzo,adjoins,unsustainable,foresters,kbit/s,cosmopterigidae,secularism,poetics,causality,phonograph,estudiantes,ceausescu,universitario,adjoint,applicability,gastropods,nagaland,kentish,mechelen,atalanta,woodpeckers,lombards,gatineau,romansh,avraham,acetylcholine,perturbation,galois,wenceslaus,fuzhou,meandering,dendritic,sacristy,accented,katha,therapeutics,perceives,unskilled,greenhouses,analogues,chaldean,timbre,sloped,volodymyr,sadiq,maghreb,monogram,rearguard,caucuses,mures,metabolite,uyezd,determinism,theosophical,corbet,gaels,disruptions,bicameral,ribosomal,wolseley,clarksville,watersheds,tarsi,radon,milanese,discontinuous,aristotelian,whistleblower,representational,hashim,modestly,localised,atrial,hazara,ravana,troyes,appointees,rubus,morningside,amity,aberdare,ganglia,wests,zbigniew,aerobatic,depopulated,corsican,introspective,twinning,hardtop,shallower,cataract,mesolithic,emblematic,graced,lubrication,republicanism,voronezh,bastions,meissen,irkutsk,oboes,hokkien,sprites,tenet,individualist,capitulated,oakville,dysentery,orientalist,hillsides,keywords,elicited,incised,lagging,apoel,lengthening,attractiveness,marauders,sportswriter,decentralization,boltzmann,contradicts,draftsman,precipitate,solihull,norske,consorts,hauptmann,riflemen,adventists,syndromes,demolishing,customize,continuo,peripherals,seamlessly,linguistically,bhushan,orphanages,paraul,lessened,devanagari,quarto,responders,patronymic,riemannian,altoona,canonization,honouring,geodetic,exemplifies,republica,enzymatic,porters,fairmount,pampa,sufferers,kamchatka,conjugated,coachella,uthman,repositories,copious,headteacher,awami,phoneme,homomorphism,franconian,moorland,davos,quantified,kamloops,quarks,mayoralty,weald,peacekeepers,valerian,particulate,insiders,perthshire,caches,guimaraes,piped,grenadines,kosciuszko,trombonist,artemisia,covariance,intertidal,soybeans,beatified,ellipse,fruiting,deafness,dnipropetrovsk,accrued,zealous,mandala,causation,junius,kilowatt,bakeries,montpelier,airdrie,rectified,bungalows,toleration,debian,pylon,trotskyist,posteriorly,two-and-a-half,herbivorous,islamists,poetical,donne,wodehouse,frome,allium,assimilate,phonemic,minaret,unprofitable,darpa,untenable,leaflet,bitcoin,zahir,thresholds,argentino,jacopo,bespoke,stratified,wellbeing,shiite,basaltic,timberwolves,secrete,taunts,marathons,isomers,carre,consecrators,penobscot,pitcairn,sakha,crosstown,inclusions,impassable,fenders,indre,uscgc,jordi,retinue,logarithmic,pilgrimages,railcar,cashel,blackrock,macroscopic,aligning,tabla,trestle,certify,ronson,palps,dissolves,thickened,silicate,taman,walsingham,hausa,lowestoft,rondo,oleksandr,cuyahoga,retardation,countering,cricketing,holborn,identifiers,hells,geophysics,infighting,sculpting,balaji,webbed,irradiation,runestone,trusses,oriya,sojourn,forfeiture,colonize,exclaimed,eucharistic,lackluster,glazing,northridge,gutenberg,stipulates,macroeconomic,priori,outermost,annular,udinese,insulating,headliner,godel,polytope,megalithic,salix,sharapova,derided,muskegon,braintree,plateaus,confers,autocratic,isomer,interstitial,stamping,omits,kirtland,hatchery,evidences,intifada,111th,podgorica,capua,motivating,nuneaton,jakub,korsakov,amitabh,mundial,monrovia,gluten,predictor,marshalling,d'orleans,levers,touchscreen,brantford,fricative,banishment,descendent,antagonism,ludovico,loudspeakers,formula_37,livelihoods,manassas,steamships,dewsbury,uppermost,humayun,lures,pinnacles,dependents,lecce,clumps,observatories,paleozoic,dedicating,samiti,draughtsman,gauls,incite,infringing,nepean,pythagorean,convents,triumvirate,seigneur,gaiman,vagrant,fossa,byproduct,serrated,renfrewshire,sheltering,achaemenid,dukedom,catchers,sampdoria,platelet,bielefeld,fluctuating,phenomenology,strikeout,ethnology,prospectors,woodworking,tatra,wildfires,meditations,agrippa,fortescue,qureshi,wojciech,methyltransferase,accusative,saatchi,amerindian,volcanism,zeeland,toyama,vladimirovich,allege,polygram,redox,budgeted,advisories,nematode,chipset,starscream,tonbridge,hardening,shales,accompanist,paraded,phonographic,whitefish,sportive,audiobook,kalisz,hibernation,latif,duels,ps200,coxeter,nayak,safeguarding,cantabria,minesweeping,zeiss,dunams,catholicos,sawtooth,ontological,nicobar,bridgend,unclassified,intrinsically,hanoverian,rabbitohs,kenseth,alcalde,northumbrian,raritan,septuagint,presse,sevres,origen,dandenong,peachtree,intersected,impeded,usages,hippodrome,novara,trajectories,customarily,yardage,inflected,yanow,kalan,taverns,liguria,librettist,intermarriage,1760s,courant,gambier,infanta,ptolemaic,ukulele,haganah,sceptical,manchukuo,plexus,implantation,hilal,intersex,efficiencies,arbroath,hagerstown,adelphi,diario,marais,matti,lifes,coining,modalities,divya,bletchley,conserving,ivorian,mithridates,generative,strikeforce,laymen,toponymy,pogrom,satya,meticulously,agios,dufferin,yaakov,fortnightly,cargoes,deterrence,prefrontal,przemysl,mitterrand,commemorations,chatsworth,gurdwara,abuja,chakraborty,badajoz,geometries,artiste,diatonic,ganglion,presides,marymount,nanak,cytokines,feudalism,storks,rowers,widens,politico,evangelicals,assailants,pittsfield,allowable,bijapur,telenovelas,dichomeris,glenelg,herbivores,keita,inked,radom,fundraisers,constantius,boheme,portability,komnenos,crystallography,derrida,moderates,tavistock,fateh,spacex,disjoint,bristles,commercialized,interwoven,empirically,regius,bulacan,newsday,showa,radicalism,yarrow,pleura,sayed,structuring,cotes,reminiscences,acetyl,edicts,escalators,aomori,encapsulated,legacies,bunbury,placings,fearsome,postscript,powerfully,keighley,hildesheim,amicus,crevices,deserters,benelux,aurangabad,freeware,ioannis,carpathians,chirac,seceded,prepaid,landlocked,naturalised,yanukovych,soundscan,blotch,phenotypic,determinants,twente,dictatorial,giessen,composes,recherche,pathophysiology,inventories,ayurveda,elevating,gravestone,degeneres,vilayet,popularizing,spartanburg,bloemfontein,previewed,renunciation,genotype,ogilvy,tracery,blacklisted,emissaries,diploid,disclosures,tupolev,shinjuku,antecedents,pennine,braganza,bhattacharya,countable,spectroscopic,ingolstadt,theseus,corroborated,compounding,thrombosis,extremadura,medallions,hasanabad,lambton,perpetuity,glycol,besancon,palaiologos,pandey,caicos,antecedent,stratum,laserdisc,novitiate,crowdfunding,palatal,sorceress,dassault,toughness,celle,cezanne,vientiane,tioga,hander,crossbar,gisborne,cursor,inspectorate,serif,praia,sphingidae,nameplate,psalter,ivanovic,sitka,equalised,mutineers,sergius,outgrowth,creationism,haredi,rhizomes,predominate,undertakings,vulgate,hydrothermal,abbeville,geodesic,kampung,physiotherapy,unauthorised,asteraceae,conservationist,minoan,supersport,mohammadabad,cranbrook,mentorship,legitimately,marshland,datuk,louvain,potawatomi,carnivores,levies,lyell,hymnal,regionals,tinto,shikoku,conformal,wanganui,beira,lleida,standstill,deloitte,formula_40,corbusier,chancellery,mixtapes,airtime,muhlenberg,formula_39,bracts,thrashers,prodigious,gironde,chickamauga,uyghurs,substitutions,pescara,batangas,gregarious,gijon,paleo,mathura,pumas,proportionally,hawkesbury,yucca,kristiania,funimation,fluted,eloquence,mohun,aftermarket,chroniclers,futurist,nonconformist,branko,mannerisms,lesnar,opengl,altos,retainers,ashfield,shelbourne,sulaiman,divisie,gwent,locarno,lieder,minkowski,bivalve,redeployed,cartography,seaway,bookings,decays,ostend,antiquaries,pathogenesis,formula_38,chrysalis,esperance,valli,motogp,homelands,bridged,bloor,ghazal,vulgaris,baekje,prospector,calculates,debtors,hesperiidae,titian,returner,landgrave,frontenac,kelowna,pregame,castelo,caius,canoeist,watercolours,winterthur,superintendents,dissonance,dubstep,adorn,matic,salih,hillel,swordsman,flavoured,emitter,assays,monongahela,deeded,brazzaville,sufferings,babylonia,fecal,umbria,astrologer,gentrification,frescos,phasing,zielona,ecozone,candido,manoj,quadrilateral,gyula,falsetto,prewar,puntland,infinitive,contraceptive,bakhtiari,ohrid,socialization,tailplane,evoking,havelock,macapagal,plundering,104th,keynesian,templars,phrasing,morphologically,czestochowa,humorously,catawba,burgas,chiswick,ellipsoid,kodansha,inwards,gautama,katanga,orthopaedic,heilongjiang,sieges,outsourced,subterminal,vijayawada,hares,oration,leitrim,ravines,manawatu,cryogenic,tracklisting,about.com,ambedkar,degenerated,hastened,venturing,lobbyists,shekhar,typefaces,northcote,rugen,'good,ornithology,asexual,hemispheres,unsupported,glyphs,spoleto,epigenetic,musicianship,donington,diogo,kangxi,bisected,polymorphism,megawatt,salta,embossed,cheetahs,cruzeiro,unhcr,aristide,rayleigh,maturing,indonesians,noire,llano,ffffff,camus,purges,annales,convair,apostasy,algol,phage,apaches,marketers,aldehyde,pompidou,kharkov,forgeries,praetorian,divested,retrospectively,gornji,scutellum,bitumen,pausanias,magnification,imitations,nyasaland,geographers,floodlights,athlone,hippolyte,expositions,clarinetist,razak,neutrinos,rotax,sheykh,plush,interconnect,andalus,cladogram,rudyard,resonator,granby,blackfriars,placido,windscreen,sahel,minamoto,haida,cations,emden,blackheath,thematically,blacklist,pawel,disseminating,academical,undamaged,raytheon,harsher,powhatan,ramachandran,saddles,paderborn,capping,zahra,prospecting,glycine,chromatin,profane,banska,helmand,okinawan,dislocation,oscillators,insectivorous,foyle,gilgit,autonomic,tuareg,sluice,pollinated,multiplexed,granary,narcissus,ranchi,staines,nitra,goalscoring,midwifery,pensioners,algorithmic,meetinghouse,biblioteca,besar,narva,angkor,predate,lohan,cyclical,detainee,occipital,eventing,faisalabad,dartmoor,kublai,courtly,resigns,radii,megachilidae,cartels,shortfall,xhosa,unregistered,benchmarks,dystopian,bulkhead,ponsonby,jovanovic,accumulates,papuan,bhutanese,intuitively,gotaland,headliners,recursion,dejan,novellas,diphthongs,imbued,withstood,analgesic,amplify,powertrain,programing,maidan,alstom,affirms,eradicated,summerslam,videogame,molla,severing,foundered,gallium,atmospheres,desalination,shmuel,howmeh,catolica,bossier,reconstructing,isolates,lyase,tweets,unconnected,tidewater,divisible,cohorts,orebro,presov,furnishing,folklorist,simplifying,centrale,notations,factorization,monarchies,deepen,macomb,facilitation,hennepin,declassified,redrawn,microprocessors,preliminaries,enlarging,timeframe,deutschen,shipbuilders,patiala,ferrous,aquariums,genealogies,vieux,unrecognized,bridgwater,tetrahedral,thule,resignations,gondwana,registries,agder,dataset,felled,parva,analyzer,worsen,coleraine,columella,blockaded,polytechnique,reassembled,reentry,narvik,greys,nigra,knockouts,bofors,gniezno,slotted,hamasaki,ferrers,conferring,thirdly,domestication,photojournalist,universality,preclude,ponting,halved,thereupon,photosynthetic,ostrava,mismatch,pangasinan,intermediaries,abolitionists,transited,headings,ustase,radiological,interconnection,dabrowa,invariants,honorius,preferentially,chantilly,marysville,dialectical,antioquia,abstained,gogol,dirichlet,muricidae,symmetries,reproduces,brazos,fatwa,bacillus,ketone,paribas,chowk,multiplicative,dermatitis,mamluks,devotes,adenosine,newbery,meditative,minefields,inflection,oxfam,conwy,bystrica,imprints,pandavas,infinitesimal,conurbation,amphetamine,reestablish,furth,edessa,injustices,frankston,serjeant,4x200,khazar,sihanouk,longchamp,stags,pogroms,coups,upperparts,endpoints,infringed,nuanced,summing,humorist,pacification,ciaran,jamaat,anteriorly,roddick,springboks,faceted,hypoxia,rigorously,cleves,fatimid,ayurvedic,tabled,ratna,senhora,maricopa,seibu,gauguin,holomorphic,campgrounds,amboy,coordinators,ponderosa,casemates,ouachita,nanaimo,mindoro,zealander,rimsky,cluny,tomaszow,meghalaya,caetano,tilak,roussillon,landtag,gravitation,dystrophy,cephalopods,trombones,glens,killarney,denominated,anthropogenic,pssas,roubaix,carcasses,montmorency,neotropical,communicative,rabindranath,ordinated,separable,overriding,surged,sagebrush,conciliation,codice_4,durrani,phosphatase,qadir,votive,revitalized,taiyuan,tyrannosaurus,graze,slovaks,nematodes,environmentalism,blockhouse,illiteracy,schengen,ecotourism,alternation,conic,wields,hounslow,blackfoot,kwame,ambulatory,volhynia,hordaland,croton,piedras,rohit,drava,conceptualized,birla,illustrative,gurgaon,barisal,tutsi,dezong,nasional,polje,chanson,clarinets,krasnoyarsk,aleksandrovich,cosmonaut,d'este,palliative,midseason,silencing,wardens,durer,girders,salamanders,torrington,supersonics,lauda,farid,circumnavigation,embankments,funnels,bajnoksag,lorries,cappadocia,jains,warringah,retirees,burgesses,equalization,cusco,ganesan,algal,amazonian,lineups,allocating,conquerors,usurper,mnemonic,predating,brahmaputra,ahmadabad,maidenhead,numismatic,subregion,encamped,reciprocating,freebsd,irgun,tortoises,governorates,zionists,airfoil,collated,ajmer,fiennes,etymological,polemic,chadian,clerestory,nordiques,fluctuated,calvados,oxidizing,trailhead,massena,quarrels,dordogne,tirunelveli,pyruvate,pulsed,athabasca,sylar,appointee,serer,japonica,andronikos,conferencing,nicolaus,chemin,ascertained,incited,woodbine,helices,hospitalised,emplacements,to/from,orchestre,tyrannical,pannonia,methodism,pop/rock,shibuya,berbers,despot,seaward,westpac,separator,perpignan,alamein,judeo,publicize,quantization,ethniki,gracilis,menlo,offside,oscillating,unregulated,succumbing,finnmark,metrical,suleyman,raith,sovereigns,bundesstrasse,kartli,fiduciary,darshan,foramen,curler,concubines,calvinism,larouche,bukhara,sophomores,mohanlal,lutheranism,monomer,eamonn,'black,uncontested,immersive,tutorials,beachhead,bindings,permeable,postulates,comite,transformative,indiscriminate,hofstra,associacao,amarna,dermatology,lapland,aosta,babur,unambiguous,formatting,schoolboys,gwangju,superconducting,replayed,adherent,aureus,compressors,forcible,spitsbergen,boulevards,budgeting,nossa,annandale,perumal,interregnum,sassoon,kwajalein,greenbrier,caldas,triangulation,flavius,increment,shakhtar,nullified,pinfall,nomen,microfinance,depreciation,cubist,steeper,splendour,gruppe,everyman,chasers,campaigners,bridle,modality,percussive,darkly,capes,velar,picton,triennial,factional,padang,toponym,betterment,norepinephrine,112th,estuarine,diemen,warehousing,morphism,ideologically,pairings,immunization,crassus,exporters,sefer,flocked,bulbous,deseret,booms,calcite,bohol,elven,groot,pulau,citigroup,wyeth,modernizing,layering,pastiche,complies,printmaker,condenser,theropod,cassino,oxyrhynchus,akademie,trainings,lowercase,coxae,parte,chetniks,pentagonal,keselowski,monocoque,morsi,reticulum,meiosis,clapboard,recoveries,tinge,an/fps,revista,sidon,livre,epidermis,conglomerates,kampong,congruent,harlequins,tergum,simplifies,epidemiological,underwriting,tcp/ip,exclusivity,multidimensional,mysql,columbine,ecologist,hayat,sicilies,levees,handset,aesop,usenet,pacquiao,archiving,alexandrian,compensatory,broadsheet,annotation,bahamian,d'affaires,interludes,phraya,shamans,marmara,customizable,immortalized,ambushes,chlorophyll,diesels,emulsion,rheumatoid,voluminous,screenwriters,tailoring,sedis,runcorn,democratization,bushehr,anacostia,constanta,antiquary,sixtus,radiate,advaita,antimony,acumen,barristers,reichsbahn,ronstadt,symbolist,pasig,cursive,secessionist,afrikaner,munnetra,inversely,adsorption,syllabic,moltke,idioms,midline,olimpico,diphosphate,cautions,radziwill,mobilisation,copelatus,trawlers,unicron,bhaskar,financiers,minimalism,derailment,marxists,oireachtas,abdicate,eigenvalue,zafar,vytautas,ganguly,chelyabinsk,telluride,subordination,ferried,dived,vendee,pictish,dimitrov,expiry,carnation,cayley,magnitudes,lismore,gretna,sandwiched,unmasked,sandomierz,swarthmore,tetra,nanyang,pevsner,dehradun,mormonism,rashi,complying,seaplanes,ningbo,cooperates,strathcona,mornington,mestizo,yulia,edgbaston,palisade,ethno,polytopes,espirito,tymoshenko,pronunciations,paradoxical,taichung,chipmunks,erhard,maximise,accretion,kanda,`abdu'l,narrowest,umpiring,mycenaean,divisor,geneticist,ceredigion,barque,hobbyists,equates,auxerre,spinose,cheil,sweetwater,guano,carboxylic,archiv,tannery,cormorant,agonists,fundacion,anbar,tunku,hindrance,meerut,concordat,secunderabad,kachin,achievable,murfreesboro,comprehensively,forges,broadest,synchronised,speciation,scapa,aliyev,conmebol,tirelessly,subjugated,pillaged,udaipur,defensively,lakhs,stateless,haasan,headlamps,patterning,podiums,polyphony,mcmurdo,mujer,vocally,storeyed,mucosa,multivariate,scopus,minimizes,formalised,certiorari,bourges,populate,overhanging,gaiety,unreserved,borromeo,woolworths,isotopic,bashar,purify,vertebra,medan,juxtaposition,earthwork,elongation,chaudhary,schematic,piast,steeped,nanotubes,fouls,achaea,legionnaires,abdur,qmjhl,embraer,hardback,centerville,ilocos,slovan,whitehorse,mauritian,moulding,mapuche,donned,provisioning,gazprom,jonesboro,audley,lightest,calyx,coldwater,trigonometric,petroglyphs,psychoanalyst,congregate,zambezi,fissure,supervises,bexley,etobicoke,wairarapa,tectonics,emphasises,formula_41,debugging,linfield,spatially,ionizing,ungulates,orinoco,clades,erlangen,news/talk,vols.,ceara,yakovlev,finsbury,entanglement,fieldhouse,graphene,intensifying,grigory,keyong,zacatecas,ninian,allgemeine,keswick,societa,snorri,femininity,najib,monoclonal,guyanese,postulate,huntly,abbeys,machinist,yunus,emphasising,ishaq,urmia,bremerton,pretenders,lumiere,thoroughfares,chikara,dramatized,metathorax,taiko,transcendence,wycliffe,retrieves,umpired,steuben,racehorses,taylors,kuznetsov,montezuma,precambrian,canopies,gaozong,propodeum,disestablished,retroactive,shoreham,rhizome,doubleheader,clinician,diwali,quartzite,shabaab,agassiz,despatched,stormwater,luxemburg,callao,universidade,courland,skane,glyph,dormers,witwatersrand,curacy,qualcomm,nansen,entablature,lauper,hausdorff,lusaka,ruthenian,360deg,cityscape,douai,vaishnava,spars,vaulting,rationalist,gygax,sequestration,typology,pollinates,accelerators,leben,colonials,cenotaph,imparted,carthaginians,equaled,rostrum,gobind,bodhisattva,oberst,bicycling,arabi,sangre,biophysics,hainaut,vernal,lunenburg,apportioned,finches,lajos,nenad,repackaged,zayed,nikephoros,r.e.m,swaminarayan,gestalt,unplaced,crags,grohl,sialkot,unsaturated,gwinnett,linemen,forays,palakkad,writs,instrumentalists,aircrews,badged,terrapins,180deg,oneness,commissariat,changi,pupation,circumscribed,contador,isotropic,administrated,fiefs,nimes,intrusions,minoru,geschichte,nadph,tainan,changchun,carbondale,frisia,swapo,evesham,hawai'i,encyclopedic,transporters,dysplasia,formula_42,onsite,jindal,guetta,judgements,narbonne,permissions,paleogene,rationalism,vilna,isometric,subtracted,chattahoochee,lamina,missa,greville,pervez,lattices,persistently,crystallization,timbered,hawaiians,fouling,interrelated,masood,ripening,stasi,gamal,visigothic,warlike,cybernetics,tanjung,forfar,cybernetic,karelian,brooklands,belfort,greifswald,campeche,inexplicably,refereeing,understory,uninterested,prius,collegiately,sefid,sarsfield,categorize,biannual,elsevier,eisteddfod,declension,autonoma,procuring,misrepresentation,novelization,bibliographic,shamanism,vestments,potash,eastleigh,ionized,turan,lavishly,scilly,balanchine,importers,parlance,'that,kanyakumari,synods,mieszko,crossovers,serfdom,conformational,legislated,exclave,heathland,sadar,differentiates,propositional,konstantinos,photoshop,manche,vellore,appalachia,orestes,taiga,exchanger,grozny,invalidated,baffin,spezia,staunchly,eisenach,robustness,virtuosity,ciphers,inlets,bolagh,understandings,bosniaks,parser,typhoons,sinan,luzerne,webcomic,subtraction,jhelum,businessweek,ceske,refrained,firebox,mitigated,helmholtz,dilip,eslamabad,metalwork,lucan,apportionment,provident,gdynia,schooners,casement,danse,hajjiabad,benazir,buttress,anthracite,newsreel,wollaston,dispatching,cadastral,riverboat,provincetown,nantwich,missal,irreverent,juxtaposed,darya,ennobled,electropop,stereoscopic,maneuverability,laban,luhansk,udine,collectibles,haulage,holyrood,materially,supercharger,gorizia,shkoder,townhouses,pilate,layoffs,folkloric,dialectic,exuberant,matures,malla,ceuta,citizenry,crewed,couplet,stopover,transposition,tradesmen,antioxidant,amines,utterance,grahame,landless,isere,diction,appellant,satirist,urbino,intertoto,subiaco,antonescu,nehemiah,ubiquitin,emcee,stourbridge,fencers,103rd,wranglers,monteverdi,watertight,expounded,xiamen,manmohan,pirie,threefold,antidepressant,sheboygan,grieg,cancerous,diverging,bernini,polychrome,fundamentalism,bihari,critiqued,cholas,villers,tendulkar,dafydd,vastra,fringed,evangelization,episcopalian,maliki,sana'a,ashburton,trianon,allegany,heptathlon,insufficiently,panelists,pharrell,hexham,amharic,fertilized,plumes,cistern,stratigraphy,akershus,catalans,karoo,rupee,minuteman,quantification,wigmore,leutnant,metanotum,weeknights,iridescent,extrasolar,brechin,deuterium,kuching,lyricism,astrakhan,brookhaven,euphorbia,hradec,bhagat,vardar,aylmer,positron,amygdala,speculators,unaccompanied,debrecen,slurry,windhoek,disaffected,rapporteur,mellitus,blockers,fronds,yatra,sportsperson,precession,physiologist,weeknight,pidgin,pharma,condemns,standardize,zetian,tibor,glycoprotein,emporia,cormorants,amalie,accesses,leonhard,denbighshire,roald,116th,will.i.am,symbiosis,privatised,meanders,chemnitz,jabalpur,shing,secede,ludvig,krajina,homegrown,snippets,sasanian,euripides,peder,cimarron,streaked,graubunden,kilimanjaro,mbeki,middleware,flensburg,bukovina,lindwall,marsalis,profited,abkhaz,polis,camouflaged,amyloid,morgantown,ovoid,bodleian,morte,quashed,gamelan,juventud,natchitoches,storyboard,freeview,enumeration,cielo,preludes,bulawayo,1600s,olympiads,multicast,faunal,asura,reinforces,puranas,ziegfeld,handicraft,seamount,kheil,noche,hallmarks,dermal,colorectal,encircle,hessen,umbilicus,sunnis,leste,unwin,disclosing,superfund,montmartre,refuelling,subprime,kolhapur,etiology,bismuth,laissez,vibrational,mazar,alcoa,rumsfeld,recurve,ticonderoga,lionsgate,onlookers,homesteads,filesystem,barometric,kingswood,biofuel,belleza,moshav,occidentalis,asymptomatic,northeasterly,leveson,huygens,numan,kingsway,primogeniture,toyotomi,yazoo,limpets,greenbelt,booed,concurrence,dihedral,ventrites,raipur,sibiu,plotters,kitab,109th,trackbed,skilful,berthed,effendi,fairing,sephardi,mikhailovich,lockyer,wadham,invertible,paperbacks,alphabetic,deuteronomy,constitutive,leathery,greyhounds,estoril,beechcraft,poblacion,cossidae,excreted,flamingos,singha,olmec,neurotransmitters,ascoli,nkrumah,forerunners,dualism,disenchanted,benefitted,centrum,undesignated,noida,o'donoghue,collages,egrets,egmont,wuppertal,cleave,montgomerie,pseudomonas,srinivasa,lymphatic,stadia,resold,minima,evacuees,consumerism,ronde,biochemist,automorphism,hollows,smuts,improvisations,vespasian,bream,pimlico,eglin,colne,melancholic,berhad,ousting,saale,notaulices,ouest,hunslet,tiberias,abdomina,ramsgate,stanislas,donbass,pontefract,sucrose,halts,drammen,chelm,l'arc,taming,trolleys,konin,incertae,licensees,scythian,giorgos,dative,tanglewood,farmlands,o'keeffe,caesium,romsdal,amstrad,corte,oglethorpe,huntingdonshire,magnetization,adapts,zamosc,shooto,cuttack,centrepiece,storehouse,winehouse,morbidity,woodcuts,ryazan,buddleja,buoyant,bodmin,estero,austral,verifiable,periyar,christendom,curtail,shura,kaifeng,cotswold,invariance,seafaring,gorica,androgen,usman,seabird,forecourt,pekka,juridical,audacious,yasser,cacti,qianlong,polemical,d'amore,espanyol,distrito,cartographers,pacifism,serpents,backa,nucleophilic,overturning,duplicates,marksman,oriente,vuitton,oberleutnant,gielgud,gesta,swinburne,transfiguration,1750s,retaken,celje,fredrikstad,asuka,cropping,mansard,donates,blacksmiths,vijayanagara,anuradhapura,germinate,betis,foreshore,jalandhar,bayonets,devaluation,frazione,ablaze,abidjan,approvals,homeostasis,corollary,auden,superfast,redcliffe,luxembourgish,datum,geraldton,printings,ludhiana,honoree,synchrotron,invercargill,hurriedly,108th,three-and-a-half,colonist,bexar,limousin,bessemer,ossetian,nunataks,buddhas,rebuked,thais,tilburg,verdicts,interleukin,unproven,dordrecht,solent,acclamation,muammar,dahomey,operettas,4x400,arrears,negotiators,whitehaven,apparitions,armoury,psychoactive,worshipers,sculptured,elphinstone,airshow,kjell,o'callaghan,shrank,professorships,predominance,subhash,coulomb,sekolah,retrofitted,samos,overthrowing,vibrato,resistors,palearctic,datasets,doordarshan,subcutaneous,compiles,immorality,patchwork,trinidadian,glycogen,pronged,zohar,visigoths,freres,akram,justo,agora,intakes,craiova,playwriting,bukhari,militarism,iwate,petitioners,harun,wisla,inefficiency,vendome,ledges,schopenhauer,kashi,entombed,assesses,tenn.,noumea,baguio,carex,o'donovan,filings,hillsdale,conjectures,blotches,annuals,lindisfarne,negated,vivek,angouleme,trincomalee,cofactor,verkhovna,backfield,twofold,automaker,rudra,freighters,darul,gharana,busway,formula_43,plattsburgh,portuguesa,showrunner,roadmap,valenciennes,erdos,biafra,spiritualism,transactional,modifies,carne,107th,cocos,gcses,tiverton,radiotherapy,meadowlands,gunma,srebrenica,foxtel,authenticated,enslavement,classicist,klaipeda,minstrels,searchable,infantrymen,incitement,shiga,nadp+,urals,guilders,banquets,exteriors,counterattacks,visualized,diacritics,patrimony,svensson,transepts,prizren,telegraphy,najaf,emblazoned,coupes,effluent,ragam,omani,greensburg,taino,flintshire,cd/dvd,lobbies,narrating,cacao,seafarers,bicolor,collaboratively,suraj,floodlit,sacral,puppetry,tlingit,malwa,login,motionless,thien,overseers,vihar,golem,specializations,bathhouse,priming,overdubs,winningest,archetypes,uniao,acland,creamery,slovakian,lithographs,maryborough,confidently,excavating,stillborn,ramallah,audiencia,alava,ternary,hermits,rostam,bauxite,gawain,lothair,captions,gulfstream,timelines,receded,mediating,petain,bastia,rudbar,bidders,disclaimer,shrews,tailings,trilobites,yuriy,jamil,demotion,gynecology,rajinikanth,madrigals,ghazni,flycatchers,vitebsk,bizet,computationally,kashgar,refinements,frankford,heralds,europe/africa,levante,disordered,sandringham,queues,ransacked,trebizond,verdes,comedie,primitives,figurine,organists,culminate,gosport,coagulation,ferrying,hoyas,polyurethane,prohibitive,midfielders,ligase,progesterone,defectors,sweetened,backcountry,diodorus,waterside,nieuport,khwaja,jurong,decried,gorkha,ismaili,300th,octahedral,kindergartens,paseo,codification,notifications,disregarding,risque,reconquista,shortland,atolls,texarkana,perceval,d'etudes,kanal,herbicides,tikva,nuova,gatherer,dissented,soweto,dexterity,enver,bacharach,placekicker,carnivals,automate,maynooth,symplectic,chetnik,militaire,upanishads,distributive,strafing,championing,moiety,miliband,blackadder,enforceable,maung,dimer,stadtbahn,diverges,obstructions,coleophoridae,disposals,shamrocks,aural,banca,bahru,coxed,grierson,vanadium,watermill,radiative,ecoregions,berets,hariri,bicarbonate,evacuations,mallee,nairn,rushden,loggia,slupsk,satisfactorily,milliseconds,cariboo,reine,cyclo,pigmentation,postmodernism,aqueducts,vasari,bourgogne,dilemmas,liquefied,fluminense,alloa,ibaraki,tenements,kumasi,humerus,raghu,labours,putsch,soundcloud,bodybuilder,rakyat,domitian,pesaro,translocation,sembilan,homeric,enforcers,tombstones,lectureship,rotorua,salamis,nikolaos,inferences,superfortress,lithgow,surmised,undercard,tarnow,barisan,stingrays,federacion,coldstream,haverford,ornithological,heerenveen,eleazar,jyoti,murali,bamako,riverbed,subsidised,theban,conspicuously,vistas,conservatorium,madrasa,kingfishers,arnulf,credential,syndicalist,sheathed,discontinuity,prisms,tsushima,coastlines,escapees,vitis,optimizing,megapixel,overground,embattled,halide,sprinters,buoys,mpumalanga,peculiarities,106th,roamed,menezes,macao,prelates,papyri,freemen,dissertations,irishmen,pooled,sverre,reconquest,conveyance,subjectivity,asturian,circassian,formula_45,comdr,thickets,unstressed,monro,passively,harmonium,moveable,dinar,carlsson,elysees,chairing,b'nai,confusingly,kaoru,convolution,godolphin,facilitator,saxophones,eelam,jebel,copulation,anions,livres,licensure,pontypridd,arakan,controllable,alessandria,propelling,stellenbosch,tiber,wolka,liberators,yarns,d'azur,tsinghua,semnan,amhara,ablation,melies,tonality,historique,beeston,kahne,intricately,sonoran,robespierre,gyrus,boycotts,defaulted,infill,maranhao,emigres,framingham,paraiba,wilhelmshaven,tritium,skyway,labial,supplementation,possessor,underserved,motets,maldivian,marrakech,quays,wikimedia,turbojet,demobilization,petrarch,encroaching,sloops,masted,karbala,corvallis,agribusiness,seaford,stenosis,hieronymus,irani,superdraft,baronies,cortisol,notability,veena,pontic,cyclin,archeologists,newham,culled,concurring,aeolian,manorial,shouldered,fords,philanthropists,105th,siddharth,gotthard,halim,rajshahi,jurchen,detritus,practicable,earthenware,discarding,travelogue,neuromuscular,elkhart,raeder,zygmunt,metastasis,internees,102nd,vigour,upmarket,summarizing,subjunctive,offsets,elizabethtown,udupi,pardubice,repeaters,instituting,archaea,substandard,technische,linga,anatomist,flourishes,velika,tenochtitlan,evangelistic,fitchburg,springbok,cascading,hydrostatic,avars,occasioned,filipina,perceiving,shimbun,africanus,consternation,tsing,optically,beitar,45deg,abutments,roseville,monomers,huelva,lotteries,hypothalamus,internationalist,electromechanical,hummingbirds,fibreglass,salaried,dramatists,uncovers,invokes,earners,excretion,gelding,ancien,aeronautica,haverhill,stour,ittihad,abramoff,yakov,ayodhya,accelerates,industrially,aeroplanes,deleterious,dwelt,belvoir,harpalus,atpase,maluku,alasdair,proportionality,taran,epistemological,interferometer,polypeptide,adjudged,villager,metastatic,marshalls,madhavan,archduchess,weizmann,kalgoorlie,balan,predefined,sessile,sagaing,brevity,insecticide,psychosocial,africana,steelworks,aether,aquifers,belem,mineiro,almagro,radiators,cenozoic,solute,turbocharger,invicta,guested,buccaneer,idolatry,unmatched,paducah,sinestro,dispossessed,conforms,responsiveness,cyanobacteria,flautist,procurator,complementing,semifinalist,rechargeable,permafrost,cytokine,refuges,boomed,gelderland,franchised,jinan,burnie,doubtless,randomness,colspan=12,angra,ginebra,famers,nuestro,declarative,roughness,lauenburg,motile,rekha,issuer,piney,interceptors,napoca,gipsy,formulaic,formula_44,viswanathan,ebrahim,thessalonica,galeria,muskogee,unsold,html5,taito,mobutu,icann,carnarvon,fairtrade,morphisms,upsilon,nozzles,fabius,meander,murugan,strontium,episcopacy,sandinista,parasol,attenuated,bhima,primeval,panay,ordinator,negara,osteoporosis,glossop,ebook,paradoxically,grevillea,modoc,equating,phonetically,legumes,covariant,dorje,quatre,bruxelles,pyroclastic,shipbuilder,zhaozong,obscuring,sveriges,tremolo,extensible,barrack,multnomah,hakon,chaharmahal,parsing,volumetric,astrophysical,glottal,combinatorics,freestanding,encoder,paralysed,cavalrymen,taboos,heilbronn,orientalis,lockport,marvels,ozawa,dispositions,waders,incurring,saltire,modulate,papilio,phenol,intermedia,rappahannock,plasmid,fortify,phenotypes,transiting,correspondences,leaguer,larnaca,incompatibility,mcenroe,deeming,endeavoured,aboriginals,helmed,salar,arginine,werke,ferrand,expropriated,delimited,couplets,phoenicians,petioles,ouster,anschluss,protectionist,plessis,urchins,orquesta,castleton,juniata,bittorrent,fulani,donji,mykola,rosemont,chandos,scepticism,signer,chalukya,wicketkeeper,coquitlam,programmatic,o'brian,carteret,urology,steelhead,paleocene,konkan,bettered,venkatesh,surfacing,longitudinally,centurions,popularization,yazid,douro,widths,premios,leonards,gristmill,fallujah,arezzo,leftists,ecliptic,glycerol,inaction,disenfranchised,acrimonious,depositing,parashah,cockatoo,marechal,bolzano,chios,cablevision,impartiality,pouches,thickly,equities,bentinck,emotive,boson,ashdown,conquistadors,parsi,conservationists,reductive,newlands,centerline,ornithologists,waveguide,nicene,philological,hemel,setanta,masala,aphids,convening,casco,matrilineal,chalcedon,orthographic,hythe,replete,damming,bolivarian,admixture,embarks,borderlands,conformed,nagarjuna,blenny,chaitanya,suwon,shigeru,tatarstan,lingayen,rejoins,grodno,merovingian,hardwicke,puducherry,prototyping,laxmi,upheavals,headquarter,pollinators,bromine,transom,plantagenet,arbuthnot,chidambaram,woburn,osamu,panelling,coauthored,zhongshu,hyaline,omissions,aspergillus,offensively,electrolytic,woodcut,sodom,intensities,clydebank,piotrkow,supplementing,quipped,focke,harbinger,positivism,parklands,wolfenbuttel,cauca,tryptophan,taunus,curragh,tsonga,remand,obscura,ashikaga,eltham,forelimbs,analogs,trnava,observances,kailash,antithesis,ayumi,abyssinia,dorsally,tralee,pursuers,misadventures,padova,perot,mahadev,tarim,granth,licenced,compania,patuxent,baronial,korda,cochabamba,codices,karna,memorialized,semaphore,playlists,mandibular,halal,sivaji,scherzinger,stralsund,foundries,ribosome,mindfulness,nikolayevich,paraphyletic,newsreader,catalyze,ioannina,thalamus,gbit/s,paymaster,sarab,500th,replenished,gamepro,cracow,formula_46,gascony,reburied,lessing,easement,transposed,meurthe,satires,proviso,balthasar,unbound,cuckoos,durbar,louisbourg,cowes,wholesalers,manet,narita,xiaoping,mohamad,illusory,cathal,reuptake,alkaloid,tahrir,mmorpg,underlies,anglicanism,repton,aharon,exogenous,buchenwald,indigent,odostomia,milled,santorum,toungoo,nevsky,steyr,urbanisation,darkseid,subsonic,canaanite,akiva,eglise,dentition,mediators,cirencester,peloponnesian,malmesbury,durres,oerlikon,tabulated,saens,canaria,ischemic,esterhazy,ringling,centralization,walthamstow,nalanda,lignite,takht,leninism,expiring,circe,phytoplankton,promulgation,integrable,breeches,aalto,menominee,borgo,scythians,skrull,galleon,reinvestment,raglan,reachable,liberec,airframes,electrolysis,geospatial,rubiaceae,interdependence,symmetrically,simulcasts,keenly,mauna,adipose,zaidi,fairport,vestibular,actuators,monochromatic,literatures,congestive,sacramental,atholl,skytrain,tycho,tunings,jamia,catharina,modifier,methuen,tapings,infiltrating,colima,grafting,tauranga,halides,pontificate,phonetics,koper,hafez,grooved,kintetsu,extrajudicial,linkoping,cyberpunk,repetitions,laurentian,parnu,bretton,darko,sverdlovsk,foreshadowed,akhenaten,rehnquist,gosford,coverts,pragmatism,broadleaf,ethiopians,instated,mediates,sodra,opulent,descriptor,enugu,shimla,leesburg,officership,giffard,refectory,lusitania,cybermen,fiume,corus,tydfil,lawrenceville,ocala,leviticus,burghers,ataxia,richthofen,amicably,acoustical,watling,inquired,tiempo,multiracial,parallelism,trenchard,tokyopop,germanium,usisl,philharmonia,shapur,jacobites,latinized,sophocles,remittances,o'farrell,adder,dimitrios,peshwa,dimitar,orlov,outstretched,musume,satish,dimensionless,serialised,baptisms,pagasa,antiviral,1740s,quine,arapaho,bombardments,stratosphere,ophthalmic,injunctions,carbonated,nonviolence,asante,creoles,sybra,boilermakers,abington,bipartite,permissive,cardinality,anheuser,carcinogenic,hohenlohe,surinam,szeged,infanticide,generically,floorball,'white,automakers,cerebellar,homozygous,remoteness,effortlessly,allude,'great,headmasters,minting,manchurian,kinabalu,wemyss,seditious,widgets,marbled,almshouses,bards,subgenres,tetsuya,faulting,kickboxer,gaulish,hoseyn,malton,fluvial,questionnaires,mondale,downplayed,traditionalists,vercelli,sumatran,landfills,gamesradar,exerts,franciszek,unlawfully,huesca,diderot,libertarians,professorial,laane,piecemeal,conidae,taiji,curatorial,perturbations,abstractions,szlachta,watercraft,mullah,zoroastrianism,segmental,khabarovsk,rectors,affordability,scuola,diffused,stena,cyclonic,workpiece,romford,'little,jhansi,stalag,zhongshan,skipton,maracaibo,bernadotte,thanet,groening,waterville,encloses,sahrawi,nuffield,moorings,chantry,annenberg,islay,marchers,tenses,wahid,siegen,furstenberg,basques,resuscitation,seminarians,tympanum,gentiles,vegetarianism,tufted,venkata,fantastical,pterophoridae,machined,superposition,glabrous,kaveri,chicane,executors,phyllonorycter,bidirectional,jasta,undertones,touristic,majapahit,navratilova,unpopularity,barbadian,tinian,webcast,hurdler,rigidly,jarrah,staphylococcus,igniting,irrawaddy,stabilised,airstrike,ragas,wakayama,energetically,ekstraklasa,minibus,largemouth,cultivators,leveraging,waitangi,carnaval,weaves,turntables,heydrich,sextus,excavate,govind,ignaz,pedagogue,uriah,borrowings,gemstones,infractions,mycobacterium,batavian,massing,praetor,subalpine,massoud,passers,geostationary,jalil,trainsets,barbus,impair,budejovice,denbigh,pertain,historicity,fortaleza,nederlandse,lamenting,masterchef,doubs,gemara,conductance,ploiesti,cetaceans,courthouses,bhagavad,mihailovic,occlusion,bremerhaven,bulwark,morava,kaine,drapery,maputo,conquistador,kaduna,famagusta,first-past-the-post,erudite,galton,undated,tangential,filho,dismembered,dashes,criterium,darwen,metabolized,blurring,everard,randwick,mohave,impurity,acuity,ansbach,chievo,surcharge,plantain,algoma,porosity,zirconium,selva,sevenoaks,venizelos,gwynne,golgi,imparting,separatism,courtesan,idiopathic,gravestones,hydroelectricity,babar,orford,purposeful,acutely,shard,ridgewood,viterbo,manohar,expropriation,placenames,brevis,cosine,unranked,richfield,newnham,recoverable,flightless,dispersing,clearfield,abu'l,stranraer,kempe,streamlining,goswami,epidermal,pieta,conciliatory,distilleries,electrophoresis,bonne,tiago,curiosities,candidature,picnicking,perihelion,lintel,povoa,gullies,configure,excision,facies,signers,1730s,insufficiency,semiotics,streatham,deactivation,entomological,skippers,albacete,parodying,escherichia,honorees,singaporeans,counterterrorism,tiruchirappalli,omnivorous,metropole,globalisation,athol,unbounded,codice_5,landforms,classifier,farmhouses,reaffirming,reparation,yomiuri,technologists,mitte,medica,viewable,steampunk,konya,kshatriya,repelling,edgewater,lamiinae,devas,potteries,llandaff,engendered,submits,virulence,uplifted,educationist,metropolitans,frontrunner,dunstable,forecastle,frets,methodius,exmouth,linnean,bouchet,repulsion,computable,equalling,liceo,tephritidae,agave,hydrological,azarenka,fairground,l'homme,enforces,xinhua,cinematographers,cooperstown,sa'id,paiute,christianization,tempos,chippenham,insulator,kotor,stereotyped,dello,cours,hisham,d'souza,eliminations,supercars,passau,rebrand,natures,coote,persephone,rededicated,cleaved,plenum,blistering,indiscriminately,cleese,safed,recursively,compacted,revues,hydration,shillong,echelons,garhwal,pedimented,grower,zwolle,wildflower,annexing,methionine,petah,valens,famitsu,petiole,specialities,nestorian,shahin,tokaido,shearwater,barberini,kinsmen,experimenter,alumnae,cloisters,alumina,pritzker,hardiness,soundgarden,julich,ps300,watercourse,cementing,wordplay,olivet,demesne,chasseurs,amide,zapotec,gaozu,porphyry,absorbers,indium,analogies,devotions,engravers,limestones,catapulted,surry,brickworks,gotra,rodham,landline,paleontologists,shankara,islip,raucous,trollope,arpad,embarkation,morphemes,recites,picardie,nakhchivan,tolerances,formula_47,khorramabad,nichiren,adrianople,kirkuk,assemblages,collider,bikaner,bushfires,roofline,coverings,reredos,bibliotheca,mantras,accentuated,commedia,rashtriya,fluctuation,serhiy,referential,fittipaldi,vesicle,geeta,iraklis,immediacy,chulalongkorn,hunsruck,bingen,dreadnoughts,stonemason,meenakshi,lebesgue,undergrowth,baltistan,paradoxes,parlement,articled,tiflis,dixieland,meriden,tejano,underdogs,barnstable,exemplify,venter,tropes,wielka,kankakee,iskandar,zilina,pharyngeal,spotify,materialised,picts,atlantique,theodoric,prepositions,paramilitaries,pinellas,attlee,actuated,piedmontese,grayling,thucydides,multifaceted,unedited,autonomously,universelle,utricularia,mooted,preto,incubated,underlie,brasenose,nootka,bushland,sensu,benzodiazepine,esteghlal,seagoing,amenhotep,azusa,sappers,culpeper,smokeless,thoroughbreds,dargah,gorda,alumna,mankato,zdroj,deleting,culvert,formula_49,punting,wushu,hindering,immunoglobulin,standardisation,birger,oilfield,quadrangular,ulama,recruiters,netanya,1630s,communaute,istituto,maciej,pathan,meher,vikas,characterizations,playmaker,interagency,intercepts,assembles,horthy,introspection,narada,matra,testes,radnicki,estonians,csiro,instar,mitford,adrenergic,crewmembers,haaretz,wasatch,lisburn,rangefinder,ordre,condensate,reforestation,corregidor,spvgg,modulator,mannerist,faulted,aspires,maktoum,squarepants,aethelred,piezoelectric,mulatto,dacre,progressions,jagiellonian,norge,samaria,sukhoi,effingham,coxless,hermetic,humanists,centrality,litters,stirlingshire,beaconsfield,sundanese,geometrically,caretakers,habitually,bandra,pashtuns,bradenton,arequipa,laminar,brickyard,hitchin,sustains,shipboard,ploughing,trechus,wheelers,bracketed,ilyushin,subotica,d'hondt,reappearance,bridgestone,intermarried,fulfilment,aphasia,birkbeck,transformational,strathmore,hornbill,millstone,lacan,voids,solothurn,gymnasiums,laconia,viaducts,peduncle,teachta,edgware,shinty,supernovae,wilfried,exclaim,parthia,mithun,flashpoint,moksha,cumbia,metternich,avalanches,militancy,motorist,rivadavia,chancellorsville,federals,gendered,bounding,footy,gauri,caliphs,lingam,watchmaker,unrecorded,riverina,unmodified,seafloor,droit,pfalz,chrysostom,gigabit,overlordship,besiege,espn2,oswestry,anachronistic,ballymena,reactivation,duchovny,ghani,abacetus,duller,legio,watercourses,nord-pas-de-calais,leiber,optometry,swarms,installer,sancti,adverbs,iheartmedia,meiningen,zeljko,kakheti,notional,circuses,patrilineal,acrobatics,infrastructural,sheva,oregonian,adjudication,aamir,wloclawek,overfishing,obstructive,subtracting,aurobindo,archeologist,newgate,'cause,secularization,tehsils,abscess,fingal,janacek,elkhorn,trims,kraftwerk,mandating,irregulars,faintly,congregationalist,sveti,kasai,mishaps,kennebec,provincially,durkheim,scotties,aicte,rapperswil,imphal,surrenders,morphs,nineveh,hoxha,cotabato,thuringian,metalworking,retold,shogakukan,anthers,proteasome,tippeligaen,disengagement,mockumentary,palatial,erupts,flume,corrientes,masthead,jaroslaw,rereleased,bharti,labors,distilling,tusks,varzim,refounded,enniskillen,melkite,semifinalists,vadodara,bermudian,capstone,grasse,origination,populus,alesi,arrondissements,semigroup,verein,opossum,messrs.,portadown,bulbul,tirupati,mulhouse,tetrahedron,roethlisberger,nonverbal,connexion,warangal,deprecated,gneiss,octet,vukovar,hesketh,chambre,despatch,claes,kargil,hideo,gravelly,tyndale,aquileia,tuners,defensible,tutte,theotokos,constructivist,ouvrage,dukla,polisario,monasticism,proscribed,commutation,testers,nipissing,codon,mesto,olivine,concomitant,exoskeleton,purports,coromandel,eyalet,dissension,hippocrates,purebred,yaounde,composting,oecophoridae,procopius,o'day,angiogenesis,sheerness,intelligencer,articular,felixstowe,aegon,endocrinology,trabzon,licinius,pagodas,zooplankton,hooghly,satie,drifters,sarthe,mercian,neuilly,tumours,canal+,scheldt,inclinations,counteroffensive,roadrunners,tuzla,shoreditch,surigao,predicates,carnot,algeciras,militaries,generalize,bulkheads,gawler,pollutant,celta,rundgren,microrna,gewog,olimpija,placental,lubelski,roxburgh,discerned,verano,kikuchi,musicale,l'enfant,ferocity,dimorphic,antigonus,erzurum,prebendary,recitative,discworld,cyrenaica,stigmella,totnes,sutta,pachuca,ulsan,downton,landshut,castellan,pleural,siedlce,siecle,catamaran,cottbus,utilises,trophic,freeholders,holyhead,u.s.s,chansons,responder,waziristan,suzuka,birding,shogi,asker,acetone,beautification,cytotoxic,dixit,hunterdon,cobblestone,formula_48,kossuth,devizes,sokoto,interlaced,shuttered,kilowatts,assiniboine,isaak,salto,alderney,sugarloaf,franchising,aggressiveness,toponyms,plaintext,antimatter,henin,equidistant,salivary,bilingualism,mountings,obligate,extirpated,irenaeus,misused,pastoralists,aftab,immigrating,warping,tyrolean,seaforth,teesside,soundwave,oligarchy,stelae,pairwise,iupac,tezuka,posht,orchestrations,landmass,ironstone,gallia,hjalmar,carmelites,strafford,elmhurst,palladio,fragility,teleplay,gruffudd,karoly,yerba,potok,espoo,inductance,macaque,nonprofits,pareto,rock'n'roll,spiritualist,shadowed,skateboarder,utterances,generality,congruence,prostrate,deterred,yellowknife,albarn,maldon,battlements,mohsen,insecticides,khulna,avellino,menstruation,glutathione,springdale,parlophone,confraternity,korps,countrywide,bosphorus,preexisting,damodar,astride,alexandrovich,sprinting,crystallized,botev,leaching,interstates,veers,angevin,undaunted,yevgeni,nishapur,northerners,alkmaar,bethnal,grocers,sepia,tornus,exemplar,trobe,charcot,gyeonggi,larne,tournai,lorain,voided,genji,enactments,maxilla,adiabatic,eifel,nazim,transducer,thelonious,pyrite,deportiva,dialectal,bengt,rosettes,labem,sergeyevich,synoptic,conservator,statuette,biweekly,adhesives,bifurcation,rajapaksa,mammootty,republique,yusef,waseda,marshfield,yekaterinburg,minnelli,fundy,fenian,matchups,dungannon,supremacist,panelled,drenthe,iyengar,fibula,narmada,homeport,oceanside,precept,antibacterial,altarpieces,swath,ospreys,lillooet,legnica,lossless,formula_50,galvatron,iorga,stormont,rsfsr,loggers,kutno,phenomenological,medallists,cuatro,soissons,homeopathy,bituminous,injures,syndicates,typesetting,displacements,dethroned,makassar,lucchese,abergavenny,targu,alborz,akb48,boldface,gastronomy,sacra,amenity,accumulator,myrtaceae,cornices,mourinho,denunciation,oxbow,diddley,aargau,arbitrage,bedchamber,gruffydd,zamindar,klagenfurt,caernarfon,slowdown,stansted,abrasion,tamaki,suetonius,dukakis,individualistic,ventrally,hotham,perestroika,ketones,fertilisation,sobriquet,couplings,renderings,misidentified,rundfunk,sarcastically,braniff,concours,dismissals,elegantly,modifiers,crediting,combos,crucially,seafront,lieut,ischemia,manchus,derivations,proteases,aristophanes,adenauer,porting,hezekiah,sante,trulli,hornblower,foreshadowing,ypsilanti,dharwad,khani,hohenstaufen,distillers,cosmodrome,intracranial,turki,salesian,gorzow,jihlava,yushchenko,leichhardt,venables,cassia,eurogamer,airtel,curative,bestsellers,timeform,sortied,grandview,massillon,ceding,pilbara,chillicothe,heredity,elblag,rogaland,ronne,millennial,batley,overuse,bharata,fille,campbelltown,abeyance,counterclockwise,250cc,neurodegenerative,consigned,electromagnetism,sunnah,saheb,exons,coxswain,gleaned,bassoons,worksop,prismatic,immigrate,pickets,takeo,bobsledder,stosur,fujimori,merchantmen,stiftung,forli,endorses,taskforce,thermally,atman,gurps,floodplains,enthalpy,extrinsic,setubal,kennesaw,grandis,scalability,durations,showrooms,prithvi,outro,overruns,andalucia,amanita,abitur,hipper,mozambican,sustainment,arsene,chesham,palaeolithic,reportage,criminality,knowsley,haploid,atacama,shueisha,ridgefield,astern,getafe,lineal,timorese,restyled,hollies,agincourt,unter,justly,tannins,mataram,industrialised,tarnovo,mumtaz,mustapha,stretton,synthetase,condita,allround,putra,stjepan,troughs,aechmea,specialisation,wearable,kadokawa,uralic,aeros,messiaen,existentialism,jeweller,effigies,gametes,fjordane,cochlear,interdependent,demonstrative,unstructured,emplacement,famines,spindles,amplitudes,actuator,tantalum,psilocybe,apnea,monogatari,expulsions,seleucus,tsuen,hospitaller,kronstadt,eclipsing,olympiakos,clann,canadensis,inverter,helio,egyptologist,squamous,resonate,munir,histology,torbay,khans,jcpenney,veterinarians,aintree,microscopes,colonised,reflectors,phosphorylated,pristimantis,tulare,corvinus,multiplexing,midweek,demosthenes,transjordan,ecija,tengku,vlachs,anamorphic,counterweight,radnor,trinitarian,armidale,maugham,njsiaa,futurism,stairways,avicenna,montebello,bridgetown,wenatchee,lyonnais,amass,surinamese,streptococcus,m*a*s*h,hydrogenation,frazioni,proscenium,kalat,pennsylvanian,huracan,tallying,kralove,nucleolar,phrygian,seaports,hyacinthe,ignace,donning,instalment,regnal,fonds,prawn,carell,folktales,goaltending,bracknell,vmware,patriarchy,mitsui,kragujevac,pythagoras,soult,thapa,disproved,suwalki,secures,somoza,l'ecole,divizia,chroma,herders,technologist,deduces,maasai,rampur,paraphrase,raimi,imaged,magsaysay,ivano,turmeric,formula_51,subcommittees,axillary,ionosphere,organically,indented,refurbishing,pequot,violinists,bearn,colle,contralto,silverton,mechanization,etruscans,wittelsbach,pasir,redshirted,marrakesh,scarp,plein,wafers,qareh,teotihuacan,frobenius,sinensis,rehoboth,bundaberg,newbridge,hydrodynamic,traore,abubakar,adjusts,storytellers,dynamos,verbandsliga,concertmaster,exxonmobil,appreciable,sieradz,marchioness,chaplaincy,rechristened,cunxu,overpopulation,apolitical,sequencer,beaked,nemanja,binaries,intendant,absorber,filamentous,indebtedness,nusra,nashik,reprises,psychedelia,abwehr,ligurian,isoform,resistive,pillaging,mahathir,reformatory,lusatia,allerton,ajaccio,tepals,maturin,njcaa,abyssinian,objector,fissures,sinuous,ecclesiastic,dalits,caching,deckers,phosphates,wurlitzer,navigated,trofeo,berea,purefoods,solway,unlockable,grammys,kostroma,vocalizations,basilan,rebuke,abbasi,douala,helsingborg,ambon,bakar,runestones,cenel,tomislav,pigmented,northgate,excised,seconda,kirke,determinations,dedicates,vilas,pueblos,reversion,unexploded,overprinted,ekiti,deauville,masato,anaesthesia,endoplasmic,transponders,aguascalientes,hindley,celluloid,affording,bayeux,piaget,rickshaws,eishockey,camarines,zamalek,undersides,hardwoods,hermitian,mutinied,monotone,blackmails,affixes,jpmorgan,habermas,mitrovica,paleontological,polystyrene,thana,manas,conformist,turbofan,decomposes,logano,castration,metamorphoses,patroness,herbicide,mikolaj,rapprochement,macroeconomics,barranquilla,matsudaira,lintels,femina,hijab,spotsylvania,morpheme,bitola,baluchistan,kurukshetra,otway,extrusion,waukesha,menswear,helder,trung,bingley,protester,boars,overhang,differentials,exarchate,hejaz,kumara,unjustified,timings,sharpness,nuovo,taisho,sundar,etc..,jehan,unquestionably,muscovy,daltrey,canute,paneled,amedeo,metroplex,elaborates,telus,tetrapods,dragonflies,epithets,saffir,parthenon,lucrezia,refitting,pentateuch,hanshin,montparnasse,lumberjacks,sanhedrin,erectile,odors,greenstone,resurgent,leszek,amory,substituents,prototypical,viewfinder,monck,universiteit,joffre,revives,chatillon,seedling,scherzo,manukau,ashdod,gympie,homolog,stalwarts,ruinous,weibo,tochigi,wallenberg,gayatri,munda,satyagraha,storefronts,heterogeneity,tollway,sportswriters,binocular,gendarmes,ladysmith,tikal,ortsgemeinde,ja'far,osmotic,linlithgow,bramley,telecoms,pugin,repose,rupaul,sieur,meniscus,garmisch,reintroduce,400th,shoten,poniatowski,drome,kazakhstani,changeover,astronautics,husserl,herzl,hypertext,katakana,polybius,antananarivo,seong,breguet,reliquary,utada,aggregating,liangshan,sivan,tonawanda,audiobooks,shankill,coulee,phenolic,brockton,bookmakers,handsets,boaters,wylde,commonality,mappings,silhouettes,pennines,maurya,pratchett,singularities,eschewed,pretensions,vitreous,ibero,totalitarianism,poulenc,lingered,directx,seasoning,deputation,interdict,illyria,feedstock,counterbalance,muzik,buganda,parachuted,violist,homogeneity,comix,fjords,corsairs,punted,verandahs,equilateral,laoghaire,magyars,117th,alesund,televoting,mayotte,eateries,refurbish,nswrl,yukio,caragiale,zetas,dispel,codecs,inoperable,outperformed,rejuvenation,elstree,modernise,contributory,pictou,tewkesbury,chechens,ashina,psionic,refutation,medico,overdubbed,nebulae,sandefjord,personages,eccellenza,businessperson,placename,abenaki,perryville,threshing,reshaped,arecibo,burslem,colspan=3|turnout,rebadged,lumia,erinsborough,interactivity,bitmap,indefatigable,theosophy,excitatory,gleizes,edsel,bermondsey,korce,saarinen,wazir,diyarbakir,cofounder,liberalisation,onsen,nighthawks,siting,retirements,semyon,d'histoire,114th,redditch,venetia,praha,'round,valdosta,hieroglyphic,postmedial,edirne,miscellany,savona,cockpits,minimization,coupler,jacksonian,appeasement,argentines,saurashtra,arkwright,hesiod,folios,fitzalan,publica,rivaled,civitas,beermen,constructivism,ribeira,zeitschrift,solanum,todos,deformities,chilliwack,verdean,meagre,bishoprics,gujrat,yangzhou,reentered,inboard,mythologies,virtus,unsurprisingly,rusticated,museu,symbolise,proportionate,thesaban,symbian,aeneid,mitotic,veliki,compressive,cisterns,abies,winemaker,massenet,bertolt,ahmednagar,triplemania,armorial,administracion,tenures,smokehouse,hashtag,fuerza,regattas,gennady,kanazawa,mahmudabad,crustal,asaph,valentinian,ilaiyaraaja,honeyeater,trapezoidal,cooperatively,unambiguously,mastodon,inhospitable,harnesses,riverton,renewables,djurgardens,haitians,airings,humanoids,boatswain,shijiazhuang,faints,veera,punjabis,steepest,narain,karlovy,serre,sulcus,collectives,1500m,arion,subarctic,liberally,apollonius,ostia,droplet,headstones,norra,robusta,maquis,veronese,imola,primers,luminance,escadrille,mizuki,irreconcilable,stalybridge,temur,paraffin,stuccoed,parthians,counsels,fundamentalists,vivendi,polymath,sugababes,mikko,yonne,fermions,vestfold,pastoralist,kigali,unseeded,glarus,cusps,amasya,northwesterly,minorca,astragalus,verney,trevelyan,antipathy,wollstonecraft,bivalves,boulez,royle,divisao,quranic,bareilly,coronal,deviates,lulea,erectus,petronas,chandan,proxies,aeroflot,postsynaptic,memoriam,moyne,gounod,kuznetsova,pallava,ordinating,reigate,'first,lewisburg,exploitative,danby,academica,bailiwick,brahe,injective,stipulations,aeschylus,computes,gulden,hydroxylase,liveries,somalis,underpinnings,muscovite,kongsberg,domus,overlain,shareware,variegated,jalalabad,agence,ciphertext,insectivores,dengeki,menuhin,cladistic,baerum,betrothal,tokushima,wavelet,expansionist,pottsville,siyuan,prerequisites,carpi,nemzeti,nazar,trialled,eliminator,irrorated,homeward,redwoods,undeterred,strayed,lutyens,multicellular,aurelian,notated,lordships,alsatian,idents,foggia,garros,chalukyas,lillestrom,podlaski,pessimism,hsien,demilitarized,whitewashed,willesden,kirkcaldy,sanctorum,lamia,relaying,escondido,paediatric,contemplates,demarcated,bluestone,betula,penarol,capitalise,kreuznach,kenora,115th,hold'em,reichswehr,vaucluse,m.i.a,windings,boys/girls,cajon,hisar,predictably,flemington,ysgol,mimicked,clivina,grahamstown,ionia,glyndebourne,patrese,aquaria,sleaford,dayal,sportscenter,malappuram,m.b.a.,manoa,carbines,solvable,designator,ramanujan,linearity,academicians,sayid,lancastrian,factorial,strindberg,vashem,delos,comyn,condensing,superdome,merited,kabaddi,intransitive,bideford,neuroimaging,duopoly,scorecards,ziggler,heriot,boyars,virology,marblehead,microtubules,westphalian,anticipates,hingham,searchers,harpist,rapides,morricone,convalescent,mises,nitride,metrorail,matterhorn,bicol,drivetrain,marketer,snippet,winemakers,muban,scavengers,halberstadt,herkimer,peten,laborious,stora,montgomeryshire,booklist,shamir,herault,eurostar,anhydrous,spacewalk,ecclesia,calliostoma,highschool,d'oro,suffusion,imparts,overlords,tagus,rectifier,counterinsurgency,ministered,eilean,milecastle,contre,micromollusk,okhotsk,bartoli,matroid,hasidim,thirunal,terme,tarlac,lashkar,presque,thameslink,flyby,troopship,renouncing,fatih,messrs,vexillum,bagration,magnetite,bornholm,androgynous,vehement,tourette,philosophic,gianfranco,tuileries,codice_6,radially,flexion,hants,reprocessing,setae,burne,palaeographically,infantryman,shorebirds,tamarind,moderna,threading,militaristic,crohn,norrkoping,125cc,stadtholder,troms,klezmer,alphanumeric,brome,emmanuelle,tiwari,alchemical,formula_52,onassis,bleriot,bipedal,colourless,hermeneutics,hosni,precipitating,turnstiles,hallucinogenic,panhellenic,wyandotte,elucidated,chita,ehime,generalised,hydrophilic,biota,niobium,rnzaf,gandhara,longueuil,logics,sheeting,bielsko,cuvier,kagyu,trefoil,docent,pancrase,stalinism,postures,encephalopathy,monckton,imbalances,epochs,leaguers,anzio,diminishes,pataki,nitrite,amuro,nabil,maybach,l'aquila,babbler,bacolod,thutmose,evora,gaudi,breakage,recur,preservative,60deg,mendip,functionaries,columnar,maccabiah,chert,verden,bromsgrove,clijsters,dengue,pastorate,phuoc,principia,viareggio,kharagpur,scharnhorst,anyang,bosons,l'art,criticises,ennio,semarang,brownian,mirabilis,asperger,calibers,typographical,cartooning,minos,disembark,supranational,undescribed,etymologically,alappuzha,vilhelm,lanao,pakenham,bhagavata,rakoczi,clearings,astrologers,manitowoc,bunuel,acetylene,scheduler,defamatory,trabzonspor,leaded,scioto,pentathlete,abrahamic,minigames,aldehydes,peerages,legionary,1640s,masterworks,loudness,bryansk,likeable,genocidal,vegetated,towpath,declination,pyrrhus,divinely,vocations,rosebery,associazione,loaders,biswas,oeste,tilings,xianzong,bhojpuri,annuities,relatedness,idolator,psers,constriction,chuvash,choristers,hanafi,fielders,grammarian,orpheum,asylums,millbrook,gyatso,geldof,stabilise,tableaux,diarist,kalahari,panini,cowdenbeath,melanin,4x100m,resonances,pinar,atherosclerosis,sheringham,castlereagh,aoyama,larks,pantograph,protrude,natak,gustafsson,moribund,cerevisiae,cleanly,polymeric,holkar,cosmonauts,underpinning,lithosphere,firuzabad,languished,mingled,citrate,spadina,lavas,daejeon,fibrillation,porgy,pineville,ps1000,cobbled,emamzadeh,mukhtar,dampers,indelible,salonika,nanoscale,treblinka,eilat,purporting,fluctuate,mesic,hagiography,cutscenes,fondation,barrens,comically,accrue,ibrox,makerere,defections,'there,hollandia,skene,grosseto,reddit,objectors,inoculation,rowdies,playfair,calligrapher,namor,sibenik,abbottabad,propellants,hydraulically,chloroplasts,tablelands,tecnico,schist,klasse,shirvan,bashkortostan,bullfighting,north/south,polski,hanns,woodblock,kilmore,ejecta,ignacy,nanchang,danubian,commendations,snohomish,samaritans,argumentation,vasconcelos,hedgehogs,vajrayana,barents,kulkarni,kumbakonam,identifications,hillingdon,weirs,nayanar,beauvoir,messe,divisors,atlantiques,broods,affluence,tegucigalpa,unsuited,autodesk,akash,princeps,culprits,kingstown,unassuming,goole,visayan,asceticism,blagojevich,irises,paphos,unsound,maurier,pontchartrain,desertification,sinfonietta,latins,especial,limpet,valerenga,glial,brainstem,mitral,parables,sauropod,judean,iskcon,sarcoma,venlo,justifications,zhuhai,blavatsky,alleviated,usafe,steppenwolf,inversions,janko,chagall,secretory,basildon,saguenay,pergamon,hemispherical,harmonized,reloading,franjo,domaine,extravagance,relativism,metamorphosed,labuan,baloncesto,gmail,byproducts,calvinists,counterattacked,vitus,bubonic,120th,strachey,ritually,brookwood,selectable,savinja,incontinence,meltwater,jinja,1720s,brahmi,morgenthau,sheaves,sleeved,stratovolcano,wielki,utilisation,avoca,fluxus,panzergrenadier,philately,deflation,podlaska,prerogatives,kuroda,theophile,zhongzong,gascoyne,magus,takao,arundell,fylde,merdeka,prithviraj,venkateswara,liepaja,daigo,dreamland,reflux,sunnyvale,coalfields,seacrest,soldering,flexor,structuralism,alnwick,outweighed,unaired,mangeshkar,batons,glaad,banshees,irradiated,organelles,biathlete,cabling,chairlift,lollapalooza,newsnight,capacitive,succumbs,flatly,miramichi,burwood,comedienne,charteris,biotic,workspace,aficionados,sokolka,chatelet,o'shaughnessy,prosthesis,neoliberal,refloated,oppland,hatchlings,econometrics,loess,thieu,androids,appalachians,jenin,pterostichinae,downsized,foils,chipsets,stencil,danza,narrate,maginot,yemenite,bisects,crustacean,prescriptive,melodious,alleviation,empowers,hansson,autodromo,obasanjo,osmosis,daugava,rheumatism,moraes,leucine,etymologies,chepstow,delaunay,bramall,bajaj,flavoring,approximates,marsupials,incisive,microcomputer,tactically,waals,wilno,fisichella,ursus,hindmarsh,mazarin,lomza,xenophobia,lawlessness,annecy,wingers,gornja,gnaeus,superieur,tlaxcala,clasps,symbolises,slats,rightist,effector,blighted,permanence,divan,progenitors,kunsthalle,anointing,excelling,coenzyme,indoctrination,dnipro,landholdings,adriaan,liturgies,cartan,ethmia,attributions,sanctus,trichy,chronicon,tancred,affinis,kampuchea,gantry,pontypool,membered,distrusted,fissile,dairies,hyposmocoma,craigie,adarsh,martinsburg,taxiway,30deg,geraint,vellum,bencher,khatami,formula_53,zemun,teruel,endeavored,palmares,pavements,u.s..,internationalization,satirized,carers,attainable,wraparound,muang,parkersburg,extinctions,birkenfeld,wildstorm,payers,cohabitation,unitas,culloden,capitalizing,clwyd,daoist,campinas,emmylou,orchidaceae,halakha,orientales,fealty,domnall,chiefdom,nigerians,ladislav,dniester,avowed,ergonomics,newsmagazine,kitsch,cantilevered,benchmarking,remarriage,alekhine,coldfield,taupo,almirante,substations,apprenticeships,seljuq,levelling,eponym,symbolising,salyut,opioids,underscore,ethnologue,mohegan,marikina,libro,bassano,parse,semantically,disjointed,dugdale,padraig,tulsi,modulating,xfinity,headlands,mstislav,earthworms,bourchier,lgbtq,embellishments,pennants,rowntree,betel,motet,mulla,catenary,washoe,mordaunt,dorking,colmar,girardeau,glentoran,grammatically,samad,recreations,technion,staccato,mikoyan,spoilers,lyndhurst,victimization,chertsey,belafonte,tondo,tonsberg,narrators,subcultures,malformations,edina,augmenting,attests,euphemia,cabriolet,disguising,1650s,navarrese,demoralized,cardiomyopathy,welwyn,wallachian,smoothness,planktonic,voles,issuers,sardasht,survivability,cuauhtemoc,thetis,extruded,signet,raghavan,lombok,eliyahu,crankcase,dissonant,stolberg,trencin,desktops,bursary,collectivization,charlottenburg,triathlete,curvilinear,involuntarily,mired,wausau,invades,sundaram,deletions,bootstrap,abellio,axiomatic,noguchi,setups,malawian,visalia,materialist,kartuzy,wenzong,plotline,yeshivas,parganas,tunica,citric,conspecific,idlib,superlative,reoccupied,blagoevgrad,masterton,immunological,hatta,courbet,vortices,swallowtail,delves,haridwar,diptera,boneh,bahawalpur,angering,mardin,equipments,deployable,guanine,normality,rimmed,artisanal,boxset,chandrasekhar,jools,chenar,tanakh,carcassonne,belatedly,millville,anorthosis,reintegration,velde,surfactant,kanaan,busoni,glyphipterix,personas,fullness,rheims,tisza,stabilizers,bharathi,joost,spinola,mouldings,perching,esztergom,afzal,apostate,lustre,s.league,motorboat,monotheistic,armature,barat,asistencia,bloomsburg,hippocampal,fictionalised,defaults,broch,hexadecimal,lusignan,ryanair,boccaccio,breisgau,southbank,bskyb,adjoined,neurobiology,aforesaid,sadhu,langue,headship,wozniacki,hangings,regulus,prioritized,dynamism,allier,hannity,shimin,antoninus,gymnopilus,caledon,preponderance,melayu,electrodynamics,syncopated,ibises,krosno,mechanistic,morpeth,harbored,albini,monotheism,'real,hyperactivity,haveli,writer/director,minato,nimoy,caerphilly,chitral,amirabad,fanshawe,l'oreal,lorde,mukti,authoritarianism,valuing,spyware,hanbury,restarting,stato,embed,suiza,empiricism,stabilisation,stari,castlemaine,orbis,manufactory,mauritanian,shoji,taoyuan,prokaryotes,oromia,ambiguities,embodying,slims,frente,innovate,ojibwa,powdery,gaeltacht,argentinos,quatermass,detergents,fijians,adaptor,tokai,chileans,bulgars,oxidoreductases,bezirksliga,conceicao,myosin,nellore,500cc,supercomputers,approximating,glyndwr,polypropylene,haugesund,cockerell,tudman,ashbourne,hindemith,bloodlines,rigveda,etruria,romanos,steyn,oradea,deceleration,manhunter,laryngeal,fraudulently,janez,wendover,haplotype,janaki,naoki,belizean,mellencamp,cartographic,sadhana,tricolour,pseudoscience,satara,bytow,s.p.a.,jagdgeschwader,arcot,omagh,sverdrup,masterplan,surtees,apocrypha,ahvaz,d'amato,socratic,leumit,unnumbered,nandini,witold,marsupial,coalesced,interpolated,gimnasia,karadzic,keratin,mamoru,aldeburgh,speculator,escapement,irfan,kashyap,satyajit,haddington,solver,rothko,ashkelon,kickapoo,yeomen,superbly,bloodiest,greenlandic,lithic,autofocus,yardbirds,poona,keble,javan,sufis,expandable,tumblr,ursuline,swimwear,winwood,counsellors,aberrations,marginalised,befriending,workouts,predestination,varietal,siddhartha,dunkeld,judaic,esquimalt,shabab,ajith,telefonica,stargard,hoysala,radhakrishnan,sinusoidal,strada,hiragana,cebuano,monoid,independencia,floodwaters,mildura,mudflats,ottokar,translit,radix,wigner,philosophically,tephritid,synthesizing,castletown,installs,stirner,resettle,bushfire,choirmaster,kabbalistic,shirazi,lightship,rebus,colonizers,centrifuge,leonean,kristofferson,thymus,clackamas,ratnam,rothesay,municipally,centralia,thurrock,gulfport,bilinear,desirability,merite,psoriasis,macaw,erigeron,consignment,mudstone,distorting,karlheinz,ramen,tailwheel,vitor,reinsurance,edifices,superannuation,dormancy,contagion,cobden,rendezvoused,prokaryotic,deliberative,patricians,feigned,degrades,starlings,sopot,viticultural,beaverton,overflowed,convener,garlands,michiel,ternopil,naturelle,biplanes,bagot,gamespy,ventspils,disembodied,flattening,profesional,londoners,arusha,scapular,forestall,pyridine,ulema,eurodance,aruna,callus,periodontal,coetzee,immobilized,o'meara,maharani,katipunan,reactants,zainab,microgravity,saintes,britpop,carrefour,constrain,adversarial,firebirds,brahmo,kashima,simca,surety,surpluses,superconductivity,gipuzkoa,cumans,tocantins,obtainable,humberside,roosting,'king,formula_54,minelayer,bessel,sulayman,cycled,biomarkers,annealing,shusha,barda,cassation,djing,polemics,tuple,directorates,indomitable,obsolescence,wilhelmine,pembina,bojan,tambo,dioecious,pensioner,magnificat,1660s,estrellas,southeasterly,immunodeficiency,railhead,surreptitiously,codeine,encores,religiosity,tempera,camberley,efendi,boardings,malleable,hagia,input/output,lucasfilm,ujjain,polymorphisms,creationist,berners,mickiewicz,irvington,linkedin,endures,kinect,munition,apologetics,fairlie,predicated,reprinting,ethnographer,variances,levantine,mariinsky,jadid,jarrow,asia/oceania,trinamool,waveforms,bisexuality,preselection,pupae,buckethead,hieroglyph,lyricists,marionette,dunbartonshire,restorer,monarchical,pazar,kickoffs,cabildo,savannas,gliese,dench,spoonbills,novelette,diliman,hypersensitivity,authorising,montefiore,mladen,qu'appelle,theistic,maruti,laterite,conestoga,saare,californica,proboscis,carrickfergus,imprecise,hadassah,baghdadi,jolgeh,deshmukh,amusements,heliopolis,berle,adaptability,partenkirchen,separations,baikonur,cardamom,southeastward,southfield,muzaffar,adequacy,metropolitana,rajkot,kiyoshi,metrobus,evictions,reconciles,librarianship,upsurge,knightley,badakhshan,proliferated,spirituals,burghley,electroacoustic,professing,featurette,reformists,skylab,descriptors,oddity,greyfriars,injects,salmond,lanzhou,dauntless,subgenera,underpowered,transpose,mahinda,gatos,aerobatics,seaworld,blocs,waratahs,joris,giggs,perfusion,koszalin,mieczyslaw,ayyubid,ecologists,modernists,sant'angelo,quicktime,him/her,staves,sanyo,melaka,acrocercops,qigong,iterated,generalizes,recuperation,vihara,circassians,psychical,chavo,memoires,infiltrates,notaries,pelecaniformesfamily,strident,chivalric,pierrepont,alleviating,broadsides,centipede,b.tech,reinterpreted,sudetenland,hussite,covenanters,radhika,ironclads,gainsbourg,testis,penarth,plantar,azadegan,beano,espn.com,leominster,autobiographies,nbcuniversal,eliade,khamenei,montferrat,undistinguished,ethnological,wenlock,fricatives,polymorphic,biome,joule,sheaths,astrophysicist,salve,neoclassicism,lovat,downwind,belisarius,forma,usurpation,freie,depopulation,backbench,ascenso,'high,aagpbl,gdanski,zalman,mouvement,encapsulation,bolshevism,statny,voyageurs,hywel,vizcaya,mazra'eh,narthex,azerbaijanis,cerebrospinal,mauretania,fantail,clearinghouse,bolingbroke,pequeno,ansett,remixing,microtubule,wrens,jawahar,palembang,gambian,hillsong,fingerboard,repurposed,sundry,incipient,veolia,theologically,ulaanbaatar,atsushi,foundling,resistivity,myeloma,factbook,mazowiecka,diacritic,urumqi,clontarf,provokes,intelsat,professes,materialise,portobello,benedictines,panionios,introverted,reacquired,bridport,mammary,kripke,oratorios,vlore,stoning,woredas,unreported,antti,togolese,fanzines,heuristics,conservatories,carburetors,clitheroe,cofounded,formula_57,erupting,quinnipiac,bootle,ghostface,sittings,aspinall,sealift,transferase,boldklub,siskiyou,predominated,francophonie,ferruginous,castrum,neogene,sakya,madama,precipitous,'love,posix,bithynia,uttara,avestan,thrushes,seiji,memorably,septimius,libri,cibernetico,hyperinflation,dissuaded,cuddalore,peculiarity,vaslui,grojec,albumin,thurles,casks,fasteners,fluidity,buble,casals,terek,gnosticism,cognates,ulnar,radwanska,babylonians,majuro,oxidizer,excavators,rhythmically,liffey,gorakhpur,eurydice,underscored,arborea,lumumba,tuber,catholique,grama,galilei,scrope,centreville,jacobin,bequests,ardeche,polygamous,montauban,terai,weatherboard,readability,attainder,acraea,transversely,rivets,winterbottom,reassures,bacteriology,vriesea,chera,andesite,dedications,homogenous,reconquered,bandon,forrestal,ukiyo,gurdjieff,tethys,sparc,muscogee,grebes,belchatow,mansa,blantyre,palliser,sokolow,fibroblasts,exmoor,misaki,soundscapes,housatonic,middelburg,convenor,leyla,antipope,histidine,okeechobee,alkenes,sombre,alkene,rubik,macaques,calabar,trophee,pinchot,'free,frusciante,chemins,falaise,vasteras,gripped,schwarzenberg,cumann,kanchipuram,acoustically,silverbacks,fangio,inset,plympton,kuril,vaccinations,recep,theropods,axils,stavropol,encroached,apoptotic,papandreou,wailers,moonstone,assizes,micrometers,hornchurch,truncation,annapurna,egyptologists,rheumatic,promiscuity,satiric,fleche,caloptilia,anisotropy,quaternions,gruppo,viscounts,awardees,aftershocks,sigint,concordance,oblasts,gaumont,stent,commissars,kesteven,hydroxy,vijayanagar,belorussian,fabricius,watermark,tearfully,mamet,leukaemia,sorkh,milepost,tattooing,vosta,abbasids,uncompleted,hedong,woodwinds,extinguishing,malus,multiplexes,francoist,pathet,responsa,bassists,'most,postsecondary,ossory,grampian,saakashvili,alito,strasberg,impressionistic,volador,gelatinous,vignette,underwing,campanian,abbasabad,albertville,hopefuls,nieuwe,taxiways,reconvened,recumbent,pathologists,unionized,faversham,asymptotically,romulo,culling,donja,constricted,annesley,duomo,enschede,lovech,sharpshooter,lansky,dhamma,papillae,alanine,mowat,delius,wrest,mcluhan,podkarpackie,imitators,bilaspur,stunting,pommel,casemate,handicaps,nagas,testaments,hemings,necessitate,rearward,locative,cilla,klitschko,lindau,merion,consequential,antic,soong,copula,berthing,chevrons,rostral,sympathizer,budokan,ranulf,beria,stilt,replying,conflated,alcibiades,painstaking,yamanashi,calif.,arvid,ctesiphon,xizong,rajas,caxton,downbeat,resurfacing,rudders,miscegenation,deathmatch,foregoing,arthropod,attestation,karts,reapportionment,harnessing,eastlake,schola,dosing,postcolonial,imtiaz,formula_55,insulators,gunung,accumulations,pampas,llewelyn,bahnhof,cytosol,grosjean,teaneck,briarcliff,arsenio,canara,elaborating,passchendaele,searchlights,holywell,mohandas,preventable,gehry,mestizos,ustinov,cliched,'national,heidfeld,tertullian,jihadist,tourer,miletus,semicircle,outclassed,bouillon,cardinalate,clarifies,dakshina,bilayer,pandyan,unrwa,chandragupta,formula_56,portola,sukumaran,lactation,islamia,heikki,couplers,misappropriation,catshark,montt,ploughs,carib,stator,leaderboard,kenrick,dendrites,scape,tillamook,molesworth,mussorgsky,melanesia,restated,troon,glycoside,truckee,headwater,mashup,sectoral,gangwon,docudrama,skirting,psychopathology,dramatised,ostroleka,infestations,thabo,depolarization,wideroe,eisenbahn,thomond,kumaon,upendra,foreland,acronyms,yaqui,retaking,raphaelite,specie,dupage,villars,lucasarts,chloroplast,werribee,balsa,ascribe,havant,flava,khawaja,tyumen,subtract,interrogators,reshaping,buzzcocks,eesti,campanile,potemkin,apertures,snowboarder,registrars,handbooks,boyar,contaminant,depositors,proximate,jeunesse,zagora,pronouncements,mists,nihilism,deified,margraviate,pietersen,moderators,amalfi,adjectival,copepods,magnetosphere,pallets,clemenceau,castra,perforation,granitic,troilus,grzegorz,luthier,dockyards,antofagasta,ffestiniog,subroutine,afterword,waterwheel,druce,nitin,undifferentiated,emacs,readmitted,barneveld,tapers,hittites,infomercials,infirm,braathens,heligoland,carpark,geomagnetic,musculoskeletal,nigerien,machinima,harmonize,repealing,indecency,muskoka,verite,steubenville,suffixed,cytoskeleton,surpasses,harmonia,imereti,ventricles,heterozygous,envisions,otsego,ecoles,warrnambool,burgenland,seria,rawat,capistrano,welby,kirin,enrollments,caricom,dragonlance,schaffhausen,expanses,photojournalism,brienne,etude,referent,jamtland,schemas,xianbei,cleburne,bicester,maritima,shorelines,diagonals,bjelke,nonpublic,aliasing,m.f.a,ovals,maitreya,skirmishing,grothendieck,sukhothai,angiotensin,bridlington,durgapur,contras,gakuen,skagit,rabbinate,tsunamis,haphazard,tyldesley,microcontroller,discourages,hialeah,compressing,septimus,larvik,condoleezza,psilocybin,protectionism,songbirds,clandestinely,selectmen,wargame,cinemascope,khazars,agronomy,melzer,latifah,cherokees,recesses,assemblymen,basescu,banaras,bioavailability,subchannels,adenine,o'kelly,prabhakar,leonese,dimethyl,testimonials,geoffroy,oxidant,universiti,gheorghiu,bohdan,reversals,zamorin,herbivore,jarre,sebastiao,infanterie,dolmen,teddington,radomsko,spaceships,cuzco,recapitulation,mahoning,bainimarama,myelin,aykroyd,decals,tokelau,nalgonda,rajasthani,121st,quelled,tambov,illyrians,homilies,illuminations,hypertrophy,grodzisk,inundation,incapacity,equilibria,combats,elihu,steinitz,berengar,gowda,canwest,khosrau,maculata,houten,kandinsky,onside,leatherhead,heritable,belvidere,federative,chukchi,serling,eruptive,patan,entitlements,suffragette,evolutions,migrates,demobilisation,athleticism,trope,sarpsborg,kensal,translink,squamish,concertgebouw,energon,timestamp,competences,zalgiris,serviceman,codice_7,spoofing,assange,mahadevan,skien,suceava,augustan,revisionism,unconvincing,hollande,drina,gottlob,lippi,broglie,darkening,tilapia,eagerness,nacht,kolmogorov,photometric,leeuwarden,jrotc,haemorrhage,almanack,cavalli,repudiation,galactose,zwickau,cetinje,houbraken,heavyweights,gabonese,ordinals,noticias,museveni,steric,charaxes,amjad,resection,joinville,leczyca,anastasius,purbeck,subtribe,dalles,leadoff,monoamine,jettisoned,kaori,anthologized,alfreton,indic,bayezid,tottori,colonizing,assassinating,unchanging,eusebian,d'estaing,tsingtao,toshio,transferases,peronist,metrology,equus,mirpur,libertarianism,kovil,indole,'green,abstention,quantitatively,icebreakers,tribals,mainstays,dryandra,eyewear,nilgiri,chrysanthemum,inositol,frenetic,merchantman,hesar,physiotherapist,transceiver,dancefloor,rankine,neisse,marginalization,lengthen,unaided,rework,pageantry,savio,striated,funen,witton,illuminates,frass,hydrolases,akali,bistrita,copywriter,firings,handballer,tachinidae,dmytro,coalesce,neretva,menem,moraines,coatbridge,crossrail,spoofed,drosera,ripen,protour,kikuyu,boleslav,edwardes,troubadours,haplogroups,wrasse,educationalist,sroda,khaneh,dagbladet,apennines,neuroscientist,deplored,terje,maccabees,daventry,spaceport,lessening,ducats,singer/guitarist,chambersburg,yeong,configurable,ceremonially,unrelenting,caffe,graaf,denizens,kingsport,ingush,panhard,synthesised,tumulus,homeschooled,bozorg,idiomatic,thanhouser,queensway,radek,hippolytus,inking,banovina,peacocks,piaui,handsworth,pantomimes,abalone,thera,kurzweil,bandura,augustinians,bocelli,ferrol,jiroft,quadrature,contravention,saussure,rectification,agrippina,angelis,matanzas,nidaros,palestrina,latium,coriolis,clostridium,ordain,uttering,lanchester,proteolytic,ayacucho,merseburg,holbein,sambalpur,algebraically,inchon,ostfold,savoia,calatrava,lahiri,judgeship,ammonite,masaryk,meyerbeer,hemorrhagic,superspeedway,ningxia,panicles,encircles,khmelnytsky,profusion,esher,babol,inflationary,anhydride,gaspe,mossy,periodicity,nacion,meteorologists,mahjong,interventional,sarin,moult,enderby,modell,palgrave,warners,montcalm,siddha,functionalism,rilke,politicized,broadmoor,kunste,orden,brasileira,araneta,eroticism,colquhoun,mamba,blacktown,tubercle,seagrass,manoel,camphor,neoregelia,llandudno,annexe,enplanements,kamien,plovers,statisticians,iturbide,madrasah,nontrivial,publican,landholders,manama,uninhabitable,revivalist,trunkline,friendliness,gurudwara,rocketry,unido,tripos,besant,braque,evolutionarily,abkhazian,staffel,ratzinger,brockville,bohemond,intercut,djurgarden,utilitarianism,deploys,sastri,absolutism,subhas,asghar,fictions,sepinwall,proportionately,titleholders,thereon,foursquare,machinegun,knightsbridge,siauliai,aqaba,gearboxes,castaways,weakens,phallic,strzelce,buoyed,ruthenia,pharynx,intractable,neptunes,koine,leakey,netherlandish,preempted,vinay,terracing,instigating,alluvium,prosthetics,vorarlberg,politiques,joinery,reduplication,nebuchadnezzar,lenticular,banka,seaborne,pattinson,helpline,aleph,beckenham,californians,namgyal,franziska,aphid,branagh,transcribe,appropriateness,surakarta,takings,propagates,juraj,b0d3fb,brera,arrayed,tailback,falsehood,hazleton,prosody,egyptology,pinnate,tableware,ratan,camperdown,ethnologist,tabari,classifiers,biogas,126th,kabila,arbitron,apuestas,membranous,kincardine,oceana,glories,natick,populism,synonymy,ghalib,mobiles,motherboards,stationers,germinal,patronised,formula_58,gaborone,torts,jeezy,interleague,novaya,batticaloa,offshoots,wilbraham,filename,nswrfl,'well,trilobite,pythons,optimally,scientologists,rhesus,pilsen,backdrops,batang,unionville,hermanos,shrikes,fareham,outlawing,discontinuing,boisterous,shamokin,scanty,southwestward,exchangers,unexpired,mewar,h.m.s,saldanha,pawan,condorcet,turbidity,donau,indulgences,coincident,cliques,weeklies,bardhaman,violators,kenai,caspase,xperia,kunal,fistula,epistemic,cammell,nephi,disestablishment,rotator,germaniawerft,pyaar,chequered,jigme,perlis,anisotropic,popstars,kapil,appendices,berat,defecting,shacks,wrangel,panchayath,gorna,suckling,aerosols,sponheim,talal,borehole,encodings,enlai,subduing,agong,nadar,kitsap,syrmia,majumdar,pichilemu,charleville,embryology,booting,literati,abutting,basalts,jussi,repubblica,hertogenbosch,digitization,relents,hillfort,wiesenthal,kirche,bhagwan,bactrian,oases,phyla,neutralizing,helsing,ebooks,spearheading,margarine,'golden,phosphor,picea,stimulants,outliers,timescale,gynaecology,integrator,skyrocketed,bridgnorth,senecio,ramachandra,suffragist,arrowheads,aswan,inadvertent,microelectronics,118th,sofer,kubica,melanesian,tuanku,balkh,vyborg,crystallographic,initiators,metamorphism,ginzburg,looters,unimproved,finistere,newburyport,norges,immunities,franchisees,asterism,kortrijk,camorra,komsomol,fleurs,draughts,patagonian,voracious,artin,collaborationist,revolucion,revitalizing,xaver,purifying,antipsychotic,disjunct,pompeius,dreamwave,juvenal,beinn,adiyaman,antitank,allama,boletus,melanogaster,dumitru,caproni,aligns,athabaskan,stobart,phallus,veikkausliiga,hornsey,buffering,bourbons,dobruja,marga,borax,electrics,gangnam,motorcyclist,whidbey,draconian,lodger,galilean,sanctification,imitates,boldness,underboss,wheatland,cantabrian,terceira,maumee,redefining,uppercase,ostroda,characterise,universalism,equalized,syndicalism,haringey,masovia,deleuze,funkadelic,conceals,thuan,minsky,pluralistic,ludendorff,beekeeping,bonfires,endoscopic,abuts,prebend,jonkoping,amami,tribunes,yup'ik,awadh,gasification,pforzheim,reforma,antiwar,vaishnavism,maryville,inextricably,margrethe,empresa,neutrophils,sanctified,ponca,elachistidae,curiae,quartier,mannar,hyperplasia,wimax,busing,neologism,florins,underrepresented,digitised,nieuw,cooch,howards,frege,hughie,plied,swale,kapellmeister,vajpayee,quadrupled,aeronautique,dushanbe,custos,saltillo,kisan,tigray,manaus,epigrams,shamanic,peppered,frosts,promotion/relegation,concedes,zwingli,charentes,whangarei,hyung,spring/summer,sobre,eretz,initialization,sawai,ephemera,grandfathered,arnaldo,customised,permeated,parapets,growths,visegrad,estudios,altamont,provincia,apologises,stoppard,carburettor,rifts,kinematic,zhengzhou,eschatology,prakrit,folate,yvelines,scapula,stupas,rishon,reconfiguration,flutist,1680s,apostolate,proudhon,lakshman,articulating,stortford,faithfull,bitterns,upwelling,qur'anic,lidar,interferometry,waterlogged,koirala,ditton,wavefunction,fazal,babbage,antioxidants,lemberg,deadlocked,tolled,ramapo,mathematica,leiria,topologies,khali,photonic,balti,1080p,corrects,recommenced,polyglot,friezes,tiebreak,copacabana,cholmondeley,armband,abolishment,sheamus,buttes,glycolysis,cataloged,warrenton,sassari,kishan,foodservice,cryptanalysis,holmenkollen,cosplay,machi,yousuf,mangal,allying,fertiliser,otomi,charlevoix,metallurg,parisians,bottlenose,oakleigh,debug,cidade,accede,ligation,madhava,pillboxes,gatefold,aveyron,sorin,thirsk,immemorial,menelik,mehra,domingos,underpinned,fleshed,harshness,diphthong,crestwood,miskolc,dupri,pyrausta,muskingum,tuoba,prodi,incidences,waynesboro,marquesas,heydar,artesian,calinescu,nucleation,funders,covalently,compaction,derbies,seaters,sodor,tabular,amadou,peckinpah,o'halloran,zechariah,libyans,kartik,daihatsu,chandran,erzhu,heresies,superheated,yarder,dorde,tanjore,abusers,xuanwu,juniperus,moesia,trusteeship,birdwatching,beatz,moorcock,harbhajan,sanga,choreographic,photonics,boylston,amalgamate,prawns,electrifying,sarath,inaccurately,exclaims,powerpoint,chaining,cpusa,adulterous,saccharomyces,glogow,vfl/afl,syncretic,simla,persisting,functors,allosteric,euphorbiaceae,juryo,mlada,moana,gabala,thornycroft,kumanovo,ostrovsky,sitio,tutankhamun,sauropods,kardzhali,reinterpretation,sulpice,rosyth,originators,halesowen,delineation,asesoria,abatement,gardai,elytra,taillights,overlays,monsoons,sandpipers,ingmar,henrico,inaccuracy,irwell,arenabowl,elche,pressburg,signalman,interviewees,sinkhole,pendle,ecommerce,cellos,nebria,organometallic,surrealistic,propagandist,interlaken,canandaigua,aerials,coutinho,pascagoula,tonopah,letterkenny,gropius,carbons,hammocks,childe,polities,hosiery,donitz,suppresses,diaghilev,stroudsburg,bagram,pistoia,regenerating,unitarians,takeaway,offstage,vidin,glorification,bakunin,yavapai,lutzow,sabercats,witney,abrogated,gorlitz,validating,dodecahedron,stubbornly,telenor,glaxosmithkline,solapur,undesired,jellicoe,dramatization,four-and-a-half,seawall,waterpark,artaxerxes,vocalization,typographic,byung,sachsenhausen,shepparton,kissimmee,konnan,belsen,dhawan,khurd,mutagenesis,vejle,perrot,estradiol,formula_60,saros,chiloe,misiones,lamprey,terrains,speke,miasto,eigenvectors,haydock,reservist,corticosteroids,savitri,shinawatra,developmentally,yehudi,berates,janissaries,recapturing,rancheria,subplots,gresley,nikkatsu,oryol,cosmas,boavista,formula_59,playfully,subsections,commentated,kathakali,dorid,vilaine,seepage,hylidae,keiji,kazakhs,triphosphate,1620s,supersede,monarchists,falla,miyako,notching,bhumibol,polarizing,secularized,shingled,bronislaw,lockerbie,soleyman,bundesbahn,latakia,redoubts,boult,inwardly,invents,ondrej,minangkabau,newquay,permanente,alhaji,madhav,malini,ellice,bookmaker,mankiewicz,etihad,o'dea,interrogative,mikawa,wallsend,canisius,bluesy,vitruvius,noord,ratifying,mixtec,gujranwala,subprefecture,keelung,goiania,nyssa,shi'ite,semitone,ch'uan,computerised,pertuan,catapults,nepomuk,shruti,millstones,buskerud,acolytes,tredegar,sarum,armia,dell'arte,devises,custodians,upturned,gallaudet,disembarking,thrashed,sagrada,myeon,undeclared,qumran,gaiden,tepco,janesville,showground,condense,chalon,unstaffed,pasay,undemocratic,hauts,viridis,uninjured,escutcheon,gymkhana,petaling,hammam,dislocations,tallaght,rerum,shias,indios,guaranty,simplicial,benares,benediction,tajiri,prolifically,huawei,onerous,grantee,ferencvaros,otranto,carbonates,conceit,digipak,qadri,masterclasses,swamiji,cradock,plunket,helmsman,119th,salutes,tippecanoe,murshidabad,intelligibility,mittal,diversifying,bidar,asansol,crowdsourcing,rovere,karakoram,grindcore,skylights,tulagi,furrows,ligne,stuka,sumer,subgraph,amata,regionalist,bulkeley,teletext,glorify,readied,lexicographer,sabadell,predictability,quilmes,phenylalanine,bandaranaike,pyrmont,marksmen,quisling,viscountess,sociopolitical,afoul,pediments,swazi,martyrology,nullify,panagiotis,superconductors,veldenz,jujuy,l'isle,hematopoietic,shafi,subsea,hattiesburg,jyvaskyla,kebir,myeloid,landmine,derecho,amerindians,birkenau,scriabin,milhaud,mucosal,nikaya,freikorps,theoretician,proconsul,o'hanlon,clerked,bactria,houma,macular,topologically,shrubby,aryeh,ghazali,afferent,magalhaes,moduli,ashtabula,vidarbha,securitate,ludwigsburg,adoor,varun,shuja,khatun,chengde,bushels,lascelles,professionnelle,elfman,rangpur,unpowered,citytv,chojnice,quaternion,stokowski,aschaffenburg,commutes,subramaniam,methylene,satrap,gharb,namesakes,rathore,helier,gestational,heraklion,colliers,giannis,pastureland,evocation,krefeld,mahadeva,churchmen,egret,yilmaz,galeazzo,pudukkottai,artigas,generalitat,mudslides,frescoed,enfeoffed,aphorisms,melilla,montaigne,gauliga,parkdale,mauboy,linings,prema,sapir,xylophone,kushan,rockne,sequoyah,vasyl,rectilinear,vidyasagar,microcosm,san'a,carcinogen,thicknesses,aleut,farcical,moderating,detested,hegemonic,instalments,vauban,verwaltungsgemeinschaft,picayune,razorback,magellanic,moluccas,pankhurst,exportation,waldegrave,sufferer,bayswater,1up.com,rearmament,orangutans,varazdin,b.o.b,elucidate,harlingen,erudition,brankovic,lapis,slipway,urraca,shinde,unwell,elwes,euboea,colwyn,srivijaya,grandstands,hortons,generalleutnant,fluxes,peterhead,gandhian,reals,alauddin,maximized,fairhaven,endow,ciechanow,perforations,darters,panellist,manmade,litigants,exhibitor,tirol,caracalla,conformance,hotelier,stabaek,hearths,borac,frisians,ident,veliko,emulators,schoharie,uzbeks,samarra,prestwick,wadia,universita,tanah,bucculatrix,predominates,genotypes,denounces,roadsides,ganassi,keokuk,philatelist,tomic,ingots,conduits,samplers,abdus,johar,allegories,timaru,wolfpacks,secunda,smeaton,sportivo,inverting,contraindications,whisperer,moradabad,calamities,bakufu,soundscape,smallholders,nadeem,crossroad,xenophobic,zakir,nationalliga,glazes,retroflex,schwyz,moroder,rubra,quraysh,theodoros,endemol,infidels,km/hr,repositioned,portraitist,lluis,answerable,arges,mindedness,coarser,eyewall,teleported,scolds,uppland,vibraphone,ricoh,isenburg,bricklayer,cuttlefish,abstentions,communicable,cephalopod,stockyards,balto,kinston,armbar,bandini,elphaba,maxims,bedouins,sachsen,friedkin,tractate,pamir,ivanovo,mohini,kovalainen,nambiar,melvyn,orthonormal,matsuyama,cuernavaca,veloso,overstated,streamer,dravid,informers,analyte,sympathized,streetscape,gosta,thomasville,grigore,futuna,depleting,whelks,kiedis,armadale,earner,wynyard,dothan,animating,tridentine,sabri,immovable,rivoli,ariege,parley,clinker,circulates,junagadh,fraunhofer,congregants,180th,buducnost,formula_62,olmert,dedekind,karnak,bayernliga,mazes,sandpiper,ecclestone,yuvan,smallmouth,decolonization,lemmy,adjudicated,retiro,legia,benue,posit,acidification,wahab,taconic,floatplane,perchlorate,atria,wisbech,divestment,dallara,phrygia,palustris,cybersecurity,rebates,facie,mineralogical,substituent,proteges,fowey,mayenne,smoothbore,cherwell,schwarzschild,junin,murrumbidgee,smalltalk,d'orsay,emirati,calaveras,titusville,theremin,vikramaditya,wampanoag,burra,plaines,onegin,emboldened,whampoa,langa,soderbergh,arnaz,sowerby,arendal,godunov,pathanamthitta,damselfly,bestowing,eurosport,iconoclasm,outfitters,acquiesced,badawi,hypotension,ebbsfleet,annulus,sohrab,thenceforth,chagatai,necessitates,aulus,oddities,toynbee,uniontown,innervation,populaire,indivisible,rossellini,minuet,cyrene,gyeongju,chania,cichlids,harrods,1690s,plunges,abdullahi,gurkhas,homebuilt,sortable,bangui,rediff,incrementally,demetrios,medaille,sportif,svend,guttenberg,tubules,carthusian,pleiades,torii,hoppus,phenyl,hanno,conyngham,teschen,cronenberg,wordless,melatonin,distinctiveness,autos,freising,xuanzang,dunwich,satanism,sweyn,predrag,contractually,pavlovic,malaysians,micrometres,expertly,pannonian,abstaining,capensis,southwesterly,catchphrases,commercialize,frankivsk,normanton,hibernate,verso,deportees,dubliners,codice_8,condors,zagros,glosses,leadville,conscript,morrisons,usury,ossian,oulton,vaccinium,civet,ayman,codrington,hadron,nanometers,geochemistry,extractor,grigori,tyrrhenian,neocollyris,drooping,falsification,werft,courtauld,brigantine,orhan,chapultepec,supercopa,federalized,praga,havering,encampments,infallibility,sardis,pawar,undirected,reconstructionist,ardrossan,varuna,pastimes,archdiocesan,fledging,shenhua,molise,secondarily,stagnated,replicates,ciencias,duryodhana,marauding,ruislip,ilyich,intermixed,ravenswood,shimazu,mycorrhizal,icosahedral,consents,dunblane,follicular,pekin,suffield,muromachi,kinsale,gauche,businesspeople,thereto,watauga,exaltation,chelmno,gorse,proliferate,drainages,burdwan,kangra,transducers,inductor,duvalier,maguindanao,moslem,uncaf,givenchy,plantarum,liturgics,telegraphs,lukashenko,chenango,andante,novae,ironwood,faubourg,torme,chinensis,ambala,pietermaritzburg,virginians,landform,bottlenecks,o'driscoll,darbhanga,baptistery,ameer,needlework,naperville,auditoriums,mullingar,starrer,animatronic,topsoil,madura,cannock,vernet,santurce,catocala,ozeki,pontevedra,multichannel,sundsvall,strategists,medio,135th,halil,afridi,trelawny,caloric,ghraib,allendale,hameed,ludwigshafen,spurned,pavlo,palmar,strafed,catamarca,aveiro,harmonization,surah,predictors,solvay,mande,omnipresent,parenthesis,echolocation,equaling,experimenters,acyclic,lithographic,sepoys,katarzyna,sridevi,impoundment,khosrow,caesarean,nacogdoches,rockdale,lawmaker,caucasians,bahman,miyan,rubric,exuberance,bombastic,ductile,snowdonia,inlays,pinyon,anemones,hurries,hospitallers,tayyip,pulleys,treme,photovoltaics,testbed,polonium,ryszard,osgoode,profiting,ironwork,unsurpassed,nepticulidae,makai,lumbini,preclassic,clarksburg,egremont,videography,rehabilitating,ponty,sardonic,geotechnical,khurasan,solzhenitsyn,henna,phoenicia,rhyolite,chateaux,retorted,tomar,deflections,repressions,harborough,renan,brumbies,vandross,storia,vodou,clerkenwell,decking,universo,salon.com,imprisoning,sudwest,ghaziabad,subscribing,pisgah,sukhumi,econometric,clearest,pindar,yildirim,iulia,atlases,cements,remaster,dugouts,collapsible,resurrecting,batik,unreliability,thiers,conjunctions,colophon,marcher,placeholder,flagella,wolds,kibaki,viviparous,twelver,screenshots,aroostook,khadr,iconographic,itasca,jaume,basti,propounded,varro,be'er,jeevan,exacted,shrublands,creditable,brocade,boras,bittern,oneonta,attentional,herzliya,comprehensible,lakeville,discards,caxias,frankland,camerata,satoru,matlab,commutator,interprovincial,yorkville,benefices,nizami,edwardsville,amigaos,cannabinoid,indianola,amateurliga,pernicious,ubiquity,anarchic,novelties,precondition,zardari,symington,sargodha,headphone,thermopylae,mashonaland,zindagi,thalberg,loewe,surfactants,dobro,crocodilians,samhita,diatoms,haileybury,berwickshire,supercritical,sofie,snorna,slatina,intramolecular,agung,osteoarthritis,obstetric,teochew,vakhtang,connemara,deformations,diadem,ferruccio,mainichi,qualitatively,refrigerant,rerecorded,methylated,karmapa,krasinski,restatement,rouvas,cubitt,seacoast,schwarzkopf,homonymous,shipowner,thiamine,approachable,xiahou,160th,ecumenism,polistes,internazionali,fouad,berar,biogeography,texting,inadequately,'when,4kids,hymenoptera,emplaced,cognomen,bellefonte,supplant,michaelmas,uriel,tafsir,morazan,schweinfurt,chorister,ps400,nscaa,petipa,resolutely,ouagadougou,mascarene,supercell,konstanz,bagrat,harmonix,bergson,shrimps,resonators,veneta,camas,mynydd,rumford,generalmajor,khayyam,web.com,pappus,halfdan,tanana,suomen,yutaka,bibliographical,traian,silat,noailles,contrapuntal,agaricus,'special,minibuses,1670s,obadiah,deepa,rorschach,malolos,lymington,valuations,imperials,caballeros,ambroise,judicature,elegiac,sedaka,shewa,checksum,gosforth,legionaries,corneille,microregion,friedrichshafen,antonis,surnamed,mycelium,cantus,educations,topmost,outfitting,ivica,nankai,gouda,anthemic,iosif,supercontinent,antifungal,belarusians,mudaliar,mohawks,caversham,glaciated,basemen,stevan,clonmel,loughton,deventer,positivist,manipuri,tensors,panipat,changeup,impermeable,dubbo,elfsborg,maritimo,regimens,bikram,bromeliad,substratum,norodom,gaultier,queanbeyan,pompeo,redacted,eurocopter,mothballed,centaurs,borno,copra,bemidji,'home,sopron,neuquen,passo,cineplex,alexandrov,wysokie,mammoths,yossi,sarcophagi,congreve,petkovic,extraneous,waterbirds,slurs,indias,phaeton,discontented,prefaced,abhay,prescot,interoperable,nordisk,bicyclists,validly,sejong,litovsk,zanesville,kapitanleutnant,kerch,changeable,mcclatchy,celebi,attesting,maccoll,sepahan,wayans,veined,gaudens,markt,dansk,soane,quantized,petersham,forebears,nayarit,frenzied,queuing,bygone,viggo,ludwik,tanka,hanssen,brythonic,cornhill,primorsky,stockpiles,conceptualization,lampeter,hinsdale,mesoderm,bielsk,rosenheim,ultron,joffrey,stanwyck,khagan,tiraspol,pavelic,ascendant,empoli,metatarsal,descentralizado,masada,ligier,huseyin,ramadi,waratah,tampines,ruthenium,statoil,mladost,liger,grecian,multiparty,digraph,maglev,reconsideration,radiography,cartilaginous,taizu,wintered,anabaptist,peterhouse,shoghi,assessors,numerator,paulet,painstakingly,halakhic,rocroi,motorcycling,gimel,kryptonian,emmeline,cheeked,drawdown,lelouch,dacians,brahmana,reminiscence,disinfection,optimizations,golders,extensor,tsugaru,tolling,liman,gulzar,unconvinced,crataegus,oppositional,dvina,pyrolysis,mandan,alexius,prion,stressors,loomed,moated,dhivehi,recyclable,relict,nestlings,sarandon,kosovar,solvers,czeslaw,kenta,maneuverable,middens,berkhamsted,comilla,folkways,loxton,beziers,batumi,petrochemicals,optimised,sirjan,rabindra,musicality,rationalisation,drillers,subspaces,'live,bbwaa,outfielders,tsung,danske,vandalised,norristown,striae,kanata,gastroenterology,steadfastly,equalising,bootlegging,mannerheim,notodontidae,lagoa,commentating,peninsulas,chishti,seismology,modigliani,preceptor,canonically,awardee,boyaca,hsinchu,stiffened,nacelle,bogor,dryness,unobstructed,yaqub,scindia,peeters,irritant,ammonites,ferromagnetic,speechwriter,oxygenated,walesa,millais,canarian,faience,calvinistic,discriminant,rasht,inker,annexes,howth,allocates,conditionally,roused,regionalism,regionalbahn,functionary,nitrates,bicentenary,recreates,saboteurs,koshi,plasmids,thinned,124th,plainview,kardashian,neuville,victorians,radiates,127th,vieques,schoolmates,petru,tokusatsu,keying,sunaina,flamethrower,'bout,demersal,hosokawa,corelli,omniscient,o'doherty,niksic,reflectivity,transdev,cavour,metronome,temporally,gabba,nsaids,geert,mayport,hematite,boeotia,vaudreuil,torshavn,sailplane,mineralogist,eskisehir,practises,gallifrey,takumi,unease,slipstream,hedmark,paulinus,ailsa,wielkopolska,filmworks,adamantly,vinaya,facelifted,franchisee,augustana,toppling,velvety,crispa,stonington,histological,genealogist,tactician,tebow,betjeman,nyingma,overwinter,oberoi,rampal,overwinters,petaluma,lactarius,stanmore,balikpapan,vasant,inclines,laminate,munshi,sociedade,rabbah,septal,boyband,ingrained,faltering,inhumans,nhtsa,affix,l'ordre,kazuki,rossendale,mysims,latvians,slaveholders,basilicata,neuburg,assize,manzanillo,scrobipalpa,formula_61,belgique,pterosaurs,privateering,vaasa,veria,northport,pressurised,hobbyist,austerlitz,sahih,bhadra,siliguri,bistrica,bursaries,wynton,corot,lepidus,lully,libor,libera,olusegun,choline,mannerism,lymphocyte,chagos,duxbury,parasitism,ecowas,morotai,cancion,coniston,aggrieved,sputnikmusic,parle,ammonian,civilisations,malformation,cattaraugus,skyhawks,d'arc,demerara,bronfman,midwinter,piscataway,jogaila,threonine,matins,kohlberg,hubli,pentatonic,camillus,nigam,potro,unchained,chauvel,orangeville,cistercians,redeployment,xanthi,manju,carabinieri,pakeha,nikolaevich,kantakouzenos,sesquicentennial,gunships,symbolised,teramo,ballo,crusading,l'oeil,bharatpur,lazier,gabrovo,hysteresis,rothbard,chaumont,roundel,ma'mun,sudhir,queried,newts,shimane,presynaptic,playfield,taxonomists,sensitivities,freleng,burkinabe,orfeo,autovia,proselytizing,bhangra,pasok,jujutsu,heung,pivoting,hominid,commending,formula_64,epworth,christianized,oresund,hantuchova,rajputana,hilversum,masoretic,dayak,bakri,assen,magog,macromolecules,waheed,qaida,spassky,rumped,protrudes,preminger,misogyny,glencairn,salafi,lacunae,grilles,racemes,areva,alighieri,inari,epitomized,photoshoot,one-of-a-kind,tring,muralist,tincture,backwaters,weaned,yeasts,analytically,smaland,caltrans,vysocina,jamuna,mauthausen,175th,nouvelles,censoring,reggina,christology,gilad,amplifying,mehmood,johnsons,redirects,eastgate,sacrum,meteoric,riverbanks,guidebooks,ascribes,scoparia,iconoclastic,telegraphic,chine,merah,mistico,lectern,sheung,aethelstan,capablanca,anant,uspto,albatrosses,mymensingh,antiretroviral,clonal,coorg,vaillant,liquidator,gigas,yokai,eradicating,motorcyclists,waitakere,tandon,nears,montenegrins,250th,tatsuya,yassin,atheistic,syncretism,nahum,berisha,transcended,owensboro,lakshmana,abteilung,unadorned,nyack,overflows,harrisonburg,complainant,uematsu,frictional,worsens,sangguniang,abutment,bulwer,sarma,apollinaire,shippers,lycia,alentejo,porpoises,optus,trawling,augustow,blackwall,workbench,westmount,leaped,sikandar,conveniences,stornoway,culverts,zoroastrians,hristo,ansgar,assistive,reassert,fanned,compasses,delgada,maisons,arima,plonsk,verlaine,starstruck,rakhine,befell,spirally,wyclef,expend,colloquium,formula_63,albertus,bellarmine,handedness,holon,introns,movimiento,profitably,lohengrin,discoverers,awash,erste,pharisees,dwarka,oghuz,hashing,heterodox,uloom,vladikavkaz,linesman,rehired,nucleophile,germanicus,gulshan,songz,bayerische,paralympian,crumlin,enjoined,khanum,prahran,penitent,amersfoort,saranac,semisimple,vagrants,compositing,tualatin,oxalate,lavra,ironi,ilkeston,umpqua,calum,stretford,zakat,guelders,hydrazine,birkin,spurring,modularity,aspartate,sodermanland,hopital,bellary,legazpi,clasico,cadfael,hypersonic,volleys,pharmacokinetics,carotene,orientale,pausini,bataille,lunga,retailed,m.phil,mazowieckie,vijayan,rawal,sublimation,promissory,estimators,ploughed,conflagration,penda,segregationist,otley,amputee,coauthor,sopra,pellew,wreckers,tollywood,circumscription,permittivity,strabane,landward,articulates,beaverbrook,rutherglen,coterminous,whistleblowers,colloidal,surbiton,atlante,oswiecim,bhasa,lampooned,chanter,saarc,landkreis,tribulation,tolerates,daiichi,hatun,cowries,dyschirius,abercromby,attock,aldwych,inflows,absolutist,l'histoire,committeeman,vanbrugh,headstock,westbourne,appenzell,hoxton,oculus,westfalen,roundabouts,nickelback,trovatore,quenching,summarises,conservators,transmutation,talleyrand,barzani,unwillingly,axonal,'blue,opining,enveloping,fidesz,rafah,colborne,flickr,lozenge,dulcimer,ndebele,swaraj,oxidize,gonville,resonated,gilani,superiore,endeared,janakpur,shepperton,solidifying,memoranda,sochaux,kurnool,rewari,emirs,kooning,bruford,unavailability,kayseri,judicious,negating,pterosaur,cytosolic,chernihiv,variational,sabretooth,seawolves,devalued,nanded,adverb,volunteerism,sealers,nemours,smederevo,kashubian,bartin,animax,vicomte,polotsk,polder,archiepiscopal,acceptability,quidditch,tussock,seminaire,immolation,belge,coves,wellingborough,khaganate,mckellen,nayaka,brega,kabhi,pontoons,bascule,newsreels,injectors,cobol,weblog,diplo,biggar,wheatbelt,erythrocytes,pedra,showgrounds,bogdanovich,eclecticism,toluene,elegies,formalize,andromedae,airworthiness,springville,mainframes,overexpression,magadha,bijelo,emlyn,glutamine,accenture,uhuru,metairie,arabidopsis,patanjali,peruvians,berezovsky,accion,astrolabe,jayanti,earnestly,sausalito,recurved,1500s,ramla,incineration,galleons,laplacian,shiki,smethwick,isomerase,dordevic,janow,jeffersonville,internationalism,penciled,styrene,ashur,nucleoside,peristome,horsemanship,sedges,bachata,medes,kristallnacht,schneerson,reflectance,invalided,strutt,draupadi,destino,partridges,tejas,quadrennial,aurel,halych,ethnomusicology,autonomist,radyo,rifting,shi'ar,crvena,telefilm,zawahiri,plana,sultanates,theodorus,subcontractors,pavle,seneschal,teleports,chernivtsi,buccal,brattleboro,stankovic,safar,dunhuang,electrocution,chastised,ergonomic,midsomer,130th,zomba,nongovernmental,escapist,localize,xuzhou,kyrie,carinthian,karlovac,nisan,kramnik,pilipino,digitisation,khasi,andronicus,highwayman,maior,misspelling,sebastopol,socon,rhaetian,archimandrite,partway,positivity,otaku,dingoes,tarski,geopolitics,disciplinarian,zulfikar,kenzo,globose,electrophilic,modele,storekeeper,pohang,wheldon,washers,interconnecting,digraphs,intrastate,campy,helvetic,frontispiece,ferrocarril,anambra,petraeus,midrib,endometrial,dwarfism,mauryan,endocytosis,brigs,percussionists,furtherance,synergistic,apocynaceae,krona,berthier,circumvented,casal,siltstone,precast,ethnikos,realists,geodesy,zarzuela,greenback,tripathi,persevered,interments,neutralization,olbermann,departements,supercomputing,demobilised,cassavetes,dunder,ministering,veszprem,barbarism,'world,pieve,apologist,frentzen,sulfides,firewalls,pronotum,staatsoper,hachette,makhachkala,oberland,phonon,yoshihiro,instars,purnima,winslet,mutsu,ergative,sajid,nizamuddin,paraphrased,ardeidae,kodagu,monooxygenase,skirmishers,sportiva,o'byrne,mykolaiv,ophir,prieta,gyllenhaal,kantian,leche,copan,herero,ps250,gelsenkirchen,shalit,sammarinese,chetwynd,wftda,travertine,warta,sigmaringen,concerti,namespace,ostergotland,biomarker,universals,collegio,embarcadero,wimborne,fiddlers,likening,ransomed,stifled,unabated,kalakaua,khanty,gongs,goodrem,countermeasure,publicizing,geomorphology,swedenborg,undefended,catastrophes,diverts,storyboards,amesbury,contactless,placentia,festivity,authorise,terrane,thallium,stradivarius,antonine,consortia,estimations,consecrate,supergiant,belichick,pendants,butyl,groza,univac,afire,kavala,studi,teletoon,paucity,gonbad,koninklijke,128th,stoichiometric,multimodal,facundo,anatomic,melamine,creuse,altan,brigands,mcguinty,blomfield,tsvangirai,protrusion,lurgan,warminster,tenzin,russellville,discursive,definable,scotrail,lignin,reincorporated,o'dell,outperform,redland,multicolored,evaporates,dimitrie,limbic,patapsco,interlingua,surrogacy,cutty,potrero,masud,cahiers,jintao,ardashir,centaurus,plagiarized,minehead,musings,statuettes,logarithms,seaview,prohibitively,downforce,rivington,tomorrowland,microbiologist,ferric,morag,capsid,kucinich,clairvaux,demotic,seamanship,cicada,painterly,cromarty,carbonic,tupou,oconee,tehuantepec,typecast,anstruther,internalized,underwriters,tetrahedra,flagrant,quakes,pathologies,ulrik,nahal,tarquini,dongguan,parnassus,ryoko,senussi,seleucia,airasia,einer,sashes,d'amico,matriculating,arabesque,honved,biophysical,hardinge,kherson,mommsen,diels,icbms,reshape,brasiliensis,palmach,netaji,oblate,functionalities,grigor,blacksburg,recoilless,melanchthon,reales,astrodome,handcrafted,memes,theorizes,isma'il,aarti,pirin,maatschappij,stabilizes,honiara,ashbury,copts,rootes,defensed,queiroz,mantegna,galesburg,coraciiformesfamily,cabrillo,tokio,antipsychotics,kanon,173rd,apollonia,finial,lydian,hadamard,rangi,dowlatabad,monolingual,platformer,subclasses,chiranjeevi,mirabeau,newsgroup,idmanyurdu,kambojas,walkover,zamoyski,generalist,khedive,flanges,knowle,bande,157th,alleyn,reaffirm,pininfarina,zuckerberg,hakodate,131st,aditi,bellinzona,vaulter,planking,boscombe,colombians,lysis,toppers,metered,nahyan,queensryche,minho,nagercoil,firebrand,foundress,bycatch,mendota,freeform,antena,capitalisation,martinus,overijssel,purists,interventionist,zgierz,burgundians,hippolyta,trompe,umatilla,moroccans,dictionnaire,hydrography,changers,chota,rimouski,aniline,bylaw,grandnephew,neamt,lemnos,connoisseurs,tractive,rearrangements,fetishism,finnic,apalachicola,landowning,calligraphic,circumpolar,mansfeld,legible,orientalism,tannhauser,blamey,maximization,noinclude,blackbirds,angara,ostersund,pancreatitis,glabra,acleris,juried,jungian,triumphantly,singlet,plasmas,synesthesia,yellowhead,unleashes,choiseul,quanzhong,brookville,kaskaskia,igcse,skatepark,jatin,jewellers,scaritinae,techcrunch,tellurium,lachaise,azuma,codeshare,dimensionality,unidirectional,scolaire,macdill,camshafts,unassisted,verband,kahlo,eliya,prelature,chiefdoms,saddleback,sockers,iommi,coloratura,llangollen,biosciences,harshest,maithili,k'iche,plical,multifunctional,andreu,tuskers,confounding,sambre,quarterdeck,ascetics,berdych,transversal,tuolumne,sagami,petrobras,brecker,menxia,instilling,stipulating,korra,oscillate,deadpan,v/line,pyrotechnic,stoneware,prelims,intracoastal,retraining,ilija,berwyn,encrypt,achievers,zulfiqar,glycoproteins,khatib,farmsteads,occultist,saman,fionn,derulo,khilji,obrenovic,argosy,toowong,dementieva,sociocultural,iconostasis,craigslist,festschrift,taifa,intercalated,tanjong,penticton,sharad,marxian,extrapolation,guises,wettin,prabang,exclaiming,kosta,famas,conakry,wanderings,'aliabad,macleay,exoplanet,bancorp,besiegers,surmounting,checkerboard,rajab,vliet,tarek,operable,wargaming,haldimand,fukuyama,uesugi,aggregations,erbil,brachiopods,tokyu,anglais,unfavorably,ujpest,escorial,armagnac,nagara,funafuti,ridgeline,cocking,o'gorman,compactness,retardant,krajowa,barua,coking,bestows,thampi,chicagoland,variably,o'loughlin,minnows,schwa,shaukat,polycarbonate,chlorinated,godalming,gramercy,delved,banqueting,enlil,sarada,prasanna,domhnall,decadal,regressive,lipoprotein,collectable,surendra,zaporizhia,cycliste,suchet,offsetting,formula_65,pudong,d'arte,blyton,quonset,osmania,tientsin,manorama,proteomics,bille,jalpaiguri,pertwee,barnegat,inventiveness,gollancz,euthanized,henricus,shortfalls,wuxia,chlorides,cerrado,polyvinyl,folktale,straddled,bioengineering,eschewing,greendale,recharged,olave,ceylonese,autocephalous,peacebuilding,wrights,guyed,rosamund,abitibi,bannockburn,gerontology,scutari,souness,seagram,codice_9,'open,xhtml,taguig,purposed,darbar,orthopedics,unpopulated,kisumu,tarrytown,feodor,polyhedral,monadnock,gottorp,priam,redesigning,gasworks,elfin,urquiza,homologation,filipovic,bohun,manningham,gornik,soundness,shorea,lanus,gelder,darke,sandgate,criticality,paranaense,153rd,vieja,lithograph,trapezoid,tiebreakers,convalescence,yan'an,actuaries,balad,altimeter,thermoelectric,trailblazer,previn,tenryu,ancaster,endoscopy,nicolet,discloses,fracking,plaine,salado,americanism,placards,absurdist,propylene,breccia,jirga,documenta,ismailis,161st,brentano,dallas/fort,embellishment,calipers,subscribes,mahavidyalaya,wednesbury,barnstormers,miwok,schembechler,minigame,unterberger,dopaminergic,inacio,nizamabad,overridden,monotype,cavernous,stichting,sassafras,sotho,argentinean,myrrh,rapidity,flatts,gowrie,dejected,kasaragod,cyprinidae,interlinked,arcseconds,degeneracy,infamously,incubate,substructure,trigeminal,sectarianism,marshlands,hooliganism,hurlers,isolationist,urania,burrard,switchover,lecco,wilts,interrogator,strived,ballooning,volterra,raciborz,relegating,gilding,cybele,dolomites,parachutist,lochaber,orators,raeburn,backend,benaud,rallycross,facings,banga,nuclides,defencemen,futurity,emitters,yadkin,eudonia,zambales,manasseh,sirte,meshes,peculiarly,mcminnville,roundly,boban,decrypt,icelanders,sanam,chelan,jovian,grudgingly,penalised,subscript,gambrinus,poaceae,infringements,maleficent,runciman,148th,supersymmetry,granites,liskeard,eliciting,involution,hallstatt,kitzbuhel,shankly,sandhills,inefficiencies,yishuv,psychotropic,nightjars,wavell,sangamon,vaikundar,choshu,retrospectives,pitesti,gigantea,hashemi,bosna,gakuin,siochana,arrangers,baronetcies,narayani,temecula,creston,koscierzyna,autochthonous,wyandot,anniston,igreja,mobilise,buzau,dunster,musselburgh,wenzhou,khattak,detoxification,decarboxylase,manlius,campbells,coleoptera,copyist,sympathisers,suisun,eminescu,defensor,transshipment,thurgau,somerton,fluctuates,ambika,weierstrass,lukow,giambattista,volcanics,romanticized,innovated,matabeleland,scotiabank,garwolin,purine,d'auvergne,borderland,maozhen,pricewaterhousecoopers,testator,pallium,scout.com,mv/pi,nazca,curacies,upjohn,sarasvati,monegasque,ketrzyn,malory,spikelets,biomechanics,haciendas,rapped,dwarfed,stews,nijinsky,subjection,matsu,perceptible,schwarzburg,midsection,entertains,circuitous,epiphytic,wonsan,alpini,bluefield,sloths,transportable,braunfels,dictum,szczecinek,jukka,wielun,wejherowo,hucknall,grameen,duodenum,ribose,deshpande,shahar,nexstar,injurious,dereham,lithographer,dhoni,structuralist,progreso,deschutes,christus,pulteney,quoins,yitzchak,gyeongsang,breviary,makkah,chiyoda,jutting,vineland,angiosperms,necrotic,novelisation,redistribute,tirumala,140th,featureless,mafic,rivaling,toyline,2/1st,martius,saalfeld,monthan,texian,kathak,melodramas,mithila,regierungsbezirk,509th,fermenting,schoolmate,virtuosic,briain,kokoda,heliocentric,handpicked,kilwinning,sonically,dinars,kasim,parkways,bogdanov,luxembourgian,halland,avesta,bardic,daugavpils,excavator,qwest,frustrate,physiographic,majoris,'ndrangheta,unrestrained,firmness,montalban,abundances,preservationists,adare,executioners,guardsman,bonnaroo,neglects,nazrul,pro12,hoorn,abercorn,refuting,kabud,cationic,parapsychology,troposphere,venezuelans,malignancy,khoja,unhindered,accordionist,medak,visby,ejercito,laparoscopic,dinas,umayyads,valmiki,o'dowd,saplings,stranding,incisions,illusionist,avocets,buccleuch,amazonia,fourfold,turboprops,roosts,priscus,turnstile,areal,certifies,pocklington,spoofs,viseu,commonalities,dabrowka,annam,homesteaders,daredevils,mondrian,negotiates,fiestas,perennials,maximizes,lubavitch,ravindra,scrapers,finials,kintyre,violas,snoqualmie,wilders,openbsd,mlawa,peritoneal,devarajan,congke,leszno,mercurial,fakir,joannes,bognor,overloading,unbuilt,gurung,scuttle,temperaments,bautzen,jardim,tradesman,visitations,barbet,sagamore,graaff,forecasters,wilsons,assis,l'air,shariah,sochaczew,russa,dirge,biliary,neuve,heartbreakers,strathearn,jacobian,overgrazing,edrich,anticline,parathyroid,petula,lepanto,decius,channelled,parvathi,puppeteers,communicators,francorchamps,kahane,longus,panjang,intron,traite,xxvii,matsuri,amrit,katyn,disheartened,cacak,omonia,alexandrine,partaking,wrangling,adjuvant,haskovo,tendrils,greensand,lammermoor,otherworld,volusia,stabling,one-and-a-half,bresson,zapatista,eotvos,ps150,webisodes,stepchildren,microarray,braganca,quanta,dolne,superoxide,bellona,delineate,ratha,lindenwood,bruhl,cingulate,tallies,bickerton,helgi,bevin,takoma,tsukuba,statuses,changeling,alister,bytom,dibrugarh,magnesia,duplicating,outlier,abated,goncalo,strelitz,shikai,mardan,musculature,ascomycota,springhill,tumuli,gabaa,odenwald,reformatted,autocracy,theresienstadt,suplex,chattopadhyay,mencken,congratulatory,weatherfield,systema,solemnity,projekt,quanzhou,kreuzberg,postbellum,nobuo,mediaworks,finisterre,matchplay,bangladeshis,kothen,oocyte,hovered,aromas,afshar,browed,teases,chorlton,arshad,cesaro,backbencher,iquique,vulcans,padmini,unabridged,cyclase,despotic,kirilenko,achaean,queensberry,debre,octahedron,iphigenia,curbing,karimnagar,sagarmatha,smelters,surrealists,sanada,shrestha,turridae,leasehold,jiedushi,eurythmics,appropriating,correze,thimphu,amery,musicomh,cyborgs,sandwell,pushcart,retorts,ameliorate,deteriorates,stojanovic,spline,entrenchments,bourse,chancellorship,pasolini,lendl,personage,reformulated,pubescens,loiret,metalurh,reinvention,nonhuman,eilema,tarsal,complutense,magne,broadview,metrodome,outtake,stouffville,seinen,bataillon,phosphoric,ostensible,opatow,aristides,beefheart,glorifying,banten,romsey,seamounts,fushimi,prophylaxis,sibylla,ranjith,goslar,balustrades,georgiev,caird,lafitte,peano,canso,bankura,halfpenny,segregate,caisson,bizerte,jamshedpur,euromaidan,philosophie,ridged,cheerfully,reclassification,aemilius,visionaries,samoans,wokingham,chemung,wolof,unbranched,cinerea,bhosle,ourense,immortalised,cornerstones,sourcebook,khufu,archimedean,universitatea,intermolecular,fiscally,suffices,metacomet,adjudicator,stablemate,specks,glace,inowroclaw,patristic,muharram,agitating,ashot,neurologic,didcot,gamla,ilves,putouts,siraj,laski,coaling,diarmuid,ratnagiri,rotulorum,liquefaction,morbihan,harel,aftershock,gruiformesfamily,bonnier,falconiformesfamily,adorns,wikis,maastrichtian,stauffenberg,bishopsgate,fakhr,sevenfold,ponders,quantifying,castiel,opacity,depredations,lenten,gravitated,o'mahony,modulates,inuktitut,paston,kayfabe,vagus,legalised,balked,arianism,tendering,sivas,birthdate,awlaki,khvajeh,shahab,samtgemeinde,bridgeton,amalgamations,biogenesis,recharging,tsukasa,mythbusters,chamfered,enthronement,freelancers,maharana,constantia,sutil,messines,monkton,okanogan,reinvigorated,apoplexy,tanahashi,neues,valiants,harappan,russes,carding,volkoff,funchal,statehouse,imitative,intrepidity,mellotron,samaras,turkana,besting,longitudes,exarch,diarrhoea,transcending,zvonareva,darna,ramblin,disconnection,137th,refocused,diarmait,agricole,ba'athist,turenne,contrabass,communis,daviess,fatimids,frosinone,fittingly,polyphyletic,qanat,theocratic,preclinical,abacha,toorak,marketplaces,conidia,seiya,contraindicated,retford,bundesautobahn,rebuilds,climatology,seaworthy,starfighter,qamar,categoria,malai,hellinsia,newstead,airworthy,catenin,avonmouth,arrhythmias,ayyavazhi,downgrade,ashburnham,ejector,kinematics,petworth,rspca,filmation,accipitridae,chhatrapati,g/mol,bacau,agama,ringtone,yudhoyono,orchestrator,arbitrators,138th,powerplants,cumbernauld,alderley,misamis,hawai`i,cuando,meistriliiga,jermyn,alans,pedigrees,ottavio,approbation,omnium,purulia,prioress,rheinland,lymphoid,lutsk,oscilloscope,ballina,iliac,motorbikes,modernising,uffizi,phylloxera,kalevala,bengalis,amravati,syntheses,interviewers,inflectional,outflank,maryhill,unhurt,profiler,nacelles,heseltine,personalised,guarda,herpetologist,airpark,pigot,margaretha,dinos,peleliu,breakbeat,kastamonu,shaivism,delamere,kingsville,epigram,khlong,phospholipids,journeying,lietuvos,congregated,deviance,celebes,subsoil,stroma,kvitova,lubricating,layoff,alagoas,olafur,doron,interuniversity,raycom,agonopterix,uzice,nanna,springvale,raimundo,wrested,pupal,talat,skinheads,vestige,unpainted,handan,odawara,ammar,attendee,lapped,myotis,gusty,ciconiiformesfamily,traversal,subfield,vitaphone,prensa,hasidism,inwood,carstairs,kropotkin,turgenev,dobra,remittance,purim,tannin,adige,tabulation,lethality,pacha,micronesian,dhruva,defensemen,tibeto,siculus,radioisotope,sodertalje,phitsanulok,euphonium,oxytocin,overhangs,skinks,fabrica,reinterred,emulates,bioscience,paragliding,raekwon,perigee,plausibility,frolunda,erroll,aznar,vyasa,albinus,trevally,confederacion,terse,sixtieth,1530s,kendriya,skateboarders,frontieres,muawiyah,easements,shehu,conservatively,keystones,kasem,brutalist,peekskill,cowry,orcas,syllabary,paltz,elisabetta,denticles,hampering,dolni,eidos,aarau,lermontov,yankton,shahbaz,barrages,kongsvinger,reestablishment,acetyltransferase,zulia,mrnas,slingsby,eucalypt,efficacious,weybridge,gradation,cinematheque,malthus,bampton,coexisted,cisse,hamdi,cupertino,saumarez,chionodes,libertine,formers,sakharov,pseudonymous,vol.1,mcduck,gopalakrishnan,amberley,jorhat,grandmasters,rudiments,dwindle,param,bukidnon,menander,americanus,multipliers,pulawy,homoerotic,pillbox,cd+dvd,epigraph,aleksandrow,extrapolated,horseshoes,contemporain,angiography,hasselt,shawinigan,memorization,legitimized,cyclades,outsold,rodolphe,kelis,powerball,dijkstra,analyzers,incompressible,sambar,orangeburg,osten,reauthorization,adamawa,sphagnum,hypermarket,millipedes,zoroaster,madea,ossuary,murrayfield,pronominal,gautham,resellers,ethers,quarrelled,dolna,stragglers,asami,tangut,passos,educacion,sharaf,texel,berio,bethpage,bezalel,marfa,noronha,36ers,genteel,avram,shilton,compensates,sweetener,reinstalled,disables,noether,1590s,balakrishnan,kotaro,northallerton,cataclysm,gholam,cancellara,schiphol,commends,longinus,albinism,gemayel,hamamatsu,volos,islamism,sidereal,pecuniary,diggings,townsquare,neosho,lushan,chittoor,akhil,disputation,desiccation,cambodians,thwarting,deliberated,ellipsis,bahini,susumu,separators,kohneh,plebeians,kultur,ogaden,pissarro,trypeta,latur,liaodong,vetting,datong,sohail,alchemists,lengthwise,unevenly,masterly,microcontrollers,occupier,deviating,farringdon,baccalaureat,theocracy,chebyshev,archivists,jayaram,ineffectiveness,scandinavians,jacobins,encomienda,nambu,g/cm3,catesby,paavo,heeded,rhodium,idealised,10deg,infective,mecyclothorax,halevy,sheared,minbari,audax,lusatian,rebuffs,hitfix,fastener,subjugate,tarun,binet,compuserve,synthesiser,keisuke,amalric,ligatures,tadashi,ignazio,abramovich,groundnut,otomo,maeve,mortlake,ostrogoths,antillean,todor,recto,millimetre,espousing,inaugurate,paracetamol,galvanic,harpalinae,jedrzejow,reassessment,langlands,civita,mikan,stikine,bijar,imamate,istana,kaiserliche,erastus,federale,cytosine,expansionism,hommes,norrland,smriti,snapdragon,gulab,taleb,lossy,khattab,urbanised,sesto,rekord,diffuser,desam,morganatic,silting,pacts,extender,beauharnais,purley,bouches,halfpipe,discontinuities,houthi,farmville,animism,horni,saadi,interpretative,blockades,symeon,biogeographic,transcaucasian,jetties,landrieu,astrocytes,conjunto,stumpings,weevils,geysers,redux,arching,romanus,tazeh,marcellinus,casein,opava,misrata,anare,sattar,declarer,dreux,oporto,venta,vallis,icosahedron,cortona,lachine,mohammedan,sandnes,zynga,clarin,diomedes,tsuyoshi,pribram,gulbarga,chartist,superettan,boscawen,altus,subang,gating,epistolary,vizianagaram,ogdensburg,panna,thyssen,tarkovsky,dzogchen,biograph,seremban,unscientific,nightjar,legco,deism,n.w.a,sudha,siskel,sassou,flintlock,jovial,montbeliard,pallida,formula_66,tranquillity,nisei,adornment,'people,yamhill,hockeyallsvenskan,adopters,appian,lowicz,haplotypes,succinctly,starogard,presidencies,kheyrabad,sobibor,kinesiology,cowichan,militum,cromwellian,leiningen,ps1.5,concourses,dalarna,goldfield,brzeg,faeces,aquarii,matchless,harvesters,181st,numismatics,korfball,sectioned,transpires,facultative,brandishing,kieron,forages,menai,glutinous,debarge,heathfield,1580s,malang,photoelectric,froome,semiotic,alwar,grammophon,chiaroscuro,mentalist,maramures,flacco,liquors,aleutians,marvell,sutlej,patnaik,qassam,flintoff,bayfield,haeckel,sueno,avicii,exoplanets,hoshi,annibale,vojislav,honeycombs,celebrant,rendsburg,veblen,quails,141st,carronades,savar,narrations,jeeva,ontologies,hedonistic,marinette,godot,munna,bessarabian,outrigger,thame,gravels,hoshino,falsifying,stereochemistry,nacionalista,medially,radula,ejecting,conservatorio,odile,ceiba,jaina,essonne,isometry,allophones,recidivism,iveco,ganda,grammarians,jagan,signposted,uncompressed,facilitators,constancy,ditko,propulsive,impaling,interbank,botolph,amlaib,intergroup,sorbus,cheka,debye,praca,adorning,presbyteries,dormition,strategos,qarase,pentecostals,beehives,hashemite,goldust,euronext,egress,arpanet,soames,jurchens,slovenska,copse,kazim,appraisals,marischal,mineola,sharada,caricaturist,sturluson,galba,faizabad,overwintering,grete,uyezds,didsbury,libreville,ablett,microstructure,anadolu,belenenses,elocution,cloaks,timeslots,halden,rashidun,displaces,sympatric,germanus,tuples,ceska,equalize,disassembly,krautrock,babangida,memel,deild,gopala,hematology,underclass,sangli,wawrinka,assur,toshack,refrains,nicotinic,bhagalpur,badami,racetracks,pocatello,walgreens,nazarbayev,occultation,spinnaker,geneon,josias,hydrolyzed,dzong,corregimiento,waistcoat,thermoplastic,soldered,anticancer,lactobacillus,shafi'i,carabus,adjournment,schlumberger,triceratops,despotate,mendicant,krishnamurti,bahasa,earthworm,lavoisier,noetherian,kalki,fervently,bhawan,saanich,coquille,gannet,motagua,kennels,mineralization,fitzherbert,svein,bifurcated,hairdressing,felis,abounded,dimers,fervour,hebdo,bluffton,aetna,corydon,clevedon,carneiro,subjectively,deutz,gastropoda,overshot,concatenation,varman,carolla,maharshi,mujib,inelastic,riverhead,initialized,safavids,rohini,caguas,bulges,fotbollforbund,hefei,spithead,westville,maronites,lytham,americo,gediminas,stephanus,chalcolithic,hijra,gnu/linux,predilection,rulership,sterility,haidar,scarlatti,saprissa,sviatoslav,pointedly,sunroof,guarantor,thevar,airstrips,pultusk,sture,129th,divinities,daizong,dolichoderus,cobourg,maoists,swordsmanship,uprated,bohme,tashi,largs,chandi,bluebeard,householders,richardsonian,drepanidae,antigonish,elbasan,occultism,marca,hypergeometric,oirat,stiglitz,ignites,dzungar,miquelon,pritam,d'automne,ulidiid,niamey,vallecano,fondo,billiton,incumbencies,raceme,chambery,cadell,barenaked,kagame,summerside,haussmann,hatshepsut,apothecaries,criollo,feint,nasals,timurid,feltham,plotinus,oxygenation,marginata,officinalis,salat,participations,ising,downe,izumo,unguided,pretence,coursed,haruna,viscountcy,mainstage,justicia,powiat,takara,capitoline,implacable,farben,stopford,cosmopterix,tuberous,kronecker,galatians,kweli,dogmas,exhorted,trebinje,skanda,newlyn,ablative,basidia,bhiwani,encroachments,stranglers,regrouping,tubal,shoestring,wawel,anionic,mesenchymal,creationists,pyrophosphate,moshi,despotism,powerbook,fatehpur,rupiah,segre,ternate,jessore,b.i.g,shevardnadze,abounds,gliwice,densest,memoria,suborbital,vietcong,ratepayers,karunanidhi,toolbar,descents,rhymney,exhortation,zahedan,carcinomas,hyperbaric,botvinnik,billets,neuropsychological,tigranes,hoards,chater,biennially,thistles,scotus,wataru,flotillas,hungama,monopolistic,payouts,vetch,generalissimo,caries,naumburg,piran,blizzards,escalates,reactant,shinya,theorize,rizzoli,transitway,ecclesiae,streptomyces,cantal,nisibis,superconductor,unworkable,thallus,roehampton,scheckter,viceroys,makuuchi,ilkley,superseding,takuya,klodzko,borbon,raspberries,operand,w.a.k.o,sarabande,factionalism,egalitarianism,temasek,torbat,unscripted,jorma,westerner,perfective,vrije,underlain,goldfrapp,blaenau,jomon,barthes,drivetime,bassa,bannock,umaga,fengxiang,zulus,sreenivasan,farces,codice_10,freeholder,poddebice,imperialists,deregulated,wingtip,o'hagan,pillared,overtone,hofstadter,149th,kitano,saybrook,standardizing,aldgate,staveley,o'flaherty,hundredths,steerable,soltan,empted,cruyff,intramuros,taluks,cotonou,marae,karur,figueres,barwon,lucullus,niobe,zemlya,lathes,homeported,chaux,amyotrophic,opines,exemplars,bhamo,homomorphisms,gauleiter,ladin,mafiosi,airdrieonians,b/soul,decal,transcaucasia,solti,defecation,deaconess,numidia,sampradaya,normalised,wingless,schwaben,alnus,cinerama,yakutsk,ketchikan,orvieto,unearned,monferrato,rotem,aacsb,loong,decoders,skerries,cardiothoracic,repositioning,pimpernel,yohannan,tenebrionoidea,nargis,nouvel,costliest,interdenominational,noize,redirecting,zither,morcha,radiometric,frequenting,irtysh,gbagbo,chakri,litvinenko,infotainment,ravensbruck,harith,corbels,maegashira,jousting,natan,novus,falcao,minis,railed,decile,rauma,ramaswamy,cavitation,paranaque,berchtesgaden,reanimated,schomberg,polysaccharides,exclusionary,cleon,anurag,ravaging,dhanush,mitchells,granule,contemptuous,keisei,rolleston,atlantean,yorkist,daraa,wapping,micrometer,keeneland,comparably,baranja,oranje,schlafli,yogic,dinajpur,unimpressive,masashi,recreativo,alemannic,petersfield,naoko,vasudeva,autosport,rajat,marella,busko,wethersfield,ssris,soulcalibur,kobani,wildland,rookery,hoffenheim,kauri,aliphatic,balaclava,ferrite,publicise,victorias,theism,quimper,chapbook,functionalist,roadbed,ulyanovsk,cupen,purpurea,calthorpe,teofilo,mousavi,cochlea,linotype,detmold,ellerslie,gakkai,telkom,southsea,subcontractor,inguinal,philatelists,zeebrugge,piave,trochidae,dempo,spoilt,saharanpur,mihrab,parasympathetic,barbarous,chartering,antiqua,katsina,bugis,categorizes,altstadt,kandyan,pambansa,overpasses,miters,assimilating,finlandia,uneconomic,am/fm,harpsichordist,dresdner,luminescence,authentically,overpowers,magmatic,cliftonville,oilfields,skirted,berthe,cuman,oakham,frelimo,glockenspiel,confection,saxophonists,piaseczno,multilevel,antipater,levying,maltreatment,velho,opoczno,harburg,pedophilia,unfunded,palettes,plasterwork,breve,dharmendra,auchinleck,nonesuch,blackmun,libretti,rabbani,145th,hasselbeck,kinnock,malate,vanden,cloverdale,ashgabat,nares,radians,steelworkers,sabor,possums,catterick,hemispheric,ostra,outpaced,dungeness,almshouse,penryn,texians,1000m,franchitti,incumbency,texcoco,newar,tramcars,toroidal,meitetsu,spellbound,agronomist,vinifera,riata,bunko,pinas,ba'al,github,vasilyevich,obsolescent,geodesics,ancestries,tujue,capitalised,unassigned,throng,unpaired,psychometric,skegness,exothermic,buffered,kristiansund,tongued,berenger,basho,alitalia,prolongation,archaeologically,fractionation,cyprinid,echinoderms,agriculturally,justiciar,sonam,ilium,baits,danceable,grazer,ardahan,grassed,preemption,glassworks,hasina,ugric,umbra,wahhabi,vannes,tinnitus,capitaine,tikrit,lisieux,scree,hormuz,despenser,jagiellon,maisonneuve,gandaki,santarem,basilicas,lancing,landskrona,weilburg,fireside,elysian,isleworth,krishnamurthy,filton,cynon,tecmo,subcostal,scalars,triglycerides,hyperplane,farmingdale,unione,meydan,pilings,mercosur,reactivate,akiba,fecundity,jatra,natsume,zarqawi,preta,masao,presbyter,oakenfold,rhodri,ferran,ruizong,cloyne,nelvana,epiphanius,borde,scutes,strictures,troughton,whitestone,sholom,toyah,shingon,kutuzov,abelard,passant,lipno,cafeterias,residuals,anabaptists,paratransit,criollos,pleven,radiata,destabilizing,hadiths,bazaars,mannose,taiyo,crookes,welbeck,baoding,archelaus,nguesso,alberni,wingtips,herts,viasat,lankans,evreux,wigram,fassbinder,ryuichi,storting,reducible,olesnica,znojmo,hyannis,theophanes,flatiron,mustering,rajahmundry,kadir,wayang,prome,lethargy,zubin,illegality,conall,dramedy,beerbohm,hipparchus,ziarat,ryuji,shugo,glenorchy,microarchitecture,morne,lewinsky,cauvery,battenberg,hyksos,wayanad,hamilcar,buhari,brazo,bratianu,solms,aksaray,elamite,chilcotin,bloodstock,sagara,dolny,reunified,umlaut,proteaceae,camborne,calabrian,dhanbad,vaxjo,cookware,potez,rediffusion,semitones,lamentations,allgau,guernica,suntory,pleated,stationing,urgell,gannets,bertelsmann,entryway,raphitomidae,acetaldehyde,nephrology,categorizing,beiyang,permeate,tourney,geosciences,khana,masayuki,crucis,universitaria,slaskie,khaimah,finno,advani,astonishingly,tubulin,vampiric,jeolla,sociale,cleethorpes,badri,muridae,suzong,debater,decimation,kenyans,mutualism,pontifex,middlemen,insee,halevi,lamentation,psychopathy,brassey,wenders,kavya,parabellum,prolactin,inescapable,apses,malignancies,rinzai,stigmatized,menahem,comox,ateliers,welshpool,setif,centimetre,truthfulness,downfield,drusus,woden,glycosylation,emanated,agulhas,dalkeith,jazira,nucky,unifil,jobim,operon,oryzomys,heroically,seances,supernumerary,backhouse,hashanah,tatler,imago,invert,hayato,clockmaker,kingsmill,swiecie,analogously,golconda,poste,tacitly,decentralised,ge'ez,diplomatically,fossiliferous,linseed,mahavira,pedestals,archpriest,byelection,domiciled,jeffersonian,bombus,winegrowing,waukegan,uncultivated,haverfordwest,saumur,communally,disbursed,cleeve,zeljeznicar,speciosa,vacationers,sigur,vaishali,zlatko,iftikhar,cropland,transkei,incompleteness,bohra,subantarctic,slieve,physiologic,similis,klerk,replanted,'right,chafee,reproducible,bayburt,regicide,muzaffarpur,plurals,hanyu,orthologs,diouf,assailed,kamui,tarik,dodecanese,gorne,on/off,179th,shimoga,granaries,carlists,valar,tripolitania,sherds,simmern,dissociated,isambard,polytechnical,yuvraj,brabazon,antisense,pubmed,glans,minutely,masaaki,raghavendra,savoury,podcasting,tachi,bienville,gongsun,ridgely,deform,yuichi,binders,canna,carcetti,llobregat,implored,berri,njegos,intermingled,offload,athenry,motherhouse,corpora,kakinada,dannebrog,imperio,prefaces,musicologists,aerospatiale,shirai,nagapattinam,servius,cristoforo,pomfret,reviled,entebbe,stane,east/west,thermometers,matriarchal,siglo,bodil,legionnaire,ze'ev,theorizing,sangeetha,horticulturist,uncountable,lookalike,anoxic,ionospheric,genealogists,chicopee,imprinting,popish,crematoria,diamondback,cyathea,hanzhong,cameramen,halogaland,naklo,waclaw,storehouses,flexed,comuni,frits,glauca,nilgiris,compresses,nainital,continuations,albay,hypoxic,samajwadi,dunkerque,nanticoke,sarwar,interchanged,jubal,corba,jalgaon,derleth,deathstroke,magny,vinnytsia,hyphenated,rimfire,sawan,boehner,disrepute,normalize,aromanian,dualistic,approximant,chama,karimabad,barnacles,sanok,stipends,dyfed,rijksmuseum,reverberation,suncorp,fungicides,reverie,spectrograph,stereophonic,niazi,ordos,alcan,karaite,lautrec,tableland,lamellar,rieti,langmuir,russula,webern,tweaks,hawick,southerner,morphy,naturalisation,enantiomer,michinoku,barbettes,relieves,carburettors,redruth,oblates,vocabularies,mogilev,bagmati,galium,reasserted,extolled,symon,eurosceptic,inflections,tirtha,recompense,oruro,roping,gouverneur,pared,yayoi,watermills,retooled,leukocytes,jubilant,mazhar,nicolau,manheim,touraine,bedser,hambledon,kohat,powerhouses,tlemcen,reuven,sympathetically,afrikaners,interes,handcrafts,etcher,baddeley,wodonga,amaury,155th,vulgarity,pompadour,automorphisms,1540s,oppositions,prekmurje,deryni,fortifying,arcuate,mahila,bocage,uther,nozze,slashes,atlantica,hadid,rhizomatous,azeris,'with,osmena,lewisville,innervated,bandmaster,outcropping,parallelogram,dominicana,twang,ingushetia,extensional,ladino,sastry,zinoviev,relatable,nobilis,cbeebies,hitless,eulima,sporangia,synge,longlisted,criminalized,penitential,weyden,tubule,volyn,priestesses,glenbrook,kibbutzim,windshaft,canadair,falange,zsolt,bonheur,meine,archangels,safeguarded,jamaicans,malarial,teasers,badging,merseyrail,operands,pulsars,gauchos,biotin,bambara,necaxa,egmond,tillage,coppi,anxiolytic,preah,mausoleums,plautus,feroz,debunked,187th,belediyespor,mujibur,wantage,carboxyl,chettiar,murnau,vagueness,racemic,backstretch,courtland,municipio,palpatine,dezful,hyperbola,sreekumar,chalons,altay,arapahoe,tudors,sapieha,quilon,burdensome,kanya,xxviii,recension,generis,siphuncle,repressor,bitrate,mandals,midhurst,dioxin,democratique,upholds,rodez,cinematographic,epoque,jinping,rabelais,zhytomyr,glenview,rebooted,khalidi,reticulata,122nd,monnaie,passersby,ghazals,europaea,lippmann,earthbound,tadic,andorran,artvin,angelicum,banksy,epicentre,resemblances,shuttled,rathaus,bernt,stonemasons,balochi,siang,tynemouth,cygni,biosynthetic,precipitates,sharecroppers,d'annunzio,softbank,shiji,apeldoorn,polycyclic,wenceslas,wuchang,samnites,tamarack,silmarillion,madinah,palaeontology,kirchberg,sculpin,rohtak,aquabats,oviparous,thynne,caney,blimps,minimalistic,whatcom,palatalization,bardstown,direct3d,paramagnetic,kamboja,khash,globemaster,lengua,matej,chernigov,swanage,arsenals,cascadia,cundinamarca,tusculum,leavers,organics,warplanes,'three,exertions,arminius,gandharva,inquires,comercio,kuopio,chabahar,plotlines,mersenne,anquetil,paralytic,buckminster,ambit,acrolophus,quantifiers,clacton,ciliary,ansaldo,fergana,egoism,thracians,chicoutimi,northbrook,analgesia,brotherhoods,hunza,adriaen,fluoridation,snowfalls,soundboard,fangoria,cannibalistic,orthogonius,chukotka,dindigul,manzoni,chainz,macromedia,beltline,muruga,schistura,provable,litex,initio,pneumoniae,infosys,cerium,boonton,cannonballs,d'une,solvency,mandurah,houthis,dolmens,apologists,radioisotopes,blaxploitation,poroshenko,stawell,coosa,maximilien,tempelhof,espouse,declaratory,hambro,xalapa,outmoded,mihiel,benefitting,desirous,archeparchy,repopulated,telescoping,captor,mackaye,disparaged,ramanathan,crowne,tumbled,technetium,silted,chedi,nievre,hyeon,cartoonish,interlock,infocom,rediff.com,dioramas,timekeeping,concertina,kutaisi,cesky,lubomirski,unapologetic,epigraphic,stalactites,sneha,biofilm,falconry,miraflores,catena,'outstanding,prospekt,apotheosis,o'odham,pacemakers,arabica,gandhinagar,reminisces,iroquoian,ornette,tilling,neoliberalism,chameleons,pandava,prefontaine,haiyan,gneisenau,utama,bando,reconstitution,azaria,canola,paratroops,ayckbourn,manistee,stourton,manifestos,lympne,denouement,tractatus,rakim,bellflower,nanometer,sassanids,turlough,presbyterianism,varmland,20deg,phool,nyerere,almohad,manipal,vlaanderen,quickness,removals,makow,circumflex,eatery,morane,fondazione,alkylation,unenforceable,galliano,silkworm,junior/senior,abducts,phlox,konskie,lofoten,buuren,glyphosate,faired,naturae,cobbles,taher,skrulls,dostoevsky,walkout,wagnerian,orbited,methodically,denzil,sarat,extraterritorial,kohima,d'armor,brinsley,rostropovich,fengtian,comitatus,aravind,moche,wrangell,giscard,vantaa,viljandi,hakoah,seabees,muscatine,ballade,camanachd,sothern,mullioned,durad,margraves,maven,arete,chandni,garifuna,142nd,reading/literature,thickest,intensifies,trygve,khaldun,perinatal,asana,powerline,acetylation,nureyev,omiya,montesquieu,riverwalk,marly,correlating,intermountain,bulgar,hammerheads,underscores,wiretapping,quatrain,ruisseau,newsagent,tuticorin,polygyny,hemsworth,partisanship,banna,istrian,evaporator".split(","),
43353 female_names:"mary,patricia,linda,barbara,elizabeth,jennifer,maria,susan,margaret,dorothy,lisa,nancy,karen,betty,helen,sandra,donna,carol,ruth,sharon,michelle,laura,sarah,kimberly,deborah,jessica,shirley,cynthia,angela,melissa,brenda,amy,anna,rebecca,virginia,kathleen,pamela,martha,debra,amanda,stephanie,carolyn,christine,marie,janet,catherine,frances,ann,joyce,diane,alice,julie,heather,teresa,doris,gloria,evelyn,jean,cheryl,mildred,katherine,joan,ashley,judith,rose,janice,kelly,nicole,judy,christina,kathy,theresa,beverly,denise,tammy,irene,jane,lori,rachel,marilyn,andrea,kathryn,louise,sara,anne,jacqueline,wanda,bonnie,julia,ruby,lois,tina,phyllis,norma,paula,diana,annie,lillian,emily,robin,peggy,crystal,gladys,rita,dawn,connie,florence,tracy,edna,tiffany,carmen,rosa,cindy,grace,wendy,victoria,edith,kim,sherry,sylvia,josephine,thelma,shannon,sheila,ethel,ellen,elaine,marjorie,carrie,charlotte,monica,esther,pauline,emma,juanita,anita,rhonda,hazel,amber,eva,debbie,april,leslie,clara,lucille,jamie,joanne,eleanor,valerie,danielle,megan,alicia,suzanne,michele,gail,bertha,darlene,veronica,jill,erin,geraldine,lauren,cathy,joann,lorraine,lynn,sally,regina,erica,beatrice,dolores,bernice,audrey,yvonne,annette,marion,dana,stacy,ana,renee,ida,vivian,roberta,holly,brittany,melanie,loretta,yolanda,jeanette,laurie,katie,kristen,vanessa,alma,sue,elsie,beth,jeanne,vicki,carla,tara,rosemary,eileen,terri,gertrude,lucy,tonya,ella,stacey,wilma,gina,kristin,jessie,natalie,agnes,vera,charlene,bessie,delores,melinda,pearl,arlene,maureen,colleen,allison,tamara,joy,georgia,constance,lillie,claudia,jackie,marcia,tanya,nellie,minnie,marlene,heidi,glenda,lydia,viola,courtney,marian,stella,caroline,dora,vickie,mattie,maxine,irma,mabel,marsha,myrtle,lena,christy,deanna,patsy,hilda,gwendolyn,jennie,nora,margie,nina,cassandra,leah,penny,kay,priscilla,naomi,carole,olga,billie,dianne,tracey,leona,jenny,felicia,sonia,miriam,velma,becky,bobbie,violet,kristina,toni,misty,mae,shelly,daisy,ramona,sherri,erika,katrina,claire,lindsey,lindsay,geneva,guadalupe,belinda,margarita,sheryl,cora,faye,ada,sabrina,isabel,marguerite,hattie,harriet,molly,cecilia,kristi,brandi,blanche,sandy,rosie,joanna,iris,eunice,angie,inez,lynda,madeline,amelia,alberta,genevieve,monique,jodi,janie,kayla,sonya,jan,kristine,candace,fannie,maryann,opal,alison,yvette,melody,luz,susie,olivia,flora,shelley,kristy,mamie,lula,lola,verna,beulah,antoinette,candice,juana,jeannette,pam,kelli,whitney,bridget,karla,celia,latoya,patty,shelia,gayle,della,vicky,lynne,sheri,marianne,kara,jacquelyn,erma,blanca,myra,leticia,pat,krista,roxanne,angelica,robyn,adrienne,rosalie,alexandra,brooke,bethany,sadie,bernadette,traci,jody,kendra,nichole,rachael,mable,ernestine,muriel,marcella,elena,krystal,angelina,nadine,kari,estelle,dianna,paulette,lora,mona,doreen,rosemarie,desiree,antonia,janis,betsy,christie,freda,meredith,lynette,teri,cristina,eula,leigh,meghan,sophia,eloise,rochelle,gretchen,cecelia,raquel,henrietta,alyssa,jana,gwen,jenna,tricia,laverne,olive,tasha,silvia,elvira,delia,kate,patti,lorena,kellie,sonja,lila,lana,darla,mindy,essie,mandy,lorene,elsa,josefina,jeannie,miranda,dixie,lucia,marta,faith,lela,johanna,shari,camille,tami,shawna,elisa,ebony,melba,ora,nettie,tabitha,ollie,winifred,kristie,alisha,aimee,rena,myrna,marla,tammie,latasha,bonita,patrice,ronda,sherrie,addie,francine,deloris,stacie,adriana,cheri,abigail,celeste,jewel,cara,adele,rebekah,lucinda,dorthy,effie,trina,reba,sallie,aurora,lenora,etta,lottie,kerri,trisha,nikki,estella,francisca,josie,tracie,marissa,karin,brittney,janelle,lourdes,laurel,helene,fern,elva,corinne,kelsey,ina,bettie,elisabeth,aida,caitlin,ingrid,iva,eugenia,christa,goldie,maude,jenifer,therese,dena,lorna,janette,latonya,candy,consuelo,tamika,rosetta,debora,cherie,polly,dina,jewell,fay,jillian,dorothea,nell,trudy,esperanza,patrica,kimberley,shanna,helena,cleo,stefanie,rosario,ola,janine,mollie,lupe,alisa,lou,maribel,susanne,bette,susana,elise,cecile,isabelle,lesley,jocelyn,paige,joni,rachelle,leola,daphne,alta,ester,petra,graciela,imogene,jolene,keisha,lacey,glenna,gabriela,keri,ursula,lizzie,kirsten,shana,adeline,mayra,jayne,jaclyn,gracie,sondra,carmela,marisa,rosalind,charity,tonia,beatriz,marisol,clarice,jeanine,sheena,angeline,frieda,lily,shauna,millie,claudette,cathleen,angelia,gabrielle,autumn,katharine,jodie,staci,lea,christi,justine,elma,luella,margret,dominique,socorro,martina,margo,mavis,callie,bobbi,maritza,lucile,leanne,jeannine,deana,aileen,lorie,ladonna,willa,manuela,gale,selma,dolly,sybil,abby,ivy,dee,winnie,marcy,luisa,jeri,magdalena,ofelia,meagan,audra,matilda,leila,cornelia,bianca,simone,bettye,randi,virgie,latisha,barbra,georgina,eliza,leann,bridgette,rhoda,haley,adela,nola,bernadine,flossie,ila,greta,ruthie,nelda,minerva,lilly,terrie,letha,hilary,estela,valarie,brianna,rosalyn,earline,catalina,ava,mia,clarissa,lidia,corrine,alexandria,concepcion,tia,sharron,rae,dona,ericka,jami,elnora,chandra,lenore,neva,marylou,melisa,tabatha,serena,avis,allie,sofia,jeanie,odessa,nannie,harriett,loraine,penelope,milagros,emilia,benita,allyson,ashlee,tania,esmeralda,eve,pearlie,zelma,malinda,noreen,tameka,saundra,hillary,amie,althea,rosalinda,lilia,alana,clare,alejandra,elinor,lorrie,jerri,darcy,earnestine,carmella,noemi,marcie,liza,annabelle,louisa,earlene,mallory,carlene,nita,selena,tanisha,katy,julianne,lakisha,edwina,maricela,margery,kenya,dollie,roxie,roslyn,kathrine,nanette,charmaine,lavonne,ilene,tammi,suzette,corine,kaye,chrystal,lina,deanne,lilian,juliana,aline,luann,kasey,maryanne,evangeline,colette,melva,lawanda,yesenia,nadia,madge,kathie,ophelia,valeria,nona,mitzi,mari,georgette,claudine,fran,alissa,roseann,lakeisha,susanna,reva,deidre,chasity,sheree,elvia,alyce,deirdre,gena,briana,araceli,katelyn,rosanne,wendi,tessa,berta,marva,imelda,marietta,marci,leonor,arline,sasha,madelyn,janna,juliette,deena,aurelia,josefa,augusta,liliana,lessie,amalia,savannah,anastasia,vilma,natalia,rosella,lynnette,corina,alfreda,leanna,amparo,coleen,tamra,aisha,wilda,karyn,maura,mai,evangelina,rosanna,hallie,erna,enid,mariana,lacy,juliet,jacklyn,freida,madeleine,mara,cathryn,lelia,casandra,bridgett,angelita,jannie,dionne,annmarie,katina,beryl,millicent,katheryn,diann,carissa,maryellen,liz,lauri,helga,gilda,rhea,marquita,hollie,tisha,tamera,angelique,francesca,kaitlin,lolita,florine,rowena,reyna,twila,fanny,janell,ines,concetta,bertie,alba,brigitte,alyson,vonda,pansy,elba,noelle,letitia,deann,brandie,louella,leta,felecia,sharlene,lesa,beverley,isabella,herminia,terra,celina,tori,octavia,jade,denice,germaine,michell,cortney,nelly,doretha,deidra,monika,lashonda,judi,chelsey,antionette,margot,adelaide,leeann,elisha,dessie,libby,kathi,gayla,latanya,mina,mellisa,kimberlee,jasmin,renae,zelda,elda,justina,gussie,emilie,camilla,abbie,rocio,kaitlyn,edythe,ashleigh,selina,lakesha,geri,allene,pamala,michaela,dayna,caryn,rosalia,jacquline,rebeca,marybeth,krystle,iola,dottie,belle,griselda,ernestina,elida,adrianne,demetria,delma,jaqueline,arleen,virgina,retha,fatima,tillie,eleanore,cari,treva,wilhelmina,rosalee,maurine,latrice,jena,taryn,elia,debby,maudie,jeanna,delilah,catrina,shonda,hortencia,theodora,teresita,robbin,danette,delphine,brianne,nilda,danna,cindi,bess,iona,winona,vida,rosita,marianna,racheal,guillermina,eloisa,celestine,caren,malissa,lona,chantel,shellie,marisela,leora,agatha,soledad,migdalia,ivette,christen,athena,janel,veda,pattie,tessie,tera,marilynn,lucretia,karrie,dinah,daniela,alecia,adelina,vernice,shiela,portia,merry,lashawn,dara,tawana,verda,alene,zella,sandi,rafaela,maya,kira,candida,alvina,suzan,shayla,lettie,samatha,oralia,matilde,larissa,vesta,renita,delois,shanda,phillis,lorri,erlinda,cathrine,barb,isabell,ione,gisela,roxanna,mayme,kisha,ellie,mellissa,dorris,dalia,bella,annetta,zoila,reta,reina,lauretta,kylie,christal,pilar,charla,elissa,tiffani,tana,paulina,leota,breanna,jayme,carmel,vernell,tomasa,mandi,dominga,santa,melodie,lura,alexa,tamela,mirna,kerrie,venus,felicita,cristy,carmelita,berniece,annemarie,tiara,roseanne,missy,cori,roxana,pricilla,kristal,jung,elyse,haydee,aletha,bettina,marge,gillian,filomena,zenaida,harriette,caridad,vada,aretha,pearline,marjory,marcela,flor,evette,elouise,alina,damaris,catharine,belva,nakia,marlena,luanne,lorine,karon,dorene,danita,brenna,tatiana,louann,julianna,andria,philomena,lucila,leonora,dovie,romona,mimi,jacquelin,gaye,tonja,misti,chastity,stacia,roxann,micaela,velda,marlys,johnna,aura,ivonne,hayley,nicki,majorie,herlinda,yadira,perla,gregoria,antonette,shelli,mozelle,mariah,joelle,cordelia,josette,chiquita,trista,laquita,georgiana,candi,shanon,hildegard,stephany,magda,karol,gabriella,tiana,roma,richelle,oleta,jacque,idella,alaina,suzanna,jovita,tosha,nereida,marlyn,kyla,delfina,tena,stephenie,sabina,nathalie,marcelle,gertie,darleen,thea,sharonda,shantel,belen,venessa,rosalina,genoveva,clementine,rosalba,renate,renata,georgianna,floy,dorcas,ariana,tyra,theda,mariam,juli,jesica,vikki,verla,roselyn,melvina,jannette,ginny,debrah,corrie,violeta,myrtis,latricia,collette,charleen,anissa,viviana,twyla,nedra,latonia,hellen,fabiola,annamarie,adell,sharyn,chantal,niki,maud,lizette,lindy,kesha,jeana,danelle,charline,chanel,valorie,dortha,cristal,sunny,leone,leilani,gerri,debi,andra,keshia,eulalia,easter,dulce,natividad,linnie,kami,georgie,catina,brook,alda,winnifred,sharla,ruthann,meaghan,magdalene,lissette,adelaida,venita,trena,shirlene,shameka,elizebeth,dian,shanta,latosha,carlotta,windy,rosina,mariann,leisa,jonnie,dawna,cathie,astrid,laureen,janeen,holli,fawn,vickey,teressa,shante,rubye,marcelina,chanda,terese,scarlett,marnie,lulu,lisette,jeniffer,elenor,dorinda,donita,carman,bernita,altagracia,aleta,adrianna,zoraida,lyndsey,janina,starla,phylis,phuong,kyra,charisse,blanch,sanjuanita,rona,nanci,marilee,maranda,brigette,sanjuana,marita,kassandra,joycelyn,felipa,chelsie,bonny,mireya,lorenza,kyong,ileana,candelaria,sherie,lucie,leatrice,lakeshia,gerda,edie,bambi,marylin,lavon,hortense,garnet,evie,tressa,shayna,lavina,kyung,jeanetta,sherrill,shara,phyliss,mittie,anabel,alesia,thuy,tawanda,joanie,tiffanie,lashanda,karissa,enriqueta,daria,daniella,corinna,alanna,abbey,roxane,roseanna,magnolia,lida,joellen,coral,carleen,tresa,peggie,novella,nila,maybelle,jenelle,carina,nova,melina,marquerite,margarette,josephina,evonne,cinthia,albina,toya,tawnya,sherita,myriam,lizabeth,lise,keely,jenni,giselle,cheryle,ardith,ardis,alesha,adriane,shaina,linnea,karolyn,felisha,dori,darci,artie,armida,zola,xiomara,vergie,shamika,nena,nannette,maxie,lovie,jeane,jaimie,inge,farrah,elaina,caitlyn,felicitas,cherly,caryl,yolonda,yasmin,teena,prudence,pennie,nydia,mackenzie,orpha,marvel,lizbeth,laurette,jerrie,hermelinda,carolee,tierra,mirian,meta,melony,kori,jennette,jamila,yoshiko,susannah,salina,rhiannon,joleen,cristine,ashton,aracely,tomeka,shalonda,marti,lacie,kala,jada,ilse,hailey,brittani,zona,syble,sherryl,nidia,marlo,kandice,kandi,alycia,ronna,norene,mercy,ingeborg,giovanna,gemma,christel,audry,zora,vita,trish,stephaine,shirlee,shanika,melonie,mazie,jazmin,inga,hettie,geralyn,fonda,estrella,adella,sarita,rina,milissa,maribeth,golda,evon,ethelyn,enedina,cherise,chana,velva,tawanna,sade,mirta,karie,jacinta,elna,davina,cierra,ashlie,albertha,tanesha,nelle,mindi,lorinda,larue,florene,demetra,dedra,ciara,chantelle,ashly,suzy,rosalva,noelia,lyda,leatha,krystyna,kristan,karri,darline,darcie,cinda,cherrie,awilda,almeda,rolanda,lanette,jerilyn,gisele,evalyn,cyndi,cleta,carin,zina,zena,velia,tanika,charissa,talia,margarete,lavonda,kaylee,kathlene,jonna,irena,ilona,idalia,candis,candance,brandee,anitra,alida,sigrid,nicolette,maryjo,linette,hedwig,christiana,alexia,tressie,modesta,lupita,lita,gladis,evelia,davida,cherri,cecily,ashely,annabel,agustina,wanita,shirly,rosaura,hulda,yetta,verona,thomasina,sibyl,shannan,mechelle,leandra,lani,kylee,kandy,jolynn,ferne,eboni,corene,alysia,zula,nada,moira,lyndsay,lorretta,jammie,hortensia,gaynell,adria,vina,vicenta,tangela,stephine,norine,nella,liana,leslee,kimberely,iliana,glory,felica,emogene,elfriede,eden,eartha,carma,ocie,lennie,kiara,jacalyn,carlota,arielle,otilia,kirstin,kacey,johnetta,joetta,jeraldine,jaunita,elana,dorthea,cami,amada,adelia,vernita,tamar,siobhan,renea,rashida,ouida,nilsa,meryl,kristyn,julieta,danica,breanne,aurea,anglea,sherron,odette,malia,lorelei,leesa,kenna,kathlyn,fiona,charlette,suzie,shantell,sabra,racquel,myong,mira,martine,lucienne,lavada,juliann,elvera,delphia,christiane,charolette,carri,asha,angella,paola,ninfa,leda,stefani,shanell,palma,machelle,lissa,kecia,kathryne,karlene,julissa,jettie,jenniffer,corrina,carolann,alena,rosaria,myrtice,marylee,liane,kenyatta,judie,janey,elmira,eldora,denna,cristi,cathi,zaida,vonnie,viva,vernie,rosaline,mariela,luciana,lesli,karan,felice,deneen,adina,wynona,tarsha,sheron,shanita,shani,shandra,randa,pinkie,nelida,marilou,lyla,laurene,laci,janene,dorotha,daniele,dani,carolynn,carlyn,berenice,ayesha,anneliese,alethea,thersa,tamiko,rufina,oliva,mozell,marylyn,kristian,kathyrn,kasandra,kandace,janae,domenica,debbra,dannielle,chun,arcelia,zenobia,sharen,sharee,lavinia,kacie,jackeline,huong,felisa,emelia,eleanora,cythia,cristin,claribel,anastacia,zulma,zandra,yoko,tenisha,susann,sherilyn,shay,shawanda,romana,mathilda,linsey,keiko,joana,isela,gretta,georgetta,eugenie,desirae,delora,corazon,antonina,anika,willene,tracee,tamatha,nichelle,mickie,maegan,luana,lanita,kelsie,edelmira,bree,afton,teodora,tamie,shena,linh,keli,kaci,danyelle,arlette,albertine,adelle,tiffiny,simona,nicolasa,nichol,nakisha,maira,loreen,kizzy,fallon,christene,bobbye,ying,vincenza,tanja,rubie,roni,queenie,margarett,kimberli,irmgard,idell,hilma,evelina,esta,emilee,dennise,dania,carie,risa,rikki,particia,masako,luvenia,loree,loni,lien,gigi,florencia,denita,billye,tomika,sharita,rana,nikole,neoma,margarite,madalyn,lucina,laila,kali,jenette,gabriele,evelyne,elenora,clementina,alejandrina,zulema,violette,vannessa,thresa,retta,patience,noella,nickie,jonell,chaya,camelia,bethel,anya,suzann,mila,lilla,laverna,keesha,kattie,georgene,eveline,estell,elizbeth,vivienne,vallie,trudie,stephane,magaly,madie,kenyetta,karren,janetta,hermine,drucilla,debbi,celestina,candie,britni,beckie,amina,zita,yolande,vivien,vernetta,trudi,pearle,patrina,ossie,nicolle,loyce,letty,katharina,joselyn,jonelle,jenell,iesha,heide,florinda,florentina,elodia,dorine,brunilda,brigid,ashli,ardella,twana,tarah,shavon,serina,rayna,ramonita,margurite,lucrecia,kourtney,kati,jesenia,crista,ayana,alica,alia,vinnie,suellen,romelia,rachell,olympia,michiko,kathaleen,jolie,jessi,janessa,hana,elease,carletta,britany,shona,salome,rosamond,regena,raina,ngoc,nelia,louvenia,lesia,latrina,laticia,larhonda,jina,jacki,emmy,deeann,coretta,arnetta,thalia,shanice,neta,mikki,micki,lonna,leana,lashunda,kiley,joye,jacqulyn,ignacia,hyun,hiroko,henriette,elayne,delinda,dahlia,coreen,consuela,conchita,babette,ayanna,anette,albertina,shawnee,shaneka,quiana,pamelia,merri,merlene,margit,kiesha,kiera,kaylene,jodee,jenise,erlene,emmie,dalila,daisey,casie,belia,babara,versie,vanesa,shelba,shawnda,nikia,naoma,marna,margeret,madaline,lawana,kindra,jutta,jazmine,janett,hannelore,glendora,gertrud,garnett,freeda,frederica,florance,flavia,carline,beverlee,anjanette,valda,tamala,shonna,sarina,oneida,merilyn,marleen,lurline,lenna,katherin,jeni,gracia,glady,farah,enola,dominque,devona,delana,cecila,caprice,alysha,alethia,vena,theresia,tawny,shakira,samara,sachiko,rachele,pamella,marni,mariel,maren,malisa,ligia,lera,latoria,larae,kimber,kathern,karey,jennefer,janeth,halina,fredia,delisa,debroah,ciera,angelika,andree,altha,vivan,terresa,tanna,sudie,signe,salena,ronni,rebbecca,myrtie,malika,maida,leonarda,kayleigh,ethyl,ellyn,dayle,cammie,brittni,birgit,avelina,asuncion,arianna,akiko,venice,tyesha,tonie,tiesha,takisha,steffanie,sindy,meghann,manda,macie,kellye,kellee,joslyn,inger,indira,glinda,glennis,fernanda,faustina,eneida,elicia,digna,dell,arletta,willia,tammara,tabetha,sherrell,sari,rebbeca,pauletta,natosha,nakita,mammie,kenisha,kazuko,kassie,earlean,daphine,corliss,clotilde,carolyne,bernetta,augustina,audrea,annis,annabell,tennille,tamica,selene,rosana,regenia,qiana,markita,macy,leeanne,laurine,jessenia,janita,georgine,genie,emiko,elvie,deandra,dagmar,corie,collen,cherish,romaine,porsha,pearlene,micheline,merna,margorie,margaretta,lore,jenine,hermina,fredericka,elke,drusilla,dorathy,dione,celena,brigida,allegra,tamekia,synthia,sook,slyvia,rosann,reatha,raye,marquetta,margart,ling,layla,kymberly,kiana,kayleen,katlyn,karmen,joella,emelda,eleni,detra,clemmie,cheryll,chantell,cathey,arnita,arla,angle,angelic,alyse,zofia,thomasine,tennie,sherly,sherley,sharyl,remedios,petrina,nickole,myung,myrle,mozella,louanne,lisha,latia,krysta,julienne,jeanene,jacqualine,isaura,gwenda,earleen,cleopatra,carlie,audie,antonietta,alise,verdell,tomoko,thao,talisha,shemika,savanna,santina,rosia,raeann,odilia,nana,minna,magan,lynelle,karma,joeann,ivana,inell,ilana,gudrun,dreama,crissy,chante,carmelina,arvilla,annamae,alvera,aleida,yanira,vanda,tianna,stefania,shira,nicol,nancie,monserrate,melynda,melany,lovella,laure,kacy,jacquelynn,hyon,gertha,eliana,christena,christeen,charise,caterina,carley,candyce,arlena,ammie,willette,vanita,tuyet,syreeta,penney,nyla,maryam,marya,magen,ludie,loma,livia,lanell,kimberlie,julee,donetta,diedra,denisha,deane,dawne,clarine,cherryl,bronwyn,alla,valery,tonda,sueann,soraya,shoshana,shela,sharleen,shanelle,nerissa,meridith,mellie,maye,maple,magaret,lili,leonila,leonie,leeanna,lavonia,lavera,kristel,kathey,kathe,jann,ilda,hildred,hildegarde,genia,fumiko,evelin,ermelinda,elly,dung,doloris,dionna,danae,berneice,annice,alix,verena,verdie,shawnna,shawana,shaunna,rozella,randee,ranae,milagro,lynell,luise,loida,lisbeth,karleen,junita,jona,isis,hyacinth,hedy,gwenn,ethelene,erline,donya,domonique,delicia,dannette,cicely,branda,blythe,bethann,ashlyn,annalee,alline,yuko,vella,trang,towanda,tesha,sherlyn,narcisa,miguelina,meri,maybell,marlana,marguerita,madlyn,lory,loriann,leonore,leighann,laurice,latesha,laronda,katrice,kasie,kaley,jadwiga,glennie,gearldine,francina,epifania,dyan,dorie,diedre,denese,demetrice,delena,cristie,cleora,catarina,carisa,barbera,almeta,trula,tereasa,solange,sheilah,shavonne,sanora,rochell,mathilde,margareta,maia,lynsey,lawanna,launa,kena,keena,katia,glynda,gaylene,elvina,elanor,danuta,danika,cristen,cordie,coletta,clarita,carmon,brynn,azucena,aundrea,angele,verlie,verlene,tamesha,silvana,sebrina,samira,reda,raylene,penni,norah,noma,mireille,melissia,maryalice,laraine,kimbery,karyl,karine,jolanda,johana,jesusa,jaleesa,jacquelyne,iluminada,hilaria,hanh,gennie,francie,floretta,exie,edda,drema,delpha,barbar,assunta,ardell,annalisa,alisia,yukiko,yolando,wonda,waltraud,veta,temeka,tameika,shirleen,shenita,piedad,ozella,mirtha,marilu,kimiko,juliane,jenice,janay,jacquiline,hilde,elois,echo,devorah,chau,brinda,betsey,arminda,aracelis,apryl,annett,alishia,veola,usha,toshiko,theola,tashia,talitha,shery,renetta,reiko,rasheeda,obdulia,mika,melaine,meggan,marlen,marget,marceline,mana,magdalen,librada,lezlie,latashia,lasandra,kelle,isidra,inocencia,gwyn,francoise,erminia,erinn,dimple,devora,criselda,armanda,arie,ariane,angelena,aliza,adriene,adaline,xochitl,twanna,tomiko,tamisha,taisha,susy,rutha,rhona,noriko,natashia,merrie,marinda,mariko,margert,loris,lizzette,leisha,kaila,joannie,jerrica,jene,jannet,janee,jacinda,herta,elenore,doretta,delaine,daniell,claudie,britta,apolonia,amberly,alease,yuri,waneta,tomi,sharri,sandie,roselle,reynalda,raguel,phylicia,patria,olimpia,odelia,mitzie,minda,mignon,mica,mendy,marivel,maile,lynetta,lavette,lauryn,latrisha,lakiesha,kiersten,kary,josphine,jolyn,jetta,janise,jacquie,ivelisse,glynis,gianna,gaynelle,danyell,danille,dacia,coralee,cher,ceola,arianne,aleshia,yung,williemae,trinh,thora,sherika,shemeka,shaunda,roseline,ricki,melda,mallie,lavonna,latina,laquanda,lala,lachelle,klara,kandis,johna,jeanmarie,jaye,grayce,gertude,emerita,ebonie,clorinda,ching,chery,carola,breann,blossom,bernardine,becki,arletha,argelia,alita,yulanda,yessenia,tobi,tasia,sylvie,shirl,shirely,shella,shantelle,sacha,rebecka,providencia,paulene,misha,miki,marline,marica,lorita,latoyia,lasonya,kerstin,kenda,keitha,kathrin,jaymie,gricelda,ginette,eryn,elina,elfrieda,danyel,cheree,chanelle,barrie,aurore,annamaria,alleen,ailene,aide,yasmine,vashti,treasa,tiffaney,sheryll,sharie,shanae,raisa,neda,mitsuko,mirella,milda,maryanna,maragret,mabelle,luetta,lorina,letisha,latarsha,lanelle,lajuana,krissy,karly,karena,jessika,jerica,jeanelle,jalisa,jacelyn,izola,euna,etha,domitila,dominica,daina,creola,carli,camie,brittny,ashanti,anisha,aleen,adah,yasuko,valrie,tona,tinisha,terisa,taneka,simonne,shalanda,serita,ressie,refugia,olene,margherita,mandie,maire,lyndia,luci,lorriane,loreta,leonia,lavona,lashawnda,lakia,kyoko,krystina,krysten,kenia,kelsi,jeanice,isobel,georgiann,genny,felicidad,eilene,deloise,deedee,conception,clora,cherilyn,calandra,armandina,anisa,tiera,theressa,stephania,sima,shyla,shonta,shera,shaquita,shala,rossana,nohemi,nery,moriah,melita,melida,melani,marylynn,marisha,mariette,malorie,madelene,ludivina,loria,lorette,loralee,lianne,lavenia,laurinda,lashon,kimi,keila,katelynn,jone,joane,jayna,janella,hertha,francene,elinore,despina,delsie,deedra,clemencia,carolin,bulah,brittanie,blondell,bibi,beaulah,beata,annita,agripina,virgen,valene,twanda,tommye,tarra,tari,tammera,shakia,sadye,ruthanne,rochel,rivka,pura,nenita,natisha,ming,merrilee,melodee,marvis,lucilla,leena,laveta,larita,lanie,keren,ileen,georgeann,genna,frida,eufemia,emely,edyth,deonna,deadra,darlena,chanell,cathern,cassondra,cassaundra,bernarda,berna,arlinda,anamaria,vertie,valeri,torri,stasia,sherise,sherill,sanda,ruthe,rosy,robbi,ranee,quyen,pearly,palmira,onita,nisha,niesha,nida,merlyn,mayola,marylouise,marth,margene,madelaine,londa,leontine,leoma,leia,lauralee,lanora,lakita,kiyoko,keturah,katelin,kareen,jonie,johnette,jenee,jeanett,izetta,hiedi,heike,hassie,giuseppina,georgann,fidela,fernande,elwanda,ellamae,eliz,dusti,dotty,cyndy,coralie,celesta,alverta,xenia,wava,vanetta,torrie,tashina,tandy,tambra,tama,stepanie,shila,shaunta,sharan,shaniqua,shae,setsuko,serafina,sandee,rosamaria,priscila,olinda,nadene,muoi,michelina,mercedez,maryrose,marcene,magali,mafalda,lannie,kayce,karoline,kamilah,kamala,justa,joline,jennine,jacquetta,iraida,georgeanna,franchesca,emeline,elane,ehtel,earlie,dulcie,dalene,classie,chere,charis,caroyln,carmina,carita,bethanie,ayako,arica,alysa,alessandra,akilah,adrien,zetta,youlanda,yelena,yahaira,xuan,wendolyn,tijuana,terina,teresia,suzi,sherell,shavonda,shaunte,sharda,shakita,sena,ryann,rubi,riva,reginia,rachal,parthenia,pamula,monnie,monet,michaele,melia,malka,maisha,lisandra,lekisha,lean,lakendra,krystin,kortney,kizzie,kittie,kera,kendal,kemberly,kanisha,julene,jule,johanne,jamee,halley,gidget,fredricka,fleta,fatimah,eusebia,elza,eleonore,dorthey,doria,donella,dinorah,delorse,claretha,christinia,charlyn,bong,belkis,azzie,andera,aiko,adena,yajaira,vania,ulrike,toshia,tifany,stefany,shizue,shenika,shawanna,sharolyn,sharilyn,shaquana,shantay,rozanne,roselee,remona,reanna,raelene,phung,petronila,natacha,nancey,myrl,miyoko,miesha,merideth,marvella,marquitta,marhta,marchelle,lizeth,libbie,lahoma,ladawn,kina,katheleen,katharyn,karisa,kaleigh,junie,julieann,johnsie,janean,jaimee,jackqueline,hisako,herma,helaine,gwyneth,gita,eustolia,emelina,elin,edris,donnette,donnetta,dierdre,denae,darcel,clarisa,cinderella,chia,charlesetta,charita,celsa,cassy,cassi,carlee,bruna,brittaney,brande,billi,antonetta,angla,angelyn,analisa,alane,wenona,wendie,veronique,vannesa,tobie,tempie,sumiko,sulema,somer,sheba,sharice,shanel,shalon,rosio,roselia,renay,rema,reena,ozie,oretha,oralee,ngan,nakesha,milly,marybelle,margrett,maragaret,manie,lurlene,lillia,lieselotte,lavelle,lashaunda,lakeesha,kaycee,kalyn,joya,joette,jenae,janiece,illa,grisel,glayds,genevie,gala,fredda,eleonor,debera,deandrea,corrinne,cordia,contessa,colene,cleotilde,chantay,cecille,beatris,azalee,arlean,ardath,anjelica,anja,alfredia,aleisha,zada,yuonne,xiao,willodean,vennie,vanna,tyisha,tova,torie,tonisha,tilda,tien,sirena,sherril,shanti,shan,senaida,samella,robbyn,renda,reita,phebe,paulita,nobuko,nguyet,neomi,mikaela,melania,maximina,marg,maisie,lynna,lilli,lashaun,lakenya,lael,kirstie,kathline,kasha,karlyn,karima,jovan,josefine,jennell,jacqui,jackelyn,hien,grazyna,florrie,floria,eleonora,dwana,dorla,delmy,deja,dede,dann,crysta,clelia,claris,chieko,cherlyn,cherelle,charmain,chara,cammy,arnette,ardelle,annika,amiee,amee,allena,yvone,yuki,yoshie,yevette,yael,willetta,voncile,venetta,tula,tonette,timika,temika,telma,teisha,taren,stacee,shawnta,saturnina,ricarda,pasty,onie,nubia,marielle,mariella,marianela,mardell,luanna,loise,lisabeth,lindsy,lilliana,lilliam,lelah,leigha,leanora,kristeen,khalilah,keeley,kandra,junko,joaquina,jerlene,jani,jamika,hsiu,hermila,genevive,evia,eugena,emmaline,elfreda,elene,donette,delcie,deeanna,darcey,clarinda,cira,chae,celinda,catheryn,casimira,carmelia,camellia,breana,bobette,bernardina,bebe,basilia,arlyne,amal,alayna,zonia,zenia,yuriko,yaeko,wynell,willena,vernia,tora,terrilyn,terica,tenesha,tawna,tajuana,taina,stephnie,sona,sina,shondra,shizuko,sherlene,sherice,sharika,rossie,rosena,rima,rheba,renna,natalya,nancee,melodi,meda,matha,marketta,maricruz,marcelene,malvina,luba,louetta,leida,lecia,lauran,lashawna,laine,khadijah,katerine,kasi,kallie,julietta,jesusita,jestine,jessia,jeffie,janyce,isadora,georgianne,fidelia,evita,eura,eulah,estefana,elsy,eladia,dodie,denisse,deloras,delila,daysi,crystle,concha,claretta,charlsie,charlena,carylon,bettyann,asley,ashlea,amira,agueda,agnus,yuette,vinita,victorina,tynisha,treena,toccara,tish,thomasena,tegan,soila,shenna,sharmaine,shantae,shandi,saran,sarai,sana,rosette,rolande,regine,otelia,olevia,nicholle,necole,naida,myrta,myesha,mitsue,minta,mertie,margy,mahalia,madalene,loura,lorean,lesha,leonida,lenita,lavone,lashell,lashandra,lamonica,kimbra,katherina,karry,kanesha,jong,jeneva,jaquelyn,gilma,ghislaine,gertrudis,fransisca,fermina,ettie,etsuko,ellan,elidia,edra,dorethea,doreatha,denyse,deetta,daine,cyrstal,corrin,cayla,carlita,camila,burma,bula,buena,barabara,avril,alaine,zana,wilhemina,wanetta,verline,vasiliki,tonita,tisa,teofila,tayna,taunya,tandra,takako,sunni,suanne,sixta,sharell,seema,rosenda,robena,raymonde,pamila,ozell,neida,mistie,micha,merissa,maurita,maryln,maryetta,marcell,malena,makeda,lovetta,lourie,lorrine,lorilee,laurena,lashay,larraine,laree,lacresha,kristle,keva,keira,karole,joie,jinny,jeannetta,jama,heidy,gilberte,gema,faviola,evelynn,enda,elli,ellena,divina,dagny,collene,codi,cindie,chassidy,chasidy,catrice,catherina,cassey,caroll,carlena,candra,calista,bryanna,britteny,beula,bari,audrie,audria,ardelia,annelle,angila,alona,allyn".split(","),surnames:"smith,johnson,williams,jones,brown,davis,miller,wilson,moore,taylor,anderson,jackson,white,harris,martin,thompson,garcia,martinez,robinson,clark,rodriguez,lewis,lee,walker,hall,allen,young,hernandez,king,wright,lopez,hill,green,adams,baker,gonzalez,nelson,carter,mitchell,perez,roberts,turner,phillips,campbell,parker,evans,edwards,collins,stewart,sanchez,morris,rogers,reed,cook,morgan,bell,murphy,bailey,rivera,cooper,richardson,cox,howard,ward,torres,peterson,gray,ramirez,watson,brooks,sanders,price,bennett,wood,barnes,ross,henderson,coleman,jenkins,perry,powell,long,patterson,hughes,flores,washington,butler,simmons,foster,gonzales,bryant,alexander,griffin,diaz,hayes,myers,ford,hamilton,graham,sullivan,wallace,woods,cole,west,owens,reynolds,fisher,ellis,harrison,gibson,mcdonald,cruz,marshall,ortiz,gomez,murray,freeman,wells,webb,simpson,stevens,tucker,porter,hicks,crawford,boyd,mason,morales,kennedy,warren,dixon,ramos,reyes,burns,gordon,shaw,holmes,rice,robertson,hunt,black,daniels,palmer,mills,nichols,grant,knight,ferguson,stone,hawkins,dunn,perkins,hudson,spencer,gardner,stephens,payne,pierce,berry,matthews,arnold,wagner,willis,watkins,olson,carroll,duncan,snyder,hart,cunningham,lane,andrews,ruiz,harper,fox,riley,armstrong,carpenter,weaver,greene,elliott,chavez,sims,peters,kelley,franklin,lawson,fields,gutierrez,schmidt,carr,vasquez,castillo,wheeler,chapman,montgomery,richards,williamson,johnston,banks,meyer,bishop,mccoy,howell,alvarez,morrison,hansen,fernandez,garza,harvey,burton,nguyen,jacobs,reid,fuller,lynch,garrett,romero,welch,larson,frazier,burke,hanson,mendoza,moreno,bowman,medina,fowler,brewer,hoffman,carlson,silva,pearson,holland,fleming,jensen,vargas,byrd,davidson,hopkins,herrera,wade,soto,walters,neal,caldwell,lowe,jennings,barnett,graves,jimenez,horton,shelton,barrett,obrien,castro,sutton,mckinney,lucas,miles,rodriquez,chambers,holt,lambert,fletcher,watts,bates,hale,rhodes,pena,beck,newman,haynes,mcdaniel,mendez,bush,vaughn,parks,dawson,santiago,norris,hardy,steele,curry,powers,schultz,barker,guzman,page,munoz,ball,keller,chandler,weber,walsh,lyons,ramsey,wolfe,schneider,mullins,benson,sharp,bowen,barber,cummings,hines,baldwin,griffith,valdez,hubbard,salazar,reeves,warner,stevenson,burgess,santos,tate,cross,garner,mann,mack,moss,thornton,mcgee,farmer,delgado,aguilar,vega,glover,manning,cohen,harmon,rodgers,robbins,newton,blair,higgins,ingram,reese,cannon,strickland,townsend,potter,goodwin,walton,rowe,hampton,ortega,patton,swanson,goodman,maldonado,yates,becker,erickson,hodges,rios,conner,adkins,webster,malone,hammond,flowers,cobb,moody,quinn,pope,osborne,mccarthy,guerrero,estrada,sandoval,gibbs,gross,fitzgerald,stokes,doyle,saunders,wise,colon,gill,alvarado,greer,padilla,waters,nunez,ballard,schwartz,mcbride,houston,christensen,klein,pratt,briggs,parsons,mclaughlin,zimmerman,buchanan,moran,copeland,pittman,brady,mccormick,holloway,brock,poole,logan,bass,marsh,drake,wong,jefferson,morton,abbott,sparks,norton,huff,massey,figueroa,carson,bowers,roberson,barton,tran,lamb,harrington,boone,cortez,clarke,mathis,singleton,wilkins,cain,underwood,hogan,mckenzie,collier,luna,phelps,mcguire,bridges,wilkerson,nash,summers,atkins,wilcox,pitts,conley,marquez,burnett,cochran,chase,davenport,hood,gates,ayala,sawyer,vazquez,dickerson,hodge,acosta,flynn,espinoza,nicholson,monroe,wolf,morrow,whitaker,oconnor,skinner,ware,molina,kirby,huffman,gilmore,dominguez,oneal,lang,combs,kramer,hancock,gallagher,gaines,shaffer,wiggins,mathews,mcclain,fischer,wall,melton,hensley,bond,dyer,grimes,contreras,wyatt,baxter,snow,mosley,shepherd,larsen,hoover,beasley,petersen,whitehead,meyers,garrison,shields,horn,savage,olsen,schroeder,hartman,woodard,mueller,kemp,deleon,booth,patel,calhoun,wiley,eaton,cline,navarro,harrell,humphrey,parrish,duran,hutchinson,hess,dorsey,bullock,robles,beard,dalton,avila,rich,blackwell,johns,blankenship,trevino,salinas,campos,pruitt,callahan,montoya,hardin,guerra,mcdowell,stafford,gallegos,henson,wilkinson,booker,merritt,atkinson,orr,decker,hobbs,tanner,knox,pacheco,stephenson,glass,rojas,serrano,marks,hickman,sweeney,strong,mcclure,conway,roth,maynard,farrell,lowery,hurst,nixon,weiss,trujillo,ellison,sloan,juarez,winters,mclean,boyer,villarreal,mccall,gentry,carrillo,ayers,lara,sexton,pace,hull,leblanc,browning,velasquez,leach,chang,sellers,herring,noble,foley,bartlett,mercado,landry,durham,walls,barr,mckee,bauer,rivers,bradshaw,pugh,velez,rush,estes,dodson,morse,sheppard,weeks,camacho,bean,barron,livingston,middleton,spears,branch,blevins,chen,kerr,mcconnell,hatfield,harding,solis,frost,giles,blackburn,pennington,woodward,finley,mcintosh,koch,mccullough,blanchard,rivas,brennan,mejia,kane,benton,buckley,valentine,maddox,russo,mcknight,buck,moon,mcmillan,crosby,berg,dotson,mays,roach,chan,richmond,meadows,faulkner,oneill,knapp,kline,ochoa,jacobson,gay,hendricks,horne,shepard,hebert,cardenas,mcintyre,waller,holman,donaldson,cantu,morin,gillespie,fuentes,tillman,bentley,peck,key,salas,rollins,gamble,dickson,santana,cabrera,cervantes,howe,hinton,hurley,spence,zamora,yang,mcneil,suarez,petty,gould,mcfarland,sampson,carver,bray,macdonald,stout,hester,melendez,dillon,farley,hopper,galloway,potts,joyner,stein,aguirre,osborn,mercer,bender,franco,rowland,sykes,pickett,sears,mayo,dunlap,hayden,wilder,mckay,coffey,mccarty,ewing,cooley,vaughan,bonner,cotton,holder,stark,ferrell,cantrell,fulton,lott,calderon,pollard,hooper,burch,mullen,fry,riddle,levy,duke,odonnell,britt,daugherty,berger,dillard,alston,frye,riggs,chaney,odom,duffy,fitzpatrick,valenzuela,mayer,alford,mcpherson,acevedo,barrera,cote,reilly,compton,mooney,mcgowan,craft,clemons,wynn,nielsen,baird,stanton,snider,rosales,bright,witt,hays,holden,rutledge,kinney,clements,castaneda,slater,hahn,burks,delaney,pate,lancaster,sharpe,whitfield,talley,macias,burris,ratliff,mccray,madden,kaufman,beach,goff,cash,bolton,mcfadden,levine,byers,kirkland,kidd,workman,carney,mcleod,holcomb,finch,sosa,haney,franks,sargent,nieves,downs,rasmussen,bird,hewitt,foreman,valencia,oneil,delacruz,vinson,dejesus,hyde,forbes,gilliam,guthrie,wooten,huber,barlow,boyle,mcmahon,buckner,rocha,puckett,langley,knowles,cooke,velazquez,whitley,vang,shea,rouse,hartley,mayfield,elder,rankin,hanna,cowan,lucero,arroyo,slaughter,haas,oconnell,minor,boucher,archer,boggs,dougherty,andersen,newell,crowe,wang,friedman,bland,swain,holley,pearce,childs,yarbrough,galvan,proctor,meeks,lozano,mora,rangel,bacon,villanueva,schaefer,rosado,helms,boyce,goss,stinson,ibarra,hutchins,covington,crowley,hatcher,mackey,bunch,womack,polk,dodd,childress,childers,villa,springer,mahoney,dailey,belcher,lockhart,griggs,costa,brandt,walden,moser,tatum,mccann,akers,lutz,pryor,orozco,mcallister,lugo,davies,shoemaker,rutherford,newsome,magee,chamberlain,blanton,simms,godfrey,flanagan,crum,cordova,escobar,downing,sinclair,donahue,krueger,mcginnis,gore,farris,webber,corbett,andrade,starr,lyon,yoder,hastings,mcgrath,spivey,krause,harden,crabtree,kirkpatrick,arrington,ritter,mcghee,bolden,maloney,gagnon,dunbar,ponce,pike,mayes,beatty,mobley,kimball,butts,montes,eldridge,braun,hamm,gibbons,moyer,manley,herron,plummer,elmore,cramer,rucker,pierson,fontenot,rubio,goldstein,elkins,wills,novak,hickey,worley,gorman,katz,dickinson,broussard,woodruff,crow,britton,nance,lehman,bingham,zuniga,whaley,shafer,coffman,steward,delarosa,neely,mata,davila,mccabe,kessler,hinkle,welsh,pagan,goldberg,goins,crouch,cuevas,quinones,mcdermott,hendrickson,samuels,denton,bergeron,ivey,locke,haines,snell,hoskins,byrne,arias,corbin,beltran,chappell,downey,dooley,tuttle,couch,payton,mcelroy,crockett,groves,cartwright,dickey,mcgill,dubois,muniz,tolbert,dempsey,cisneros,sewell,latham,vigil,tapia,rainey,norwood,stroud,meade,tipton,kuhn,hilliard,bonilla,teague,gunn,greenwood,correa,reece,pineda,phipps,frey,kaiser,ames,gunter,schmitt,milligan,espinosa,bowden,vickers,lowry,pritchard,costello,piper,mcclellan,lovell,sheehan,hatch,dobson,singh,jeffries,hollingsworth,sorensen,meza,fink,donnelly,burrell,tomlinson,colbert,billings,ritchie,helton,sutherland,peoples,mcqueen,thomason,givens,crocker,vogel,robison,dunham,coker,swartz,keys,ladner,richter,hargrove,edmonds,brantley,albright,murdock,boswell,muller,quintero,padgett,kenney,daly,connolly,inman,quintana,lund,barnard,villegas,simons,huggins,tidwell,sanderson,bullard,mcclendon,duarte,draper,marrero,dwyer,abrams,stover,goode,fraser,crews,bernal,godwin,conklin,mcneal,baca,esparza,crowder,bower,brewster,mcneill,rodrigues,leal,coates,raines,mccain,mccord,miner,holbrook,swift,dukes,carlisle,aldridge,ackerman,starks,ricks,holliday,ferris,hairston,sheffield,lange,fountain,doss,betts,kaplan,carmichael,bloom,ruffin,penn,kern,bowles,sizemore,larkin,dupree,seals,metcalf,hutchison,henley,farr,mccauley,hankins,gustafson,curran,waddell,ramey,cates,pollock,cummins,messer,heller,funk,cornett,palacios,galindo,cano,hathaway,pham,enriquez,salgado,pelletier,painter,wiseman,blount,feliciano,houser,doherty,mead,mcgraw,swan,capps,blanco,blackmon,thomson,mcmanus,burkett,gleason,dickens,cormier,voss,rushing,rosenberg,hurd,dumas,benitez,arellano,marin,caudill,bragg,jaramillo,huerta,gipson,colvin,biggs,vela,platt,cassidy,tompkins,mccollum,dolan,daley,crump,sneed,kilgore,grove,grimm,davison,brunson,prater,marcum,devine,dodge,stratton,rosas,choi,tripp,ledbetter,hightower,feldman,epps,yeager,posey,scruggs,cope,stubbs,richey,overton,trotter,sprague,cordero,butcher,stiles,burgos,woodson,horner,bassett,purcell,haskins,akins,ziegler,spaulding,hadley,grubbs,sumner,murillo,zavala,shook,lockwood,driscoll,dahl,thorpe,redmond,putnam,mcwilliams,mcrae,romano,joiner,sadler,hedrick,hager,hagen,fitch,coulter,thacker,mansfield,langston,guidry,ferreira,corley,conn,rossi,lackey,baez,saenz,mcnamara,mcmullen,mckenna,mcdonough,link,engel,browne,roper,peacock,eubanks,drummond,stringer,pritchett,parham,mims,landers,grayson,schafer,egan,timmons,ohara,keen,hamlin,finn,cortes,mcnair,nadeau,moseley,michaud,rosen,oakes,kurtz,jeffers,calloway,beal,bautista,winn,suggs,stern,stapleton,lyles,laird,montano,dawkins,hagan,goldman,bryson,barajas,lovett,segura,metz,lockett,langford,hinson,eastman,hooks,smallwood,shapiro,crowell,whalen,triplett,chatman,aldrich,cahill,youngblood,ybarra,stallings,sheets,reeder,connelly,bateman,abernathy,winkler,wilkes,masters,hackett,granger,gillis,schmitz,sapp,napier,souza,lanier,gomes,weir,otero,ledford,burroughs,babcock,ventura,siegel,dugan,bledsoe,atwood,wray,varner,spangler,anaya,staley,kraft,fournier,belanger,wolff,thorne,bynum,burnette,boykin,swenson,purvis,pina,khan,duvall,darby,xiong,kauffman,healy,engle,benoit,valle,steiner,spicer,shaver,randle,lundy,chin,calvert,staton,neff,kearney,darden,oakley,medeiros,mccracken,crenshaw,perdue,dill,whittaker,tobin,washburn,hogue,goodrich,easley,bravo,dennison,shipley,kerns,jorgensen,crain,villalobos,maurer,longoria,keene,coon,witherspoon,staples,pettit,kincaid,eason,madrid,echols,lusk,stahl,currie,thayer,shultz,mcnally,seay,maher,gagne,barrow,nava,moreland,honeycutt,hearn,diggs,caron,whitten,westbrook,stovall,ragland,munson,meier,looney,kimble,jolly,hobson,goddard,culver,burr,presley,negron,connell,tovar,huddleston,ashby,salter,root,pendleton,oleary,nickerson,myrick,judd,jacobsen,bain,adair,starnes,matos,busby,herndon,hanley,bellamy,doty,bartley,yazzie,rowell,parson,gifford,cullen,christiansen,benavides,barnhart,talbot,mock,crandall,connors,bonds,whitt,gage,bergman,arredondo,addison,lujan,dowdy,jernigan,huynh,bouchard,dutton,rhoades,ouellette,kiser,herrington,hare,blackman,babb,allred,rudd,paulson,ogden,koenig,geiger,begay,parra,lassiter,hawk,esposito,waldron,ransom,prather,chacon,vick,sands,roark,parr,mayberry,greenberg,coley,bruner,whitman,skaggs,shipman,leary,hutton,romo,medrano,ladd,kruse,askew,schulz,alfaro,tabor,mohr,gallo,bermudez,pereira,bliss,reaves,flint,comer,woodall,naquin,guevara,delong,carrier,pickens,tilley,schaffer,knutson,fenton,doran,vogt,vann,prescott,mclain,landis,corcoran,zapata,hyatt,hemphill,faulk,dove,boudreaux,aragon,whitlock,trejo,tackett,shearer,saldana,hanks,mckinnon,koehler,bourgeois,keyes,goodson,foote,lunsford,goldsmith,flood,winslow,sams,reagan,mccloud,hough,esquivel,naylor,loomis,coronado,ludwig,braswell,bearden,huang,fagan,ezell,edmondson,cronin,nunn,lemon,guillory,grier,dubose,traylor,ryder,dobbins,coyle,aponte,whitmore,smalls,rowan,malloy,cardona,braxton,borden,humphries,carrasco,ruff,metzger,huntley,hinojosa,finney,madsen,ernst,dozier,burkhart,bowser,peralta,daigle,whittington,sorenson,saucedo,roche,redding,fugate,avalos,waite,lind,huston,hawthorne,hamby,boyles,boles,regan,faust,crook,beam,barger,hinds,gallardo,willoughby,willingham,eckert,busch,zepeda,worthington,tinsley,hoff,hawley,carmona,varela,rector,newcomb,kinsey,dube,whatley,ragsdale,bernstein,becerra,yost,mattson,felder,cheek,handy,grossman,gauthier,escobedo,braden,beckman,mott,hillman,flaherty,dykes,stockton,stearns,lofton,coats,cavazos,beavers,barrios,tang,mosher,cardwell,coles,burnham,weller,lemons,beebe,aguilera,parnell,harman,couture,alley,schumacher,redd,dobbs,blum,blalock,merchant,ennis,denson,cottrell,brannon,bagley,aviles,watt,sousa,rosenthal,rooney,dietz,blank,paquette,mcclelland,duff,velasco,lentz,grubb,burrows,barbour,ulrich,shockley,rader,beyer,mixon,layton,altman,weathers,stoner,squires,shipp,priest,lipscomb,cutler,caballero,zimmer,willett,thurston,storey,medley,epperson,shah,mcmillian,baggett,torrez,hirsch,dent,poirier,peachey,farrar,creech,barth,trimble,dupre,albrecht,sample,lawler,crisp,conroy,wetzel,nesbitt,murry,jameson,wilhelm,patten,minton,matson,kimbrough,guinn,croft,toth,pulliam,nugent,newby,littlejohn,dias,canales,bernier,baron,singletary,renteria,pruett,mchugh,mabry,landrum,brower,stoddard,cagle,stjohn,scales,kohler,kellogg,hopson,gant,tharp,gann,zeigler,pringle,hammons,fairchild,deaton,chavis,carnes,rowley,matlock,kearns,irizarry,carrington,starkey,lopes,jarrell,craven,baum,littlefield,linn,humphreys,etheridge,cuellar,chastain,bundy,speer,skelton,quiroz,pyle,portillo,ponder,moulton,machado,killian,hutson,hitchcock,dowling,cloud,burdick,spann,pedersen,levin,leggett,hayward,dietrich,beaulieu,barksdale,wakefield,snowden,briscoe,bowie,berman,ogle,mcgregor,laughlin,helm,burden,wheatley,schreiber,pressley,parris,alaniz,agee,swann,snodgrass,schuster,radford,monk,mattingly,harp,girard,cheney,yancey,wagoner,ridley,lombardo,hudgins,gaskins,duckworth,coburn,willey,prado,newberry,magana,hammonds,elam,whipple,slade,serna,ojeda,liles,dorman,diehl,upton,reardon,michaels,goetz,eller,bauman,baer,layne,hummel,brenner,amaya,adamson,ornelas,dowell,cloutier,castellanos,wellman,saylor,orourke,moya,montalvo,kilpatrick,durbin,shell,oldham,kang,garvin,foss,branham,bartholomew,templeton,maguire,holton,rider,monahan,mccormack,beaty,anders,streeter,nieto,nielson,moffett,lankford,keating,heck,gatlin,delatorre,callaway,adcock,worrell,unger,robinette,nowak,jeter,brunner,steen,parrott,overstreet,nobles,montanez,clevenger,brinkley,trahan,quarles,pickering,pederson,jansen,grantham,gilchrist,crespo,aiken,schell,schaeffer,lorenz,leyva,harms,dyson,wallis,pease,leavitt,cheng,cavanaugh,batts,warden,seaman,rockwell,quezada,paxton,linder,houck,fontaine,durant,caruso,adler,pimentel,mize,lytle,cleary,cason,acker,switzer,isaacs,higginbotham,waterman,vandyke,stamper,sisk,shuler,riddick,mcmahan,levesque,hatton,bronson,bollinger,arnett,okeefe,gerber,gannon,farnsworth,baughman,silverman,satterfield,mccrary,kowalski,grigsby,greco,cabral,trout,rinehart,mahon,linton,gooden,curley,baugh,wyman,weiner,schwab,schuler,morrissey,mahan,bunn,thrasher,spear,waggoner,qualls,purdy,mcwhorter,mauldin,gilman,perryman,newsom,menard,martino,graf,billingsley,artis,simpkins,salisbury,quintanilla,gilliland,fraley,foust,crouse,scarborough,grissom,fultz,marlow,markham,madrigal,lawton,barfield,whiting,varney,schwarz,gooch,arce,wheat,truong,poulin,hurtado,selby,gaither,fortner,culpepper,coughlin,brinson,boudreau,bales,stepp,holm,schilling,morrell,kahn,heaton,gamez,causey,turpin,shanks,schrader,meek,isom,hardison,carranza,yanez,scroggins,schofield,runyon,ratcliff,murrell,moeller,irby,currier,butterfield,ralston,pullen,pinson,estep,carbone,hawks,ellington,casillas,spurlock,sikes,motley,mccartney,kruger,isbell,houle,burk,tomlin,quigley,neumann,lovelace,fennell,cheatham,bustamante,skidmore,hidalgo,forman,culp,bowens,betancourt,aquino,robb,milner,martel,gresham,wiles,ricketts,dowd,collazo,bostic,blakely,sherrod,kenyon,gandy,ebert,deloach,allard,sauer,robins,olivares,gillette,chestnut,bourque,paine,hite,hauser,devore,crawley,chapa,talbert,poindexter,meador,mcduffie,mattox,kraus,harkins,choate,wren,sledge,sanborn,kinder,geary,cornwell,barclay,abney,seward,rhoads,howland,fortier,benner,vines,tubbs,troutman,rapp,mccurdy,deluca,westmoreland,havens,guajardo,clary,seal,meehan,herzog,guillen,ashcraft,waugh,renner,milam,elrod,churchill,breaux,bolin,asher,windham,tirado,pemberton,nolen,noland,knott,emmons,cornish,christenson,brownlee,barbee,waldrop,pitt,olvera,lombardi,gruber,gaffney,eggleston,banda,archuleta,slone,prewitt,pfeiffer,nettles,mena,mcadams,henning,gardiner,cromwell,chisholm,burleson,vest,oglesby,mccarter,lumpkin,wofford,vanhorn,thorn,teel,swafford,stclair,stanfield,ocampo,herrmann,hannon,arsenault,roush,mcalister,hiatt,gunderson,forsythe,duggan,delvalle,cintron,wilks,weinstein,uribe,rizzo,noyes,mclendon,gurley,bethea,winstead,maples,guyton,giordano,alderman,valdes,polanco,pappas,lively,grogan,griffiths,bobo,arevalo,whitson,sowell,rendon,fernandes,farrow,benavidez,ayres,alicea,stump,smalley,seitz,schulte,gilley,gallant,canfield,wolford,omalley,mcnutt,mcnulty,mcgovern,hardman,harbin,cowart,chavarria,brink,beckett,bagwell,armstead,anglin,abreu,reynoso,krebs,jett,hoffmann,greenfield,forte,burney,broome,sisson,trammell,partridge,mace,lomax,lemieux,gossett,frantz,fogle,cooney,broughton,pence,paulsen,muncy,mcarthur,hollins,beauchamp,withers,osorio,mulligan,hoyle,dockery,cockrell,begley,amador,roby,rains,lindquist,gentile,everhart,bohannon,wylie,sommers,purnell,fortin,dunning,breeden,vail,phelan,phan,marx,cosby,colburn,boling,biddle,ledesma,gaddis,denney,chow,bueno,berrios,wicker,tolliver,thibodeaux,nagle,lavoie,fisk,crist,barbosa,reedy,locklear,kolb,himes,behrens,beckwith,weems,wahl,shorter,shackelford,rees,muse,cerda,valadez,thibodeau,saavedra,ridgeway,reiter,mchenry,majors,lachance,keaton,ferrara,clemens,blocker,applegate,needham,mojica,kuykendall,hamel,escamilla,doughty,burchett,ainsworth,vidal,upchurch,thigpen,strauss,spruill,sowers,riggins,ricker,mccombs,harlow,buffington,sotelo,olivas,negrete,morey,macon,logsdon,lapointe,bigelow,bello,westfall,stubblefield,lindley,hein,hawes,farrington,breen,birch,wilde,steed,sepulveda,reinhardt,proffitt,minter,messina,mcnabb,maier,keeler,gamboa,donohue,basham,shinn,crooks,cota,borders,bills,bachman,tisdale,tavares,schmid,pickard,gulley,fonseca,delossantos,condon,batista,wicks,wadsworth,martell,littleton,ison,haag,folsom,brumfield,broyles,brito,mireles,mcdonnell,leclair,hamblin,gough,fanning,binder,winfield,whitworth,soriano,palumbo,newkirk,mangum,hutcherson,comstock,carlin,beall,bair,wendt,watters,walling,putman,otoole,morley,mares,lemus,keener,hundley,dial,damico,billups,strother,mcfarlane,lamm,eaves,crutcher,caraballo,canty,atwell,taft,siler,rust,rawls,rawlings,prieto,mcneely,mcafee,hulsey,hackney,galvez,escalante,delagarza,crider,bandy,wilbanks,stowe,steinberg,renfro,masterson,massie,lanham,haskell,hamrick,dehart,burdette,branson,bourne,babin,aleman,worthy,tibbs,smoot,slack,paradis,mull,luce,houghton,gantt,furman,danner,christianson,burge,ashford,arndt,almeida,stallworth,shade,searcy,sager,noonan,mclemore,mcintire,maxey,lavigne,jobe,ferrer,falk,coffin,byrnes,aranda,apodaca,stamps,rounds,peek,olmstead,lewandowski,kaminski,dunaway,bruns,brackett,amato,reich,mcclung,lacroix,koontz,herrick,hardesty,flanders,cousins,cato,cade,vickery,shank,nagel,dupuis,croteau,cotter,stuckey,stine,porterfield,pauley,moffitt,knudsen,hardwick,goforth,dupont,blunt,barrows,barnhill,shull,rash,loftis,lemay,kitchens,horvath,grenier,fuchs,fairbanks,culbertson,calkins,burnside,beattie,ashworth,albertson,wertz,vaught,vallejo,turk,tuck,tijerina,sage,peterman,marroquin,marr,lantz,hoang,demarco,cone,berube,barnette,wharton,stinnett,slocum,scanlon,sander,pinto,mancuso,lima,headley,epstein,counts,clarkson,carnahan,boren,arteaga,adame,zook,whittle,whitehurst,wenzel,saxton,reddick,puente,handley,haggerty,earley,devlin,chaffin,cady,acuna,solano,sigler,pollack,pendergrass,ostrander,janes,francois,crutchfield,chamberlin,brubaker,baptiste,willson,reis,neeley,mullin,mercier,lira,layman,keeling,higdon,espinal,chapin,warfield,toledo,pulido,peebles,nagy,montague,mello,lear,jaeger,hogg,graff,furr,soliz,poore,mendenhall,mclaurin,maestas,gable,barraza,tillery,snead,pond,neill,mcculloch,mccorkle,lightfoot,hutchings,holloman,harness,dorn,bock,zielinski,turley,treadwell,stpierre,starling,somers,oswald,merrick,easterling,bivens,truitt,poston,parry,ontiveros,olivarez,moreau,medlin,lenz,knowlton,fairley,cobbs,chisolm,bannister,woodworth,toler,ocasio,noriega,neuman,moye,milburn,mcclanahan,lilley,hanes,flannery,dellinger,danielson,conti,blodgett,beers,weatherford,strain,karr,hitt,denham,custer,coble,clough,casteel,bolduc,batchelor,ammons,whitlow,tierney,staten,sibley,seifert,schubert,salcedo,mattison,laney,haggard,grooms,dees,cromer,cooks,colson,caswell,zarate,swisher,shin,ragan,pridgen,mcvey,matheny,lafleur,franz,ferraro,dugger,whiteside,rigsby,mcmurray,lehmann,jacoby,hildebrand,hendrick,headrick,goad,fincher,drury,borges,archibald,albers,woodcock,trapp,soares,seaton,monson,luckett,lindberg,kopp,keeton,healey,garvey,gaddy,fain,burchfield,wentworth,strand,stack,spooner,saucier,ricci,plunkett,pannell,ness,leger,freitas,fong,elizondo,duval,beaudoin,urbina,rickard,partin,mcgrew,mcclintock,ledoux,forsyth,faison,devries,bertrand,wasson,tilton,scarbrough,leung,irvine,garber,denning,corral,colley,castleberry,bowlin,bogan,beale,baines,trice,rayburn,parkinson,nunes,mcmillen,leahy,kimmel,higgs,fulmer,carden,bedford,taggart,spearman,prichard,morrill,koonce,heinz,hedges,guenther,grice,findley,dover,creighton,boothe,bayer,arreola,vitale,valles,raney,osgood,hanlon,burley,bounds,worden,weatherly,vetter,tanaka,stiltner,nevarez,mosby,montero,melancon,harter,hamer,goble,gladden,gist,ginn,akin,zaragoza,tarver,sammons,royster,oreilly,muir,morehead,luster,kingsley,kelso,grisham,glynn,baumann,alves,yount,tamayo,paterson,oates,menendez,longo,hargis,gillen,desantis,conover,breedlove,sumpter,scherer,rupp,reichert,heredia,creel,cohn,clemmons,casas,bickford,belton,bach,williford,whitcomb,tennant,sutter,stull,mccallum,langlois,keel,keegan,dangelo,dancy,damron,clapp,clanton,bankston,oliveira,mintz,mcinnis,martens,mabe,laster,jolley,hildreth,hefner,glaser,duckett,demers,brockman,blais,alcorn,agnew,toliver,tice,seeley,najera,musser,mcfall,laplante,galvin,fajardo,doan,coyne,copley,clawson,cheung,barone,wynne,woodley,tremblay,stoll,sparrow,sparkman,schweitzer,sasser,samples,roney,legg,heim,farias,colwell,christman,bratcher,winchester,upshaw,southerland,sorrell,sells,mccloskey,martindale,luttrell,loveless,lovejoy,linares,latimer,embry,coombs,bratton,bostick,venable,tuggle,toro,staggs,sandlin,jefferies,heckman,griffis,crayton,clem,browder,thorton,sturgill,sprouse,royer,rousseau,ridenour,pogue,perales,peeples,metzler,mesa,mccutcheon,mcbee,hornsby,heffner,corrigan,armijo,plante,peyton,paredes,macklin,hussey,hodgson,granados,frias,becnel,batten,almanza,turney,teal,sturgeon,meeker,mcdaniels,limon,keeney,hutto,holguin,gorham,fishman,fierro,blanchette,rodrigue,reddy,osburn,oden,lerma,kirkwood,keefer,haugen,hammett,chalmers,brinkman,baumgartner,zhang,valerio,tellez,steffen,shumate,sauls,ripley,kemper,guffey,evers,craddock,carvalho,blaylock,banuelos,balderas,wheaton,turnbull,shuman,pointer,mosier,mccue,ligon,kozlowski,johansen,ingle,herr,briones,snipes,rickman,pipkin,pantoja,orosco,moniz,lawless,kunkel,hibbard,galarza,enos,bussey,schott,salcido,perreault,mcdougal,mccool,haight,garris,easton,conyers,atherton,wimberly,utley,spellman,smithson,slagle,ritchey,rand,petit,osullivan,oaks,nutt,mcvay,mccreary,mayhew,knoll,jewett,harwood,cardoza,ashe,arriaga,zeller,wirth,whitmire,stauffer,rountree,redden,mccaffrey,martz,larose,langdon,humes,gaskin,faber,devito,cass,almond,wingfield,wingate,villareal,tyner,smothers,severson,reno,pennell,maupin,leighton,janssen,hassell,hallman,halcomb,folse,fitzsimmons,fahey,cranford,bolen,battles,battaglia,wooldridge,trask,rosser,regalado,mcewen,keefe,fuqua,echevarria,caro,boynton,andrus,viera,vanmeter,taber,spradlin,seibert,provost,prentice,oliphant,laporte,hwang,hatchett,hass,greiner,freedman,covert,chilton,byars,wiese,venegas,swank,shrader,roberge,mullis,mortensen,mccune,marlowe,kirchner,keck,isaacson,hostetler,halverson,gunther,griswold,fenner,durden,blackwood,ahrens,sawyers,savoy,nabors,mcswain,mackay,lavender,lash,labbe,jessup,fullerton,cruse,crittenden,correia,centeno,caudle,canady,callender,alarcon,ahern,winfrey,tribble,salley,roden,musgrove,minnick,fortenberry,carrion,bunting,batiste,whited,underhill,stillwell,rauch,pippin,perrin,messenger,mancini,lister,kinard,hartmann,fleck,wilt,treadway,thornhill,spalding,rafferty,pitre,patino,ordonez,linkous,kelleher,homan,galbraith,feeney,curtin,coward,camarillo,buss,bunnell,bolt,beeler,autry,alcala,witte,wentz,stidham,shively,nunley,meacham,martins,lemke,lefebvre,hynes,horowitz,hoppe,holcombe,dunne,derr,cochrane,brittain,bedard,beauregard,torrence,strunk,soria,simonson,shumaker,scoggins,oconner,moriarty,kuntz,ives,hutcheson,horan,hales,garmon,fitts,bohn,atchison,wisniewski,vanwinkle,sturm,sallee,prosser,moen,lundberg,kunz,kohl,keane,jorgenson,jaynes,funderburk,freed,durr,creamer,cosgrove,batson,vanhoose,thomsen,teeter,smyth,redmon,orellana,maness,heflin,goulet,frick,forney,bunker,asbury,aguiar,talbott,southard,mowery,mears,lemmon,krieger,hickson,elston,duong,delgadillo,dayton,dasilva,conaway,catron,bruton,bradbury,bordelon,bivins,bittner,bergstrom,beals,abell,whelan,tejada,pulley,pino,norfleet,nealy,maes,loper,gatewood,frierson,freund,finnegan,cupp,covey,catalano,boehm,bader,yoon,walston,tenney,sipes,rawlins,medlock,mccaskill,mccallister,marcotte,maclean,hughey,henke,harwell,gladney,gilson,chism,caskey,brandenburg,baylor,villasenor,veal,thatcher,stegall,petrie,nowlin,navarrete,lombard,loftin,lemaster,kroll,kovach,kimbrell,kidwell,hershberger,fulcher,cantwell,bustos,boland,bobbitt,binkley,wester,weis,verdin,tong,tiller,sisco,sharkey,seymore,rosenbaum,rohr,quinonez,pinkston,malley,logue,lessard,lerner,lebron,krauss,klinger,halstead,haller,getz,burrow,alger,shores,pfeifer,perron,nelms,munn,mcmaster,mckenney,manns,knudson,hutchens,huskey,goebel,flagg,cushman,click,castellano,carder,bumgarner,wampler,spinks,robson,neel,mcreynolds,mathias,maas,loera,jenson,florez,coons,buckingham,brogan,berryman,wilmoth,wilhite,thrash,shephard,seidel,schulze,roldan,pettis,obryan,maki,mackie,hatley,frazer,fiore,chesser,bottoms,bisson,benefield,allman,wilke,trudeau,timm,shifflett,mundy,milliken,mayers,leake,kohn,huntington,horsley,hermann,guerin,fryer,frizzell,foret,flemming,fife,criswell,carbajal,bozeman,boisvert,angulo,wallen,tapp,silvers,ramsay,oshea,orta,moll,mckeever,mcgehee,linville,kiefer,ketchum,howerton,groce,gass,fusco,corbitt,betz,bartels,amaral,aiello,weddle,sperry,seiler,runyan,raley,overby,osteen,olds,mckeown,matney,lauer,lattimore,hindman,hartwell,fredrickson,fredericks,espino,clegg,carswell,cambell,burkholder,woodbury,welker,totten,thornburg,theriault,stitt,stamm,stackhouse,scholl,saxon,rife,razo,quinlan,pinkerton,olivo,nesmith,nall,mattos,lafferty,justus,giron,geer,fielder,drayton,dortch,conners,conger,boatwright,billiot,barden,armenta,tibbetts,steadman,slattery,rinaldi,raynor,pinckney,pettigrew,milne,matteson,halsey,gonsalves,fellows,durand,desimone,cowley,cowles,brill,barham,barela,barba,ashmore,withrow,valenti,tejeda,spriggs,sayre,salerno,peltier,peel,merriman,matheson,lowman,lindstrom,hyland,giroux,earls,dugas,dabney,collado,briseno,baxley,whyte,wenger,vanover,vanburen,thiel,schindler,schiller,rigby,pomeroy,passmore,marble,manzo,mahaffey,lindgren,laflamme,greathouse,fite,calabrese,bayne,yamamoto,wick,townes,thames,reinhart,peeler,naranjo,montez,mcdade,mast,markley,marchand,leeper,kellum,hudgens,hennessey,hadden,gainey,coppola,borrego,bolling,beane,ault,slaton,pape,null,mulkey,lightner,langer,hillard,ethridge,enright,derosa,baskin,weinberg,turman,somerville,pardo,noll,lashley,ingraham,hiller,hendon,glaze,cothran,cooksey,conte,carrico,abner,wooley,swope,summerlin,sturgis,sturdivant,stott,spurgeon,spillman,speight,roussel,popp,nutter,mckeon,mazza,magnuson,lanning,kozak,jankowski,heyward,forster,corwin,callaghan,bays,wortham,usher,theriot,sayers,sabo,poling,loya,lieberman,laroche,labelle,howes,harr,garay,fogarty,everson,durkin,dominquez,chaves,chambliss,witcher,vieira,vandiver,terrill,stoker,schreiner,moorman,liddell,lawhorn,krug,irons,hylton,hollenbeck,herrin,hembree,goolsby,goodin,gilmer,foltz,dinkins,daughtry,caban,brim,briley,bilodeau,wyant,vergara,tallent,swearingen,stroup,scribner,quillen,pitman,mccants,maxfield,martinson,holtz,flournoy,brookins,brody,baumgardner,straub,sills,roybal,roundtree,oswalt,mcgriff,mcdougall,mccleary,maggard,gragg,gooding,godinez,doolittle,donato,cowell,cassell,bracken,appel,zambrano,reuter,perea,nakamura,monaghan,mickens,mcclinton,mcclary,marler,kish,judkins,gilbreath,freese,flanigan,felts,erdmann,dodds,chew,brownell,boatright,barreto,slayton,sandberg,saldivar,pettway,odum,narvaez,moultrie,montemayor,merrell,lees,keyser,hoke,hardaway,hannan,gilbertson,fogg,dumont,deberry,coggins,buxton,bucher,broadnax,beeson,araujo,appleton,amundson,aguayo,ackley,yocum,worsham,shivers,sanches,sacco,robey,rhoden,pender,ochs,mccurry,madera,luong,knotts,jackman,heinrich,hargrave,gault,comeaux,chitwood,caraway,boettcher,bernhardt,barrientos,zink,wickham,whiteman,thorp,stillman,settles,schoonover,roque,riddell,pilcher,phifer,novotny,macleod,hardee,haase,grider,doucette,clausen,bevins,beamon,badillo,tolley,tindall,soule,snook,seale,pinkney,pellegrino,nowell,nemeth,mondragon,mclane,lundgren,ingalls,hudspeth,hixson,gearhart,furlong,downes,dibble,deyoung,cornejo,camara,brookshire,boyette,wolcott,surratt,sellars,segal,salyer,reeve,rausch,labonte,haro,gower,freeland,fawcett,eads,driggers,donley,collett,bromley,boatman,ballinger,baldridge,volz,trombley,stonge,shanahan,rivard,rhyne,pedroza,matias,jamieson,hedgepeth,hartnett,estevez,eskridge,denman,chiu,chinn,catlett,carmack,buie,bechtel,beardsley,bard,ballou,ulmer,skeen,robledo,rincon,reitz,piazza,munger,moten,mcmichael,loftus,ledet,kersey,groff,fowlkes,crumpton,clouse,bettis,villagomez,timmerman,strom,santoro,roddy,penrod,musselman,macpherson,leboeuf,harless,haddad,guido,golding,fulkerson,fannin,dulaney,dowdell,cottle,ceja,cate,bosley,benge,albritton,voigt,trowbridge,soileau,seely,rohde,pearsall,paulk,orth,nason,mota,mcmullin,marquardt,madigan,hoag,gillum,gabbard,fenwick,danforth,cushing,cress,creed,cazares,bettencourt,barringer,baber,stansberry,schramm,rutter,rivero,oquendo,necaise,mouton,montenegro,miley,mcgough,marra,macmillan,lamontagne,jasso,horst,hetrick,heilman,gaytan,gall,fortney,dingle,desjardins,dabbs,burbank,brigham,breland,beaman,arriola,yarborough,wallin,toscano,stowers,reiss,pichardo,orton,michels,mcnamee,mccrory,leatherman,kell,keister,horning,hargett,guay,ferro,deboer,dagostino,carper,blanks,beaudry,towle,tafoya,stricklin,strader,soper,sonnier,sigmon,schenk,saddler,pedigo,mendes,lunn,lohr,lahr,kingsbury,jarman,hume,holliman,hofmann,haworth,harrelson,hambrick,flick,edmunds,dacosta,crossman,colston,chaplin,carrell,budd,weiler,waits,valentino,trantham,tarr,solorio,roebuck,powe,plank,pettus,pagano,mink,luker,leathers,joslin,hartzell,gambrell,cepeda,carty,caputo,brewington,bedell,ballew,applewhite,warnock,walz,urena,tudor,reel,pigg,parton,mickelson,meagher,mclellan,mcculley,mandel,leech,lavallee,kraemer,kling,kipp,kehoe,hochstetler,harriman,gregoire,grabowski,gosselin,gammon,fancher,edens,desai,brannan,armendariz,woolsey,whitehouse,whetstone,ussery,towne,testa,tallman,studer,strait,steinmetz,sorrells,sauceda,rolfe,paddock,mitchem,mcginn,mccrea,lovato,hazen,gilpin,gaynor,fike,devoe,delrio,curiel,burkhardt,bode,backus,zinn,watanabe,wachter,vanpelt,turnage,shaner,schroder,sato,riordan,quimby,portis,natale,mckoy,mccown,kilmer,hotchkiss,hesse,halbert,gwinn,godsey,delisle,chrisman,canter,arbogast,angell,acree,yancy,woolley,wesson,weatherspoon,trainor,stockman,spiller,sipe,rooks,reavis,propst,porras,neilson,mullens,loucks,llewellyn,kumar,koester,klingensmith,kirsch,kester,honaker,hodson,hennessy,helmick,garrity,garibay,drain,casarez,callis,botello,aycock,avant,wingard,wayman,tully,theisen,szymanski,stansbury,segovia,rainwater,preece,pirtle,padron,mincey,mckelvey,mathes,larrabee,kornegay,klug,ingersoll,hecht,germain,eggers,dykstra,deering,decoteau,deason,dearing,cofield,carrigan,bonham,bahr,aucoin,appleby,almonte,yager,womble,wimmer,weimer,vanderpool,stancil,sprinkle,romine,remington,pfaff,peckham,olivera,meraz,maze,lathrop,koehn,hazelton,halvorson,hallock,haddock,ducharme,dehaven,caruthers,brehm,bosworth,bost,bias,beeman,basile,bane,aikens,wold,walther,tabb,suber,strawn,stocker,shirey,schlosser,riedel,rembert,reimer,pyles,peele,merriweather,letourneau,latta,kidder,hixon,hillis,hight,herbst,henriquez,haygood,hamill,gabel,fritts,eubank,dawes,correll,bushey,buchholz,brotherton,botts,barnwell,auger,atchley,westphal,veilleux,ulloa,stutzman,shriver,ryals,pilkington,moyers,marrs,mangrum,maddux,lockard,laing,kuhl,harney,hammock,hamlett,felker,doerr,depriest,carrasquillo,carothers,bogle,bischoff,bergen,albanese,wyckoff,vermillion,vansickle,thibault,tetreault,stickney,shoemake,ruggiero,rawson,racine,philpot,paschal,mcelhaney,mathison,legrand,lapierre,kwan,kremer,jiles,hilbert,geyer,faircloth,ehlers,egbert,desrosiers,dalrymple,cotten,cashman,cadena,boardman,alcaraz,wyrick,therrien,tankersley,strickler,puryear,plourde,pattison,pardue,mcginty,mcevoy,landreth,kuhns,koon,hewett,giddens,emerick,eades,deangelis,cosme,ceballos,birdsong,benham,bemis,armour,anguiano,welborn,tsosie,storms,shoup,sessoms,samaniego,rood,rojo,rhinehart,raby,northcutt,myer,munguia,morehouse,mcdevitt,mallett,lozada,lemoine,kuehn,hallett,grim,gillard,gaylor,garman,gallaher,feaster,faris,darrow,dardar,coney,carreon,braithwaite,boylan,boyett,bixler,bigham,benford,barragan,barnum,zuber,wyche,westcott,vining,stoltzfus,simonds,shupe,sabin,ruble,rittenhouse,richman,perrone,mulholland,millan,lomeli,kite,jemison,hulett,holler,hickerson,herold,hazelwood,griffen,gause,forde,eisenberg,dilworth,charron,chaisson,bristow,breunig,brace,boutwell,bentz,belk,bayless,batchelder,baran,baeza,zimmermann,weathersby,volk,toole,theis,tedesco,searle,schenck,satterwhite,ruelas,rankins,partida,nesbit,morel,menchaca,levasseur,kaylor,johnstone,hulse,hollar,hersey,harrigan,harbison,guyer,gish,giese,gerlach,geller,geisler,falcone,elwell,doucet,deese,darr,corder,chafin,byler,bussell,burdett,brasher,bowe,bellinger,bastian,barner,alleyne,wilborn,weil,wegner,tatro,spitzer,smithers,schoen,resendez,parisi,overman,obrian,mudd,mahler,maggio,lindner,lalonde,lacasse,laboy,killion,kahl,jessen,jamerson,houk,henshaw,gustin,graber,durst,duenas,davey,cundiff,conlon,colunga,coakley,chiles,capers,buell,bricker,bissonnette,bartz,bagby,zayas,volpe,treece,toombs,thom,terrazas,swinney,skiles,silveira,shouse,senn,ramage,moua,langham,kyles,holston,hoagland,herd,feller,denison,carraway,burford,bickel,ambriz,abercrombie,yamada,weidner,waddle,verduzco,thurmond,swindle,schrock,sanabria,rosenberger,probst,peabody,olinger,nazario,mccafferty,mcbroom,mcabee,mazur,matherne,mapes,leverett,killingsworth,heisler,griego,gosnell,frankel,franke,ferrante,fenn,ehrlich,christopherso,chasse,caton,brunelle,bloomfield,babbitt,azevedo,abramson,ables,abeyta,youmans,wozniak,wainwright,stowell,smitherman,samuelson,runge,rothman,rosenfeld,peake,owings,olmos,munro,moreira,leatherwood,larkins,krantz,kovacs,kizer,kindred,karnes,jaffe,hubbell,hosey,hauck,goodell,erdman,dvorak,doane,cureton,cofer,buehler,bierman,berndt,banta,abdullah,warwick,waltz,turcotte,torrey,stith,seger,sachs,quesada,pinder,peppers,pascual,paschall,parkhurst,ozuna,oster,nicholls,lheureux,lavalley,kimura,jablonski,haun,gourley,gilligan,croy,cotto,cargill,burwell,burgett,buckman,booher,adorno,wrenn,whittemore,urias,szabo,sayles,saiz,rutland,rael,pharr,pelkey,ogrady,nickell,musick,moats,mather,massa,kirschner,kieffer,kellar,hendershot,gott,godoy,gadson,furtado,fiedler,erskine,dutcher,dever,daggett,chevalier,brake,ballesteros,amerson,wingo,waldon,trott,silvey,showers,schlegel,ritz,pepin,pelayo,parsley,palermo,moorehead,mchale,lett,kocher,kilburn,iglesias,humble,hulbert,huckaby,hartford,hardiman,gurney,grigg,grasso,goings,fillmore,farber,depew,dandrea,cowen,covarrubias,burrus,bracy,ardoin,thompkins,standley,radcliffe,pohl,persaud,parenteau,pabon,newson,newhouse,napolitano,mulcahy,malave,keim,hooten,hernandes,heffernan,hearne,greenleaf,glick,fuhrman,fetter,faria,dishman,dickenson,crites,criss,clapper,chenault,castor,casto,bugg,bove,bonney,anderton,allgood,alderson,woodman,warrick,toomey,tooley,tarrant,summerville,stebbins,sokol,searles,schutz,schumann,scheer,remillard,raper,proulx,palmore,monroy,messier,melo,melanson,mashburn,manzano,lussier,jenks,huneycutt,hartwig,grimsley,fulk,fielding,fidler,engstrom,eldred,dantzler,crandell,calder,brumley,breton,brann,bramlett,boykins,bianco,bancroft,almaraz,alcantar,whitmer,whitener,welton,vineyard,rahn,paquin,mizell,mcmillin,mckean,marston,maciel,lundquist,liggins,lampkin,kranz,koski,kirkham,jiminez,hazzard,harrod,graziano,grammer,gendron,garrido,fordham,englert,dryden,demoss,deluna,crabb,comeau,brummett,blume,benally,wessel,vanbuskirk,thorson,stumpf,stockwell,reams,radtke,rackley,pelton,niemi,newland,nelsen,morrissette,miramontes,mcginley,mccluskey,marchant,luevano,lampe,lail,jeffcoat,infante,hinman,gaona,eady,desmarais,decosta,dansby,cisco,choe,breckenridge,bostwick,borg,bianchi,alberts,wilkie,whorton,vargo,tait,soucy,schuman,ousley,mumford,lippert,leath,lavergne,laliberte,kirksey,kenner,johnsen,izzo,hiles,gullett,greenwell,gaspar,galbreath,gaitan,ericson,delapaz,croom,cottingham,clift,bushnell,bice,beason,arrowood,waring,voorhees,truax,shreve,shockey,schatz,sandifer,rubino,rozier,roseberry,pieper,peden,nester,nave,murphey,malinowski,macgregor,lafrance,kunkle,kirkman,hipp,hasty,haddix,gervais,gerdes,gamache,fouts,fitzwater,dillingham,deming,deanda,cedeno,cannady,burson,bouldin,arceneaux,woodhouse,whitford,wescott,welty,weigel,torgerson,toms,surber,sunderland,sterner,setzer,riojas,pumphrey,puga,metts,mcgarry,mccandless,magill,lupo,loveland,llamas,leclerc,koons,kahler,huss,holbert,heintz,haupt,grimmett,gaskill,ellingson,dorr,dingess,deweese,desilva,crossley,cordeiro,converse,conde,caldera,cairns,burmeister,burkhalter,brawner,bott,youngs,vierra,valladares,shrum,shropshire,sevilla,rusk,rodarte,pedraza,nino,merino,mcminn,markle,mapp,lajoie,koerner,kittrell,kato,hyder,hollifield,heiser,hazlett,greenwald,fant,eldredge,dreher,delafuente,cravens,claypool,beecher,aronson,alanis,worthen,wojcik,winger,whitacre,valverde,valdivia,troupe,thrower,swindell,suttles,stroman,spires,slate,shealy,sarver,sartin,sadowski,rondeau,rolon,rascon,priddy,paulino,nolte,munroe,molloy,mciver,lykins,loggins,lenoir,klotz,kempf,hupp,hollowell,hollander,haynie,harkness,harker,gottlieb,frith,eddins,driskell,doggett,densmore,charette,cassady,byrum,burcham,buggs,benn,whitted,warrington,vandusen,vaillancourt,steger,siebert,scofield,quirk,purser,plumb,orcutt,nordstrom,mosely,michalski,mcphail,mcdavid,mccraw,marchese,mannino,lefevre,largent,lanza,kress,isham,hunsaker,hoch,hildebrandt,guarino,grijalva,graybill,fick,ewell,ewald,cusick,crumley,coston,cathcart,carruthers,bullington,bowes,blain,blackford,barboza,yingling,wert,weiland,varga,silverstein,sievers,shuster,shumway,runnels,rumsey,renfroe,provencher,polley,mohler,middlebrooks,kutz,koster,groth,glidden,fazio,deen,chipman,chenoweth,champlin,cedillo,carrero,carmody,buckles,brien,boutin,bosch,berkowitz,altamirano,wilfong,wiegand,waites,truesdale,toussaint,tobey,tedder,steelman,sirois,schnell,robichaud,richburg,plumley,pizarro,piercy,ortego,oberg,neace,mertz,mcnew,matta,lapp,lair,kibler,howlett,hollister,hofer,hatten,hagler,falgoust,engelhardt,eberle,dombrowski,dinsmore,daye,casares,braud,balch,autrey,wendel,tyndall,strobel,stoltz,spinelli,serrato,reber,rathbone,palomino,nickels,mayle,mathers,mach,loeffler,littrell,levinson,leong,lemire,lejeune,lazo,lasley,koller,kennard,hoelscher,hintz,hagerman,greaves,fore,eudy,engler,corrales,cordes,brunet,bidwell,bennet,tyrrell,tharpe,swinton,stribling,southworth,sisneros,savoie,samons,ruvalcaba,ries,ramer,omara,mosqueda,millar,mcpeak,macomber,luckey,litton,lehr,lavin,hubbs,hoard,hibbs,hagans,futrell,exum,evenson,culler,carbaugh,callen,brashear,bloomer,blakeney,bigler,addington,woodford,unruh,tolentino,sumrall,stgermain,smock,sherer,rayner,pooler,oquinn,nero,mcglothlin,linden,kowal,kerrigan,ibrahim,harvell,hanrahan,goodall,geist,fussell,fung,ferebee,eley,eggert,dorsett,dingman,destefano,colucci,clemmer,burnell,brumbaugh,boddie,berryhill,avelar,alcantara,winder,winchell,vandenberg,trotman,thurber,thibeault,stlouis,stilwell,sperling,shattuck,sarmiento,ruppert,rumph,renaud,randazzo,rademacher,quiles,pearman,palomo,mercurio,lowrey,lindeman,lawlor,larosa,lander,labrecque,hovis,holifield,henninger,hawkes,hartfield,hann,hague,genovese,garrick,fudge,frink,eddings,dinh,cribbs,calvillo,bunton,brodeur,bolding,blanding,agosto,zahn,wiener,trussell,tello,teixeira,speck,sharma,shanklin,sealy,scanlan,santamaria,roundy,robichaux,ringer,rigney,prevost,polson,nord,moxley,medford,mccaslin,mcardle,macarthur,lewin,lasher,ketcham,keiser,heine,hackworth,grose,grizzle,gillman,gartner,frazee,fleury,edson,edmonson,derry,cronk,conant,burress,burgin,broom,brockington,bolick,boger,birchfield,billington,baily,bahena,armbruster,anson,yoho,wilcher,tinney,timberlake,thielen,sutphin,stultz,sikora,serra,schulman,scheffler,santillan,rego,preciado,pinkham,mickle,lomas,lizotte,lent,kellerman,keil,johanson,hernadez,hartsfield,haber,gorski,farkas,eberhardt,duquette,delano,cropper,cozart,cockerham,chamblee,cartagena,cahoon,buzzell,brister,brewton,blackshear,benfield,aston,ashburn,arruda,wetmore,weise,vaccaro,tucci,sudduth,stromberg,stoops,showalter,shears,runion,rowden,rosenblum,riffle,renfrow,peres,obryant,leftwich,lark,landeros,kistler,killough,kerley,kastner,hoggard,hartung,guertin,govan,gatling,gailey,fullmer,fulford,flatt,esquibel,endicott,edmiston,edelstein,dufresne,dressler,dickman,chee,busse,bonnett,berard,yoshida,velarde,veach,vanhouten,vachon,tolson,tolman,tennyson,stites,soler,shutt,ruggles,rhone,pegues,neese,muro,moncrief,mefford,mcphee,mcmorris,mceachern,mcclurg,mansour,mader,leija,lecompte,lafountain,labrie,jaquez,heald,hash,hartle,gainer,frisby,farina,eidson,edgerton,dyke,durrett,duhon,cuomo,cobos,cervantez,bybee,brockway,borowski,binion,beery,arguello,amaro,acton,yuen,winton,wigfall,weekley,vidrine,vannoy,tardiff,shoop,shilling,schick,safford,prendergast,pilgrim,pellerin,osuna,nissen,nalley,moller,messner,messick,merrifield,mcguinness,matherly,marcano,mahone,lemos,lebrun,jara,hoffer,herren,hecker,haws,haug,gwin,gober,gilliard,fredette,favela,echeverria,downer,donofrio,desrochers,crozier,corson,bechtold,argueta,aparicio,zamudio,westover,westerman,utter,troyer,thies,tapley,slavin,shirk,sandler,roop,rimmer,raymer,radcliff,otten,moorer,millet,mckibben,mccutchen,mcavoy,mcadoo,mayorga,mastin,martineau,marek,madore,leflore,kroeger,kennon,jimerson,hostetter,hornback,hendley,hance,guardado,granado,gowen,goodale,flinn,fleetwood,fitz,durkee,duprey,dipietro,dilley,clyburn,brawley,beckley,arana,weatherby,vollmer,vestal,tunnell,trigg,tingle,takahashi,sweatt,storer,snapp,shiver,rooker,rathbun,poisson,perrine,perri,parmer,parke,pare,papa,palmieri,midkiff,mecham,mccomas,mcalpine,lovelady,lillard,lally,knopp,kile,kiger,haile,gupta,goldsberry,gilreath,fulks,friesen,franzen,flack,findlay,ferland,dreyer,dore,dennard,deckard,debose,crim,coulombe,chancey,cantor,branton,bissell,barns,woolard,witham,wasserman,spiegel,shoffner,scholz,ruch,rossman,petry,palacio,paez,neary,mortenson,millsap,miele,menke,mckim,mcanally,martines,lemley,larochelle,klaus,klatt,kaufmann,kapp,helmer,hedge,halloran,glisson,frechette,fontana,eagan,distefano,danley,creekmore,chartier,chaffee,carillo,burg,bolinger,berkley,benz,basso,bash,zelaya,woodring,witkowski,wilmot,wilkens,wieland,verdugo,urquhart,tsai,timms,swiger,swaim,sussman,pires,molnar,mcatee,lowder,loos,linker,landes,kingery,hufford,higa,hendren,hammack,hamann,gillam,gerhardt,edelman,delk,deans,curl,constantine,cleaver,claar,casiano,carruth,carlyle,brophy,bolanos,bibbs,bessette,beggs,baugher,bartel,averill,andresen,amin,adames,valente,turnbow,swink,sublett,stroh,stringfellow,ridgway,pugliese,poteat,ohare,neubauer,murchison,mingo,lemmons,kwon,kellam,kean,jarmon,hyden,hudak,hollinger,henkel,hemingway,hasson,hansel,halter,haire,ginsberg,gillispie,fogel,flory,etter,elledge,eckman,deas,currin,crafton,coomer,colter,claxton,bulter,braddock,bowyer,binns,bellows,baskerville,barros,ansley,woolf,wight,waldman,wadley,tull,trull,tesch,stouffer,stadler,slay,shubert,sedillo,santacruz,reinke,poynter,neri,neale,mowry,moralez,monger,mitchum,merryman,manion,macdougall,litchfield,levitt,lepage,lasalle,khoury,kavanagh,karns,ivie,huebner,hodgkins,halpin,garica,eversole,dutra,dunagan,duffey,dillman,dillion,deville,dearborn,damato,courson,coulson,burdine,bousquet,bonin,bish,atencio,westbrooks,wages,vaca,toner,tillis,swett,struble,stanfill,solorzano,slusher,sipple,silvas,shults,schexnayder,saez,rodas,rager,pulver,penton,paniagua,meneses,mcfarlin,mcauley,matz,maloy,magruder,lohman,landa,lacombe,jaimes,holzer,holst,heil,hackler,grundy,gilkey,farnham,durfee,dunton,dunston,duda,dews,craver,corriveau,conwell,colella,chambless,bremer,boutte,bourassa,blaisdell,backman,babineaux,audette,alleman,towner,taveras,tarango,sullins,suiter,stallard,solberg,schlueter,poulos,pimental,owsley,okelley,moffatt,metcalfe,meekins,medellin,mcglynn,mccowan,marriott,marable,lennox,lamoureux,koss,kerby,karp,isenberg,howze,hockenberry,highsmith,hallmark,gusman,greeley,giddings,gaudet,gallup,fleenor,eicher,edington,dimaggio,dement,demello,decastro,bushman,brundage,brooker,bourg,blackstock,bergmann,beaton,banister,argo,appling,wortman,watterson,villalpando,tillotson,tighe,sundberg,sternberg,stamey,shipe,seeger,scarberry,sattler,sain,rothstein,poteet,plowman,pettiford,penland,partain,pankey,oyler,ogletree,ogburn,moton,merkel,lucier,lakey,kratz,kinser,kershaw,josephson,imhoff,hendry,hammon,frisbie,frawley,fraga,forester,eskew,emmert,drennan,doyon,dandridge,cawley,carvajal,bracey,belisle,batey,ahner,wysocki,weiser,veliz,tincher,sansone,sankey,sandstrom,rohrer,risner,pridemore,pfeffer,persinger,peery,oubre,nowicki,musgrave,murdoch,mullinax,mccary,mathieu,livengood,kyser,klink,kimes,kellner,kavanaugh,kasten,imes,hoey,hinshaw,hake,gurule,grube,grillo,geter,gatto,garver,garretson,farwell,eiland,dunford,decarlo,corso,colman,collard,cleghorn,chasteen,cavender,carlile,calvo,byerly,brogdon,broadwater,breault,bono,bergin,behr,ballenger,amick,tamez,stiffler,steinke,simmon,shankle,schaller,salmons,sackett,saad,rideout,ratcliffe,ranson,plascencia,petterson,olszewski,olney,olguin,nilsson,nevels,morelli,montiel,monge,michaelson,mertens,mcchesney,mcalpin,mathewson,loudermilk,lineberry,liggett,kinlaw,kight,jost,hereford,hardeman,halpern,halliday,hafer,gaul,friel,freitag,forsberg,evangelista,doering,dicarlo,dendy,delp,deguzman,dameron,curtiss,cosper,cauthen,bradberry,bouton,bonnell,bixby,bieber,beveridge,bedwell,barhorst,bannon,baltazar,baier,ayotte,attaway,arenas,abrego,turgeon,tunstall,thaxton,tenorio,stotts,sthilaire,shedd,seabolt,scalf,salyers,ruhl,rowlett,robinett,pfister,perlman,pepe,parkman,nunnally,norvell,napper,modlin,mckellar,mcclean,mascarenas,leibowitz,ledezma,kuhlman,kobayashi,hunley,holmquist,hinkley,hazard,hartsell,gribble,gravely,fifield,eliason,doak,crossland,carleton,bridgeman,bojorquez,boggess,auten,woosley,whiteley,wexler,twomey,tullis,townley,standridge,santoyo,rueda,riendeau,revell,pless,ottinger,nigro,nickles,mulvey,menefee,mcshane,mcloughlin,mckinzie,markey,lockridge,lipsey,knisley,knepper,kitts,kiel,jinks,hathcock,godin,gallego,fikes,fecteau,estabrook,ellinger,dunlop,dudek,countryman,chauvin,chatham,bullins,brownfield,boughton,bloodworth,bibb,baucom,barbieri,aubin,armitage,alessi,absher,abbate,zito,woolery,wiggs,wacker,tynes,tolle,telles,tarter,swarey,strode,stockdale,stalnaker,spina,schiff,saari,risley,rameriz,rakes,pettaway,penner,paulus,palladino,omeara,montelongo,melnick,mehta,mcgary,mccourt,mccollough,marchetti,manzanares,lowther,leiva,lauderdale,lafontaine,kowalczyk,knighton,joubert,jaworski,huth,hurdle,housley,hackman,gulick,gordy,gilstrap,gehrke,gebhart,gaudette,foxworth,endres,dunkle,cimino,caddell,brauer,braley,bodine,blackmore,belden,backer,ayer,andress,wisner,vuong,valliere,twigg,tavarez,strahan,steib,staub,sowder,seiber,schutt,scharf,schade,rodriques,risinger,renshaw,rahman,presnell,piatt,nieman,nevins,mcilwain,mcgaha,mccully,mccomb,massengale,macedo,lesher,kearse,jauregui,husted,hudnall,holmberg,hertel,hardie,glidewell,frausto,fassett,dalessandro,dahlgren,corum,constantino,conlin,colquitt,colombo,claycomb,cardin,buller,boney,bocanegra,biggers,benedetto,araiza,andino,albin,zorn,werth,weisman,walley,vanegas,ulibarri,towe,tedford,teasley,suttle,steffens,stcyr,squire,singley,sifuentes,shuck,schram,sass,rieger,ridenhour,rickert,richerson,rayborn,rabe,raab,pendley,pastore,ordway,moynihan,mellott,mckissick,mcgann,mccready,mauney,marrufo,lenhart,lazar,lafave,keele,kautz,jardine,jahnke,jacobo,hord,hardcastle,hageman,giglio,gehring,fortson,duque,duplessis,dicken,derosier,deitz,dalessio,cram,castleman,candelario,callison,caceres,bozarth,biles,bejarano,bashaw,avina,armentrout,alverez,acord,waterhouse,vereen,vanlandingham,strawser,shotwell,severance,seltzer,schoonmaker,schock,schaub,schaffner,roeder,rodrigez,riffe,rasberry,rancourt,railey,quade,pursley,prouty,perdomo,oxley,osterman,nickens,murphree,mounts,merida,maus,mattern,masse,martinelli,mangan,lutes,ludwick,loney,laureano,lasater,knighten,kissinger,kimsey,kessinger,honea,hollingshead,hockett,heyer,heron,gurrola,gove,glasscock,gillett,galan,featherstone,eckhardt,duron,dunson,dasher,culbreth,cowden,cowans,claypoole,churchwell,chabot,caviness,cater,caston,callan,byington,burkey,boden,beckford,atwater,archambault,alvey,alsup,whisenant,weese,voyles,verret,tsang,tessier,sweitzer,sherwin,shaughnessy,revis,remy,prine,philpott,peavy,paynter,parmenter,ovalle,offutt,nightingale,newlin,nakano,myatt,muth,mohan,mcmillon,mccarley,mccaleb,maxson,marinelli,maley,liston,letendre,kain,huntsman,hirst,hagerty,gulledge,greenway,grajeda,gorton,goines,gittens,frederickson,fanelli,embree,eichelberger,dunkin,dixson,dillow,defelice,chumley,burleigh,borkowski,binette,biggerstaff,berglund,beller,audet,arbuckle,allain,alfano,youngman,wittman,weintraub,vanzant,vaden,twitty,stollings,standifer,sines,shope,scalise,saville,posada,pisano,otte,nolasco,mier,merkle,mendiola,melcher,mejias,mcmurry,mccalla,markowitz,manis,mallette,macfarlane,lough,looper,landin,kittle,kinsella,kinnard,hobart,helman,hellman,hartsock,halford,hage,gordan,glasser,gayton,gattis,gastelum,gaspard,frisch,fitzhugh,eckstein,eberly,dowden,despain,crumpler,crotty,cornelison,chouinard,chamness,catlin,cann,bumgardner,budde,branum,bradfield,braddy,borst,birdwell,bazan,banas,bade,arango,ahearn,addis,zumwalt,wurth,wilk,widener,wagstaff,urrutia,terwilliger,tart,steinman,staats,sloat,rives,riggle,revels,reichard,prickett,poff,pitzer,petro,pell,northrup,nicks,moline,mielke,maynor,mallon,magness,lingle,lindell,lieb,lesko,lebeau,lammers,lafond,kiernan,ketron,jurado,holmgren,hilburn,hayashi,hashimoto,harbaugh,guillot,gard,froehlich,feinberg,falco,dufour,drees,doney,diep,delao,daves,dail,crowson,coss,congdon,carner,camarena,butterworth,burlingame,bouffard,bloch,bilyeu,barta,bakke,baillargeon,avent,aquilar,zeringue,yarber,wolfson,vogler,voelker,truss,troxell,thrift,strouse,spielman,sistrunk,sevigny,schuller,schaaf,ruffner,routh,roseman,ricciardi,peraza,pegram,overturf,olander,odaniel,millner,melchor,maroney,machuca,macaluso,livesay,layfield,laskowski,kwiatkowski,kilby,hovey,heywood,hayman,havard,harville,haigh,hagood,grieco,glassman,gebhardt,fleischer,fann,elson,eccles,cunha,crumb,blakley,bardwell,abshire,woodham,wines,welter,wargo,varnado,tutt,traynor,swaney,stricker,stoffel,stambaugh,sickler,shackleford,selman,seaver,sansom,sanmiguel,royston,rourke,rockett,rioux,puleo,pitchford,nardi,mulvaney,middaugh,malek,leos,lathan,kujawa,kimbro,killebrew,houlihan,hinckley,herod,hepler,hamner,hammel,hallowell,gonsalez,gingerich,gambill,funkhouser,fricke,fewell,falkner,endsley,dulin,drennen,deaver,dambrosio,chadwell,castanon,burkes,brune,brisco,brinker,bowker,boldt,berner,beaumont,beaird,bazemore,barrick,albano,younts,wunderlich,weidman,vanness,toland,theobald,stickler,steiger,stanger,spies,spector,sollars,smedley,seibel,scoville,saito,rummel,rowles,rouleau,roos,rogan,roemer,ream,raya,purkey,priester,perreira,penick,paulin,parkins,overcash,oleson,neves,muldrow,minard,midgett,michalak,melgar,mcentire,mcauliffe,marte,lydon,lindholm,leyba,langevin,lagasse,lafayette,kesler,kelton,kaminsky,jaggers,humbert,huck,howarth,hinrichs,higley,gupton,guimond,gravois,giguere,fretwell,fontes,feeley,faucher,eichhorn,ecker,earp,dole,dinger,derryberry,demars,deel,copenhaver,collinsworth,colangelo,cloyd,claiborne,caulfield,carlsen,calzada,caffey,broadus,brenneman,bouie,bodnar,blaney,blanc,beltz,behling,barahona,yockey,winkle,windom,wimer,villatoro,trexler,teran,taliaferro,sydnor,swinson,snelling,smtih,simonton,simoneaux,simoneau,sherrer,seavey,scheel,rushton,rupe,ruano,rippy,reiner,reiff,rabinowitz,quach,penley,odle,nock,minnich,mckown,mccarver,mcandrew,longley,laux,lamothe,lafreniere,kropp,krick,kates,jepson,huie,howse,howie,henriques,haydon,haught,hatter,hartzog,harkey,grimaldo,goshorn,gormley,gluck,gilroy,gillenwater,giffin,fluker,feder,eyre,eshelman,eakins,detwiler,delrosario,davisson,catalan,canning,calton,brammer,botelho,blakney,bartell,averett,askins,aker,witmer,winkelman,widmer,whittier,weitzel,wardell,wagers,ullman,tupper,tingley,tilghman,talton,simard,seda,scheller,sala,rundell,rost,ribeiro,rabideau,primm,pinon,peart,ostrom,ober,nystrom,nussbaum,naughton,murr,moorhead,monti,monteiro,melson,meissner,mclin,mcgruder,marotta,makowski,majewski,madewell,lunt,lukens,leininger,lebel,lakin,kepler,jaques,hunnicutt,hungerford,hoopes,hertz,heins,halliburton,grosso,gravitt,glasper,gallman,gallaway,funke,fulbright,falgout,eakin,dostie,dorado,dewberry,derose,cutshall,crampton,costanzo,colletti,cloninger,claytor,chiang,campagna,burd,brokaw,broaddus,bretz,brainard,binford,bilbrey,alpert,aitken,ahlers,zajac,woolfolk,witten,windle,wayland,tramel,tittle,talavera,suter,straley,specht,sommerville,soloman,skeens,sigman,sibert,shavers,schuck,schmit,sartain,sabol,rosenblatt,rollo,rashid,rabb,polston,nyberg,northrop,navarra,muldoon,mikesell,mcdougald,mcburney,mariscal,lozier,lingerfelt,legere,latour,lagunas,lacour,kurth,killen,kiely,kayser,kahle,isley,huertas,hower,hinz,haugh,gumm,galicia,fortunato,flake,dunleavy,duggins,doby,digiovanni,devaney,deltoro,cribb,corpuz,coronel,coen,charbonneau,caine,burchette,blakey,blakemore,bergquist,beene,beaudette,bayles,ballance,bakker,bailes,asberry,arwood,zucker,willman,whitesell,wald,walcott,vancleave,trump,strasser,simas,shick,schleicher,schaal,saleh,rotz,resnick,rainer,partee,ollis,oller,oday,noles,munday,mong,millican,merwin,mazzola,mansell,magallanes,llanes,lewellen,lepore,kisner,keesee,jeanlouis,ingham,hornbeck,hawn,hartz,harber,haffner,gutshall,guth,grays,gowan,finlay,finkelstein,eyler,enloe,dungan,diez,dearman,cull,crosson,chronister,cassity,campion,callihan,butz,breazeale,blumenthal,berkey,batty,batton,arvizu,alderete,aldana,albaugh,abernethy,wolter,wille,tweed,tollefson,thomasson,teter,testerman,sproul,spates,southwick,soukup,skelly,senter,sealey,sawicki,sargeant,rossiter,rosemond,repp,pifer,ormsby,nickelson,naumann,morabito,monzon,millsaps,millen,mcelrath,marcoux,mantooth,madson,macneil,mackinnon,louque,leister,lampley,kushner,krouse,kirwan,jessee,janson,jahn,jacquez,islas,hutt,holladay,hillyer,hepburn,hensel,harrold,gingrich,geis,gales,fults,finnell,ferri,featherston,epley,ebersole,eames,dunigan,drye,dismuke,devaughn,delorenzo,damiano,confer,collum,clower,clow,claussen,clack,caylor,cawthon,casias,carreno,bluhm,bingaman,bewley,belew,beckner,auld,amey,wolfenbarger,wilkey,wicklund,waltman,villalba,valero,valdovinos,ullrich,tyus,twyman,trost,tardif,tanguay,stripling,steinbach,shumpert,sasaki,sappington,sandusky,reinhold,reinert,quijano,placencia,pinkard,phinney,perrotta,pernell,parrett,oxendine,owensby,orman,nuno,mori,mcroberts,mcneese,mckamey,mccullum,markel,mardis,maines,lueck,lubin,lefler,leffler,larios,labarbera,kershner,josey,jeanbaptiste,izaguirre,hermosillo,haviland,hartshorn,hafner,ginter,getty,franck,fiske,dufrene,doody,davie,dangerfield,dahlberg,cuthbertson,crone,coffelt,chidester,chesson,cauley,caudell,cantara,campo,caines,bullis,bucci,brochu,bogard,bickerstaff,benning,arzola,antonelli,adkinson,zellers,wulf,worsley,woolridge,whitton,westerfield,walczak,vassar,truett,trueblood,trawick,townsley,topping,tobar,telford,steverson,stagg,sitton,sill,sergent,schoenfeld,sarabia,rutkowski,rubenstein,rigdon,prentiss,pomerleau,plumlee,philbrick,patnode,oloughlin,obregon,nuss,morell,mikell,mele,mcinerney,mcguigan,mcbrayer,lollar,kuehl,kinzer,kamp,joplin,jacobi,howells,holstein,hedden,hassler,harty,halle,greig,gouge,goodrum,gerhart,geier,geddes,gast,forehand,ferree,fendley,feltner,esqueda,encarnacion,eichler,egger,edmundson,eatmon,doud,donohoe,donelson,dilorenzo,digiacomo,diggins,delozier,dejong,danford,crippen,coppage,cogswell,clardy,cioffi,cabe,brunette,bresnahan,blomquist,blackstone,biller,bevis,bevan,bethune,benbow,baty,basinger,balcom,andes,aman,aguero,adkisson,yandell,wilds,whisenhunt,weigand,weeden,voight,villar,trottier,tillett,suazo,setser,scurry,schuh,schreck,schauer,samora,roane,rinker,reimers,ratchford,popovich,parkin,natal,melville,mcbryde,magdaleno,loehr,lockman,lingo,leduc,larocca,lamere,laclair,krall,korte,koger,jalbert,hughs,higbee,henton,heaney,haith,gump,greeson,goodloe,gholston,gasper,gagliardi,fregoso,farthing,fabrizio,ensor,elswick,elgin,eklund,eaddy,drouin,dorton,dizon,derouen,deherrera,davy,dampier,cullum,culley,cowgill,cardoso,cardinale,brodsky,broadbent,brimmer,briceno,branscum,bolyard,boley,bennington,beadle,baur,ballentine,azure,aultman,arciniega,aguila,aceves,yepez,woodrum,wethington,weissman,veloz,trusty,troup,trammel,tarpley,stivers,steck,sprayberry,spraggins,spitler,spiers,sohn,seagraves,schiffman,rudnick,rizo,riccio,rennie,quackenbush,puma,plott,pearcy,parada,paiz,munford,moskowitz,mease,mcnary,mccusker,lozoya,longmire,loesch,lasky,kuhlmann,krieg,koziol,kowalewski,konrad,kindle,jowers,jolin,jaco,horgan,hine,hileman,hepner,heise,heady,hawkinson,hannigan,haberman,guilford,grimaldi,garton,gagliano,fruge,follett,fiscus,ferretti,ebner,easterday,eanes,dirks,dimarco,depalma,deforest,cruce,craighead,christner,candler,cadwell,burchell,buettner,brinton,brazier,brannen,brame,bova,bomar,blakeslee,belknap,bangs,balzer,athey,armes,alvis,alverson,alvardo,yeung,wheelock,westlund,wessels,volkman,threadgill,thelen,tague,symons,swinford,sturtevant,straka,stier,stagner,segarra,seawright,rutan,roux,ringler,riker,ramsdell,quattlebaum,purifoy,poulson,permenter,peloquin,pasley,pagel,osman,obannon,nygaard,newcomer,munos,motta,meadors,mcquiston,mcniel,mcmann,mccrae,mayne,matte,legault,lechner,kucera,krohn,kratzer,koopman,jeske,horrocks,hock,hibbler,hesson,hersh,harvin,halvorsen,griner,grindle,gladstone,garofalo,frampton,forbis,eddington,diorio,dingus,dewar,desalvo,curcio,creasy,cortese,cordoba,connally,cluff,cascio,capuano,canaday,calabro,bussard,brayton,borja,bigley,arnone,arguelles,acuff,zamarripa,wooton,widner,wideman,threatt,thiele,templin,teeters,synder,swint,swick,sturges,stogner,stedman,spratt,siegfried,shetler,scull,savino,sather,rothwell,rook,rone,rhee,quevedo,privett,pouliot,poche,pickel,petrillo,pellegrini,peaslee,partlow,otey,nunnery,morelock,morello,meunier,messinger,mckie,mccubbin,mccarron,lerch,lavine,laverty,lariviere,lamkin,kugler,krol,kissel,keeter,hubble,hickox,hetzel,hayner,hagy,hadlock,groh,gottschalk,goodsell,gassaway,garrard,galligan,firth,fenderson,feinstein,etienne,engleman,emrick,ellender,drews,doiron,degraw,deegan,dart,crissman,corr,cookson,coil,cleaves,charest,chapple,chaparro,castano,carpio,byer,bufford,bridgewater,bridgers,brandes,borrero,bonanno,aube,ancheta,abarca,abad,wooster,wimbush,willhite,willams,wigley,weisberg,wardlaw,vigue,vanhook,unknow,torre,tasker,tarbox,strachan,slover,shamblin,semple,schuyler,schrimsher,sayer,salzman,rubalcava,riles,reneau,reichel,rayfield,rabon,pyatt,prindle,poss,polito,plemmons,pesce,perrault,pereyra,ostrowski,nilsen,niemeyer,munsey,mundell,moncada,miceli,meader,mcmasters,mckeehan,matsumoto,marron,marden,lizarraga,lingenfelter,lewallen,langan,lamanna,kovac,kinsler,kephart,keown,kass,kammerer,jeffreys,hysell,hosmer,hardnett,hanner,guyette,greening,glazer,ginder,fromm,fluellen,finkle,fessler,essary,eisele,duren,dittmer,crochet,cosentino,cogan,coelho,cavin,carrizales,campuzano,brough,bopp,bookman,bobb,blouin,beesley,battista,bascom,bakken,badgett,arneson,anselmo,albino,ahumada,woodyard,wolters,wireman,willison,warman,waldrup,vowell,vantassel,twombly,toomer,tennison,teets,tedeschi,swanner,stutz,stelly,sheehy,schermerhorn,scala,sandidge,salters,salo,saechao,roseboro,rolle,ressler,renz,renn,redford,raposa,rainbolt,pelfrey,orndorff,oney,nolin,nimmons,nardone,myhre,morman,menjivar,mcglone,mccammon,maxon,marciano,manus,lowrance,lorenzen,lonergan,lollis,littles,lindahl,lamas,lach,kuster,krawczyk,knuth,knecht,kirkendall,keitt,keever,kantor,jarboe,hoye,houchens,holter,holsinger,hickok,helwig,helgeson,hassett,harner,hamman,hames,hadfield,goree,goldfarb,gaughan,gaudreau,gantz,gallion,frady,foti,flesher,ferrin,faught,engram,donegan,desouza,degroot,cutright,crowl,criner,coan,clinkscales,chewning,chavira,catchings,carlock,bulger,buenrostro,bramblett,brack,boulware,bookout,bitner,birt,baranowski,baisden,allmon,acklin,yoakum,wilbourn,whisler,weinberger,washer,vasques,vanzandt,vanatta,troxler,tomes,tindle,tims,throckmorton,thach,stpeter,stlaurent,stenson,spry,spitz,songer,snavely,shroyer,shortridge,shenk,sevier,seabrook,scrivner,saltzman,rosenberry,rockwood,robeson,roan,reiser,ramires,raber,posner,popham,piotrowski,pinard,peterkin,pelham,peiffer,peay,nadler,musso,millett,mestas,mcgowen,marques,marasco,manriquez,manos,mair,lipps,leiker,krumm,knorr,kinslow,kessel,kendricks,kelm,irick,ickes,hurlburt,horta,hoekstra,heuer,helmuth,heatherly,hampson,hagar,haga,greenlaw,grau,godbey,gingras,gillies,gibb,gayden,gauvin,garrow,fontanez,florio,finke,fasano,ezzell,ewers,eveland,eckenrode,duclos,drumm,dimmick,delancey,defazio,dashiell,cusack,crowther,crigger,cray,coolidge,coldiron,cleland,chalfant,cassel,camire,cabrales,broomfield,brittingham,brisson,brickey,braziel,brazell,bragdon,boulanger,boman,bohannan,beem,barre,azar,ashbaugh,armistead,almazan,adamski,zendejas,winburn,willaims,wilhoit,westberry,wentzel,wendling,visser,vanscoy,vankirk,vallee,tweedy,thornberry,sweeny,spradling,spano,smelser,shim,sechrist,schall,scaife,rugg,rothrock,roesler,riehl,ridings,render,ransdell,radke,pinero,petree,pendergast,peluso,pecoraro,pascoe,panek,oshiro,navarrette,murguia,moores,moberg,michaelis,mcwhirter,mcsweeney,mcquade,mccay,mauk,mariani,marceau,mandeville,maeda,lunde,ludlow,loeb,lindo,linderman,leveille,leith,larock,lambrecht,kulp,kinsley,kimberlin,kesterson,hoyos,helfrich,hanke,grisby,goyette,gouveia,glazier,gile,gerena,gelinas,gasaway,funches,fujimoto,flynt,fenske,fellers,fehr,eslinger,escalera,enciso,duley,dittman,dineen,diller,devault,collings,clymer,clowers,chavers,charland,castorena,castello,camargo,bunce,bullen,boyes,borchers,borchardt,birnbaum,birdsall,billman,benites,bankhead,ange,ammerman,adkison,winegar,wickman,warr,warnke,villeneuve,veasey,vassallo,vannatta,vadnais,twilley,towery,tomblin,tippett,theiss,talkington,talamantes,swart,swanger,streit,stines,stabler,spurling,sobel,sine,simmers,shippy,shiflett,shearin,sauter,sanderlin,rusch,runkle,ruckman,rorie,roesch,richert,rehm,randel,ragin,quesenberry,puentes,plyler,plotkin,paugh,oshaughnessy,ohalloran,norsworthy,niemann,nader,moorefield,mooneyham,modica,miyamoto,mickel,mebane,mckinnie,mazurek,mancilla,lukas,lovins,loughlin,lotz,lindsley,liddle,levan,lederman,leclaire,lasseter,lapoint,lamoreaux,lafollette,kubiak,kirtley,keffer,kaczmarek,housman,hiers,hibbert,herrod,hegarty,hathorn,greenhaw,grafton,govea,futch,furst,franko,forcier,foran,flickinger,fairfield,eure,emrich,embrey,edgington,ecklund,eckard,durante,deyo,delvecchio,dade,currey,creswell,cottrill,casavant,cartier,cargile,capel,cammack,calfee,burse,burruss,brust,brousseau,bridwell,braaten,borkholder,bloomquist,bjork,bartelt,amburgey,yeary,whitefield,vinyard,vanvalkenburg,twitchell,timmins,tapper,stringham,starcher,spotts,slaugh,simonsen,sheffer,sequeira,rosati,rhymes,quint,pollak,peirce,patillo,parkerson,paiva,nilson,nevin,narcisse,mitton,merriam,merced,meiners,mckain,mcelveen,mcbeth,marsden,marez,manke,mahurin,mabrey,luper,krull,hunsicker,hornbuckle,holtzclaw,hinnant,heston,hering,hemenway,hegwood,hearns,halterman,guiterrez,grote,granillo,grainger,glasco,gilder,garren,garlock,garey,fryar,fredricks,fraizer,foshee,ferrel,felty,everitt,evens,esser,elkin,eberhart,durso,duguay,driskill,doster,dewall,deveau,demps,demaio,delreal,deleo,darrah,cumberbatch,culberson,cranmer,cordle,colgan,chesley,cavallo,castellon,castelli,carreras,carnell,carlucci,bontrager,blumberg,blasingame,becton,artrip,andujar,alkire,alder,zukowski,zuckerman,wroblewski,wrigley,woodside,wigginton,westman,westgate,werts,washam,wardlow,walser,waiters,tadlock,stringfield,stimpson,stickley,standish,spurlin,spindler,speller,spaeth,sotomayor,sluder,shryock,shepardson,shatley,scannell,santistevan,rosner,resto,reinhard,rathburn,prisco,poulsen,pinney,phares,pennock,pastrana,oviedo,ostler,nauman,mulford,moise,moberly,mirabal,metoyer,metheny,mentzer,meldrum,mcinturff,mcelyea,mcdougle,massaro,lumpkins,loveday,lofgren,lirette,lesperance,lefkowitz,ledger,lauzon,lachapelle,klassen,keough,kempton,kaelin,jeffords,hsieh,hoyer,horwitz,hoeft,hennig,haskin,gourdine,golightly,girouard,fulgham,fritsch,freer,frasher,foulk,firestone,fiorentino,fedor,ensley,englehart,eells,dunphy,donahoe,dileo,dibenedetto,dabrowski,crick,coonrod,conder,coddington,chunn,chaput,cerna,carreiro,calahan,braggs,bourdon,bollman,bittle,bauder,barreras,aubuchon,anzalone,adamo,zerbe,willcox,westberg,weikel,waymire,vroman,vinci,vallejos,truesdell,troutt,trotta,tollison,toles,tichenor,symonds,surles,strayer,stgeorge,sroka,sorrentino,solares,snelson,silvestri,sikorski,shawver,schumaker,schorr,schooley,scates,satterlee,satchell,rymer,roselli,robitaille,riegel,regis,reames,provenzano,priestley,plaisance,pettey,palomares,nowakowski,monette,minyard,mclamb,mchone,mccarroll,masson,magoon,maddy,lundin,licata,leonhardt,landwehr,kircher,kinch,karpinski,johannsen,hussain,houghtaling,hoskinson,hollaway,holeman,hobgood,hiebert,goggin,geissler,gadbois,gabaldon,fleshman,flannigan,fairman,eilers,dycus,dunmire,duffield,dowler,deloatch,dehaan,deemer,clayborn,christofferso,chilson,chesney,chatfield,carron,canale,brigman,branstetter,bosse,borton,bonar,biron,barroso,arispe,zacharias,zabel,yaeger,woolford,whetzel,weakley,veatch,vandeusen,tufts,troxel,troche,traver,townsel,talarico,swilley,sterrett,stenger,speakman,sowards,sours,souders,souder,soles,sobers,snoddy,smither,shute,shoaf,shahan,schuetz,scaggs,santini,rosson,rolen,robidoux,rentas,recio,pixley,pawlowski,pawlak,paull,overbey,orear,oliveri,oldenburg,nutting,naugle,mossman,misner,milazzo,michelson,mcentee,mccullar,mccree,mcaleer,mazzone,mandell,manahan,malott,maisonet,mailloux,lumley,lowrie,louviere,lipinski,lindemann,leppert,leasure,labarge,kubik,knisely,knepp,kenworthy,kennelly,kelch,kanter,houchin,hosley,hosler,hollon,holleman,heitman,haggins,gwaltney,goulding,gorden,geraci,gathers,frison,feagin,falconer,espada,erving,erikson,eisenhauer,ebeling,durgin,dowdle,dinwiddie,delcastillo,dedrick,crimmins,covell,cournoyer,coria,cohan,cataldo,carpentier,canas,campa,brode,brashears,blaser,bicknell,bednar,barwick,ascencio,althoff,almodovar,alamo,zirkle,zabala,wolverton,winebrenner,wetherell,westlake,wegener,weddington,tuten,trosclair,tressler,theroux,teske,swinehart,swensen,sundquist,southall,socha,sizer,silverberg,shortt,shimizu,sherrard,shaeffer,scheid,scheetz,saravia,sanner,rubinstein,rozell,romer,rheaume,reisinger,randles,pullum,petrella,payan,nordin,norcross,nicoletti,nicholes,newbold,nakagawa,monteith,milstead,milliner,mellen,mccardle,liptak,leitch,latimore,larrison,landau,laborde,koval,izquierdo,hymel,hoskin,holte,hoefer,hayworth,hausman,harrill,harrel,hardt,gully,groover,grinnell,greenspan,graver,grandberry,gorrell,goldenberg,goguen,gilleland,fuson,feldmann,everly,dyess,dunnigan,downie,dolby,deatherage,cosey,cheever,celaya,caver,cashion,caplinger,cansler,byrge,bruder,breuer,breslin,brazelton,botkin,bonneau,bondurant,bohanan,bogue,bodner,boatner,blatt,bickley,belliveau,beiler,beier,beckstead,bachmann,atkin,altizer,alloway,allaire,albro,abron,zellmer,yetter,yelverton,wiens,whidden,viramontes,vanwormer,tarantino,tanksley,sumlin,strauch,strang,stice,spahn,sosebee,sigala,shrout,seamon,schrum,schneck,schantz,ruddy,romig,roehl,renninger,reding,polak,pohlman,pasillas,oldfield,oldaker,ohanlon,ogilvie,norberg,nolette,neufeld,nellis,mummert,mulvihill,mullaney,monteleone,mendonca,meisner,mcmullan,mccluney,mattis,massengill,manfredi,luedtke,lounsbury,liberatore,lamphere,laforge,jourdan,iorio,iniguez,ikeda,hubler,hodgdon,hocking,heacock,haslam,haralson,hanshaw,hannum,hallam,haden,garnes,garces,gammage,gambino,finkel,faucett,ehrhardt,eggen,dusek,durrant,dubay,dones,depasquale,delucia,degraff,decamp,davalos,cullins,conard,clouser,clontz,cifuentes,chappel,chaffins,celis,carwile,byram,bruggeman,bressler,brathwaite,brasfield,bradburn,boose,bodie,blosser,bertsch,bernardi,bernabe,bengtson,barrette,astorga,alday,albee,abrahamson,yarnell,wiltse,wiebe,waguespack,vasser,upham,turek,traxler,torain,tomaszewski,tinnin,tiner,tindell,styron,stahlman,staab,skiba,sheperd,seidl,secor,schutte,sanfilippo,ruder,rondon,rearick,procter,prochaska,pettengill,pauly,neilsen,nally,mullenax,morano,meads,mcnaughton,mcmurtry,mcmath,mckinsey,matthes,massenburg,marlar,margolis,malin,magallon,mackin,lovette,loughran,loring,longstreet,loiselle,lenihan,kunze,koepke,kerwin,kalinowski,kagan,innis,innes,holtzman,heinemann,harshman,haider,haack,grondin,grissett,greenawalt,goudy,goodlett,goldston,gokey,gardea,galaviz,gafford,gabrielson,furlow,fritch,fordyce,folger,elizalde,ehlert,eckhoff,eccleston,ealey,dubin,diemer,deschamps,delapena,decicco,debolt,cullinan,crittendon,crase,cossey,coppock,coots,colyer,cluck,chamberland,burkhead,bumpus,buchan,borman,birkholz,berardi,benda,behnke,barter,amezquita,wotring,wirtz,wingert,wiesner,whitesides,weyant,wainscott,venezia,varnell,tussey,thurlow,tabares,stiver,stell,starke,stanhope,stanek,sisler,sinnott,siciliano,shehan,selph,seager,scurlock,scranton,santucci,santangelo,saltsman,rogge,rettig,renwick,reidy,reider,redfield,premo,parente,paolucci,palmquist,ohler,netherton,mutchler,morita,mistretta,minnis,middendorf,menzel,mendosa,mendelson,meaux,mcspadden,mcquaid,mcnatt,manigault,maney,mager,lukes,lopresti,liriano,letson,lechuga,lazenby,lauria,larimore,krupp,krupa,kopec,kinchen,kifer,kerney,kerner,kennison,kegley,karcher,justis,johson,jellison,janke,huskins,holzman,hinojos,hefley,hatmaker,harte,halloway,hallenbeck,goodwyn,glaspie,geise,fullwood,fryman,frakes,fraire,farrer,enlow,engen,ellzey,eckles,earles,dunkley,drinkard,dreiling,draeger,dinardo,dills,desroches,desantiago,curlee,crumbley,critchlow,coury,courtright,coffield,cleek,charpentier,cardone,caples,cantin,buntin,bugbee,brinkerhoff,brackin,bourland,blassingame,beacham,banning,auguste,andreasen,amann,almon,alejo,adelman,abston,yerger,wymer,woodberry,windley,whiteaker,westfield,weibel,wanner,waldrep,villani,vanarsdale,utterback,updike,triggs,topete,tolar,tigner,thoms,tauber,tarvin,tally,swiney,sweatman,studebaker,stennett,starrett,stannard,stalvey,sonnenberg,smithey,sieber,sickles,shinault,segars,sanger,salmeron,rothe,rizzi,restrepo,ralls,ragusa,quiroga,papenfuss,oropeza,okane,mudge,mozingo,molinaro,mcvicker,mcgarvey,mcfalls,mccraney,matus,magers,llanos,livermore,linehan,leitner,laymon,lawing,lacourse,kwong,kollar,kneeland,kennett,kellett,kangas,janzen,hutter,huling,hofmeister,hewes,harjo,habib,guice,grullon,greggs,grayer,granier,grable,gowdy,giannini,getchell,gartman,garnica,ganey,gallimore,fetters,fergerson,farlow,fagundes,exley,esteves,enders,edenfield,easterwood,drakeford,dipasquale,desousa,deshields,deeter,dedmon,debord,daughtery,cutts,courtemanche,coursey,copple,coomes,collis,cogburn,clopton,choquette,chaidez,castrejon,calhoon,burbach,bulloch,buchman,bruhn,bohon,blough,baynes,barstow,zeman,zackery,yardley,yamashita,wulff,wilken,wiliams,wickersham,wible,whipkey,wedgeworth,walmsley,walkup,vreeland,verrill,umana,traub,swingle,summey,stroupe,stockstill,steffey,stefanski,statler,stapp,speights,solari,soderberg,shunk,shorey,shewmaker,sheilds,schiffer,schank,schaff,sagers,rochon,riser,rickett,reale,raglin,polen,plata,pitcock,percival,palen,orona,oberle,nocera,navas,nault,mullings,montejano,monreal,minick,middlebrook,meece,mcmillion,mccullen,mauck,marshburn,maillet,mahaney,magner,maclin,lucey,litteral,lippincott,leite,leaks,lamarre,jurgens,jerkins,jager,hurwitz,hughley,hotaling,horstman,hohman,hocker,hively,hipps,hessler,hermanson,hepworth,helland,hedlund,harkless,haigler,gutierez,grindstaff,glantz,giardina,gerken,gadsden,finnerty,farnum,encinas,drakes,dennie,cutlip,curtsinger,couto,cortinas,corby,chiasson,carle,carballo,brindle,borum,bober,blagg,berthiaume,beahm,batres,basnight,backes,axtell,atterberry,alvares,alegria,woodell,wojciechowski,winfree,winbush,wiest,wesner,wamsley,wakeman,verner,truex,trafton,toman,thorsen,theus,tellier,tallant,szeto,strope,stills,simkins,shuey,shaul,servin,serio,serafin,salguero,ryerson,rudder,ruark,rother,rohrbaugh,rohrbach,rohan,rogerson,risher,reeser,pryce,prokop,prins,priebe,prejean,pinheiro,petrone,petri,penson,pearlman,parikh,natoli,murakami,mullikin,mullane,motes,morningstar,mcveigh,mcgrady,mcgaughey,mccurley,marchan,manske,lusby,linde,likens,licon,leroux,lemaire,legette,laskey,laprade,laplant,kolar,kittredge,kinley,kerber,kanagy,jetton,janik,ippolito,inouye,hunsinger,howley,howery,horrell,holthaus,hiner,hilson,hilderbrand,hartzler,harnish,harada,hansford,halligan,hagedorn,gwynn,gudino,greenstein,greear,gracey,goudeau,goodner,ginsburg,gerth,gerner,fujii,frier,frenette,folmar,fleisher,fleischmann,fetzer,eisenman,earhart,dupuy,dunkelberger,drexler,dillinger,dilbeck,dewald,demby,deford,craine,chesnut,casady,carstens,carrick,carino,carignan,canchola,bushong,burman,buono,brownlow,broach,britten,brickhouse,boyden,boulton,borland,bohrer,blubaugh,bever,berggren,benevides,arocho,arends,amezcua,almendarez,zalewski,witzel,winkfield,wilhoite,vangundy,vanfleet,vanetten,vandergriff,urbanski,troiano,thibodaux,straus,stoneking,stjean,stillings,stange,speicher,speegle,smeltzer,slawson,simmonds,shuttleworth,serpa,senger,seidman,schweiger,schloss,schimmel,schechter,sayler,sabatini,ronan,rodiguez,riggleman,richins,reamer,prunty,porath,plunk,piland,philbrook,pettitt,perna,peralez,pascale,padula,oboyle,nivens,nickols,mundt,munden,montijo,mcmanis,mcgrane,mccrimmon,manzi,mangold,malick,mahar,maddock,losey,litten,leedy,leavell,ladue,krahn,kluge,junker,iversen,imler,hurtt,huizar,hubbert,howington,hollomon,holdren,hoisington,heiden,hauge,hartigan,gutirrez,griffie,greenhill,gratton,granata,gottfried,gertz,gautreaux,furry,furey,funderburg,flippen,fitzgibbon,drucker,donoghue,dildy,devers,detweiler,despres,denby,degeorge,cueto,cranston,courville,clukey,cirillo,chivers,caudillo,butera,bulluck,buckmaster,braunstein,bracamonte,bourdeau,bonnette".split(","),
43354 us_tv_and_film:"you,i,to,that,it,me,what,this,know,i'm,no,have,my,don't,just,not,do,be,your,we,it's,so,but,all,well,oh,about,right,you're,get,here,out,going,like,yeah,if,can,up,want,think,that's,now,go,him,how,got,did,why,see,come,good,really,look,will,okay,back,can't,mean,tell,i'll,hey,he's,could,didn't,yes,something,because,say,take,way,little,make,need,gonna,never,we're,too,she's,i've,sure,our,sorry,what's,let,thing,maybe,down,man,very,there's,should,anything,said,much,any,even,off,please,doing,thank,give,thought,help,talk,god,still,wait,find,nothing,again,things,let's,doesn't,call,told,great,better,ever,night,away,believe,feel,everything,you've,fine,last,keep,does,put,around,stop,they're,i'd,guy,isn't,always,listen,wanted,guys,huh,those,big,lot,happened,thanks,won't,trying,kind,wrong,talking,guess,care,bad,mom,remember,getting,we'll,together,dad,leave,understand,wouldn't,actually,hear,baby,nice,father,else,stay,done,wasn't,course,might,mind,every,enough,try,hell,came,someone,you'll,whole,yourself,idea,ask,must,coming,looking,woman,room,knew,tonight,real,son,hope,went,hmm,happy,pretty,saw,girl,sir,friend,already,saying,next,job,problem,minute,thinking,haven't,heard,honey,matter,myself,couldn't,exactly,having,probably,happen,we've,hurt,boy,dead,gotta,alone,excuse,start,kill,hard,you'd,today,car,ready,without,wants,hold,wanna,yet,seen,deal,once,gone,morning,supposed,friends,head,stuff,worry,live,truth,face,forget,true,cause,soon,knows,telling,wife,who's,chance,run,move,anyone,person,bye,somebody,heart,miss,making,meet,anyway,phone,reason,damn,lost,looks,bring,case,turn,wish,tomorrow,kids,trust,check,change,anymore,least,aren't,working,makes,taking,means,brother,hate,ago,says,beautiful,gave,fact,crazy,sit,afraid,important,rest,fun,kid,word,watch,glad,everyone,sister,minutes,everybody,bit,couple,whoa,either,mrs,feeling,daughter,wow,gets,asked,break,promise,door,close,hand,easy,question,tried,far,walk,needs,mine,killed,hospital,anybody,alright,wedding,shut,able,die,perfect,stand,comes,hit,waiting,dinner,funny,husband,almost,pay,answer,cool,eyes,news,child,shouldn't,yours,moment,sleep,read,where's,sounds,sonny,pick,sometimes,bed,date,plan,hours,lose,hands,serious,shit,behind,inside,ahead,week,wonderful,fight,past,cut,quite,he'll,sick,it'll,eat,nobody,goes,save,seems,finally,lives,worried,upset,carly,met,brought,seem,sort,safe,weren't,leaving,front,shot,loved,asking,running,clear,figure,hot,felt,parents,drink,absolutely,how's,daddy,sweet,alive,sense,meant,happens,bet,blood,ain't,kidding,lie,meeting,dear,seeing,sound,fault,ten,buy,hour,speak,lady,jen,thinks,christmas,outside,hang,possible,worse,mistake,ooh,handle,spend,totally,giving,here's,marriage,realize,unless,sex,send,needed,scared,picture,talked,ass,hundred,changed,completely,explain,certainly,sign,boys,relationship,loves,hair,lying,choice,anywhere,future,weird,luck,she'll,turned,touch,kiss,crane,questions,obviously,wonder,pain,calling,somewhere,throw,straight,cold,fast,words,food,none,drive,feelings,they'll,marry,drop,cannot,dream,protect,twenty,surprise,sweetheart,poor,looked,mad,except,gun,y'know,dance,takes,appreciate,especially,situation,besides,pull,hasn't,worth,sheridan,amazing,expect,swear,piece,busy,happening,movie,we'd,catch,perhaps,step,fall,watching,kept,darling,dog,honor,moving,till,admit,problems,murder,he'd,evil,definitely,feels,honest,eye,broke,missed,longer,dollars,tired,evening,starting,entire,trip,niles,suppose,calm,imagine,fair,caught,blame,sitting,favor,apartment,terrible,clean,learn,frasier,relax,accident,wake,prove,smart,message,missing,forgot,interested,table,nbsp,mouth,pregnant,ring,careful,shall,dude,ride,figured,wear,shoot,stick,follow,angry,write,stopped,ran,standing,forgive,jail,wearing,ladies,kinda,lunch,cristian,greenlee,gotten,hoping,phoebe,thousand,ridge,paper,tough,tape,count,boyfriend,proud,agree,birthday,they've,share,offer,hurry,feet,wondering,decision,ones,finish,voice,herself,would've,mess,deserve,evidence,cute,dress,interesting,hotel,enjoy,quiet,concerned,staying,beat,sweetie,mention,clothes,fell,neither,mmm,fix,respect,prison,attention,holding,calls,surprised,bar,keeping,gift,hadn't,putting,dark,owe,ice,helping,normal,aunt,lawyer,apart,plans,jax,girlfriend,floor,whether,everything's,box,judge,upstairs,sake,mommy,possibly,worst,acting,accept,blow,strange,saved,conversation,plane,mama,yesterday,lied,quick,lately,stuck,difference,store,she'd,bought,doubt,listening,walking,cops,deep,dangerous,buffy,sleeping,chloe,rafe,join,card,crime,gentlemen,willing,window,walked,guilty,likes,fighting,difficult,soul,joke,favorite,uncle,promised,bother,seriously,cell,knowing,broken,advice,somehow,paid,losing,push,helped,killing,boss,liked,innocent,rules,learned,thirty,risk,letting,speaking,ridiculous,afternoon,apologize,nervous,charge,patient,boat,how'd,hide,detective,planning,huge,breakfast,horrible,awful,pleasure,driving,hanging,picked,sell,quit,apparently,dying,notice,congratulations,visit,could've,c'mon,letter,decide,forward,fool,showed,smell,seemed,spell,memory,pictures,slow,seconds,hungry,hearing,kitchen,ma'am,should've,realized,kick,grab,discuss,fifty,reading,idiot,suddenly,agent,destroy,bucks,shoes,peace,arms,demon,livvie,consider,papers,incredible,witch,drunk,attorney,tells,knock,ways,gives,nose,skye,turns,keeps,jealous,drug,sooner,cares,plenty,extra,outta,weekend,matters,gosh,opportunity,impossible,waste,pretend,jump,eating,proof,slept,arrest,breathe,perfectly,warm,pulled,twice,easier,goin,dating,suit,romantic,drugs,comfortable,finds,checked,divorce,begin,ourselves,closer,ruin,smile,laugh,treat,fear,what'd,otherwise,excited,mail,hiding,stole,pacey,noticed,fired,excellent,bringing,bottom,note,sudden,bathroom,honestly,sing,foot,remind,charges,witness,finding,tree,dare,hardly,that'll,steal,silly,contact,teach,shop,plus,colonel,fresh,trial,invited,roll,reach,dirty,choose,emergency,dropped,butt,credit,obvious,locked,loving,nuts,agreed,prue,goodbye,condition,guard,fuckin,grow,cake,mood,crap,crying,belong,partner,trick,pressure,dressed,taste,neck,nurse,raise,lots,carry,whoever,drinking,they'd,breaking,file,lock,wine,spot,paying,assume,asleep,turning,viki,bedroom,shower,nikolas,camera,fill,reasons,forty,bigger,nope,breath,doctors,pants,freak,movies,folks,cream,wild,truly,desk,convince,client,threw,hurts,spending,answers,shirt,chair,rough,doin,sees,ought,empty,wind,aware,dealing,pack,tight,hurting,guest,arrested,salem,confused,surgery,expecting,deacon,unfortunately,goddamn,bottle,beyond,whenever,pool,opinion,starts,jerk,secrets,falling,necessary,barely,dancing,tests,copy,cousin,ahem,twelve,tess,skin,fifteen,speech,orders,complicated,nowhere,escape,biggest,restaurant,grateful,usual,burn,address,someplace,screw,everywhere,regret,goodness,mistakes,details,responsibility,suspect,corner,hero,dumb,terrific,whoo,hole,memories,o'clock,teeth,ruined,bite,stenbeck,liar,showing,cards,desperate,search,pathetic,spoke,scare,marah,afford,settle,stayed,checking,hired,heads,concern,blew,alcazar,champagne,connection,tickets,happiness,saving,kissing,hated,personally,suggest,prepared,onto,downstairs,ticket,it'd,loose,holy,duty,convinced,throwing,kissed,legs,loud,saturday,babies,where'd,warning,miracle,carrying,blind,ugly,shopping,hates,sight,bride,coat,clearly,celebrate,brilliant,wanting,forrester,lips,custody,screwed,buying,toast,thoughts,reality,lexie,attitude,advantage,grandfather,sami,grandma,someday,roof,marrying,powerful,grown,grandmother,fake,must've,ideas,exciting,familiar,bomb,bout,harmony,schedule,capable,practically,correct,clue,forgotten,appointment,deserves,threat,bloody,lonely,shame,jacket,hook,scary,investigation,invite,shooting,lesson,criminal,victim,funeral,considering,burning,strength,harder,sisters,pushed,shock,pushing,heat,chocolate,miserable,corinthos,nightmare,brings,zander,crash,chances,sending,recognize,healthy,boring,feed,engaged,headed,treated,knife,drag,badly,hire,paint,pardon,behavior,closet,warn,gorgeous,milk,survive,ends,dump,rent,remembered,thanksgiving,rain,revenge,prefer,spare,pray,disappeared,aside,statement,sometime,meat,fantastic,breathing,laughing,stood,affair,ours,depends,protecting,jury,brave,fingers,murdered,explanation,picking,blah,stronger,handsome,unbelievable,anytime,shake,oakdale,wherever,pulling,facts,waited,lousy,circumstances,disappointed,weak,trusted,license,nothin,trash,understanding,slip,sounded,awake,friendship,stomach,weapon,threatened,mystery,vegas,understood,basically,switch,frankly,cheap,lifetime,deny,clock,garbage,why'd,tear,ears,indeed,changing,singing,tiny,decent,avoid,messed,filled,touched,disappear,exact,pills,kicked,harm,fortune,pretending,insurance,fancy,drove,cared,belongs,nights,lorelai,lift,timing,guarantee,chest,woke,burned,watched,heading,selfish,drinks,doll,committed,elevator,freeze,noise,wasting,ceremony,uncomfortable,staring,files,bike,stress,permission,thrown,possibility,borrow,fabulous,doors,screaming,bone,xander,what're,meal,apology,anger,honeymoon,bail,parking,fixed,wash,stolen,sensitive,stealing,photo,chose,lets,comfort,worrying,pocket,mateo,bleeding,shoulder,ignore,talent,tied,garage,dies,demons,dumped,witches,rude,crack,bothering,radar,soft,meantime,gimme,kinds,fate,concentrate,throat,prom,messages,intend,ashamed,somethin,manage,guilt,interrupt,guts,tongue,shoe,basement,sentence,purse,glasses,cabin,universe,repeat,mirror,wound,travers,tall,engagement,therapy,emotional,jeez,decisions,soup,thrilled,stake,chef,moves,extremely,moments,expensive,counting,shots,kidnapped,cleaning,shift,plate,impressed,smells,trapped,aidan,knocked,charming,attractive,argue,puts,whip,embarrassed,package,hitting,bust,stairs,alarm,pure,nail,nerve,incredibly,walks,dirt,stamp,terribly,friendly,damned,jobs,suffering,disgusting,stopping,deliver,riding,helps,disaster,bars,crossed,trap,talks,eggs,chick,threatening,spoken,introduce,confession,embarrassing,bags,impression,gate,reputation,presents,chat,suffer,argument,talkin,crowd,homework,coincidence,cancel,pride,solve,hopefully,pounds,pine,mate,illegal,generous,outfit,maid,bath,punch,freaked,begging,recall,enjoying,prepare,wheel,defend,signs,painful,yourselves,maris,that'd,suspicious,cooking,button,warned,sixty,pity,yelling,awhile,confidence,offering,pleased,panic,hers,gettin,refuse,grandpa,testify,choices,cruel,mental,gentleman,coma,cutting,proteus,guests,expert,benefit,faces,jumped,toilet,sneak,halloween,privacy,smoking,reminds,twins,swing,solid,options,commitment,crush,ambulance,wallet,gang,eleven,option,laundry,assure,stays,skip,fail,discussion,clinic,betrayed,sticking,bored,mansion,soda,sheriff,suite,handled,busted,load,happier,studying,romance,procedure,commit,assignment,suicide,minds,swim,yell,llanview,chasing,proper,believes,humor,hopes,lawyers,giant,latest,escaped,parent,tricks,insist,dropping,cheer,medication,flesh,routine,sandwich,handed,false,beating,warrant,awfully,odds,treating,thin,suggesting,fever,sweat,silent,clever,sweater,mall,sharing,assuming,judgment,goodnight,divorced,surely,steps,confess,math,listened,comin,answered,vulnerable,bless,dreaming,chip,zero,pissed,nate,kills,tears,knees,chill,brains,unusual,packed,dreamed,cure,lookin,grave,cheating,breaks,locker,gifts,awkward,thursday,joking,reasonable,dozen,curse,quartermaine,millions,dessert,rolling,detail,alien,delicious,closing,vampires,wore,tail,secure,salad,murderer,spit,offense,dust,conscience,bread,answering,lame,invitation,grief,smiling,pregnancy,prisoner,delivery,guards,virus,shrink,freezing,wreck,massimo,wire,technically,blown,anxious,cave,holidays,cleared,wishes,caring,candles,bound,charm,pulse,jumping,jokes,boom,occasion,silence,nonsense,frightened,slipped,dimera,blowing,relationships,kidnapping,spin,tool,roxy,packing,blaming,wrap,obsessed,fruit,torture,personality,there'll,fairy,necessarily,seventy,print,motel,underwear,grams,exhausted,believing,freaking,carefully,trace,touching,messing,recovery,intention,consequences,belt,sacrifice,courage,enjoyed,attracted,remove,testimony,intense,heal,defending,unfair,relieved,loyal,slowly,buzz,alcohol,surprises,psychiatrist,plain,attic,who'd,uniform,terrified,cleaned,zach,threaten,fella,enemies,satisfied,imagination,hooked,headache,forgetting,counselor,andie,acted,badge,naturally,frozen,sakes,appropriate,trunk,dunno,costume,sixteen,impressive,kicking,junk,grabbed,understands,describe,clients,owns,affect,witnesses,starving,instincts,happily,discussing,deserved,strangers,surveillance,admire,questioning,dragged,barn,deeply,wrapped,wasted,tense,hoped,fellas,roommate,mortal,fascinating,stops,arrangements,agenda,literally,propose,honesty,underneath,sauce,promises,lecture,eighty,torn,shocked,backup,differently,ninety,deck,biological,pheebs,ease,creep,waitress,telephone,ripped,raising,scratch,rings,prints,thee,arguing,ephram,asks,oops,diner,annoying,taggert,sergeant,blast,towel,clown,habit,creature,bermuda,snap,react,paranoid,handling,eaten,therapist,comment,sink,reporter,nurses,beats,priority,interrupting,warehouse,loyalty,inspector,pleasant,excuses,threats,guessing,tend,praying,motive,unconscious,mysterious,unhappy,tone,switched,rappaport,sookie,neighbor,loaded,swore,piss,balance,toss,misery,thief,squeeze,lobby,goa'uld,geez,exercise,forth,booked,sandburg,poker,eighteen,d'you,bury,everyday,digging,creepy,wondered,liver,hmmm,magical,fits,discussed,moral,helpful,searching,flew,depressed,aisle,cris,amen,vows,neighbors,darn,cents,arrange,annulment,useless,adventure,resist,fourteen,celebrating,inch,debt,violent,sand,teal'c,celebration,reminded,phones,paperwork,emotions,stubborn,pound,tension,stroke,steady,overnight,chips,beef,suits,boxes,cassadine,collect,tragedy,spoil,realm,wipe,surgeon,stretch,stepped,nephew,neat,limo,confident,perspective,climb,punishment,finest,springfield,hint,furniture,blanket,twist,proceed,fries,worries,niece,gloves,soap,signature,disappoint,crawl,convicted,flip,counsel,doubts,crimes,accusing,shaking,remembering,hallway,halfway,bothered,madam,gather,cameras,blackmail,symptoms,rope,ordinary,imagined,cigarette,supportive,explosion,trauma,ouch,furious,cheat,avoiding,whew,thick,oooh,boarding,approve,urgent,shhh,misunderstanding,drawer,phony,interfere,catching,bargain,tragic,respond,punish,penthouse,thou,rach,ohhh,insult,bugs,beside,begged,absolute,strictly,socks,senses,sneaking,reward,polite,checks,tale,physically,instructions,fooled,blows,tabby,bitter,adorable,y'all,tested,suggestion,jewelry,alike,jacks,distracted,shelter,lessons,constable,circus,audition,tune,shoulders,mask,helpless,feeding,explains,sucked,robbery,objection,behave,valuable,shadows,courtroom,confusing,talented,smarter,mistaken,customer,bizarre,scaring,motherfucker,alert,vecchio,reverend,foolish,compliment,bastards,worker,wheelchair,protective,gentle,reverse,picnic,knee,cage,wives,wednesday,voices,toes,stink,scares,pour,cheated,slide,ruining,filling,exit,cottage,upside,proves,parked,diary,complaining,confessed,pipe,merely,massage,chop,spill,prayer,betray,waiter,scam,rats,fraud,brush,tables,sympathy,pill,filthy,seventeen,employee,bracelet,pays,fairly,deeper,arrive,tracking,spite,shed,recommend,oughta,nanny,menu,diet,corn,roses,patch,dime,devastated,subtle,bullets,beans,pile,confirm,strings,parade,borrowed,toys,straighten,steak,premonition,planted,honored,exam,convenient,traveling,laying,insisted,dish,aitoro,kindly,grandson,donor,temper,teenager,proven,mothers,denial,backwards,tent,swell,noon,happiest,drives,thinkin,spirits,potion,holes,fence,whatsoever,rehearsal,overheard,lemme,hostage,bench,tryin,taxi,shove,moron,impress,needle,intelligent,instant,disagree,stinks,rianna,recover,groom,gesture,constantly,bartender,suspects,sealed,legally,hears,dresses,sheet,psychic,teenage,knocking,judging,accidentally,waking,rumor,manners,homeless,hollow,desperately,tapes,referring,item,genoa,gear,majesty,cried,tons,spells,instinct,quote,motorcycle,convincing,fashioned,aids,accomplished,grip,bump,upsetting,needing,invisible,forgiveness,feds,compare,bothers,tooth,inviting,earn,compromise,cocktail,tramp,jabot,intimate,dignity,dealt,souls,informed,gods,dressing,cigarettes,alistair,leak,fond,corky,seduce,liquor,fingerprints,enchantment,butters,stuffed,stavros,emotionally,transplant,tips,oxygen,nicely,lunatic,drill,complain,announcement,unfortunate,slap,prayers,plug,opens,oath,o'neill,mutual,yacht,remembers,fried,extraordinary,bait,warton,sworn,stare,safely,reunion,burst,might've,dive,aboard,expose,buddies,trusting,booze,sweep,sore,scudder,properly,parole,ditch,canceled,speaks,glow,wears,thirsty,skull,ringing,dorm,dining,bend,unexpected,pancakes,harsh,flattered,ahhh,troubles,fights,favourite,eats,rage,undercover,spoiled,sloane,shine,destroying,deliberately,conspiracy,thoughtful,sandwiches,plates,nails,miracles,fridge,drank,contrary,beloved,allergic,washed,stalking,solved,sack,misses,forgiven,bent,maciver,involve,dragging,cooked,pointing,foul,dull,beneath,heels,faking,deaf,stunt,jealousy,hopeless,fears,cuts,scenario,necklace,crashed,accuse,restraining,homicide,helicopter,firing,safer,auction,videotape,tore,reservations,pops,appetite,wounds,vanquish,ironic,fathers,excitement,anyhow,tearing,sends,rape,laughed,belly,dealer,cooperate,accomplish,wakes,spotted,sorts,reservation,ashes,tastes,supposedly,loft,intentions,integrity,wished,towels,suspected,investigating,inappropriate,lipstick,lawn,compassion,cafeteria,scarf,precisely,obsession,loses,lighten,infection,granddaughter,explode,balcony,this'll,spying,publicity,depend,cracked,conscious,ally,absurd,vicious,invented,forbid,directions,defendant,bare,announce,screwing,salesman,robbed,leap,lakeview,insanity,reveal,possibilities,kidnap,gown,chairs,wishing,setup,punished,criminals,regrets,raped,quarters,lamp,dentist,anyways,anonymous,semester,risks,owes,lungs,explaining,delicate,tricked,eager,doomed,adoption,stab,sickness,scum,floating,envelope,vault,sorel,pretended,potatoes,plea,photograph,payback,misunderstood,kiddo,healing,cascade,capeside,stabbed,remarkable,brat,privilege,passionate,nerves,lawsuit,kidney,disturbed,cozy,tire,shirts,oven,ordering,delay,risky,monsters,honorable,grounded,closest,breakdown,bald,abandon,scar,collar,worthless,sucking,enormous,disturbing,disturb,distract,deals,conclusions,vodka,dishes,crawling,briefcase,wiped,whistle,sits,roast,rented,pigs,flirting,deposit,bottles,topic,riot,overreacting,logical,hostile,embarrass,casual,beacon,amusing,altar,claus,survival,skirt,shave,porch,ghosts,favors,drops,dizzy,chili,advise,strikes,rehab,photographer,peaceful,leery,heavens,fortunately,fooling,expectations,cigar,weakness,ranch,practicing,examine,cranes,bribe,sail,prescription,hush,fragile,forensics,expense,drugged,cows,bells,visitor,suitcase,sorta,scan,manticore,insecure,imagining,hardest,clerk,wrist,what'll,starters,silk,pump,pale,nicer,haul,flies,boot,thumb,there'd,how're,elders,quietly,pulls,idiots,erase,denying,ankle,amnesia,accepting,heartbeat,devane,confront,minus,legitimate,fixing,arrogant,tuna,supper,slightest,sins,sayin,recipe,pier,paternity,humiliating,genuine,snack,rational,minded,guessed,weddings,tumor,humiliated,aspirin,spray,picks,eyed,drowning,contacts,ritual,perfume,hiring,hating,docks,creatures,visions,thanking,thankful,sock,nineteen,fork,throws,teenagers,stressed,slice,rolls,plead,ladder,kicks,detectives,assured,tellin,shallow,responsibilities,repay,howdy,girlfriends,deadly,comforting,ceiling,verdict,insensitive,spilled,respected,messy,interrupted,halliwell,blond,bleed,wardrobe,takin,murders,backs,underestimate,justify,harmless,frustrated,fold,enzo,communicate,bugging,arson,whack,salary,rumors,obligation,liking,dearest,congratulate,vengeance,rack,puzzle,fires,courtesy,caller,blamed,tops,quiz,prep,curiosity,circles,barbecue,sunnydale,spinning,psychotic,cough,accusations,resent,laughs,freshman,envy,drown,bartlet,asses,sofa,poster,highness,dock,apologies,theirs,stat,stall,realizes,psych,mmmm,fools,understandable,treats,succeed,stir,relaxed,makin,gratitude,faithful,accent,witter,wandering,locate,inevitable,gretel,deed,crushed,controlling,smelled,robe,gossip,gambling,cosmetics,accidents,surprising,stiff,sincere,rushed,refrigerator,preparing,nightmares,mijo,ignoring,hunch,fireworks,drowned,brass,whispering,sophisticated,luggage,hike,explore,emotion,crashing,contacted,complications,shining,rolled,righteous,reconsider,goody,geek,frightening,ethics,creeps,courthouse,camping,affection,smythe,haircut,essay,baked,apologized,vibe,respects,receipt,mami,hats,destructive,adore,adopt,tracked,shorts,reminding,dough,creations,cabot,barrel,snuck,slight,reporters,pressing,magnificent,madame,lazy,glorious,fiancee,bits,visitation,sane,kindness,shoulda,rescued,mattress,lounge,lifted,importantly,glove,enterprises,disappointment,condo,beings,admitting,yelled,waving,spoon,screech,satisfaction,reads,nailed,worm,tick,resting,marvelous,fuss,cortlandt,chased,pockets,luckily,lilith,filing,conversations,consideration,consciousness,worlds,innocence,forehead,aggressive,trailer,slam,quitting,inform,delighted,daylight,danced,confidential,aunts,washing,tossed,spectra,marrow,lined,implying,hatred,grill,corpse,clues,sober,offended,morgue,infected,humanity,distraction,cart,wired,violation,promising,harassment,glue,d'angelo,cursed,brutal,warlocks,wagon,unpleasant,proving,priorities,mustn't,lease,flame,disappearance,depressing,thrill,sitter,ribs,flush,earrings,deadline,corporal,collapsed,update,snapped,smack,melt,figuring,delusional,coulda,burnt,tender,sperm,realise,pork,popped,interrogation,esteem,choosing,undo,pres,prayed,plague,manipulate,insulting,detention,delightful,coffeehouse,betrayal,apologizing,adjust,wrecked,wont,whipped,rides,reminder,monsieur,faint,bake,distress,correctly,complaint,blocked,tortured,risking,pointless,handing,dumping,cups,alibi,struggling,shiny,risked,mummy,mint,hose,hobby,fortunate,fleischman,fitting,curtain,counseling,rode,puppet,modeling,memo,irresponsible,humiliation,hiya,freakin,felony,choke,blackmailing,appreciated,tabloid,suspicion,recovering,pledge,panicked,nursery,louder,jeans,investigator,homecoming,frustrating,buys,busting,buff,sleeve,irony,dope,declare,autopsy,workin,torch,prick,limb,hysterical,goddamnit,fetch,dimension,crowded,clip,climbing,bonding,woah,trusts,negotiate,lethal,iced,fantasies,deeds,bore,babysitter,questioned,outrageous,kiriakis,insulted,grudge,driveway,deserted,definite,beep,wires,suggestions,searched,owed,lend,drunken,demanding,costanza,conviction,bumped,weigh,touches,tempted,shout,resolve,relate,poisoned,meals,invitations,haunted,bogus,autograph,affects,tolerate,stepping,spontaneous,sleeps,probation,manny,fist,spectacular,hostages,heroin,havin,habits,encouraging,consult,burgers,boyfriends,bailed,baggage,watches,troubled,torturing,teasing,sweetest,qualities,postpone,overwhelmed,malkovich,impulse,classy,charging,amazed,policeman,hypocrite,humiliate,hideous,d'ya,costumes,bluffing,betting,bein,bedtime,alcoholic,vegetable,tray,suspicions,spreading,splendid,shrimp,shouting,pressed,nooo,grieving,gladly,fling,eliminate,cereal,aaah,sonofabitch,paralyzed,lotta,locks,guaranteed,dummy,despise,dental,briefing,bluff,batteries,whatta,sounding,servants,presume,handwriting,fainted,dried,allright,acknowledge,whacked,toxic,reliable,quicker,overwhelming,lining,harassing,fatal,endless,dolls,convict,whatcha,unlikely,shutting,positively,overcome,goddam,essence,dose,diagnosis,cured,bully,ahold,yearbook,tempting,shelf,prosecution,pouring,possessed,greedy,wonders,thorough,spine,rath,psychiatric,meaningless,latte,jammed,ignored,fiance,evidently,contempt,compromised,cans,weekends,urge,theft,suing,shipment,scissors,responding,proposition,noises,matching,hormones,hail,grandchildren,gently,smashed,sexually,sentimental,nicest,manipulated,intern,handcuffs,framed,errands,entertaining,crib,carriage,barge,spends,slipping,seated,rubbing,rely,reject,recommendation,reckon,headaches,float,embrace,corners,whining,sweating,skipped,mountie,motives,listens,cristobel,cleaner,cheerleader,balsom,unnecessary,stunning,scent,quartermaines,pose,montega,loosen,info,hottest,haunt,gracious,forgiving,errand,cakes,blames,abortion,sketch,shifts,plotting,perimeter,pals,mere,mattered,lonigan,interference,eyewitness,enthusiasm,diapers,strongest,shaken,punched,portal,catches,backyard,terrorists,sabotage,organs,needy,cuff,civilization,woof,who'll,prank,obnoxious,mates,hereby,gabby,faked,cellar,whitelighter,void,strangle,sour,muffins,interfering,demonic,clearing,boutique,barrington,terrace,smoked,righty,quack,petey,pact,knot,ketchup,disappearing,cordy,uptight,ticking,terrifying,tease,swamp,secretly,rejection,reflection,realizing,rays,mentally,marone,doubted,deception,congressman,cheesy,toto,stalling,scoop,ribbon,immune,expects,destined,bets,bathing,appreciation,accomplice,wander,shoved,sewer,scroll,retire,lasts,fugitive,freezer,discount,cranky,crank,clearance,bodyguard,anxiety,accountant,whoops,volunteered,talents,stinking,remotely,garlic,decency,cord,beds,altogether,uniforms,tremendous,popping,outa,observe,lung,hangs,feelin,dudes,donation,disguise,curb,bites,antique,toothbrush,realistic,predict,landlord,hourglass,hesitate,consolation,babbling,tipped,stranded,smartest,repeating,puke,psst,paycheck,overreacted,macho,juvenile,grocery,freshen,disposal,cuffs,caffeine,vanished,unfinished,ripping,pinch,flattering,expenses,dinners,colleague,ciao,belthazor,attorneys,woulda,whereabouts,waitin,truce,tripped,tasted,steer,poisoning,manipulative,immature,husbands,heel,granddad,delivering,condoms,addict,trashed,raining,pasta,needles,leaning,detector,coolest,batch,appointments,almighty,vegetables,spark,perfection,pains,momma,mole,meow,hairs,getaway,cracking,compliments,behold,verge,tougher,timer,tapped,taped,specialty,snooping,shoots,rendezvous,pentagon,leverage,jeopardize,janitor,grandparents,forbidden,clueless,bidding,ungrateful,unacceptable,tutor,serum,scuse,pajamas,mouths,lure,irrational,doom,cries,beautifully,arresting,approaching,traitor,sympathetic,smug,smash,rental,prostitute,premonitions,jumps,inventory,darlin,committing,banging,asap,worms,violated,vent,traumatic,traced,sweaty,shaft,overboard,insight,healed,grasp,experiencing,crappy,crab,chunk,awww,stain,shack,reacted,pronounce,poured,moms,marriages,jabez,handful,flipped,fireplace,embarrassment,disappears,concussion,bruises,brakes,twisting,swept,summon,splitting,sloppy,settling,reschedule,notch,hooray,grabbing,exquisite,disrespect,thornhart,straw,slapped,shipped,shattered,ruthless,refill,payroll,numb,mourning,manly,hunk,entertain,drift,dreadful,doorstep,confirmation,chops,appreciates,vague,tires,stressful,stashed,stash,sensed,preoccupied,predictable,noticing,madly,gunshot,dozens,dork,confuse,cleaners,charade,chalk,cappuccino,bouquet,amulet,addiction,who've,warming,unlock,satisfy,sacrificed,relaxing,lone,blocking,blend,blankets,addicted,yuck,hunger,hamburger,greeting,greet,gravy,gram,dreamt,dice,caution,backpack,agreeing,whale,taller,supervisor,sacrifices,phew,ounce,irrelevant,gran,felon,favorites,farther,fade,erased,easiest,convenience,compassionate,cane,backstage,agony,adores,veins,tweek,thieves,surgical,strangely,stetson,recital,proposing,productive,meaningful,immunity,hassle,goddamned,frighten,dearly,cease,ambition,wage,unstable,salvage,richer,refusing,raging,pumping,pressuring,mortals,lowlife,intimidated,intentionally,inspire,forgave,devotion,despicable,deciding,dash,comfy,breach,bark,aaaah,switching,swallowed,stove,screamed,scars,russians,pounding,poof,pipes,pawn,legit,invest,farewell,curtains,civilized,caviar,boost,token,superstition,supernatural,sadness,recorder,psyched,motivated,microwave,hallelujah,fraternity,dryer,cocoa,chewing,acceptable,unbelievably,smiled,smelling,simpler,respectable,remarks,khasinau,indication,gutter,grabs,fulfill,flashlight,ellenor,blooded,blink,blessings,beware,uhhh,turf,swings,slips,shovel,shocking,puff,mirrors,locking,heartless,fras,childish,cardiac,utterly,tuscany,ticked,stunned,statesville,sadly,purely,kiddin,jerks,hitch,flirt,fare,equals,dismiss,christening,casket,c'mere,breakup,biting,antibiotics,accusation,abducted,witchcraft,thread,runnin,punching,paramedics,newest,murdering,masks,lawndale,initials,grampa,choking,charms,careless,bushes,buns,bummed,shred,saves,saddle,rethink,regards,precinct,persuade,meds,manipulating,llanfair,leash,hearted,guarantees,fucks,disgrace,deposition,bookstore,boil,vitals,veil,trespassing,sidewalk,sensible,punishing,overtime,optimistic,obsessing,notify,mornin,jeopardy,jaffa,injection,hilarious,desires,confide,cautious,yada,where're,vindictive,vial,teeny,stroll,sittin,scrub,rebuild,posters,ordeal,nuns,intimacy,inheritance,exploded,donate,distracting,despair,crackers,wildwind,virtue,thoroughly,tails,spicy,sketches,sights,sheer,shaving,seize,scarecrow,refreshing,prosecute,platter,napkin,misplaced,merchandise,loony,jinx,heroic,frankenstein,ambitious,syrup,solitary,resemblance,reacting,premature,lavery,flashes,cheque,awright,acquainted,wrapping,untie,salute,realised,priceless,partying,lightly,lifting,kasnoff,insisting,glowing,generator,explosives,cutie,confronted,buts,blouse,ballistic,antidote,analyze,allowance,adjourned,unto,understatement,tucked,touchy,subconscious,screws,sarge,roommates,rambaldi,offend,nerd,knives,irresistible,incapable,hostility,goddammit,fuse,frat,curfew,blackmailed,walkin,starve,sleigh,sarcastic,recess,rebound,pinned,parlor,outfits,livin,heartache,haired,fundraiser,doorman,discreet,dilucca,cracks,considerate,climbed,catering,apophis,zoey,urine,strung,stitches,sordid,sark,protector,phoned,pets,hostess,flaw,flavor,deveraux,consumed,confidentiality,bourbon,straightened,specials,spaghetti,prettier,powerless,playin,playground,paranoia,instantly,havoc,exaggerating,eavesdropping,doughnuts,diversion,deepest,cutest,comb,bela,behaving,anyplace,accessory,workout,translate,stuffing,speeding,slime,royalty,polls,marital,lurking,lottery,imaginary,greetings,fairwinds,elegant,elbow,credibility,credentials,claws,chopped,bridal,bedside,babysitting,witty,unforgivable,underworld,tempt,tabs,sophomore,selfless,secrecy,restless,okey,movin,metaphor,messes,meltdown,lecter,incoming,gasoline,diefenbaker,buckle,admired,adjustment,warmth,throats,seduced,queer,parenting,noses,luckiest,graveyard,gifted,footsteps,dimeras,cynical,wedded,verbal,unpredictable,tuned,stoop,slides,sinking,rigged,plumbing,lingerie,hankey,greed,everwood,elope,dresser,chauffeur,bulletin,bugged,bouncing,temptation,strangest,slammed,sarcasm,pending,packages,orderly,obsessive,murderers,meteor,inconvenience,glimpse,froze,execute,courageous,consulate,closes,bosses,bees,amends,wuss,wolfram,wacky,unemployed,testifying,syringe,stew,startled,sorrow,sleazy,shaky,screams,rsquo,remark,poke,nutty,mentioning,mend,inspiring,impulsive,housekeeper,foam,fingernails,conditioning,baking,whine,thug,starved,sniffing,sedative,programmed,picket,paged,hound,homosexual,homo,hips,forgets,flipping,flea,flatter,dwell,dumpster,choo,assignments,ants,vile,unreasonable,tossing,thanked,steals,souvenir,scratched,psychopath,outs,obstruction,obey,lump,insists,harass,gloat,filth,edgy,didn,coroner,confessing,bruise,betraying,bailing,appealing,adebisi,wrath,wandered,waist,vain,traps,stepfather,poking,obligated,heavenly,dilemma,crazed,contagious,coaster,cheering,bundle,vomit,thingy,speeches,robbing,raft,pumped,pillows,peep,packs,neglected,m'kay,loneliness,intrude,helluva,gardener,forresters,drooling,betcha,vase,supermarket,squat,spitting,rhyme,relieve,receipts,racket,pictured,pause,overdue,motivation,morgendorffer,kidnapper,insect,horns,feminine,eyeballs,dumps,disappointing,crock,convertible,claw,clamp,canned,cambias,bathtub,avanya,artery,weep,warmer,suspense,summoned,spiders,reiber,raving,pushy,postponed,ohhhh,noooo,mold,laughter,incompetent,hugging,groceries,drip,communicating,auntie,adios,wraps,wiser,willingly,weirdest,timmih,thinner,swelling,swat,steroids,sensitivity,scrape,rehearse,prophecy,ledge,justified,insults,hateful,handles,doorway,chatting,buyer,buckaroo,bedrooms,askin,ammo,tutoring,subpoena,scratching,privileges,pager,mart,intriguing,idiotic,grape,enlighten,corrupt,brunch,bridesmaid,barking,applause,acquaintance,wretched,superficial,soak,smoothly,sensing,restraint,posing,pleading,payoff,oprah,nemo,morals,loaf,jumpy,ignorant,herbal,hangin,germs,generosity,flashing,doughnut,clumsy,chocolates,captive,behaved,apologise,vanity,stumbled,preview,poisonous,perjury,parental,onboard,mugged,minding,linen,knots,interviewing,humour,grind,greasy,goons,drastic,coop,comparing,cocky,clearer,bruised,brag,bind,worthwhile,whoop,vanquishing,tabloids,sprung,spotlight,sentencing,racist,provoke,pining,overly,locket,imply,impatient,hovering,hotter,fest,endure,dots,doren,debts,crawled,chained,brit,breaths,weirdo,warmed,wand,troubling,tok'ra,strapped,soaked,skipping,scrambled,rattle,profound,musta,mocking,misunderstand,limousine,kacl,hustle,forensic,enthusiastic,duct,drawers,devastating,conquer,clarify,chores,cheerleaders,cheaper,callin,blushing,barging,abused,yoga,wrecking,wits,waffles,virginity,vibes,uninvited,unfaithful,teller,strangled,scheming,ropes,rescuing,rave,postcard,o'reily,morphine,lotion,lads,kidneys,judgement,itch,indefinitely,grenade,glamorous,genetically,freud,discretion,delusions,crate,competent,bakery,argh,ahhhh,wedge,wager,unfit,tripping,torment,superhero,stirring,spinal,sorority,seminar,scenery,rabble,pneumonia,perks,override,ooooh,mija,manslaughter,mailed,lime,lettuce,intimidate,guarded,grieve,grad,frustration,doorbell,chinatown,authentic,arraignment,annulled,allergies,wanta,verify,vegetarian,tighter,telegram,stalk,spared,shoo,satisfying,saddam,requesting,pens,overprotective,obstacles,notified,nasedo,grandchild,genuinely,flushed,fluids,floss,escaping,ditched,cramp,corny,bunk,bitten,billions,bankrupt,yikes,wrists,ultrasound,ultimatum,thirst,sniff,shakes,salsa,retrieve,reassuring,pumps,neurotic,negotiating,needn't,monitors,millionaire,lydecker,limp,incriminating,hatchet,gracias,gordie,fills,feeds,doubting,decaf,biopsy,whiz,voluntarily,ventilator,unpack,unload,toad,spooked,snitch,schillinger,reassure,persuasive,mystical,mysteries,matrimony,mails,jock,headline,explanations,dispatch,curly,cupid,condolences,comrade,cassadines,bulb,bragging,awaits,assaulted,ambush,adolescent,abort,yank,whit,vaguely,undermine,tying,swamped,stabbing,slippers,slash,sincerely,sigh,setback,secondly,rotting,precaution,pcpd,melting,liaison,hots,hooking,headlines,haha,ganz,fury,felicity,fangs,encouragement,earring,dreidel,dory,donut,dictate,decorating,cocktails,bumps,blueberry,believable,backfired,backfire,apron,adjusting,vous,vouch,vitamins,ummm,tattoos,slimy,sibling,shhhh,renting,peculiar,parasite,paddington,marries,mailbox,magically,lovebirds,knocks,informant,exits,drazen,distractions,disconnected,dinosaurs,dashwood,crooked,conveniently,wink,warped,underestimated,tacky,shoving,seizure,reset,pushes,opener,mornings,mash,invent,indulge,horribly,hallucinating,festive,eyebrows,enjoys,desperation,dealers,darkest,daph,boragora,belts,bagel,authorization,auditions,agitated,wishful,wimp,vanish,unbearable,tonic,suffice,suction,slaying,safest,rocking,relive,puttin,prettiest,noisy,newlyweds,nauseous,misguided,mildly,midst,liable,judgmental,indy,hunted,givin,fascinated,elephants,dislike,deluded,decorate,crummy,contractions,carve,bottled,bonded,bahamas,unavailable,twenties,trustworthy,surgeons,stupidity,skies,remorse,preferably,pies,nausea,napkins,mule,mourn,melted,mashed,inherit,greatness,golly,excused,dumbo,drifting,delirious,damaging,cubicle,compelled,comm,chooses,checkup,boredom,bandages,alarms,windshield,who're,whaddya,transparent,surprisingly,sunglasses,slit,roar,reade,prognosis,probe,pitiful,persistent,peas,nosy,nagging,morons,masterpiece,martinis,limbo,liars,irritating,inclined,hump,hoynes,fiasco,eatin,cubans,concentrating,colorful,clam,cider,brochure,barto,bargaining,wiggle,welcoming,weighing,vanquished,stains,sooo,snacks,smear,sire,resentment,psychologist,pint,overhear,morality,landingham,kisser,hoot,holling,handshake,grilled,formality,elevators,depths,confirms,boathouse,accidental,westbridge,wacko,ulterior,thugs,thighs,tangled,stirred,snag,sling,sleaze,rumour,ripe,remarried,puddle,pins,perceptive,miraculous,longing,lockup,librarian,impressions,immoral,hypothetically,guarding,gourmet,gabe,faxed,extortion,downright,digest,cranberry,bygones,buzzing,burying,bikes,weary,taping,takeout,sweeping,stepmother,stale,senor,seaborn,pros,pepperoni,newborn,ludicrous,injected,geeks,forged,faults,drue,dire,dief,desi,deceiving,caterer,calmed,budge,ankles,vending,typing,tribbiani,there're,squared,snowing,shades,sexist,rewrite,regretted,raises,picky,orphan,mural,misjudged,miscarriage,memorize,leaking,jitters,invade,interruption,illegally,handicapped,glitch,gittes,finer,distraught,dispose,dishonest,digs,dads,cruelty,circling,canceling,butterflies,belongings,barbrady,amusement,alias,zombies,where've,unborn,swearing,stables,squeezed,sensational,resisting,radioactive,questionable,privileged,portofino,owning,overlook,orson,oddly,interrogate,imperative,impeccable,hurtful,hors,heap,graders,glance,disgust,devious,destruct,crazier,countdown,chump,cheeseburger,burglar,berries,ballroom,assumptions,annoyed,allergy,admirer,admirable,activate,underpants,twit,tack,strokes,stool,sham,scrap,retarded,resourceful,remarkably,refresh,pressured,precautions,pointy,nightclub,mustache,maui,lace,hunh,hubby,flare,dont,dokey,dangerously,crushing,clinging,choked,chem,cheerleading,checkbook,cashmere,calmly,blush,believer,amazingly,alas,what've,toilets,tacos,stairwell,spirited,sewing,rubbed,punches,protects,nuisance,motherfuckers,mingle,kynaston,knack,kinkle,impose,gullible,godmother,funniest,friggin,folding,fashions,eater,dysfunctional,drool,dripping,ditto,cruising,criticize,conceive,clone,cedars,caliber,brighter,blinded,birthdays,banquet,anticipate,annoy,whim,whichever,volatile,veto,vested,shroud,rests,reindeer,quarantine,pleases,painless,orphans,orphanage,offence,obliged,negotiation,narcotics,mistletoe,meddling,manifest,lookit,lilah,intrigued,injustice,homicidal,gigantic,exposing,elves,disturbance,disastrous,depended,demented,correction,cooped,cheerful,buyers,brownies,beverage,basics,arvin,weighs,upsets,unethical,swollen,sweaters,stupidest,sensation,scalpel,props,prescribed,pompous,objections,mushrooms,mulwray,manipulation,lured,internship,insignificant,inmate,incentive,fulfilled,disagreement,crypt,cornered,copied,brightest,beethoven,attendant,amaze,yogurt,wyndemere,vocabulary,tulsa,tactic,stuffy,respirator,pretends,polygraph,pennies,ordinarily,olives,necks,morally,martyr,leftovers,joints,hopping,homey,hints,heartbroken,forge,florist,firsthand,fiend,dandy,crippled,corrected,conniving,conditioner,clears,chemo,bubbly,bladder,beeper,baptism,wiring,wench,weaknesses,volunteering,violating,unlocked,tummy,surrogate,subid,stray,startle,specifics,slowing,scoot,robbers,rightful,richest,qfxmjrie,puffs,pierced,pencils,paralysis,makeover,luncheon,linksynergy,jerky,jacuzzi,hitched,hangover,fracture,flock,firemen,disgusted,darned,clams,borrowing,banged,wildest,weirder,unauthorized,stunts,sleeves,sixties,shush,shalt,retro,quits,pegged,painfully,paging,omelet,memorized,lawfully,jackets,intercept,ingredient,grownup,glued,fulfilling,enchanted,delusion,daring,compelling,carton,bridesmaids,bribed,boiling,bathrooms,bandage,awaiting,assign,arrogance,antiques,ainsley,turkeys,trashing,stockings,stalked,stabilized,skates,sedated,robes,respecting,psyche,presumptuous,prejudice,paragraph,mocha,mints,mating,mantan,lorne,loads,listener,itinerary,hepatitis,heave,guesses,fading,examining,dumbest,dishwasher,deceive,cunning,cripple,convictions,confided,compulsive,compromising,burglary,bumpy,brainwashed,benes,arnie,affirmative,adrenaline,adamant,watchin,waitresses,transgenic,toughest,tainted,surround,stormed,spree,spilling,spectacle,soaking,shreds,sewers,severed,scarce,scamming,scalp,rewind,rehearsing,pretentious,potions,overrated,obstacle,nerds,meems,mcmurphy,maternity,maneuver,loathe,fertility,eloping,ecstatic,ecstasy,divorcing,dignan,costing,clubhouse,clocks,candid,bursting,breather,braces,bending,arsonist,adored,absorb,valiant,uphold,unarmed,topolsky,thrilling,thigh,terminate,sustain,spaceship,snore,sneeze,smuggling,salty,quaint,patronize,patio,morbid,mamma,kettle,joyous,invincible,interpret,insecurities,impulses,illusions,holed,exploit,drivin,defenseless,dedicate,cradle,coupon,countless,conjure,cardboard,booking,backseat,accomplishment,wordsworth,wisely,valet,vaccine,urges,unnatural,unlucky,truths,traumatized,tasting,swears,strawberries,steaks,stats,skank,seducing,secretive,scumbag,screwdriver,schedules,rooting,rightfully,rattled,qualifies,puppets,prospects,pronto,posse,polling,pedestal,palms,muddy,morty,microscope,merci,lecturing,inject,incriminate,hygiene,grapefruit,gazebo,funnier,cuter,bossy,booby,aides,zende,winthrop,warrants,valentines,undressed,underage,truthfully,tampered,suffers,speechless,sparkling,sidelines,shrek,railing,puberty,pesky,outrage,outdoors,motions,moods,lunches,litter,kidnappers,itching,intuition,imitation,humility,hassling,gallons,drugstore,dosage,disrupt,dipping,deranged,debating,cuckoo,cremated,craziness,cooperating,circumstantial,chimney,blinking,biscuits,admiring,weeping,triad,trashy,soothing,slumber,slayers,skirts,siren,shindig,sentiment,rosco,riddance,quaid,purity,proceeding,pretzels,panicking,mckechnie,lovin,leaked,intruding,impersonating,ignorance,hamburgers,footprints,fluke,fleas,festivities,fences,feisty,evacuate,emergencies,deceived,creeping,craziest,corpses,conned,coincidences,bounced,bodyguards,blasted,bitterness,baloney,ashtray,apocalypse,zillion,watergate,wallpaper,telesave,sympathize,sweeter,startin,spades,sodas,snowed,sleepover,signor,seein,retainer,restroom,rested,repercussions,reliving,reconcile,prevail,preaching,overreact,o'neil,noose,moustache,manicure,maids,landlady,hypothetical,hopped,homesick,hives,hesitation,herbs,hectic,heartbreak,haunting,gangs,frown,fingerprint,exhausting,everytime,disregard,cling,chevron,chaperone,blinding,bitty,beads,battling,badgering,anticipation,upstanding,unprofessional,unhealthy,turmoil,truthful,toothpaste,tippin,thoughtless,tagataya,shooters,senseless,rewarding,propane,preposterous,pigeons,pastry,overhearing,obscene,negotiable,loner,jogging,itchy,insinuating,insides,hospitality,hormone,hearst,forthcoming,fists,fifties,etiquette,endings,destroys,despises,deprived,cuddy,crust,cloak,circumstance,chewed,casserole,bidder,bearer,artoo,applaud,appalling,vowed,virgins,vigilante,undone,throttle,testosterone,tailor,symptom,swoop,suitcases,stomp,sticker,stakeout,spoiling,snatched,smoochy,smitten,shameless,restraints,researching,renew,refund,reclaim,raoul,puzzles,purposely,punks,prosecuted,plaid,picturing,pickin,parasites,mysteriously,multiply,mascara,jukebox,interruptions,gunfire,furnace,elbows,duplicate,drapes,deliberate,decoy,cryptic,coupla,condemn,complicate,colossal,clerks,clarity,brushed,banished,argon,alarmed,worships,versa,uncanny,technicality,sundae,stumble,stripping,shuts,schmuck,satin,saliva,robber,relentless,reconnect,recipes,rearrange,rainy,psychiatrists,policemen,plunge,plugged,patched,overload,o'malley,mindless,menus,lullaby,lotte,leavin,killin,karinsky,invalid,hides,grownups,griff,flaws,flashy,flaming,fettes,evicted,dread,degrassi,dealings,dangers,cushion,bowel,barged,abide,abandoning,wonderfully,wait'll,violate,suicidal,stayin,sorted,slamming,sketchy,shoplifting,raiser,quizmaster,prefers,needless,motherhood,momentarily,migraine,lifts,leukemia,leftover,keepin,hinks,hellhole,gowns,goodies,gallon,futures,entertained,eighties,conspiring,cheery,benign,apiece,adjustments,abusive,abduction,wiping,whipping,welles,unspeakable,unidentified,trivial,transcripts,textbook,supervise,superstitious,stricken,stimulating,spielberg,slices,shelves,scratches,sabotaged,retrieval,repressed,rejecting,quickie,ponies,peeking,outraged,o'connell,moping,moaning,mausoleum,licked,kovich,klutz,interrogating,interfered,insulin,infested,incompetence,hyper,horrified,handedly,gekko,fraid,fractured,examiner,eloped,disoriented,dashing,crashdown,courier,cockroach,chipped,brushing,bombed,bolts,baths,baptized,astronaut,assurance,anemia,abuela,abiding,withholding,weave,wearin,weaker,suffocating,straws,straightforward,stench,steamed,starboard,sideways,shrinks,shortcut,scram,roasted,roaming,riviera,respectfully,repulsive,psychiatry,provoked,penitentiary,painkillers,ninotchka,mitzvah,milligrams,midge,marshmallows,looky,lapse,kubelik,intellect,improvise,implant,goa'ulds,giddy,geniuses,fruitcake,footing,fightin,drinkin,doork,detour,cuddle,crashes,combo,colonnade,cheats,cetera,bailiff,auditioning,assed,amused,alienate,aiding,aching,unwanted,topless,tongues,tiniest,superiors,soften,sheldrake,rawley,raisins,presses,plaster,nessa,narrowed,minions,merciful,lawsuits,intimidating,infirmary,inconvenient,imposter,hugged,honoring,holdin,hades,godforsaken,fumes,forgery,foolproof,folder,flattery,fingertips,exterminator,explodes,eccentric,dodging,disguised,crave,constructive,concealed,compartment,chute,chinpokomon,bodily,astronauts,alimony,accustomed,abdominal,wrinkle,wallow,valium,untrue,uncover,trembling,treasures,torched,toenails,timed,termites,telly,taunting,taransky,talker,succubus,smarts,sliding,sighting,semen,seizures,scarred,savvy,sauna,saddest,sacrificing,rubbish,riled,ratted,rationally,provenance,phonse,perky,pedal,overdose,nasal,nanites,mushy,movers,missus,midterm,merits,melodramatic,manure,knitting,invading,interpol,incapacitated,hotline,hauling,gunpoint,grail,ganza,framing,flannel,faded,eavesdrop,desserts,calories,breathtaking,bleak,blacked,batter,aggravated,yanked,wigand,whoah,unwind,undoubtedly,unattractive,twitch,trimester,torrance,timetable,taxpayers,strained,stared,slapping,sincerity,siding,shenanigans,shacking,sappy,samaritan,poorer,politely,paste,oysters,overruled,nightcap,mosquito,millimeter,merrier,manhood,lucked,kilos,ignition,hauled,harmed,goodwill,freshmen,fenmore,fasten,farce,exploding,erratic,drunks,ditching,d'artagnan,cramped,contacting,closets,clientele,chimp,bargained,arranging,anesthesia,amuse,altering,afternoons,accountable,abetting,wolek,waved,uneasy,toddy,tattooed,spauldings,sliced,sirens,schibetta,scatter,rinse,remedy,redemption,pleasures,optimism,oblige,mmmmm,masked,malicious,mailing,kosher,kiddies,judas,isolate,insecurity,incidentally,heals,headlights,growl,grilling,glazed,flunk,floats,fiery,fairness,exercising,excellency,disclosure,cupboard,counterfeit,condescending,conclusive,clicked,cleans,cholesterol,cashed,broccoli,brats,blueprints,blindfold,billing,attach,appalled,alrighty,wynant,unsolved,unreliable,toots,tighten,sweatshirt,steinbrenner,steamy,spouse,sonogram,slots,sleepless,shines,retaliate,rephrase,redeem,rambling,quilt,quarrel,prying,proverbial,priced,prescribe,prepped,pranks,possessive,plaintiff,pediatrics,overlooked,outcast,nightgown,mumbo,mediocre,mademoiselle,lunchtime,lifesaver,leaned,lambs,interns,hounding,hellmouth,hahaha,goner,ghoul,gardening,frenzy,foyer,extras,exaggerate,everlasting,enlightened,dialed,devote,deceitful,d'oeuvres,cosmetic,contaminated,conspired,conning,cavern,carving,butting,boiled,blurry,babysit,ascension,aaaaah,wildly,whoopee,whiny,weiskopf,walkie,vultures,vacations,upfront,unresolved,tampering,stockholders,snaps,sleepwalking,shrunk,sermon,seduction,scams,revolve,phenomenal,patrolling,paranormal,ounces,omigod,nightfall,lashing,innocents,infierno,incision,humming,haunts,gloss,gloating,frannie,fetal,feeny,entrapment,discomfort,detonator,dependable,concede,complication,commotion,commence,chulak,caucasian,casually,brainer,bolie,ballpark,anwar,analyzing,accommodations,youse,wring,wallowing,transgenics,thrive,tedious,stylish,strippers,sterile,squeezing,squeaky,sprained,solemn,snoring,shattering,shabby,seams,scrawny,revoked,residue,reeks,recite,ranting,quoting,predicament,plugs,pinpoint,petrified,pathological,passports,oughtta,nighter,navigate,kippie,intrigue,intentional,insufferable,hunky,how've,horrifying,hearty,hamptons,grazie,funerals,forks,fetched,excruciating,enjoyable,endanger,dumber,drying,diabolical,crossword,corry,comprehend,clipped,classmates,candlelight,brutally,brutality,boarded,bathrobe,authorize,assemble,aerobics,wholesome,whiff,vermin,trophies,trait,tragically,toying,testy,tasteful,stocked,spinach,sipping,sidetracked,scrubbing,scraping,sanctity,robberies,ridin,retribution,refrain,realities,radiant,protesting,projector,plutonium,payin,parting,o'reilly,nooooo,motherfucking,measly,manic,lalita,juggling,jerking,intro,inevitably,hypnosis,huddle,horrendous,hobbies,heartfelt,harlin,hairdresser,gonorrhea,fussing,furtwangler,fleeting,flawless,flashed,fetus,eulogy,distinctly,disrespectful,denies,crossbow,cregg,crabs,cowardly,contraction,contingency,confirming,condone,coffins,cleansing,cheesecake,certainty,cages,c'est,briefed,bravest,bosom,boils,binoculars,bachelorette,appetizer,ambushed,alerted,woozy,withhold,vulgar,utmost,unleashed,unholy,unhappiness,unconditional,typewriter,typed,twists,supermodel,subpoenaed,stringing,skeptical,schoolgirl,romantically,rocked,revoir,reopen,puncture,preach,polished,planetarium,penicillin,peacefully,nurturing,more'n,mmhmm,midgets,marklar,lodged,lifeline,jellyfish,infiltrate,hutch,horseback,heist,gents,frickin,freezes,forfeit,flakes,flair,fathered,eternally,epiphany,disgruntled,discouraged,delinquent,decipher,danvers,cubes,credible,coping,chills,cherished,catastrophe,bombshell,birthright,billionaire,ample,affections,admiration,abbotts,whatnot,watering,vinegar,unthinkable,unseen,unprepared,unorthodox,underhanded,uncool,timeless,thump,thermometer,theoretically,tapping,tagged,swung,stares,spiked,solves,smuggle,scarier,saucer,quitter,prudent,powdered,poked,pointers,peril,penetrate,penance,opium,nudge,nostrils,neurological,mockery,mobster,medically,loudly,insights,implicate,hypocritical,humanly,holiness,healthier,hammered,haldeman,gunman,gloom,freshly,francs,flunked,flawed,emptiness,drugging,dozer,derevko,deprive,deodorant,cryin,crocodile,coloring,colder,cognac,clocked,clippings,charades,chanting,certifiable,caterers,brute,brochures,botched,blinders,bitchin,banter,woken,ulcer,tread,thankfully,swine,swimsuit,swans,stressing,steaming,stamped,stabilize,squirm,snooze,shuffle,shredded,seafood,scratchy,savor,sadistic,rhetorical,revlon,realist,prosecuting,prophecies,polyester,petals,persuasion,paddles,o'leary,nuthin,neighbour,negroes,muster,meningitis,matron,lockers,letterman,legged,indictment,hypnotized,housekeeping,hopelessly,hallucinations,grader,goldilocks,girly,flask,envelopes,downside,doves,dissolve,discourage,disapprove,diabetic,deliveries,decorator,crossfire,criminally,containment,comrades,complimentary,chatter,catchy,cashier,cartel,caribou,cardiologist,brawl,booted,barbershop,aryan,angst,administer,zellie,wreak,whistles,vandalism,vamps,uterus,upstate,unstoppable,understudy,tristin,transcript,tranquilizer,toxins,tonsils,stempel,spotting,spectator,spatula,softer,snotty,slinging,showered,sexiest,sensual,sadder,rimbaud,restrain,resilient,remission,reinstate,rehash,recollection,rabies,popsicle,plausible,pediatric,patronizing,ostrich,ortolani,oooooh,omelette,mistrial,marseilles,loophole,laughin,kevvy,irritated,infidelity,hypothermia,horrific,groupie,grinding,graceful,goodspeed,gestures,frantic,extradition,echelon,disks,dawnie,dared,damsel,curled,collateral,collage,chant,calculating,bumping,bribes,boardwalk,blinds,blindly,bleeds,bickering,beasts,backside,avenge,apprehended,anguish,abusing,youthful,yells,yanking,whomever,when'd,vomiting,vengeful,unpacking,unfamiliar,undying,tumble,trolls,treacherous,tipping,tantrum,tanked,summons,straps,stomped,stinkin,stings,staked,squirrels,sprinkles,speculate,sorting,skinned,sicko,sicker,shootin,shatter,seeya,schnapps,s'posed,ronee,respectful,regroup,regretting,reeling,reckoned,ramifications,puddy,projections,preschool,plissken,platonic,permalash,outdone,outburst,mutants,mugging,misfortune,miserably,miraculously,medications,margaritas,manpower,lovemaking,logically,leeches,latrine,kneel,inflict,impostor,hypocrisy,hippies,heterosexual,heightened,hecuba,healer,gunned,grooming,groin,gooey,gloomy,frying,friendships,fredo,firepower,fathom,exhaustion,evils,endeavor,eggnog,dreaded,d'arcy,crotch,coughing,coronary,cookin,consummate,congrats,companionship,caved,caspar,bulletproof,brilliance,breakin,brash,blasting,aloud,airtight,advising,advertise,adultery,aches,wronged,upbeat,trillion,thingies,tending,tarts,surreal,specs,specialize,spade,shrew,shaping,selves,schoolwork,roomie,recuperating,rabid,quart,provocative,proudly,pretenses,prenatal,pharmaceuticals,pacing,overworked,originals,nicotine,murderous,mileage,mayonnaise,massages,losin,interrogated,injunction,impartial,homing,heartbreaker,hacks,glands,giver,fraizh,flips,flaunt,englishman,electrocuted,dusting,ducking,drifted,donating,cylon,crutches,crates,cowards,comfortably,chummy,chitchat,childbirth,businesswoman,brood,blatant,bethy,barring,bagged,awakened,asbestos,airplanes,worshipped,winnings,why're,visualize,unprotected,unleash,trays,thicker,therapists,takeoff,streisand,storeroom,stethoscope,stacked,spiteful,sneaks,snapping,slaughtered,slashed,simplest,silverware,shits,secluded,scruples,scrubs,scraps,ruptured,roaring,receptionist,recap,raditch,radiator,pushover,plastered,pharmacist,perverse,perpetrator,ornament,ointment,nineties,napping,nannies,mousse,moors,momentary,misunderstandings,manipulator,malfunction,laced,kivar,kickin,infuriating,impressionable,holdup,hires,hesitated,headphones,hammering,groundwork,grotesque,graces,gauze,gangsters,frivolous,freeing,fours,forwarding,ferrars,faulty,fantasizing,extracurricular,empathy,divorces,detonate,depraved,demeaning,deadlines,dalai,cursing,cufflink,crows,coupons,comforted,claustrophobic,casinos,camped,busboy,bluth,bennetts,baskets,attacker,aplastic,angrier,affectionate,zapped,wormhole,weaken,unrealistic,unravel,unimportant,unforgettable,twain,suspend,superbowl,stutter,stewardess,stepson,standin,spandex,souvenirs,sociopath,skeletons,shivering,sexier,selfishness,scrapbook,ritalin,ribbons,reunite,remarry,relaxation,rattling,rapist,psychosis,prepping,poses,pleasing,pisses,piling,persecuted,padded,operatives,negotiator,natty,menopause,mennihan,martimmys,loyalties,laynie,lando,justifies,intimately,inexperienced,impotent,immortality,horrors,hooky,hinges,heartbreaking,handcuffed,gypsies,guacamole,grovel,graziella,goggles,gestapo,fussy,ferragamo,feeble,eyesight,explosions,experimenting,enchanting,doubtful,dizziness,dismantle,detectors,deserving,defective,dangling,dancin,crumble,creamed,cramping,conceal,clockwork,chrissakes,chrissake,chopping,cabinets,brooding,bonfire,blurt,bloated,blackmailer,beforehand,bathed,bathe,barcode,banish,badges,babble,await,attentive,aroused,antibodies,animosity,ya'll,wrinkled,wonderland,willed,whisk,waltzing,waitressing,vigilant,upbringing,unselfish,uncles,trendy,trajectory,striped,stamina,stalled,staking,stacks,spoils,snuff,snooty,snide,shrinking,senora,secretaries,scoundrel,saline,salads,rundown,riddles,relapse,recommending,raspberry,plight,pecan,pantry,overslept,ornaments,niner,negligent,negligence,nailing,mucho,mouthed,monstrous,malpractice,lowly,loitering,logged,lingering,lettin,lattes,kamal,juror,jillefsky,jacked,irritate,intrusion,insatiable,infect,impromptu,icing,hmmmm,hefty,gasket,frightens,flapping,firstborn,faucet,estranged,envious,dopey,doesn,disposition,disposable,disappointments,dipped,dignified,deceit,dealership,deadbeat,curses,coven,counselors,concierge,clutches,casbah,callous,cahoots,brotherly,britches,brides,bethie,beige,autographed,attendants,attaboy,astonishing,appreciative,antibiotic,aneurysm,afterlife,affidavit,zoning,whats,whaddaya,vasectomy,unsuspecting,toula,topanga,tonio,toasted,tiring,terrorized,tenderness,tailing,sweats,suffocated,sucky,subconsciously,starvin,sprouts,spineless,sorrows,snowstorm,smirk,slicery,sledding,slander,simmer,signora,sigmund,seventies,sedate,scented,sandals,rollers,retraction,resigning,recuperate,receptive,racketeering,queasy,provoking,priors,prerogative,premed,pinched,pendant,outsiders,orbing,opportunist,olanov,neurologist,nanobot,mommies,molested,misread,mannered,laundromat,intercom,inspect,insanely,infatuation,indulgent,indiscretion,inconsiderate,hurrah,howling,herpes,hasta,harassed,hanukkah,groveling,groosalug,gander,galactica,futile,fridays,flier,fixes,exploiting,exorcism,evasive,endorse,emptied,dreary,dreamy,downloaded,dodged,doctored,disobeyed,disneyland,disable,dehydrated,contemplating,coconuts,cockroaches,clogged,chilling,chaperon,cameraman,bulbs,bucklands,bribing,brava,bracelets,bowels,bluepoint,appetizers,appendix,antics,anointed,analogy,almonds,yammering,winch,weirdness,wangler,vibrations,vendor,unmarked,unannounced,twerp,trespass,travesty,transfusion,trainee,towelie,tiresome,straightening,staggering,sonar,socializing,sinus,sinners,shambles,serene,scraped,scones,scepter,sarris,saberhagen,ridiculously,ridicule,rents,reconciled,radios,publicist,pubes,prune,prude,precrime,postponing,pluck,perish,peppermint,peeled,overdo,nutshell,nostalgic,mulan,mouthing,mistook,meddle,maybourne,martimmy,lobotomy,livelihood,lippman,likeness,kindest,kaffee,jocks,jerked,jeopardizing,jazzed,insured,inquisition,inhale,ingenious,holier,helmets,heirloom,heinous,haste,harmsway,hardship,hanky,gutters,gruesome,groping,goofing,godson,glare,finesse,figuratively,ferrie,endangerment,dreading,dozed,dorky,dmitri,divert,discredit,dialing,cufflinks,crutch,craps,corrupted,cocoon,cleavage,cannery,bystander,brushes,bruising,bribery,brainstorm,bolted,binge,ballistics,astute,arroway,adventurous,adoptive,addicts,addictive,yadda,whitelighters,wematanye,weeds,wedlock,wallets,vulnerability,vroom,vents,upped,unsettling,unharmed,trippin,trifle,tracing,tormenting,thats,syphilis,subtext,stickin,spices,sores,smacked,slumming,sinks,signore,shitting,shameful,shacked,septic,seedy,righteousness,relish,rectify,ravishing,quickest,phoebs,perverted,peeing,pedicure,pastrami,passionately,ozone,outnumbered,oregano,offender,nukes,nosed,nighty,nifty,mounties,motivate,moons,misinterpreted,mercenary,mentality,marsellus,lupus,lumbar,lovesick,lobsters,leaky,laundering,latch,jafar,instinctively,inspires,indoors,incarcerated,hundredth,handkerchief,gynecologist,guittierez,groundhog,grinning,goodbyes,geese,fullest,eyelashes,eyelash,enquirer,endlessly,elusive,disarm,detest,deluding,dangle,cotillion,corsage,conjugal,confessional,cones,commandment,coded,coals,chuckle,christmastime,cheeseburgers,chardonnay,celery,campfire,calming,burritos,brundle,broflovski,brighten,borderline,blinked,bling,beauties,bauers,battered,articulate,alienated,ahhhhh,agamemnon,accountants,y'see,wrongful,wrapper,workaholic,winnebago,whispered,warts,vacate,unworthy,unanswered,tonane,tolerated,throwin,throbbing,thrills,thorns,thereof,there've,tarot,sunscreen,stretcher,stereotype,soggy,sobbing,sizable,sightings,shucks,shrapnel,sever,senile,seaboard,scorned,saver,rebellious,rained,putty,prenup,pores,pinching,pertinent,peeping,paints,ovulating,opposites,occult,nutcracker,nutcase,newsstand,newfound,mocked,midterms,marshmallow,marbury,maclaren,leans,krudski,knowingly,keycard,junkies,juilliard,jolinar,irritable,invaluable,inuit,intoxicating,instruct,insolent,inexcusable,incubator,illustrious,hunsecker,houseguest,homosexuals,homeroom,hernia,harming,handgun,hallways,hallucination,gunshots,groupies,groggy,goiter,gingerbread,giggling,frigging,fledged,fedex,fairies,exchanging,exaggeration,esteemed,enlist,drags,dispense,disloyal,disconnect,desks,dentists,delacroix,degenerate,daydreaming,cushions,cuddly,corroborate,complexion,compensated,cobbler,closeness,chilled,checkmate,channing,carousel,calms,bylaws,benefactor,ballgame,baiting,backstabbing,artifact,airspace,adversary,actin,accuses,accelerant,abundantly,abstinence,zissou,zandt,yapping,witchy,willows,whadaya,vilandra,veiled,undress,undivided,underestimating,ultimatums,twirl,truckload,tremble,toasting,tingling,tents,tempered,sulking,stunk,sponges,spills,softly,snipers,scourge,rooftop,riana,revolting,revisit,refreshments,redecorating,recapture,raysy,pretense,prejudiced,precogs,pouting,poofs,pimple,piles,pediatrician,padre,packets,paces,orvelle,oblivious,objectivity,nighttime,nervosa,mexicans,meurice,melts,matchmaker,maeby,lugosi,lipnik,leprechaun,kissy,kafka,introductions,intestines,inspirational,insightful,inseparable,injections,inadvertently,hussy,huckabees,hittin,hemorrhaging,headin,haystack,hallowed,grudges,granilith,grandkids,grading,gracefully,godsend,gobbles,fragrance,fliers,finchley,farts,eyewitnesses,expendable,existential,dorms,delaying,degrading,deduction,darlings,danes,cylons,counsellor,contraire,consciously,conjuring,congratulating,cokes,buffay,brooch,bitching,bistro,bijou,bewitched,benevolent,bends,bearings,barren,aptitude,amish,amazes,abomination,worldly,whispers,whadda,wayward,wailing,vanishing,upscale,untouchable,unspoken,uncontrollable,unavoidable,unattended,trite,transvestite,toupee,timid,timers,terrorizing,swana,stumped,strolling,storybook,storming,stomachs,stoked,stationery,springtime,spontaneity,spits,spins,soaps,sentiments,scramble,scone,rooftops,retract,reflexes,rawdon,ragged,quirky,quantico,psychologically,prodigal,pounce,potty,pleasantries,pints,petting,perceive,onstage,notwithstanding,nibble,newmans,neutralize,mutilated,millionaires,mayflower,masquerade,mangy,macreedy,lunatics,lovable,locating,limping,lasagna,kwang,keepers,juvie,jaded,ironing,intuitive,intensely,insure,incantation,hysteria,hypnotize,humping,happenin,griet,grasping,glorified,ganging,g'night,focker,flunking,flimsy,flaunting,fixated,fitzwallace,fainting,eyebrow,exonerated,ether,electrician,egotistical,earthly,dusted,dignify,detonation,debrief,dazzling,dan'l,damnedest,daisies,crushes,crucify,contraband,confronting,collapsing,cocked,clicks,cliche,circled,chandelier,carburetor,callers,broads,breathes,bloodshed,blindsided,blabbing,bialystock,bashing,ballerina,aviva,arteries,anomaly,airstrip,agonizing,adjourn,aaaaa,yearning,wrecker,witnessing,whence,warhead,unsure,unheard,unfreeze,unfold,unbalanced,ugliest,troublemaker,toddler,tiptoe,threesome,thirties,thermostat,swipe,surgically,subtlety,stung,stumbling,stubs,stride,strangling,sprayed,socket,smuggled,showering,shhhhh,sabotaging,rumson,rounding,risotto,repairman,rehearsed,ratty,ragging,radiology,racquetball,racking,quieter,quicksand,prowl,prompt,premeditated,prematurely,prancing,porcupine,plated,pinocchio,peeked,peddle,panting,overweight,overrun,outing,outgrown,obsess,nursed,nodding,negativity,negatives,musketeers,mugger,motorcade,merrily,matured,masquerading,marvellous,maniacs,lovey,louse,linger,lilies,lawful,kudos,knuckle,juices,judgments,itches,intolerable,intermission,inept,incarceration,implication,imaginative,huckleberry,holster,heartburn,gunna,groomed,graciously,fulfillment,fugitives,forsaking,forgives,foreseeable,flavors,flares,fixation,fickle,fantasize,famished,fades,expiration,exclamation,erasing,eiffel,eerie,earful,duped,dulles,dissing,dissect,dispenser,dilated,detergent,desdemona,debriefing,damper,curing,crispina,crackpot,courting,cordial,conflicted,comprehension,commie,cleanup,chiropractor,charmer,chariot,cauldron,catatonic,bullied,buckets,brilliantly,breathed,booths,boardroom,blowout,blindness,blazing,biologically,bibles,biased,beseech,barbaric,balraj,audacity,anticipating,alcoholics,airhead,agendas,admittedly,absolution,youre,yippee,wittlesey,withheld,willful,whammy,weakest,washes,virtuous,videotapes,vials,unplugged,unpacked,unfairly,turbulence,tumbling,tricking,tremendously,traitors,torches,tinga,thyroid,teased,tawdry,taker,sympathies,swiped,sundaes,suave,strut,stepdad,spewing,spasm,socialize,slither,simulator,shutters,shrewd,shocks,semantics,schizophrenic,scans,savages,rya'c,runny,ruckus,royally,roadblocks,rewriting,revoke,repent,redecorate,recovers,recourse,ratched,ramali,racquet,quince,quiche,puppeteer,puking,puffed,problemo,praises,pouch,postcards,pooped,poised,piled,phoney,phobia,patching,parenthood,pardner,oozing,ohhhhh,numbing,nostril,nosey,neatly,nappa,nameless,mortuary,moronic,modesty,midwife,mcclane,matuka,maitre,lumps,lucid,loosened,loins,lawnmower,lamotta,kroehner,jinxy,jessep,jamming,jailhouse,jacking,intruders,inhuman,infatuated,indigestion,implore,implanted,hormonal,hoboken,hillbilly,heartwarming,headway,hatched,hartmans,harping,grapevine,gnome,forties,flyin,flirted,fingernail,exhilarating,enjoyment,embark,dumper,dubious,drell,docking,disillusioned,dishonor,disbarred,dicey,custodial,counterproductive,corned,cords,contemplate,concur,conceivable,cobblepot,chickened,checkout,carpe,cap'n,campers,buyin,bullies,braid,boxed,bouncy,blueberries,blubbering,bloodstream,bigamy,beeped,bearable,autographs,alarming,wretch,wimps,widower,whirlwind,whirl,warms,vandelay,unveiling,undoing,unbecoming,turnaround,touche,togetherness,tickles,ticker,teensy,taunt,sweethearts,stitched,standpoint,staffers,spotless,soothe,smothered,sickening,shouted,shepherds,shawl,seriousness,schooled,schoolboy,s'mores,roped,reminders,raggedy,preemptive,plucked,pheromones,particulars,pardoned,overpriced,overbearing,outrun,ohmigod,nosing,nicked,neanderthal,mosquitoes,mortified,milky,messin,mecha,markinson,marivellas,mannequin,manderley,madder,macready,lookie,locusts,lifetimes,lanna,lakhi,kholi,impersonate,hyperdrive,horrid,hopin,hogging,hearsay,harpy,harboring,hairdo,hafta,grasshopper,gobble,gatehouse,foosball,floozy,fished,firewood,finalize,felons,euphemism,entourage,elitist,elegance,drokken,drier,dredge,dossier,diseased,diarrhea,diagnose,despised,defuse,d'amour,contesting,conserve,conscientious,conjured,collars,clogs,chenille,chatty,chamomile,casing,calculator,brittle,breached,blurted,birthing,bikinis,astounding,assaulting,aroma,appliance,antsy,amnio,alienating,aliases,adolescence,xerox,wrongs,workload,willona,whistling,werewolves,wallaby,unwelcome,unseemly,unplug,undermining,ugliness,tyranny,tuesdays,trumpets,transference,ticks,tangible,tagging,swallowing,superheroes,studs,strep,stowed,stomping,steffy,sprain,spouting,sponsoring,sneezing,smeared,slink,shakin,sewed,seatbelt,scariest,scammed,sanctimonious,roasting,rightly,retinal,rethinking,resented,reruns,remover,racks,purest,progressing,presidente,preeclampsia,postponement,portals,poppa,pliers,pinning,pelvic,pampered,padding,overjoyed,ooooo,one'll,octavius,nonono,nicknames,neurosurgeon,narrows,misled,mislead,mishap,milltown,milking,meticulous,mediocrity,meatballs,machete,lurch,layin,knockin,khruschev,jurors,jumpin,jugular,jeweler,intellectually,inquiries,indulging,indestructible,indebted,imitate,ignores,hyperventilating,hyenas,hurrying,hermano,hellish,heheh,harshly,handout,grunemann,glances,giveaway,getup,gerome,furthest,frosting,frail,forwarded,forceful,flavored,flammable,flaky,fingered,fatherly,ethic,embezzlement,duffel,dotted,distressed,disobey,disappearances,dinky,diminish,diaphragm,deuces,creme,courteous,comforts,coerced,clots,clarification,chunks,chickie,chases,chaperoning,cartons,caper,calves,caged,bustin,bulging,bringin,boomhauer,blowin,blindfolded,biscotti,ballplayer,bagging,auster,assurances,aschen,arraigned,anonymity,alters,albatross,agreeable,adoring,abduct,wolfi,weirded,watchers,washroom,warheads,vincennes,urgency,understandably,uncomplicated,uhhhh,twitching,treadmill,thermos,tenorman,tangle,talkative,swarm,surrendering,summoning,strive,stilts,stickers,squashed,spraying,sparring,soaring,snort,sneezed,slaps,skanky,singin,sidle,shreck,shortness,shorthand,sharper,shamed,sadist,rydell,rusik,roulette,resumes,respiration,recount,reacts,purgatory,princesses,presentable,ponytail,plotted,pinot,pigtails,phillippe,peddling,paroled,orbed,offends,o'hara,moonlit,minefield,metaphors,malignant,mainframe,magicks,maggots,maclaine,loathing,leper,leaps,leaping,lashed,larch,larceny,lapses,ladyship,juncture,jiffy,jakov,invoke,infantile,inadmissible,horoscope,hinting,hideaway,hesitating,heddy,heckles,hairline,gripe,gratifying,governess,goebbels,freddo,foresee,fascination,exemplary,executioner,etcetera,escorts,endearing,eaters,earplugs,draped,disrupting,disagrees,dimes,devastate,detain,depositions,delicacy,darklighter,cynicism,cyanide,cutters,cronus,continuance,conquering,confiding,compartments,combing,cofell,clingy,cleanse,christmases,cheered,cheekbones,buttle,burdened,bruenell,broomstick,brained,bozos,bontecou,bluntman,blazes,blameless,bizarro,bellboy,beaucoup,barkeep,awaken,astray,assailant,appease,aphrodisiac,alleys,yesss,wrecks,woodpecker,wondrous,wimpy,willpower,wheeling,weepy,waxing,waive,videotaped,veritable,untouched,unlisted,unfounded,unforeseen,twinge,triggers,traipsing,toxin,tombstone,thumping,therein,testicles,telephones,tarmac,talby,tackled,swirling,suicides,suckered,subtitles,sturdy,strangler,stockbroker,stitching,steered,standup,squeal,sprinkler,spontaneously,splendor,spiking,spender,snipe,snagged,skimming,siddown,showroom,shovels,shotguns,shoelaces,shitload,shellfish,sharpest,shadowy,seizing,scrounge,scapegoat,sayonara,saddled,rummaging,roomful,renounce,reconsidered,recharge,realistically,radioed,quirks,quadrant,punctual,practising,pours,poolhouse,poltergeist,pocketbook,plainly,picnics,pesto,pawing,passageway,partied,oneself,numero,nostalgia,nitwit,neuro,mixer,meanest,mcbeal,matinee,margate,marce,manipulations,manhunt,manger,magicians,loafers,litvack,lightheaded,lifeguard,lawns,laughingstock,ingested,indignation,inconceivable,imposition,impersonal,imbecile,huddled,housewarming,horizons,homicides,hiccups,hearse,hardened,gushing,gushie,greased,goddamit,freelancer,forging,fondue,flustered,flung,flinch,flicker,fixin,festivus,fertilizer,farted,faggots,exonerate,evict,enormously,encrypted,emdash,embracing,duress,dupres,dowser,doormat,disfigured,disciplined,dibbs,depository,deathbed,dazzled,cuttin,cures,crowding,crepe,crammed,copycat,contradict,confidant,condemning,conceited,commute,comatose,clapping,circumference,chuppah,chore,choksondik,chestnuts,briault,bottomless,bonnet,blokes,berluti,beret,beggars,bankroll,bania,athos,arsenic,apperantly,ahhhhhh,afloat,accents,zipped,zeros,zeroes,zamir,yuppie,youngsters,yorkers,wisest,wipes,wield,whyn't,weirdos,wednesdays,vicksburg,upchuck,untraceable,unsupervised,unpleasantness,unhook,unconscionable,uncalled,trappings,tragedies,townie,thurgood,things'll,thine,tetanus,terrorize,temptations,tanning,tampons,swarming,straitjacket,steroid,startling,starry,squander,speculating,sollozzo,sneaked,slugs,skedaddle,sinker,silky,shortcomings,sellin,seasoned,scrubbed,screwup,scrapes,scarves,sandbox,salesmen,rooming,romances,revere,reproach,reprieve,rearranging,ravine,rationalize,raffle,punchy,psychobabble,provocation,profoundly,prescriptions,preferable,polishing,poached,pledges,pirelli,perverts,oversized,overdressed,outdid,nuptials,nefarious,mouthpiece,motels,mopping,mongrel,missin,metaphorically,mertin,memos,melodrama,melancholy,measles,meaner,mantel,maneuvering,mailroom,luring,listenin,lifeless,licks,levon,legwork,kneecaps,kippur,kiddie,kaput,justifiable,insistent,insidious,innuendo,innit,indecent,imaginable,horseshit,hemorrhoid,hella,healthiest,haywire,hamsters,hairbrush,grouchy,grisly,gratuitous,glutton,glimmer,gibberish,ghastly,gentler,generously,geeky,fuhrer,fronting,foolin,faxes,faceless,extinguisher,expel,etched,endangering,ducked,dodgeball,dives,dislocated,discrepancy,devour,derail,dementia,daycare,cynic,crumbling,cowardice,covet,cornwallis,corkscrew,cookbook,commandments,coincidental,cobwebs,clouded,clogging,clicking,clasp,chopsticks,chefs,chaps,cashing,carat,calmer,brazen,brainwashing,bradys,bowing,boned,bloodsucking,bleachers,bleached,bedpan,bearded,barrenger,bachelors,awwww,assures,assigning,asparagus,apprehend,anecdote,amoral,aggravation,afoot,acquaintances,accommodating,yakking,worshipping,wladek,willya,willies,wigged,whoosh,whisked,watered,warpath,volts,violates,valuables,uphill,unwise,untimely,unsavory,unresponsive,unpunished,unexplained,tubby,trolling,toxicology,tormented,toothache,tingly,timmiihh,thursdays,thoreau,terrifies,temperamental,telegrams,talkie,takers,symbiote,swirl,suffocate,stupider,strapping,steckler,springing,someway,sleepyhead,sledgehammer,slant,slams,showgirl,shoveling,shmoopy,sharkbait,shan't,scrambling,schematics,sandeman,sabbatical,rummy,reykjavik,revert,responsive,rescheduled,requisition,relinquish,rejoice,reckoning,recant,rebadow,reassurance,rattlesnake,ramble,primed,pricey,prance,pothole,pocus,persist,perpetrated,pekar,peeling,pastime,parmesan,pacemaker,overdrive,ominous,observant,nothings,noooooo,nonexistent,nodded,nieces,neglecting,nauseating,mutated,musket,mumbling,mowing,mouthful,mooseport,monologue,mistrust,meetin,masseuse,mantini,mailer,madre,lowlifes,locksmith,livid,liven,limos,liberating,lhasa,leniency,leering,laughable,lashes,lasagne,laceration,korben,katan,kalen,jittery,jammies,irreplaceable,intubate,intolerant,inhaler,inhaled,indifferent,indifference,impound,impolite,humbly,heroics,heigh,guillotine,guesthouse,grounding,grips,gossiping,goatee,gnomes,gellar,frutt,frobisher,freudian,foolishness,flagged,femme,fatso,fatherhood,fantasized,fairest,faintest,eyelids,extravagant,extraterrestrial,extraordinarily,escalator,elevate,drivel,dissed,dismal,disarray,dinnertime,devastation,dermatologist,delicately,defrost,debutante,debacle,damone,dainty,cuvee,culpa,crucified,creeped,crayons,courtship,convene,congresswoman,concocted,compromises,comprende,comma,coleslaw,clothed,clinically,chickenshit,checkin,cesspool,caskets,calzone,brothel,boomerang,bodega,blasphemy,bitsy,bicentennial,berlini,beatin,beards,barbas,barbarians,backpacking,arrhythmia,arousing,arbitrator,antagonize,angling,anesthetic,altercation,aggressor,adversity,acathla,aaahhh,wreaking,workup,wonderin,wither,wielding,what'm,what'cha,waxed,vibrating,veterinarian,venting,vasey,valor,validate,upholstery,untied,unscathed,uninterrupted,unforgiving,undies,uncut,twinkies,tucking,treatable,treasured,tranquility,townspeople,torso,tomei,tipsy,tinsel,tidings,thirtieth,tantrums,tamper,talky,swayed,swapping,suitor,stylist,stirs,standoff,sprinklers,sparkly,snobby,snatcher,smoother,sleepin,shrug,shoebox,sheesh,shackles,setbacks,sedatives,screeching,scorched,scanned,satyr,roadblock,riverbank,ridiculed,resentful,repellent,recreate,reconvene,rebuttal,realmedia,quizzes,questionnaire,punctured,pucker,prolong,professionalism,pleasantly,pigsty,penniless,paychecks,patiently,parading,overactive,ovaries,orderlies,oracles,oiled,offending,nudie,neonatal,neighborly,moops,moonlighting,mobilize,mmmmmm,milkshake,menial,meats,mayan,maxed,mangled,magua,lunacy,luckier,liters,lansbury,kooky,knowin,jeopardized,inkling,inhalation,inflated,infecting,incense,inbound,impractical,impenetrable,idealistic,i'mma,hypocrites,hurtin,humbled,hologram,hokey,hocus,hitchhiking,hemorrhoids,headhunter,hassled,harts,hardworking,haircuts,hacksaw,genitals,gazillion,gammy,gamesphere,fugue,footwear,folly,flashlights,fives,filet,extenuating,estrogen,entails,embezzled,eloquent,egomaniac,ducts,drowsy,drones,doree,donovon,disguises,diggin,deserting,depriving,defying,deductible,decorum,decked,daylights,daybreak,dashboard,damnation,cuddling,crunching,crickets,crazies,councilman,coughed,conundrum,complimented,cohaagen,clutching,clued,clader,cheques,checkpoint,chats,channeling,ceases,carasco,capisce,cantaloupe,cancelling,campsite,burglars,breakfasts,bra'tac,blueprint,bleedin,blabbed,beneficiary,basing,avert,atone,arlyn,approves,apothecary,antiseptic,aleikuum,advisement,zadir,wobbly,withnail,whattaya,whacking,wedged,wanders,vaginal,unimaginable,undeniable,unconditionally,uncharted,unbridled,tweezers,tvmegasite,trumped,triumphant,trimming,treading,tranquilizers,toontown,thunk,suture,suppressing,strays,stonewall,stogie,stepdaughter,stace,squint,spouses,splashed,speakin,sounder,sorrier,sorrel,sombrero,solemnly,softened,snobs,snippy,snare,smoothing,slump,slimeball,slaving,silently,shiller,shakedown,sensations,scrying,scrumptious,screamin,saucy,santoses,roundup,roughed,rosary,robechaux,retrospect,rescind,reprehensible,repel,remodeling,reconsidering,reciprocate,railroaded,psychics,promos,prob'ly,pristine,printout,priestess,prenuptial,precedes,pouty,phoning,peppy,pariah,parched,panes,overloaded,overdoing,nymphs,nother,notebooks,nearing,nearer,monstrosity,milady,mieke,mephesto,medicated,marshals,manilow,mammogram,m'lady,lotsa,loopy,lesion,lenient,learner,laszlo,kross,kinks,jinxed,involuntary,insubordination,ingrate,inflatable,incarnate,inane,hypoglycemia,huntin,humongous,hoodlum,honking,hemorrhage,helpin,hathor,hatching,grotto,grandmama,gorillas,godless,girlish,ghouls,gershwin,frosted,flutter,flagpole,fetching,fatter,faithfully,exert,evasion,escalate,enticing,enchantress,elopement,drills,downtime,downloading,dorks,doorways,divulge,dissociative,disgraceful,disconcerting,deteriorate,destinies,depressive,dented,denim,decruz,decidedly,deactivate,daydreams,curls,culprit,cruelest,crippling,cranberries,corvis,copped,commend,coastguard,cloning,cirque,churning,chock,chivalry,catalogues,cartwheels,carols,canister,buttered,bundt,buljanoff,bubbling,brokers,broaden,brimstone,brainless,bores,badmouthing,autopilot,ascertain,aorta,ampata,allenby,accosted,absolve,aborted,aaagh,aaaaaah,yonder,yellin,wyndham,wrongdoing,woodsboro,wigging,wasteland,warranty,waltzed,walnuts,vividly,veggie,unnecessarily,unloaded,unicorns,understated,unclean,umbrellas,twirling,turpentine,tupperware,triage,treehouse,tidbit,tickled,threes,thousandth,thingie,terminally,teething,tassel,talkies,swoon,switchboard,swerved,suspiciously,subsequentlyne,subscribe,strudel,stroking,strictest,stensland,starin,stannart,squirming,squealing,sorely,softie,snookums,sniveling,smidge,sloth,skulking,simian,sightseeing,siamese,shudder,shoppers,sharpen,shannen,semtex,secondhand,seance,scowl,scorn,safekeeping,russe,rummage,roshman,roomies,roaches,rinds,retrace,retires,resuscitate,rerun,reputations,rekall,refreshment,reenactment,recluse,ravioli,raves,raking,purses,punishable,punchline,puked,prosky,previews,poughkeepsie,poppins,polluted,placenta,pissy,petulant,perseverance,pears,pawns,pastries,partake,panky,palate,overzealous,orchids,obstructing,objectively,obituaries,obedient,nothingness,musty,motherly,mooning,momentous,mistaking,minutemen,milos,microchip,meself,merciless,menelaus,mazel,masturbate,mahogany,lysistrata,lillienfield,likable,liberate,leveled,letdown,larynx,lardass,lainey,lagged,klorel,kidnappings,keyed,karmic,jeebies,irate,invulnerable,intrusive,insemination,inquire,injecting,informative,informants,impure,impasse,imbalance,illiterate,hurled,hunts,hematoma,headstrong,handmade,handiwork,growling,gorky,getcha,gesundheit,gazing,galley,foolishly,fondness,floris,ferocious,feathered,fateful,fancies,fakes,faker,expire,ever'body,essentials,eskimos,enlightening,enchilada,emissary,embolism,elsinore,ecklie,drenched,drazi,doped,dogging,doable,dislikes,dishonesty,disengage,discouraging,derailed,deformed,deflect,defer,deactivated,crips,constellations,congressmen,complimenting,clubbing,clawing,chromium,chimes,chews,cheatin,chaste,cellblock,caving,catered,catacombs,calamari,bucking,brulee,brits,brisk,breezes,bounces,boudoir,binks,better'n,bellied,behrani,behaves,bedding,balmy,badmouth,backers,avenging,aromatherapy,armpit,armoire,anythin,anonymously,anniversaries,aftershave,affliction,adrift,admissible,adieu,acquittal,yucky,yearn,whitter,whirlpool,wendigo,watchdog,wannabes,wakey,vomited,voicemail,valedictorian,uttered,unwed,unrequited,unnoticed,unnerving,unkind,unjust,uniformed,unconfirmed,unadulterated,unaccounted,uglier,turnoff,trampled,tramell,toads,timbuktu,throwback,thimble,tasteless,tarantula,tamale,takeovers,swish,supposing,streaking,stargher,stanzi,stabs,squeamish,splattered,spiritually,spilt,speciality,smacking,skywire,skips,skaara,simpatico,shredding,showin,shortcuts,shite,shielding,shamelessly,serafine,sentimentality,seasick,schemer,scandalous,sainted,riedenschneider,rhyming,revel,retractor,retards,resurrect,remiss,reminiscing,remanded,reiben,regains,refuel,refresher,redoing,redheaded,reassured,rearranged,rapport,qumar,prowling,prejudices,precarious,powwow,pondering,plunger,plunged,pleasantville,playpen,phlegm,perfected,pancreas,paley,ovary,outbursts,oppressed,ooohhh,omoroca,offed,o'toole,nurture,nursemaid,nosebleed,necktie,muttering,munchies,mucking,mogul,mitosis,misdemeanor,miscarried,millionth,migraines,midler,manicurist,mandelbaum,manageable,malfunctioned,magnanimous,loudmouth,longed,lifestyles,liddy,lickety,leprechauns,komako,klute,kennel,justifying,irreversible,inventing,intergalactic,insinuate,inquiring,ingenuity,inconclusive,incessant,improv,impersonation,hyena,humperdinck,hubba,housework,hoffa,hither,hissy,hippy,hijacked,heparin,hellooo,hearth,hassles,hairstyle,hahahaha,hadda,guys'll,gutted,gulls,gritty,grievous,graft,gossamer,gooder,gambled,gadgets,fundamentals,frustrations,frolicking,frock,frilly,foreseen,footloose,fondly,flirtation,flinched,flatten,farthest,exposer,evading,escrow,empathize,embryos,embodiment,ellsberg,ebola,dulcinea,dreamin,drawbacks,doting,doose,doofy,disturbs,disorderly,disgusts,detox,denominator,demeanor,deliriously,decode,debauchery,croissant,cravings,cranked,coworkers,councilor,confuses,confiscate,confines,conduit,compress,combed,clouding,clamps,cinch,chinnery,celebratory,catalogs,carpenters,carnal,canin,bundys,bulldozer,buggers,bueller,brainy,booming,bookstores,bloodbath,bittersweet,bellhop,beeping,beanstalk,beady,baudelaire,bartenders,bargains,averted,armadillo,appreciating,appraised,antlers,aloof,allowances,alleyway,affleck,abject,zilch,youore,xanax,wrenching,wouldn,witted,wicca,whorehouse,whooo,whips,vouchers,victimized,vicodin,untested,unsolicited,unfocused,unfettered,unfeeling,unexplainable,understaffed,underbelly,tutorial,tryst,trampoline,towering,tirade,thieving,thang,swimmin,swayzak,suspecting,superstitions,stubbornness,streamers,strattman,stonewalling,stiffs,stacking,spout,splice,sonrisa,smarmy,slows,slicing,sisterly,shrill,shined,seeming,sedley,seatbelts,scour,scold,schoolyard,scarring,salieri,rustling,roxbury,rewire,revved,retriever,reputable,remodel,reins,reincarnation,rance,rafters,rackets,quail,pumbaa,proclaim,probing,privates,pried,prewedding,premeditation,posturing,posterity,pleasurable,pizzeria,pimps,penmanship,penchant,pelvis,overturn,overstepped,overcoat,ovens,outsmart,outed,ooohh,oncologist,omission,offhand,odour,nyazian,notarized,nobody'll,nightie,navel,nabbed,mystique,mover,mortician,morose,moratorium,mockingbird,mobsters,mingling,methinks,messengered,merde,masochist,martouf,martians,marinara,manray,majorly,magnifying,mackerel,lurid,lugging,lonnegan,loathsome,llantano,liberace,leprosy,latinos,lanterns,lamest,laferette,kraut,intestine,innocencia,inhibitions,ineffectual,indisposed,incurable,inconvenienced,inanimate,improbable,implode,hydrant,hustling,hustled,huevos,how'm,hooey,hoods,honcho,hinge,hijack,heimlich,hamunaptra,haladki,haiku,haggle,gutsy,grunting,grueling,gribbs,greevy,grandstanding,godparents,glows,glistening,gimmick,gaping,fraiser,formalities,foreigner,folders,foggy,fitty,fiends,fe'nos,favours,eyeing,extort,expedite,escalating,epinephrine,entitles,entice,eminence,eights,earthlings,eagerly,dunville,dugout,doublemeat,doling,dispensing,dispatcher,discoloration,diners,diddly,dictates,diazepam,derogatory,delights,defies,decoder,dealio,danson,cutthroat,crumbles,croissants,crematorium,craftsmanship,could'a,cordless,cools,conked,confine,concealing,complicates,communique,cockamamie,coasters,clobbered,clipping,clipboard,clemenza,cleanser,circumcision,chanukah,certainaly,cellmate,cancels,cadmium,buzzed,bumstead,bucko,browsing,broth,braver,boggling,bobbing,blurred,birkhead,benet,belvedere,bellies,begrudge,beckworth,banky,baldness,baggy,babysitters,aversion,astonished,assorted,appetites,angina,amiss,ambulances,alibis,airway,admires,adhesive,yoyou,xxxxxx,wreaked,wracking,woooo,wooing,wised,wilshire,wedgie,waging,violets,vincey,uplifting,untrustworthy,unmitigated,uneventful,undressing,underprivileged,unburden,umbilical,tweaking,turquoise,treachery,tosses,torching,toothpick,toasts,thickens,tereza,tenacious,teldar,taint,swill,sweatin,subtly,subdural,streep,stopwatch,stockholder,stillwater,stalkers,squished,squeegee,splinters,spliced,splat,spied,spackle,sophistication,snapshots,smite,sluggish,slithered,skeeters,sidewalks,sickly,shrugs,shrubbery,shrieking,shitless,settin,sentinels,selfishly,scarcely,sangria,sanctum,sahjhan,rustle,roving,rousing,rosomorf,riddled,responsibly,renoir,remoray,remedial,refundable,redirect,recheck,ravenwood,rationalizing,ramus,ramelle,quivering,pyjamas,psychos,provocations,prouder,protestors,prodded,proctologist,primordial,pricks,prickly,precedents,pentangeli,pathetically,parka,parakeet,panicky,overthruster,outsmarted,orthopedic,oncoming,offing,nutritious,nuthouse,nourishment,nibbling,newlywed,narcissist,mutilation,mundane,mummies,mumble,mowed,morvern,mortem,mopes,molasses,misplace,miscommunication,miney,midlife,menacing,memorizing,massaging,masking,magnets,luxuries,lounging,lothario,liposuction,lidocaine,libbets,levitate,leeway,launcelot,larek,lackeys,kumbaya,kryptonite,knapsack,keyhole,katarangura,juiced,jakey,ironclad,invoice,intertwined,interlude,interferes,injure,infernal,indeedy,incur,incorrigible,incantations,impediment,igloo,hysterectomy,hounded,hollering,hindsight,heebie,havesham,hasenfuss,hankering,hangers,hakuna,gutless,gusto,grubbing,grrrr,grazed,gratification,grandeur,gorak,godammit,gnawing,glanced,frostbite,frees,frazzled,fraulein,fraternizing,fortuneteller,formaldehyde,followup,foggiest,flunky,flickering,firecrackers,figger,fetuses,fates,eyeliner,extremities,extradited,expires,exceedingly,evaporate,erupt,epileptic,entrails,emporium,egregious,eggshells,easing,duwayne,droll,dreyfuss,dovey,doubly,doozy,donkeys,donde,distrust,distressing,disintegrate,discreetly,decapitated,dealin,deader,dashed,darkroom,dares,daddies,dabble,cushy,cupcakes,cuffed,croupier,croak,crapped,coursing,coolers,contaminate,consummated,construed,condos,concoction,compulsion,commish,coercion,clemency,clairvoyant,circulate,chesterton,checkered,charlatan,chaperones,categorically,cataracts,carano,capsules,capitalize,burdon,bullshitting,brewed,breathless,breasted,brainstorming,bossing,borealis,bonsoir,bobka,boast,blimp,bleep,bleeder,blackouts,bisque,billboards,beatings,bayberry,bashed,bamboozled,balding,baklava,baffled,backfires,babak,awkwardness,attest,attachments,apologizes,anyhoo,antiquated,alcante,advisable,aahhh,aaahh,zatarc,yearbooks,wuddya,wringing,womanhood,witless,winging,whatsa,wetting,waterproof,wastin,vogelman,vocation,vindicated,vigilance,vicariously,venza,vacuuming,utensils,uplink,unveil,unloved,unloading,uninhibited,unattached,tweaked,turnips,trinkets,toughen,toting,topside,terrors,terrify,technologically,tarnish,tagliati,szpilman,surly,supple,summation,suckin,stepmom,squeaking,splashmore,souffle,solitaire,solicitation,solarium,smokers,slugged,slobbering,skylight,skimpy,sinuses,silenced,sideburns,shrinkage,shoddy,shhhhhh,shelled,shareef,shangri,seuss,serenade,scuffle,scoff,scanners,sauerkraut,sardines,sarcophagus,salvy,rusted,russells,rowboat,rolfsky,ringside,respectability,reparations,renegotiate,reminisce,reimburse,regimen,raincoat,quibble,puzzled,purposefully,pubic,proofing,prescribing,prelim,poisons,poaching,personalized,personable,peroxide,pentonville,payphone,payoffs,paleontology,overflowing,oompa,oddest,objecting,o'hare,o'daniel,notches,nobody'd,nightstand,neutralized,nervousness,nerdy,needlessly,naquadah,nappy,nantucket,nambla,mountaineer,motherfuckin,morrie,monopolizing,mohel,mistreated,misreading,misbehave,miramax,minivan,milligram,milkshakes,metamorphosis,medics,mattresses,mathesar,matchbook,matata,marys,malucci,magilla,lymphoma,lowers,lordy,linens,lindenmeyer,limelight,leapt,laxative,lather,lapel,lamppost,laguardia,kindling,kegger,kawalsky,juries,jokin,jesminder,interning,innermost,injun,infallible,industrious,indulgence,incinerator,impossibility,impart,illuminate,iguanas,hypnotic,hyped,hospitable,hoses,homemaker,hirschmuller,helpers,headset,guardianship,guapo,grubby,granola,granddaddy,goren,goblet,gluttony,globes,giorno,getter,geritol,gassed,gaggle,foxhole,fouled,foretold,floorboards,flippers,flaked,fireflies,feedings,fashionably,farragut,fallback,facials,exterminate,excites,everything'll,evenin,ethically,ensue,enema,empath,eluded,eloquently,eject,edema,dumpling,droppings,dolled,distasteful,disputing,displeasure,disdain,deterrent,dehydration,defied,decomposing,dawned,dailies,custodian,crusts,crucifix,crowning,crier,crept,craze,crawls,couldn,correcting,corkmaster,copperfield,cooties,contraption,consumes,conspire,consenting,consented,conquers,congeniality,complains,communicator,commendable,collide,coladas,colada,clout,clooney,classifieds,clammy,civility,cirrhosis,chink,catskills,carvers,carpool,carelessness,cardio,carbs,capades,butabi,busmalis,burping,burdens,bunks,buncha,bulldozers,browse,brockovich,breakthroughs,bravado,boogety,blossoms,blooming,bloodsucker,blight,betterton,betrayer,belittle,beeps,bawling,barts,bartending,bankbooks,babish,atropine,assertive,armbrust,anyanka,annoyance,anemic,anago,airwaves,aimlessly,aaargh,aaand,yoghurt,writhing,workable,winking,winded,widen,whooping,whiter,whatya,wazoo,voila,virile,vests,vestibule,versed,vanishes,urkel,uproot,unwarranted,unscheduled,unparalleled,undergrad,tweedle,turtleneck,turban,trickery,transponder,toyed,townhouse,thyself,thunderstorm,thinning,thawed,tether,technicalities,tau'ri,tarnished,taffeta,tacked,systolic,swerve,sweepstakes,swabs,suspenders,superwoman,sunsets,succulent,subpoenas,stumper,stosh,stomachache,stewed,steppin,stepatech,stateside,spicoli,sparing,soulless,sonnets,sockets,snatching,smothering,slush,sloman,slashing,sitters,simpleton,sighs,sidra,sickens,shunned,shrunken,showbiz,shopped,shimmering,shagging,semblance,segue,sedation,scuzzlebutt,scumbags,screwin,scoundrels,scarsdale,scabs,saucers,saintly,saddened,runaways,runaround,rheya,resenting,rehashing,rehabilitated,regrettable,refreshed,redial,reconnecting,ravenous,raping,rafting,quandary,pylea,putrid,puffing,psychopathic,prunes,probate,prayin,pomegranate,plummeting,planing,plagues,pinata,pithy,perversion,personals,perched,peeps,peckish,pavarotti,pajama,packin,pacifier,overstepping,okama,obstetrician,nutso,nuance,normalcy,nonnegotiable,nomak,ninny,nines,nicey,newsflash,neutered,nether,negligee,necrosis,navigating,narcissistic,mylie,muses,momento,moisturizer,moderation,misinformed,misconception,minnifield,mikkos,methodical,mebbe,meager,maybes,matchmaking,masry,markovic,malakai,luzhin,lusting,lumberjack,loopholes,loaning,lightening,leotard,launder,lamaze,kubla,kneeling,kibosh,jumpsuit,joliet,jogger,janover,jakovasaurs,irreparable,innocently,inigo,infomercial,inexplicable,indispensable,impregnated,impossibly,imitating,hunches,hummus,houmfort,hothead,hostiles,hooves,hooligans,homos,homie,hisself,heyyy,hesitant,hangout,handsomest,handouts,hairless,gwennie,guzzling,guinevere,grungy,goading,glaring,gavel,gardino,gangrene,fruitful,friendlier,freckle,freakish,forthright,forearm,footnote,flops,fixer,firecracker,finito,figgered,fezzik,fastened,farfetched,fanciful,familiarize,faire,fahrenheit,extravaganza,exploratory,explanatory,everglades,eunuch,estas,escapade,erasers,emptying,embarassing,dweeb,dutiful,dumplings,dries,drafty,dollhouse,dismissing,disgraced,discrepancies,disbelief,disagreeing,digestion,didnt,deviled,deviated,demerol,delectable,decaying,decadent,dears,dateless,d'algout,cultivating,cryto,crumpled,crumbled,cronies,crease,craves,cozying,corduroy,congratulated,confidante,compressions,complicating,compadre,coerce,classier,chums,chumash,chivalrous,chinpoko,charred,chafing,celibacy,carted,carryin,carpeting,carotid,cannibals,candor,butterscotch,busts,busier,bullcrap,buggin,brookside,brodski,brassiere,brainwash,brainiac,botrelle,bonbon,boatload,blimey,blaring,blackness,bipartisan,bimbos,bigamist,biebe,biding,betrayals,bestow,bellerophon,bedpans,bassinet,basking,barzini,barnyard,barfed,backups,audited,asinine,asalaam,arouse,applejack,annoys,anchovies,ampule,alameida,aggravate,adage,accomplices,yokel,y'ever,wringer,witwer,withdrawals,windward,willfully,whorfin,whimsical,whimpering,weddin,weathered,warmest,wanton,volant,visceral,vindication,veggies,urinate,uproar,unwritten,unwrap,unsung,unsubstantiated,unspeakably,unscrupulous,unraveling,unquote,unqualified,unfulfilled,undetectable,underlined,unattainable,unappreciated,ummmm,ulcers,tylenol,tweak,turnin,tuatha,tropez,trellis,toppings,tootin,toodle,tinkering,thrives,thespis,theatrics,thatherton,tempers,tavington,tartar,tampon,swelled,sutures,sustenance,sunflowers,sublet,stubbins,strutting,strewn,stowaway,stoic,sternin,stabilizing,spiraling,spinster,speedometer,speakeasy,soooo,soiled,sneakin,smithereens,smelt,smacks,slaughterhouse,slacks,skids,sketching,skateboards,sizzling,sixes,sirree,simplistic,shouts,shorted,shoelace,sheeit,shards,shackled,sequestered,selmak,seduces,seclusion,seamstress,seabeas,scoops,scooped,scavenger,satch,s'more,rudeness,romancing,rioja,rifkin,rieper,revise,reunions,repugnant,replicating,repaid,renewing,relaxes,rekindle,regrettably,regenerate,reels,reciting,reappear,readin,ratting,rapes,rancher,rammed,rainstorm,railroading,queers,punxsutawney,punishes,pssst,prudy,proudest,protectors,procrastinating,proactive,priss,postmortem,pompoms,poise,pickings,perfectionist,peretti,people'll,pecking,patrolman,paralegal,paragraphs,paparazzi,pankot,pampering,overstep,overpower,outweigh,omnipotent,odious,nuwanda,nurtured,newsroom,neeson,needlepoint,necklaces,neato,muggers,muffler,mousy,mourned,mosey,mopey,mongolians,moldy,misinterpret,minibar,microfilm,mendola,mended,melissande,masturbating,masbath,manipulates,maimed,mailboxes,magnetism,m'lord,m'honey,lymph,lunge,lovelier,lefferts,leezak,ledgers,larraby,laloosh,kundun,kozinski,knockoff,kissin,kiosk,kennedys,kellman,karlo,kaleidoscope,jeffy,jaywalking,instructing,infraction,informer,infarction,impulsively,impressing,impersonated,impeach,idiocy,hyperbole,hurray,humped,huhuh,hsing,hordes,hoodlums,honky,hitchhiker,hideously,heaving,heathcliff,headgear,headboard,hazing,harem,handprint,hairspray,gutiurrez,goosebumps,gondola,glitches,gasping,frolic,freeways,frayed,fortitude,forgetful,forefathers,fonder,foiled,foaming,flossing,flailing,fitzgeralds,firehouse,finders,fiftieth,fellah,fawning,farquaad,faraway,fancied,extremists,exorcist,exhale,ethros,entrust,ennui,energized,encephalitis,embezzling,elster,elixir,electrolytes,duplex,dryers,drexl,dredging,drawback,don'ts,dobisch,divorcee,disrespected,disprove,disobeying,disinfectant,dingy,digress,dieting,dictating,devoured,devise,detonators,desist,deserter,derriere,deron,deceptive,debilitating,deathwok,daffodils,curtsy,cursory,cuppa,cumin,cronkite,cremation,credence,cranking,coverup,courted,countin,counselling,cornball,contentment,consensual,compost,cluett,cleverly,cleansed,cleanliness,chopec,chomp,chins,chime,cheswick,chessler,cheapest,chatted,cauliflower,catharsis,catchin,caress,camcorder,calorie,cackling,bystanders,buttoned,buttering,butted,buries,burgel,buffoon,brogna,bragged,boutros,bogeyman,blurting,blurb,blowup,bloodhound,blissful,birthmark,bigot,bestest,belted,belligerent,beggin,befall,beeswax,beatnik,beaming,barricade,baggoli,badness,awoke,artsy,artful,aroun,armpits,arming,annihilate,anise,angiogram,anaesthetic,amorous,ambiance,alligators,adoration,admittance,adama,abydos,zonked,zhivago,yorkin,wrongfully,writin,wrappers,worrywart,woops,wonderfalls,womanly,wickedness,whoopie,wholeheartedly,whimper,which'll,wheelchairs,what'ya,warranted,wallop,wading,wacked,virginal,vermouth,vermeil,verger,ventriss,veneer,vampira,utero,ushers,urgently,untoward,unshakable,unsettled,unruly,unlocks,ungodly,undue,uncooperative,uncontrollably,unbeatable,twitchy,tumbler,truest,triumphs,triplicate,tribbey,tortures,tongaree,tightening,thorazine,theres,testifies,teenaged,tearful,taxing,taldor,syllabus,swoops,swingin,suspending,sunburn,stuttering,stupor,strides,strategize,strangulation,stooped,stipulation,stingy,stapled,squeaks,squawking,spoilsport,splicing,spiel,spencers,spasms,spaniard,softener,sodding,soapbox,smoldering,smithbauer,skittish,sifting,sickest,sicilians,shuffling,shrivel,segretti,seeping,securely,scurrying,scrunch,scrote,screwups,schenkman,sawing,savin,satine,sapiens,salvaging,salmonella,sacrilege,rumpus,ruffle,roughing,rotted,rondall,ridding,rickshaw,rialto,rhinestone,restrooms,reroute,requisite,repress,rednecks,redeeming,rayed,ravell,raked,raincheck,raffi,racked,pushin,profess,prodding,procure,presuming,preppy,prednisone,potted,posttraumatic,poorhouse,podiatrist,plowed,pledging,playroom,plait,placate,pinback,picketing,photographing,pharoah,petrak,petal,persecuting,perchance,pellets,peeved,peerless,payable,pauses,pathologist,pagliacci,overwrought,overreaction,overqualified,overheated,outcasts,otherworldly,opinionated,oodles,oftentimes,occured,obstinate,nutritionist,numbness,nubile,nooooooo,nobodies,nepotism,neanderthals,mushu,mucus,mothering,mothballs,monogrammed,molesting,misspoke,misspelled,misconstrued,miscalculated,minimums,mince,mildew,mighta,middleman,mementos,mellowed,mayol,mauled,massaged,marmalade,mardi,makings,lundegaard,lovingly,loudest,lotto,loosing,loompa,looming,longs,loathes,littlest,littering,lifelike,legalities,laundered,lapdog,lacerations,kopalski,knobs,knitted,kittridge,kidnaps,kerosene,karras,jungles,jockeys,iranoff,invoices,invigorating,insolence,insincere,insectopia,inhumane,inhaling,ingrates,infestation,individuality,indeterminate,incomprehensible,inadequacy,impropriety,importer,imaginations,illuminating,ignite,hysterics,hypodermic,hyperventilate,hyperactive,humoring,honeymooning,honed,hoist,hoarding,hitching,hiker,hightail,hemoglobin,hell'd,heinie,growin,grasped,grandparent,granddaughters,gouged,goblins,gleam,glades,gigantor,get'em,geriatric,gatekeeper,gargoyles,gardenias,garcon,garbo,gallows,gabbing,futon,fulla,frightful,freshener,fortuitous,forceps,fogged,fodder,foamy,flogging,flaun,flared,fireplaces,feverish,favell,fattest,fattening,fallow,extraordinaire,evacuating,errant,envied,enchant,enamored,egocentric,dussander,dunwitty,dullest,dropout,dredged,dorsia,doornail,donot,dongs,dogged,dodgy,ditty,dishonorable,discriminating,discontinue,dings,dilly,dictation,dialysis,delly,delightfully,daryll,dandruff,cruddy,croquet,cringe,crimp,credo,crackling,courtside,counteroffer,counterfeiting,corrupting,copping,conveyor,contusions,contusion,conspirator,consoling,connoisseur,confetti,composure,compel,colic,coddle,cocksuckers,coattails,cloned,claustrophobia,clamoring,churn,chugga,chirping,chasin,chapped,chalkboard,centimeter,caymans,catheter,casings,caprica,capelli,cannolis,cannoli,camogli,camembert,butchers,butchered,busboys,bureaucrats,buckled,bubbe,brownstone,bravely,brackley,bouquets,botox,boozing,boosters,bodhi,blunders,blunder,blockage,biocyte,betrays,bested,beryllium,beheading,beggar,begbie,beamed,bastille,barstool,barricades,barbecues,barbecued,bandwagon,backfiring,bacarra,avenged,autopsies,aunties,associating,artichoke,arrowhead,appendage,apostrophe,antacid,ansel,annul,amuses,amped,amicable,amberg,alluring,adversaries,admirers,adlai,acupuncture,abnormality,aaaahhhh,zooming,zippity,zipping,zeroed,yuletide,yoyodyne,yengeese,yeahhh,wrinkly,wracked,withered,winks,windmills,whopping,wendle,weigart,waterworks,waterbed,watchful,wantin,wagging,waaah,vying,ventricle,varnish,vacuumed,unreachable,unprovoked,unmistakable,unfriendly,unfolding,underpaid,uncuff,unappealing,unabomber,typhoid,tuxedos,tushie,turds,tumnus,troubadour,trinium,treaters,treads,transpired,transgression,tought,thready,thins,thinners,techs,teary,tattaglia,tassels,tarzana,tanking,tablecloths,synchronize,symptomatic,sycophant,swimmingly,sweatshop,surfboard,superpowers,sunroom,sunblock,sugarplum,stupidly,strumpet,strapless,stooping,stools,stealthy,stalks,stairmaster,staffer,sshhh,squatting,squatters,spectacularly,sorbet,socked,sociable,snubbed,snorting,sniffles,snazzy,snakebite,smuggler,smorgasbord,smooching,slurping,slouch,slingshot,slaved,skimmed,sisterhood,silliest,sidarthur,sheraton,shebang,sharpening,shanghaied,shakers,sendoff,scurvy,scoliosis,scaredy,scagnetti,sawchuk,saugus,sasquatch,sandbag,saltines,s'pose,roston,rostle,riveting,ristle,rifling,revulsion,reverently,retrograde,restful,resents,reptilian,reorganize,renovating,reiterate,reinvent,reinmar,reibers,reechard,recuse,reconciling,recognizance,reclaiming,recitation,recieved,rebate,reacquainted,rascals,railly,quintuplets,quahog,pygmies,puzzling,punctuality,prosthetic,proms,probie,preys,preserver,preppie,poachers,plummet,plumbers,plannin,pitying,pitfalls,piqued,pinecrest,pinches,pillage,pigheaded,physique,pessimistic,persecute,perjure,percentile,pentothal,pensky,penises,peini,pazzi,pastels,parlour,paperweight,pamper,pained,overwhelm,overalls,outrank,outpouring,outhouse,outage,ouija,obstructed,obsessions,obeying,obese,o'riley,o'higgins,nosebleeds,norad,noooooooo,nononono,nonchalant,nippy,neurosis,nekhorvich,necronomicon,naquada,n'est,mystik,mystified,mumps,muddle,mothership,moped,monumentally,monogamous,mondesi,misogynistic,misinterpreting,mindlock,mending,megaphone,meeny,medicating,meanie,masseur,markstrom,marklars,margueritas,manifesting,maharajah,lukewarm,loveliest,loran,lizardo,liquored,lipped,lingers,limey,lemkin,leisurely,lathe,latched,lapping,ladle,krevlorneswath,kosygin,khakis,kenaru,keats,kaitlan,julliard,jollies,jaundice,jargon,jackals,invisibility,insipid,inflamed,inferiority,inexperience,incinerated,incinerate,incendiary,incan,inbred,implicating,impersonator,hunks,horsing,hooded,hippopotamus,hiked,hetson,hetero,hessian,henslowe,hendler,hellstrom,headstone,hayloft,harbucks,handguns,hallucinate,haldol,haggling,gynaecologist,gulag,guilder,guaranteeing,groundskeeper,grindstone,grimoir,grievance,griddle,gribbit,greystone,graceland,gooders,goeth,gentlemanly,gelatin,gawking,ganged,fukes,fromby,frenchmen,foursome,forsley,forbids,footwork,foothold,floater,flinging,flicking,fittest,fistfight,fireballs,fillings,fiddling,fennyman,felonious,felonies,feces,favoritism,fatten,fanatics,faceman,excusing,excepted,entwined,entree,ensconced,eladio,ehrlichman,easterland,dueling,dribbling,drape,downtrodden,doused,dosed,dorleen,dokie,distort,displeased,disown,dismount,disinherited,disarmed,disapproves,diperna,dined,diligent,dicaprio,depress,decoded,debatable,dealey,darsh,damsels,damning,dad'll,d'oeuvre,curlers,curie,cubed,crikey,crepes,countrymen,cornfield,coppers,copilot,copier,cooing,conspiracies,consigliere,condoning,commoner,commies,combust,comas,colds,clawed,clamped,choosy,chomping,chimps,chigorin,chianti,cheep,checkups,cheaters,celibate,cautiously,cautionary,castell,carpentry,caroling,carjacking,caritas,caregiver,cardiology,candlesticks,canasta,cain't,burro,burnin,bunking,bumming,bullwinkle,brummel,brooms,brews,breathin,braslow,bracing,botulism,boorish,bloodless,blayne,blatantly,blankie,bedbugs,becuase,barmaid,bared,baracus,banal,bakes,backpacks,attentions,atrocious,ativan,athame,asunder,astound,assuring,aspirins,asphyxiation,ashtrays,aryans,arnon,apprehension,applauding,anvil,antiquing,antidepressants,annoyingly,amputate,altruistic,alotta,alerting,afterthought,affront,affirm,actuality,abysmal,absentee,yeller,yakushova,wuzzy,wriggle,worrier,woogyman,womanizer,windpipe,windbag,willin,whisking,whimsy,wendall,weeny,weensy,weasels,watery,watcha,wasteful,waski,washcloth,waaay,vouched,viznick,ventriloquist,vendettas,veils,vayhue,vamanos,vadimus,upstage,uppity,unsaid,unlocking,unintentionally,undetected,undecided,uncaring,unbearably,tween,tryout,trotting,trini,trimmings,trickier,treatin,treadstone,trashcan,transcendent,tramps,townsfolk,torturous,torrid,toothpicks,tolerable,tireless,tiptoeing,timmay,tillinghouse,tidying,tibia,thumbing,thrusters,thrashing,these'll,thatos,testicular,teriyaki,tenors,tenacity,tellers,telemetry,tarragon,switchblade,swicker,swells,sweatshirts,swatches,surging,supremely,sump'n,succumb,subsidize,stumbles,stuffs,stoppin,stipulate,stenographer,steamroll,stasis,stagger,squandered,splint,splendidly,splashy,splashing,specter,sorcerers,somewheres,somber,snuggled,snowmobile,sniffed,snags,smugglers,smudged,smirking,smearing,slings,sleet,sleepovers,sleek,slackers,siree,siphoning,singed,sincerest,sickened,shuffled,shriveled,shorthanded,shittin,shish,shipwrecked,shins,sheetrock,shawshank,shamu,sha're,servitude,sequins,seascape,scrapings,scoured,scorching,sandpaper,saluting,salud,ruffled,roughnecks,rougher,rosslyn,rosses,roost,roomy,romping,revolutionize,reprimanded,refute,refrigerated,reeled,redundancies,rectal,recklessly,receding,reassignment,reapers,readout,ration,raring,ramblings,raccoons,quarantined,purging,punters,psychically,premarital,pregnancies,predisposed,precautionary,pollute,podunk,plums,plaything,pixilated,pitting,piranhas,pieced,piddles,pickled,photogenic,phosphorous,pffft,pestilence,pessimist,perspiration,perps,penticoff,passageways,pardons,panics,pancamo,paleontologist,overwhelms,overstating,overpaid,overdid,outlive,orthodontist,orgies,oreos,ordover,ordinates,ooooooh,oooohhh,omelettes,officiate,obtuse,obits,nymph,novocaine,noooooooooo,nipping,nilly,nightstick,negate,neatness,natured,narcotic,narcissism,namun,nakatomi,murky,muchacho,mouthwash,motzah,morsel,morph,morlocks,mooch,moloch,molest,mohra,modus,modicum,mockolate,misdemeanors,miscalculation,middies,meringue,mercilessly,meditating,mayakovsky,maximillian,marlee,markovski,maniacal,maneuvered,magnificence,maddening,lutze,lunged,lovelies,lorry,loosening,lookee,littered,lilac,lightened,laces,kurzon,kurtzweil,kind've,kimono,kenji,kembu,keanu,kazuo,jonesing,jilted,jiggling,jewelers,jewbilee,jacqnoud,jacksons,ivories,insurmountable,innocuous,innkeeper,infantery,indulged,indescribable,incoherent,impervious,impertinent,imperfections,hunnert,huffy,horsies,horseradish,hollowed,hogwash,hockley,hissing,hiromitsu,hidin,hereafter,helpmann,hehehe,haughty,happenings,hankie,handsomely,halliwells,haklar,haise,gunsights,grossly,grope,grocer,grits,gripping,grabby,glorificus,gizzard,gilardi,gibarian,geminon,gasses,garnish,galloping,gairwyn,futterman,futility,fumigated,fruitless,friendless,freon,foregone,forego,floored,flighty,flapjacks,fizzled,ficus,festering,farbman,fabricate,eyghon,extricate,exalted,eventful,esophagus,enterprising,entail,endor,emphatically,embarrasses,electroshock,easel,duffle,drumsticks,dissection,dissected,disposing,disparaging,disorientation,disintegrated,disarming,devoting,dessaline,deprecating,deplorable,delve,degenerative,deduct,decomposed,deathly,dearie,daunting,dankova,cyclotron,cyberspace,cutbacks,culpable,cuddled,crumpets,cruelly,crouching,cranium,cramming,cowering,couric,cordesh,conversational,conclusively,clung,clotting,cleanest,chipping,chimpanzee,chests,cheapen,chainsaws,censure,catapult,caravaggio,carats,captivating,calrissian,butlers,busybody,bussing,bunion,bulimic,budging,brung,browbeat,brokenhearted,brecher,breakdowns,bracebridge,boning,blowhard,blisters,blackboard,bigotry,bialy,bhamra,bended,begat,battering,baste,basquiat,barricaded,barometer,balled,baited,badenweiler,backhand,ascenscion,argumentative,appendicitis,apparition,anxiously,antagonistic,angora,anacott,amniotic,ambience,alonna,aleck,akashic,ageless,abouts,aawwww,aaaaarrrrrrggghhh,aaaaaa,zendi,yuppies,yodel,y'hear,wrangle,wombosi,wittle,withstanding,wisecracks,wiggling,wierd,whittlesley,whipper,whattya,whatsamatter,whatchamacallit,whassup,whad'ya,weakling,warfarin,waponis,wampum,wadn't,vorash,vizzini,virtucon,viridiana,veracity,ventilated,varicose,varcon,vandalized,vamos,vamoose,vaccinated,vacationing,usted,urinal,uppers,unwittingly,unsealed,unplanned,unhinged,unhand,unfathomable,unequivocally,unbreakable,unadvisedly,udall,tynacorp,tuxes,tussle,turati,tunic,tsavo,trussed,troublemakers,trollop,tremors,transsexual,transfusions,toothbrushes,toned,toddlers,tinted,tightened,thundering,thorpey,this'd,thespian,thaddius,tenuous,tenths,tenement,telethon,teleprompter,teaspoon,taunted,tattle,tardiness,taraka,tappy,tapioca,tapeworm,talcum,tacks,swivel,swaying,superpower,summarize,sumbitch,sultry,suburbia,styrofoam,stylings,strolls,strobe,stockpile,stewardesses,sterilized,sterilize,stealin,stakeouts,squawk,squalor,squabble,sprinkled,sportsmanship,spokes,spiritus,sparklers,spareribs,sowing,sororities,sonovabitch,solicit,softy,softness,softening,snuggling,snatchers,snarling,snarky,snacking,smears,slumped,slowest,slithering,sleazebag,slayed,slaughtering,skidded,skated,sivapathasundaram,sissies,silliness,silences,sidecar,sicced,shylock,shtick,shrugged,shriek,shoves,should'a,shortcake,shockingly,shirking,shaves,shatner,sharpener,shapely,shafted,sexless,septum,selflessness,seabea,scuff,screwball,scoping,scooch,scolding,schnitzel,schemed,scalper,santy,sankara,sanest,salesperson,sakulos,safehouse,sabers,runes,rumblings,rumbling,ruijven,ringers,righto,rhinestones,retrieving,reneging,remodelling,relentlessly,regurgitate,refills,reeking,reclusive,recklessness,recanted,ranchers,rafer,quaking,quacks,prophesied,propensity,profusely,problema,prided,prays,postmark,popsicles,poodles,pollyanna,polaroids,pokes,poconos,pocketful,plunging,plugging,pleeease,platters,pitied,pinetti,piercings,phooey,phonies,pestering,periscope,pentagram,pelts,patronized,paramour,paralyze,parachutes,pales,paella,paducci,owatta,overdone,overcrowded,overcompensating,ostracized,ordinate,optometrist,operandi,omens,okayed,oedipal,nuttier,nuptial,nunheim,noxious,nourish,notepad,nitroglycerin,nibblet,neuroses,nanosecond,nabbit,mythic,munchkins,multimillion,mulroney,mucous,muchas,mountaintop,morlin,mongorians,moneybags,mom'll,molto,mixup,misgivings,mindset,michalchuk,mesmerized,merman,mensa,meaty,mbwun,materialize,materialistic,masterminded,marginally,mapuhe,malfunctioning,magnify,macnamara,macinerney,machinations,macadamia,lysol,lurks,lovelorn,lopsided,locator,litback,litany,linea,limousines,limes,lighters,liebkind,levity,levelheaded,letterhead,lesabre,leron,lepers,lefts,leftenant,laziness,layaway,laughlan,lascivious,laryngitis,lapsed,landok,laminated,kurten,kobol,knucklehead,knowed,knotted,kirkeby,kinsa,karnovsky,jolla,jimson,jettison,jeric,jawed,jankis,janitors,jango,jalopy,jailbreak,jackers,jackasses,invalidate,intercepting,intercede,insinuations,infertile,impetuous,impaled,immerse,immaterial,imbeciles,imagines,idyllic,idolized,icebox,i'd've,hypochondriac,hyphen,hurtling,hurried,hunchback,hullo,horsting,hoooo,homeboys,hollandaise,hoity,hijinks,hesitates,herrero,herndorff,helplessly,heeyy,heathen,hearin,headband,harrassment,harpies,halstrom,hahahahaha,hacer,grumbling,grimlocks,grift,greets,grandmothers,grander,grafts,gordievsky,gondorff,godorsky,glscripts,gaudy,gardeners,gainful,fuses,fukienese,frizzy,freshness,freshening,fraught,frantically,foxbooks,fortieth,forked,foibles,flunkies,fleece,flatbed,fisted,firefight,fingerpaint,filibuster,fhloston,fenceline,femur,fatigues,fanucci,fantastically,familiars,falafel,fabulously,eyesore,expedient,ewwww,eviscerated,erogenous,epidural,enchante,embarassed,embarass,embalming,elude,elspeth,electrocute,eigth,eggshell,echinacea,eases,earpiece,earlobe,dumpsters,dumbshit,dumbasses,duloc,duisberg,drummed,drinkers,dressy,dorma,doily,divvy,diverting,dissuade,disrespecting,displace,disorganized,disgustingly,discord,disapproving,diligence,didja,diced,devouring,detach,destructing,desolate,demerits,delude,delirium,degrade,deevak,deemesa,deductions,deduce,debriefed,deadbeats,dateline,darndest,damnable,dalliance,daiquiri,d'agosta,cussing,cryss,cripes,cretins,crackerjack,cower,coveting,couriers,countermission,cotswolds,convertibles,conversationalist,consorting,consoled,consarn,confides,confidentially,commited,commiserate,comme,comforter,comeuppance,combative,comanches,colosseum,colling,coexist,coaxing,cliffside,chutes,chucked,chokes,childlike,childhoods,chickening,chenowith,charmingly,changin,catsup,captioning,capsize,cappucino,capiche,candlewell,cakewalk,cagey,caddie,buxley,bumbling,bulky,buggered,brussel,brunettes,brumby,brotha,bronck,brisket,bridegroom,braided,bovary,bookkeeper,bluster,bloodline,blissfully,blase,billionaires,bicker,berrisford,bereft,berating,berate,bendy,belive,belated,beikoku,beens,bedspread,bawdy,barreling,baptize,banya,balthazar,balmoral,bakshi,bails,badgered,backstreet,awkwardly,auras,attuned,atheists,astaire,assuredly,arrivederci,appetit,appendectomy,apologetic,antihistamine,anesthesiologist,amulets,albie,alarmist,aiight,adstream,admirably,acquaint,abound,abominable,aaaaaaah,zekes,zatunica,wussy,worded,wooed,woodrell,wiretap,windowsill,windjammer,windfall,whisker,whims,whatiya,whadya,weirdly,weenies,waunt,washout,wanto,waning,victimless,verdad,veranda,vandaley,vancomycin,valise,vaguest,upshot,unzip,unwashed,untrained,unstuck,unprincipled,unmentionables,unjustly,unfolds,unemployable,uneducated,unduly,undercut,uncovering,unconsciousness,unconsciously,tyndareus,turncoat,turlock,tulle,tryouts,trouper,triplette,trepkos,tremor,treeger,trapeze,traipse,tradeoff,trach,torin,tommorow,tollan,toity,timpani,thumbprint,thankless,tell'em,telepathy,telemarketing,telekinesis,teevee,teeming,tarred,tambourine,talentless,swooped,switcheroo,swirly,sweatpants,sunstroke,suitors,sugarcoat,subways,subterfuge,subservient,subletting,stunningly,strongbox,striptease,stravanavitch,stradling,stoolie,stodgy,stocky,stifle,stealer,squeezes,squatter,squarely,sprouted,spool,spindly,speedos,soups,soundly,soulmates,somebody'll,soliciting,solenoid,sobering,snowflakes,snowballs,snores,slung,slimming,skulk,skivvies,skewered,skewer,sizing,sistine,sidebar,sickos,shushing,shunt,shugga,shone,shol'va,sharpened,shapeshifter,shadowing,shadoe,selectman,sefelt,seared,scrounging,scribbling,scooping,scintillating,schmoozing,scallops,sapphires,sanitarium,sanded,safes,rudely,roust,rosebush,rosasharn,rondell,roadhouse,riveted,rewrote,revamp,retaliatory,reprimand,replicators,replaceable,remedied,relinquishing,rejoicing,reincarnated,reimbursed,reevaluate,redid,redefine,recreating,reconnected,rebelling,reassign,rearview,rayne,ravings,ratso,rambunctious,radiologist,quiver,quiero,queef,qualms,pyrotechnics,pulsating,psychosomatic,proverb,promiscuous,profanity,prioritize,preying,predisposition,precocious,precludes,prattling,prankster,povich,potting,postpartum,porridge,polluting,plowing,pistachio,pissin,pickpocket,physicals,peruse,pertains,personified,personalize,perjured,perfecting,pepys,pepperdine,pembry,peering,peels,pedophile,patties,passkey,paratrooper,paraphernalia,paralyzing,pandering,paltry,palpable,pagers,pachyderm,overstay,overestimated,overbite,outwit,outgrow,outbid,ooops,oomph,oohhh,oldie,obliterate,objectionable,nygma,notting,noches,nitty,nighters,newsstands,newborns,neurosurgery,nauseated,nastiest,narcolepsy,mutilate,muscled,murmur,mulva,mulling,mukada,muffled,morgues,moonbeams,monogamy,molester,molestation,molars,moans,misprint,mismatched,mirth,mindful,mimosas,millander,mescaline,menstrual,menage,mellowing,medevac,meddlesome,matey,manicures,malevolent,madmen,macaroons,lydell,lycra,lunchroom,lunching,lozenges,looped,litigious,liquidate,linoleum,lingk,limitless,limber,lilacs,ligature,liftoff,lemmiwinks,leggo,learnin,lazarre,lawyered,lactose,knelt,kenosha,kemosabe,jussy,junky,jordy,jimmies,jeriko,jakovasaur,issacs,isabela,irresponsibility,ironed,intoxication,insinuated,inherits,ingest,ingenue,inflexible,inflame,inevitability,inedible,inducement,indignant,indictments,indefensible,incomparable,incommunicado,improvising,impounded,illogical,ignoramus,hydrochloric,hydrate,hungover,humorless,humiliations,hugest,hoverdrone,hovel,hmmph,hitchhike,hibernating,henchman,helloooo,heirlooms,heartsick,headdress,hatches,harebrained,hapless,hanen,handsomer,hallows,habitual,guten,gummy,guiltier,guidebook,gstaad,gruff,griss,grieved,grata,gorignak,goosed,goofed,glowed,glitz,glimpses,glancing,gilmores,gianelli,geraniums,garroway,gangbusters,gamblers,galls,fuddy,frumpy,frowning,frothy,fro'tak,frere,fragrances,forgettin,follicles,flowery,flophouse,floatin,flirts,flings,flatfoot,fingerprinting,fingerprinted,fingering,finald,fillet,fianc,femoral,federales,fawkes,fascinates,farfel,fambly,falsified,fabricating,exterminators,expectant,excusez,excrement,excercises,evian,etins,esophageal,equivalency,equate,equalizer,entrees,enquire,endearment,empathetic,emailed,eggroll,earmuffs,dyslexic,duper,duesouth,drunker,druggie,dreadfully,dramatics,dragline,downplay,downers,dominatrix,doers,docket,docile,diversify,distracts,disloyalty,disinterested,discharging,disagreeable,dirtier,dinghy,dimwitted,dimoxinil,dimmy,diatribe,devising,deviate,detriment,desertion,depressants,depravity,deniability,delinquents,defiled,deepcore,deductive,decimate,deadbolt,dauthuille,dastardly,daiquiris,daggers,dachau,curiouser,curdled,cucamonga,cruller,cruces,crosswalk,crinkle,crescendo,cremate,counseled,couches,cornea,corday,copernicus,contrition,contemptible,constipated,conjoined,confounded,condescend,concoct,conch,compensating,committment,commandeered,comely,coddled,cockfight,cluttered,clunky,clownfish,cloaked,clenched,cleanin,civilised,circumcised,cimmeria,cilantro,chutzpah,chucking,chiseled,chicka,chattering,cervix,carrey,carpal,carnations,cappuccinos,candied,calluses,calisthenics,bushy,burners,budington,buchanans,brimming,braids,boycotting,bouncers,botticelli,botherin,bookkeeping,bogyman,bogged,bloodthirsty,blintzes,blanky,binturong,billable,bigboote,bewildered,betas,bequeath,behoove,befriend,bedpost,bedded,baudelaires,barreled,barboni,barbeque,bangin,baltus,bailout,backstabber,baccarat,awning,augie,arguillo,archway,apricots,apologising,annyong,anchorman,amenable,amazement,allspice,alannis,airfare,airbags,ahhhhhhhhh,ahhhhhhhh,ahhhhhhh,agitator,adrenal,acidosis,achoo,accessorizing,accentuate,abrasions,abductor,aaaahhh,aaaaaaaa,aaaaaaa,zeroing,zelner,zeldy,yevgeny,yeska,yellows,yeesh,yeahh,yamuri,wouldn't've,workmanship,woodsman,winnin,winked,wildness,whoring,whitewash,whiney,when're,wheezer,wheelman,wheelbarrow,westerburg,weeding,watermelons,washboard,waltzes,wafting,voulez,voluptuous,vitone,vigilantes,videotaping,viciously,vices,veruca,vermeer,verifying,vasculitis,valets,upholstered,unwavering,untold,unsympathetic,unromantic,unrecognizable,unpredictability,unmask,unleashing,unintentional,unglued,unequivocal,underrated,underfoot,unchecked,unbutton,unbind,unbiased,unagi,uhhhhh,tugging,triads,trespasses,treehorn,traviata,trappers,transplants,trannie,tramping,tracheotomy,tourniquet,tooty,toothless,tomarrow,toasters,thruster,thoughtfulness,thornwood,tengo,tenfold,telltale,telephoto,telephoned,telemarketer,tearin,tastic,tastefully,tasking,taser,tamed,tallow,taketh,taillight,tadpoles,tachibana,syringes,sweated,swarthy,swagger,surges,supermodels,superhighway,sunup,sun'll,sulfa,sugarless,sufficed,subside,strolled,stringy,strengthens,straightest,straightens,storefront,stopper,stockpiling,stimulant,stiffed,steyne,sternum,stepladder,stepbrother,steers,steelheads,steakhouse,stathis,stankylecartmankennymr,standoffish,stalwart,squirted,spritz,sprig,sprawl,spousal,sphincter,spenders,spearmint,spatter,spangled,southey,soured,sonuvabitch,somethng,snuffed,sniffs,smokescreen,smilin,slobs,sleepwalker,sleds,slays,slayage,skydiving,sketched,skanks,sixed,siphoned,siphon,simpering,sigfried,sidearm,siddons,sickie,shuteye,shuffleboard,shrubberies,shrouded,showmanship,shouldn't've,shoplift,shiatsu,sentries,sentance,sensuality,seething,secretions,searing,scuttlebutt,sculpt,scowling,scouring,scorecard,schoolers,schmucks,scepters,scaly,scalps,scaffolding,sauces,sartorius,santen,salivating,sainthood,saget,saddens,rygalski,rusting,ruination,rueland,rudabaga,rottweiler,roofies,romantics,rollerblading,roldy,roadshow,rickets,rible,rheza,revisiting,retentive,resurface,restores,respite,resounding,resorting,resists,repulse,repressing,repaying,reneged,refunds,rediscover,redecorated,reconstructive,recommitted,recollect,receptacle,reassess,reanimation,realtors,razinin,rationalization,ratatouille,rashum,rasczak,rancheros,rampler,quizzing,quips,quartered,purring,pummeling,puede,proximo,prospectus,pronouncing,prolonging,procreation,proclamations,principled,prides,preoccupation,prego,precog,prattle,pounced,potshots,potpourri,porque,pomegranates,polenta,plying,pluie,plesac,playmates,plantains,pillowcase,piddle,pickers,photocopied,philistine,perpetuate,perpetually,perilous,pawned,pausing,pauper,parter,parlez,parlay,pally,ovulation,overtake,overstate,overpowering,overpowered,overconfident,overbooked,ovaltine,outweighs,outings,ottos,orrin,orifice,orangutan,oopsy,ooooooooh,oooooo,ooohhhh,ocular,obstruct,obscenely,o'dwyer,nutjob,nunur,notifying,nostrand,nonny,nonfat,noblest,nimble,nikes,nicht,newsworthy,nestled,nearsighted,ne'er,nastier,narco,nakedness,muted,mummified,mudda,mozzarella,moxica,motivator,motility,mothafucka,mortmain,mortgaged,mores,mongers,mobbed,mitigating,mistah,misrepresented,mishke,misfortunes,misdirection,mischievous,mineshaft,millaney,microwaves,metzenbaum,mccovey,masterful,masochistic,marliston,marijawana,manya,mantumbi,malarkey,magnifique,madrona,madox,machida,m'hidi,lullabies,loveliness,lotions,looka,lompoc,litterbug,litigator,lithe,liquorice,linds,limericks,lightbulb,lewises,letch,lemec,layover,lavatory,laurels,lateness,laparotomy,laboring,kuato,kroff,krispy,krauts,knuckleheads,kitschy,kippers,kimbrow,keypad,keepsake,kebab,karloff,junket,judgemental,jointed,jezzie,jetting,jeeze,jeeter,jeesus,jeebs,janeane,jails,jackhammer,ixnay,irritates,irritability,irrevocable,irrefutable,irked,invoking,intricacies,interferon,intents,insubordinate,instructive,instinctive,inquisitive,inlay,injuns,inebriated,indignity,indecisive,incisors,incacha,inalienable,impresses,impregnate,impregnable,implosion,idolizes,hypothyroidism,hypoglycemic,huseni,humvee,huddling,honing,hobnobbing,hobnob,histrionics,histamine,hirohito,hippocratic,hindquarters,hikita,hikes,hightailed,hieroglyphics,heretofore,herbalist,hehey,hedriks,heartstrings,headmistress,headlight,hardheaded,happend,handlebars,hagitha,habla,gyroscope,guys'd,guy'd,guttersnipe,grump,growed,grovelling,groan,greenbacks,gravedigger,grating,grasshoppers,grandiose,grandest,grafted,gooood,goood,gooks,godsakes,goaded,glamorama,giveth,gingham,ghostbusters,germane,georgy,gazzo,gazelles,gargle,garbled,galgenstein,gaffe,g'day,fyarl,furnish,furies,fulfills,frowns,frowned,frighteningly,freebies,freakishly,forewarned,foreclose,forearms,fordson,fonics,flushes,flitting,flemmer,flabby,fishbowl,fidgeting,fevers,feigning,faxing,fatigued,fathoms,fatherless,fancier,fanatical,factored,eyelid,eyeglasses,expresso,expletive,expectin,excruciatingly,evidentiary,ever'thing,eurotrash,eubie,estrangement,erlich,epitome,entrap,enclose,emphysema,embers,emasculating,eighths,eardrum,dyslexia,duplicitous,dumpty,dumbledore,dufus,duddy,duchamp,drunkenness,drumlin,drowns,droid,drinky,drifts,drawbridge,dramamine,douggie,douchebag,dostoyevsky,doodling,don'tcha,domineering,doings,dogcatcher,doctoring,ditzy,dissimilar,dissecting,disparage,disliking,disintegrating,dishwalla,dishonored,dishing,disengaged,disavowed,dippy,diorama,dimmed,dilate,digitalis,diggory,dicing,diagnosing,devola,desolation,dennings,denials,deliverance,deliciously,delicacies,degenerates,degas,deflector,defile,deference,decrepit,deciphered,dawdle,dauphine,daresay,dangles,dampen,damndest,cucumbers,cucaracha,cryogenically,croaks,croaked,criticise,crisper,creepiest,creams,crackle,crackin,covertly,counterintelligence,corrosive,cordially,cops'll,convulsions,convoluted,conversing,conga,confrontational,confab,condolence,condiments,complicit,compiegne,commodus,comings,cometh,collusion,collared,cockeyed,clobber,clemonds,clarithromycin,cienega,christmasy,christmassy,chloroform,chippie,chested,cheeco,checklist,chauvinist,chandlers,chambermaid,chakras,cellophane,caveat,cataloguing,cartmanland,carples,carny,carded,caramels,cappy,caped,canvassing,callback,calibrated,calamine,buttermilk,butterfingers,bunsen,bulimia,bukatari,buildin,budged,brobich,bringer,brendell,brawling,bratty,braised,boyish,boundless,botch,boosh,bookies,bonbons,bodes,bobunk,bluntly,blossoming,bloomers,bloodstains,bloodhounds,blech,biter,biometric,bioethics,bijan,bigoted,bicep,bereaved,bellowing,belching,beholden,beached,batmobile,barcodes,barch,barbecuing,bandanna,backwater,backtrack,backdraft,augustino,atrophy,atrocity,atley,atchoo,asthmatic,assoc,armchair,arachnids,aptly,appetizing,antisocial,antagonizing,anorexia,anini,andersons,anagram,amputation,alleluia,airlock,aimless,agonized,agitate,aggravating,aerosol,acing,accomplishing,accidently,abuser,abstain,abnormally,aberration,aaaaahh,zlotys,zesty,zerzura,zapruder,zantopia,yelburton,yeess,y'knowwhati'msayin,wwhat,wussies,wrenched,would'a,worryin,wormser,wooooo,wookiee,wolchek,wishin,wiseguys,windbreaker,wiggy,wieners,wiedersehen,whoopin,whittled,wherefore,wharvey,welts,wellstone,wedges,wavered,watchit,wastebasket,wango,waken,waitressed,wacquiem,vrykolaka,voula,vitally,visualizing,viciousness,vespers,vertes,verily,vegetarians,vater,vaporize,vannacutt,vallens,ussher,urinating,upping,unwitting,untangle,untamed,unsanitary,unraveled,unopened,unisex,uninvolved,uninteresting,unintelligible,unimaginative,undeserving,undermines,undergarments,unconcerned,tyrants,typist,tykes,tybalt,twosome,twits,tutti,turndown,tularemia,tuberculoma,tsimshian,truffaut,truer,truant,trove,triumphed,tripe,trigonometry,trifled,trifecta,tribulations,tremont,tremoille,transcends,trafficker,touchin,tomfoolery,tinkered,tinfoil,tightrope,thousan,thoracotomy,thesaurus,thawing,thatta,tessio,temps,taxidermist,tator,tachycardia,t'akaya,swelco,sweetbreads,swatting,supercollider,sunbathing,summarily,suffocation,sueleen,succinct,subsided,submissive,subjecting,subbing,subatomic,stupendous,stunted,stubble,stubbed,streetwalker,strategizing,straining,straightaway,stoli,stiffer,stickup,stens,steamroller,steadwell,steadfast,stateroom,stans,sshhhh,squishing,squinting,squealed,sprouting,sprimp,spreadsheets,sprawled,spotlights,spooning,spirals,speedboat,spectacles,speakerphone,southglen,souse,soundproof,soothsayer,sommes,somethings,solidify,soars,snorted,snorkeling,snitches,sniping,snifter,sniffin,snickering,sneer,snarl,smila,slinking,slanted,slanderous,slammin,skimp,skilosh,siteid,sirloin,singe,sighing,sidekicks,sicken,showstopper,shoplifter,shimokawa,sherborne,shavadai,sharpshooters,sharking,shagged,shaddup,senorita,sesterces,sensuous,seahaven,scullery,scorcher,schotzie,schnoz,schmooze,schlep,schizo,scents,scalping,scalped,scallop,scalding,sayeth,saybrooke,sawed,savoring,sardine,sandstorm,sandalwood,salutations,sagman,s'okay,rsvp'd,rousted,rootin,romper,romanovs,rollercoaster,rolfie,robinsons,ritzy,ritualistic,ringwald,rhymed,rheingold,rewrites,revoking,reverts,retrofit,retort,retinas,respirations,reprobate,replaying,repaint,renquist,renege,relapsing,rekindled,rejuvenating,rejuvenated,reinstating,recriminations,rechecked,reassemble,rears,reamed,reacquaint,rayanne,ravish,rathole,raspail,rarest,rapists,rants,racketeer,quittin,quitters,quintessential,queremos,quellek,quelle,quasimodo,pyromaniac,puttanesca,puritanical,purer,puree,pungent,pummel,puedo,psychotherapist,prosecutorial,prosciutto,propositioning,procrastination,probationary,primping,preventative,prevails,preservatives,preachy,praetorians,practicality,powders,potus,postop,positives,poser,portolano,portokalos,poolside,poltergeists,pocketed,poach,plummeted,plucking,plimpton,playthings,plastique,plainclothes,pinpointed,pinkus,pinks,pigskin,piffle,pictionary,piccata,photocopy,phobias,perignon,perfumes,pecks,pecked,patently,passable,parasailing,paramus,papier,paintbrush,pacer,paaiint,overtures,overthink,overstayed,overrule,overestimate,overcooked,outlandish,outgrew,outdoorsy,outdo,orchestrate,oppress,opposable,oooohh,oomupwah,okeydokey,okaaay,ohashi,of'em,obscenities,oakie,o'gar,nurection,nostradamus,norther,norcom,nooch,nonsensical,nipped,nimbala,nervously,neckline,nebbleman,narwhal,nametag,n'n't,mycenae,muzak,muumuu,mumbled,mulvehill,muggings,muffet,mouthy,motivates,motaba,moocher,mongi,moley,moisturize,mohair,mocky,mmkay,mistuh,missis,misdeeds,mincemeat,miggs,miffed,methadone,messieur,menopausal,menagerie,mcgillicuddy,mayflowers,matrimonial,matick,masai,marzipan,maplewood,manzelle,mannequins,manhole,manhandle,malfunctions,madwoman,machiavelli,lynley,lynched,lurconis,lujack,lubricant,looove,loons,loofah,lonelyhearts,lollipops,lineswoman,lifers,lexter,lepner,lemony,leggy,leafy,leadeth,lazerus,lazare,lawford,languishing,lagoda,ladman,kundera,krinkle,krendler,kreigel,kowolski,knockdown,knifed,kneed,kneecap,kids'll,kennie,kenmore,keeled,kazootie,katzenmoyer,kasdan,karak,kapowski,kakistos,julyan,jockstrap,jobless,jiggly,jaunt,jarring,jabbering,irrigate,irrevocably,irrationally,ironies,invitro,intimated,intently,intentioned,intelligently,instill,instigator,instep,inopportune,innuendoes,inflate,infects,infamy,indiscretions,indiscreet,indio,indignities,indict,indecision,inconspicuous,inappropriately,impunity,impudent,impotence,implicates,implausible,imperfection,impatience,immutable,immobilize,idealist,iambic,hysterically,hyperspace,hygienist,hydraulics,hydrated,huzzah,husks,hunched,huffed,hubris,hubbub,hovercraft,houngan,hosed,horoscopes,hopelessness,hoodwinked,honorably,honeysuckle,homegirl,holiest,hippity,hildie,hieroglyphs,hexton,herein,heckle,heaping,healthilizer,headfirst,hatsue,harlot,hardwired,halothane,hairstyles,haagen,haaaaa,gutting,gummi,groundless,groaning,gristle,grills,graynamore,grabbin,goodes,goggle,glittering,glint,gleaming,glassy,girth,gimbal,giblets,gellers,geezers,geeze,garshaw,gargantuan,garfunkel,gangway,gandarium,gamut,galoshes,gallivanting,gainfully,gachnar,fusionlips,fusilli,furiously,frugal,fricking,frederika,freckling,frauds,fountainhead,forthwith,forgo,forgettable,foresight,foresaw,fondling,fondled,fondle,folksy,fluttering,fluffing,floundering,flirtatious,flexing,flatterer,flaring,fixating,finchy,figurehead,fiendish,fertilize,ferment,fending,fellahs,feelers,fascinate,fantabulous,falsify,fallopian,faithless,fairer,fainter,failings,facetious,eyepatch,exxon,extraterrestrials,extradite,extracurriculars,extinguish,expunged,expelling,exorbitant,exhilarated,exertion,exerting,excercise,everbody,evaporated,escargot,escapee,erases,epizootics,epithelials,ephrum,entanglements,enslave,engrossed,emphatic,emeralds,ember,emancipated,elevates,ejaculate,effeminate,eccentricities,easygoing,earshot,dunks,dullness,dulli,dulled,drumstick,dropper,driftwood,dregs,dreck,dreamboat,draggin,downsizing,donowitz,dominoes,diversions,distended,dissipate,disraeli,disqualify,disowned,dishwashing,disciplining,discerning,disappoints,dinged,digested,dicking,detonating,despising,depressor,depose,deport,dents,defused,deflecting,decryption,decoys,decoupage,decompress,decibel,decadence,deafening,dawning,dater,darkened,dappy,dallying,dagon,czechoslovakians,cuticles,cuteness,cupboards,culottes,cruisin,crosshairs,cronyn,criminalistics,creatively,creaming,crapping,cranny,cowed,contradicting,constipation,confining,confidences,conceiving,conceivably,concealment,compulsively,complainin,complacent,compels,communing,commode,comming,commensurate,columnists,colonoscopy,colchicine,coddling,clump,clubbed,clowning,cliffhanger,clang,cissy,choosers,choker,chiffon,channeled,chalet,cellmates,cathartic,caseload,carjack,canvass,canisters,candlestick,candlelit,camry,calzones,calitri,caldy,byline,butterball,bustier,burlap,bureaucrat,buffoons,buenas,brookline,bronzed,broiled,broda,briss,brioche,briar,breathable,brays,brassieres,boysenberry,bowline,boooo,boonies,booklets,bookish,boogeyman,boogey,bogas,boardinghouse,bluuch,blundering,bluer,blowed,blotchy,blossomed,bloodwork,bloodied,blithering,blinks,blathering,blasphemous,blacking,birdson,bings,bfmid,bfast,bettin,berkshires,benjamins,benevolence,benched,benatar,bellybutton,belabor,behooves,beddy,beaujolais,beattle,baxworth,baseless,barfing,bannish,bankrolled,banek,ballsy,ballpoint,baffling,badder,badda,bactine,backgammon,baako,aztreonam,authoritah,auctioning,arachtoids,apropos,aprons,apprised,apprehensive,anythng,antivenin,antichrist,anorexic,anoint,anguished,angioplasty,angio,amply,ampicillin,amphetamines,alternator,alcove,alabaster,airlifted,agrabah,affidavits,admonished,admonish,addled,addendum,accuser,accompli,absurdity,absolved,abrusso,abreast,aboot,abductions,abducting,aback,ababwa,aaahhhh,zorin,zinthar,zinfandel,zillions,zephyrs,zatarcs,zacks,youuu,yokels,yardstick,yammer,y'understand,wynette,wrung,wreaths,wowed,wouldn'ta,worming,wormed,workday,woodsy,woodshed,woodchuck,wojadubakowski,withering,witching,wiseass,wiretaps,wining,willoby,wiccaning,whupped,whoopi,whoomp,wholesaler,whiteness,whiner,whatchya,wharves,wenus,weirdoes,weaning,watusi,waponi,waistband,wackos,vouching,votre,vivica,viveca,vivant,vivacious,visor,visitin,visage,vicrum,vetted,ventriloquism,venison,varnsen,vaporized,vapid,vanstock,uuuuh,ushering,urologist,urination,upstart,uprooted,unsubtitled,unspoiled,unseat,unseasonably,unseal,unsatisfying,unnerve,unlikable,unleaded,uninsured,uninspired,unicycle,unhooked,unfunny,unfreezing,unflattering,unfairness,unexpressed,unending,unencumbered,unearth,undiscovered,undisciplined,understan,undershirt,underlings,underline,undercurrent,uncivilized,uncharacteristic,umpteenth,uglies,tuney,trumps,truckasaurus,trubshaw,trouser,tringle,trifling,trickster,trespassers,trespasser,traumas,trattoria,trashes,transgressions,trampling,tp'ed,toxoplasmosis,tounge,tortillas,topsy,topple,topnotch,tonsil,tions,timmuh,timithious,tilney,tighty,tightness,tightens,tidbits,ticketed,thyme,threepio,thoughtfully,thorkel,thommo,thing'll,thefts,that've,thanksgivings,tetherball,testikov,terraforming,tepid,tendonitis,tenboom,telex,teenybopper,tattered,tattaglias,tanneke,tailspin,tablecloth,swooping,swizzle,swiping,swindled,swilling,swerving,sweatshops,swaddling,swackhammer,svetkoff,supossed,superdad,sumptuous,sugary,sugai,subvert,substantiate,submersible,sublimating,subjugation,stymied,strychnine,streetlights,strassmans,stranglehold,strangeness,straddling,straddle,stowaways,stotch,stockbrokers,stifling,stepford,steerage,steena,statuary,starlets,staggeringly,ssshhh,squaw,spurt,spungeon,spritzer,sprightly,sprays,sportswear,spoonful,splittin,splitsville,speedily,specialise,spastic,sparrin,souvlaki,southie,sourpuss,soupy,soundstage,soothes,somebody'd,softest,sociopathic,socialized,snyders,snowmobiles,snowballed,snatches,smugness,smoothest,smashes,sloshed,sleight,skyrocket,skied,skewed,sixpence,sipowicz,singling,simulates,shyness,shuvanis,showoff,shortsighted,shopkeeper,shoehorn,shithouse,shirtless,shipshape,shifu,shelve,shelbyville,sheepskin,sharpens,shaquille,shanshu,servings,sequined,seizes,seashells,scrambler,scopes,schnauzer,schmo,schizoid,scampered,savagely,saudis,santas,sandovals,sanding,saleswoman,sagging,s'cuse,rutting,ruthlessly,runneth,ruffians,rubes,rosalita,rollerblades,rohypnol,roasts,roadies,ritten,rippling,ripples,rigoletto,richardo,rethought,reshoot,reserving,reseda,rescuer,reread,requisitions,repute,reprogram,replenish,repetitious,reorganizing,reinventing,reinvented,reheat,refrigerators,reenter,recruiter,recliner,rawdy,rashes,rajeski,raison,raisers,rages,quinine,questscape,queller,pygmalion,pushers,pusan,purview,pumpin,pubescent,prudes,provolone,propriety,propped,procrastinate,processional,preyed,pretrial,portent,pooling,poofy,polloi,policia,poacher,pluses,pleasuring,platitudes,plateaued,plaguing,pittance,pinheads,pincushion,pimply,pimped,piggyback,piecing,phillipe,philipse,philby,pharaohs,petyr,petitioner,peshtigo,pesaram,persnickety,perpetrate,percolating,pepto,penne,penell,pemmican,peeks,pedaling,peacemaker,pawnshop,patting,pathologically,patchouli,pasts,pasties,passin,parlors,paltrow,palamon,padlock,paddling,oversleep,overheating,overdosed,overcharge,overblown,outrageously,ornery,opportune,oooooooooh,oohhhh,ohhhhhh,ogres,odorless,obliterated,nyong,nymphomaniac,ntozake,novocain,nough,nonnie,nonissue,nodules,nightmarish,nightline,niceties,newsman,needra,nedry,necking,navour,nauseam,nauls,narim,namath,nagged,naboo,n'sync,myslexia,mutator,mustafi,musketeer,murtaugh,murderess,munching,mumsy,muley,mouseville,mortifying,morgendorffers,moola,montel,mongoloid,molestered,moldings,mocarbies,mo'ss,mixers,misrell,misnomer,misheard,mishandled,miscreant,misconceptions,miniscule,millgate,mettle,metricconverter,meteors,menorah,mengele,melding,meanness,mcgruff,mcarnold,matzoh,matted,mastectomy,massager,marveling,marooned,marmaduke,marick,manhandled,manatees,man'll,maltin,maliciously,malfeasance,malahide,maketh,makeovers,maiming,machismo,lumpectomy,lumbering,lucci,lording,lorca,lookouts,loogie,loners,loathed,lissen,lighthearted,lifer,lickin,lewen,levitation,lestercorp,lessee,lentils,legislate,legalizing,lederhosen,lawmen,lasskopf,lardner,lambeau,lamagra,ladonn,lactic,lacquer,labatier,krabappel,kooks,knickknacks,klutzy,kleynach,klendathu,kinross,kinkaid,kind'a,ketch,kesher,karikos,karenina,kanamits,junshi,jumbled,joust,jotted,jobson,jingling,jigalong,jerries,jellies,jeeps,javna,irresistable,internist,intercranial,inseminated,inquisitor,infuriate,inflating,infidelities,incessantly,incensed,incase,incapacitate,inasmuch,inaccuracies,imploding,impeding,impediments,immaturity,illegible,iditarod,icicles,ibuprofen,i'i'm,hymie,hydrolase,hunker,humps,humons,humidor,humdinger,humbling,huggin,huffing,housecleaning,hothouse,hotcakes,hosty,hootenanny,hootchie,hoosegow,honks,honeymooners,homily,homeopathic,hitchhikers,hissed,hillnigger,hexavalent,hewwo,hershe,hermey,hergott,henny,hennigans,henhouse,hemolytic,helipad,heifer,hebrews,hebbing,heaved,headlock,harrowing,harnessed,hangovers,handi,handbasket,halfrek,hacene,gyges,guys're,gundersons,gumption,gruntmaster,grubs,grossie,groped,grins,greaseball,gravesite,gratuity,granma,grandfathers,grandbaby,gradski,gracing,gossips,gooble,goners,golitsyn,gofer,godsake,goddaughter,gnats,gluing,glares,givers,ginza,gimmie,gimmee,gennero,gemme,gazpacho,gazed,gassy,gargling,gandhiji,galvanized,gallbladder,gaaah,furtive,fumigation,fucka,fronkonsteen,frills,freezin,freewald,freeloader,frailty,forger,foolhardy,fondest,fomin,followin,follicle,flotation,flopping,floodgates,flogged,flicked,flenders,fleabag,fixings,fixable,fistful,firewater,firelight,fingerbang,finalizing,fillin,filipov,fiderer,felling,feldberg,feign,faunia,fatale,farkus,fallible,faithfulness,factoring,eyeful,extramarital,exterminated,exhume,exasperated,eviscerate,estoy,esmerelda,escapades,epoxy,enticed,enthused,entendre,engrossing,endorphins,emptive,emmys,eminently,embezzler,embarressed,embarrassingly,embalmed,eludes,eling,elated,eirie,egotitis,effecting,eerily,eecom,eczema,earthy,earlobes,eally,dyeing,dwells,duvet,duncans,dulcet,droves,droppin,drools,drey'auc,downriver,domesticity,dollop,doesnt,dobler,divulged,diversionary,distancing,dispensers,disorienting,disneyworld,dismissive,disingenuous,disheveled,disfiguring,dinning,dimming,diligently,dilettante,dilation,dickensian,diaphragms,devastatingly,destabilize,desecrate,deposing,deniece,demony,delving,delicates,deigned,defraud,deflower,defibrillator,defiantly,defenceless,defacing,deconstruction,decompose,deciphering,decibels,deceptively,deceptions,decapitation,debutantes,debonair,deadlier,dawdling,davic,darwinism,darnit,darks,danke,danieljackson,dangled,cytoxan,cutout,cutlery,curveball,curfews,cummerbund,crunches,crouched,crisps,cripples,crilly,cribs,crewman,creepin,creeds,credenza,creak,crawly,crawlin,crawlers,crated,crackheads,coworker,couldn't've,corwins,coriander,copiously,convenes,contraceptives,contingencies,contaminating,conniption,condiment,concocting,comprehending,complacency,commendatore,comebacks,com'on,collarbone,colitis,coldly,coiffure,coffers,coeds,codependent,cocksucking,cockney,cockles,clutched,closeted,cloistered,cleve,cleats,clarifying,clapped,cinnabar,chunnel,chumps,cholinesterase,choirboy,chocolatey,chlamydia,chigliak,cheesie,chauvinistic,chasm,chartreuse,charo,charnier,chapil,chalked,chadway,certifiably,cellulite,celled,cavalcade,cataloging,castrated,cassio,cashews,cartouche,carnivore,carcinogens,capulet,captivated,capt'n,cancellations,campin,callate,callar,caffeinated,cadavers,cacophony,cackle,buzzes,buttoning,busload,burglaries,burbs,buona,bunions,bullheaded,buffs,bucyk,buckling,bruschetta,browbeating,broomsticks,broody,bromly,brolin,briefings,brewskies,breathalyzer,breakups,bratwurst,brania,braiding,brags,braggin,bradywood,bottomed,bossa,bordello,bookshelf,boogida,bondsman,bolder,boggles,bludgeoned,blowtorch,blotter,blips,blemish,bleaching,blainetologists,blading,blabbermouth,birdseed,bimmel,biloxi,biggly,bianchinni,betadine,berenson,belus,belloq,begets,befitting,beepers,beelzebub,beefed,bedridden,bedevere,beckons,beaded,baubles,bauble,battleground,bathrobes,basketballs,basements,barroom,barnacle,barkin,barked,baretta,bangles,bangler,banality,bambang,baltar,ballplayers,bagman,baffles,backroom,babysat,baboons,averse,audiotape,auctioneer,atten,atcha,astonishment,arugula,arroz,antihistamines,annoyances,anesthesiology,anatomically,anachronism,amiable,amaretto,allahu,alight,aimin,ailment,afterglow,affronte,advil,adrenals,actualization,acrost,ached,accursed,accoutrements,absconded,aboveboard,abetted,aargh,aaaahh,zuwicky,zolda,ziploc,zakamatak,youve,yippie,yesterdays,yella,yearns,yearnings,yearned,yawning,yalta,yahtzee,y'mean,y'are,wuthering,wreaks,worrisome,workiiing,wooooooo,wonky,womanizing,wolodarsky,wiwith,withdraws,wishy,wisht,wipers,wiper,winos,windthorne,windsurfing,windermere,wiggled,wiggen,whwhat,whodunit,whoaaa,whittling,whitesnake,whereof,wheezing,wheeze,whatd'ya,whataya,whammo,whackin,wellll,weightless,weevil,wedgies,webbing,weasly,wayside,waxes,waturi,washy,washrooms,wandell,waitaminute,waddya,waaaah,vornac,vishnoor,virulent,vindictiveness,vinceres,villier,vigeous,vestigial,ventilate,vented,venereal,veering,veered,veddy,vaslova,valosky,vailsburg,vaginas,vagas,urethra,upstaged,uploading,unwrapping,unwieldy,untapped,unsatisfied,unquenchable,unnerved,unmentionable,unlovable,unknowns,uninformed,unimpressed,unhappily,unguarded,unexplored,undergarment,undeniably,unclench,unclaimed,uncharacteristically,unbuttoned,unblemished,ululd,uhhhm,tweeze,tutsami,tushy,tuscarora,turkle,turghan,turbinium,tubers,trucoat,troxa,tropicana,triquetra,trimmers,triceps,trespassed,traya,traumatizing,transvestites,trainors,tradin,trackers,townies,tourelles,toucha,tossin,tortious,topshop,topes,tonics,tongs,tomsk,tomorrows,toiling,toddle,tizzy,tippers,timmi,thwap,thusly,ththe,thrusts,throwers,throwed,throughway,thickening,thermonuclear,thelwall,thataway,terrifically,tendons,teleportation,telepathically,telekinetic,teetering,teaspoons,tarantulas,tapas,tanned,tangling,tamales,tailors,tahitian,tactful,tachy,tablespoon,syrah,synchronicity,synch,synapses,swooning,switchman,swimsuits,sweltering,sweetly,suvolte,suslov,surfed,supposition,suppertime,supervillains,superfluous,superego,sunspots,sunning,sunless,sundress,suckah,succotash,sublevel,subbasement,studious,striping,strenuously,straights,stonewalled,stillness,stilettos,stevesy,steno,steenwyck,stargates,stammering,staedert,squiggly,squiggle,squashing,squaring,spreadsheet,spramp,spotters,sporto,spooking,splendido,spittin,spirulina,spiky,spate,spartacus,spacerun,soonest,something'll,someth,somepin,someone'll,sofas,soberly,sobered,snowmen,snowbank,snowballing,snivelling,sniffling,snakeskin,snagging,smush,smooter,smidgen,smackers,slumlord,slossum,slimmer,slighted,sleepwalk,sleazeball,skokie,skeptic,sitarides,sistah,sipped,sindell,simpletons,simony,silkwood,silks,silken,sightless,sideboard,shuttles,shrugging,shrouds,showy,shoveled,shouldn'ta,shoplifters,shitstorm,sheeny,shapetype,shaming,shallows,shackle,shabbily,shabbas,seppuku,senility,semite,semiautomatic,selznick,secretarial,sebacio,scuzzy,scummy,scrutinized,scrunchie,scribbled,scotches,scolded,scissor,schlub,scavenging,scarin,scarfing,scallions,scald,savour,savored,saute,sarcoidosis,sandbar,saluted,salish,saith,sailboats,sagittarius,sacre,saccharine,sacamano,rushdie,rumpled,rumba,rulebook,rubbers,roughage,rotisserie,rootie,roofy,roofie,romanticize,rittle,ristorante,rippin,rinsing,ringin,rincess,rickety,reveling,retest,retaliating,restorative,reston,restaurateur,reshoots,resetting,resentments,reprogramming,repossess,repartee,renzo,remore,remitting,remeber,relaxants,rejuvenate,rejections,regenerated,refocus,referrals,reeno,recycles,recrimination,reclining,recanting,reattach,reassigning,razgul,raved,rattlesnakes,rattles,rashly,raquetball,ransack,raisinettes,raheem,radisson,radishes,raban,quoth,qumari,quints,quilts,quilting,quien,quarreled,purty,purblind,punchbowl,publically,psychotics,psychopaths,psychoanalyze,pruning,provasik,protectin,propping,proportioned,prophylactic,proofed,prompter,procreate,proclivities,prioritizing,prinze,pricked,press'll,presets,prescribes,preocupe,prejudicial,prefex,preconceived,precipice,pralines,pragmatist,powerbar,pottie,pottersville,potsie,potholes,posses,posies,portkey,porterhouse,pornographers,poring,poppycock,poppers,pomponi,pokin,poitier,podiatry,pleeze,pleadings,playbook,platelets,plane'arium,placebos,place'll,pistachios,pirated,pinochle,pineapples,pinafore,pimples,piggly,piddling,picon,pickpockets,picchu,physiologically,physic,phobic,philandering,phenomenally,pheasants,pewter,petticoat,petronis,petitioning,perturbed,perpetuating,permutat,perishable,perimeters,perfumed,percocet,per'sus,pepperjack,penalize,pelting,pellet,peignoir,pedicures,peckers,pecans,pawning,paulsson,pattycake,patrolmen,patois,pathos,pasted,parishioner,parcheesi,parachuting,papayas,pantaloons,palpitations,palantine,paintballing,overtired,overstress,oversensitive,overnights,overexcited,overanxious,overachiever,outwitted,outvoted,outnumber,outlast,outlander,out've,orphey,orchestrating,openers,ooooooo,okies,ohhhhhhhhh,ohhhhhhhh,ogling,offbeat,obsessively,obeyed,o'hana,o'bannon,o'bannion,numpce,nummy,nuked,nuances,nourishing,nosedive,norbu,nomlies,nomine,nixed,nihilist,nightshift,newmeat,neglectful,neediness,needin,naphthalene,nanocytes,nanite,naivete,n'yeah,mystifying,myhnegon,mutating,musing,mulled,muggy,muerto,muckraker,muchachos,mountainside,motherless,mosquitos,morphed,mopped,moodoo,moncho,mollem,moisturiser,mohicans,mocks,mistresses,misspent,misinterpretation,miscarry,minuses,mindee,mimes,millisecond,milked,mightn't,mightier,mierzwiak,microchips,meyerling,mesmerizing,mershaw,meecrob,medicate,meddled,mckinnons,mcgewan,mcdunnough,mcats,mbien,matzah,matriarch,masturbated,masselin,martialed,marlboros,marksmanship,marinate,marchin,manicured,malnourished,malign,majorek,magnon,magnificently,macking,machiavellian,macdougal,macchiato,macaws,macanaw,m'self,lydells,lusts,lucite,lubricants,lopper,lopped,loneliest,lonelier,lomez,lojack,loath,liquefy,lippy,limps,likin,lightness,liesl,liebchen,licious,libris,libation,lhamo,leotards,leanin,laxatives,lavished,latka,lanyard,lanky,landmines,lameness,laddies,lacerated,labored,l'amour,kreskin,kovitch,kournikova,kootchy,konoss,knknow,knickety,knackety,kmart,klicks,kiwanis,kissable,kindergartners,kilter,kidnet,kid'll,kicky,kickbacks,kickback,kholokov,kewpie,kendo,katra,kareoke,kafelnikov,kabob,junjun,jumba,julep,jordie,jondy,jolson,jenoff,jawbone,janitorial,janiro,ipecac,invigorated,intruded,intros,intravenously,interruptus,interrogations,interject,interfacing,interestin,insuring,instilled,insensitivity,inscrutable,inroads,innards,inlaid,injector,ingratitude,infuriates,infra,infliction,indelicate,incubators,incrimination,inconveniencing,inconsolable,incestuous,incas,incarcerate,inbreeding,impudence,impressionists,impeached,impassioned,imipenem,idling,idiosyncrasies,icebergs,hypotensive,hydrochloride,hushed,humus,humph,hummm,hulking,hubcaps,hubald,howya,howbout,how'll,housebroken,hotwire,hotspots,hotheaded,horrace,hopsfield,honto,honkin,honeymoons,homewrecker,hombres,hollers,hollerin,hoedown,hoboes,hobbling,hobble,hoarse,hinky,highlighters,hexes,heru'ur,hernias,heppleman,hell're,heighten,heheheheheh,heheheh,hedging,heckling,heckled,heavyset,heatshield,heathens,heartthrob,headpiece,hayseed,haveo,hauls,hasten,harridan,harpoons,hardens,harcesis,harbouring,hangouts,halkein,haleh,halberstam,hairnet,hairdressers,hacky,haaaa,h'yah,gusta,gushy,gurgling,guilted,gruel,grudging,grrrrrr,grosses,groomsmen,griping,gravest,gratified,grated,goulash,goopy,goona,goodly,godliness,godawful,godamn,glycerin,glutes,glowy,globetrotters,glimpsed,glenville,glaucoma,girlscout,giraffes,gilbey,gigglepuss,ghora,gestating,gelato,geishas,gearshift,gayness,gasped,gaslighting,garretts,garba,gablyczyck,g'head,fumigating,fumbling,fudged,fuckwad,fuck're,fuchsia,fretting,freshest,frenchies,freezers,fredrica,fraziers,fraidy,foxholes,fourty,fossilized,forsake,forfeits,foreclosed,foreal,footsies,florists,flopped,floorshow,floorboard,flinching,flecks,flaubert,flatware,flatulence,flatlined,flashdance,flail,flagging,fiver,fitzy,fishsticks,finetti,finelli,finagle,filko,fieldstone,fibber,ferrini,feedin,feasting,favore,fathering,farrouhk,farmin,fairytale,fairservice,factoid,facedown,fabled,eyeballin,extortionist,exquisitely,expedited,exorcise,existentialist,execs,exculpatory,exacerbate,everthing,eventuality,evander,euphoric,euphemisms,estamos,erred,entitle,enquiries,enormity,enfants,endive,encyclopedias,emulating,embittered,effortless,ectopic,ecirc,easely,earphones,earmarks,dweller,durslar,durned,dunois,dunking,dunked,dumdum,dullard,dudleys,druthers,druggist,drossos,drooled,driveways,drippy,dreamless,drawstring,drang,drainpipe,dozing,dotes,dorkface,doorknobs,doohickey,donnatella,doncha,domicile,dokos,dobermans,dizzying,divola,ditsy,distaste,disservice,dislodged,dislodge,disinherit,disinformation,discounting,dinka,dimly,digesting,diello,diddling,dictatorships,dictators,diagnostician,devours,devilishly,detract,detoxing,detours,detente,destructs,desecrated,derris,deplore,deplete,demure,demolitions,demean,delish,delbruck,delaford,degaulle,deftly,deformity,deflate,definatly,defector,decrypted,decontamination,decapitate,decanter,dardis,dampener,damme,daddy'll,dabbling,dabbled,d'etre,d'argent,d'alene,d'agnasti,czechoslovakian,cymbal,cyberdyne,cutoffs,cuticle,curvaceous,curiousity,crowing,crowed,croutons,cropped,criminy,crescentis,crashers,cranwell,coverin,courtrooms,countenance,cosmically,cosign,corroboration,coroners,cornflakes,copperpot,copperhead,copacetic,coordsize,convulsing,consults,conjures,congenial,concealer,compactor,commercialism,cokey,cognizant,clunkers,clumsily,clucking,cloves,cloven,cloths,clothe,clods,clocking,clings,clavicle,classless,clashing,clanking,clanging,clamping,civvies,citywide,circulatory,circuited,chronisters,chromic,choos,chloroformed,chillun,cheesed,chatterbox,chaperoned,channukah,cerebellum,centerpieces,centerfold,ceecee,ccedil,cavorting,cavemen,cauterized,cauldwell,catting,caterine,cassiopeia,carves,cartwheel,carpeted,carob,caressing,carelessly,careening,capricious,capitalistic,capillaries,candidly,camaraderie,callously,calfskin,caddies,buttholes,busywork,busses,burps,burgomeister,bunkhouse,bungchow,bugler,buffets,buffed,brutish,brusque,bronchitis,bromden,brolly,broached,brewskis,brewin,brean,breadwinner,brana,bountiful,bouncin,bosoms,borgnine,bopping,bootlegs,booing,bombosity,bolting,boilerplate,bluey,blowback,blouses,bloodsuckers,bloodstained,bloat,bleeth,blackface,blackest,blackened,blacken,blackballed,blabs,blabbering,birdbrain,bipartisanship,biodegradable,biltmore,bilked,big'uns,bidet,besotted,bernheim,benegas,bendiga,belushi,bellboys,belittling,behinds,begone,bedsheets,beckoning,beaute,beaudine,beastly,beachfront,bathes,batak,baser,baseballs,barbella,bankrolling,bandaged,baerly,backlog,backin,babying,azkaban,awwwww,aviary,authorizes,austero,aunty,attics,atreus,astounded,astonish,artemus,arses,arintero,appraiser,apathetic,anybody'd,anxieties,anticlimactic,antar,anglos,angleman,anesthetist,androscoggin,andolini,andale,amway,amuck,amniocentesis,amnesiac,americano,amara,alvah,altruism,alternapalooza,alphabetize,alpaca,allus,allergist,alexandros,alaikum,akimbo,agoraphobia,agides,aggrhh,aftertaste,adoptions,adjuster,addictions,adamantium,activator,accomplishes,aberrant,aaaaargh,aaaaaaaaaaaaa,a'ight,zzzzzzz,zucchini,zookeeper,zirconia,zippers,zequiel,zellary,zeitgeist,zanuck,zagat,you'n,ylang,yes'm,yenta,yecchh,yecch,yawns,yankin,yahdah,yaaah,y'got,xeroxed,wwooww,wristwatch,wrangled,wouldst,worthiness,worshiping,wormy,wormtail,wormholes,woosh,wollsten,wolfing,woefully,wobbling,wintry,wingding,windstorm,windowtext,wiluna,wilting,wilted,willick,willenholly,wildflowers,wildebeest,whyyy,whoppers,whoaa,whizzing,whizz,whitest,whistled,whist,whinny,wheelies,whazzup,whatwhatwhaaat,whato,whatdya,what'dya,whacks,wewell,wetsuit,welluh,weeps,waylander,wavin,wassail,wasnt,warneford,warbucks,waltons,wallbanger,waiving,waitwait,vowing,voucher,vornoff,vorhees,voldemort,vivre,vittles,vindaloo,videogames,vichyssoise,vicarious,vesuvius,verguenza,ven't,velveteen,velour,velociraptor,vastness,vasectomies,vapors,vanderhof,valmont,validates,valiantly,vacuums,usurp,usernum,us'll,urinals,unyielding,unvarnished,unturned,untouchables,untangled,unsecured,unscramble,unreturned,unremarkable,unpretentious,unnerstand,unmade,unimpeachable,unfashionable,underwrite,underlining,underling,underestimates,underappreciated,uncouth,uncork,uncommonly,unclog,uncircumcised,unchallenged,uncas,unbuttoning,unapproved,unamerican,unafraid,umpteen,umhmm,uhwhy,ughuh,typewriters,twitches,twitched,twirly,twinkling,twinges,twiddling,turners,turnabout,tumblin,tryed,trowel,trousseau,trivialize,trifles,tribianni,trenchcoat,trembled,traumatize,transitory,transients,transfuse,transcribing,tranq,trampy,traipsed,trainin,trachea,traceable,touristy,toughie,toscanini,tortola,tortilla,torreon,toreador,tommorrow,tollbooth,tollans,toidy,togas,tofurkey,toddling,toddies,toasties,toadstool,to've,tingles,timin,timey,timetables,tightest,thuggee,thrusting,thrombus,throes,thrifty,thornharts,thinnest,thicket,thetas,thesulac,tethered,testaburger,tersenadine,terrif,terdlington,tepui,temping,tector,taxidermy,tastebuds,tartlets,tartabull,tar'd,tantamount,tangy,tangles,tamer,tabula,tabletops,tabithia,szechwan,synthedyne,svenjolly,svengali,survivalists,surmise,surfboards,surefire,suprise,supremacists,suppositories,superstore,supercilious,suntac,sunburned,summercliff,sullied,sugared,suckle,subtleties,substantiated,subsides,subliminal,subhuman,strowman,stroked,stroganoff,streetlight,straying,strainer,straighter,straightener,stoplight,stirrups,stewing,stereotyping,stepmommy,stephano,stashing,starshine,stairwells,squatsie,squandering,squalid,squabbling,squab,sprinkling,spreader,spongy,spokesmen,splintered,spittle,spitter,spiced,spews,spendin,spect,spearchucker,spatulas,southtown,soused,soshi,sorter,sorrowful,sooth,some'in,soliloquy,soiree,sodomized,sobriki,soaping,snows,snowcone,snitching,snitched,sneering,snausages,snaking,smoothed,smoochies,smarten,smallish,slushy,slurring,sluman,slithers,slippin,sleuthing,sleeveless,skinless,skillfully,sketchbook,skagnetti,sista,sinning,singularly,sinewy,silverlake,siguto,signorina,sieve,sidearms,shying,shunning,shtud,shrieks,shorting,shortbread,shopkeepers,shmancy,shizzit,shitheads,shitfaced,shipmates,shiftless,shelving,shedlow,shavings,shatters,sharifa,shampoos,shallots,shafter,sha'nauc,sextant,serviceable,sepsis,senores,sendin,semis,semanski,selflessly,seinfelds,seers,seeps,seductress,secaucus,sealant,scuttling,scusa,scrunched,scissorhands,schreber,schmancy,scamps,scalloped,savoir,savagery,sarong,sarnia,santangel,samool,sallow,salino,safecracker,sadism,sacrilegious,sabrini,sabath,s'aright,ruttheimer,rudest,rubbery,rousting,rotarian,roslin,roomed,romari,romanica,rolltop,rolfski,rockettes,roared,ringleader,riffing,ribcage,rewired,retrial,reting,resuscitated,restock,resale,reprogrammed,replicant,repentant,repellant,repays,repainting,renegotiating,rendez,remem,relived,relinquishes,relearn,relaxant,rekindling,rehydrate,refueled,refreshingly,refilling,reexamine,reeseman,redness,redeemable,redcoats,rectangles,recoup,reciprocated,reassessing,realy,realer,reachin,re'kali,rawlston,ravages,rappaports,ramoray,ramming,raindrops,rahesh,radials,racists,rabartu,quiches,quench,quarreling,quaintly,quadrants,putumayo,put'em,purifier,pureed,punitis,pullout,pukin,pudgy,puddings,puckering,pterodactyl,psychodrama,psats,protestations,protectee,prosaic,propositioned,proclivity,probed,printouts,prevision,pressers,preset,preposition,preempt,preemie,preconceptions,prancan,powerpuff,potties,potpie,poseur,porthole,poops,pooping,pomade,polyps,polymerized,politeness,polisher,polack,pocketknife,poatia,plebeian,playgroup,platonically,platitude,plastering,plasmapheresis,plaids,placemats,pizzazz,pintauro,pinstripes,pinpoints,pinkner,pincer,pimento,pileup,pilates,pigmen,pieeee,phrased,photocopies,phoebes,philistines,philanderer,pheromone,phasers,pfeffernuesse,pervs,perspire,personify,perservere,perplexed,perpetrating,perkiness,perjurer,periodontist,perfunctory,perdido,percodan,pentameter,pentacle,pensive,pensione,pennybaker,pennbrooke,penhall,pengin,penetti,penetrates,pegnoir,peeve,peephole,pectorals,peckin,peaky,peaksville,paxcow,paused,patted,parkishoff,parkers,pardoning,paraplegic,paraphrasing,paperers,papered,pangs,paneling,palooza,palmed,palmdale,palatable,pacify,pacified,owwwww,oversexed,overrides,overpaying,overdrawn,overcompensate,overcomes,overcharged,outmaneuver,outfoxed,oughtn't,ostentatious,oshun,orthopedist,or'derves,ophthalmologist,operagirl,oozes,oooooooh,onesie,omnis,omelets,oktoberfest,okeydoke,ofthe,ofher,obstetrical,obeys,obeah,o'henry,nyquil,nyanyanyanyah,nuttin,nutsy,nutball,nurhachi,numbskull,nullifies,nullification,nucking,nubbin,nourished,nonspecific,noing,noinch,nohoho,nobler,nitwits,newsprint,newspaperman,newscaster,neuropathy,netherworld,neediest,navasky,narcissists,napped,nafta,mache,mykonos,mutilating,mutherfucker,mutha,mutates,mutate,musn't,murchy,multitasking,mujeeb,mudslinging,muckraking,mousetrap,mourns,mournful,motherf,mostro,morphing,morphate,moralistic,moochy,mooching,monotonous,monopolize,monocle,molehill,moland,mofet,mockup,mobilizing,mmmmmmm,mitzvahs,mistreating,misstep,misjudge,misinformation,misdirected,miscarriages,miniskirt,mindwarped,minced,milquetoast,miguelito,mightily,midstream,midriff,mideast,microbe,methuselah,mesdames,mescal,men'll,memma,megaton,megara,megalomaniac,meeee,medulla,medivac,meaninglessness,mcnuggets,mccarthyism,maypole,may've,mauve,mateys,marshack,markles,marketable,mansiere,manservant,manse,manhandling,mallomars,malcontent,malaise,majesties,mainsail,mailmen,mahandra,magnolias,magnified,magev,maelstrom,machu,macado,m'boy,m'appelle,lustrous,lureen,lunges,lumped,lumberyard,lulled,luego,lucks,lubricated,loveseat,loused,lounger,loski,lorre,loora,looong,loonies,loincloth,lofts,lodgers,lobbing,loaner,livered,liqueur,ligourin,lifesaving,lifeguards,lifeblood,liaisons,let'em,lesbianism,lence,lemonlyman,legitimize,leadin,lazars,lazarro,lawyering,laugher,laudanum,latrines,lations,laters,lapels,lakefront,lahit,lafortunata,lachrymose,l'italien,kwaini,kruczynski,kramerica,kowtow,kovinsky,korsekov,kopek,knowakowski,knievel,knacks,kiowas,killington,kickball,keyworth,keymaster,kevie,keveral,kenyons,keggers,keepsakes,kechner,keaty,kavorka,karajan,kamerev,kaggs,jujyfruit,jostled,jonestown,jokey,joists,jocko,jimmied,jiggled,jests,jenzen,jenko,jellyman,jedediah,jealitosis,jaunty,jarmel,jankle,jagoff,jagielski,jackrabbits,jabbing,jabberjaw,izzat,irresponsibly,irrepressible,irregularity,irredeemable,inuvik,intuitions,intubated,intimates,interminable,interloper,intercostal,instyle,instigate,instantaneously,ining,ingrown,ingesting,infusing,infringe,infinitum,infact,inequities,indubitably,indisputable,indescribably,indentation,indefinable,incontrovertible,inconsequential,incompletes,incoherently,inclement,incidentals,inarticulate,inadequacies,imprudent,improprieties,imprison,imprinted,impressively,impostors,importante,imperious,impale,immodest,immobile,imbedded,imbecilic,illegals,idn't,hysteric,hypotenuse,hygienic,hyeah,hushpuppies,hunhh,humpback,humored,hummed,humiliates,humidifier,huggy,huggers,huckster,hotbed,hosing,hosers,horsehair,homebody,homebake,holing,holies,hoisting,hogwallop,hocks,hobbits,hoaxes,hmmmmm,hisses,hippest,hillbillies,hilarity,heurh,herniated,hermaphrodite,hennifer,hemlines,hemline,hemery,helplessness,helmsley,hellhound,heheheheh,heeey,hedda,heartbeats,heaped,healers,headstart,headsets,headlong,hawkland,havta,haulin,harvey'll,hanta,hansom,hangnail,handstand,handrail,handoff,hallucinogen,hallor,halitosis,haberdashery,gypped,guy'll,gumbel,guerillas,guava,guardrail,grunther,grunick,groppi,groomer,grodin,gripes,grinds,grifters,gretch,greevey,greasing,graveyards,grandkid,grainy,gouging,gooney,googly,goldmuff,goldenrod,goingo,godly,gobbledygook,gobbledegook,glues,gloriously,glengarry,glassware,glamor,gimmicks,giggly,giambetti,ghoulish,ghettos,ghali,gether,geriatrics,gerbils,geosynchronous,georgio,gente,gendarme,gelbman,gazillionth,gayest,gauging,gastro,gaslight,gasbag,garters,garish,garas,gantu,gangy,gangly,gangland,galling,gadda,furrowed,funnies,funkytown,fugimotto,fudging,fuckeen,frustrates,froufrou,froot,fromberge,frizzies,fritters,frightfully,friendliest,freeloading,freelancing,freakazoid,fraternization,framers,fornication,fornicating,forethought,footstool,foisting,focussing,focking,flurries,fluffed,flintstones,fledermaus,flayed,flawlessly,flatters,flashbang,flapped,fishies,firmer,fireproof,firebug,fingerpainting,finessed,findin,financials,finality,fillets,fiercest,fiefdom,fibbing,fervor,fentanyl,fenelon,fedorchuk,feckless,feathering,faucets,farewells,fantasyland,fanaticism,faltered,faggy,faberge,extorting,extorted,exterminating,exhumation,exhilaration,exhausts,exfoliate,excels,exasperating,exacting,everybody'd,evasions,espressos,esmail,errrr,erratically,eroding,ernswiler,epcot,enthralled,ensenada,enriching,enrage,enhancer,endear,encrusted,encino,empathic,embezzle,emanates,electricians,eking,egomaniacal,egging,effacing,ectoplasm,eavesdropped,dummkopf,dugray,duchaisne,drunkard,drudge,droop,droids,drips,dripped,dribbles,drazens,downy,downsize,downpour,dosages,doppelganger,dopes,doohicky,dontcha,doneghy,divining,divest,diuretics,diuretic,distrustful,disrupts,dismemberment,dismember,disinfect,disillusionment,disheartening,discourteous,discotheque,discolored,dirtiest,diphtheria,dinks,dimpled,didya,dickwad,diatribes,diathesis,diabetics,deviants,detonates,detests,detestable,detaining,despondent,desecration,derision,derailing,deputized,depressors,dependant,dentures,denominators,demur,demonology,delts,dellarte,delacour,deflated,defib,defaced,decorators,deaqon,davola,datin,darwinian,darklighters,dandelions,dampened,damaskinos,dalrimple,d'peshu,d'hoffryn,d'astier,cynics,cutesy,cutaway,curmudgeon,curdle,culpability,cuisinart,cuffing,crypts,cryptid,crunched,crumblers,crudely,crosscheck,croon,crissake,crevasse,creswood,creepo,creases,creased,creaky,cranks,crabgrass,coveralls,couple'a,coughs,coslaw,corporeal,cornucopia,cornering,corks,cordoned,coolly,coolin,cookbooks,contrite,contented,constrictor,confound,confit,confiscating,condoned,conditioners,concussions,comprendo,comers,combustible,combusted,collingswood,coldness,coitus,codicil,coasting,clydesdale,cluttering,clunker,clunk,clumsiness,clotted,clothesline,clinches,clincher,cleverness,clench,clein,cleanses,claymores,clammed,chugging,chronically,christsakes,choque,chompers,chiseling,chirpy,chirp,chinks,chingachgook,chickenpox,chickadee,chewin,chessboard,chargin,chanteuse,chandeliers,chamdo,chagrined,chaff,certs,certainties,cerreno,cerebrum,censured,cemetary,caterwauling,cataclysmic,casitas,cased,carvel,carting,carrear,carolling,carolers,carnie,cardiogram,carbuncle,capulets,canines,candaules,canape,caldecott,calamitous,cadillacs,cachet,cabeza,cabdriver,buzzards,butai,businesswomen,bungled,bumpkins,bummers,bulldoze,buffybot,bubut,bubbies,brrrrr,brownout,brouhaha,bronzing,bronchial,broiler,briskly,briefcases,bricked,breezing,breeher,breakable,breadstick,bravenet,braved,brandies,brainwaves,brainiest,braggart,bradlee,boys're,boys'll,boys'd,boutonniere,bossed,bosomy,borans,boosts,bookshelves,bookends,boneless,bombarding,bollo,boinked,boink,bluest,bluebells,bloodshot,blockhead,blockbusters,blithely,blather,blankly,bladders,blackbeard,bitte,bippy,biogenetics,bilge,bigglesworth,bicuspids,beususe,betaseron,besmirch,bernece,bereavement,bentonville,benchley,benching,bembe,bellyaching,bellhops,belie,beleaguered,behrle,beginnin,begining,beenie,beefs,beechwood,becau,beaverhausen,beakers,bazillion,baudouin,barrytown,barringtons,barneys,barbs,barbers,barbatus,bankrupted,bailiffs,backslide,baby'd,baaad,b'fore,awwwk,aways,awakes,automatics,authenticate,aught,aubyn,attired,attagirl,atrophied,asystole,astroturf,assertiveness,artichokes,arquillians,aright,archenemy,appraise,appeased,antin,anspaugh,anesthetics,anaphylactic,amscray,ambivalence,amalio,alriiight,alphabetized,alpena,alouette,allora,alliteration,allenwood,allegiances,algerians,alcerro,alastor,ahaha,agitators,aforethought,advertises,admonition,adirondacks,adenoids,acupuncturist,acula,actuarial,activators,actionable,achingly,accusers,acclimated,acclimate,absurdly,absorbent,absolvo,absolutes,absences,abdomenizer,aaaaaaaaah,aaaaaaaaaa,a'right".split(","),
43355 male_names:"james,john,robert,michael,william,david,richard,charles,joseph,thomas,christopher,daniel,paul,mark,donald,george,kenneth,steven,edward,brian,ronald,anthony,kevin,jason,matthew,gary,timothy,jose,larry,jeffrey,frank,scott,eric,stephen,andrew,raymond,gregory,joshua,jerry,dennis,walter,patrick,peter,harold,douglas,henry,carl,arthur,ryan,roger,joe,juan,jack,albert,jonathan,justin,terry,gerald,keith,samuel,willie,ralph,lawrence,nicholas,roy,benjamin,bruce,brandon,adam,harry,fred,wayne,billy,steve,louis,jeremy,aaron,randy,eugene,carlos,russell,bobby,victor,ernest,phillip,todd,jesse,craig,alan,shawn,clarence,sean,philip,chris,johnny,earl,jimmy,antonio,danny,bryan,tony,luis,mike,stanley,leonard,nathan,dale,manuel,rodney,curtis,norman,marvin,vincent,glenn,jeffery,travis,jeff,chad,jacob,melvin,alfred,kyle,francis,bradley,jesus,herbert,frederick,ray,joel,edwin,don,eddie,ricky,troy,randall,barry,bernard,mario,leroy,francisco,marcus,micheal,theodore,clifford,miguel,oscar,jay,jim,tom,calvin,alex,jon,ronnie,bill,lloyd,tommy,leon,derek,darrell,jerome,floyd,leo,alvin,tim,wesley,dean,greg,jorge,dustin,pedro,derrick,dan,zachary,corey,herman,maurice,vernon,roberto,clyde,glen,hector,shane,ricardo,sam,rick,lester,brent,ramon,tyler,gilbert,gene,marc,reginald,ruben,brett,nathaniel,rafael,edgar,milton,raul,ben,cecil,duane,andre,elmer,brad,gabriel,ron,roland,jared,adrian,karl,cory,claude,erik,darryl,neil,christian,javier,fernando,clinton,ted,mathew,tyrone,darren,lonnie,lance,cody,julio,kurt,allan,clayton,hugh,max,dwayne,dwight,armando,felix,jimmie,everett,ian,ken,bob,jaime,casey,alfredo,alberto,dave,ivan,johnnie,sidney,byron,julian,isaac,clifton,willard,daryl,virgil,andy,salvador,kirk,sergio,seth,kent,terrance,rene,eduardo,terrence,enrique,freddie,stuart,fredrick,arturo,alejandro,joey,nick,luther,wendell,jeremiah,evan,julius,donnie,otis,trevor,luke,homer,gerard,doug,kenny,hubert,angelo,shaun,lyle,matt,alfonso,orlando,rex,carlton,ernesto,pablo,lorenzo,omar,wilbur,blake,horace,roderick,kerry,abraham,rickey,ira,andres,cesar,johnathan,malcolm,rudolph,damon,kelvin,rudy,preston,alton,archie,marco,pete,randolph,garry,geoffrey,jonathon,felipe,bennie,gerardo,dominic,loren,delbert,colin,guillermo,earnest,benny,noel,rodolfo,myron,edmund,salvatore,cedric,lowell,gregg,sherman,devin,sylvester,roosevelt,israel,jermaine,forrest,wilbert,leland,simon,irving,owen,rufus,woodrow,sammy,kristopher,levi,marcos,gustavo,jake,lionel,marty,gilberto,clint,nicolas,laurence,ismael,orville,drew,ervin,dewey,wilfred,josh,hugo,ignacio,caleb,tomas,sheldon,erick,frankie,darrel,rogelio,terence,alonzo,elias,bert,elbert,ramiro,conrad,noah,grady,phil,cornelius,lamar,rolando,clay,percy,bradford,merle,darin,amos,terrell,moses,irvin,saul,roman,darnell,randal,tommie,timmy,darrin,brendan,toby,van,abel,dominick,emilio,elijah,cary,domingo,aubrey,emmett,marlon,emanuel,jerald,edmond,emil,dewayne,otto,teddy,reynaldo,bret,jess,trent,humberto,emmanuel,stephan,louie,vicente,lamont,garland,micah,efrain,heath,rodger,demetrius,ethan,eldon,rocky,pierre,eli,bryce,antoine,robbie,kendall,royce,sterling,grover,elton,cleveland,dylan,chuck,damian,reuben,stan,leonardo,russel,erwin,benito,hans,monte,blaine,ernie,curt,quentin,agustin,jamal,devon,adolfo,tyson,wilfredo,bart,jarrod,vance,denis,damien,joaquin,harlan,desmond,elliot,darwin,gregorio,kermit,roscoe,esteban,anton,solomon,norbert,elvin,nolan,carey,rod,quinton,hal,brain,rob,elwood,kendrick,darius,moises,marlin,fidel,thaddeus,cliff,marcel,ali,raphael,bryon,armand,alvaro,jeffry,dane,joesph,thurman,ned,sammie,rusty,michel,monty,rory,fabian,reggie,kris,isaiah,gus,avery,loyd,diego,adolph,millard,rocco,gonzalo,derick,rodrigo,gerry,rigoberto,alphonso,rickie,noe,vern,elvis,bernardo,mauricio,hiram,donovan,basil,nickolas,scot,vince,quincy,eddy,sebastian,federico,ulysses,heriberto,donnell,denny,gavin,emery,romeo,jayson,dion,dante,clement,coy,odell,jarvis,bruno,issac,dudley,sanford,colby,carmelo,nestor,hollis,stefan,donny,linwood,beau,weldon,galen,isidro,truman,delmar,johnathon,silas,frederic,irwin,merrill,charley,marcelino,carlo,trenton,kurtis,aurelio,winfred,vito,collin,denver,leonel,emory,pasquale,mohammad,mariano,danial,landon,dirk,branden,adan,numbers,clair,buford,bernie,wilmer,emerson,zachery,jacques,errol,josue,edwardo,wilford,theron,raymundo,daren,tristan,robby,lincoln,jame,genaro,octavio,cornell,hung,arron,antony,herschel,alva,giovanni,garth,cyrus,cyril,ronny,stevie,lon,kennith,carmine,augustine,erich,chadwick,wilburn,russ,myles,jonas,mitchel,mervin,zane,jamel,lazaro,alphonse,randell,johnie,jarrett,ariel,abdul,dusty,luciano,seymour,scottie,eugenio,mohammed,arnulfo,lucien,ferdinand,thad,ezra,aldo,rubin,mitch,earle,abe,marquis,lanny,kareem,jamar,boris,isiah,emile,elmo,aron,leopoldo,everette,josef,eloy,dorian,rodrick,reinaldo,lucio,jerrod,weston,hershel,lemuel,lavern,burt,jules,gil,eliseo,ahmad,nigel,efren,antwan,alden,margarito,refugio,dino,osvaldo,les,deandre,normand,kieth,ivory,trey,norberto,napoleon,jerold,fritz,rosendo,milford,sang,deon,christoper,alfonzo,lyman,josiah,brant,wilton,rico,jamaal,dewitt,brenton,yong,olin,faustino,claudio,judson,gino,edgardo,alec,jarred,donn,trinidad,tad,porfirio,odis,lenard,chauncey,tod,mel,marcelo,kory,augustus,keven,hilario,bud,sal,orval,mauro,dannie,zachariah,olen,anibal,milo,jed,thanh,amado,lenny,tory,richie,horacio,brice,mohamed,delmer,dario,mac,jonah,jerrold,robt,hank,sung,rupert,rolland,kenton,damion,chi,antone,waldo,fredric,bradly,kip,burl,tyree,jefferey,ahmed,willy,stanford,oren,moshe,mikel,enoch,brendon,quintin,jamison,florencio,darrick,tobias,minh,hassan,giuseppe,demarcus,cletus,tyrell,lyndon,keenan,werner,theo,geraldo,columbus,chet,bertram,markus,huey,hilton,dwain,donte,tyron,omer,isaias,hipolito,fermin,chung,adalberto,jamey,teodoro,mckinley,maximo,raleigh,lawerence,abram,rashad,emmitt,daron,chong,samual,otha,miquel,eusebio,dong,domenic,darron,wilber,renato,hoyt,haywood,ezekiel,chas,florentino,elroy,clemente,arden,neville,edison,deshawn,carrol,shayne,nathanial,jordon,danilo,claud,sherwood,raymon,rayford,cristobal,ambrose,titus,hyman,felton,ezequiel,erasmo,lonny,milan,lino,jarod,herb,andreas,rhett,jude,douglass,cordell,oswaldo,ellsworth,virgilio,toney,nathanael,benedict,mose,hong,isreal,garret,fausto,arlen,zack,modesto,francesco,manual,gaylord,gaston,filiberto,deangelo,michale,granville,malik,zackary,tuan,nicky,cristopher,antione,malcom,korey,jospeh,colton,waylon,hosea,shad,santo,rudolf,rolf,renaldo,marcellus,lucius,kristofer,harland,arnoldo,rueben,leandro,kraig,jerrell,jeromy,hobert,cedrick,arlie,winford,wally,luigi,keneth,jacinto,graig,franklyn,edmundo,leif,jeramy,willian,vincenzo,shon,michal,lynwood,jere,elden,darell,broderick,alonso".split(",")},module.exports=frequency_lists;
43356
43357 },{}],4:[function(require,module,exports){
43358 var feedback,matching,scoring,time,time_estimates,zxcvbn;matching=require("./matching"),scoring=require("./scoring"),time_estimates=require("./time_estimates"),feedback=require("./feedback"),time=function(){return(new Date).getTime()},zxcvbn=function(e,t){var i,n,c,s,a,r,m,o,u,g,_;for(null==t&&(t=[]),g=time(),u=[],c=0,s=t.length;c<s;c++)i=t[c],"string"!=(m=typeof i)&&"number"!==m&&"boolean"!==m||u.push(i.toString().toLowerCase());matching.set_user_input_dictionary(u),a=matching.omnimatch(e),o=scoring.most_guessable_match_sequence(e,a),o.calc_time=time()-g,n=time_estimates.estimate_attack_times(o.guesses);for(r in n)_=n[r],o[r]=_;return o.feedback=feedback.get_feedback(o.score,o.sequence),o},module.exports=zxcvbn;
43359
43360 },{"./feedback":2,"./matching":5,"./scoring":6,"./time_estimates":7}],5:[function(require,module,exports){
43361 var DATE_MAX_YEAR,DATE_MIN_YEAR,DATE_SPLITS,GRAPHS,L33T_TABLE,RANKED_DICTIONARIES,REGEXEN,adjacency_graphs,build_ranked_dict,frequency_lists,lst,matching,name,scoring;frequency_lists=require("./frequency_lists"),adjacency_graphs=require("./adjacency_graphs"),scoring=require("./scoring"),build_ranked_dict=function(e){var t,n,r,i,a;for(i={},t=1,r=0,n=e.length;r<n;r++)a=e[r],i[a]=t,t+=1;return i},RANKED_DICTIONARIES={};for(name in frequency_lists)lst=frequency_lists[name],RANKED_DICTIONARIES[name]=build_ranked_dict(lst);GRAPHS={qwerty:adjacency_graphs.qwerty,dvorak:adjacency_graphs.dvorak,keypad:adjacency_graphs.keypad,mac_keypad:adjacency_graphs.mac_keypad},L33T_TABLE={a:["4","@"],b:["8"],c:["(","{","[","<"],e:["3"],g:["6","9"],i:["1","!","|"],l:["1","|","7"],o:["0"],s:["$","5"],t:["+","7"],x:["%"],z:["2"]},REGEXEN={recent_year:/19\d\d|200\d|201\d/g},DATE_MAX_YEAR=2050,DATE_MIN_YEAR=1e3,DATE_SPLITS={4:[[1,2],[2,3]],5:[[1,3],[2,3]],6:[[1,2],[2,4],[4,5]],7:[[1,3],[2,3],[4,5],[4,6]],8:[[2,4],[4,6]]},matching={empty:function(e){var t;return 0===function(){var n;n=[];for(t in e)n.push(t);return n}().length},extend:function(e,t){return e.push.apply(e,t)},translate:function(e,t){var n;return function(){var r,i,a,s;for(a=e.split(""),s=[],i=0,r=a.length;i<r;i++)n=a[i],s.push(t[n]||n);return s}().join("")},mod:function(e,t){return(e%t+t)%t},sorted:function(e){return e.sort(function(e,t){return e.i-t.i||e.j-t.j})},omnimatch:function(e){var t,n,r,i,a;for(i=[],r=[this.dictionary_match,this.reverse_dictionary_match,this.l33t_match,this.spatial_match,this.repeat_match,this.sequence_match,this.regex_match,this.date_match],a=0,t=r.length;a<t;a++)n=r[a],this.extend(i,n.call(this,e));return this.sorted(i)},dictionary_match:function(e,t){var n,r,i,a,s,o,h,u,c,l,_,f,d,p;null==t&&(t=RANKED_DICTIONARIES),s=[],a=e.length,u=e.toLowerCase();for(n in t)for(l=t[n],r=o=0,_=a;0<=_?o<_:o>_;r=0<=_?++o:--o)for(i=h=f=r,d=a;f<=d?h<d:h>d;i=f<=d?++h:--h)u.slice(r,+i+1||9e9)in l&&(p=u.slice(r,+i+1||9e9),c=l[p],s.push({pattern:"dictionary",i:r,j:i,token:e.slice(r,+i+1||9e9),matched_word:p,rank:c,dictionary_name:n,reversed:!1,l33t:!1}));return this.sorted(s)},reverse_dictionary_match:function(e,t){var n,r,i,a,s,o;for(null==t&&(t=RANKED_DICTIONARIES),o=e.split("").reverse().join(""),i=this.dictionary_match(o,t),a=0,n=i.length;a<n;a++)r=i[a],r.token=r.token.split("").reverse().join(""),r.reversed=!0,s=[e.length-1-r.j,e.length-1-r.i],r.i=s[0],r.j=s[1];return this.sorted(i)},set_user_input_dictionary:function(e){return RANKED_DICTIONARIES.user_inputs=build_ranked_dict(e.slice())},relevant_l33t_subtable:function(e,t){var n,r,i,a,s,o,h,u,c,l;for(s={},o=e.split(""),a=0,r=o.length;a<r;a++)n=o[a],s[n]=!0;l={};for(i in t)c=t[i],h=function(){var e,t,n;for(n=[],t=0,e=c.length;t<e;t++)u=c[t],u in s&&n.push(u);return n}(),h.length>0&&(l[i]=h);return l},enumerate_l33t_subs:function(e){var t,n,r,i,a,s,o,h,u,c,l,_,f,d,p;a=function(){var t;t=[];for(i in e)t.push(i);return t}(),p=[[]],n=function(e){var t,n,r,a,s,o,h,u;for(n=[],s={},o=0,a=e.length;o<a;o++)h=e[o],t=function(){var e,t,n;for(n=[],u=t=0,e=h.length;t<e;u=++t)i=h[u],n.push([i,u]);return n}(),t.sort(),r=function(){var e,n,r;for(r=[],u=n=0,e=t.length;n<e;u=++n)i=t[u],r.push(i+","+u);return r}().join("-"),r in s||(s[r]=!0,n.push(h));return n},r=function(t){var i,a,s,o,h,u,c,l,_,f,d,g,m,A,E,y;if(t.length){for(a=t[0],m=t.slice(1),c=[],d=e[a],l=0,h=d.length;l<h;l++)for(o=d[l],_=0,u=p.length;_<u;_++){for(A=p[_],i=-1,s=f=0,g=A.length;0<=g?f<g:f>g;s=0<=g?++f:--f)if(A[s][0]===o){i=s;break}i===-1?(y=A.concat([[o,a]]),c.push(y)):(E=A.slice(0),E.splice(i,1),E.push([o,a]),c.push(A),c.push(E))}return p=n(c),r(m)}},r(a),d=[];for(u=0,o=p.length;u<o;u++){for(_=p[u],f={},c=0,h=_.length;c<h;c++)l=_[c],s=l[0],t=l[1],f[s]=t;d.push(f)}return d},l33t_match:function(e,t,n){var r,i,a,s,o,h,u,c,l,_,f,d,p,g,m,A;for(null==t&&(t=RANKED_DICTIONARIES),null==n&&(n=L33T_TABLE),u=[],_=this.enumerate_l33t_subs(this.relevant_l33t_subtable(e,n)),c=0,a=_.length;c<a&&(d=_[c],!this.empty(d));c++)for(g=this.translate(e,d),f=this.dictionary_match(g,t),l=0,s=f.length;l<s;l++)if(o=f[l],m=e.slice(o.i,+o.j+1||9e9),m.toLowerCase()!==o.matched_word){h={};for(p in d)r=d[p],m.indexOf(p)!==-1&&(h[p]=r);o.l33t=!0,o.token=m,o.sub=h,o.sub_display=function(){var e;e=[];for(i in h)A=h[i],e.push(i+" -> "+A);return e}().join(", "),u.push(o)}return this.sorted(u.filter(function(e){return e.token.length>1}))},spatial_match:function(e,t){var n,r,i;null==t&&(t=GRAPHS),i=[];for(r in t)n=t[r],this.extend(i,this.spatial_match_helper(e,n,r));return this.sorted(i)},SHIFTED_RX:/[~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:"ZXCVBNM<>?]/,spatial_match_helper:function(e,t,n){var r,i,a,s,o,h,u,c,l,_,f,d,p,g,m;for(f=[],u=0;u<e.length-1;)for(c=u+1,l=null,m=0,g="qwerty"!==n&&"dvorak"!==n||!this.SHIFTED_RX.exec(e.charAt(u))?0:1;;){if(p=e.charAt(c-1),o=!1,h=-1,s=-1,i=t[p]||[],c<e.length)for(a=e.charAt(c),d=0,_=i.length;d<_;d++)if(r=i[d],s+=1,r&&r.indexOf(a)!==-1){o=!0,h=s,1===r.indexOf(a)&&(g+=1),l!==h&&(m+=1,l=h);break}if(!o){c-u>2&&f.push({pattern:"spatial",i:u,j:c-1,token:e.slice(u,c),graph:n,turns:m,shifted_count:g}),u=c;break}c+=1}return f},repeat_match:function(e){var t,n,r,i,a,s,o,h,u,c,l,_,f,d,p;for(d=[],a=/(.+)\1+/g,c=/(.+?)\1+/g,l=/^(.+?)\1+$/,u=0;u<e.length&&(a.lastIndex=c.lastIndex=u,s=a.exec(e),_=c.exec(e),null!=s);)s[0].length>_[0].length?(f=s,i=l.exec(f[0])[1]):(f=_,i=f[1]),p=[f.index,f.index+f[0].length-1],o=p[0],h=p[1],t=scoring.most_guessable_match_sequence(i,this.omnimatch(i)),r=t.sequence,n=t.guesses,d.push({pattern:"repeat",i:o,j:h,token:f[0],base_token:i,base_guesses:n,base_matches:r,repeat_count:f[0].length/i.length}),u=h+1;return d},MAX_DELTA:5,sequence_match:function(e){var t,n,r,i,a,s,o,h,u;if(1===e.length)return[];for(u=function(t){return function(n,r,i){var a,s,o,u;if((r-n>1||1===Math.abs(i))&&0<(a=Math.abs(i))&&a<=t.MAX_DELTA)return u=e.slice(n,+r+1||9e9),/^[a-z]+$/.test(u)?(s="lower",o=26):/^[A-Z]+$/.test(u)?(s="upper",o=26):/^\d+$/.test(u)?(s="digits",o=10):(s="unicode",o=26),h.push({pattern:"sequence",i:n,j:r,token:e.slice(n,+r+1||9e9),sequence_name:s,sequence_space:o,ascending:i>0})}}(this),h=[],n=0,a=null,i=s=1,o=e.length;1<=o?s<o:s>o;i=1<=o?++s:--s)t=e.charCodeAt(i)-e.charCodeAt(i-1),null==a&&(a=t),t!==a&&(r=i-1,u(n,r,a),n=r,a=t);return u(n,e.length-1,a),h},regex_match:function(e,t){var n,r,i,a;null==t&&(t=REGEXEN),n=[];for(name in t)for(r=t[name],r.lastIndex=0;i=r.exec(e);)a=i[0],n.push({pattern:"regex",token:a,i:i.index,j:i.index+i[0].length-1,regex_name:name,regex_match:i});return this.sorted(n)},date_match:function(e){var t,n,r,i,a,s,o,h,u,c,l,_,f,d,p,g,m,A,E,y,v,I,R,T,D,k,x,j,b,N,S,q,L,M;for(_=[],f=/^\d{4,8}$/,d=/^(\d{1,4})([\s\/\\_.-])(\d{1,2})\2(\d{1,4})$/,s=m=0,v=e.length-4;0<=v?m<=v:m>=v;s=0<=v?++m:--m)for(o=A=I=s+3,R=s+7;(I<=R?A<=R:A>=R)&&!(o>=e.length);o=I<=R?++A:--A)if(M=e.slice(s,+o+1||9e9),f.exec(M)){for(r=[],T=DATE_SPLITS[M.length],E=0,c=T.length;E<c;E++)D=T[E],h=D[0],u=D[1],a=this.map_ints_to_dmy([parseInt(M.slice(0,h)),parseInt(M.slice(h,u)),parseInt(M.slice(u))]),null!=a&&r.push(a);if(r.length>0){for(t=r[0],p=function(e){return Math.abs(e.year-scoring.REFERENCE_YEAR)},g=p(r[0]),k=r.slice(1),y=0,l=k.length;y<l;y++)n=k[y],i=p(n),i<g&&(x=[n,i],t=x[0],g=x[1]);_.push({pattern:"date",token:M,i:s,j:o,separator:"",year:t.year,month:t.month,day:t.day})}}for(s=q=0,j=e.length-6;0<=j?q<=j:q>=j;s=0<=j?++q:--q)for(o=L=b=s+5,N=s+9;(b<=N?L<=N:L>=N)&&!(o>=e.length);o=b<=N?++L:--L)M=e.slice(s,+o+1||9e9),S=d.exec(M),null!=S&&(a=this.map_ints_to_dmy([parseInt(S[1]),parseInt(S[3]),parseInt(S[4])]),null!=a&&_.push({pattern:"date",token:M,i:s,j:o,separator:S[2],year:a.year,month:a.month,day:a.day}));return this.sorted(_.filter(function(e){var t,n,r,i;for(t=!1,i=0,n=_.length;i<n;i++)if(r=_[i],e!==r&&r.i<=e.i&&r.j>=e.j){t=!0;break}return!t}))},map_ints_to_dmy:function(e){var t,n,r,i,a,s,o,h,u,c,l,_,f,d,p,g;if(!(e[1]>31||e[1]<=0)){for(o=0,h=0,p=0,s=0,r=e.length;s<r;s++){if(n=e[s],99<n&&n<DATE_MIN_YEAR||n>DATE_MAX_YEAR)return;n>31&&(h+=1),n>12&&(o+=1),n<=0&&(p+=1)}if(!(h>=2||3===o||p>=2)){for(c=[[e[2],e.slice(0,2)],[e[0],e.slice(1,3)]],u=0,i=c.length;u<i;u++)if(_=c[u],g=_[0],d=_[1],DATE_MIN_YEAR<=g&&g<=DATE_MAX_YEAR)return t=this.map_ints_to_dm(d),null!=t?{year:g,month:t.month,day:t.day}:void 0;for(l=0,a=c.length;l<a;l++)if(f=c[l],g=f[0],d=f[1],t=this.map_ints_to_dm(d),null!=t)return g=this.two_to_four_digit_year(g),{year:g,month:t.month,day:t.day}}}},map_ints_to_dm:function(e){var t,n,r,i,a,s;for(a=[e,e.slice().reverse()],i=0,n=a.length;i<n;i++)if(s=a[i],t=s[0],r=s[1],1<=t&&t<=31&&1<=r&&r<=12)return{day:t,month:r}},two_to_four_digit_year:function(e){return e>99?e:e>50?e+1900:e+2e3}},module.exports=matching;
43362
43363 },{"./adjacency_graphs":1,"./frequency_lists":3,"./scoring":6}],6:[function(require,module,exports){
43364 var BRUTEFORCE_CARDINALITY,MIN_GUESSES_BEFORE_GROWING_SEQUENCE,MIN_SUBMATCH_GUESSES_MULTI_CHAR,MIN_SUBMATCH_GUESSES_SINGLE_CHAR,adjacency_graphs,calc_average_degree,k,scoring,v;adjacency_graphs=require("./adjacency_graphs"),calc_average_degree=function(e){var t,r,n,s,a,u;t=0;for(n in e)a=e[n],t+=function(){var e,t,r;for(r=[],t=0,e=a.length;t<e;t++)s=a[t],s&&r.push(s);return r}().length;return t/=function(){var t;t=[];for(r in e)u=e[r],t.push(r);return t}().length},BRUTEFORCE_CARDINALITY=10,MIN_GUESSES_BEFORE_GROWING_SEQUENCE=1e4,MIN_SUBMATCH_GUESSES_SINGLE_CHAR=10,MIN_SUBMATCH_GUESSES_MULTI_CHAR=50,scoring={nCk:function(e,t){var r,n,s,a;if(t>e)return 0;if(0===t)return 1;for(s=1,r=n=1,a=t;1<=a?n<=a:n>=a;r=1<=a?++n:--n)s*=e,s/=r,e-=1;return s},log10:function(e){return Math.log(e)/Math.log(10)},log2:function(e){return Math.log(e)/Math.log(2)},factorial:function(e){var t,r,n,s;if(e<2)return 1;for(t=1,r=n=2,s=e;2<=s?n<=s:n>=s;r=2<=s?++n:--n)t*=r;return t},most_guessable_match_sequence:function(e,t,r){var n,s,a,u,i,_,o,h,E,c,g,f,l,p,A,S,R,v,I,M,N,C,U,T;for(null==r&&(r=!1),l=e.length,f=function(){var e,t,r;for(r=[],n=e=0,t=l;0<=t?e<t:e>t;n=0<=t?++e:--e)r.push([]);return r}(),p=0,_=t.length;p<_;p++)c=t[p],f[c.j].push(c);for(v=0,o=f.length;v<o;v++)E=f[v],E.sort(function(e,t){return e.i-t.i});for(A={m:function(){var e,t,r;for(t=[],n=r=0,e=l;0<=e?r<e:r>e;n=0<=e?++r:--r)t.push({});return t}(),pi:function(){var e,t,r;for(t=[],n=r=0,e=l;0<=e?r<e:r>e;n=0<=e?++r:--r)t.push({});return t}(),g:function(){var e,t,r;for(t=[],n=r=0,e=l;0<=e?r<e:r>e;n=0<=e?++r:--r)t.push({});return t}()},U=function(t){return function(n,s){var a,u,i,_,o,h;_=n.j,o=t.estimate_guesses(n,e),s>1&&(o*=A.pi[n.i-1][s-1]),i=t.factorial(s)*o,r||(i+=Math.pow(MIN_GUESSES_BEFORE_GROWING_SEQUENCE,s-1)),h=A.g[_];for(u in h)if(a=h[u],!(u>s)&&a<=i)return;return A.g[_][s]=i,A.m[_][s]=n,A.pi[_][s]=o}}(this),s=function(e){return function(e){var t,r,n,s,a,u;for(c=g(0,e),U(c,1),a=[],t=u=1,s=e;1<=s?u<=s:u>=s;t=1<=s?++u:--u)c=g(t,e),a.push(function(){var e,s;e=A.m[t-1],s=[];for(r in e)n=e[r],r=parseInt(r),"bruteforce"!==n.pattern&&s.push(U(c,r+1));return s}());return a}}(this),g=function(t){return function(t,r){return{pattern:"bruteforce",token:e.slice(t,+r+1||9e9),i:t,j:r}}}(this),C=function(e){return function(e){var t,r,n,s,a,u,i;u=[],s=e-1,a=void 0,n=1/0,i=A.g[s];for(r in i)t=i[r],t<n&&(a=r,n=t);for(;s>=0;)c=A.m[s][a],u.unshift(c),s=c.i-1,a--;return u}}(this),u=N=0,I=l;0<=I?N<I:N>I;u=0<=I?++N:--N){for(M=f[u],T=0,h=M.length;T<h;T++)if(c=M[T],c.i>0)for(i in A.m[c.i-1])i=parseInt(i),U(c,i+1);else U(c,1);s(u)}return R=C(l),S=R.length,a=0===e.length?1:A.g[l-1][S],{password:e,guesses:a,guesses_log10:this.log10(a),sequence:R}},estimate_guesses:function(e,t){var r,n,s;return null!=e.guesses?e.guesses:(s=1,e.token.length<t.length&&(s=1===e.token.length?MIN_SUBMATCH_GUESSES_SINGLE_CHAR:MIN_SUBMATCH_GUESSES_MULTI_CHAR),r={bruteforce:this.bruteforce_guesses,dictionary:this.dictionary_guesses,spatial:this.spatial_guesses,repeat:this.repeat_guesses,sequence:this.sequence_guesses,regex:this.regex_guesses,date:this.date_guesses},n=r[e.pattern].call(this,e),e.guesses=Math.max(n,s),e.guesses_log10=this.log10(e.guesses),e.guesses)},bruteforce_guesses:function(e){var t,r;return t=Math.pow(BRUTEFORCE_CARDINALITY,e.token.length),r=1===e.token.length?MIN_SUBMATCH_GUESSES_SINGLE_CHAR+1:MIN_SUBMATCH_GUESSES_MULTI_CHAR+1,Math.max(t,r)},repeat_guesses:function(e){return e.base_guesses*e.repeat_count},sequence_guesses:function(e){var t,r;return r=e.token.charAt(0),t="a"===r||"A"===r||"z"===r||"Z"===r||"0"===r||"1"===r||"9"===r?4:r.match(/\d/)?10:26,e.ascending||(t*=2),t*e.token.length},MIN_YEAR_SPACE:20,REFERENCE_YEAR:2016,regex_guesses:function(e){var t,r;if(t={alpha_lower:26,alpha_upper:26,alpha:52,alphanumeric:62,digits:10,symbols:33},e.regex_name in t)return Math.pow(t[e.regex_name],e.token.length);switch(e.regex_name){case"recent_year":return r=Math.abs(parseInt(e.regex_match[0])-this.REFERENCE_YEAR),r=Math.max(r,this.MIN_YEAR_SPACE)}},date_guesses:function(e){var t,r;return r=Math.max(Math.abs(e.year-this.REFERENCE_YEAR),this.MIN_YEAR_SPACE),t=365*r,e.separator&&(t*=4),t},KEYBOARD_AVERAGE_DEGREE:calc_average_degree(adjacency_graphs.qwerty),KEYPAD_AVERAGE_DEGREE:calc_average_degree(adjacency_graphs.keypad),KEYBOARD_STARTING_POSITIONS:function(){var e,t;e=adjacency_graphs.qwerty,t=[];for(k in e)v=e[k],t.push(k);return t}().length,KEYPAD_STARTING_POSITIONS:function(){var e,t;e=adjacency_graphs.keypad,t=[];for(k in e)v=e[k],t.push(k);return t}().length,spatial_guesses:function(e){var t,r,n,s,a,u,i,_,o,h,E,c,g,f,l,p,A,S;for("qwerty"===(E=e.graph)||"dvorak"===E?(l=this.KEYBOARD_STARTING_POSITIONS,s=this.KEYBOARD_AVERAGE_DEGREE):(l=this.KEYPAD_STARTING_POSITIONS,s=this.KEYPAD_AVERAGE_DEGREE),a=0,t=e.token.length,A=e.turns,u=_=2,c=t;2<=c?_<=c:_>=c;u=2<=c?++_:--_)for(o=Math.min(A,u-1),i=h=1,g=o;1<=g?h<=g:h>=g;i=1<=g?++h:--h)a+=this.nCk(u-1,i-1)*l*Math.pow(s,i);if(e.shifted_count)if(r=e.shifted_count,n=e.token.length-e.shifted_count,0===r||0===n)a*=2;else{for(p=0,u=S=1,f=Math.min(r,n);1<=f?S<=f:S>=f;u=1<=f?++S:--S)p+=this.nCk(r+n,u);a*=p}return a},dictionary_guesses:function(e){var t;return e.base_guesses=e.rank,e.uppercase_variations=this.uppercase_variations(e),e.l33t_variations=this.l33t_variations(e),t=e.reversed&&2||1,e.base_guesses*e.uppercase_variations*e.l33t_variations*t},START_UPPER:/^[A-Z][^A-Z]+$/,END_UPPER:/^[^A-Z]+[A-Z]$/,ALL_UPPER:/^[^a-z]+$/,ALL_LOWER:/^[^A-Z]+$/,uppercase_variations:function(e){var t,r,n,s,a,u,i,_,o,h,E,c;if(c=e.token,c.match(this.ALL_LOWER)||c.toLowerCase()===c)return 1;for(_=[this.START_UPPER,this.END_UPPER,this.ALL_UPPER],u=0,a=_.length;u<a;u++)if(h=_[u],c.match(h))return 2;for(r=function(){var e,t,r,s;for(r=c.split(""),s=[],t=0,e=r.length;t<e;t++)n=r[t],n.match(/[A-Z]/)&&s.push(n);return s}().length,t=function(){var e,t,r,s;for(r=c.split(""),s=[],t=0,e=r.length;t<e;t++)n=r[t],n.match(/[a-z]/)&&s.push(n);return s}().length,E=0,s=i=1,o=Math.min(r,t);1<=o?i<=o:i>=o;s=1<=o?++i:--i)E+=this.nCk(r+t,s);return E},l33t_variations:function(e){var t,r,n,s,a,u,i,_,o,h,E,c,g;if(!e.l33t)return 1;g=1,o=e.sub;for(E in o)if(c=o[E],s=e.token.toLowerCase().split(""),t=function(){var e,t,r;for(r=[],t=0,e=s.length;t<e;t++)n=s[t],n===E&&r.push(n);return r}().length,r=function(){var e,t,r;for(r=[],t=0,e=s.length;t<e;t++)n=s[t],n===c&&r.push(n);return r}().length,0===t||0===r)g*=2;else{for(i=Math.min(r,t),_=0,a=u=1,h=i;1<=h?u<=h:u>=h;a=1<=h?++u:--u)_+=this.nCk(r+t,a);g*=_}return g}},module.exports=scoring;
43365
43366 },{"./adjacency_graphs":1}],7:[function(require,module,exports){
43367 var time_estimates;time_estimates={estimate_attack_times:function(e){var t,n,s,o;n={online_throttling_100_per_hour:e/(100/3600),online_no_throttling_10_per_second:e/10,offline_slow_hashing_1e4_per_second:e/1e4,offline_fast_hashing_1e10_per_second:e/1e10},t={};for(s in n)o=n[s],t[s]=this.display_time(o);return{crack_times_seconds:n,crack_times_display:t,score:this.guesses_to_score(e)}},guesses_to_score:function(e){var t;return t=5,e<1e3+t?0:e<1e6+t?1:e<1e8+t?2:e<1e10+t?3:4},display_time:function(e){var t,n,s,o,_,r,i,a,u,c;return i=60,r=60*i,s=24*r,a=31*s,c=12*a,n=100*c,u=e<1?[null,"less than a second"]:e<i?(t=Math.round(e),[t,t+" second"]):e<r?(t=Math.round(e/i),[t,t+" minute"]):e<s?(t=Math.round(e/r),[t,t+" hour"]):e<a?(t=Math.round(e/s),[t,t+" day"]):e<c?(t=Math.round(e/a),[t,t+" month"]):e<n?(t=Math.round(e/c),[t,t+" year"]):[null,"centuries"],o=u[0],_=u[1],null!=o&&1!==o&&(_+="s"),_}},module.exports=time_estimates;
43368
43369 },{}]},{},[4])(4)
43370 });
43371 //# sourceMappingURL=zxcvbn.js.map
43372 </script>
43373 <script>/*
43374 * Detects entropy from a string.
43375 *
43376 * Formats include:
43377 * binary [0-1]
43378 * base 6 [0-5]
43379 * dice 6 [1-6]
43380 * decimal [0-9]
43381 * hexadecimal [0-9A-F]
43382 * card [A2-9TJQK][CDHS]
43383 *
43384 * Automatically uses lowest entropy to avoid issues such as interpretting 0101
43385 * as hexadecimal which would be 16 bits when really it's only 4 bits of binary
43386 * entropy.
43387 */
43388
43389 window.Entropy = new (function() {
43390
43391 var TWO = new BigInteger(2);
43392
43393 // matchers returns an array of the matched events for each type of entropy.
43394 // eg
43395 // matchers.binary("010") returns ["0", "1", "0"]
43396 // matchers.binary("a10") returns ["1", "0"]
43397 // matchers.hex("a10") returns ["a", "1", "0"]
43398 var matchers = {
43399 binary: function(str) {
43400 return str.match(/[0-1]/gi) || [];
43401 },
43402 base6: function(str) {
43403 return str.match(/[0-5]/gi) || [];
43404 },
43405 dice: function(str) {
43406 return str.match(/[1-6]/gi) || []; // ie dice numbers
43407 },
43408 base10: function(str) {
43409 return str.match(/[0-9]/gi) || [];
43410 },
43411 hex: function(str) {
43412 return str.match(/[0-9A-F]/gi) || [];
43413 },
43414 card: function(str) {
43415 // Format is NumberSuit, eg
43416 // AH ace of hearts
43417 // 8C eight of clubs
43418 // TD ten of diamonds
43419 // JS jack of spades
43420 // QH queen of hearts
43421 // KC king of clubs
43422 return str.match(/([A2-9TJQK][CDHS])/gi) || [];
43423 }
43424 }
43425
43426 // Convert array of cards from ["ac", "4d", "ks"]
43427 // to numbers between 0 and 51 [0, 16, 51]
43428 function convertCardsToInts(cards) {
43429 var ints = [];
43430 var values = "a23456789tjqk";
43431 var suits = "cdhs";
43432 for (var i=0; i<cards.length; i++) {
43433 var card = cards[i].toLowerCase();
43434 var value = card[0];
43435 var suit = card[1];
43436 var asInt = 13 * suits.indexOf(suit) + values.indexOf(value);
43437 ints.push(asInt);
43438 }
43439 return ints;
43440 }
43441
43442 this.fromString = function(rawEntropyStr) {
43443 // Find type of entropy being used (binary, hex, dice etc)
43444 var base = getBase(rawEntropyStr);
43445 // Convert dice to base6 entropy (ie 1-6 to 0-5)
43446 // This is done by changing all 6s to 0s
43447 if (base.str == "dice") {
43448 var newParts = [];
43449 var newInts = [];
43450 for (var i=0; i<base.parts.length; i++) {
43451 var c = base.parts[i];
43452 if ("12345".indexOf(c) > -1) {
43453 newParts[i] = base.parts[i];
43454 newInts[i] = base.ints[i];
43455 }
43456 else {
43457 newParts[i] = "0";
43458 newInts[i] = 0;
43459 }
43460 }
43461 base.str = "base 6 (dice)";
43462 base.ints = newInts;
43463 base.parts = newParts;
43464 base.matcher = matchers.base6;
43465 }
43466 // Detect empty entropy
43467 if (base.parts.length == 0) {
43468 return {
43469 binaryStr: "",
43470 cleanStr: "",
43471 cleanHtml: "",
43472 base: base,
43473 };
43474 }
43475 // Convert base.ints to BigInteger.
43476 // Due to using unusual bases, eg cards of base52, this is not as simple as
43477 // using BigInteger.parse()
43478 var entropyInt = BigInteger.ZERO;
43479 for (var i=base.ints.length-1; i>=0; i--) {
43480 var thisInt = BigInteger.parse(base.ints[i]);
43481 var power = (base.ints.length - 1) - i;
43482 var additionalEntropy = BigInteger.parse(base.asInt).pow(power).multiply(thisInt);
43483 entropyInt = entropyInt.add(additionalEntropy);
43484 }
43485 // Convert entropy to binary
43486 var entropyBin = entropyInt.toString(2);
43487 // If the first integer is small, it must be padded with zeros.
43488 // Otherwise the chance of the first bit being 1 is 100%, which is
43489 // obviously incorrect.
43490 // This is not perfect for non-2^n bases.
43491 var expectedBits = Math.floor(base.parts.length * Math.log2(base.asInt));
43492 while (entropyBin.length < expectedBits) {
43493 entropyBin = "0" + entropyBin;
43494 }
43495 // Calculate the number of bits per event
43496 var bitsPerEvent = Math.log2(base.asInt);
43497 // Cards binary must be handled differently, since they're not replaced
43498 if (base.asInt == 52) {
43499 var cardEntropy = processCardEntropy(base.parts);
43500 entropyBin = cardEntropy.binaryStr;
43501 bitsPerEvent = cardEntropy.bitsPerEvent;
43502 }
43503 // Supply a 'filtered' entropy string for display purposes
43504 var entropyClean = base.parts.join("");
43505 var entropyHtml = base.parts.join("");
43506 if (base.asInt == 52) {
43507 entropyClean = base.parts.join(" ").toUpperCase();
43508 entropyClean = entropyClean.replace(/C/g, "\u2663");
43509 entropyClean = entropyClean.replace(/D/g, "\u2666");
43510 entropyClean = entropyClean.replace(/H/g, "\u2665");
43511 entropyClean = entropyClean.replace(/S/g, "\u2660");
43512 entropyHtml = base.parts.join(" ").toUpperCase();
43513 entropyHtml = entropyHtml.replace(/C/g, "<span class='card-suit club'>\u2663</span>");
43514 entropyHtml = entropyHtml.replace(/D/g, "<span class='card-suit diamond'>\u2666</span>");
43515 entropyHtml = entropyHtml.replace(/H/g, "<span class='card-suit heart'>\u2665</span>");
43516 entropyHtml = entropyHtml.replace(/S/g, "<span class='card-suit spade'>\u2660</span>");
43517 }
43518 // Return the result
43519 var e = {
43520 binaryStr: entropyBin,
43521 cleanStr: entropyClean,
43522 cleanHtml: entropyHtml,
43523 bitsPerEvent: bitsPerEvent,
43524 base: base,
43525 }
43526 return e;
43527 }
43528
43529 function getSortedDeck() {
43530 var s = [];
43531 var suits = "CDHS";
43532 var values = "A23456789TJQK";
43533 for (var i=0; i<suits.length; i++) {
43534 for (var j=0; j<values.length; j++) {
43535 s.push(values[j]+suits[i]);
43536 }
43537 }
43538 return s;
43539 }
43540
43541 function getBase(str) {
43542 // Need to get the lowest base for the supplied entropy.
43543 // This prevents interpreting, say, dice rolls as hexadecimal.
43544 var binaryMatches = matchers.binary(str);
43545 var hexMatches = matchers.hex(str);
43546 // Find the lowest base that can be used, whilst ignoring any irrelevant chars
43547 if (binaryMatches.length == hexMatches.length && hexMatches.length > 0) {
43548 var ints = binaryMatches.map(function(i) { return parseInt(i, 2) });
43549 return {
43550 ints: ints,
43551 parts: binaryMatches,
43552 matcher: matchers.binary,
43553 asInt: 2,
43554 str: "binary",
43555 }
43556 }
43557 var cardMatches = matchers.card(str);
43558 if (cardMatches.length >= hexMatches.length / 2) {
43559 var ints = convertCardsToInts(cardMatches);
43560 return {
43561 ints: ints,
43562 parts: cardMatches,
43563 matcher: matchers.card,
43564 asInt: 52,
43565 str: "card",
43566 }
43567 }
43568 var diceMatches = matchers.dice(str);
43569 if (diceMatches.length == hexMatches.length && hexMatches.length > 0) {
43570 var ints = diceMatches.map(function(i) { return parseInt(i) });
43571 return {
43572 ints: ints,
43573 parts: diceMatches,
43574 matcher: matchers.dice,
43575 asInt: 6,
43576 str: "dice",
43577 }
43578 }
43579 var base6Matches = matchers.base6(str);
43580 if (base6Matches.length == hexMatches.length && hexMatches.length > 0) {
43581 var ints = base6Matches.map(function(i) { return parseInt(i) });
43582 return {
43583 ints: ints,
43584 parts: base6Matches,
43585 matcher: matchers.base6,
43586 asInt: 6,
43587 str: "base 6",
43588 }
43589 }
43590 var base10Matches = matchers.base10(str);
43591 if (base10Matches.length == hexMatches.length && hexMatches.length > 0) {
43592 var ints = base10Matches.map(function(i) { return parseInt(i) });
43593 return {
43594 ints: ints,
43595 parts: base10Matches,
43596 matcher: matchers.base10,
43597 asInt: 10,
43598 str: "base 10",
43599 }
43600 }
43601 var ints = hexMatches.map(function(i) { return parseInt(i, 16) });
43602 return {
43603 ints: ints,
43604 parts: hexMatches,
43605 matcher: matchers.hex,
43606 asInt: 16,
43607 str: "hexadecimal",
43608 }
43609 }
43610
43611 // Assume cards are NOT replaced.
43612 // Additional entropy decreases as more cards are used. This means
43613 // total possible entropy is measured using n!, not base^n.
43614 // eg the second last card can be only one of two, not one of fifty two
43615 // so the added entropy for that card is only one bit at most
43616 function processCardEntropy(cards) {
43617 // Track how many instances of each card have been used, and thus
43618 // how many decks are in use.
43619 var cardCounts = {};
43620 var numberOfDecks = 0;
43621 // Work out number of decks by max(duplicates)
43622 for (var i=0; i<cards.length; i++) {
43623 // Get the card that was drawn
43624 var cardLower = cards[i];
43625 var card = cardLower.toUpperCase();
43626 // Initialize the count for this card if needed
43627 if (!(card in cardCounts)) {
43628 cardCounts[card] = 0;
43629 }
43630 cardCounts[card] += 1;
43631 // See if this is max(duplicates)
43632 if (cardCounts[card] > numberOfDecks) {
43633 numberOfDecks = cardCounts[card];
43634 }
43635 }
43636 // Work out the total number of bits for this many decks
43637 // See http://crypto.stackexchange.com/q/41886
43638 var gainedBits = 0;
43639 // Equivalent of Math.log2(factorial(52*numberOfDecks))
43640 // which becomes infinity for numberOfDecks > 4
43641 for (var i=1; i<=52*numberOfDecks; i++) {
43642 gainedBits = gainedBits + Math.log2(i);
43643 }
43644 var lostBits = 52 * Math.log2(factorial(numberOfDecks));
43645 var maxBits = gainedBits - lostBits;
43646 // Convert the drawn cards to a binary representation.
43647 // The exact technique for doing this is unclear.
43648 // See
43649 // http://crypto.stackexchange.com/a/41896
43650 // "I even doubt that this is well defined (only the average entropy
43651 // is, I believe)."
43652 // See
43653 // https://github.com/iancoleman/bip39/issues/33#issuecomment-263021856
43654 // "The binary representation can be the first log(permutations,2) bits
43655 // of the sha-2 hash of the normalized deck string."
43656 //
43657 // In this specific implementation, the first N bits of the hash of the
43658 // normalized cards string is being used. Uppercase, no spaces; eg
43659 // sha256("AH8DQSTC2H")
43660 var totalCards = numberOfDecks * 52;
43661 var percentUsed = cards.length / totalCards;
43662 // Calculate the average number of bits of entropy for the number of
43663 // cards drawn.
43664 var numberOfBits = Math.floor(maxBits * percentUsed);
43665 // Create a normalized string of the selected cards
43666 var normalizedCards = cards.join("").toUpperCase();
43667 // Convert to binary using the SHA256 hash of the normalized cards.
43668 // If the number of bits is more than 256, multiple hashes
43669 // are used until the required number of bits is reached.
43670 var entropyBin = "";
43671 var iterations = 0;
43672 while (entropyBin.length < numberOfBits) {
43673 var hashedCards = sjcl.hash.sha256.hash(normalizedCards + ":" + iterations);
43674 var hashHex = sjcl.codec.hex.fromBits(hashedCards);
43675 for (var i=0; i<hashHex.length; i++) {
43676 var decimal = parseInt(hashHex[i], 16);
43677 var binary = decimal.toString(2);
43678 while (binary.length < 4) {
43679 binary = "0" + binary;
43680 }
43681 entropyBin = entropyBin + binary;
43682 }
43683 iterations = iterations + 1;
43684 }
43685 // Truncate to the appropriate number of bits.
43686 entropyBin = entropyBin.substring(0, numberOfBits);
43687 // Get the number of bits per event
43688 bitsPerEvent = maxBits / totalCards;
43689 return {
43690 binaryStr: entropyBin,
43691 bitsPerEvent: bitsPerEvent,
43692 }
43693 }
43694
43695 // Polyfill for Math.log2
43696 // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log2#Polyfill
43697 Math.log2 = Math.log2 || function(x) {
43698 // The polyfill isn't good enough because of the poor accuracy of
43699 // Math.LOG2E
43700 // log2(8) gave 2.9999999999999996 which when floored causes issues.
43701 // So instead use the BigInteger library to get it right.
43702 return BigInteger.log(x) / BigInteger.log(2);
43703 };
43704
43705 // Depends on BigInteger
43706 function factorial(n) {
43707 if (n == 0) {
43708 return 1;
43709 }
43710 f = BigInteger.ONE;
43711 for (var i=1; i<=n; i++) {
43712 f = f.multiply(new BigInteger(i));
43713 }
43714 return f;
43715 }
43716
43717 })();
43718 </script>
43719 <script>(function() {
43720
43721 // mnemonics is populated as required by getLanguage
43722 var mnemonics = { "english": new Mnemonic("english") };
43723 var mnemonic = mnemonics["english"];
43724 var seed = null;
43725 var bip32RootKey = null;
43726 var bip32ExtendedKey = null;
43727 var network = bitcoin.networks.bitcoin;
43728 var addressRowTemplate = $("#address-row-template");
43729
43730 var showIndex = true;
43731 var showAddress = true;
43732 var showPubKey = true;
43733 var showPrivKey = true;
43734 var showQr = false;
43735
43736 var entropyChangeTimeoutEvent = null;
43737 var phraseChangeTimeoutEvent = null;
43738 var rootKeyChangedTimeoutEvent = null;
43739
43740 var generationProcesses = [];
43741
43742 var DOM = {};
43743 DOM.network = $(".network");
43744 DOM.bip32Client = $("#bip32-client");
43745 DOM.phraseNetwork = $("#network-phrase");
43746 DOM.useEntropy = $(".use-entropy");
43747 DOM.entropyContainer = $(".entropy-container");
43748 DOM.entropy = $(".entropy");
43749 DOM.entropyFiltered = DOM.entropyContainer.find(".filtered");
43750 DOM.entropyType = DOM.entropyContainer.find(".type");
43751 DOM.entropyStrength = DOM.entropyContainer.find(".strength");
43752 DOM.entropyEventCount = DOM.entropyContainer.find(".event-count");
43753 DOM.entropyBits = DOM.entropyContainer.find(".bits");
43754 DOM.entropyBitsPerEvent = DOM.entropyContainer.find(".bits-per-event");
43755 DOM.entropyWordCount = DOM.entropyContainer.find(".word-count");
43756 DOM.entropyBinary = DOM.entropyContainer.find(".binary");
43757 DOM.entropyMnemonicLength = DOM.entropyContainer.find(".mnemonic-length");
43758 DOM.phrase = $(".phrase");
43759 DOM.passphrase = $(".passphrase");
43760 DOM.generateContainer = $(".generate-container");
43761 DOM.generate = $(".generate");
43762 DOM.seed = $(".seed");
43763 DOM.rootKey = $(".root-key");
43764 DOM.extendedPrivKey = $(".extended-priv-key");
43765 DOM.extendedPubKey = $(".extended-pub-key");
43766 DOM.bip32tab = $("#bip32-tab");
43767 DOM.bip44tab = $("#bip44-tab");
43768 DOM.bip32panel = $("#bip32");
43769 DOM.bip44panel = $("#bip44");
43770 DOM.bip32path = $("#bip32-path");
43771 DOM.bip44path = $("#bip44-path");
43772 DOM.bip44purpose = $("#bip44 .purpose");
43773 DOM.bip44coin = $("#bip44 .coin");
43774 DOM.bip44account = $("#bip44 .account");
43775 DOM.bip44accountXprv = $("#bip44 .account-xprv");
43776 DOM.bip44accountXpub = $("#bip44 .account-xpub");
43777 DOM.bip44change = $("#bip44 .change");
43778 DOM.generatedStrength = $(".generate-container .strength");
43779 DOM.hardenedAddresses = $(".hardened-addresses");
43780 DOM.addresses = $(".addresses");
43781 DOM.rowsToAdd = $(".rows-to-add");
43782 DOM.more = $(".more");
43783 DOM.feedback = $(".feedback");
43784 DOM.tab = $(".derivation-type a");
43785 DOM.indexToggle = $(".index-toggle");
43786 DOM.addressToggle = $(".address-toggle");
43787 DOM.publicKeyToggle = $(".public-key-toggle");
43788 DOM.privateKeyToggle = $(".private-key-toggle");
43789 DOM.languages = $(".languages a");
43790 DOM.qrContainer = $(".qr-container");
43791 DOM.qrHider = DOM.qrContainer.find(".qr-hider");
43792 DOM.qrImage = DOM.qrContainer.find(".qr-image");
43793 DOM.qrHint = DOM.qrContainer.find(".qr-hint");
43794 DOM.showQrEls = $("[data-show-qr]");
43795
43796 function init() {
43797 // Events
43798 DOM.network.on("change", networkChanged);
43799 DOM.bip32Client.on("change", bip32ClientChanged);
43800 DOM.useEntropy.on("change", setEntropyVisibility);
43801 DOM.entropy.on("input", delayedEntropyChanged);
43802 DOM.entropyMnemonicLength.on("change", entropyChanged);
43803 DOM.phrase.on("input", delayedPhraseChanged);
43804 DOM.passphrase.on("input", delayedPhraseChanged);
43805 DOM.generate.on("click", generateClicked);
43806 DOM.more.on("click", showMore);
43807 DOM.rootKey.on("input", delayedRootKeyChanged);
43808 DOM.bip32path.on("input", calcForDerivationPath);
43809 DOM.bip44purpose.on("input", calcForDerivationPath);
43810 DOM.bip44coin.on("input", calcForDerivationPath);
43811 DOM.bip44account.on("input", calcForDerivationPath);
43812 DOM.bip44change.on("input", calcForDerivationPath);
43813 DOM.tab.on("shown.bs.tab", calcForDerivationPath);
43814 DOM.hardenedAddresses.on("change", calcForDerivationPath);
43815 DOM.indexToggle.on("click", toggleIndexes);
43816 DOM.addressToggle.on("click", toggleAddresses);
43817 DOM.publicKeyToggle.on("click", togglePublicKeys);
43818 DOM.privateKeyToggle.on("click", togglePrivateKeys);
43819 DOM.languages.on("click", languageChanged);
43820 setQrEvents(DOM.showQrEls);
43821 disableForms();
43822 hidePending();
43823 hideValidationError();
43824 populateNetworkSelect();
43825 populateClientSelect();
43826 }
43827
43828 // Event handlers
43829
43830 function networkChanged(e) {
43831 var networkIndex = e.target.value;
43832 networks[networkIndex].onSelect();
43833 if (seed != null) {
43834 phraseChanged();
43835 }
43836 else {
43837 rootKeyChanged();
43838 }
43839 }
43840
43841 function bip32ClientChanged(e) {
43842 var clientIndex = DOM.bip32Client.val();
43843 if (clientIndex == "custom") {
43844 DOM.bip32path.prop("readonly", false);
43845 }
43846 else {
43847 DOM.bip32path.prop("readonly", true);
43848 clients[clientIndex].onSelect();
43849 if (seed != null) {
43850 phraseChanged();
43851 }
43852 else {
43853 rootKeyChanged();
43854 }
43855 }
43856 }
43857
43858 function setEntropyVisibility() {
43859 if (isUsingOwnEntropy()) {
43860 DOM.entropyContainer.removeClass("hidden");
43861 DOM.generateContainer.addClass("hidden");
43862 DOM.phrase.prop("readonly", true);
43863 DOM.entropy.focus();
43864 entropyChanged();
43865 }
43866 else {
43867 DOM.entropyContainer.addClass("hidden");
43868 DOM.generateContainer.removeClass("hidden");
43869 DOM.phrase.prop("readonly", false);
43870 hidePending();
43871 }
43872 }
43873
43874 function delayedPhraseChanged() {
43875 hideValidationError();
43876 showPending();
43877 if (phraseChangeTimeoutEvent != null) {
43878 clearTimeout(phraseChangeTimeoutEvent);
43879 }
43880 phraseChangeTimeoutEvent = setTimeout(phraseChanged, 400);
43881 }
43882
43883 function phraseChanged() {
43884 showPending();
43885 hideValidationError();
43886 setMnemonicLanguage();
43887 // Get the mnemonic phrase
43888 var phrase = DOM.phrase.val();
43889 var errorText = findPhraseErrors(phrase);
43890 if (errorText) {
43891 showValidationError(errorText);
43892 return;
43893 }
43894 // Calculate and display
43895 var passphrase = DOM.passphrase.val();
43896 calcBip32RootKeyFromSeed(phrase, passphrase);
43897 calcForDerivationPath();
43898 hidePending();
43899 }
43900
43901 function delayedEntropyChanged() {
43902 hideValidationError();
43903 showPending();
43904 if (entropyChangeTimeoutEvent != null) {
43905 clearTimeout(entropyChangeTimeoutEvent);
43906 }
43907 entropyChangeTimeoutEvent = setTimeout(entropyChanged, 400);
43908 }
43909
43910 function entropyChanged() {
43911 // If blank entropy, clear mnemonic, addresses, errors
43912 if (DOM.entropy.val().trim().length == 0) {
43913 clearDisplay();
43914 clearEntropyFeedback();
43915 DOM.phrase.val("");
43916 showValidationError("Blank entropy");
43917 return;
43918 }
43919 // Get the current phrase to detect changes
43920 var phrase = DOM.phrase.val();
43921 // Set the phrase from the entropy
43922 setMnemonicFromEntropy();
43923 // Recalc addresses if the phrase has changed
43924 var newPhrase = DOM.phrase.val();
43925 if (newPhrase != phrase) {
43926 if (newPhrase.length == 0) {
43927 clearDisplay();
43928 }
43929 else {
43930 phraseChanged();
43931 }
43932 }
43933 else {
43934 hidePending();
43935 }
43936 }
43937
43938 function delayedRootKeyChanged() {
43939 // Warn if there is an existing mnemonic or passphrase.
43940 if (DOM.phrase.val().length > 0 || DOM.passphrase.val().length > 0) {
43941 if (!confirm("This will clear existing mnemonic and passphrase")) {
43942 DOM.rootKey.val(bip32RootKey);
43943 return
43944 }
43945 }
43946 hideValidationError();
43947 showPending();
43948 // Clear existing mnemonic and passphrase
43949 DOM.phrase.val("");
43950 DOM.passphrase.val("");
43951 seed = null;
43952 if (rootKeyChangedTimeoutEvent != null) {
43953 clearTimeout(rootKeyChangedTimeoutEvent);
43954 }
43955 rootKeyChangedTimeoutEvent = setTimeout(rootKeyChanged, 400);
43956 }
43957
43958 function rootKeyChanged() {
43959 showPending();
43960 hideValidationError();
43961 // Validate the root key TODO
43962 var rootKeyBase58 = DOM.rootKey.val();
43963 var errorText = validateRootKey(rootKeyBase58);
43964 if (errorText) {
43965 showValidationError(errorText);
43966 return;
43967 }
43968 // Calculate and display
43969 calcBip32RootKeyFromBase58(rootKeyBase58);
43970 calcForDerivationPath();
43971 }
43972
43973 function calcForDerivationPath() {
43974 showPending();
43975 clearAddressesList();
43976 hideValidationError();
43977 // Get the derivation path
43978 var derivationPath = getDerivationPath();
43979 var errorText = findDerivationPathErrors(derivationPath);
43980 if (errorText) {
43981 showValidationError(errorText);
43982 return;
43983 }
43984 bip32ExtendedKey = calcBip32ExtendedKey(derivationPath);
43985 if (bip44TabSelected()) {
43986 displayBip44Info();
43987 }
43988 displayBip32Info();
43989 hidePending();
43990 }
43991
43992 function generateClicked() {
43993 if (isUsingOwnEntropy()) {
43994 return;
43995 }
43996 clearDisplay();
43997 showPending();
43998 setTimeout(function() {
43999 setMnemonicLanguage();
44000 var phrase = generateRandomPhrase();
44001 if (!phrase) {
44002 return;
44003 }
44004 phraseChanged();
44005 }, 50);
44006 }
44007
44008 function languageChanged() {
44009 setTimeout(function() {
44010 setMnemonicLanguage();
44011 if (DOM.phrase.val().length > 0) {
44012 var newPhrase = convertPhraseToNewLanguage();
44013 DOM.phrase.val(newPhrase);
44014 phraseChanged();
44015 }
44016 else {
44017 DOM.generate.trigger("click");
44018 }
44019 }, 50);
44020 }
44021
44022 function toggleIndexes() {
44023 showIndex = !showIndex;
44024 $("td.index span").toggleClass("invisible");
44025 }
44026
44027 function toggleAddresses() {
44028 showAddress = !showAddress;
44029 $("td.address span").toggleClass("invisible");
44030 }
44031
44032 function togglePublicKeys() {
44033 showPubKey = !showPubKey;
44034 $("td.pubkey span").toggleClass("invisible");
44035 }
44036
44037 function togglePrivateKeys() {
44038 showPrivKey = !showPrivKey;
44039 $("td.privkey span").toggleClass("invisible");
44040 }
44041
44042 // Private methods
44043
44044 function generateRandomPhrase() {
44045 if (!hasStrongRandom()) {
44046 var errorText = "This browser does not support strong randomness";
44047 showValidationError(errorText);
44048 return;
44049 }
44050 var numWords = parseInt(DOM.generatedStrength.val());
44051 var strength = numWords / 3 * 32;
44052 var words = mnemonic.generate(strength);
44053 DOM.phrase.val(words);
44054 return words;
44055 }
44056
44057 function calcBip32RootKeyFromSeed(phrase, passphrase) {
44058 seed = mnemonic.toSeed(phrase, passphrase);
44059 bip32RootKey = bitcoin.HDNode.fromSeedHex(seed, network);
44060 }
44061
44062 function calcBip32RootKeyFromBase58(rootKeyBase58) {
44063 bip32RootKey = bitcoin.HDNode.fromBase58(rootKeyBase58, network);
44064 }
44065
44066 function calcBip32ExtendedKey(path) {
44067 // Check there's a root key to derive from
44068 if (!bip32RootKey) {
44069 return bip32RootKey;
44070 }
44071 var extendedKey = bip32RootKey;
44072 // Derive the key from the path
44073 var pathBits = path.split("/");
44074 for (var i=0; i<pathBits.length; i++) {
44075 var bit = pathBits[i];
44076 var index = parseInt(bit);
44077 if (isNaN(index)) {
44078 continue;
44079 }
44080 var hardened = bit[bit.length-1] == "'";
44081 var isPriv = "privKey" in extendedKey;
44082 var invalidDerivationPath = hardened && !isPriv;
44083 if (invalidDerivationPath) {
44084 extendedKey = null;
44085 }
44086 else if (hardened) {
44087 extendedKey = extendedKey.deriveHardened(index);
44088 }
44089 else {
44090 extendedKey = extendedKey.derive(index);
44091 }
44092 }
44093 return extendedKey
44094 }
44095
44096 function showValidationError(errorText) {
44097 DOM.feedback
44098 .text(errorText)
44099 .show();
44100 }
44101
44102 function hideValidationError() {
44103 DOM.feedback
44104 .text("")
44105 .hide();
44106 }
44107
44108 function findPhraseErrors(phrase) {
44109 // Preprocess the words
44110 phrase = mnemonic.normalizeString(phrase);
44111 var words = phraseToWordArray(phrase);
44112 // Detect blank phrase
44113 if (words.length == 0) {
44114 return "Blank mnemonic";
44115 }
44116 // Check each word
44117 for (var i=0; i<words.length; i++) {
44118 var word = words[i];
44119 var language = getLanguage();
44120 if (WORDLISTS[language].indexOf(word) == -1) {
44121 console.log("Finding closest match to " + word);
44122 var nearestWord = findNearestWord(word);
44123 return word + " not in wordlist, did you mean " + nearestWord + "?";
44124 }
44125 }
44126 // Check the words are valid
44127 var properPhrase = wordArrayToPhrase(words);
44128 var isValid = mnemonic.check(properPhrase);
44129 if (!isValid) {
44130 return "Invalid mnemonic";
44131 }
44132 return false;
44133 }
44134
44135 function validateRootKey(rootKeyBase58) {
44136 try {
44137 bitcoin.HDNode.fromBase58(rootKeyBase58);
44138 }
44139 catch (e) {
44140 return "Invalid root key";
44141 }
44142 return "";
44143 }
44144
44145 function getDerivationPath() {
44146 if (bip44TabSelected()) {
44147 var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44);
44148 var coin = parseIntNoNaN(DOM.bip44coin.val(), 0);
44149 var account = parseIntNoNaN(DOM.bip44account.val(), 0);
44150 var change = parseIntNoNaN(DOM.bip44change.val(), 0);
44151 var path = "m/";
44152 path += purpose + "'/";
44153 path += coin + "'/";
44154 path += account + "'/";
44155 path += change;
44156 DOM.bip44path.val(path);
44157 var derivationPath = DOM.bip44path.val();
44158 console.log("Using derivation path from BIP44 tab: " + derivationPath);
44159 return derivationPath;
44160 }
44161 else if (bip32TabSelected()) {
44162 var derivationPath = DOM.bip32path.val();
44163 console.log("Using derivation path from BIP32 tab: " + derivationPath);
44164 return derivationPath;
44165 }
44166 else {
44167 console.log("Unknown derivation path");
44168 }
44169 }
44170
44171 function findDerivationPathErrors(path) {
44172 // TODO is not perfect but is better than nothing
44173 // Inspired by
44174 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#test-vectors
44175 // and
44176 // https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#extended-keys
44177 var maxDepth = 255; // TODO verify this!!
44178 var maxIndexValue = Math.pow(2, 31); // TODO verify this!!
44179 if (path[0] != "m") {
44180 return "First character must be 'm'";
44181 }
44182 if (path.length > 1) {
44183 if (path[1] != "/") {
44184 return "Separator must be '/'";
44185 }
44186 var indexes = path.split("/");
44187 if (indexes.length > maxDepth) {
44188 return "Derivation depth is " + indexes.length + ", must be less than " + maxDepth;
44189 }
44190 for (var depth = 1; depth<indexes.length; depth++) {
44191 var index = indexes[depth];
44192 var invalidChars = index.replace(/^[0-9]+'?$/g, "")
44193 if (invalidChars.length > 0) {
44194 return "Invalid characters " + invalidChars + " found at depth " + depth;
44195 }
44196 var indexValue = parseInt(index.replace("'", ""));
44197 if (isNaN(depth)) {
44198 return "Invalid number at depth " + depth;
44199 }
44200 if (indexValue > maxIndexValue) {
44201 return "Value of " + indexValue + " at depth " + depth + " must be less than " + maxIndexValue;
44202 }
44203 }
44204 }
44205 // Check root key exists or else derivation path is useless!
44206 if (!bip32RootKey) {
44207 return "No root key";
44208 }
44209 // Check no hardened derivation path when using xpub keys
44210 var hardened = path.indexOf("'") > -1;
44211 var isXpubkey = !("privKey" in bip32RootKey);
44212 if (hardened && isXpubkey) {
44213 return "Hardened derivation path is invalid with xpub key";
44214 }
44215 return false;
44216 }
44217
44218 function displayBip44Info() {
44219 // Get the derivation path for the account
44220 var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44);
44221 var coin = parseIntNoNaN(DOM.bip44coin.val(), 0);
44222 var account = parseIntNoNaN(DOM.bip44account.val(), 0);
44223 var path = "m/";
44224 path += purpose + "'/";
44225 path += coin + "'/";
44226 path += account + "'/";
44227 // Calculate the account extended keys
44228 var accountExtendedKey = calcBip32ExtendedKey(path);
44229 var accountXprv = accountExtendedKey.toBase58();
44230 var accountXpub = accountExtendedKey.toBase58(false);
44231 // Display the extended keys
44232 DOM.bip44accountXprv.val(accountXprv);
44233 DOM.bip44accountXpub.val(accountXpub);
44234 }
44235
44236 function displayBip32Info() {
44237 // Display the key
44238 DOM.seed.val(seed);
44239 var rootKey = bip32RootKey.toBase58();
44240 DOM.rootKey.val(rootKey);
44241 var xprvkeyB58 = "NA";
44242 if (bip32ExtendedKey.privKey) {
44243 xprvkeyB58 = bip32ExtendedKey.toBase58();
44244 }
44245 var extendedPrivKey = xprvkeyB58;
44246 DOM.extendedPrivKey.val(extendedPrivKey);
44247 var extendedPubKey = bip32ExtendedKey.toBase58(false);
44248 DOM.extendedPubKey.val(extendedPubKey);
44249 // Display the addresses and privkeys
44250 clearAddressesList();
44251 displayAddresses(0, 20);
44252 }
44253
44254 function displayAddresses(start, total) {
44255 generationProcesses.push(new (function() {
44256
44257 var rows = [];
44258
44259 this.stop = function() {
44260 for (var i=0; i<rows.length; i++) {
44261 rows[i].shouldGenerate = false;
44262 }
44263 }
44264
44265 for (var i=0; i<total; i++) {
44266 var index = i + start;
44267 rows.push(new TableRow(index));
44268 }
44269
44270 })());
44271 }
44272
44273 function TableRow(index) {
44274
44275 var self = this;
44276 this.shouldGenerate = true;
44277 var useHardenedAddresses = DOM.hardenedAddresses.prop("checked");
44278
44279 function init() {
44280 calculateValues();
44281 }
44282
44283 function calculateValues() {
44284 setTimeout(function() {
44285 if (!self.shouldGenerate) {
44286 return;
44287 }
44288 var key = "";
44289 if (useHardenedAddresses) {
44290 key = bip32ExtendedKey.deriveHardened(index);
44291 }
44292 else {
44293 key = bip32ExtendedKey.derive(index);
44294 }
44295 var address = key.getAddress().toString();
44296 var privkey = "NA";
44297 if (key.privKey) {
44298 privkey = key.privKey.toWIF(network);
44299 }
44300 var pubkey = key.pubKey.toHex();
44301 var indexText = getDerivationPath() + "/" + index;
44302 if (useHardenedAddresses) {
44303 indexText = indexText + "'";
44304 }
44305 // Ethereum values are different
44306 if (networks[DOM.network.val()].name == "Ethereum") {
44307 var privKeyBuffer = key.privKey.d.toBuffer();
44308 privkey = privKeyBuffer.toString('hex');
44309 var addressBuffer = ethUtil.privateToAddress(privKeyBuffer);
44310 var hexAddress = addressBuffer.toString('hex');
44311 var checksumAddress = ethUtil.toChecksumAddress(hexAddress);
44312 address = ethUtil.addHexPrefix(checksumAddress);
44313 }
44314 // Ripple values are different
44315 if (networks[DOM.network.val()].name == "Ripple") {
44316 privkey = convertRipplePriv(privkey);
44317 address = convertRippleAdrr(address);
44318 }
44319 addAddressToList(indexText, address, pubkey, privkey);
44320 }, 50)
44321 }
44322
44323 init();
44324
44325 }
44326
44327 function showMore() {
44328 var start = DOM.addresses.children().length;
44329 var rowsToAdd = parseInt(DOM.rowsToAdd.val());
44330 if (isNaN(rowsToAdd)) {
44331 rowsToAdd = 20;
44332 DOM.rowsToAdd.val("20");
44333 }
44334 if (rowsToAdd > 200) {
44335 var msg = "Generating " + rowsToAdd + " rows could take a while. ";
44336 msg += "Do you want to continue?";
44337 if (!confirm(msg)) {
44338 return;
44339 }
44340 }
44341 displayAddresses(start, rowsToAdd);
44342 }
44343
44344 function clearDisplay() {
44345 clearAddressesList();
44346 clearKey();
44347 hideValidationError();
44348 }
44349
44350 function clearAddressesList() {
44351 DOM.addresses.empty();
44352 stopGenerating();
44353 }
44354
44355 function stopGenerating() {
44356 while (generationProcesses.length > 0) {
44357 var generation = generationProcesses.shift();
44358 generation.stop();
44359 }
44360 }
44361
44362 function clearKey() {
44363 DOM.rootKey.val("");
44364 DOM.extendedPrivKey.val("");
44365 DOM.extendedPubKey.val("");
44366 }
44367
44368 function addAddressToList(indexText, address, pubkey, privkey) {
44369 var row = $(addressRowTemplate.html());
44370 // Elements
44371 var indexCell = row.find(".index span");
44372 var addressCell = row.find(".address span");
44373 var pubkeyCell = row.find(".pubkey span");
44374 var privkeyCell = row.find(".privkey span");
44375 // Content
44376 indexCell.text(indexText);
44377 addressCell.text(address);
44378 pubkeyCell.text(pubkey);
44379 privkeyCell.text(privkey);
44380 // Visibility
44381 if (!showIndex) {
44382 indexCell.addClass("invisible");
44383 }
44384 if (!showAddress) {
44385 addressCell.addClass("invisible");
44386 }
44387 if (!showPubKey) {
44388 pubkeyCell.addClass("invisible");
44389 }
44390 if (!showPrivKey) {
44391 privkeyCell.addClass("invisible");
44392 }
44393 DOM.addresses.append(row);
44394 var rowShowQrEls = row.find("[data-show-qr]");
44395 setQrEvents(rowShowQrEls);
44396 }
44397
44398 function hasStrongRandom() {
44399 return 'crypto' in window && window['crypto'] !== null;
44400 }
44401
44402 function disableForms() {
44403 $("form").on("submit", function(e) {
44404 e.preventDefault();
44405 });
44406 }
44407
44408 function parseIntNoNaN(val, defaultVal) {
44409 var v = parseInt(val);
44410 if (isNaN(v)) {
44411 return defaultVal;
44412 }
44413 return v;
44414 }
44415
44416 function showPending() {
44417 DOM.feedback
44418 .text("Calculating...")
44419 .show();
44420 }
44421
44422 function findNearestWord(word) {
44423 var language = getLanguage();
44424 var words = WORDLISTS[language];
44425 var minDistance = 99;
44426 var closestWord = words[0];
44427 for (var i=0; i<words.length; i++) {
44428 var comparedTo = words[i];
44429 if (comparedTo.indexOf(word) == 0) {
44430 return comparedTo;
44431 }
44432 var distance = Levenshtein.get(word, comparedTo);
44433 if (distance < minDistance) {
44434 closestWord = comparedTo;
44435 minDistance = distance;
44436 }
44437 }
44438 return closestWord;
44439 }
44440
44441 function hidePending() {
44442 DOM.feedback
44443 .text("")
44444 .hide();
44445 }
44446
44447 function populateNetworkSelect() {
44448 for (var i=0; i<networks.length; i++) {
44449 var network = networks[i];
44450 var option = $("<option>");
44451 option.attr("value", i);
44452 option.text(network.name);
44453 DOM.phraseNetwork.append(option);
44454 }
44455 }
44456
44457 function populateClientSelect() {
44458 for (var i=0; i<clients.length; i++) {
44459 var client = clients[i];
44460 var option = $("<option>");
44461 option.attr("value", i);
44462 option.text(client.name);
44463 DOM.bip32Client.append(option);
44464 }
44465 }
44466
44467 function getLanguage() {
44468 var defaultLanguage = "english";
44469 // Try to get from existing phrase
44470 var language = getLanguageFromPhrase();
44471 // Try to get from url if not from phrase
44472 if (language.length == 0) {
44473 language = getLanguageFromUrl();
44474 }
44475 // Default to English if no other option
44476 if (language.length == 0) {
44477 language = defaultLanguage;
44478 }
44479 return language;
44480 }
44481
44482 function getLanguageFromPhrase(phrase) {
44483 // Check if how many words from existing phrase match a language.
44484 var language = "";
44485 if (!phrase) {
44486 phrase = DOM.phrase.val();
44487 }
44488 if (phrase.length > 0) {
44489 var words = phraseToWordArray(phrase);
44490 var languageMatches = {};
44491 for (l in WORDLISTS) {
44492 // Track how many words match in this language
44493 languageMatches[l] = 0;
44494 for (var i=0; i<words.length; i++) {
44495 var wordInLanguage = WORDLISTS[l].indexOf(words[i]) > -1;
44496 if (wordInLanguage) {
44497 languageMatches[l]++;
44498 }
44499 }
44500 // Find languages with most word matches.
44501 // This is made difficult due to commonalities between Chinese
44502 // simplified vs traditional.
44503 var mostMatches = 0;
44504 var mostMatchedLanguages = [];
44505 for (var l in languageMatches) {
44506 var numMatches = languageMatches[l];
44507 if (numMatches > mostMatches) {
44508 mostMatches = numMatches;
44509 mostMatchedLanguages = [l];
44510 }
44511 else if (numMatches == mostMatches) {
44512 mostMatchedLanguages.push(l);
44513 }
44514 }
44515 }
44516 if (mostMatchedLanguages.length > 0) {
44517 // Use first language and warn if multiple detected
44518 language = mostMatchedLanguages[0];
44519 if (mostMatchedLanguages.length > 1) {
44520 console.warn("Multiple possible languages");
44521 console.warn(mostMatchedLanguages);
44522 }
44523 }
44524 }
44525 return language;
44526 }
44527
44528 function getLanguageFromUrl() {
44529 for (var language in WORDLISTS) {
44530 if (window.location.hash.indexOf(language) > -1) {
44531 return language;
44532 }
44533 }
44534 return "";
44535 }
44536
44537 function setMnemonicLanguage() {
44538 var language = getLanguage();
44539 // Load the bip39 mnemonic generator for this language if required
44540 if (!(language in mnemonics)) {
44541 mnemonics[language] = new Mnemonic(language);
44542 }
44543 mnemonic = mnemonics[language];
44544 }
44545
44546 function convertPhraseToNewLanguage() {
44547 var oldLanguage = getLanguageFromPhrase();
44548 var newLanguage = getLanguageFromUrl();
44549 var oldPhrase = DOM.phrase.val();
44550 var oldWords = phraseToWordArray(oldPhrase);
44551 var newWords = [];
44552 for (var i=0; i<oldWords.length; i++) {
44553 var oldWord = oldWords[i];
44554 var index = WORDLISTS[oldLanguage].indexOf(oldWord);
44555 var newWord = WORDLISTS[newLanguage][index];
44556 newWords.push(newWord);
44557 }
44558 newPhrase = wordArrayToPhrase(newWords);
44559 return newPhrase;
44560 }
44561
44562 // TODO look at jsbip39 - mnemonic.splitWords
44563 function phraseToWordArray(phrase) {
44564 var words = phrase.split(/\s/g);
44565 var noBlanks = [];
44566 for (var i=0; i<words.length; i++) {
44567 var word = words[i];
44568 if (word.length > 0) {
44569 noBlanks.push(word);
44570 }
44571 }
44572 return noBlanks;
44573 }
44574
44575 // TODO look at jsbip39 - mnemonic.joinWords
44576 function wordArrayToPhrase(words) {
44577 var phrase = words.join(" ");
44578 var language = getLanguageFromPhrase(phrase);
44579 if (language == "japanese") {
44580 phrase = words.join("\u3000");
44581 }
44582 return phrase;
44583 }
44584
44585 function isUsingOwnEntropy() {
44586 return DOM.useEntropy.prop("checked");
44587 }
44588
44589 function setMnemonicFromEntropy() {
44590 clearEntropyFeedback();
44591 // Get entropy value
44592 var entropyStr = DOM.entropy.val();
44593 // Work out minimum base for entropy
44594 var entropy = Entropy.fromString(entropyStr);
44595 if (entropy.binaryStr.length == 0) {
44596 return;
44597 }
44598 // Show entropy details
44599 showEntropyFeedback(entropy);
44600 // Use entropy hash if not using raw entropy
44601 var bits = entropy.binaryStr;
44602 var mnemonicLength = DOM.entropyMnemonicLength.val();
44603 if (mnemonicLength != "raw") {
44604 // Get bits by hashing entropy with SHA256
44605 var hash = sjcl.hash.sha256.hash(entropy.cleanStr);
44606 var hex = sjcl.codec.hex.fromBits(hash);
44607 bits = BigInteger.parse(hex, 16).toString(2);
44608 while (bits.length % 256 != 0) {
44609 bits = "0" + bits;
44610 }
44611 // Truncate hash to suit number of words
44612 mnemonicLength = parseInt(mnemonicLength);
44613 var numberOfBits = 32 * mnemonicLength / 3;
44614 bits = bits.substring(0, numberOfBits);
44615 }
44616 // Discard trailing entropy
44617 var bitsToUse = Math.floor(bits.length / 32) * 32;
44618 var start = bits.length - bitsToUse;
44619 var binaryStr = bits.substring(start);
44620 // Convert entropy string to numeric array
44621 var entropyArr = [];
44622 for (var i=0; i<binaryStr.length / 8; i++) {
44623 var byteAsBits = binaryStr.substring(i*8, i*8+8);
44624 var entropyByte = parseInt(byteAsBits, 2);
44625 entropyArr.push(entropyByte)
44626 }
44627 // Convert entropy array to mnemonic
44628 var phrase = mnemonic.toMnemonic(entropyArr);
44629 // Set the mnemonic in the UI
44630 DOM.phrase.val(phrase);
44631 }
44632
44633 function clearEntropyFeedback() {
44634 DOM.entropyStrength.text("...");
44635 DOM.entropyType.text("");
44636 DOM.entropyWordCount.text("0");
44637 DOM.entropyEventCount.text("0");
44638 DOM.entropyBitsPerEvent.text("0");
44639 DOM.entropyBits.text("0");
44640 DOM.entropyFiltered.html("&nbsp;");
44641 DOM.entropyBinary.html("&nbsp;");
44642 }
44643
44644 function showEntropyFeedback(entropy) {
44645 var numberOfBits = entropy.binaryStr.length;
44646 var strength = "extremely weak";
44647 if (numberOfBits >= 64) {
44648 strength = "very weak";
44649 }
44650 if (numberOfBits >= 96) {
44651 strength = "weak";
44652 }
44653 if (numberOfBits >= 128) {
44654 strength = "strong";
44655 }
44656 if (numberOfBits >= 160) {
44657 strength = "very strong";
44658 }
44659 if (numberOfBits >= 192) {
44660 strength = "extremely strong";
44661 }
44662 // If time to crack is less than one day, and password is considered
44663 // strong or better based on the number of bits, rename strength to
44664 // 'easily cracked'.
44665 try {
44666 var z = zxcvbn(entropy.base.parts.join(""));
44667 var timeToCrack = z.crack_times_seconds.offline_fast_hashing_1e10_per_second;
44668 if (timeToCrack < 86400 && entropy.binaryStr.length >= 128) {
44669 strength = "easily cracked";
44670 if (z.feedback.warning != "") {
44671 strength = strength + " - " + z.feedback.warning;
44672 };
44673 }
44674 }
44675 catch (e) {
44676 strength = "unknown";
44677 console.log("Error detecting entropy strength with zxcvbn:");
44678 console.log(e);
44679 }
44680 var entropyTypeStr = getEntropyTypeStr(entropy);
44681 var wordCount = Math.floor(numberOfBits / 32) * 3;
44682 var bitsPerEvent = entropy.bitsPerEvent.toFixed(2);
44683 DOM.entropyFiltered.html(entropy.cleanHtml);
44684 DOM.entropyType.text(entropyTypeStr);
44685 DOM.entropyStrength.text(strength);
44686 DOM.entropyEventCount.text(entropy.base.ints.length);
44687 DOM.entropyBits.text(numberOfBits);
44688 DOM.entropyWordCount.text(wordCount);
44689 DOM.entropyBinary.text(entropy.binaryStr);
44690 DOM.entropyBitsPerEvent.text(bitsPerEvent);
44691 }
44692
44693 function getEntropyTypeStr(entropy) {
44694 var typeStr = entropy.base.str;
44695 // Add some detail if these are cards
44696 if (entropy.base.asInt == 52) {
44697 var cardDetail = []; // array of message strings
44698 // Detect duplicates
44699 var dupes = [];
44700 var dupeTracker = {};
44701 for (var i=0; i<entropy.base.parts.length; i++) {
44702 var card = entropy.base.parts[i];
44703 var cardUpper = card.toUpperCase();
44704 if (cardUpper in dupeTracker) {
44705 dupes.push(card);
44706 }
44707 dupeTracker[cardUpper] = true;
44708 }
44709 if (dupes.length > 0) {
44710 var dupeWord = "duplicates";
44711 if (dupes.length == 1) {
44712 dupeWord = "duplicate";
44713 }
44714 var msg = dupes.length + " " + dupeWord + ": " + dupes.slice(0,3).join(" ");
44715 if (dupes.length > 3) {
44716 msg += "...";
44717 }
44718 cardDetail.push(msg);
44719 }
44720 // Detect full deck
44721 var uniqueCards = [];
44722 for (var uniqueCard in dupeTracker) {
44723 uniqueCards.push(uniqueCard);
44724 }
44725 if (uniqueCards.length == 52) {
44726 cardDetail.unshift("full deck");
44727 }
44728 // Detect missing cards
44729 var values = "A23456789TJQK";
44730 var suits = "CDHS";
44731 var missingCards = [];
44732 for (var i=0; i<suits.length; i++) {
44733 for (var j=0; j<values.length; j++) {
44734 var card = values[j] + suits[i];
44735 if (!(card in dupeTracker)) {
44736 missingCards.push(card);
44737 }
44738 }
44739 }
44740 // Display missing cards if six or less, ie clearly going for full deck
44741 if (missingCards.length > 0 && missingCards.length <= 6) {
44742 var msg = missingCards.length + " missing: " + missingCards.slice(0,3).join(" ");
44743 if (missingCards.length > 3) {
44744 msg += "...";
44745 }
44746 cardDetail.push(msg);
44747 }
44748 // Add card details to typeStr
44749 if (cardDetail.length > 0) {
44750 typeStr += " (" + cardDetail.join(", ") + ")";
44751 }
44752 }
44753 return typeStr;
44754 }
44755
44756 function setQrEvents(els) {
44757 els.on("mouseenter", createQr);
44758 els.on("mouseleave", destroyQr);
44759 els.on("click", toggleQr);
44760 }
44761
44762 function createQr(e) {
44763 var content = e.target.textContent || e.target.value;
44764 if (content) {
44765 var size = 130;
44766 DOM.qrImage.qrcode({width: size, height: size, text: content});
44767 if (!showQr) {
44768 DOM.qrHider.addClass("hidden");
44769 }
44770 else {
44771 DOM.qrHider.removeClass("hidden");
44772 }
44773 DOM.qrContainer.removeClass("hidden");
44774 }
44775 }
44776
44777 function destroyQr() {
44778 DOM.qrImage.text("");
44779 DOM.qrContainer.addClass("hidden");
44780 }
44781
44782 function toggleQr() {
44783 showQr = !showQr;
44784 DOM.qrHider.toggleClass("hidden");
44785 DOM.qrHint.toggleClass("hidden");
44786 }
44787
44788 function bip44TabSelected() {
44789 return DOM.bip44tab.hasClass("active");
44790 }
44791
44792 function bip32TabSelected() {
44793 return DOM.bip32tab.hasClass("active");
44794 }
44795
44796 var networks = [
44797 {
44798 name: "Bitcoin",
44799 onSelect: function() {
44800 network = bitcoin.networks.bitcoin;
44801 DOM.bip44coin.val(0);
44802 },
44803 },
44804 {
44805 name: "Bitcoin Testnet",
44806 onSelect: function() {
44807 network = bitcoin.networks.testnet;
44808 DOM.bip44coin.val(1);
44809 },
44810 },
44811 {
44812 name: "CLAM",
44813 onSelect: function() {
44814 network = bitcoin.networks.clam;
44815 DOM.bip44coin.val(23);
44816 },
44817 },
44818 {
44819 name: "Dogecoin",
44820 onSelect: function() {
44821 network = bitcoin.networks.dogecoin;
44822 DOM.bip44coin.val(3);
44823 },
44824 },
44825 {
44826 name: "DASH",
44827 onSelect: function() {
44828 network = bitcoin.networks.dash;
44829 DOM.bip44coin.val(5);
44830 },
44831 },
44832 {
44833 name: "Ethereum",
44834 onSelect: function() {
44835 network = bitcoin.networks.bitcoin;
44836 DOM.bip44coin.val(60);
44837 },
44838 },
44839 {
44840 name: "GAME",
44841 onSelect: function() {
44842 network = bitcoin.networks.game;
44843 DOM.bip44coin.val(101);
44844 },
44845 },
44846 {
44847 name: "Jumbucks",
44848 onSelect: function() {
44849 network = bitcoin.networks.jumbucks;
44850 DOM.bip44coin.val(26);
44851 },
44852 },
44853 {
44854 name: "Litecoin",
44855 onSelect: function() {
44856 network = bitcoin.networks.litecoin;
44857 DOM.bip44coin.val(2);
44858 },
44859 },
44860 {
44861 name: "Namecoin",
44862 onSelect: function() {
44863 network = bitcoin.networks.namecoin;
44864 DOM.bip44coin.val(7);
44865 },
44866 },
44867 {
44868 name: "Peercoin",
44869 onSelect: function() {
44870 network = bitcoin.networks.peercoin;
44871 DOM.bip44coin.val(6);
44872 },
44873 },
44874 {
44875 name: "Ripple",
44876 onSelect: function() {
44877 network = bitcoin.networks.bitcoin;
44878 DOM.bip44coin.val(144);
44879 },
44880 },
44881 {
44882 name: "ShadowCash",
44883 onSelect: function() {
44884 network = bitcoin.networks.shadow;
44885 DOM.bip44coin.val(35);
44886 },
44887 },
44888 {
44889 name: "ShadowCash Testnet",
44890 onSelect: function() {
44891 network = bitcoin.networks.shadowtn;
44892 DOM.bip44coin.val(1);
44893 },
44894 },
44895 {
44896 name: "Slimcoin",
44897 onSelect: function() {
44898 network = bitcoin.networks.slimcoin;
44899 DOM.bip44coin.val(63);
44900 },
44901 },
44902 {
44903 name: "Slimcoin Testnet",
44904 onSelect: function() {
44905 network = bitcoin.networks.slimcointn;
44906 DOM.bip44coin.val(111);
44907 },
44908 },
44909 {
44910 name: "Viacoin",
44911 onSelect: function() {
44912 network = bitcoin.networks.viacoin;
44913 DOM.bip44coin.val(14);
44914 },
44915 },
44916 {
44917 name: "Viacoin Testnet",
44918 onSelect: function() {
44919 network = bitcoin.networks.viacointestnet;
44920 DOM.bip44coin.val(1);
44921 },
44922 },
44923 ]
44924
44925 var clients = [
44926 {
44927 name: "Bitcoin Core",
44928 onSelect: function() {
44929 DOM.bip32path.val("m/0'/0'");
44930 DOM.hardenedAddresses.prop('checked', true);
44931 },
44932 },
44933 {
44934 name: "blockchain.info",
44935 onSelect: function() {
44936 DOM.bip32path.val("m/44'/0'/0'");
44937 DOM.hardenedAddresses.prop('checked', false);
44938 },
44939 },
44940 {
44941 name: "MultiBit HD",
44942 onSelect: function() {
44943 DOM.bip32path.val("m/0'/0");
44944 DOM.hardenedAddresses.prop('checked', false);
44945 },
44946 }
44947 ]
44948
44949 init();
44950
44951 })();
44952 </script>
44953 </body>
44954 </html>